Introduction
This page describes the mapping between the HL7v2 segments that DDS can ingest and the FHIR Resources (TODO link to profiles) 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
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
|
|
|
|
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
|
|
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
|
|
|
|
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
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)
|
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)
|