diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 44060071e..4c241cd1a 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -3,7 +3,7 @@ name: docs on: # trigger build on every PR phase pull_request: - types: [opened, reopened, review_requested] + types: [opened, synchronize, reopened, review_requested] # trigger deployment manually workflow_dispatch: diff --git a/docs/src/.vuepress/public/llms-full.txt b/docs/src/.vuepress/public/llms-full.txt index 13352a176..cc62262df 100644 --- a/docs/src/.vuepress/public/llms-full.txt +++ b/docs/src/.vuepress/public/llms-full.txt @@ -11,13 +11,13 @@ The [German Federal Ministry of Research, Technology and Space](https://www.bmft ![MII =300x150](/photos/learnmore/funding/mii.png) -The **Data Sharing Framework (DSF)** was developed within the HiGHmed consortium of the Medical Informatics Initiative and is now funded as an independent project by the German Federal Ministry of Research, Technology and Space within the Medical Informatics structure as *[DSF Community](https://www.gesundheitsforschung-bmbf.de/de/dsf-medizininformatik-struktur-data-sharing-framework-community-16133.php)*. +The **Data Sharing Framework (DSF)** was developed within the HiGHmed consortium of the Medical Informatics Initiative and is now funded as an independent project by the German Federal Ministry of Research, Technology and Space within the Medical Informatics structure as *[DSF Community](https://www.gesundheitsforschung-bmftr.de/de/dsf-medizininformatik-struktur-data-sharing-framework-community-16133.php)*. The DSF is a concept for a secure middleware to distribute data sharing processes, aiming to extract, merge, pseudonymize and provide data stored in multiple distributed DICs. A researcher can use the DSF for example to submit feasibility queries to several DICs and thus has the opportunity to obtain sufficient data from different locations for his or her research. By using international standards such as FHIR and BPMN 2.0, the problem of heterogeneous data models, primary systems, architectures and federated legislation between DICs can be solved. The aim is to enable secure and syntactically-, semantically- and process-interoperable data exchange across organisational boundaries. ![DSF concept](/photos/info/introduction/dsf-concept.png) -The DSF is a secure communication infrastructure, that (1) scales with communication relationships, (2) orchestrates processes and instances, (3) separates execution logic from program code, (4) enables automated and user-centeric process steps ​(5) and can be used for heterogeny structures. +The DSF is a secure communication infrastructure, that (1) scales with communication relationships, (2) orchestrates processes and instances, (3) separates execution logic from program code, (4) enables automated and user-centric process steps ​(5) and can be used for heterogeneous structures. ![Federated data exchange between distributed DICs (CRP=Central Research Portal, DMU=Data Management Unit) =500x320](/photos/info/introduction/dic-structure.png) @@ -26,7 +26,7 @@ The DSF is a secure communication infrastructure, that (1) scales with communic ## Basics Source: https://dsf.dev/explore/concepts/basics.html -Here you can find some basic information about interoperability and the standards were using within the DSF before we go into details about the architecture. Here we only describe how the standards (FHIR and BPMN) are used within the DSF. If you want to gain a deeper knowledge of the standards, we recommend visiting these websites: [HL7 FHIR](https://www.hl7.org/fhir/) and [BPMN](https://www.bpmn.org/) +Here you can find some basic information about interoperability and the standards we're using within the DSF before we go into details about the architecture. Here we only describe how the standards (FHIR and BPMN) are used within the DSF. If you want to gain a deeper knowledge of the standards, we recommend visiting these websites: [HL7 FHIR](https://www.hl7.org/fhir/) and [BPMN](https://www.bpmn.org/) ## Interoperability Interoperability is the ability of different systems to work together as seamlessly as possible. We can divide interoperability into four levels. @@ -108,7 +108,7 @@ You can find more information about the network setup [here](/explore/concepts/n ## Security Source: https://dsf.dev/explore/concepts/security.html -## Basics Security +## Security Basics The open-source Data Sharing Framework is EU-GDPR compliant and meets the highest security standards by design. DSF FHIR servers only accept certain FHIR resources from internal systems/administrators (e.g. tasks, binary resources...). In addition, the communication partners are defined via Allow Lists. This means that an organisation can only communicate with organisations that are included in the allow list of approved organisations of the participating organisations. More information about allow lists can be found in the [next chapter](allow-list). For transport encryption, the TLS protocol is used. Secure Web Socket (WSS) connections provide security for the connection between the DSF FHIR server (DMZ) and the BPE (internal network). In addition, the DSF is being actively developed and there is an excellent community, both of which guarantee fast security patches. @@ -117,7 +117,7 @@ For transport encryption, the TLS protocol is used. Secure Web Socket (WSS) conn ![Certificates](/photos/info/security/certificates-dark.svg#dark) ## Authentication -Authentication of organizations within the DSF is handled by the use of X.509 client and server certificates. The DSF supports a configurable whitelist of certificate authorities. All participating organizations are entered in a distributed and synchronized allow-list of valid organizations and certificates. +Authentication of organizations within the DSF is handled by the use of X.509 client and server certificates. The DSF supports a configurable allow list of certificate authorities. All participating organizations are entered in a distributed and synchronized allow-list of valid organizations and certificates. A webserver certificate is needed to run the FHIR endpoint and a 802.1X client certificate is used to authenticate against other organizations endpoints and as a server certificate for the business process engine. @@ -132,9 +132,9 @@ Source: https://dsf.dev/explore/concepts/allow-list.html The main objective is to allow only authorized organizations to do what "we" allow them to do (e.g. query data). First, we need a list of organizations that we trust. Secondly, we need a way to ensure that the other party is a member of the parent organization. Thirdly, a list of actions we want to allow the organization to perform is needed. An organization can have different roles in different use cases. -The Allow List consists of Organization-, Endpoint- and OrganisationAffiliation- resources. With these resources the allow list defines communication partners and and parent organizations like research consortia and groups as well as the roles of each organization. Each DSF FHIR server stores their own allow list. To make sure that processes can be executed, parties must allow access via their allow list. +The Allow List consists of Organization-, Endpoint- and OrganisationAffiliation- resources. With these resources the allow list defines communication partners and parent organizations like research consortia and groups as well as the roles of each organization. Each DSF FHIR server stores their own allow list. To make sure that processes can be executed, parties must allow access via their allow list. -## Allow List Managment +## Allow List Management [Here](/operations/latest/allowList-mgm.md) you can read all the information if you want to create or update an Allow List. If you have the need for allowlist management feel free to contact us via E-Mail (dsf-gecko@hs-heilbronn.de) and we will take care of your request as soon as possible. @@ -205,26 +205,26 @@ blablabla ## Network Setup Source: https://dsf.dev/explore/concepts/network-setup.html -The Data Sharing Framework consists of two components: A FHIR Endpoint Server used to except Task resources and provide resources for download by other organizations and a Business Process Engine Server run internal and not accessible by other organization to execute and coordinate processes. +The Data Sharing Framework consists of two components: A FHIR Endpoint Server used to accept Task resources and provide resources for download by other organizations and a Business Process Engine Server run internal and not accessible by other organization to execute and coordinate processes. -![Network Setup Diagramm](/photos/guideline/generalInformation/highmed_dsf_network_setup.svg) +![Network Setup Diagram](/photos/guideline/generalInformation/highmed_dsf_network_setup.svg) -- FHIR Reverse Proxy: The FHIR Reverse Proxy is used to terminate incoming https connections to the FHIR App Server. The Reverse Proxy needs to be accessible on port 443 from the internet. Incoming https connection will be delegate as http on a docker internal network to the FHIR App Server. +- FHIR Reverse Proxy: The FHIR Reverse Proxy is used to terminate incoming https connections to the FHIR App Server. The Reverse Proxy needs to be accessible on port 443 from the internet. Incoming https connection will be delegated as http on a docker internal network to the FHIR App Server. - FHIR App Server: The FHIR App Server is used as a FHIR Endpoint for incoming Task resources and providing resources for download by other organizations. In order to validate incoming FHIR resources the server will communicate with FHIR Servers at other organizations. Access to resources and authorization for creating or updating resources is granted based on the content of the resource and/or based on the client (identified by its client certificate) being part of an allow list. JDBC connections to the FHIR DB Server - FHIR DB Server: PostgreSQL database for the FHIR App Server. -- BPE App Server: The BPE App Server is executing BPMN 2.0 business processes with the included business process engine. Automatic BPMN service tasks are used for example to check resource, access the PDP- and MPI-servers as well as the MDAT repository. The calculation of record linkage bit vectors (Record Bloom Filters) is also performed using an automatic service task. As of version 0.3.0 the BPE server does not provide any webservices for modifying an server resources. +- BPE App Server: The BPE App Server is executing BPMN 2.0 business processes with the included business process engine. Automatic BPMN service tasks are used for example to check resource, access the PDP- and MPI-servers as well as the MDAT repository. The calculation of record linkage bit vectors (Record Bloom Filters) is also performed using an automatic service task. The BPE server does not provide any webservices for modifying server resources. - BPE DB Server: PostgreSQL database for the BPE App Server. - PDP: IHE Policy Decision Point for deciding on patient consent. - MDAT Repo: Repository (e.g. openEHR) for storing medical data (MDAT). -- MPI: IHE Master Patient Index for storing identifying patient date (IDAT) e.g. first name, last name, date of birth. +- MPI: IHE Master Patient Index for storing identifying patient data (IDAT) e.g. first name, last name, date of birth. - Cohort Browser: Example for a system to trigger patient cohort size estimations across multiple organizations. -More information on Client- and Server-Certificates are available on the dedicated wiki page: [Authentication: Client/Server Certificates](Authentication) +More information on Client- and Server-Certificates can be found in the [Security](security) section. ## Additional Reverse Proxy in external DMZ In some organizations an additional reverse proxy in an external DMZ is needed. This can be accomplished by using for example nginx or haproxy as a TCP-Proxy. Example configurations routing traffic using SNI can be found below. Configuring an additional reverse proxy to terminate the incoming TLS connection early is not recommended. -![Network Setup Diagramm](/photos/guideline/generalInformation/highmed_dsf_network_setup_ext_dmz.svg) +![Network Setup Diagram](/photos/guideline/generalInformation/highmed_dsf_network_setup_ext_dmz.svg)