Maintenance Basis
f-peverali opened this issue · comments
Stufe 3
- SUSHI Version erhöhen
- Validierungsfehler prüfen
- Use slice name instead of numeric index access
- Fix eventual errors
Vergleiche ggf. mit Terminplanung : gematik/spec-ISiK-Terminplanung#128
@ylboerner könntest Du mir hier helfen? Was ist beim Indexing hier schief gelaufen:https://github.com/gematik/spec-ISiK-Basismodul/actions/runs/6785351346/job/18443470959#step:3:223
Hätte ich das für die Examples nicht nutzen dürfen?
@f-peverali Gerne helfe ich.
Fall 1: Kein definiertes Slicing
Für diesen Fall (den zweiten erkläre ich weiter unten) können wir uns den ersten Fehler direkt als Beispiel nehmen:
* identifier[Berichtnummer].type = $v2-0203#FILL
* identifier[Berichtnummer].system = "https://fhir.krankenhaus.example/sid/system-a/berichtnummer"
* identifier[Berichtnummer].value = "0123456789"
Wir greifen mit diesen drei Zeilen auf einen Slice zu, der im Profil nicht definiert ist. Tatsächlich ist in dem Profil für ISiKBerichtSubsysteme
kein einziger Slice auf identifier
definiert. Daher gibt SUSHI hier direkt folgende Fehlermeldungen aus:
error The element or path you referenced does not exist: identifier[Berichtnummer].type
File: /home/runner/work/spec-ISiK-Basismodul/spec-ISiK-Basismodul/Resources/input/fsh/ISiKBerichtSubSysteme.fsh
Line: 70
error The element or path you referenced does not exist: identifier[Berichtnummer].system
File: /home/runner/work/spec-ISiK-Basismodul/spec-ISiK-Basismodul/Resources/input/fsh/ISiKBerichtSubSysteme.fsh
Line: 71
error The element or path you referenced does not exist: identifier[Berichtnummer].value
File: /home/runner/work/spec-ISiK-Basismodul/spec-ISiK-Basismodul/Resources/input/fsh/ISiKBerichtSubSysteme.fsh
Line: 72
Wir können diesen Fehler recht einfach fixen, indem wir '+' und '=' verwenden, anstatt nicht existierende Slice Namen oder Indizes:
* identifier[+].type = $v2-0203#FILL
* identifier[=].system = "https://fhir.krankenhaus.example/sid/system-a/berichtnummer"
* identifier[=].value = "0123456789"
Fall 2: Unbekannter Slice
In diesem Fall ist zwar ein Slicing definiert, aber der Slice ist unbekannt. Ein Beispiel dafür ist ISiKPersonImGesundheitsberuf
mit folgendem Fehler:
error The element or path you referenced does not exist: identifier[ArztnummerKBV].type
File: /home/runner/work/spec-ISiK-Basismodul/spec-ISiK-Basismodul/Resources/input/fsh/ISiKPersonImGesundheitsberuf.fsh
Line: 96
error The element or path you referenced does not exist: identifier[ArztnummerKBV].system
File: /home/runner/work/spec-ISiK-Basismodul/spec-ISiK-Basismodul/Resources/input/fsh/ISiKPersonImGesundheitsberuf.fsh
Line: 97
error The element or path you referenced does not exist: identifier[ArztnummerKBV].value
File: /home/runner/work/spec-ISiK-Basismodul/spec-ISiK-Basismodul/Resources/input/fsh/ISiKPersonImGesundheitsberuf.fsh
Line: 98
Dieser lässt sich einfach fixen, indem wir einen der Slice-Namen verwenden, die im Profil definiert sind:
* identifier contains
Arztnummer 0..* MS and
EFN 0..1 MS and
TelematikId 0..1 MS
Mit dem Slice 'Arztnummer' sieht das Beispiel dann wie folgt aus:
* identifier[Arztnummer].type = $v2-0203#LANR
* identifier[Arztnummer].system = "https://fhir.kbv.de/NamingSystem/KBV_NS_Base_ANR"
* identifier[Arztnummer].value = "123456789"
@ylboerner siehst du überhaupt den Bedarf die numeric indexes zu prüfen/überarbeiten? Im Pipeline-Durchlauf (https://github.com/gematik/spec-ISiK-Basismodul/actions/runs/6784977127/job/18442329679) sehe ich dazu weder warnings noch errors. Ich war da einfach vorschnell mit dem PR (der ist jetzt gelöscht).
@f-peverali
noch ein Hinweis zu named slicing: Pattern oder fixed values werden automatisch in Instanzen übernommen. Auf das obere Beispiel bezogen kann man dann den type weglassen, sushi setzt diesen dann beim Processen.
* identifier[Arztnummer].system = "https://fhir.kbv.de/NamingSystem/KBV_NS_Base_ANR"
* identifier[Arztnummer].value = "123456789"