Healthcare/ISiK, Germany
National program

gematik ISiK FHIR integration in Germany

ISiK is the FHIR interface German hospitals are required to expose. This guide covers what it mandates, which modules exist and how to consume ISiK endpoints from Python.

§373SGB V mandate
R4FHIR version
7ISiK modules
isik_patient_search.py
# -*- coding: utf-8 -*-

# Zato
from zato.server.service import Service

class ISiKPatientSearch(Service):
    name = 'demo.isik.patient-search'

    def handle(self) -> 'None':

        # An ISiK Basismodul endpoint,
        # OAuth tokens are managed for you
        client = self.fhir['FHIR.ISiK']

        patients = client.resources('Patient').search(
            family = 'Fuchs',
            birthdate = '1980-01-15',
        )

        for patient in patients.fetch():
            self.logger.info('Found %s', patient['id'])

What is ISiK and who must implement it?

ISiK - Informationstechnische Systeme in Krankenhäusern - is gematik's mandatory FHIR-based interface standard for German hospitals, required by §373 SGB V. Hospital primary systems must expose clinical data as FHIR resources over a REST API so that other systems - apps, departmental systems, integration platforms - can consume them in a vendor-neutral way.

The obligation sits with the hospital systems - they are the FHIR servers. All other systems act as clients, which is the role an integration platform performs. ISiP is the analogous gematik standard for nursing care (Pflege).

Which ISiK modules and FHIR version apply?

ISiK is built on FHIR R4 (4.0.1) and organized in modules, each a set of profiles for one domain, released in stages (Stufen).

ModuleScope
BasisPatient, Encounter, Condition, Procedure - the demographics and visit core
TerminplanungAppointment scheduling
VitalparameterVital signs as Observations
MedikationMedication data
LaborLaboratory reports and results
DokumentenaustauschDocument exchange
ConnectConnectivity and authorization for consuming systems

How do I query an ISiK Basismodul endpoint from Python?

An ISiK endpoint is a FHIR R4 server, so an outgoing FHIR connection pointed at it is the only setup required - with the ISiK Connect module using OAuth-style authorization, attach an OAuth security definition to the connection and tokens are obtained and refreshed for you.

isik_basismodul.py
# -*- coding: utf-8 -*-

# Zato
from zato.server.service import Service

class ISiKBasismodul(Service):
    name = 'demo.isik.basismodul'

    def handle(self) -> 'None':

        # The connection holds the OAuth definition,
        # nothing about tokens appears in code
        client = self.fhir['FHIR.ISiK']

        # Search for a patient by demographics ..
        patient = client.resources('Patient').search(
            family = 'Fuchs',
            given = 'Julia',
            birthdate = '1980-01-15',
        ).first()

        self.logger.info('Patient: %s', patient['id'])

        # .. and read the encounters that point at them.
        encounters = client.resources('Encounter').search(
            subject = f'Patient/{patient.id}',
        )

        for encounter in encounters.fetch():
            self.logger.info('Encounter: %s', encounter['id'])

German profiles hold their identifiers in extensions and slices - reading them is path access with matchers, e.g. patient.get_by_path(['identifier', {'system': 'http://fhir.de/sid/gkv/kvid-10'}, 'value']) for the insurance number.

What does Zato do here and what does it not?

Zato is the client that consumes and feeds ISiK endpoints - it queries hospital FHIR servers, transforms data and connects everything that does not speak FHIR itself, including HL7 v2 feeds over MLLP.

gematik's ISiK confirmation procedure (Bestätigungsverfahren) certifies the hospital primary system - the FHIR server side - not the clients that connect to it. Zato does not host a FHIR server and does not perform FHIR profile validation - the ISiK server validates resources against its profiles.

Frequently asked questions

ISiK is released in stages - Basis Stufe releases with successive scope, each with transition periods for hospital systems to implement. The current stage requirements and dates are published by gematik, and enforcement in practice follows the certification of the primary systems.

No - the ePA is the national electronic patient record, ISiK is the FHIR interface inside hospitals. They are separate gematik specifications, and hospital systems typically must support both.

German, published on gematik's Simplifier pages - the FHIR profiles themselves are standard R4 artifacts, so a FHIR client consumes them regardless of the specification language.

Yes - receive v2 over MLLP channels, transform in Python and either write to a FHIR server or answer FHIR-shaped REST queries directly, as the FHIR facade guide shows.

Ready to connect to ISiK endpoints?

Get started with Zato and query your first German hospital FHIR API in minutes.

Open source In Python