Introduction
This page describes the mapping between the HL7v2 segments that DDS can ingest and the FHIR Resources that DDS uses to represent them internally.
There are two kinds ways that values are written into the internal FHIR store when mapping from an inbound HL7v2 message -
- Dynamic values - here the raw value from the inbound HL7v2 message is copied into a property on a FHIR resource
- Fixed values - here the value that is inserted into a FHIR resource is fixed and is not copied from the source message. Instead the value that is inserted is likely to be contingent on the presence and/or value of a field from the source message
Dynamic Values
PID - Patient Identification
Field | Component | Resource | Property | Extension | References | Condition |
---|---|---|---|---|---|---|
PID:3 | PID:3.1 | Encounter | patient | Patient | ||
PID:3 | PID:3.1 | EpisodeOfCare | patient | Patient | ||
PID:3 | PID:3.1 | Patient | identifier.value | if PID:3.4 == "MRN" then set to PID:3.1 | ||
PID:3 | PID:3.4 | Patient | identifier.system | |||
PID:3 | PID:3.1 | Patient | identifier.value | if PID:3.4 == "NHS" then set to PID.3.1 | ||
PID:5 | PID:5.1 | Patient | name.family | |||
PID:5 | PID:5.2 | Patient | name.given | |||
PID:5 | PID:5.3 | Patient | name.middle | |||
PID:5 | PID:5.5 | Patient | name.prefix | |||
PID:7 | PID:7.1 | Patient | birthDate | |||
PID:8 | PID:8.1 | Patient | gender | |||
PID:11 | PID:11.1 | Patient | address.line | |||
PID:11 | PID:11.2 | Patient | address.line | |||
PID:11 | PID:11.3 | Patient | address.city | |||
PID:11 | PID:11.5 | Patient | address.postalCode | |||
PID:11 | PID:11.6 | Patient | address.country | |||
PID:11 | PID:11.9 | Patient | address.district | |||
PID:13 | PID:13.1 | Patient | telecom.value | |||
PID:13 | PID:13.2 | Patient | telecom.use | if PID:13.2 == 'PRS' then set to "mobile"
if PID:13.2 == 'PRN' then set to "home" | ||
PID:13 | PID:13.4 | Patient | telecom.value | if PID:13.2 == 'NET' then set to PID:13.4 | ||
PID:14 | PID:14.1 | Patient | telecom.value | |||
PID:14 | PID:14.4 | Patient | telecom.value | if PID:14.2 == 'NET' then set to PID:14.4 | ||
PID:15 | PID:15.1 | Patient | communication.language | |||
PID:15 | PID:15.4 | Patient | communication.language | |||
PID:18 | PID:18.1 | Encounter | contained.Parameters.parameter.valueCodeableConcept.coding.code | Patient | ||
PID:22 | PID:22.1 | Patient | http://endeavourhealth.org/fhir/StructureDefinition/primarycare-ethnic-category-extension | |||
PID:29 | PID:29.1 | Patient | deceased |
PD1 - Patient Additional Demographic
Field | Component | Resource | Property | Extension | References | Condition |
---|---|---|---|---|---|---|
PD1:3 | PD1:3.1 | Organization | identifier.name | |||
PD1:3 | PD1:3.3 | Organization | identifier.value | |||
PD1:3 | PD1:3.3 | Patient | careProvider | Organization | ||
PD1:4 | PD1:4.1 | Patient | careProvider | Practitioner |
PV1 - Patient Visit
Field | Component | Resource | Property | Extension | References | Condition |
---|---|---|---|---|---|---|
PV1:2 | PV1:2.1 | Encounter | class | |||
PV1:3 | PV1:3.9 | Encounter | location (current) | Location | ||
PV1:3 | PV1:3.9 | Location | identifier | |||
PV1:3 | PV1:3.9 | Location | name | |||
PV1:3 | PV1:3.9 | Location | description | |||
PV1:4 | PV1:4.1 | Encounter | contained.Parameters.parameter.name | if PV1:4 is not empty then set to "DM_methodOfAdmssion" | ||
PV1:4 | PV1:4.1 | Encounter | contained.Parameters.parameter.valueCodeableConcept.coding.code | |||
PV1:6 | PV1:6.9 | Encounter | location (prior) | Location | ||
PV1:6 | PV1:6.9 | Location | identifier | |||
PV1:7 | PV1:7.1 | Encounter | participant (attending clinician) | Practitioner | ||
PV1:7 | PV1:7.1 | Practitioner | identifier.value | |||
PV1:7 | Practitioner | identifier.system | if PV1:7 is not empty then set to ? (need to find a type system) | |||
PV1:7 | PV1:7.2 | Practitioner | name.family | |||
PV1:7 | PV1:7.3 | Practitioner | name.given | |||
PV1:7 | PV1:7.4 | Practitioner | name.given | |||
PV1:7 | PV1:7.6 | Practitioner | name.prefix | |||
PV1:8 | PV1:8.1 | Encounter | participant (consulting clinician) | Practitioner | ||
PV1:8 | PV1:8.1 | Practitioner | identifier.value | |||
PV1:8 | PV1:8.2 | Practitioner | name.family | |||
PV1:8 | PV1:8.3 | Practitioner | name.given | |||
PV1:8 | PV1:8.4 | Practitioner | name.given | |||
PV1:8 | PV1:8.6 | Practitioner | name.prefix | |||
PV1:9 | PV1:9.1 | EpisodeOfCare | careManager | |||
PV1:9 | PV1:9.1 | Encounter | participant (referring clinician) | Practitioner | ||
PV1:9 | PV1:9.1 | Practitioner | identifier.value | |||
PV1:9 | PV1:9.2 | Practitioner | name.family | |||
PV1:9 | PV1:9.3 | Practitioner | name.given | |||
PV1:9 | PV1:9.4 | Practitioner | name.given | |||
PV1:9 | PV1:9.6 | Practitioner | name.prefix | |||
PV1:14 | PV1:14.1 | Encounter | contained.Parameters.parameter.valueCodeableConcept.coding.code | |||
PV1:18 | PV1:18.1 | Encounter | type | |||
PV1:19 | PV1:19.1 | Encounter | episodeOfCare | EpisodeOfCare | ||
PV1:36 | PV1:36.1 | Encounter | contained.Parameters.parameter.valueCodeableConcept.coding.code | |||
PV1:37 | PV1:37.1 | Encounter | contained.Parameters.parameter.valueCodeableConcept.coding.code | |||
PV1:44 | PV1:44.1 | Encounter | period.start | |||
PV1:44 | PV1:44.1 | EpisodeOfCare | startDt | |||
PV1:45 | PV1:45.1 | Encounter | period.end | |||
PV1:45 | PV1:45.1 | EpisodeOfCare | endDt |
MSH - Message Header
Field | Component | Resource | Property | Extension | References | Condition |
---|---|---|---|---|---|---|
MSH:3 | MSH:3.1 | EpisodeOfCare | managingOrganization | Organization | ||
MSH:3 | MSH:3.1 | Organization | identifier.name | |||
MSH:3 | MSH:3.3 | Organization | identifier.value |
Fixed Values
PID - Patient Identification
Resource | Property | Value |
---|---|---|
Patient | identifier.system | if PID:3.4 == "NHS" then set to "https://fhir.hl7.org.uk/Id/nhs-number" |
Patient | address.use | if PID:11.7 == 'TEMPORARY' then set to 'temp' else set to 'home' |
Patient | telecom.use | set to "work" |
Patient | communication.preferred | if PID:15.1 is not empty then set to "true" |
Patient | communication.preferred | if PID:15.4 is not empty then set to "false" |
Encounter | contained.Parameters.parameter.name | if PID:18 is not empty then set to "CM_PatientFIN" |
Encounter | contained.Parameters.parameter.valueCodeableConcept.coding.system | if PID:18 is not empty then set to ? (need a code system here) |
PD1 - Patient Additional Demographic
Resource | Property | Value |
---|---|---|
Organization | identifier.system | if PD1:3.3 is not empty then set to "http://fhir.nhs.net/Id/ods-organization-code" |
Organization | identifier.type | if PD1:3.3 is not empty then set to "official" |
Organization | type.system | if PD1:3.3 is not empty then set to "http://endeavourhealth.org/fhir/ValueSet/primarycare-organization-type" |
Organization | type.code | if PD1:3.3 is not empty then set to "PR" |
Organization | type.display | if PD1:3.3 is not empty then set to "GP Practices in England and Wales" |
PV1 - Patient Visit
Resource | Property | Value |
---|---|---|
Location | status | if PV1:3.9 is not empty then set to "ACTIVE" |
Encounter | contained.Parameters.parameter.valueCodeableConcept.coding.system | if PV1:4 is not empty then set to ? (need a code system here) |
Location | status | if PV1:6.9 is not empty then set to "ACTIVE" |
Practitioner | identifier.system | if PV1:8 is not empty then set to "http://endeavourhealth.org/fhir/Identifier/gmp-ppd-code" |
Practitioner | identifier.system | if PV1:9 is not empty then set to "http://endeavourhealth.org/fhir/Identifier/gmp-ppd-code" |
Encounter | contained.Parameters.parameter.name | if PV1:14 is not empty then set to "DM_sourceOfAdmission" |
Encounter | contained.Parameters.parameter.valueCodeableConcept.coding.system | if PV1:14 is not empty then set to ? (need a code system here) |
Encounter | contained.Parameters.parameter.name | if PV1:36 is not empty then set to "DM_dischargeMethod" |
Encounter | contained.Parameters.parameter.valueCodeableConcept.coding.system | if PV1:36 is not empty then set to ? (need a code system here) |
Encounter | contained.Parameters.parameter.name | if PV1:37 is not empty then set to "DM_destination" |
Encounter | contained.Parameters.parameter.valueCodeableConcept.coding.system | if PV1:37 is not empty then set to ? (need a code system here) |
MSH - Message Header
Resource | Property | Value |
---|---|---|
Organization | identifier.system | if MSH:3.3 is not empty then set to "http://fhir.nhs.net/Id/ods-organization-code" |
Organization | identifier.system | if MSH:3.3 is not empty then set to "official" |