Différences entre les versions de « Transaction examples »
(10 versions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
This page lists examples of transactions using the [[Mobile Access Gateway]] to access the EPD Playground. | This page lists examples of transactions using the [[Mobile Access Gateway]] to access the EPD Playground. | ||
=== Create Patient === | === Create / Register Patient === | ||
{| class="wikitable" | {| class="wikitable" | ||
|Profile | |Profile | ||
Ligne 120 : | Ligne 120 : | ||
=== Search patient === | === Search patient === | ||
==== Search MPI Identifier using the EPR-SPID ==== | |||
<code>GET https://test.ahdis.ch/mag-bfh/fhir/Patient/$ihe-pix?sourceIdentifier=urn:oid:2.16.756.5.30.1.127.3.10.3|DEMO</code> | Notice: the newest PIXm specifications don't allow anymore to query all patient id's at once. A "target system" has to be given in the query. | ||
==== Search MPI Identifier using the EPR-SPID (PIXm) ==== | |||
* OID of the EPD Playground's MPI: 1.1.1.99.1 | |||
* OID of the EPR-SPID: 2.16.756.5.30.1.127.3.10.3 | |||
<code>GET [https://test.ahdis.ch/mag-bfh/fhir/Patient/$ihe-pix?sourceIdentifier=urn:oid:2.16.756.5.30.1.127.3.10.3|DEMO&targetSystem=urn:oid:1.1.1.99.1 https://test.ahdis.ch/mag-bfh/fhir/Patient/$ihe-pix?sourceIdentifier=urn:oid:2.16.756.5.30.1.127.3.10.3|DEMO&targetSystem=urn:oid:1.1.1.99.1]</code> | |||
Which should get you the following response body: | Which should get you the following response body: | ||
{ | { | ||
"resourceType": "Parameters", | "resourceType": "Parameters", | ||
Ligne 137 : | Ligne 146 : | ||
} | } | ||
==== Search local id using the EPR-SPID (PIXm) ==== | |||
* OID of the Klinik Höheweg: 2.16.756.5.30.1.178.1.1 | |||
<code>GET https://test.ahdis.ch/mag-bfh/fhir/Patient/$ihe-pix?sourceIdentifier=urn:oid:2.16.756.5.30.1.127.3.10.3|DEMO&targetSystem=urn:oid:2.16.756.5.30.1.178.1.1</code> | * OID of the EPR-SPID: 2.16.756.5.30.1.127.3.10.3 | ||
<code>GET [https://test.ahdis.ch/mag-bfh/fhir/Patient/$ihe-pix?sourceIdentifier=urn:oid:2.16.756.5.30.1.127.3.10.3|DEMO&targetSystem=urn:oid:2.16.756.5.30.1.178.1.1 https://test.ahdis.ch/mag-bfh/fhir/Patient/$ihe-pix?sourceIdentifier=urn:oid:2.16.756.5.30.1.127.3.10.3|DEMO&targetSystem=urn:oid:2.16.756.5.30.1.178.1.1]</code> | |||
Which should get you the following response body: | Which should get you the following response body: | ||
{ | { | ||
"resourceType": "Parameters", | "resourceType": "Parameters", | ||
Ligne 155 : | Ligne 169 : | ||
} | } | ||
==== Search patient by any identifier ==== | ==== Search patient by any identifier (PDQm) ==== | ||
When known, a patient can be searched by any identifier, like the EPR-SPID, the communitys MPI or a local id (e.g. from a primary system): | When known, a patient can be searched by any identifier, like the EPR-SPID, the communitys MPI or a local id (e.g. from a primary system): | ||
* EPR-SPID: <code>GET [https://test.ahdis.ch/mag-bfh/fhir/Patient?identifier=2.16.756.5.30.1.127.3.10.3|DEMO https://test.ahdis.ch/mag-bfh/fhir/Patient?identifier=2.16.756.5.30.1.127.3.10.3|DEMO]</code> | * EPR-SPID: <code>GET [https://test.ahdis.ch/mag-bfh/fhir/Patient?identifier=2.16.756.5.30.1.127.3.10.3|DEMO https://test.ahdis.ch/mag-bfh/fhir/Patient?identifier=2.16.756.5.30.1.127.3.10.3|DEMO]</code> | ||
* MPI: <code>GET [https://test.ahdis.ch/mag-bfh/fhir/Patient?identifier=1.1.1.99.1|0f5a8034-3c8a-4796-bd39-d3ea877a4155 https://test.ahdis.ch/mag-bfh/fhir/Patient?identifier=1.1.1.99.1|0f5a8034-3c8a-4796-bd39-d3ea877a4155]</code> | * MPI: <code>GET [https://test.ahdis.ch/mag-bfh/fhir/Patient?identifier=1.1.1.99.1|0f5a8034-3c8a-4796-bd39-d3ea877a4155 https://test.ahdis.ch/mag-bfh/fhir/Patient?identifier=1.1.1.99.1|0f5a8034-3c8a-4796-bd39-d3ea877a4155]</code> | ||
* local id: <code>GET [https://test.ahdis.ch/mag-bfh/fhir/Patient?identifier=2.16.756.5.30.1.178.1.1|PATIENT1 https://test.ahdis.ch/mag-bfh/fhir/Patient?identifier=2.16.756.5.30.1.178.1.1|PATIENT1]</code> | * local id: <code>GET [https://test.ahdis.ch/mag-bfh/fhir/Patient?identifier=2.16.756.5.30.1.178.1.1|PATIENT1 https://test.ahdis.ch/mag-bfh/fhir/Patient?identifier=2.16.756.5.30.1.178.1.1|PATIENT1]</code> | ||
This returns a FHIR Bundle: | This returns a FHIR Bundle: | ||
{ | { | ||
"resourceType": "Bundle", | "resourceType": "Bundle", | ||
Ligne 210 : | Ligne 227 : | ||
} | } | ||
==== | === Upload a document === | ||
{| class="wikitable" | {| class="wikitable" | ||
|Profile | |Profile | ||
Ligne 228 : | Ligne 243 : | ||
|} | |} | ||
The following example creates a document for the patient ALAN ALPHA: | The following example creates a document for the patient ALAN ALPHA: | ||
<code>POST https://test.ahdis.ch/mag-bfh/fhir</code> | <code>POST https://test.ahdis.ch/mag-bfh/fhir</code> | ||
{ | { | ||
Ligne 244 : | Ligne 260 : | ||
"resourceType": "Binary", | "resourceType": "Binary", | ||
"contentType": "text/xml", | "contentType": "text/xml", | ||
"data": "<Base64 | "data": "<Base64 encoded file content>" | ||
}, | }, | ||
"request": { | "request": { | ||
Ligne 402 : | Ligne 418 : | ||
] | ] | ||
} | } | ||
=== Update a document === | |||
You can not directly update a document. You will to replace it, by uploading a new document with a reference to the other document it replaces. The reference points to the Resource ID of the document to replace (keep in mind here, this is not the temporary ID you assigned to it in the ITI-65 Provide Document Bundle, but the ID assigned by the server. | |||
So the Document Bundle is the same as in Upload a Document, with the difference of the additional relatesTo reference in the DocumentReference resource. The EPD Playground then sets the status of the replaced DocumentResource to ''superseded'', so it won't show up in searches for current documents anymore. | |||
<code>POST https://test.ahdis.ch/mag-bfh/fhir</code> | |||
{ | |||
"id": "2-7-BundleProvideDocument", | |||
"resourceType": "Bundle", | |||
"meta": { | |||
"profile": [ | |||
"http://ihe.net/fhir/StructureDefinition/IHE_MHD_Provide_Minimal_DocumentBundle" | |||
] | |||
}, | |||
"type": "transaction", | |||
"entry": [ | |||
{ | |||
"fullUrl": "urn:uuid:d8d1fe44-07e9-4a84-985f-fde97d77d54b", | |||
"resource": { | |||
"resourceType": "Binary", | |||
... | |||
}, | |||
"request": { | |||
"method": "POST", | |||
"url": "urn:uuid:d8d1fe44-07e9-4a84-985f-fde97d77d54b" | |||
} | |||
}, | |||
{ | |||
"fullUrl": "urn:uuid:68a928c0-df48-4743-a291-bfb0609bbddc", | |||
"resource": { | |||
"resourceType": "List", | |||
... | |||
}, | |||
"request": { | |||
"method": "POST", | |||
"url": "urn:uuid:68a928c0-df48-4743-a291-bfb0609bbddc" | |||
} | |||
}, | |||
{ | |||
"fullUrl": "urn:uuid:50383ae5-49e5-4dea-b0e6-660cb9e7b91f", | |||
"resource": { | |||
"resourceType": "DocumentReference", | |||
... | |||
''' "relatesTo": [ | |||
''' { | |||
''' "code": "replaces", | |||
''' "target": { | |||
''' "reference": "5d7b180a-1407-48e6-99c2-141a9fa303b7"''' // this is the resource ID of the document reference to replace | |||
''' } | |||
''' } | |||
''' ] | |||
}, | |||
"request": { | |||
"method": "POST", | |||
"url": "urn:uuid:5604f114-bf96-4c12-8dac-25715a05cf3f" | |||
} | |||
} | |||
] | |||
} | |||
=== Search and retrieve a document === | |||
==== Search for DocumentReferences ==== | |||
A FHIR search for DocumentReferences returns a Bundle of DocumentReference resources. Each DocumentReference represents one available document and contains the link for retrieving the document (see below). | |||
<code>GET https://test.ahdis.ch/mag-bfh/fhir/DocumentReference?status=current&patient.identifier=urn:oid:1.1.1.99.1|0f5a8034-3c8a-4796-bd39-d3ea877a4155</code> | |||
==== Search for SubmissionSets ==== | |||
A FHIR search for List returns a Bundle of List resources. Each List resource represents a submission set, which are documents for a patient that were uploaded together. The List resources refer to the DocumentReference resources, that then contain the link to the actual document. | |||
<code>GET https://test.ahdis.ch/mag-bfh/fhir/List?status=current&patient.identifier=urn:oid:1.1.1.99.1|0f5a8034-3c8a-4796-bd39-d3ea877a4155</code> | |||
==== Retrieve a document ==== | |||
In the DocumentReference resource, under <code>content[0].attachment.url</code>, you find the link to the actual document. | |||
{ | |||
"resourceType": "DocumentReference", | |||
... | |||
"content": [ | |||
{ | |||
"attachment": { | |||
"contentType": "text/xml", | |||
"language": "de-CH", | |||
"url": "http://test.ahdis.ch/mag-bfh/camel/xdsretrieve?uniqueId=92100cf9-e6e8-4bf8-a61c-2ee66e69eb2c&repositoryUniqueId=1.1.1.2.31", | |||
"size": 80461, | |||
"hash": "ZGU4YzRmNDM4ZjAzNmRmNDM0MDUyZWRjYjIzMTNjNDUzOTMyNzg1MQ==", | |||
"creation": "2020-06-29T11:58:00+00:00" | |||
}, | |||
"format": { | |||
"system": "urn:oid:1.3.6.1.4.1.19376.1.2.3", | |||
"code": "urn:ihe:pharm:pml:2013", | |||
"display": "Community Medication List" | |||
} | |||
} | |||
], | |||
... | |||
} | |||
Using this link, you can fetch the document with a GET request: | |||
<code>GET http://test.ahdis.ch/mag-bfh/camel/xdsretrieve?uniqueId=92100cf9-e6e8-4bf8-a61c-2ee66e69eb2c&repositoryUniqueId=1.1.1.2.31</code> |
Version actuelle datée du 13 mars 2024 à 12:12
This page lists examples of transactions using the Mobile Access Gateway to access the EPD Playground.
Create / Register Patient
Profile | Patient Master Identity Registry | (PMIR) |
Transaction | Mobile Patient Identity Feed | [ITI-93] |
SOAP Transaction | Patient Identity Feed HL7 V3 | [ITI-44] |
The following example creates a patient ALAN ALPHA (which, by the way, also exists in the gazelle reference environment):
POST https://test.ahdis.ch/mag-bfh/fhir/$process-message { "resourceType": "Bundle", "type": "message", "entry": [ { "fullUrl": "http://example.com/fhir/MessageHeader/1", "resource": { "resourceType": "MessageHeader", "id": "1", "eventUri": "urn:ihe:iti:pmir:2019:patient-feed", "source": { "endpoint": "http://example.com/patientSource" }, "focus": [ { "reference": "Patient/123" } ], "destination": [ { "endpoint": "http://example.com/patientEndpoint" } ] } }, { "fullUrl": "http://example.com/fhir/Patient/123", "resource": { "resourceType": "Patient", "id": "123", "contained": [ { "resourceType": "Organization", "id": "1", "identifier": [ { "system": "urn:oid:2.16.756.5.30.1.178.1.1", "value": "Klinik H\u00f6heweg" } ], "name": "Klinik H\u00f6heweg", "contact": [ { "name": { "family": "Test", "given": [ "Hugo" ] } } ] } ], "identifier": [ { "system": "urn:oid:2.16.756.5.30.1.178.1.1", "value": "PATIENT1", "assigner": { "display": "Klinik H\u00f6heweg" } }, { "system": "urn:oid:2.16.756.5.30.1.127.3.10.3", "value": "DEMO" } ], "name": [ { "family": "ALPHA", "given": [ "ALAN" ] } ], "gender": "male", "birthDate": "1938-02-24", "address": [ { "line": "1_PINETREE", "city": "WEBSTER", "state": "MD", "postalCode": "63119" } ], "managingOrganization": { "reference": "#1" } }, "request": { "method": "POST" } } ] }
- The id in the Patient resource (e.g. "123") does not matter, but has to match the id linked in the Messageheader (focus.reference: "Patient/123").
- The creating organization must be present as a contained resource Organization and linked from the Patient resource under managingOrganization ("#1").
- In the point identifier the local patient-id in the creating organization (e.g. the "Klinik Höheweg" with OID 2.16.756.5.30.1.178.1.1) as well as the EPR-SPID (with the official OID 2.16.756.5.30.1.127.3.10.3) are listed.
Search patient
Notice: the newest PIXm specifications don't allow anymore to query all patient id's at once. A "target system" has to be given in the query.
Search MPI Identifier using the EPR-SPID (PIXm)
- OID of the EPD Playground's MPI: 1.1.1.99.1
- OID of the EPR-SPID: 2.16.756.5.30.1.127.3.10.3
Which should get you the following response body:
{ "resourceType": "Parameters", "parameter": [ { "name": "targetIdentifier", "valueIdentifier": { "system": "urn:oid:1.1.1.99.1", "value": "0f5a8034-3c8a-4796-bd39-d3ea877a4155" } } ] }
Search local id using the EPR-SPID (PIXm)
- OID of the Klinik Höheweg: 2.16.756.5.30.1.178.1.1
- OID of the EPR-SPID: 2.16.756.5.30.1.127.3.10.3
Which should get you the following response body:
{ "resourceType": "Parameters", "parameter": [ { "name": "targetIdentifier", "valueIdentifier": { "system": "urn:oid:2.16.756.5.30.1.178.1.1", "value": "PATIENT1" } } ] }
Search patient by any identifier (PDQm)
When known, a patient can be searched by any identifier, like the EPR-SPID, the communitys MPI or a local id (e.g. from a primary system):
- EPR-SPID:
GET https://test.ahdis.ch/mag-bfh/fhir/Patient?identifier=2.16.756.5.30.1.127.3.10.3|DEMO
- MPI:
GET https://test.ahdis.ch/mag-bfh/fhir/Patient?identifier=1.1.1.99.1|0f5a8034-3c8a-4796-bd39-d3ea877a4155
- local id:
GET https://test.ahdis.ch/mag-bfh/fhir/Patient?identifier=2.16.756.5.30.1.178.1.1|PATIENT1
This returns a FHIR Bundle:
{ "resourceType": "Bundle", "id": "47b0e100-5475-45e3-9dd2-0ae422bdbed9", "meta": { "lastUpdated": "2021-03-25T10:28:44.250+00:00" }, "type": "searchset", "total": 1, "link": [ { "relation": "self", "url": "https://test.ahdis.ch/mag-bfh/fhir/Patient?identifier=2.16.756.5.30.1.127.3.10.3%7CDEMO" } ], "entry": [ { "fullUrl": "https://test.ahdis.ch/mag-bfh/fhir/Patient/1.1.1.99.1-0f5a8034-3c8a-4796-bd39-d3ea877a4155", "resource": { "resourceType": "Patient", "id": "1.1.1.99.1-0f5a8034-3c8a-4796-bd39-d3ea877a4155", "identifier": [ { "system": "urn:oid:1.1.1.99.1", "value": "0f5a8034-3c8a-4796-bd39-d3ea877a4155" } ], "active": true, "name": [ { "family": "ALPHA", "given": [ "ALAN" ] } ], "gender": "male", "birthDate": "1938-02-24", "address": [ { "city": "WEBSTER", "state": "MD", "postalCode": "63119" } ] } } ] }
Upload a document
Profile | Mobile Access to Health Documents | (MHD) |
Transaction | Provide Document Bundle | [ITI-65] |
SOAP Transaction | Provide and Register Document Set | [ITI-41] |
The following example creates a document for the patient ALAN ALPHA:
POST https://test.ahdis.ch/mag-bfh/fhir
{ "id": "2-7-BundleProvideDocument", "resourceType": "Bundle", "meta": { "profile": [ "http://ihe.net/fhir/StructureDefinition/IHE_MHD_Provide_Minimal_DocumentBundle" ] }, "type": "transaction", "entry": [ { "fullUrl": "urn:uuid:d8d1fe44-07e9-4a84-985f-fde97d77d54b", "resource": { "resourceType": "Binary", "contentType": "text/xml", "data": "<Base64 encoded file content>" }, "request": { "method": "POST", "url": "urn:uuid:d8d1fe44-07e9-4a84-985f-fde97d77d54b" } }, { "fullUrl": "urn:uuid:68a928c0-df48-4743-a291-bfb0609bbddc", "resource": { "resourceType": "DocumentManifest", "masterIdentifier": { "value": "urn:oid:1.3.6.1.4.1.12559.11.13.2.6.2955" }, "identifier": [ { "system": "urn:ietf:rfc:3986", "value": "urn:uuid:8c3e40b2-3cf9-4980-b4fb-cc84ba8a181a" } ], "status": "current", "type": { "coding": [ { "system": "http://snomed.info/sct", "code": "71388002", "display": "Procedure (procedure)" } ] }, "subject": { "reference": "https://test.ahdis.ch/mag-bfh/fhir/Patient/1.1.1.99.1-0f5a8034-3c8a-4796-bd39-d3ea877a4155" }, "content": [ { "reference": "urn:uuid:50383ae5-49e5-4dea-b0e6-660cb9e7b91f" } ], "created": "2020-06-29T12:01:30+00:00", "source": "urn:oid:1.3.6.1.4.1.12559.11.13.2.5", "description": "Hello World example neu" }, "request": { "method": "POST", "url": "urn:uuid:68a928c0-df48-4743-a291-bfb0609bbddc" } }, { "fullUrl": "urn:uuid:50383ae5-49e5-4dea-b0e6-660cb9e7b91f", "resource": { "resourceType": "DocumentReference", "contained": [ { "resourceType": "Patient", "id": "1", "identifier": [ { "use": "official", "system": "1.1.1.99.1", "value": "0f5a8034-3c8a-4796-bd39-d3ea877a4155" } ] } ], "masterIdentifier": { "value": "urn:oid:1.3.6.1.4.1.12559.11.13.2.1.2956" }, "identifier": [ { "use": "official", "system": "urn:ietf:rfc:3986", "value": "urn:uuid:50383ae5-49e5-4dea-b0e6-660cb9e7b91f" } ], "status": "current", "type": { "coding": [ { "system": "http://snomed.info/sct", "code": "721912009", "display": "Medication summary document (record artifact)" } ] }, "category": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "422735006", "display": "Summary clinical document (record artifact)" } ] } ], "subject": { "reference": "https://test.ahdis.ch/mag-bfh/fhir/Patient/1.1.1.99.1-0f5a8034-3c8a-4796-bd39-d3ea877a4155" }, "source": "urn:oid:1.3.6.1.4.1.12559.11.13.2.5", "date": "2020-06-29T11:58:00.000+00:00", "description": "2-7-MedicationCard", "securityLabel": [ { "coding": [ { "system": "http://snomed.info/sct", "code": "17621005", "display": "Normal (qualifier value)" } ] } ], "content": [ { "attachment": { "contentType": "text/xml", "language": "de-CH", "url": "urn:uuid:d8d1fe44-07e9-4a84-985f-fde97d77d54b", "size": 309219 }, "format": { "system": "urn:oid:1.3.6.1.4.1.19376.1.2.3", "code": "urn:ihe:pharm:pml:2013", "display": "Community Medication List" } } ], "context": { "facilityType": { "coding": [ { "system": "http://snomed.info/sct", "code": "264358009", "display": "General practice premises (environment)" } ] }, "practiceSetting": { "coding": [ { "system": "http://snomed.info/sct", "code": "394802001", "display": "General medicine (qualifier value)" } ] }, "sourcePatientInfo": { "reference": "#1" } } }, "request": { "method": "POST", "url": "urn:uuid:5604f114-bf96-4c12-8dac-25715a05cf3f" } } ] }
Update a document
You can not directly update a document. You will to replace it, by uploading a new document with a reference to the other document it replaces. The reference points to the Resource ID of the document to replace (keep in mind here, this is not the temporary ID you assigned to it in the ITI-65 Provide Document Bundle, but the ID assigned by the server. So the Document Bundle is the same as in Upload a Document, with the difference of the additional relatesTo reference in the DocumentReference resource. The EPD Playground then sets the status of the replaced DocumentResource to superseded, so it won't show up in searches for current documents anymore.
POST https://test.ahdis.ch/mag-bfh/fhir
{ "id": "2-7-BundleProvideDocument", "resourceType": "Bundle", "meta": { "profile": [ "http://ihe.net/fhir/StructureDefinition/IHE_MHD_Provide_Minimal_DocumentBundle" ] }, "type": "transaction", "entry": [ { "fullUrl": "urn:uuid:d8d1fe44-07e9-4a84-985f-fde97d77d54b", "resource": { "resourceType": "Binary", ... }, "request": { "method": "POST", "url": "urn:uuid:d8d1fe44-07e9-4a84-985f-fde97d77d54b" } }, { "fullUrl": "urn:uuid:68a928c0-df48-4743-a291-bfb0609bbddc", "resource": { "resourceType": "List", ... }, "request": { "method": "POST", "url": "urn:uuid:68a928c0-df48-4743-a291-bfb0609bbddc" } }, { "fullUrl": "urn:uuid:50383ae5-49e5-4dea-b0e6-660cb9e7b91f", "resource": { "resourceType": "DocumentReference", ... "relatesTo": [ { "code": "replaces", "target": { "reference": "5d7b180a-1407-48e6-99c2-141a9fa303b7" // this is the resource ID of the document reference to replace } } ] }, "request": { "method": "POST", "url": "urn:uuid:5604f114-bf96-4c12-8dac-25715a05cf3f" } } ] }
Search and retrieve a document
Search for DocumentReferences
A FHIR search for DocumentReferences returns a Bundle of DocumentReference resources. Each DocumentReference represents one available document and contains the link for retrieving the document (see below).
Search for SubmissionSets
A FHIR search for List returns a Bundle of List resources. Each List resource represents a submission set, which are documents for a patient that were uploaded together. The List resources refer to the DocumentReference resources, that then contain the link to the actual document.
Retrieve a document
In the DocumentReference resource, under content[0].attachment.url
, you find the link to the actual document.
{ "resourceType": "DocumentReference", ... "content": [ { "attachment": { "contentType": "text/xml", "language": "de-CH", "url": "http://test.ahdis.ch/mag-bfh/camel/xdsretrieve?uniqueId=92100cf9-e6e8-4bf8-a61c-2ee66e69eb2c&repositoryUniqueId=1.1.1.2.31", "size": 80461, "hash": "ZGU4YzRmNDM4ZjAzNmRmNDM0MDUyZWRjYjIzMTNjNDUzOTMyNzg1MQ==", "creation": "2020-06-29T11:58:00+00:00" }, "format": { "system": "urn:oid:1.3.6.1.4.1.19376.1.2.3", "code": "urn:ihe:pharm:pml:2013", "display": "Community Medication List" } } ], ... }
Using this link, you can fetch the document with a GET request: