Interfaces SDS Server
Selectie en Determinatie Interface
Verkrijgen van InteractionContexts
Feature | |
---|---|
Type | Service |
Versie | 1.1.0 |
Groep | Autorisatie |
Gepubliceerd |
|
Delta | Toevoeging overridable attribuut in response t.b.v. overrule parameters in hybride generieke query en $get-aorta-data. |
Use case |
Feature | Versie | Dependency | Aanbieder | Afnemer |
---|---|---|---|---|
1.* | - | * | ||
1.* | AORTA-ID HTTP Header | * | * |
Een InteractionContext beschrijft het toegestane gebruik van een interactie (interactie-id), die plaatsvindt onder verantwoordelijkheid van een persoon met een bepaalde rol (rolcode), binnen een specifieke context (contextcode). De Selectie en Determinatie Interface biedt de mogelijkheid om een set van InteractionContext objecten te verkrijgen, die horen bij een specifieke contextcode en rolcode.
NB. op termijn is het misschien ook mogelijk dat een InteractionContext wordt gevuld m.b.v. zowel MAP-gegevens als met SDS-gegevens, zodat MAP en SDS middels één enkele API-call kunnen worden toegepast in de flow. SDS restricties kunnen dan ook worden toegepast op ontvangen (gerichte) FHIR-search interacties (dus zonder gebruik van een FHIR-operation). Ook kan het actualiteitsregister dan worden geraadpleegd bij verwerking van gerichte FHIR-searches.
Inhoud en formaat van een getInteractionContextsRequest
Een getInteractionContextsRequest wordt op de volgende wijze verzonden:
POST [base endpointadres]/getInteractionContexts/v1
Bij het verzenden van een getInteractionContextsRequest dienen de volgende HTTP headers te worden meegezonden:
Feature | AORTA-ID HTTP Header |
---|---|
Type | Subfeature |
Versie | 1.0.0 |
Groep | HTTP Headers |
Gepubliceerd |
|
Delta | Initiële versie van feature. |
AORTA-ID: initialRequestID=<UUID conform RFC4122>; requestID=<UUID conform RFC4122>
Het initialRequestID attribuut 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.
Content-Type: application/json; charset=utf-8
Het technische formaat van de HTTP body van een getInteractionContextsRequest is:
{
"protocol": "",
"roleCode": {
"code": "",
"codeSystem": ""
},
"contextCode": ""
}
Input parameters:
Name | Cardinality | Type | Toelichting |
protocol | 0..1 | String | Het te hanteren protocol. Mogelijke waarden: "hl7fhir", "hl7v3". Wanneer geen protocol attribuut wordt meegezonden, dan wordt gevraagd naar alle beschikbare protocollen. |
roleCode | 0..1 | String | Rolcode van de verantwoordelijke persoon voor de initiatie van de interactie-set. Rolcode lijkt verplicht in ontwerp SDS. Klopt dat? Kunnen/willen we geen operations verwerken op niveau "laag"? |
roleCode.code | 1..1 | String | Het attribuut kan bevatten:
|
roleCode.codeSystem | 1..1 | String | Toegestane waarden:
|
contextCode | 1..1 | String | De contextcode die aanduidt binnen welke (zorg)toepassing de interacties worden geïnitieerd. |
Inhoud en formaat van een getInteractionContextsResponse
Bij het verzenden van een getInteractionContextsResponse dienen de volgende HTTP headers te worden meegezonden:
Content-Type: application/json; charset=utf-8
Het technische formaat van de HTTP body van een getInteractionContextsResponse is:
[
[{
"interactionId": "jupiter:2.0",
"dataCategory": [{
"code": "",
"codeSystem": ""
}],
"parameter": [{
"name": "",
"overridable": "",
"value": ""
}]
},
{
"interactionId": "jupiter:1.2",
"dataCategory": [{
"code": "",
"codeSystem": ""
}],
"parameter": [{
"name": "",
"overridable": "",
"value": ""
}]
},
{
"interactionId": "jupiter:1.1",
"dataCategory": [{
"code": "",
"codeSystem": ""
}],
"parameter": [{
"name": "",
"overridable": "",
"value": ""
}]
}
],
[{
"interactionId": "pluto:1.4",
"dataCategory": [{
"code": "",
"codeSystem": ""
}],
"parameter": [{
"name": "",
"overridable": "",
"value": ""
}]
},
{
"interactionId": "pluto:1.3",
"dataCategory": [{
"code": "",
"codeSystem": ""
}],
"parameter": [{
"name": "",
"overridable": "",
"value": ""
}]
}
]
]
Een getInteractionContextsResponse bestaat uit bestaat uit 0..n JSON InteractionContextSet objecten. Een InteractionContextSet bestaat uit een set van 1..n InteractionContext objecten. De interacties in eenzelfde InteractionContextSet zijn functioneel aan elkaar gelijk.
Een InteractionContext bevat de volgende inhoud:
Name | Cardinality | Type | Toelichting |
interactionId | 1..1 | String | Interactie-id van het te verzenden bericht. Bijvoorbeeld: "search:zib-BloodPressure:3". |
dataCategory | 0..n | String | Gegevenssoort of bouwsteentype waartoe de interactie behoort. |
dataCategory.codeSystem | 1..1 | String | Mogelijke waarden:
|
dataCategory.code | 1..1 | String | Mogelijke waarden:
|
parameter | 0..n | Object met attributen | Parameters waartoe de interactie moet worden ingeperkt. |
parameter.name | 1..1 | String | Bijvoorbeeld: "code". |
parameter.overridable | 1..1 | String | Boolean (“true”, “false”) die aangeeft of de waarde van de betreffende parameter die door de SDS is bepaald, door de client mag worden aangepast (overschreven). NB. wanneer overridable gelijk is aan “false”, dan mag de waarde van de parameter ook niet worden ingeperkt tot een kleiner bereik dan het door de SDS bepaalde bereik. |
parameter.value | 1..1 | String | Bijvoorbeeld: "http://loinc.org|85354-9". Een waarde kan ook relatief zijn, bijvoorbeeld <huidige datum minus 1 jaar>. De component die de betreffende interactie gaat verzenden, dient in dit geval de in te vullen datum te berekenen. De SDS kan dit niet doen, omdat zij niet weet op welke datum een interactie daadwerkelijk geïnitieerd zal worden. |
HTTP statuscodes
HTTP statuscodes die kunnen worden geretourneerd zijn:
statuscode 200 OK |
statuscode 400 Bad Request |
statuscode 406 Not Acceptable |
statuscode 415 Unsupported Media Type |
statuscode 429 Too Many Requests |
statuscode 500 Internal Server Error |
Voorbeeld van gebruik getInteractionContextsRequest
Gedeeltelijke vulling van SDS t.b.v. medicatieoverdracht:
contextCode | roleCode | InteractionId | parameters | dataCategory |
---|---|---|---|---|
MEDGEG | X, Y | search:mp-MedicationAgreement:* | category=http://snomed.info/sct|33633005 periodofuse=xxx | |
X, Y | QUMA_IN991201NL04 | - | ||
X, Y | search:mp-VariableDosingRegimen:* | category=http://snomed.info/sct|395067002 | ||
X, Y | QUDS_IN000001NL01 | - | ||
Y | search:mp-AdministrationAgreement:* | category=http://snomed.info/sct|422037009 | ||
Y | QUTA_IN991211NL02 | - | ||
Y | search:mp-MedicationUse2:* | category=http://snomed.info/sct|422979000 | ||
Y | QUMG_IN991221NL02 | - | ||
.. |
Ontvangen getInteractionContextsRequest:
POST [base endpointadres]/getInteractionContexts/v1
Content-Type: application/json; charset=utf-8
AORTA-ID: initialRequestID=<UUID conform RFC4122>; requestID=<UUID conform RFC4122>
{
"protocol": "hl7fhir",
"roleCode": {
"code": "X",
"codeSystem": "urn:oid:2.16.840.1.113883.2.4.15.111"
},
"contextCode": "MEDGEG"
}
Geretourneerde getInteractionContextsResponse :
200 OK
Content-Type: application/json; charset=utf-8
[
[{
"interactionId": "search:mp-MedicationAgreement:*",
"dataCategory": [{
"code": "",
"codeSystem": ""
}],
"parameter": [{
"name": "category",
"overridable": "false",
"value": "http://snomed.info/sct|33633005"
}, {
"name": "periodofuse",
"overridable": "true",
"value": "xxx"
}]
}],
[{
"interactionId": "search:mp-VariableDosingRegimen:*",
"dataCategory": [{
"code": "",
"codeSystem": ""
}],
"parameter": [{
"name": "category",
"overridable": "false",
"value": "http://snomed.info/sct|395067002"
}]
}]
]