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.
# -*- 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'])
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).
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).
| Module | Scope |
|---|---|
| Basis | Patient, Encounter, Condition, Procedure - the demographics and visit core |
| Terminplanung | Appointment scheduling |
| Vitalparameter | Vital signs as Observations |
| Medikation | Medication data |
| Labor | Laboratory reports and results |
| Dokumentenaustausch | Document exchange |
| Connect | Connectivity and authorization for consuming systems |
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.
# -*- 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.
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.
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.
Get started with Zato and query your first German hospital FHIR API in minutes.