FHIR Store Mappings: Difference between revisions

From Discovery Data Service
Jump to navigation Jump to search
Line 14: Line 14:
!Resource
!Resource
!Property
!Property
!Extension
!References
!References
!Condition
!Condition
Line 22: Line 21:
|Encounter
|Encounter
|patient
|patient
|
|Patient
|Patient
|
|
Line 30: Line 28:
|EpisodeOfCare
|EpisodeOfCare
|patient
|patient
|
|Patient
|Patient
|
|
Line 38: Line 35:
|Patient
|Patient
|identifier.value
|identifier.value
|
|
|
|if PID:3.4 == "MRN" then set to PID:3.1
|if PID:3.4 == "MRN" then set to PID:3.1
Line 46: Line 42:
|Patient
|Patient
|identifier.system
|identifier.system
|
|
|
|
|
Line 54: Line 49:
|Patient
|Patient
|identifier.value
|identifier.value
|
|
|
|if PID:3.4 == "NHS" then set to PID.3.1
|if PID:3.4 == "NHS" then set to PID.3.1
Line 62: Line 56:
|Patient
|Patient
|name.family
|name.family
|
|
|
|
|
Line 70: Line 63:
|Patient
|Patient
|name.given
|name.given
|
|
|
|
|
Line 78: Line 70:
|Patient
|Patient
|name.middle
|name.middle
|
|
|
|
|
Line 86: Line 77:
|Patient
|Patient
|name.prefix
|name.prefix
|
|
|
|
|
Line 94: Line 84:
|Patient
|Patient
|birthDate
|birthDate
|
|
|
|
|
Line 102: Line 91:
|Patient
|Patient
|gender
|gender
|
|
|
|
|
Line 110: Line 98:
|Patient
|Patient
|address.line
|address.line
|
|
|
|
|
Line 118: Line 105:
|Patient
|Patient
|address.line
|address.line
|
|
|
|
|
Line 126: Line 112:
|Patient
|Patient
|address.city
|address.city
|
|
|
|
|
Line 134: Line 119:
|Patient
|Patient
|address.postalCode
|address.postalCode
|
|
|
|
|
Line 142: Line 126:
|Patient
|Patient
|address.country
|address.country
|
|
|
|
|
Line 150: Line 133:
|Patient
|Patient
|address.district
|address.district
|
|
|
|
|
Line 158: Line 140:
|Patient
|Patient
|telecom.value
|telecom.value
|
|
|
|
|
Line 166: Line 147:
|Patient
|Patient
|telecom.use
|telecom.use
|
|
|
|if PID:13.2 == 'PRS' then set to "mobile"
|if PID:13.2 == 'PRS' then set to "mobile"
Line 175: Line 155:
|Patient
|Patient
|telecom.value
|telecom.value
|
|
|
|if PID:13.2 == 'NET' then set to PID:13.4
|if PID:13.2 == 'NET' then set to PID:13.4
Line 183: Line 162:
|Patient
|Patient
|telecom.value
|telecom.value
|
|
|
|
|
Line 191: Line 169:
|Patient
|Patient
|telecom.value
|telecom.value
|
|
|
|if PID:14.2 == 'NET' then set to PID:14.4
|if PID:14.2 == 'NET' then set to PID:14.4
Line 199: Line 176:
|Patient
|Patient
|communication.language
|communication.language
|
|
|
|
|
Line 207: Line 183:
|Patient
|Patient
|communication.language
|communication.language
|
|
|
|
|
Line 215: Line 190:
|Encounter
|Encounter
|contained.Parameters.parameter.valueCodeableConcept.coding.code
|contained.Parameters.parameter.valueCodeableConcept.coding.code
|
|Patient
|Patient
|
|
Line 222: Line 196:
|PID:22.1
|PID:22.1
|Patient
|Patient
|
|http://endeavourhealth.org/fhir/StructureDefinition/primarycare-ethnic-category-extension
|http://endeavourhealth.org/fhir/StructureDefinition/primarycare-ethnic-category-extension
|
|
Line 231: Line 204:
|Patient
|Patient
|deceased
|deceased
|
|
|
|
|
Line 241: Line 213:
!Resource
!Resource
!Property
!Property
!Extension
!References
!References
!Condition
!Condition
Line 249: Line 220:
|Organization
|Organization
|identifier.name
|identifier.name
|
|
|
|
|
Line 257: Line 227:
|Organization
|Organization
|identifier.value
|identifier.value
|
|
|
|
|
Line 265: Line 234:
|Patient
|Patient
|careProvider
|careProvider
|
|Organization
|Organization
|
|
Line 273: Line 241:
|Patient
|Patient
|careProvider
|careProvider
|
|Practitioner
|Practitioner
|
|
Line 283: Line 250:
!Resource
!Resource
!Property
!Property
!Extension
!References
!References
!Condition
!Condition
Line 291: Line 257:
|Encounter
|Encounter
|class
|class
|
|
|
|
|
Line 299: Line 264:
|Encounter
|Encounter
|location (current)
|location (current)
|
|Location
|Location
|
|
Line 307: Line 271:
|Location
|Location
|identifier
|identifier
|
|
|
|
|
Line 315: Line 278:
|Location
|Location
|name
|name
|
|
|
|
|
Line 323: Line 285:
|Location
|Location
|description
|description
|
|
|
|
|
Line 331: Line 292:
|Encounter
|Encounter
|contained.Parameters.parameter.name
|contained.Parameters.parameter.name
|
|
|
|if PV1:4 is not empty then set to "DM_methodOfAdmssion"
|if PV1:4 is not empty then set to "DM_methodOfAdmssion"
Line 339: Line 299:
|Encounter
|Encounter
|contained.Parameters.parameter.valueCodeableConcept.coding.code
|contained.Parameters.parameter.valueCodeableConcept.coding.code
|
|
|
|
|
Line 347: Line 306:
|Encounter
|Encounter
|location (prior)
|location (prior)
|
|Location
|Location
|
|
Line 355: Line 313:
|Location
|Location
|identifier
|identifier
|
|
|
|
|
Line 363: Line 320:
|Encounter
|Encounter
|participant (attending clinician)
|participant (attending clinician)
|
|Practitioner
|Practitioner
|
|
Line 371: Line 327:
|Practitioner
|Practitioner
|identifier.value
|identifier.value
|
|
|
|
|
Line 379: Line 334:
|Practitioner
|Practitioner
|identifier.system
|identifier.system
|
|
|
|if PV1:7 is not empty then set to ? (need to find a type system)
|if PV1:7 is not empty then set to ? (need to find a type system)
Line 387: Line 341:
|Practitioner
|Practitioner
|name.family
|name.family
|
|
|
|
|
Line 395: Line 348:
|Practitioner
|Practitioner
|name.given
|name.given
|
|
|
|
|
Line 403: Line 355:
|Practitioner
|Practitioner
|name.given
|name.given
|
|
|
|
|
Line 411: Line 362:
|Practitioner
|Practitioner
|name.prefix
|name.prefix
|
|
|
|
|
Line 419: Line 369:
|Encounter
|Encounter
|participant (consulting clinician)
|participant (consulting clinician)
|
|Practitioner
|Practitioner
|
|
Line 427: Line 376:
|Practitioner
|Practitioner
|identifier.value
|identifier.value
|
|
|
|
|
Line 435: Line 383:
|Practitioner
|Practitioner
|name.family
|name.family
|
|
|
|
|
Line 443: Line 390:
|Practitioner
|Practitioner
|name.given
|name.given
|
|
|
|
|
Line 451: Line 397:
|Practitioner
|Practitioner
|name.given
|name.given
|
|
|
|
|
Line 459: Line 404:
|Practitioner
|Practitioner
|name.prefix
|name.prefix
|
|
|
|
|
Line 467: Line 411:
|EpisodeOfCare
|EpisodeOfCare
|careManager
|careManager
|
|
|
|
|
Line 475: Line 418:
|Encounter
|Encounter
|participant (referring clinician)
|participant (referring clinician)
|
|Practitioner
|Practitioner
|
|
Line 483: Line 425:
|Practitioner
|Practitioner
|identifier.value
|identifier.value
|
|
|
|
|
Line 491: Line 432:
|Practitioner
|Practitioner
|name.family
|name.family
|
|
|
|
|
Line 499: Line 439:
|Practitioner
|Practitioner
|name.given
|name.given
|
|
|
|
|
Line 507: Line 446:
|Practitioner
|Practitioner
|name.given
|name.given
|
|
|
|
|
Line 515: Line 453:
|Practitioner
|Practitioner
|name.prefix
|name.prefix
|
|
|
|
|
Line 523: Line 460:
|Encounter
|Encounter
|contained.Parameters.parameter.valueCodeableConcept.coding.code
|contained.Parameters.parameter.valueCodeableConcept.coding.code
|
|
|
|
|
Line 531: Line 467:
|Encounter
|Encounter
|type
|type
|
|
|
|
|
Line 539: Line 474:
|Encounter
|Encounter
|episodeOfCare
|episodeOfCare
|
|EpisodeOfCare
|EpisodeOfCare
|
|
Line 547: Line 481:
|Encounter
|Encounter
|contained.Parameters.parameter.valueCodeableConcept.coding.code
|contained.Parameters.parameter.valueCodeableConcept.coding.code
|
|
|
|
|
Line 555: Line 488:
|Encounter
|Encounter
|contained.Parameters.parameter.valueCodeableConcept.coding.code
|contained.Parameters.parameter.valueCodeableConcept.coding.code
|
|
|
|
|
Line 563: Line 495:
|Encounter
|Encounter
|period.start
|period.start
|
|
|
|
|
Line 571: Line 502:
|EpisodeOfCare
|EpisodeOfCare
|startDt
|startDt
|
|
|
|
|
Line 579: Line 509:
|Encounter
|Encounter
|period.end
|period.end
|
|
|
|
|
Line 587: Line 516:
|EpisodeOfCare
|EpisodeOfCare
|endDt
|endDt
|
|
|
|
|
Line 597: Line 525:
!Resource
!Resource
!Property
!Property
!Extension
!References
!References
!Condition
!Condition
Line 605: Line 532:
|EpisodeOfCare
|EpisodeOfCare
|managingOrganization
|managingOrganization
|
|Organization
|Organization
|
|
Line 613: Line 539:
|Organization
|Organization
|identifier.name
|identifier.name
|
|
|
|
|
Line 621: Line 546:
|Organization
|Organization
|identifier.value
|identifier.value
|
|
|
|
|

Revision as of 15:29, 23 June 2021

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 -

  1. Dynamic values - here the raw value from the inbound HL7v2 message is copied into a property on a FHIR resource
  2. 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 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 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 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 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"