Transformatie Server Interfaces (versie 0.6.13 - definitief)
De Transformatie Server bestaat uit een aantal endpoints. Ieder endpoint biedt een specifiek type transformatie. De interfaces hiervoor zijn beschreven op deze pagina.
Overzicht transformaties
AOF.TS-I.OTR.100.v1
De Transformatie Server biedt de volgende transformaties:
Transformatie Algoritme ID | Type bericht | Input | Output | ||
Protocol | Interactie-ID | Protocol | Interactie-ID | ||
---|---|---|---|---|---|
1 | Request | application/fhir+xml | create:Observation:1.0 | application/hl7-v3+xml | ZTZM_IN000004NL |
2 | application/fhir+json | ||||
3 | Response | application/hl7-v3+xml | MCCI_IN000002 + create:Observation:1.0 | application/fhir+xml | - |
4 | application/fhir+json | ||||
5 | Request | application/fhir+xml | search-type:Appointment:1.0 | application/hl7-v3+xml | QUAF_IN990001NL01 |
6 | application/fhir+json | ||||
7 | Response | application/hl7-v3+xml | QUAF_IN990003NL01 | application/fhir+xml | - |
8 | application/fhir+json |
Transformatie #5 en #6 worden vooralsnog niet uitgevoerd door de Transformatie Server, maar door de Resource Broker VnC.
Generiek
Formaat van een transformatierequest
AOF.TS-I.FTR.100.v1
Middels één transformatierequest kan één (request of response) bericht worden getransformeerd.
Het generieke formaat is:
POST [base endpointadres]/to-xxx
Content-Type: application/json; charset=utf-8
AORTA-ID: initialRequestID=
<UUID conform RFC4122>; requestID=
<UUID conform RFC4122>
{
meta:
{
format_in : "",
protocol_in : "",
protocol_out : ""
},
content_in : ""
}
Het initialRequestID attribuut bevat bevat het ID van het allereerste request in de hele keten en dient te worden opgenomen in de logbestanden van alle partijen in de keten, zodat bij foutopsporing de verschillende logbestanden aan elkaar kunnen worden gerelateerd. Het requestID is voor iedere request message uniek. In requests wordt deze gegenereerd door de client. Ook het requestID dient te worden opgenomen in de verschillende logbestanden, zodat altijd duidelijk is op welk bericht een log entry van toepassing is.
Formaat van een transformatieresponse
AOF.TS-I.FOT.100.v1
Omdat een (request of response) bericht na transformatie uiteen kan vallen in meerdere berichten bevat een transformatieresponse een JSON array. Ieder object in deze array bestaat uit inhoud en metadata betreffende deze inhoud. Het generieke formaat is:
200 OK
Content-Type: application/json; charset=utf-8
[
{
meta:
{
format_out : "",
protocol_out : "",
transformation-id : ""
},
content_out : ""
},
{
..
}
]
Generieke parameters
AOF.TS-I.TGP.100.v1
Input voor alle type transformaties is een JSON object met de volgende inhoud:
Name | Cardinality | Type | Toelichting |
meta.format_in | 1..1 | Lege string of een string met waarde escape of base64 | Gehanteerde encodering voor Wordt slechts gevuld wanneer de content een nadere aanduiding vereist bovenop de Content-Type aanduiding "application/json". |
meta.protocol_in | 1..1 | String, zie de beschrijvingen bij de specifieke transformaties voor ondersteunde waarden | Protocol van content_in |
meta.protocol_out | 1..1 | Gewenst protocol van het output bericht (of van de output berichten) | |
content_in | 1..1 | String waarop de benodigde escaping is toegepast, of die base64 geëncodeerde data bevat. | De te vertalen content. |
AOF.TS-I.TGP.200.v1
Output van alle type transformaties is een set van JSON objecten met de volgende inhoud:
Name | Cardinality | Type | Toelichting |
meta.format_out | 1..1 | Zie meta.format_in | Gehanteerde encodering voor content_out |
meta.protocol_out | 1..1 | String, zie de beschrijvingen bij de specifieke transformaties voor ondersteunde waarden | Protocol van het output bericht. |
meta.transformation-id | 1..1 | String | Het ID van het gehanteerde transformatie algoritme (zie sectie Overzicht transformaties). |
content_out | 1..1 | Zie content_in | De getransformeerde content. |
Transformatie tussen HL7-FHIR clients en HL7v3 servers
Het kan hierbij gaan om transformatie van:
- Een enkelvoudige FHIR-search naar een v3-bericht;
- Een Bundle met FHIR-searches naar een set van v3-berichten;
- Een enkelvoudige FHIR-create naar een v3-bericht;
- Een Bundle met FHIR-creates naar één v3-bericht.
- Een Bundle met FHIR-creates naar een set van v3-berichten.
De scope van deze versie van de transformatieservice is beperkt tot
- transformatie van responses behorende bij type 1;
- transformatie van requests en responses behorende bij type 4.
De scope is verder beperkt tot het HL7v3-bericht, inclusief de wrappers. De SOAP laag valt buiten de scope van de transformatieservice.
Produceren van een v3-request
Aanroep
AOF.TS-I.PV3.100.v1
POST [base endpointadres]/to-v3-request
Ondersteunde transformaties
AOF.TS-I.PV3.200.v1
Ondersteunde combinaties van meta.protocol_in
en meta.protocol
_out
voor deze transformatie zijn:
protocol_in | protocol_out |
---|---|
application/fhir+xml | application/hl7-v3+xml |
application/fhir+json |
Deze transformatie is exclusief eventueel benodigde SOAP elementen of hiervoor benodigde HTTP-headers.
Benodigde additionele parameters
AOF.TS-I.PV3.300.v1
Additionele input parameters voor transformatie van requests zijn:
Name | Cardinality | Type | Toelichting |
meta.patient | 1..1 | String conform één van de volgende formaten
| BSN van de patiënt die onderwerp is van het bericht. |
meta.sender | 1..1 | String conform één van de volgende formaten
| Applicatie-id van de initiërende applicatie |
meta.receiver | 1..1 | Zie: sender type. | Applicatie-id van de ontvangende applicatie |
meta.overseer.id | 1..1 | String conform één van de volgende formaten
| ID van de verantwoordelijke persoon. |
meta.overseer.role | 0..1 | String conform één van de volgende formaten
| Rolcode van de verantwoordelijke persoon. Wordt niet gebruikt wanneer user.id een nummer bevat van een systeem. |
meta.overseer.org.id | 1..1 | String conform één van de volgende formaten
| ID van de organisatie die de verantwoordelijke persoon vertegenwoordigt. Indien de verantwoordelijke persoon een patiënt is, dan wordt deze gevuld met het organisatie-id van VZVZ (root="2.16.840.1.113883.2.4.3.11.25" extension="00004005). |
meta.overseer.org.name | 1..1 | String | Naam van de organisatie die de verantwoordelijke persoon vertegenwoordigt. Indien de verantwoordelijke persoon een patiënt is, dan wordt deze gevuld met "Vereniging van Zorgaanbieders voor Zorgcommunicatie". |
meta.overseer.org.place | 0..1 | String | Vestiging locatie van de organisatie die de verantwoordelijke persoon vertegenwoordigt. Niet verplicht wanneer de verantwoordelijke persoon een patiënt is. |
meta.author.id | 0..1 | Zie: overseer types | ID van de gebruiker. Verplicht indien de gebruiker afwijkt van de verantwoordelijke persoon. |
meta.author.role | 0..1 | Rolcode van de gebruiker. Verplicht indien de gebruiker afwijkt van de verantwoordelijke persoon. | |
meta.author.org.id | 0..1 | ID van de organisatie die de gebruiker vertegenwoordigt. Verplicht indien de gebruiker afwijkt van de verantwoordelijke persoon. | |
meta.author.org.name | 0..1 | Naam van de organisatie die de gebruiker vertegenwoordigt. Verplicht indien de gebruiker afwijkt van de verantwoordelijke persoon. | |
meta.author.org.place | 0..1 | Vestiging locatie van de organisatie die de gebruiker vertegenwoordigt. Verplicht indien de gebruiker afwijkt van de verantwoordelijke persoon. | |
meta.method | 0..1 | String met waarde GET | POST | PUT | DELETE | De gebruikte HTTP method. Verplicht wanneer het input bericht géén Bundle met een set van requests is. |
meta.url | 0..1 | String | De gebruikte URL, inclusief eventuele (zoek)parameters. Verplicht wanneer het input bericht géén Bundle met een set van requests is. |
AOF.TS-I.PV3.400.v1
Additionele output parameters voor transformatie van requests zijn:
Name | Cardinality | Type | Toelichting |
meta.interactie-id | 1..1 | String | Het interactie-id van de geproduceerde HL7-v3 interactie. |
Voorbeelden van transformaties
Voorbeeld van een te transformeren FHIR-request:
POST [base]
AORTA-Transactie: SAML2-Bearer/JWT-Bearer <transactie_token>
DigiD-Authenticatie: SAML2-Bearer <DigiD SAML Assertion>
Content-Type: application/x-www-form-urlencodedAORTA-ID: initialRequestID=
<UUID conform RFC4122>; requestID=
<UUID conform RFC4122>AORTA-Version: contentVersion=<versienummer>; acceptVersion
=<versienummer>
<Bundle xmlns="http://hl7.org/fhir">
<id value="28943823489489"/>
<type value="batch"/>
<entry>
<fullUrl value="urn:uuid:61ebe359-bfdc-4613-8bf2-c5e300945f0a"/>
<resource>
<Observation>
..
</Observation>
</resource>
<request>
<method value="POST"/>
<url value="Observation"/>
</request>
</entry>
<entry>
..
</entry>
</Bundle>
Voorbeeld van een resulterend v3-request:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-model href="../schematron/XXX.sch" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?>
.. SOAP wrapper ..
<INTERACTIE-ID xsi:schemaLocation="urn:hl7-org:v3 ../schemas/INTERACTIE-ID.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:hl7-org:v3">
<!-- transmission wrapper -->
<id root="2.16.840.1.113883.2.4.6.6.1.1" extension="4384723894787"/>
<creationTime value=""/>
<versionCode code="VERSIE"/>
<interactionId root="2.16.840.1.113883.1.6" extension="INTERACTIE-ID"/>
<profileId root="2.16.840.1.113883.2.4.3.11.1" extension="810"/>
<processingCode code="P"/>
<processingModeCode code="T"/>
<acceptAckCode code="AL"/>
<attentionLine>
<keyWordText code="PATID" codeSystem="2.16.840.1.113883.2.4.15.1">Patient.id</keyWordText>
<value root="2.16.840.1.113883.2.4.6.3" extension="100197243" xsi:type="II"/>
</attentionLine>
<receiver>
<device determinerCode="INSTANCE" classCode="DEV">
<id root="2.16.840.1.113883.2.4.6.6" extension="23434323"/>
</device>
</receiver>
<sender>
<device determinerCode="INSTANCE" classCode="DEV">
<id root="2.16.840.1.113883.2.4.6.6" extension="1"/>
</device>
</sender>
<ControlActProcess moodCode="EVN">
<!-- control act wrapper -->
<authorOrPerformer typeCode="AUT">
<participant>
<AssignedPerson>
<id root="2.16.528.1.1007.3.1" extension="012345655"/>
<code code="01.016" codeSystem="2.16.840.1.113883.2.4.15.111" displayName="Internist"/>
<Organization>
<id root="2.16.528.1.1007.3.3" extension="02234567"/>
<name>Bester</name>
</Organization>
</AssignedPerson>
</participant>
</authorOrPerformer>
<overseer typeCode="RESP">
<AssignedPerson>
<id root="2.16.528.1.1007.3.1" extension="012345655"/>
<code code="01.015" codeSystem="2.16.840.1.113883.2.4.15.111" displayName="Huisarts"/>
<assignedPrincipalChoiceList>
<assignedPerson>
<name>Bester</name>
</assignedPerson>
</assignedPrincipalChoiceList>
<Organization>
<id root="2.16.528.1.1007.3.3" extension="02234567"/>
<name>Jansen</name>
<addr>
<city>Amsterdam</city>
</addr>
</Organization>
</AssignedPerson>
</overseer>
<subject>
<!-- Payload -->
<ClinicalDocument>
..
</ClinicalDocument>
</subject>
</ControlActProcess>
</INTERACTIE-ID>
Produceren van een FHIR-response
Aanroep
AOF.TS-I.FRA.100.v1
POST [base endpointadres]/to-fhir-response
Ondersteunde transformaties
AOF.TS-I.FRT.100.v1
Ondersteunde combinaties van meta.protocol_in
en meta.protocol
_out
voor deze transformatie zijn:
protocol_in | protocol_out |
---|---|
application/hl7-v3+xml | application/fhir+xml |
application/fhir+json |
Benodigde additionele parameters
AOF.TS-I.FAP.100.v1
Additionele input parameters voor transformatie van responses zijn:
Name | Cardinality | Type | Toelichting |
orig_content_in | 1..1 | String waarop de benodigde escaping is toegepast, of die base64 geëncodeerde data bevat. | Bevat het request bericht, voor vertaling, dat heeft geleid tot de nu te vertalen response. Deze is nodig bij de transformatie van het response bericht. |
meta.interactie-id | 1..1 | String | Het interactie-id van de HL7-v3 interactie die de aanleiding was voor de te transformeren HL7v3-response. |
meta.orig_protocol_in | 1..1 | String, zie de beschrijvingen bij de specifieke transformaties voor ondersteunde waarden. | Gehanteerd protocol voor orig_content_in. |
AOF.TS-I.FAP.200.v1
Additionele output parameters voor transformatie van responses zijn:
Name | Cardinality | Type | Toelichting |
meta.content-version | 1..1 | String | De contentVersion die moet worden gebruikt in de AORTA-Version HTTP header. |
Voorbeelden van transformaties
Voorbeeld van een te transformeren v3-response:
<?xml-model href="../schematron/XXX.sch" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?>
.. SOAP wrapper ..
<INTERACTIE-ID xsi:schemaLocation="urn:hl7-org:v3 ../schemas/INTERACTIE-ID.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:hl7-org:v3">
<id extension="235" root="2.16.528.1.1007.3.3.1234567.1"/>
<creationTime value="20140704155629"/>
<versionCode code="NICTIZEd2005-Okt"/>
<interactionId extension="INTERACTIE-ID" root="2.16.840.1.113883.1.6"/>
<profileId extension="810" root="2.16.840.1.113883.2.4.3.11.1"/>
<processingCode code="P"/>
<processingModeCode code="T"/>
<acceptAckCode code="NE"/>
<acknowledgement typeCode="CA">
<targetMessage>
<id extension="4384723894787" root="2.16.840.1.113883.2.4.6.6.1.1"/>
</targetMessage>
</acknowledgement>
<receiver>
<device determinerCode="INSTANCE" classCode="DEV">
<id extension="1" root="2.16.840.1.113883.2.4.6.6"/>
</device>
</receiver>
<sender>
<device determinerCode="INSTANCE" classCode="DEV">
<id extension="23434323" root="2.16.840.1.113883.2.4.6.6"/>
</device>
</sender>
</INTERACTIE-ID>
Voorbeeld van een resulterende FHIR Bundle:
<Bundle xmlns="http://hl7.org/fhir">
<id value="someidvalue123"/>
<type value="batch-response"/>
<entry>
<fullUrl value="http://example.org/fhir/Patient/12423"/>
<resource>
<!-- whether to return the result resource depends on client preference -->
<Observation>
<id value="12423"/>
..
</Observation>
</resource>
<response>
<status value="201 Created"/>
<location value="Observation/12423/_history/1"/>
<etag value="W/"1""/>
<lastModified value="2014-08-18T01:43:33Z"/>
<!-- Indien van toepassing -->
<outcome>
<OperationOutcome>
..
</OperationOutcome>
</outcome>
</response>
</entry>
<entry>
..
</entry>
</Bundle>