-
Notifications
You must be signed in to change notification settings - Fork 2
Process Data Sharing Start v0.3.0
This page lists FHIR resources that can be used to prepare the DIC KDS FHIR store before answering a manual user tasks and start the data-sharing coordinate process at a HRP. The following needs to be known beforehand:
DIC:
- The DIC identifier of the local organization
- A project identifier for which results should be extracted and transmitted
- The project results (i.e. the actual data) that should be transmitted
HRP:
- The HRP identifier wich coordinates the process
- A project identifier for which results should be extracted and merged
- The URL where the data-sharing contract can be accessed
- The COS identifier which should receive the individual DIC project results
- The DIC identifiers which should provide the project results
- The Researcher identifiers which should get access to the merged project results
It is important to differentiate between the DSF FHIR server and the KDS FHIR store. The DSF FHIR server contains all FHIR resources of the DSF needed for process flow and the KDS FHIR store contains the project results (i.e. the actual data) to be transmitted. These are two different FHIR servers.
Before answering the manual user tasks release-data-set requiring input in the DSF user interface as part of the data-sharing execute process, the DIC KDS FHIR store needs to be prepared with the data that should be transmitted to the COS.
Caution: The following steps for DIC KDS FHIR store preparation can be omitted if you are using the provided script for data extraction, pseudonymization and data-set upload.
To prepare your DIC KDS FHIR store manually, upload a Transaction Bundle like the following examples containing a DocumentReference resource and a linked Binary or Bundle as attachment resource. Please replace all placeholders in the form <REPLACE-WITH-...
>.
To send the Transaction Bundle to a KDS FHIR store with basic authentication, the following cURL command could be used:
curl \
-u "<username>:<password>" \
-H "Accept: application/fhir+xml" -H "Content-Type: application/fhir+xml" \
-d @transaction-bundle.xml \
https://<kds-fhir-base-url>/fhir
Notice: On Windows you need to remove the \
multi-line command seperators.
The individual parts of the command have the following meaning:
-
<username>
represents the basic authentication username -
<password>
represents the basic authentication password -
transaction-bundle.xml
contains the corresponding Transaction Bundle resource from below -
<kds-fhir-base-url>
needs to be replaced with the base url of your KDS FHIR store
Notice 2: This works only if you are using a HAPI FHIR server as your DIC KDS FHIR store having set the environment variable HAPI_FHIR_ALLOWED_BUNDLE_TYPES: COLLECTION,DOCUMENT,MESSAGE,TRANSACTION,TRANSACTIONRESPONSE,BATCH,BATCHRESPONSE,HISTORY,SEARCHSET
. If you are using a BLAZE FHIR server as your DIC KDS FHIR store, you have to upload and link both resources separately. Start by uploading the attachment resource, add the id of the attachment resource to DocumentReference.content.attachment.url and upload the DocumentReference resource.
<Bundle xmlns="http://hl7.org/fhir">
<type value="transaction"/>
<entry>
<fullUrl value="urn:uuid:76e62d33-4d93-4684-9a2c-58939d2a7ade"/>
<resource>
<DocumentReference xmlns="http://hl7.org/fhir">
<masterIdentifier>
<system value="http://medizininformatik-initiative.de/sid/project-identifier"/>
<!-- Example: <value value="NT-proBNP"/> -->
<value value="<REPLACE-WITH-PROJECT-IDENTIFIER>"/>
</masterIdentifier>
<status value="current"/>
<docStatus value="final"/>
<author>
<type value="Organization"/>
<identifier>
<system value="http://highmed.org/sid/organization-identifier"/>
<!-- Example: <value value="ukhd.de"/> -->
<value value="<REPLACE-WITH-YOUR-ORGANIZATION-IDENTIFIER>"/>
</identifier>
</author>
<!-- Example: <date value="2022-10-21T15:00:00+02:00"/> -->
<date value="<REPLACE-WITH-DATE-TIME>"/>
<content>
<attachment>
<!-- Example: <contentType value="text/csv"/> -->
<contentType value="<REPLACE-WITH-CONTENT-TYPE>"/>
<url value="urn:uuid:2b7267f6-fd7c-481a-b5ec-52f55dfc49bi"/>
</attachment>
</content>
</DocumentReference>
</resource>
<request>
<method value="PUT"/>
<!-- Example: <url value="DocumentReference?identifier=http://medizininformatik-initiative.de/sid/project-identifier|NT-proBNP"/> -->
<url value="DocumentReference?identifier=http://medizininformatik-initiative.de/sid/project-identifier|<REPLACE-WITH-PROJECT-IDENTIFIER>"/>
</request>
</entry>
<entry>
<fullUrl value="urn:uuid:2b7267f6-fd7c-481a-b5ec-52f55dfc49bi"/>
<resource>
<Binary xmlns="http://hl7.org/fhir">
<!-- Example: <contentType value="text/csv"/> -->
<contentType value="<REPLACE-WITH-CONTENT-TYPE>"/>
<!-- Example: <data value="base-64-data-omitted"/> -->
<data value="<REPLACE-WITH-BASE64-ENCODED-DATA-MATCHING-CONTENT-TYPE>"/>
</Binary>
</resource>
<request>
<method value="POST"/>
<url value="Binary"/>
</request>
</entry>
</Bundle>
<Bundle xmlns="http://hl7.org/fhir">
<type value="transaction"/>
<entry>
<fullUrl value="urn:uuid:76e62d33-4d93-4684-9a2c-58939d2a7ade"/>
<resource>
<DocumentReference xmlns="http://hl7.org/fhir">
<masterIdentifier>
<system value="http://medizininformatik-initiative.de/sid/project-identifier"/>
<!-- Example: <value value="NT-proBNP"/> -->
<value value="<REPLACE-WITH-PROJECT-IDENTIFIER>"/>
</masterIdentifier>
<status value="current"/>
<docStatus value="final"/>
<author>
<type value="Organization"/>
<identifier>
<system value="http://highmed.org/sid/organization-identifier"/>
<!-- Example: <value value="ukhd.de"/> -->
<value value="<REPLACE-WITH-YOUR-ORGANIZATION-IDENTIFIER>"/>
</identifier>
</author>
<!-- Example: <date value="2022-10-21T15:00:00+02:00"/> -->
<date value="<REPLACE-WITH-DATE-TIME>"/>
<content>
<attachment>
<!-- Example: <contentType value="application/fhir+xml"/> -->
<contentType value="<REPLACE-WITH-CONTENT-TYPE>"/>
<url value="urn:uuid:2b7267f6-fd7c-481a-b5ec-52f55dfc49bi"/>
</attachment>
</content>
</DocumentReference>
</resource>
<request>
<method value="PUT"/>
<!-- Example: <url value="DocumentReference?identifier=http://medizininformatik-initiative.de/sid/project-identifier|NT-proBNP"/> -->
<url value="DocumentReference?identifier=http://medizininformatik-initiative.de/sid/project-identifier|<REPLACE-WITH-PROJECT-IDENTIFIER>"/>
</request>
</entry>
<entry>
<fullUrl value="urn:uuid:2b7267f6-fd7c-481a-b5ec-52f55dfc49bi"/>
<resource>
<Bundle xmlns="http://hl7.org/fhir">
<!-- Example: <type value="transaction"/><entry> ... </entry>/> -->
<REPLACE-WITH-BUNDLE-RESOURCE-CONTENT>
</Bundle>
</resource>
<request>
<method value="POST"/>
<url value="Bundle"/>
</request>
</entry>
</Bundle>
To start the data-sharing coordinate process, a Task resource like the following example has to be sent to the HRP DSF FHIR server. Please replace all placeholders in the form <REPLACE-WITH-...
>.
To send the Task resource to the DIC DSF FHIR server, the following cURL command could be used:
curl \
--cert client-certificate.pem \
--key client-certificate_private-key.pem \
-H "Accept: application/fhir+xml" -H "Content-Type: application/fhir+xml" \
-d @task.xml \
https://<dsf-fhir-base-url>/fhir/Task
Notice: On Windows you need to remove the \
multi-line command seperators.
The individual parts of the command have the following meaning:
-
task.xml
contains the corresponding Task resource from below -
client-certificate.pem
contains your client-certificate -
client-certificate_private-key.pem
contains the private-key belonging to your client-certificate -
<dsf-fhir-base-url>
needs to be replaced with the base url of your DSF FHIR server
<Task xmlns="http://hl7.org/fhir">
<meta>
<profile value="http://medizininformatik-initiative.de/fhir/StructureDefinition/task-coordinate-data-sharing|0.3.0" />
</meta>
<instantiatesUri value="http://medizininformatik-initiative.de/bpe/Process/coordinateDataSharing/0.3.0"/>
<status value="requested"/>
<intent value="order"/>
<!-- Example: <authoredOn value="2022-10-21T15:00:00+02:00"/> -->
<authoredOn value="<REPLACE-WITH-DATE-TIME>"/>
<requester>
<type value="Organization"/>
<identifier>
<system value="http://highmed.org/sid/organization-identifier"/>
<!-- Example: <value value="forschen-fuer-gesundheit.de"/> -->
<value value="<REPLACE-WITH-HRP-ORGANIZATION-IDENTIFIER>"/>
</identifier>
</requester>
<restriction>
<recipient>
<type value="Organization"/>
<identifier>
<system value="http://highmed.org/sid/organization-identifier"/>
<!-- Example: <value value="forschen-fuer-gesundheit.de"/> -->
<value value="<REPLACE-WITH-HRP-ORGANIZATION-IDENTIFIER>"/>
</identifier>
</recipient>
</restriction>
<input>
<type>
<coding>
<system value="http://highmed.org/fhir/CodeSystem/bpmn-message"/>
<code value="message-name"/>
</coding>
</type>
<valueString value="coordinateDataSharing"/>
</input>
<input>
<type>
<coding>
<system value="http://medizininformatik-initiative.de/fhir/CodeSystem/data-sharing"/>
<code value="project-identifier"/>
</coding>
</type>
<valueIdentifier>
<system value="http://medizininformatik-initiative.de/sid/project-identifier"/>
<!-- Example: <value value="NT-proBNP"/> -->
<value value="<REPLACE-WITH-PROJECT-IDENTIFIER>"/>
</valueIdentifier>
</input>
<input>
<type>
<coding>
<system value="http://medizininformatik-initiative.de/fhir/CodeSystem/data-sharing"/>
<code value="contract-location"/>
</coding>
</type>
<!-- Example: <valueUrl value="http://forschen-fuer-gesundheit.de/contract/NT-proBNP"/> -->
<valueUrl value="<REPLACE-WITH-CONTRACT-LOCATION-URL>"/>
</input>
<input>
<type>
<coding>
<system value="http://medizininformatik-initiative.de/fhir/CodeSystem/data-sharing"/>
<code value="cos-identifier"/>
</coding>
</type>
<valueReference>
<type value="Organization"/>
<identifier>
<system value="http://highmed.org/sid/organization-identifier"/>
<!-- Example: <value value="ukdd.de"/> -->
<value value="<REPLACE-WITH-COS-IDENTIFIER>"/>
</identifier>
</valueReference>
</input>
<!-- Repeat for every DIC which should provide the project results -->
<input>
<type>
<coding>
<system value="http://medizininformatik-initiative.de/fhir/CodeSystem/data-sharing"/>
<code value="medic-identifier"/>
</coding>
</type>
<valueReference>
<type value="Organization"/>
<identifier>
<system value="http://highmed.org/sid/organization-identifier"/>
<!-- Example: <value value="ukhd.de"/> -->
<value value="<REPLACE-WITH-DIC-IDENTIFIER>"/>
</identifier>
</valueReference>
</input>
<!-- Repeat for every researcher which should get access to the merged project results -->
<input>
<type>
<coding>
<system value="http://medizininformatik-initiative.de/fhir/CodeSystem/data-sharing"/>
<code value="researcher-identifier"/>
</coding>
</type>
<valueIdentifier>
<system value="http://medizininformatik-initiative.de/sid/researcher-identifier"/>
<!-- Example: <value value="researcher-1"/> -->
<value value="<REPLACE-WITH-RESEARCHER-IDENTIFIER>"/>
</valueIdentifier>
</input>
</Task>