DK EHMI SBDH IG
1.0.0 - release
DK EHMI SBDH IG, published by MedCom. This guide is not an authorized publication; it is the continuous build for version 1.0.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/medcomdk/dk-ehmi-sbdh/ and changes regularly. See the Directory of published versions
The EHMI Standard Business Document Header (ehmiSBDH) is a customized version of the PEPPOL SBDH.
It is developed to
[TBD]
StandardBusinessDocumentHeader (SBDH) er en konvolutspecifikation udstedt af GS1 og profileret til anvendelse i PEPPOL. Den understøttes af eDelivery's Access Points (AP) ift. AS4 protokollen. Vi følger i EHMI konventionerne, som er udlagt i PEPPOLs profilering, men udvider den også til at kunne passe på sundhedsområdet. ehmiSBDH er dog ingenting uden en omgivende container, kaldet StandardBusinessDocument (SBD).
StandardBusinessDocument er som nævnt SBDHs omgivende container, og er en wrapper rundt om SBDH, og indeholder kun to elementer:
Selvom StandardBusinessDocument, som sådan er konvolutten, bruges termen ehmiSbdhgenerelt om hele konvolutten, da det er dette indhold som er særligt interessant i meddelelsesudvekslingen. BinaryContent er elementet som indeholder en base64-encodet meddelelse eller kvittering for en afsendt SBDH.
Indholdet i ehmiSBDH er for en stor dels vedkommende bestemt af hvorledes
ehmiSBDH har en struktur, der overordnet er delt ind i følgende elementer:
I en ehmiSBDH for en MedCom meddelelse og en MedCom kvittering kan følgende metadata indgå:
I en ehmiSBDH for en ehmiSBDH EnvelopeReceipt er der følgende metadata:
SBDH’s generelle elementer er illustreret i nedenstående figur.
BusinessScope har dog fået sit eget kapitel, da det afviger markant fra de øvrige. I det følgende præsenteres de generelle ehmiSBDH-elementer for de foreløbigt 2 meddelelsestyper, som EHMI opererer med:
Hvor det er relevant, vil de generelle elementer være opdelt i underafsnit, der beskriver stien til værdien for det pågældende element i de respektive meddelelsestyper. Hvor de fleste elementer har almindeligt fokus på meddelelsesudveksling generelt og samspillet med SMP, giver særligt BusinessScope et sundhedsorienteret aftryk i specifikationen.
Altid
<HeaderVersion>1.0</HeaderVersion>
Sender indeholder i EHMI kun det mandatory element Identifier.
Indeholder attributten Authority, som jf. [Policy_identifiers], POLICY 6 Numeric Codes for Issuing Agencies, altid har værdien: "iso6523-actorid-upis"
Identifier repræsenterer GLN for afsender, hvor
<Sender>
<Identifier Authority="iso6523-actorid-upis">
“0088:”+[GLN-nummer]
</Identifier>
</Sender>
Hvis MedCom meddelelsen er af typen FHIR, da altid på følgende form:
Uanset meddelelsestype vil det altid munde ud i følgende Sender/Identifier, hvor værdien efter 0088: selvfølgelig vil variere.
<Sender>
<Identifier Authority="iso6523-actorid-upis">
0088:5790000121526
</Identifier>
</Sender>
Receiver indeholder i EHMI kun det mandatory element Identifier.
Indeholder attributten Authority, som jf. [Policy_identifiers], POLICY 6 Numeric Codes for Issuing Agencies, altid har værdien: "iso6523-actorid-upis" Identifier repræsenterer GLN for modtager, hvor
<Receiver>
<Identifier Authority="iso6523-actorid-upis">
“0088:”+[GLN-nummer]
</Identifier>
</Receiver>'
Hvis MedCom meddelelsen er af typen FHIR, da altid på følgende form:
<Receiver>
<Identifier Authority="iso6523-actorid-upis">
“0088:”+[Bundle.entry[0].resource.destination.receiver.reference.resolve().identifier.where(system = 'https://www.gs1.org/gln').value]
</Identifier>
</Receiver>
Uanset meddelelsestype vil det altid munde ud i følgende Receiver/Identifier, hvor værdien efter 0088: selvfølgelig vil variere.
<Receiver>
<Identifier Authority="iso6523-actorid-upis">0088:5790000201389 </Identifier>
</Receiver>
Vi opererer med 4 type standarder, som har hvert sit prefix ifm. standarden
Hvis MedCom meddelelsen er en OIOXML, da altid på følgende form:
<DocumentInformation>
<Standard>
[Bundle.entry[0].resource.event.as(Coding).code]
</Standard>
</DocumentInformation>
Meddelelseseksempel:
<DocumentInformation>
<Standard>homecareobservation-message</Standard>
</DocumentInformation>
Altid
<DocumentInformation>
…
<Standard>
[bpssignal:ReceiptAcknowledgement@xmlns:bpssignal[standard]]
</Standard>
…
</DocumentInformation>
SBDH-envelope eksempel:
<DocumentInformation>
…
<Standard>ebbp-signals</Standard>
…
</DocumentInformation>
Er den indeholdte meddelelses version på formen
<DocumentInformation>
…
<TypeVersion>[Sti til typeversionen]</TypeVersion>
…
</DocumentInformation>
Hvis MedCom meddelelsen er af typen FHIR, da altid på følgende form:
<DocumentInformation>
…
<TypeVersion>
[Bundle.entry[0].resource.MessageHeader.definition[versionssuffiks]]
</TypeVersion>
…
</DocumentInformation>
Meddelelseseksempel:
<DocumentInformation>
…
<TypeVersion>1.0</TypeVersion>
…
</DocumentInformation>
Hvis den indeholdte meddelelse er af typen ehmiSBDH EnvelopeReceipt
Altid
<DocumentInformation>
…
<TypeVersion>
[bpssignal:ReceiptAcknowledgement@xmlns:bpssignal[version]]
</TypeVersion>
…
</DocumentInformation>
ehmiSBDH EnvelopeReceipt eksempel:
<DocumentInformation>
…
<Type>ebbp-signals-2.0</Type>
…
</DocumentInformation>
InstanceIdentifier vil blive genereret af den afsendende MSH og er uanset om det er en meddelelse eller en ehmiSBDH EnvelopeReceipt genereret.
<InstanceIdentifier>[generated UUID]</InstanceIdentifier>
Eksempel:
<!-- [generated UUID] -->
<DocumentInformation>
…
<InstanceIdentifier>b7faca8e-e908-47bb-b323-0eb8a854c558 </InstanceIdentifier>
…
</DocumentInformation>
Meddelelse:
<DocumentInformation>
…
<Type>[Meddelelse-starttag]</Type>
…
</DocumentInformation>
Hvis MedCom meddelelsen er en FHIR, da altid på følgende form:
<DocumentInformation>
…
<Type>[Bundle]</Type>
…
</DocumentInformation>
Meddelelseseksempel:
<DocumentInformation>
…
<Type>Bundle</Type>
…
</DocumentInformation>
<DocumentInformation>
…
<Type>[Kvitteringstype]</Type>
…
</DocumentInformation>
Kvitteringstype har følgende udfaldsrum: Udfaldsrum for disse ebXML Business Process Signals er:
Envelope Kvitteringseksempel:
<DocumentInformation>
…
<Type>ReceiptAcknowledgement</Type>
…
</DocumentInformation>
Altid false:
<DocumentInformation>
…
<MultipleType>false</MultipleType>
…
</DocumentInformation>
Altid på formen: [YYYY-MM-DD]T[TT-MM-SS]+[offset-to-UTC]
<DocumentInformation>
…
<CreationDateAndTime>
[YYYY-MM-DD]T[TT-MM-SS]+[offset-to-UTC]
</CreationDateAndTime>
…
</DocumentInformation>
Eksempel:
<DocumentInformation>
…
<CreationDateAndTime>2024-03-01T16-19-00+01:00</CreationDateAndTime>
…
</DocumentInformation>
<DocumentIdentification>
<Standard>homecareobservation-message</Standard>
<TypeVersion>1.0</TypeVersion>
<InstanceIdentifier>9a6ff822-08de-5a6f-9670-9fa4b9d2f0dc</InstanceIdentifier>
<Type>Bundle</Type>
<MultipleType>false</MultipleType>
<CreationDateAndTime>2024-03-01T16-19-00+01:00</CreationDateAndTime>
</DocumentIdentification>
<DocumentIdentification>
<Standard>ebbp-signals</Standard>
<TypeVersion>ebbp-signals-2.0</TypeVersion>
<InstanceIdentifier>9a6ff822-08de-5a6f-9670-9fa4b9d2f0dx</InstanceIdentifier>
<Type>ReceiptAcknowledgement</Type>
<MultipleType>false</MultipleType>
<CreationDateAndTime>2024-03-01T16-19-00+01:00</CreationDateAndTime>
</DocumentIdentification>
ehmiSbdhBusinessScopes er SBDH’s name-value pair konstruktion karakteriseret ved identifier. Name er udtrykt ved Type-elementet og value er udtrykt ved InstanceIdentifier. Disse to skifter for hvert scope, mens Identifieren i EHMI sammenhæng altid er den samme: dk-medcom-messaging I det følgende gennemgås de i de logiske sammenhænge, som de optræder i.
I eDelivery kommunikationen udgør SBDH’ens Scope struktur med de to typer, DOCUMENTID og PROCESSID, den direkte sammenhæng til SMP’ens DOCUMENTID og PROCESSID. Ydermere inkluderer sammenhængen også de allerede gennemgåede elementer i afsnittet om Receiver. I det følgende beskrives netop disse to Type elementer i SBDH’ens overordnede BusinessScope struktur. Scopene DOCUMENTID og PROCESSID er i PEPPOL fast definerede scopes, som sikrer en unik relation til SMP. DOCUMENTID og PROCESSID anvendes i EHMI med samme præcision som i PEPPOL, så der sikres en ensartethed i, hvordan man udtrykker værdierne på tværs af PEPPOL og EHMI. DOCUMENTID og PROCESSID bruges af AP’erne sammen med modtagers Receiver/Identifier til at slå modtagers eDelivery adresse op i SMP med et unikt respons som resultat.
Værdien i InstanceIdentifier er identisk med den tilsvarende SMP-registrering. Værdierne hentes fra MedComs standardkatalog og er her repræsenteret ved de værdier, som angiver typen af meddelelsen. Se bogmærke: [DKEDEL_DT_CodeList]
<Scope>
<Type>DOCUMENTID</Type>
<InstanceIdentifier>
urn:dk:healthcare:prod:messaging:medcom:fhir:structuredefinition:[Bundle/MessageHeader/eventCoding/code.value ]#urn:dk:medcom:fhir:[Bundle/MessageHeader/definition/[value of MessageDefinition version-part]]
</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
MedCom FHIR Meddelelseseksempel
<Scope>
<Type>DOCUMENTID</Type>
<InstanceIdentifier>
urn:dk:medcom:prod:messaging:fhir:structuredefinition:homecareobservation# urn:dk:medcom:fhir:homecareobservation:3.0
</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
<Scope>
<Type>DOCUMENTID</Type>
<InstanceIdentifier>
urn:dk:healthcare:prod:messaging:oasis:ebxml:schema:xsd:[bpps-signaltype]
</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
DOCUMENTID ehmiSBDH EnvelopeReceipt eksempel:
<Scope>
<Type>DOCUMENTID</Type>
<InstanceIdentifier>
urn:dk:healthcare:prod:messaging:oasis:ebxml:schema:xsd:SBDHReceiptAcknowledgement
</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
Værdien i InstanceIdentifier er identisk med den tilsvarende ProcessId SMP-registrering . I 4-corner modellen sendes SDN-emergence-registreringen med til SMP, så afsenders AP kan slå endelig modtager, også kaldet finalreceipient op korrekt i SMP.
<Scope>
<Type>PROCESSID</Type>
<InstanceIdentifier>
[Process Identifier value]
</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
PROCESSID for SDN Eksempel
Altid
<Scope>
<Type>PROCESSID</Type>
<InstanceIdentifier>sdn-emergence</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
Patientens CPR nummer indgår som identifier til brug for EDS Forsendelsesstatus og XDS-metadata.
<Scope>
<Type>PATIENTID</Type>
<InstanceIdentifier>
[Bundle.entry.resource.ofType(Patient).identifier.where(system=’urn:oid:1.2.208.176.1.2’).value]
</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
PATIENTID for MedCom FHIR meddelelser - eksempel:
<Scope>
<Type>PATIENTID</Type>
<InstanceIdentifier>
f06c1ac8-6096-5178-a380-2831d2456986
</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
Afsenders SOR-identifier indgår til brug for EDS Forsendelsesstatus. SENDERID for MedCom FHIR meddelelser:
<Scope>
<Type>SENDERID</Type>
<InstanceIdentifier>
[Bundle.entry[0].resource.sender.reference.resolve().identifier.where(system = 'urn:oid:1.2.208.176.1.1').value]
</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
SENDERID for MedCom FHIR meddelelser - eksempel:
<Scope>
<Type>SENDERID</Type>
<InstanceIdentifier>1170101 </InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
Modtagers SOR-identifier indgår til brug for EDS Forsendelsesstatus. RECEIVERID for MedCom FHIR meddelelser:
<Scope>
<Type>RECEIVERID</Type>
<InstanceIdentifier>
[Bundle.entry[0].resource.destination.receiver.reference.resolve().identifier.where(system = 'urn:oid:1.2.208.176.1.1').value]
</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
RECEIVERID for MedCom FHIR meddelelser - eksempel:
<Scope>
<Type>RECEIVERID</Type>
<InstanceIdentifier>1170102</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
MESSAGEIDENTIFIER er den indeholdte meddelelses MessageHeader.id, bl.a. til brug for forsendelsesstatus opsamling.
<Scope>
<Type>MESSAGEIDENTIFIER</Type>
<InstanceIdentifier>
[Bundle.entry[0].resource.id]
</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
MESSAGEIDENTIFIER eksempel:
<Scope>
<Type>MESSAGEIDENTIFIER</Type>
<InstanceIdentifier>f06c1ac8-6096-5178-a380-2831d2456986</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
<Scope>
<Type>MESSAGEIDENTIFIER</Type>
<InstanceIdentifier>
[generated]
</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
MESSAGEIDENTIFIER eksempel:
<Scope>
<Type>MESSAGEIDENTIFIER</Type>
<InstanceIdentifier>
f06c1ac8-6096-5178-a380-2831d2456986
</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
MESSAGEENVELOPEIDENTIFIER er den indeholdte meddelelses Bundle.id, bl.a. til brug for forsendelsesstatus opsamling.
<Scope>
<Type>MESSAGEENVELOPEIDENTIFIER</Type>
<InstanceIdentifier>
[Bundle.id]
</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
MESSAGEENVELOPEIDENTIFIER eksempel:
<Scope>
<Type>MESSAGEENVELOPEIDENTIFIER</Type>
<InstanceIdentifier>
f06c1ac8-6096-5178-a380-2831d2456986
</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
ORIGINALMESSAGEIDENTIFIER er den originale indeholdte meddelelses MESSAGEIDENTIFIER, bl.a. til brug for forsendelsesstatus opsamling.
Er kun relevant når SBD/SBDH/DocumentInformation/Standard.value = “ebbp-signals”
<Scope>
<Type>ORIGINALMESSAGEIDENTIFIER</Type>
<InstanceIdentifier>
Den originale meddelelses InstanceIdentifier
[SBD/SBDH/BusinessScope/Scope[MESSAGEIDENTIFIER]/InstanceIdentifier.value]
</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
ORIGINALMESSAGEIDENTIFIER eksempel:
<Scope>
<Type>ORIGINALMESSAGEIDENTIFIER</Type>
<InstanceIdentifier>
f06c1ac8-6096-5178-a380-2831d2456986
</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
ORIGINALMESSAGEENVELOPEIDENTIFIER er den indeholdte meddelelses Bundle.id, bl.a. til brug for forsendelsesstatus opsamling.
Er kun relevant når SBD/SBDH/DocumentInformation/Standard.value = “ebbp-signals”
<Scope>
<Type>ORIGINALMESSAGEENVELOPEIDENTIFIER</Type>
<InstanceIdentifier>
[Bundle.id]
</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
ORIGINALMESSAGEENVELOPEIDENTIFIER eksempel:
<Scope>
<Type>ORIGINALMESSAGEENVELOPEIDENTIFIER</Type>
<InstanceIdentifier>
f06c1ac8-6096-5178-a380-2831d2456986
</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
ORIGINALMESSAGESTANDARD er den originale indeholdte meddelelses standard, bl.a. til brug for forsendelsesstatus opsamling.
Er kun relevant når SBD/SBDH/DocumentInformation/Standard.value = “ebbp-signals”
<Scope>
<Type>ORIGINALMESSAGESTANDARD</Type>
<InstanceIdentifier>
Den originale meddelelsesstandard [SBD/SBDH/DocumentInformation/Standard.value]
</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
ORIGINALMESSAGESTANDARD eksempel:
<Scope>
<Type>ORIGINALMESSAGESTANDARD</Type>
<InstanceIdentifier>homecareobservation-message</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
ORIGINALMESSAGEVERSION er den originale indeholdte meddelelses version, bl.a. til brug for forsendelsesstatus opsamling.
Er kun relevant når SBD/SBDH/DocumentInformation/Standard.value = “ebbp-signals”
<Scope>
<Type>ORIGINALMESSAGEVERSION</Type>
<InstanceIdentifier>
[SBD/SBDH/DocumentInformation/TypeVersion.value]
</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
ORIGINALMESSAGEVERSION eksempel:
<Scope>
<Type>ORIGINALMESSAGEVERSION</Type>
<InstanceIdentifier>
[SBD/SBDH/DocumentInformation/TypeVersion.value]
</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
ORIGINALENVELOPEIDENTIFIER er den originale ehmiSBDH-envelopes InstanceIdentifier, bl.a. til brug for forsendelsesstatus opsamling.
Er kun relevant når SBD/SBDH/DocumentInformation/Standard.value = “ebbp-signals”
<Scope>
<Type>ORIGINALENVELOPEIDENTIFIER</Type>
<InstanceIdentifier>
[SBD/SBDH/DocumentInformation/InstanceIdentifier.value]
</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
ORIGINALENVELOPEIDENTIFIER eksempel:
<Scope>
<Type>ORIGINALMESSAGEIDENTIFIER</Type>
<InstanceIdentifier>
f06c1ac8-6096-5178-a380-2831d2456986
</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
Det følgende afspejler DokumentDelingsServicen på NSP's behov for XDS-metadata. Denne scope-type sættes på udvekslingen med dokumentdelingstjenesterne.
Dette scope gælder kun for MedCom meddelelser ikke MedCom kvitteringer, da de ikke deles via DokumentDelingsServicen.
Dette scope gælder ikke for den primære udveksling mellem Afsender og Modtager.
Altid FHIR DocumentReference for den pågældende meddelelsestype med tilhørende variable for at kunne identificere f.eks. patient og organisation
<Scope>
<Type>XDS-METADATA</Type>
<InstanceIdentifier>
<[CDATA: <DocumentReference> [DocumentReference-structure] </DocumentReference>]>
</InstanceIdentifier>
<Identifier>dk-medcom-DocumentReference</Identifier>
</Scope>
[TBD]
Reliable messaging udløses af et request for hvilken grad af reliable messaging, der ønskes fra afsender, hvilket gøres vha. SBDHs BusinessService i BusinessScope elementet.
Når afsender har lavet et request for Reliable messaging og dermed brugen af SBDH-Acknowledgements håndteres disse vha. ebXML Business Process Signals (ebBP Signals 2.0.4).
Udfaldsrum for disse ebXML Business Process Signals er:
Der anvendes to strukturer
Begge er bygget op omkring SBDHs BusinessScope/Scope element.
I forbindelse med krav ifm. om Reliable messaging anvendes strukturen i BusinessScope kaldet BusinessService til at udforme, hvilken type af SBDH-transaktioner, som modtager af SBDH-originalkuverten skal opfylde.
CorrelationInformation bruges til at binde meddelelse og kvittering sammen. I piloten genereres alle elementer i CorrelationInformation af afsendende SBDH-MSH. Modtager af ehmiSbdhog afsender af ehmiSbdhReceiptAcknowledgement skal kvittere med angivelse af CorrelationInformation elementerne RequestingDocumentCreationDateTime og RequestingDocumentInstanceIdentifier. Der kvitteres aldrig på en kvittering.
I det følgende er dette sat op som det ønskes i piloten.
I et EHMI-SBDH-ReceiptAcknowledgement- - Request er scope altid dette:
Ifm. reliable messaging bruges SBDH’ens CorrelationInformation til at binde original ehmiSbdhog kvitterings ehmiSbdhsammen. Her anvendes specielt RequestingDocument InstanceIdentifier
RequestingDocumentCreationDateTime er tidspunktet for original meddelelsens afsendelse = DocumentIdentification/CreationDateAndTime
<CorrelationInformation>
<RequestingDocumentCreationDateTime>
[YYYY-MM-DD]T[TT-MM-SS]+[offset to UTC]
</RequestingDocumentCreationDateTime>
…
<CorrelationInformation>
Eksempel:
<CorrelationInformation>
<RequestingDocumentCreationDateTime>
2021-02-17T09:30:10+01:00
</RequestingDocumentCreationDateTime>
…
<CorrelationInformation>
RequestingDocumentInstanceIdentifier er originalkuvertens identifier = DocumentIdentification/InstanceIdentifier
<CorrelationInformation>
…
<RequestingDocumentInstanceIdentifier>
RequestingSBDH/DocumentIdentification/InstanceIdentifier
</RequestingDocumentInstanceIdentifier>
…
<CorrelationInformation>
Eksempel:
<CorrelationInformation>
…
<RequestingDocumentInstanceIdentifier>
9a6ff82208de-5a6f-9670-9fa4b9d2f0dh
</RequestingDocumentInstanceIdentifier>
…
<CorrelationInformation>
ExpectedResponseDateTime udtrykker den forventede tid, der max går indtil en ehmiSBDH response modtages. I piloten giver den 10 min, dvs. RequestingDocumentCreationDateTime + 10 min
<CorrelationInformation>
…
<ExpectedResponseDateTime>
[YYYY-MM-DD]T[TT-MM-SS]+[offset to UTC]
</ExpectedResponseDateTime>
<CorrelationInformation>
Eksempel:
<CorrelationInformation>
…
<ExpectedResponseDateTime>
2021-02-17T09:40:10+01:00
</ExpectedResponseDateTime>
<CorrelationInformation>
<CorrelationInformation>
<RequestingDocumentCreationDateTime>
2021-02-17T09:30:10+01:00
</RequestingDocumentCreationDateTime>
<RequestingDocumentInstanceIdentifier>
9a6ff82208de-5a6f-9670-9fa4b9d2f0dh
</RequestingDocumentInstanceIdentifier>
<ExpectedResponseDateTime>
2021-02-17T09:40:10+01:00
</ExpectedResponseDateTime>
</CorrelationInformation>
Altid
<BusinessServiceName>
EHMI-SBDH-ReceiptAcknowledgement-Request
</BusinessServiceName>
TypeOfServiceTransaction=”RequestingServiceTransaction”
IsNonRepudiationRequired=”false”
IsAuthenticationRequired=”false”
IsNonRepudiationOfReceiptRequired=”false”
IsIntelligibleCheckRequired=”false”
IsApplicationErrorResponseRequested=”false”
TimeToAcknowledgeReceipt=”600000” (ms)
TimeToAcknowledgeAcceptance=”0” (=bruges pt ikke)
TimeToPerform=”0” (=bruges pt ikke)
Recurrence=”0” (=bruges pt ikke)
<BusinessService>
<BusinessServiceName>
EHMI-SBDH-ReceiptAcknowledgement-Request
</BusinessServiceName>
<ServiceTransaction
TypeOfServiceTransaction=”RequestingServiceTransaction”,
IsNonRepudiationRequired=”false”,
IsAuthenticationRequired=”false”,
IsNonRepudiationOfReceiptRequired=”false”,
IsIntelligibleCheckRequired=”false”,
IsApplicationErrorResponseRequested=”false”,
TimeToAcknowledgeReceipt=”600000”,
TimeToAcknowledgeAcceptance=”0”,
TimeToPerform=”0”,
Recurrence=”0”/>
</BusinessService>
<BusinessScope>
<Scope>
<Type>EHMI-SBDH-ReceiptAcknowledgement</Type>
<InstanceIdentifier>Request</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
<CorrelationInformation>
<RequestingDocumentCreationDateTime>
2021-02-17T09:30:10+01:00
</RequestingDocumentCreationDateTime>
<RequestingDocumentInstanceIdentifier>
9a6ff82208de-5a6f-9670-9fa4b9d2f0dh
</RequestingDocumentInstanceIdentifier>
<ExpectedResponseDateTime>
2021-02-17T09:40:10+01:00
</ExpectedResponseDateTime>
</CorrelationInformation>
<BusinessService>
<BusinessServiceName>
EHMI-SBDH-ReceiptAcknowledgement-Request
</BusinessServiceName>
<ServiceTransaction
TypeOfServiceTransaction=”RequestingServiceTransaction”,
IsNonRepudiationRequired=”false”,
IsAuthenticationRequired=”false”,
IsNonRepudiationOfReceiptRequired=”false”,
IsIntelligibleCheckRequired=”false”,
IsApplicationErrorResponseRequested=”false”,
TimeToAcknowledgeReceipt=”300000”,
TimeToAcknowledgeAcceptance=”0”,
TimeToPerform=”0”,
Recurrence=”0”/>
</BusinessService>
</Scope>
…
</BusinessScope> <br>
I det følgende er dette sat op som det ønskes i piloten.
I et EHMI-SBDH-ReceiptAcknowledgement - Response er scope altid dette:
<Scope>
<Type>EHMI-SBDH-ReceiptAcknowledgement</Type>
<InstanceIdentifier>Response</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
</Scope>
Ifm. reliable messaging bruges SBDH’ens CorrelationInformation til at binde original ehmiSbdhog kvitterings ehmiSbdhsammen. Her anvendes specielt RequestingDocumentInstanceIdentifier
RequestingDocumentCreationDateTime er tidspunktet for originalkuvertens afsendelse = RequestingSBDH/RequestingDocumentCreationDateTime
<CorrelationInformation>
<RequestingDocumentCreationDateTime> [YYYY-MM-DD]T[TT-MM-SS]+[offset to UTC]
</RequestingDocumentCreationDateTime>
…
<CorrelationInformation>
<CorrelationInformation>
<RequestingDocumentCreationDateTime> 2021-02-17T09:30:10+01:00
</RequestingDocumentCreationDateTime> …
<CorrelationInformation>
RequestingDocumentInstanceIdentifier er originalkuvertens identifier = RequestingSBDH/RequestingDocumentInstanceIdentifier
<CorrelationInformation> …
<RequestingDocumentInstanceIdentifier> RequestingSBDH/RequestingDocumentInstanceIdentifier
</RequestingDocumentInstanceIdentifier> …
<CorrelationInformation>
<CorrelationInformation> …
<RequestingDocumentCreationDateTime> 9a6ff82208de-5a6f-9670-9fa4b9d2f0dh
</RequestingDocumentCreationDateTime> …
<CorrelationInformation>
ExpectedResponseDateTime udelades i en ehmiSbdhReceiptAcknowledgement
<CorrelationInformation>
<RequestingDocumentCreationDateTime>
2021-02-17T09:30:10+01:00
</RequestingDocumentCreationDateTime>
<RequestingDocumentInstanceIdentifier>
9a6ff82208de-5a6f-9670-9fa4b9d2f0dh
</RequestingDocumentInstanceIdentifier>
</CorrelationInformation>
Altid
<BusinessServiceName>
EHMI-SBDH-ReceiptAcknowledgement-Response
</BusinessServiceName>
Altid TypeOfServiceTransaction=”RespondingServiceTransaction”
Altid
IsNonRepudiationRequired=”false”
Altid
IsAuthenticationRequired=”false”
Altid
IsNonRepudiationOfReceiptRequired=”false”
Altid IsIntelligibleCheckRequired=”false”
Altid IsApplicationErrorResponseRequested=”false”
Altid TimeToAcknowledgeReceipt=”0” (ms)
Altid
TimeToAcknowledgeAcceptance=”0” (=bruges pt ikke)
Altid TimeToPerform=”0” (=bruges pt ikke)
Altid Recurrence=”0” (=bruges pt ikke)
<BusinessService>
<BusinessServiceName>
EHMI-SBDH-ReceiptAcknowledgement-Response
</BusinessServiceName>
<ServiceTransaction
TypeOfServiceTransaction=”RequestingServiceTransaction”, IsNonRepudiationRequired=”false”,
IsAuthenticationRequired=”false”, IsNonRepudiationOfReceiptRequired=”false”, IsIntelligibleCheckRequired=”false”, IsApplicationErrorResponseRequested=”false”, TimeToAcknowledgeReceipt=”600000 ”,
TimeToAcknowledgeAcceptance=”0”,
TimeToPerform=”0”,
Recurrence=”0”/>
</BusinessService>
<BusinessScope>
<Scope>
<Type>EHMI-SBDH-ReceiptAcknowledgement</Type>
<InstanceIdentifier>Response</InstanceIdentifier>
<Identifier>dk-medcom-messaging</Identifier>
<CorrelationInformation>
<RequestingDocumentCreationDateTime>
2021-02-17T09:30:10+01:00
</RequestingDocumentCreationDateTime>
<RequestingDocumentInstanceIdentifier>
9a6ff82208de-5a6f-9670-9fa4b9d2f0dh
</RequestingDocumentInstanceIdentifier>
</CorrelationInformation>
<BusinessService>
<BusinessServiceName>
EHMI-SBDH-ReceiptAcknowledgement-Response
</BusinessServiceName>
<ServiceTransaction
TypeOfServiceTransaction=”RespondingServiceTransaction”, IsNonRepudiationRequired=”false”,
IsAuthenticationRequired=”false”, IsNonRepudiationOfReceiptRequired=”false”, IsIntelligibleCheckRequired=”false”, IsApplicationErrorResponseRequested=”false”, TimeToAcknowledgeReceipt=”0”,
TimeToAcknowledgeAcceptance=”0”,
TimeToPerform=”0”,
Recurrence=”0”/>
</BusinessService>
</Scope>
…
</BusinessScope>
ehmiSbdhReceiptAcknowledgement anvendes som positiv transportkvittering, og for at modtager af kvitteringen nemt kan korrelere meddelelse med originalkuverten, kan modtager checke på hhv. • Sender - Identifier (GLN-nummer for afsender) • Receiver - Identifier (GLN-nummer for modtager) • Scope - SENDERID (SORID for afsender) - RECEIVERID (SORID for modtager) - CorrelationInformation
RequestingDocumentInstanceIdentifier
Indlejret i en ehmiSbdhReceiptAcknowledgement er også en ebBP-signal, som i princippet indeholder de samme informationer, men som det ikke er nødvendigt at checke, når det er en ReceiptAcknowledgement.
The Receipt Acknowledgement Business Signal signals that a message has been properly received by the Receiver MSH software component. Legible means that it has passed structure/schema validity check. The content of the receipt and the legibility of a business message MUST be reviewed prior to the processing of the Requesting or Responding Business Document or the evaluation of condition expressions in the message's Business Documents or Document Envelope. Condition Expressions are expressions that evaluate to true or false. [ebXMLbp]
Samme datatype som SBDH.DocumentIdentification.InstanceIdentifier
<bpssignal:OriginalMessageIdentifier>
[RequestingSBDH/DocumentIdentification/InstanceIdentifier]
</bpssignal:OriginalMessageIdentifier>
OriginalMessageIdentifier eksempel
<bpssignal:OriginalMessageIdentifier>
9a6ff822-08de-5a6f-9670-9fa4b9d2f0dc
</bpssignal:OriginalMessageIdentifier>
Samme datatype som SBDH/BusinessScope/Scope(DOCUMENTID)/InstanceIdentifier
<bpssignal:OriginalDocumentIdentifier>
[RequestingSBDH/BusinessScope/Scope(DOCUMENTID)/InstanceIdentifier]
</bpssignal:OriginalDocumentIdentifier>
OriginalDocumentIdentifier eksempel
<bpssignal:OriginalDocumentIdentifier>
urn:dk:healthcare:prod:messaging:medcom: fhir:structuredefinition:[Bundle/MessageHeader/eventCoding/code.value ]#urn:dk:medcom:fhir:[Bundle/MessageHeader/definition/[value of MessageDefinition version-part]]
</bpssignal:OriginalDocumentIdentifier>
Altid på formen: [YYYY-MM-DD]T[tt:mm:ss]+[offset-to-UTC]
<bpssignal:OriginalMessageDateTime>
[RequestingSBDH/DocumentIdentification/CreationDateAndTime]
</bpssignal:OriginalMessageDateTime>
OriginalMessageDateTime eksempel
<bpssignal:OriginalMessageDateTime>
2024-03-01T16:19:00+01:00
</bpssignal:OriginalMessageDateTime>
Altid på formen: [YYYY-MM-DD]T[tt:mm:ss]+[offset-to-UTC]
<bpssignal:ThisMessageDateTime>
[RespondingSBDH.DocumentIdentification.CreationDateAndTime]
</bpssignal:ThisMessageDateTime>
ThisMessageDateTime eksempel
<bpssignal:ThisMessageDateTime>
2024-03-01T16:19:10+01.00
</bpssignal:ThisMessageDateTime>
<bpssignal:FromPartyInfo type=[RequestingSBDH:Receiver.Identifier@Authority]>
[RequestingSBDH:Receiver.Identifier]
</bpssignal:FromPartyInfo>
FromPartyInfo eksempel
<bpssignal:FromPartyInfo type=”iso6523-actorid-upis”>
0088:5790000201389
</bpssignal:FromPartyInfo>
<bpssignal:ToPartyInfo type=[RequestingSBDH:Sender.Identifier@Authority]>
[RequestingSBDH:Sender.Identifier]
</bpssignal:ToPartyInfo>
ToPartyInfo eksempel
<bpssignal:ToPartyInfo type=”iso6523-actorid-upis”>
0088:5790000121526
</bpssignal:ToPartyInfo>
<bpssignal:ReceiptAcknowledgement xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:bpssignal="http://docs.oasis-open.org/ebxml-bp/ebbp-signals-2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://docs.oasis-open.org/ebxml-bp/ebbp-signals-2.0 http://docs.oasis-open.org/ebxml-bp/2.0.4/ebbp-signals-2.0.4.xsd">
<bpssignal:OriginalMessageIdentifier>
9a6ff82208de-5a6f-9670-9fa4b9d2f0dh
</bpssignal:OriginalMessageIdentifier>
<bpssignal:OriginalDocumentIdentifier>
urn:dk:medcom:prod:messaging:fhir:structuredefinition:homecareobservation# urn:dk:medcom:fhir:homecareobservation:3.0
</bpssignal:OriginalDocumentIdentifier>
<bpssignal:OriginalMessageDateTime>
2024-03-01T16:19:00+01:00
</bpssignal:OriginalMessageDateTime>
<bpssignal:ThisMessageDateTime>
2024-03-01T16:19:10+01:00
</bpssignal:ThisMessageDateTime>
<bpssignal:FromPartyInfo type=”iso6523-actorid-upis”>
0088:5790000201389
</bpssignal:FromPartyInfo>
<bpssignal:ToPartyInfo type=”iso6523-actorid-upis”>
0088:5790000121526
</bpssignal:ToPartyInfo>
<bpssignal:CollaborationIdentifier>
9a6ff82208de-5a6f-9670-9fa4b9d2f0dh
</bpssignal:CollaborationIdentifier>
</bpssignal:ReceiptAcknowledgement>
A Receipt Exception signals an error condition in the management of a Business Transaction. This Business Signal is returned to the initiating activity that originated the request. This exception MUST terminate the Business Transaction. These errors deal with the mechanisms of message exchange such as verification, validation, authentication, and authorization and will occur up to message acceptance. Typically, the rules and constraints applied to the message will have only dealt with the well-formedness of the message.
A receipt exception terminates the Business Transaction. The following are receipt exceptions: • Syntax exceptions. There is invalid punctuation, vocabulary or grammar in the Business Document or Business Signal. • Authorization exceptions. Roles are not authorized to participate in the BTA. Note that the receiving BSI can only identify this exception. • Signature exceptions. Business Documents are not signed for non-repudiation when required. • Sequence exceptions. The order or type of a Business Document or Business Signal is incorrect.
A Receipt Exception typical signals an error condition in a Business Activity which requires a transaction to be terminated, i.e. receipt of a business message with a Business Document that has failed. (From [ebXMLbp] page 77)
Som 7.4.3.1.1
Som 7.4.3.1.2
Som 7.4.3.1.3
Som 7.4.3.1.4
Som 7.4.3.1.5
Som 7.4.3.1.6
Indholdet defineres overordnet som en ReceiptException, men derudover er det modtagerens fejlhåndteringsmekanismes logik, der bestemmer indholdet. Her eksemplificeret fra MedComs Gateway service. Reason og ExceptionMessage følger samme logik.
<bpssignal:ExceptionType>
<bpssignal:ReceiptException>
[Syntax]
</bpssignal:ReceiptException>
</bpssignal:ExceptionType>
ExceptionType eksempel
<bpssignal:ExceptionType>
<bpssignal:ReceiptException>
<GeneralException>101 </GeneralException>
</bpssignal:ReceiptException>
</bpssignal:ExceptionType>
Se ExceptionType
<bpssignal:Reason>
[Reason]
</bpssignal:Reason>
Reason eksempel
<bpssignal:Reason>
Internal error
</bpssignal:Reason>
Se ExceptionType
ExceptionMessage eksempel
<bpssignal:ExceptionMessage>
javax.xml.bind.UnmarshalException
- with linked exception:
[org.xml.sax.SAXParseException; lineNumber: 7; columnNumber: 21; The end-tag for element type "ns3:Sender" must end with a '>' delimiter.]
</bpssignal:ExceptionMessage>
<?xml version="1.0" encoding="UTF-8"?>
<bpssignal:Exception xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:bpssignal="http://docs.oasis-open.org/ebxml-bp/ebbp-signals-2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://docs.oasis-open.org/ebxml-bp/ebbp-signals-2.0 ">
<bpssignal:OriginalMessageIdentifier>
9a6ff82208de-5a6f-9670-9fa4b9d2f0dh
</bpssignal:OriginalMessageIdentifier>
<bpssignal:OriginalDocumentIdentifier>
urn:dk:medcom:prod:messaging:fhir:structuredefinition:homecareobservation# urn:dk:medcom:fhir:homecareobservation:3.0
</bpssignal:OriginalDocumentIdentifier>
<bpssignal:OriginalMessageDateTime>
2024-03-01T16:19:00+01:00
</bpssignal:OriginalMessageDateTime>
<bpssignal:ThisMessageDateTime>
2024-03-01T16:19:10+01:00
</bpssignal:ThisMessageDateTime>
<bpssignal:FromPartyInfo type=”iso6523-actorid-upis”>
0088:5790000201389
</bpssignal:FromPartyInfo>
<bpssignal:ToPartyInfo type=”iso6523-actorid-upis”>
0088:5790000121526
</bpssignal:ToPartyInfo>
<bpssignal:CollaborationIdentifier>
9a6ff82208de-5a6f-9670-9fa4b9d2f0dh
</bpssignal:CollaborationIdentifier>
<bpssignal:ExceptionType>
<bpssignal:ReceiptException>
Syntax
</bpssignal:ReceiptException>
</bpssignal:ExceptionType>
<bpssignal:Reason>
XML Parsing Error: not well-formed
</bpssignal:Reason>
<bpssignal:ExceptionMessage>
Element type "StandardBusinessDocumentHeader" must be followed by either attribute specifications, ">" or "/>".
</bpssignal:ExceptionMessage>
</bpssignal:Exception>
BinaryContent er en ehmiSbdh1.2 udvidelse, der giver mulighed for at wrappe specifikt indhold i ehmiSbdhog base64-encode det. MimeType tydeliggør indholdet, og hvad modtager kan forvente af base64-decodingen. Udfaldsrum for mimeType er:
fhir/json
<BinaryContent xmlns="http://peppol.eu/xsd/ticc/envelope/1.0" mimeType=[mimeType] encoding=[encoding]> [base64-encoded indhold]
Encoding vil i piloten have følgende udfaldsrum for MedCom meddelelserne, som alle er OIOXML:
Encoding vil i piloten have følgende udfaldsrum for ReceiptAcknowledgement og ReceiptException:
Alle ehmiSbdhxsd-filer kan findes via download-siden, men et overblik over, hvad de vigtigst indeholder kan ses her:
(all files opens in new window)