This document describes mapping between the OIOXML (XDIS91) and the FHIR CareCommunication. Not all elements from OIOXML are relevant in FHIR CareCommunication, which is marked with a ‘NA’. The purpose of this document is to help implementers of FHIR CareCommunication.
Click here to read the Implementation Guide which includes all requirements for the CareCommunication.
Please notice, that the expressions in ‘Actual FHIR path’ are made using the windows app FHIRPath tester. In other applications, will the apostrophe (‘…’) might not be used.
Data |
OIOXML |
Pseudo FHIR path |
Must Support |
Comment |
---|---|---|---|---|
Actual FHIR path |
||||
Date for Message sent |
Emessage.Envelope.Sent.Date |
MedComCareCommunicationMessage.timestamp |
Yes |
All FHIR timestamps contain both date and time. This element holds information about when a bundle is created. The timestamp is equivalent to MedComCareCommunicationMessage.MedcomMessagingProvenance. occurredDateTime |
Bundle.timestamp |
||||
Time for Message sent |
Emessage.Envelope.Sent.Time |
MedComCareCommunicationMessage.timestamp |
Yes |
All FHIR timestamps contain both date and time. This element holds information about when a bundle is created. The timestamp is equivalent to MedComCareCommunicationMessage.MedcomMessagingProvenance. occurredDateTime |
Bundle.timestamp |
||||
Message envelope id |
Emessage.Envelope.Identifier |
MedComCareCommunicationMessage.id |
Yes |
A unique identifier for a bundle. The MedComCareCommunicationMessage.id must be updated with a new value each time a new message is sent, or a message is resent. |
Bundle.id |
||||
AcknowledgementCode |
Emessage.Envelope.AcknowledgementCode |
NA |
|
Not relevant, as all FHIR messages shall be acknowledged. |
Message letter id |
Emessage.ClinicalEmail.Letter.Identifier |
MedComCareCommunicationMessage.MedComCareCommunicationMessageHeader.id |
Yes |
A unique identifier for each message. This identifier should be globally unique. |
Bundle.entry.resource.ofType('MessageHeader').id |
||||
Version code |
Emessage.ClinicalEmail.Letter.VersionCode |
NA |
|
The version of a FHIR message can be found in the respective Implementation Guide but is not included when exchanging a message. |
Statistical code |
Emessage.ClinicalEmail.Letter.StatisticalCode |
NA |
|
Only VANSEnvelope contains a statistical code. |
Authorization timestamp date |
Emessage.ClinicalEmail.Letter.Authorisation.Date |
MedComCareCommunicationMessage.timestamp |
Yes |
This timestamp includes a date and time. It represents the date and time for when the healthcare professional press the ‘sent’-button in the screen. |
Bundle.timestamp |
||||
Authorization timestamp time |
Emessage.ClinicalEmail.Letter.Authorisation.Time |
MedComCareCommunicationMessage. MedComCareCommunicationMessageHeader.MedComCareCommunication.sent |
Yes |
This timestamp includes a date and time. It represents the date and time for when the healthcare professional press the ‘sent’-button in the screen. |
Bundle.entry.resource.ofType('Communication').sent |
||||
Message type (DIS91) |
Emessage.ClinicalEmail.Letter.TypeCode |
MedComCareCommunicationMessage.MedComCareCommunicationMessageHeader.event[x].eventcoding.code |
Yes |
The type of message. For CareCommunication the code shall be "care-communication-message" |
Bundle.entry.resource.ofType('MessageHeader').event.code |
||||
Message status |
Emessage.ClinicalEmail.Letter.StatusCode |
MedComCareCommunicationMessage.MedComMessagingProvenance.activity.coding.code |
Yes |
The element that describes the status of the CareCommunication e.g. new-message |
Bundle.entry.where(resource.ofType('Provenance').target.reference.replace('MessageHeader/','') = %resource.entry.resource.ofType('MessageHeader' ).id).resource.ofType('Provenance').activity.coding.code |
||||
Episode of care identifier |
Emessage.ClinicalEmail.Letter.EpisodeOfCareIdentifier |
MedComCareCommunicationMessage.MedComCareCommunicationMessageHeader.MedComCareCommunicationEncounter.episodeOfCare.identifier.value |
Yes |
A unique identifier for the episode of care. |
Bundle.entry.resource.ofType('Encounter').episodeOfCare.identifier.value |
||||
EAN id for sender |
Emessage.ClinicalEmail.sender.EANIdentifier |
MedComCareCommunicationMessage.MedComCareCommunicationMessageHeader.sender.MedComMessagingOrganization.identifier.eanIdentifier |
Yes |
The EAN identifier for a sending organization. |
Bundle.entry.where(resource.ofType('Organization').id.replace('string', 'id') = %resource.entry.resource.ofType('MessageHeader').sender.reference.replace('Organization/','')).resource.ofType('Organization').identifier.where(system = 'urn:oid:1.3.88').value |
||||
EAN id for receiver |
Emessage.ClinicalEmail.receiver.EANIdentifier |
MedComCareCommunicationMessage.MedComCareCommunicationMessageHeader.destination.primary.receiver.MedComMessagingOrganization.identifier.eanIdentifier |
Yes |
The EAN identifier for a receiving organization. |
Bundle.entry.where(resource.ofType('Organization').id.replace('string', 'id') = %resource.entry.resource.ofType('MessageHeader').destination.receiver.reference.replace('Organization/','')).resource.ofType('Organization').identifier.where(system = 'urn:oid:1.3.88').value |
||||
Sender id |
Emessage.ClinicalEmail.sender.Identifier |
MedComCareCommunicationMessage.MedComCareCommunicationMessageHeader.sender.MedComMessagingOrganization.identifier |
Yes |
The identifier that describes the sender of the CareCommunication message. Both a SOR- and EAN-identifier must be sent. |
Bundle.entry.where(resource.ofType('Organization').id.replace('string', 'id') = %resource.entry.resource.ofType('MessageHeader').sender.reference.replace('Organization/','')).resource.ofType('Organization').identifier |
||||
Receiver id |
Emessage.ClinicalEmail.receiver.Identifier |
MedComCareCommunicationMessage.MedComCareCommunicationMessageHeader.destination.primary.receiver.MedComMessagingOrganization.identifier |
Yes |
The identifier that describes the receiver of the CareCommunication message. Both a SOR- and EAN-identifier must be sent. |
Bundle.entry.where(resource.ofType('Organization').id.replace('string', 'id') = %resource.entry.resource.ofType('MessageHeader').destination.receiver.reference.replace('Organization/','')).resource.ofType('Organization').identifier |
||||
Sender type |
Emessage.ClinicalEmail.sender.IdentifierCode |
NA |
|
The type of the organization is given in the SOR identifier. See ‘sender id’. |
Receiver type |
Emessage.ClinicalEmail.receiver.IdentifierCode |
NA |
|
The type of the organization is given in the SOR identifier. See ‘receiver id’. |
Sender organization |
Emessage.ClinicalEmail.sender.OrganizationName |
MedComCareCommunicationMessage.MedComCareCommunicationMessageHeader.sender.MedComMessagingOrganization.name |
Yes |
This information is depending on the SOR identifier and shall only be included, if the OrganizationName is given in the SOR identifier. |
Bundle.entry.where(resource.ofType('Organization').id.replace('string', 'id') = %resource.entry.resource.ofType('MessageHeader').sender.reference.replace('Organization/','')).resource.ofType('Organization').name |
||||
Receiver organization |
Emessage.ClinicalEmail.receiver.OrganizationName |
MedComCareCommunicationMessage.MedComCareCommunicationMessageHeader.destination.primary.receiver.MedComMessagingOrganization.name |
Yes |
This information is depending on the SOR identifier and shall only be included, if the OrganizationName is given in the SOR identifier. |
Bundle.entry.where(resource.ofType('Organization').id.replace('string', 'id') = %resource.entry.resource.ofType('MessageHeader').destination.receiver.reference.replace('Organization/','')).resource.ofType('Organization').name |
||||
Sender department |
Emessage.ClinicalEmail.sender.DepartmentName |
MedComCareCommunicationMessage.MedComCareCommunicationMessageHeader.sender.MedComMessagingOrganization.name |
Yes |
This information is depending on the SOR identifier and shall only be included, if the DepartmentName is given in the SOR identifier. |
Bundle.entry.where(resource.ofType('Organization').id.replace('string', 'id') = %resource.entry.resource.ofType('MessageHeader').sender.reference.replace('Organization/','')).resource.ofType('Organization').name |
||||
Receiver department |
Emessage.ClinicalEmail.receiver.DepartmentName |
MedComCareCommunicationMessage.MedComCareCommunicationMessageHeader.destination.primary.receiver.MedComMessagingOrganization.name |
Yes |
This information is depending on the SOR identifier and shall only be included, if the OrganizationName is given in the SOR identifier. |
Bundle.entry.where(resource.ofType('Organization').id.replace('string', 'id') = %resource.entry.resource.ofType('MessageHeader').destination.receiver.reference.replace('Organization/','')).resource.ofType('Organization').name |
||||
Sender unit |
Emessage.ClinicalEmail.sender.UnitName |
MedComCareCommunicationMessage.MedComCareCommunicationMessageHeader.sender.MedComMessagingOrganization.name |
Yes |
This information is depending on the SOR identifier and shall only be included, if the UnitName is given in the SOR identifier. |
Bundle.entry.where(resource.ofType('Organization').id.replace('string', 'id') = %resource.entry.resource.ofType('MessageHeader').sender.reference.replace('Organization/','')).resource.ofType('Organization').name |
||||
Receiver unit |
Emessage.ClinicalEmail.receiver.UnitName |
MedComCareCommunicationMessage.MedComCareCommunicationMessageHeader.destination.primary.receiver.MedComMessagingOrganization.name |
Yes |
This information is depending on the SOR identifier and shall only be included, if the OrganizationName is given in the SOR identifier. |
Bundle.entry.where(resource.ofType('Organization').id.replace('string', 'id') = %resource.entry.resource.ofType('MessageHeader').destination.receiver.reference.replace('Organization/','')).resource.ofType('Organization').name |
||||
Sender streetname |
Emessage.ClinicalEmail.sender.StreetName |
NA |
|
The address of the Organization is described by the SOR identifier. |
Receiver streetname |
Emessage.ClinicalEmail.receiver.StreetName |
NA |
|
The address of the Organization is described by the SOR identifier. |
Sender suburb name |
Emessage.ClinicalEmail.sender. SuburbName |
NA |
|
The address of the Organization is described by the SOR identifier. |
Receiver suburb name |
Emessage.ClinicalEmail.receiver. DistrictName |
NA |
|
The address of the Organization is described by the SOR identifier. |
Sender district name |
Emessage.ClinicalEmail.sender. DistrictName |
NA |
|
The address of the Organization is described by the SOR identifier. |
Receiver postal code identifier |
Emessage.ClinicalEmail.receiver. PostCodeIdentifier |
NA |
|
The address of the Organization is described by the SOR identifier. |
Sender postal code identifier |
Emessage.ClinicalEmail.sender. PostCodeIdentifier |
NA |
|
The address of the Organization is described by the SOR identifier. |
Sender telephone |
Emessage.ClinicalEmail.sender.TelephoneSubscriberIdentifier |
NA |
|
Organization contactinformation is described by the SOR identifier. |
Sender speciality code |
Emessage.ClinicalEmail.sender.MedicalSpecialityCode |
NA |
|
This element is not of relevance in the FHIR CareCommunication message. |
Patient id |
Emessage.ClinicalEmail.Patient.CivilRegistrationNumber |
MedComCareCommunicationMessage.MedComCareCommunicationMessageHeader.MedComCareCommunicationEncounter.MedComCorePatient.identifier.cpr |
Yes |
Information about the patient cpr-identifier. |
Bundle.entry.resource.ofType('Patient').identifier.where(system = 'urn:oid:1.2.208.176.1.2').value |
||||
Patient alternative id |
Emessage.ClinicalEmail.Patient.AlternativeIdentifier |
MedComCareCommunicationMessage.MedComCareCommunicationMessageHeader.MedComCareCommunicationEncounter.MedComCorePatient.identifier |
Yes |
It is allowed to add a replacement CPR-identifier to the MedComCorePatient, however it is preferred to use the cpr-identifier. |
Bundle.entry.resource.ofType('Patient').identifier.where(system = ‘https://sundhedsdatastyrelsen.dk/da/registre-og-services/ecpr’).value |
||||
Patient family name |
Emessage.Clinicalemail.Patient.PersonSurName |
MedComCareCommunicationMessage.MedComCareCommunicationMessageHeader.MedComCareCommunicationEncounter.MedComCorePatient.name.official.family |
Yes |
|
Bundle.entry.resource.ofType('Patient').name.family |
||||
Patient name |
Emessage.Clinicalemail.Patient.PersonGivenName |
MedComCareCommunicationMessage.MedComCareCommunicationMessageHeader.MedComCareCommunicationEncounter.MedComCorePatient. name.official.given |
Yes |
|
Bundle.entry.resource.ofType('Patient').name.given |
||||
Patient street name |
Emessage.Clinicalemail.Patient.StreetName |
MedComCareCommunicationMessage.MedComCareCommunicationMessageHeader.MedComCareCommunicationEncounter.MedComCorePatient.adress.line |
Yes |
|
Bundle.entry.resource.ofType('Patient').address.line |
||||
Patient suburb name |
Emessage.Clinicalemail.Patient.SuburbName |
NA |
|
|
Patient city name |
Emessage.Clinicalemail.Patient.DistrictName |
MedComCareCommunicationMessage.MedComCareCommunicationMessageHeader.MedComCareCommunicationEncounter.MedComCorePatient.adress.city |
Yes |
|
Bundle.entry.resource.ofType('Patient').address.city |
||||
Patient post code |
Emessage.Clinicalemail.Patient.PostCodeIdentifier |
MedComCareCommunicationMessage.MedComCareCommunicationMessageHeader.MedComCareCommunicationEncounter.MedComCorePatient.adress.postalCode |
Yes |
|
Bundle.entry.resource.ofType('Patient').address.postalCode |
||||
Patient occupancy |
Emessage.Clinicalemail.Patient.OccupancyText |
NA |
|
|
Episode of care status |
Emessage.ClinicalEmail.Patient.EpisodeOfCareStatusCode |
MedComCareCommunicationMessage.MedComCareCommunicationMessageHeader.MedComCoreEncounter.status MedComCareCommunicationMessage.MedComCareCommunicationMessageHeader.MedComCoreEncounter.class MedComCareCommunicationMessage.MedComCareCommunicationMessageHeader.MedComCoreEncounter.MedComCorePatient.deceased |
Yes (all) |
The CareCommunication message episodeofcare status is more complexed than the OIOXML message. Together these three elements constitute the status of the patient. |
Bundle.entry.resource.ofType(‘Encounter’).status Bundle.entry.resource.ofType(Encounter).class.code Bundle.entry.resource.ofType('Patient').deceased |
||||
Priority |
Emessage.ClinicalEmail.AdditionalInformation.Priority |
MedComCareCommunicationMessage.MedComCareCommunicationMessageHeader.MedComCareCommunication.priority |
Yes |
It is only allowed to used priority when the category is ‘Regarding Referral’, in Danish ‘Vedr. Henvisning’. |
Bundle.entry.resource.ofType('Communication').priority |
||||
Subject |
Emessage.ClinicalEmail.AdditionalInformation.Subject |
MedComCareCommunicationMessage.MedComCareCommunicationMessageHeader.MedComCareCommunication.topic |
Yes |
This element refers to the regionally agreed topics, called ‘emne’ in Danish. |
Bundle.entry.resource.ofType('Communication').topic |
||||
Text |
Emessage.ClinicalEmail.ClinicalInformation.Text01 |
MedComCareCommunicationMessage.MedComCareCommunicationMessageHeader.MedComCareCommunication.payload.content |
Yes |
This element holds the actual text message included in the CareCommunication. |
Bundle.entry.resource.ofType('Communication').payload.content |
||||
Reference |
Emessage.ClinicalEmail.Reference |
MedComCareCommunicationMessage.MedComCareCommunicationMessageHeader.MedComCareCommunication.payload.attachement |
Yes |
This element holds the attachments in the CareCommunication. |
Bundle.entry.resource.ofType('Communication').payload.attachment |