Skip to content

The repository contains a proof of concept (POC). The POC demonstrates how a FHIR subscription can be used to inform about happened merges within the ISIK context.

License

Notifications You must be signed in to change notification settings

gematik/poc-isik-patient-merge

Repository files navigation


Prove of Concept for ISiK Patient merge

About the Project

This POC aims to prove a Patient merge Notification based on FHIR Subscription Topics (see Subscriptions R5 Backport).

Only REST-hook subscriptions are mandatory in ISiK and have been implemented in this POC

Handshake

When a new subscription is created with status requested, the server immediately sends a handshake notification to the subscriber’s endpoint.

  • If the handshake succeeds (2xx HTTP response), the subscription is activated (status=active).
  • If it fails (connection error or non-2xx response), the subscription is set to error.

This ensures that only reachable subscribers become active.

Heartbeat

For active subscriptions, the server supports heartbeat notifications according to the backport IG.

  • The heartbeat interval is read from the backport-heartbeat-period extension on the subscription channel.
  • If due, the server sends an empty notification bundle of type heartbeat to the subscriber’s endpoint.
  • This allows the client to detect broken connections even if no real events occur.

Prerequisites

  • Postman to use the Postman Collection of the poc-server
  • A rest endpoint accepting the notification bundle (POST on /Bundle)
    • this can be done with Postman:
      • Select: Mock servers, create mock server (+)
      • Request Method: POST
      • Next
      • choose a name and create the server
      • use the displayed url as the endpoint url of your subscription in step: Postman: 2. Subscribe to Patient merge topic
    • Instead of Postman, a second FHIR server can be used to store the notification bundles
      • easiest way to run another fhir server is to use the hapi-fhir docker image: docker run -p 8081:8080 -e hapi.fhir.allowed_bundle_types=COLLECTION,DOCUMENT,MESSAGE,TRANSACTION,TRANSACTIONRESPONSE,BATCH,BATCHRESPONSE,HISTORY,SEARCHSET hapiproject/hapi:latest

POC is built on top of HAPI-FHIR.

Fast Track Running locally

Using jetty

mvn clean jetty:run -U

For more information on running see HAPI-FHIR.

How to test

The following steps simulate the merge notification workflow (see Postman Collection in folder PostmanCollection):

  1. create patients which should be merged
    1. (Postman: 1. Send Patients)
  2. Subscribe to Topic: "http://hl7.org/SubscriptionTopic/patient-merge"
    1. (Postman: 2. Subscribe to Patient merge topic)
    2. modify .endpoint to your FHIR-Endpoint which should receive the notifications, Postman Postman mock-server can be used as test-endpoint
  3. trigger a patient merge $patient-mergewith source and target patient 2. (Postman: 3. merge patients)
  4. receive a notification Bundle

Known issue: if you are using the Mock Servers from Postman, a stacktrace will be shown in hapi, as the response has the content-type: text/html, and application/fhir+json or application/fhir+xml is expected. This has no impact on the delivery of the notification.

Components

Server - HAPI-Server (modified)

This extended hapi server supports a $patient-merge operation and serves as a "KIS" mock-up:

  • Patient merge operation ($patient-merge) was implemented (as MVP) and is used to trigger a patient merge
  • Support for Subscription criteria based on ...

Client - Postman

Postman Collection with examples (folder: PostmanCollection)

Contact

Team Data – ISiK and ISiP

For issues and requests please refer to: https://service.gematik.de/servicedesk/customer/portal/16

About

The repository contains a proof of concept (POC). The POC demonstrates how a FHIR subscription can be used to inform about happened merges within the ISIK context.

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 78