Skip to content

Commit ee6a9c5

Browse files
Merge pull request #110 from gematik/gematik/feature/api_design_rational
Add documentation to explain the api design rationale
2 parents 5cc41c1 + f199326 commit ee6a9c5

3 files changed

Lines changed: 38 additions & 1 deletion

File tree

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,10 @@ Wie oben erwähnt, wird das VSDM 2.0 auf die Verwendung einer RESTful FHIR-API r
132132

133133
[vsdm2.yaml](./src/openapi/vsdm2.yaml).
134134

135+
Zusätzliche Informationen zu Design-Entscheidungen und Abweichungen vom FHIR-Standard finden Sie hier:
136+
137+
[API Design & FHIR-Konformität](docs/vsdm_api_design.md)
138+
135139

136140

137141
# Kontakt

docs/vsdm_api_design.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Design-Rationale und FHIR-Konformität
2+
3+
Die VSDService-API verwendet einen von Standard-FHIR abweichenden Endpunkt-Ansatz:
4+
5+
## Standard FHIR REST Pattern
6+
* `GET /fhir/Bundle/{id}` (Zugriff mit expliziter ID)
7+
* `GET /fhir/Bundle?identifier=...` (Suche nach Identifier)
8+
9+
## VSDM2 Pattern
10+
* `GET /vsdservice/v1/vsdmbundle` (Fester Endpunkt ohne ID)
11+
12+
## Begründung für diese Abweichung
13+
14+
1. **Sicherheit:** Die KVNR erscheint nicht in der URL und wird daher nicht in Server-Logs oder Monitoring-Systemen erfasst.
15+
2. **Versorgungskontext-basiert:** Der Zugriff ist an den im PoPP-Token manifestierten Versorgungskontext gebunden. Die Identifikation erfolgt über die im PoPP-Token enthaltene KVNR.
16+
3. **Singleton-Semantik:** Pro authentifiziertem Versicherten existiert genau ein aktuelles VSDMBundle. Eine ID-basierte Adressierung ist nicht erforderlich.
17+
4. **Vereinfachung:** Clients müssen keine Resource-IDs konstruieren oder verwalten. Der Versorgungskontext bestimmt eindeutig, welches VSDMBundle zurückgegeben wird.
18+
19+
Trotz dieser Abweichung vom Standard-FHIR-Pattern handelt es sich bei `/vsdservice/v1/vsdmbundle` um eine FHIR Resource (`VSDMBundle`) mit Standard-Resource-Semantik (ETag, If-None-Match, HTTP 304, etc.).

src/openapi/vsdm2.yaml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,21 @@ paths:
5959
tags:
6060
- Vsdm
6161
summary: Returns a VSDMBundle for the specified patient.
62-
description: Returns a VSDMBundle with VSD about a specific patient that is addressed within the PoPP-Token in the request header.
62+
description: |
63+
Returns a VSDMBundle with VSD about a specific patient that is addressed within the PoPP-Token in the request header.
64+
65+
**FHIR DEVIATION NOTICE:**
66+
This endpoint deviates from standard FHIR REST patterns:
67+
- Standard FHIR: GET /Bundle/{id}
68+
- VSDM2: GET /vsdservice/v1/vsdmbundle (no ID in path)
69+
70+
**Rationale:**
71+
- Security: Patient KVNR is not exposed in URL
72+
- Context-based: Patient identified via KVNR in PoPP token header
73+
- Singleton: Exactly one current VSDMBundle per patient
74+
75+
Despite this deviation, VSDMBundle remains a FHIR Resource with
76+
standard resource semantics (ETag, conditional requests, etc.).
6377
operationId: getVSDMBundle
6478
security:
6579
- oAuthVsdm: [ vsdservice ]

0 commit comments

Comments
 (0)