4.2.3 Dynamic Fields and Records
This section describes the default behavior of integration points that accept dynamic field and record values. The configuration of the relevant dynamic field usages drive how the integration point processes a request with new dynamic field and record values. The driving aspects are the usage type (field, code or record), whether the field can have multiple values and whether the field value is time valid.
4.2.3.1 Dynamic Fields
Dynamic field values can be created and updated through integration points. How the values are supplied in the request messages depends on the way the dynamic fields are configured in the application. Dynamic fields can be configured as:
- Single-Value Non-Time-Valid
- Single-Value Time-Valid
- Multi-Value Non-Time-Valid
- Multi-Value Time-Valid
4.2.3.1.1 Single-Value Non-Time-Valid Fields
Message Definition
A single-value non-time-valid free field is represented as an attribute of
the element it belongs to, with the name of the attribute being the same as the
corresponding dynamic field usage name. The same applies to a single-value
non-time-valid flex code field that is configured as a flex code definition.
A single-value non-time-valid flex code field that is configured as a flex code
set is represented as a sub-element of the element it belongs to, with the name
of the sub-element being the same as the corresponding dynamic field usage name.
The sub-element has flexCodeDefinitionCode as attribute and the dynamic field
value as text content.
Update Behavior
When the application updates a record, a single-value non-time-valid free
field and a single-value non-time-valid flex code field that is configured as a
flex code definition are handled as follows: if the attribute is not included in
the request, then the existing value in the application remains untouched; if
the attribute is included in the request, then the value is updated with the
specified value. In order to send in an update that clears the value, the update
request should include the attribute with an empty value.
A single-value non-time-valid flex code field that is configured as a flex code
set is handled as follows when updating a record: if the element is not included
in the request, then the existing value in the application remains untouched; if
the element is included in the request, then the value is updated with the
specified value. In order to send in an update that clears the value, the update
request should include the sub-element without the flexCodeDefinitionCode
attribute and the text content.
Examples
Consider the example below of an individual provider request message for the creation of a new individual provider, where the following dynamic field usages are configured on the providers table:
- dateOfBirth: single-value non-time-valid free field
- married: single-value non-time-valid flex code field (configured as a flex code definition)
- specializedProcedure: single-value non-time-valid flex code field (configured as a flex code set)
<individualProvider code="1234567890" flexCodeDefinitionCode="US_PROVIDER" name="Smith" nameFormatCode="NFDFLT" outputLanguageCode="EN" startDate="2010-01-01" dateOfBirth="1975-06-06" married="Y" > <specializedProcedure flexCodeDefinitionCode="CPT_CODES" > 33010 </specializedProcedure> </individualProvider>
In order to update the married value from Y to N and leave all other fixed field values and dynamic field values intact, the following individual provider request message is used:
<individualProvider code="1234567890" flexCodeDefinitionCode="US_PROVIDER" married="N" > </individualProvider>
To clear the values of the dynamic fields that were created in the examples above, the following individual provider request message is used:
<individualProvider code="1234567890" flexCodeDefinitionCode="US_PROVIDER" dateOfBirth="" married="" > <specializedProcedure/> </individualProvider>
4.2.3.1.2 Single-Value Time-Valid Fields
Message Definition
A single-value time-valid free field is represented as a sub-element of the
element it belongs to, with the name of the sub-element being the same as the
corresponding dynamic field usage name. The sub-element can have one or more
<value> sub-elements of its own. The <value> sub-element has
startDate and endDate as attributes and the dynamic field value as text content.
The same applies to a single-value time-valid flex code field that is configured
as a flex code definition.
A single-value time-valid flex code field that is configured as a flex code set
is represented as a sub-element of the element it belongs to, with the name of
the sub-element being the same as the corresponding dynamic field usage name.
The sub-element can have one or more <value> sub-elements of its own. The
<value> sub-element has startDate, endDate and flexCodeDefinitionCode as
attributes and the dynamic field value as text content.
Update Behavior
When the application updates a record, a single-value time-valid field is handled as follows: if the sub-element is not included in the request, then the existing value(s) in the application remain(s) untouched; if the sub-element is included in the request, then the existing value(s) is/are replaced by the value(s) specified in the request. In order to send in an update that clears the existing value(s), the update request should include the sub-element without any <value> sub-elements.
Examples
Consider the example below of an individual provider request message for the creation of a new individual provider, where the following dynamic field usages are configured on the providers table:
- contractReferences: single-value time-valid free field
- married: single-value time-valid flex code field (configured as a flex code definition)
- specializedProcedures: single-value time-valid flex code field (configured as a flex code set)
<individualProvider code="1234567890" flexCodeDefinitionCode="US_PROVIDER" name="Smith" nameFormatCode="NFDFLT" outputLanguageCode="EN" startDate="2010-01-01" > <contractReferences> <value startDate="2010-01-01" endDate="2012-06-31" > 1111 </value> <value startDate="2012-07-01" > 1112 </value> </contractReferences> <married> <value startDate="2012-01-01" endDate="2012-06-31" > Y </value> </married> <specializedProcedures> <value flexCodeDefinitionCode="CPT_CODES" startDate="2010-01-01" endDate="2011-12-31" > 33010 </value> <value flexCodeDefinitionCode="ICD10_PROCEDURES" startDate="2012-01-01" > C2161ZZ </value> </specializedProcedures> </individualProvider>
In order to replace the contract references 1111 and 1112 by contract reference1113 and leave all other fixed field values and dynamic field values intact, the following individual provider request message is used:
<individualProvider code="1234567890" flexCodeDefinitionCode="US_PROVIDER" > <contractReferences> <value startDate="2010-01-01" endDate="2012-06-31" > 1113 </value> </contractReferences> </individualProvider>
To clear the values of the dynamic fields that were created in the examples above, the following individual provider request message is used:
<individualProvider code="1234567890" flexCodeDefinitionCode="US_PROVIDER" > <contractReferences/> <married/> <specializedProcedures/> </individualProvider>
4.2.3.1.3 Multi-Value Non-Time-Valid Fields
Message Definition
A multi-value non-time-valid free field is represented as a sub-element of
the element it belongs to, with the name of the sub-element being the same as
the corresponding dynamic field usage name. The sub-element can have one or more
<value> sub-elements of its own. The <value> sub-element has the
dynamic field value as text content. The same applies to a multi-value
non-time-valid flex code field that is configured as a flex code definition.
A multi-value non-time-valid flex code field that is configured as a flex code
set is represented as a sub-element of the element it belongs to, with the name
of the sub-element being the same as the corresponding dynamic field usage name.
The sub-element can have one or more <value> sub-elements of its own. The
<value> sub-element has flexCodeDefinitionCode as attribute and the
dynamic field value as text content.
Update Behavior
When the application updates a record, a multi-value non-time-valid field is handled as follows: if the sub-element is not included in the request, then the existing value(s) in the application remain(s) untouched; if the sub-element is included in the request, then the existing value(s) is/are replaced by the value(s) specified in the request. In order to send in an update that clears the existing value(s), the update request should include the sub-element without any <value> sub-elements.
Examples
Consider the example below of an individual provider request message for the creation of a new individual provider, where the following dynamic field usages are configured on the providers table:
- contractReferences: multi-value non-time-valid free field
- hobbies: multi-value non-time-valid flex code field (configured as a flex code definition)
- specializedProcedures: multi-value non-time-valid flex code field (configured as a flex code set)
<individualProvider code="1234567890" flexCodeDefinitionCode="US_PROVIDER" name="Smith" nameFormatCode="NFDFLT" outputLanguageCode="EN" startDate="2010-01-01" > <contractReferences> <value> 1111 </value> <value> 1112 </value> </contractReferences> <hobbies> <value> Soccer </value> <value> Baseball </value> </hobbies> <specializedProcedures> <value flexCodeDefinitionCode="CPT_CODES" > 33010 </value> <value flexCodeDefinitionCode="ICD10_PROCEDURES" > C2161ZZ </value> </specializedProcedures> </individualProvider>
In order to replace the hobbies Soccer and Baseball by hobby Basketball and leave all other fixed field values and dynamic field values intact, the following individual provider request message is used:
<individualProvider code="1234567890" flexCodeDefinitionCode="US_PROVIDER" > <hobbies> <value> Basketball </value> </hobbies> </individualProvider>
To clear the values of the dynamic fields that were created in the examples above, the following individual provider request message is used:
<individualProvider code="1234567890" flexCodeDefinitionCode="US_PROVIDER" > <contractReferences/> <hobbies/> <specializedProcedures/> </individualProvider>
4.2.3.1.4 Multi-Value Time-Valid Fields
Multi-value time-valid fields are handled in the same manner as single-value time-valid fields.
4.2.3.2 Dynamic Records
Many of the entities that can be sent in through an integration point can be extended with dynamic records. The values for these records can be set through the integration points as well. How the values are supplied in the request messages depends on the way the dynamic records are configured in the application. Dynamic records can be configured as:
- Single-Value Non-Time-Valid
- Single-Value Time-Valid
- Multi-Value Non-Time-Valid
- Multi-Value Time-Valid
4.2.3.2.1 Single-Value Non-Time-Valid Records
Message Definition
A single-value non-time-valid dynamic record is represented as a sub-element
of the element it belongs to, with the name of the sub-element being the same as
the corresponding dynamic field usage name. The sub-element has the dynamic
record flex code field usages (representing the columns of the dynamic record)
that are configured as free fields, as attributes with the names of the
attributes being the same as the corresponding flex code field usage names. The
same applies to the dynamic record flex code field usages that are configured as
flex code definitions.
Dynamic record flex code field usages that are configured as flex code sets are
represented as sub-elements of the sub-element described above, with the names
of the sub-elements being the same as the corresponding dynamic record flex code
field usage names. The sub-elements have flexCodeDefinitionCode as attribute and
the dynamic field value as text content.
Update Behavior
When the application updates a record, a single-value non-time-valid record is handled as follows: if the sub-element is not included in the request, then the existing value(s) in the application remain(s) untouched; if the sub-element is included in the request, then the existing value(s) is/are replaced by the value(s) specified in the request (attributes that are not in the request are set to null). In order to send in an update that clears the existing value(s), the update request should include the sub-element without any attributes and sub-elements.
Examples
Consider the example below of an individual provider request message for the creation of a new individual provider, where the following dynamic field usages are configured on the providers table:
- accreditation: single-value non-time-valid dynamic record, having the following dynamic record flex code field usages:
- accreditationName (configured as a flex code definition)
- status (configured as a flex code definition)
- accreditationDate (configured as a free field)
- accreditedBy (configured as a flex code set)
<individualProvider code="1234567890" flexCodeDefinitionCode="US_PROVIDER" name="Smith" nameFormatCode="NFDFLT" outputLanguageCode="EN" startDate="2010-01-01" > <accreditation accreditationName="Physical Therapy" status="Accredited" accreditationDate="2011-01-01" > <accreditedBy flexCodeDefinitionCode="US_PROVIDER" > 1000000000 </accreditedBy> </accreditation> </individualProvider>
In order to replace the accreditation with accreditation name Physical Therapy by an accreditation with accreditation name Speech Therapy and leave all other values intact, the following individual provider request message is used:
<individualProvider code="1234567890" flexCodeDefinitionCode="US_PROVIDER" > <accreditation accreditationName="Speech Therapy" status="Accredited" accreditationDate="2011-01-01" > <accreditedBy flexCodeDefinitionCode="US_PROVIDER" > 1000000000 </accreditedBy> </accreditation> </individualProvider>
To clear the values of the dynamic record that was created in the examples above, the following individual provider request message is used:
<individualProvider code="1234567890" flexCodeDefinitionCode="US_PROVIDER" > <accreditation/> </individualProvider>
4.2.3.2.2 Single-Value Time-Valid Records
Message Definition
A single-value time-valid dynamic record is represented as a sub-element of
the element it belongs to, with the name of the sub-element being the same as
the corresponding dynamic field usage name. The sub-element can have one or more
<record> sub-elements of its own (representing the rows of the dynamic
record). The <record> sub-elements have startDate and endDate as
attributes. The dynamic record flex code field usages (representing the columns
of the dynamic record) that are configured as free fields, are represented as
attributes on the <record> sub-elements with the names of the attributes
being the same as the corresponding flex code field usage names. The same
applies to the dynamic record flex code field usages that are configured as flex
code definitions.
Dynamic record flex code field usages that are configured as flex code sets are
represented as sub-elements of the <record> elements, with the names of
the sub-elements being the same as the corresponding dynamic record flex code
field usage names. The sub-elements have flexCodeDefinitionCode as attribute and
the dynamic field value as text content.
Update Behavior
When the application updates a record, a single-value time-valid record is handled as follows: if the sub-element is not included in the request, then the existing value(s) in the application remain(s) untouched; if the sub-element is included in the request, then the existing value(s) is/are replaced by the value(s) specified in the request (attributes that are not in the request are set to null). In order to send in an update that clears the existing value(s), the update request should include the sub-element without any <record> sub-elements.
Examples
Consider the example below of an individual provider request message for the creation of a new individual provider, where the following dynamic field usages are configured on the providers table:
- accreditations: single-value time-valid dynamic record, having the following dynamic record flex code field usages:
- accreditationName (configured as a flex code definition)
- status (configured as a flex code definition)
- accreditationDate (configured as a free field)
- accreditedBy (configured as a flex code set)
<individualProvider code="1234567890" flexCodeDefinitionCode="US_PROVIDER" name="Smith" nameFormatCode="NFDFLT" outputLanguageCode="EN" startDate="2010-01-01" > <accreditations> <record accreditationName="Physical Therapy" status="Accredited" accreditationDate="2011-01-01" startDate="2011-01-01" endDate="2011-06-06" > <accreditedBy flexCodeDefinitionCode="US_PROVIDER" > 1000000000 </accreditedBy> </record> <record accreditationName="Occupational Therapy" status="Accredited" accreditationDate="2011-07-07" startDate="2012-01-01" > <accreditedBy flexCodeDefinitionCode="HEALTH_ACCREDITOR" > Home Health Accreditation Commission </accreditedBy> </record> </accreditations> </individualProvider>
In order to replace the accreditations with accreditation names Physical Therapy and Occupational Therapy by an accreditation with accreditation name Speech Therapy and leave all other values intact, the following individual provider request message is used:
<individualProvider code="1234567890" flexCodeDefinitionCode="US_PROVIDER" > <accreditations> <record accreditationName="Speech Therapy" status="Accredited" accreditationDate="2011-01-01" startDate="2011-01-01" endDate="2011-06-06" > <accreditedBy flexCodeDefinitionCode="US_PROVIDER" > 1000000000 </accreditedBy> </record> </accreditations> </individualProvider>
To clear the values of the dynamic record that was created in the examples above, the following individual provider request message is used:
<individualProvider code="1234567890" flexCodeDefinitionCode="US_PROVIDER" > <accreditations/> </individualProvider>
4.2.3.2.3 Multi-Value Non-Time-Valid Records
Message Definition
A multi-value non-time-valid dynamic record is represented as a sub-element
of the element it belongs to, with the name of the sub-element being the same as
the corresponding dynamic field usage name. The sub-element can have one or more
<record> sub-elements of its own (representing the rows of the dynamic
record). The <record> sub-elements have the dynamic record flex code field
usages (representing the columns of the dynamic record) that are configured as
free fields, as attributes with the names of the attributes being the same as
the corresponding flex code field usage names. The same applies to the dynamic
record flex code field usages that are configured as flex code definitions.
Dynamic record flex code field usages that are configured as flex code sets are
represented a sub-elements of the <record> elements, with the names of the
sub-elements being the same as the corresponding dynamic record flex code field
usage names. The sub-elements have flexCodeDefinitionCode as attribute and the
dynamic field value as text content.
Update Behavior
When the application updates a record, a single-value time-valid record is handled as follows: if the sub-element is not included in the request, then the existing value(s) in the application remain(s) untouched; if the sub-element is included in the request, then the existing value(s) is/are replaced by the value(s) specified in the request (attributes that are not in the request are set to null). In order to send in an update that clears the existing value(s), the update request should include the sub-element without any <record> sub-elements.
Examples
Consider the example below of an individual provider request message for the creation of a new individual provider, where the following dynamic field usages are configured on the providers table:
- accreditations: single-value time-valid dynamic record, having the following dynamic record flex code field usages:
- accreditationName (configured as a flex code definition)
- status (configured as a flex code definition)
- accreditedBy (configured as a flex code definition)
- accreditationDate (configured as a free field)
<individualProvider code="1234567890" flexCodeDefinitionCode="US_PROVIDER" name="Smith" nameFormatCode="NFDFLT" outputLanguageCode="EN" startDate="2010-01-01" > <accreditations> <record accreditation="Physical Therapy" status="Accredited" accreditedBy="Home Health Accreditation Commission" accreditationDate="2011-01-01" /> <record accreditation="Occupational Therapy" status="Accredited" accreditedBy="Home Health Accreditation Commission" accreditationDate="2011-07-07" /> </accreditations> </individualProvider>
In order to replace the accreditations with accreditation names Physical Therapy and Occupational Therapy by an accreditation with accreditation name Speech Therapy and leave all other values intact, the following individual provider request message is used:
<individualProvider code="1234567890" flexCodeDefinitionCode="US_PROVIDER" name="Smith" nameFormatCode="NFDFLT" outputLanguageCode="EN" startDate="2010-01-01" > <accreditations> <record accreditation="Speech Therapy" status="Accredited" accreditedBy="Home Health Accreditation Commission" accreditationDate="2011-01-01" /> </accreditations> </individualProvider>
To clear the values of the dynamic record that was created in the examples above, the following individual provider request message is used:
<individualProvider code="1234567890" flexCodeDefinitionCode="US_PROVIDER" > <accreditations/> </individualProvider>
4.2.3.2.4 Multi-Value Time-Valid Records
Multi-value time-valid records are handled in the same manner as single-value time-valid records.