You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In the Wiki Page DSF Middleware Setup a procedure to modify the bundle.xml file located at /opt/fhir/conf/bundle.xml is described. Since the file provided by the linked install guides is synchronized to the DSF release and NUM-CODEX systems, modifying this file is not recommended. It actually has a comment in it saying:
Do not modify this file!
Please provide a stand-alone FHIR transaction Bundle to your users with conditional update commands for adding the necessary MII/FDPG allowlist entries to an existing DSF installation.
Since you would need to establish some kind of on-boarding process anyway (the linked form does not exists), in which you would need to ask organizations for their current client certificate thumbprint, endpoint URL and so forth, you would be able to send a stand-alone, organization specific Bundle to your users in return.
Transaction Bundles can be executed against the DSF FHIR Server at runtime, for example using a curl command. Note: Since all references between allow-list resources (Organization, Endpoint, OrganizationAffiliation) need to be literal references, you will need to use conditional references when referencing the local organization and endpoint inside the transaction Bundle.
A general MII/FDPG allowlist bundle could look like this, although I would recommend providing users with a customized file:
<Bundlexmlns="http://hl7.org/fhir">
<!-- Allowlist Bundle for Medizininformatik-Initiative FDPG clients Modify lines 176, 191 and 200 before executing! Execute transaction bundle against DSF FHIR server after modifications: Unencrypted private key: curl --cert client_certificate.pem --key private-key.pem -H "Accept: application/fhir+xml" -H "Content-Type: application/fhir+xml" -H "Prefer: return=OperationOutcome" --data @bundle.xml https://{your-fhir-server-dns}.de/fhir/ Encrypted private key: curl --cert client_certificate.pem --key private-key.pem --pass {private-key-password} -H "Accept: application/fhir+xml" -H "Content-Type: application/fhir+xml" -H "Prefer: return=OperationOutcome" --data @bundle.xml https://{your-fhir-server-dns}.de/fhir/ Caution: XML does not allow two consecutive dash characters within a comment, replace all - with - before executing!-->
<typevalue="transaction"/>
<!-- Forschungsdatenportal für Gesundheit (FDPG) -->
<entry>
<fullUrlvalue="urn:uuid:c5bb849c-c7c9-4418-8840-7b34488774c6"/>
<resource>
<Organizationxmlns="http://hl7.org/fhir">
<meta>
<tag>
<systemvalue="http://highmed.org/fhir/CodeSystem/read-access-tag"/>
<codevalue="ALL"/>
</tag>
</meta>
<extensionurl="http://highmed.org/fhir/StructureDefinition/extension-certificate-thumbprint">
<valueStringvalue="9fa64c85d81f76b0ce96313023f3f1bd3df73059bc7bf5bd86ba25deac1842ae54103e74669d164d3972f259c657a82594677dc49bfa2a2b0a7b4ed6f34e17ab"/>
</extension>
<identifier>
<systemvalue="http://highmed.org/sid/organization-identifier"/>
<valuevalue="forschen-fuer-gesundheit.de"/>
</identifier>
<activevalue="true"/>
<namevalue="Forschungsdatenportal für Gesundheit"/>
<endpoint>
<referencevalue="urn:uuid:e6ead183-910c-446f-88c5-85c1f0f03250"/>
<typevalue="Endpoint"/>
</endpoint>
</Organization>
</resource>
<request>
<methodvalue="PUT"/>
<urlvalue="Organization?identifier=http://highmed.org/sid/organization-identifier|forschen-fuer-gesundheit.de"/>
</request>
</entry>
<!-- Forschungsdatenportal für Gesundheit (FDPG) Endpoint -->
<entry>
<fullUrlvalue="urn:uuid:e6ead183-910c-446f-88c5-85c1f0f03250"/>
<resource>
<Endpointxmlns="http://hl7.org/fhir">
<meta>
<profilevalue="http://highmed.org/fhir/StructureDefinition/endpoint"/>
<tag>
<systemvalue="http://highmed.org/fhir/CodeSystem/read-access-tag"/>
<codevalue="ALL"/>
</tag>
</meta>
<identifier>
<systemvalue="http://highmed.org/sid/endpoint-identifier"/>
<valuevalue="dsf.forschen-fuer-gesundheit.de"/>
</identifier>
<statusvalue="active"/>
<connectionType>
<systemvalue="http://terminology.hl7.org/CodeSystem/endpoint-connection-type"/>
<codevalue="hl7-fhir-rest"/>
</connectionType>
<namevalue="FHIR Endpoint Forschungsdatenportal für Gesundheit (FDPG)"/>
<managingOrganization>
<referencevalue="urn:uuid:c5bb849c-c7c9-4418-8840-7b34488774c6"/>
<typevalue="Organization"/>
</managingOrganization>
<payloadType>
<coding>
<systemvalue="http://hl7.org/fhir/resource-types"/>
<codevalue="Task"/>
</coding>
</payloadType>
<payloadMimeTypevalue="application/fhir+json"/>
<payloadMimeTypevalue="application/fhir+xml"/>
<addressvalue="https://dsf.forschen-fuer-gesundheit.de/fhir"/>
</Endpoint>
</resource>
<request>
<methodvalue="PUT"/>
<urlvalue="Endpoint?identifier=http://highmed.org/sid/endpoint-identifier|dsf.forschen-fuer-gesundheit.de"/>
</request>
</entry>
<!-- Medizininformatik-Initiative -->
<entry>
<fullUrlvalue="urn:uuid:e0af5409-2d52-4b32-826a-52ade12bc267"/>
<resource>
<Organizationxmlns="http://hl7.org/fhir">
<meta>
<profilevalue="http://highmed.org/fhir/StructureDefinition/organization-parent"/>
<tag>
<systemvalue="http://highmed.org/fhir/CodeSystem/read-access-tag"/>
<codevalue="ALL"/>
</tag>
</meta>
<identifier>
<systemvalue="http://highmed.org/sid/organization-identifier"/>
<valuevalue="medizininformatik-initiative.de"/>
</identifier>
<activevalue="true"/>
<namevalue="Medizininformatik-Initiative"/>
</Organization>
</resource>
<request>
<methodvalue="PUT"/>
<urlvalue="Organization?identifier=http://highmed.org/sid/organization-identifier|medizininformatik-initiative.de"/>
</request>
</entry>
<!-- Medizininformatik-Initiative | Forschungsdatenportal für Gesundheit (FDPG) -->
<entry>
<fullUrlvalue="urn:uuid:6ff25757-4300-44b8-ab6e-c258762edf4c"/>
<resource>
<OrganizationAffiliationxmlns="http://hl7.org/fhir">
<meta>
<profilevalue="http://highmed.org/fhir/StructureDefinition/organization-affiliation"/>
<tag>
<systemvalue="http://highmed.org/fhir/CodeSystem/read-access-tag"/>
<codevalue="ALL"/>
</tag>
</meta>
<activevalue="true"/>
<organization>
<referencevalue="urn:uuid:e0af5409-2d52-4b32-826a-52ade12bc267"/>
<typevalue="Organization"/>
</organization>
<participatingOrganization>
<referencevalue="urn:uuid:c5bb849c-c7c9-4418-8840-7b34488774c6"/>
<typevalue="Organization"/>
</participatingOrganization>
<code>
<coding>
<systemvalue="http://highmed.org/fhir/CodeSystem/organization-type"/>
<codevalue="HRP"/>
</coding>
<coding>
<systemvalue="http://highmed.org/fhir/CodeSystem/organization-role"/>
<codevalue="HRP"/>
</coding>
</code>
<endpoint>
<referencevalue="urn:uuid:e6ead183-910c-446f-88c5-85c1f0f03250"/>
<typevalue="Endpoint"/>
</endpoint>
</OrganizationAffiliation>
</resource>
<request>
<methodvalue="PUT"/>
<urlvalue="OrganizationAffiliation?primary-organization:identifier=http://highmed.org/sid/organization-identifier|medizininformatik-initiative.de&participating-organization:identifier=http://highmed.org/sid/organization-identifier|forschen-fuer-gesundheit.de"/>
</request>
</entry>
<!-- Medizininformatik-Initiative | Local Organization -->
<entry>
<fullUrlvalue="urn:uuid:3ce22c55-efec-4558-b03a-6074a003bfcd"/>
<resource>
<OrganizationAffiliationxmlns="http://hl7.org/fhir">
<meta>
<profilevalue="http://highmed.org/fhir/StructureDefinition/organization-affiliation"/>
<tag>
<systemvalue="http://highmed.org/fhir/CodeSystem/read-access-tag"/>
<codevalue="ALL"/>
</tag>
</meta>
<activevalue="true"/>
<organization>
<referencevalue="urn:uuid:e0af5409-2d52-4b32-826a-52ade12bc267"/>
<typevalue="Organization"/>
</organization>
<participatingOrganization>
<!-- ToDo Replace [local.organization.identifier] with the DSF identifier of your local organization -->
<referencevalue="Organization?identifier=http://highmed.org/sid/organization-identifier|[local.organization.identifier]"/>
<typevalue="Organization"/>
</participatingOrganization>
<code>
<coding>
<systemvalue="http://highmed.org/fhir/CodeSystem/organization-type"/>
<codevalue="MeDIC"/>
</coding>
<coding>
<systemvalue="http://highmed.org/fhir/CodeSystem/organization-role"/>
<codevalue="MeDIC"/>
</coding>
</code>
<endpoint>
<!-- ToDo Replace [local.endpoint.identifier] with the DSF identifier of your local DSF FHIR endpoint -->
<referencevalue="Endpoint?identifier=http://highmed.org/sid/endpoint-identifier|[local.endpoint.identifier]"/>
<typevalue="Endpoint"/>
</endpoint>
</OrganizationAffiliation>
</resource>
<request>
<methodvalue="PUT"/>
<!-- ToDo Replace [local.organization.identifier] with the DSF identifier of your local organization -->
<urlvalue="OrganizationAffiliation?primary-organization:identifier=http://highmed.org/sid/organization-identifier|medizininformatik-initiative.de&participating-organization:identifier=http://highmed.org/sid/organization-identifier|[local.organization.identifier]"/>
</request>
</entry>
</Bundle>
The text was updated successfully, but these errors were encountered:
Thanks for filing this issue and sorry for the late reply.
You are most certainly right about this. However, for the record, please let me try to explain what made us go that route:
Creating resources within the system that are not primarily part of the executed task (running a query) can safely be referred to as configuration. When it comes to configuration, it should be easy to get a grasp of what the deployed state's going to be. To achieve this it would be best to have these configuration files (a bundle.xml in our case) being present and under version control. Kind of like "infrastructure as code", but for the initial setup. Using this approach could come in handy in case of a disaster recovery.
This is where your valid point comes into play and invalidates the intentions mentioned above.
Yes, we don't have a single bundle.xml, simply because we are just providing a plugin and need to factor in already deployed solutions. They will have their own configurations, no matter how they get provisioned. Thus, having a single file is just not possible. Furthermore, we can agree on that the previously mentioned initial setup is always present since it is backed up by non-ephemeral storage.
All in all, I would follow your proposal and provide some kind of utility allowing for easy creation of a transaction bundle (maybe based off of a template of some sort).
In the Wiki Page DSF Middleware Setup a procedure to modify the
bundle.xml
file located at/opt/fhir/conf/bundle.xml
is described. Since the file provided by the linked install guides is synchronized to the DSF release and NUM-CODEX systems, modifying this file is not recommended. It actually has a comment in it saying:Please provide a stand-alone FHIR transaction Bundle to your users with conditional update commands for adding the necessary MII/FDPG allowlist entries to an existing DSF installation.
Since you would need to establish some kind of on-boarding process anyway (the linked form does not exists), in which you would need to ask organizations for their current client certificate thumbprint, endpoint URL and so forth, you would be able to send a stand-alone, organization specific Bundle to your users in return.
Transaction Bundles can be executed against the DSF FHIR Server at runtime, for example using a
curl
command. Note: Since all references between allow-list resources (Organization, Endpoint, OrganizationAffiliation) need to be literal references, you will need to use conditional references when referencing the local organization and endpoint inside the transaction Bundle.A general MII/FDPG allowlist bundle could look like this, although I would recommend providing users with a customized file:
The text was updated successfully, but these errors were encountered: