FHIR Store Mappings: Difference between revisions
From Voror_Wiki
More actions
No edit summary |
No edit summary |
||
| Line 1: | Line 1: | ||
=== 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 === | === Dynamic Values === | ||
==== [[Publisher API HL7 Segments#PID - Patient Identification|PID - Patient Identification]] ==== | ==== [[Publisher API HL7 Segments#PID - Patient Identification|PID - Patient Identification]] ==== | ||
Revision as of 15:00, 23 June 2021
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
| 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 |
|---|---|---|
| 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" |
| 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) |
| 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" |