Skip to content

Latest commit

 

History

History
229 lines (188 loc) · 6.89 KB

File metadata and controls

229 lines (188 loc) · 6.89 KB

Interface Specification Addressing Register - Find Endpoints [ITI-90]

Disclaimer

This project and all associated code serve solely as documentation and demonstration purposes to illustrate potential system communication patterns and architectures.

This codebase:

  • Is NOT intended for production use
  • Does NOT represent a final specification
  • Should NOT be considered feature-complete or secure
  • May contain errors, omissions, or oversimplified implementations
  • Has NOT been tested or hardened for real-world scenarios

The code examples are only meant to help understand concepts and demonstrate possibilities.

By using or referencing this code, you acknowledge that you do so at your own risk and that the authors assume no liability for any consequences of its use.

Context

The GFModules project is a collection of applications that have the purpose of improving data exchange process between healthcare providers. The project is the technical implementation of various components of the 'Generieke Functies, lokalisatie en addressering' project of the Ministry of Health, Welfare and Sport of the Dutch government.

The Addressing Register holds information about various Health Data endpoints that are available for fetching the metadata. The information of the Addressing Register should be enough for the Timeline Service or the Health application to fetch the actual metadata.

This interface description can be found at the github repository.

Summary

This interface enables applications in the Healthcare Provider domain to fetch Health Data endpoints (seeProcess). This interface is build on the HL7 FHIR Release 4 specification in combination with the mCSD extension for the ITI-90 profile.

Find Endpoints

Process

This interface is used in the following processes:

Authentication

All endpoints that are described here are only accessible behind mTLS.

Finding Endpoints

Finding Health Data endpoints is a two step process based on the mCSD extension for the ITI-90 profile where the first step involves retrieving a FHIR bundle of Organization resources from the Addressing Register based on query parameters, and secondly retrieves an Endpoint FHIR Resource that contains the addresses belonging to that specific Organizations.

The protocol is shown in the image below, the Consumer is the application that wants to fetch the metadata from the Health Data endpoint and the Provider is the Addressing Register.

mCSD ITI-90

Depending on which step of the process is being executed, the following endpoints are available:

Organization

The Organization endpoint is used to retrieve a bundle of Organization resources from the Addressing Register based on query parameters. The parameters as defined in ITI-90 are used to filter Organizations that are then returned in a Bundle.

Path http{s}://server{/path}/Organization
Type GET
Query Parameters _id, _lastUpdated, active, identifier, name, partOf, type, _include, _revInclude
JSON payload
Response codes 200, 422

Example CURL request:

curl -X 'GET' \
  'http://localhost:8502/Organization?active=True&name=sample_org&type=govt&_include=Organization.endpoint' \
  -H 'accept: application/json'

Example response:

{
  "resourceType": "Bundle",
  "type": "searchset",
  "total": 1,
  "entry": [
    {
      "resource": {
        "resourceType": "Organization",
        "identifier": [
          {
            "use": "usual",
            "value": "5816461b-646a-45a7-be39-280f17cd82c8"
          },
          {
            "use": "official",
            "value": "78001448"
          }
        ],
        "active": true,
        "type": [
          {
            "coding": [
              {
                "code": "govt",
                "display": "Government"
              }
            ],
            "text": "type of organization"
          }
        ],
        "name": "Mol BV",
        "endpoint": [
          {
            "reference": "Endpoint/2507f188-9f3a-4149-a2b2-ffd99be303ad"
          }
        ]
      }
    }
  ]
}

Endpoint

The Endpoint endpoint is used to retrieve a list of Endpoint resources from the Addressing Register based on query parameters. The parameters as defined in ITI-90 are used to filter Endpoints that are then returned in a Bundle.

Path http{s}://server{/path}/Endpoint
Type GET
Query Parameters _id, _lastUpdated, identifier, organization, status
JSON payload
Response codes 200, 422

Example CURL request:

curl -X 'GET' \
  'http://localhost:8502/Endpoint?organization=5816461b-646a-45a7-be39-280f17cd82c8' \
  -H 'accept: application/json'

Example response:

{
  "resourceType": "Bundle",
  "type": "searchset",
  "total": 1,
  "entry": [
    {
      "resource": {
        "resourceType": "Endpoint",
        "identifier": [
          {
            "use": "usual",
            "value": "2507f188-9f3a-4149-a2b2-ffd99be303ad"
          }
        ],
        "status": "error",
        "connectionType": {
          "code": "dicom-wado-rs",
          "display": "DICOM WADO-RS"
        },
        "name": "Dan grens op leven.",
        "managingOrganization": {
          "reference": "Organization/78001448"
        },
        "contact": [
          {
            "system": "fax",
            "value": "Over anders eenheid voeden.",
            "use": "temp",
            "rank": "3",
            "period": {
              "start": "2020-09-29T16:53:01.128919",
              "end": "2022-09-01T15:16:09.077672"
            }
          }
        ],
        "payloadType": [
          {
            "coding": [
              {
                "code": "any",
                "display": "ANY"
              }
            ],
            "text": "type of the payload for the endpoint"
          }
        ],
        "payloadMimeType": [
          "application/xop+xml"
        ],
        "address": "http://www.oennen.com/",
        "header": [
          "Meest dichtbij klasse min verandering."
        ]
      }
    }
  ]
}