FHIR Chat · CodeSystem vs. ValueSet · german (d-a-ch)

Stream: german (d-a-ch)

Topic: CodeSystem vs. ValueSet


view this post on Zulip Christian Nau (Mar 26 2021 at 08:03):

Ich habe eine Verständnisfrage zu Code-Systemen und Value-Sets:
Ist es notwendig immer ein Value-Set zu definieren, auch wenn dieses einfach nur alle Codes des Code-Systems enthält?
Oder kann man in einem CodeableConcept beim System auch nur das Code-System angeben?
Mein Verständnis ist, dass die Verwendung von Value-Sets eher auf komplexere Code-Systeme abziehlt, bei denen Codes wiederverwendet werden.
Oder ist es "good practice"/"nice to have" immer ein Value-Set zu definieren?

Gibt es etwas im Rahmen dieser Frage zu beachten, wenn sich Inhalte des Code-Systems aktualisieren respective erweitern?

view this post on Zulip Mareike Przysucha (Mar 26 2021 at 11:16):

Wenn man es von der Seite "Was ist ein ValueSet, was ist ein Codesystem" betrachtet, liegt die Antwort bei: Mach ein ValueSet. Der Vorteil ist, dass bei den Profilen genauer gesagt werden kann, wie stark dieses gebunden ist: example, preferred, extensible, required. Außerdem können andere das ValueSet ebenfalls verwenden und es kann vermutlich auch besser geprüft werden, ob ein Code "zulässig" ist. Auch kann es schneller um Codes aus einem weiteren CS erweitert werden.
Wenn man es von der Seite betrachtet: "hier ist VS = CS", dann geht natürlich auch die Variante "Ich schreibe die CS-URL ins system und sage über die Kardinalität, ob es sein muss oder nicht, jedenfalls bei Slices". Ich habe das aktuell z.B. beim ePflegebericht so gemacht, mir wurde dann aber im Rahmen des Ballots von einem Kliniker gesagt, dass er lieber die ValueSets hätte, da er diese besser verstehen könne.

Mein Fazit für mich: Lieber VS bauen und einbinden, selbst wenn nur ein CS enthalten ist und dieses komplett.

view this post on Zulip Mareike Przysucha (Mar 26 2021 at 11:17):

Ich erhebe aber keinen Anspruch auf Korrektheit, das ist meine Meinung.

view this post on Zulip Christian Nau (Mar 26 2021 at 11:37):

Danke für deine Meinung @Mareike Przysucha

view this post on Zulip Christof Gessner (Mar 26 2021 at 12:57):

Christian Nau said:

Oder kann man in einem CodeableConcept beim System auch nur das Code-System angeben?

Kleiner Hinweis: In CodeableConcept wird immer das CodeSystem angegeben, auch falls in einem Profil ein Value Set genutzt wird. Das value set beschränkt lediglich die Auswahl, welche Konzepte an der Stelle verwendbar sind.

view this post on Zulip Mareike Przysucha (Mar 26 2021 at 13:01):

Ich denke, es geht darum, im Profil im CodeableConcept das system fest vorzugeben als Alternative zum ValueSet-Binding.

Beispiel: Ich möchte eine Condition mit einem ICD-10-GM Code, aber mir ist egal, welcher. Mache ich ein VS mit allen Codes aus dem Codesystem, oder schreibe ich unter code fest, dass coding.system die canonicalURL von ICD-10-GM ist? Beides geht, aber ersteres wäre vielleicht eleganter.

view this post on Zulip Alexander Kiel (Mar 26 2021 at 13:04):

Wenn man kein ValueSet-Binding angibt, können aber meines Wissens nach die Codes nicht validiert werden. Wenn ich nur das system im Coding fest setze, sagt das ja nichts darüber aus, ob die Werte in code auch im CodeSystem vorhanden sind.

view this post on Zulip Simone Heckmann (Mar 26 2021 at 13:20):

Korrekt, in dem Fall findet außer einem String-Vergleich auf system keine weitere Validierung des Codes statt.
Machen wir in den Basisprofilen zum Beispiel dann, wenn wir zwar aussagen wollen, dass eine bestimmte Terminologie verwendet werden soll, uns diese aber gar nicht vollständig bekannt ist (z.B. PZN) und folglich gar keine Validierung möglich ist. In solchen Fällen empfiehlt es sich mit Hilfe einer matches('pattern')-Invariante auf value zumindest die sytaktische Korrektheit des Codes zu überprüfen.

view this post on Zulip Christian Nau (Mar 26 2021 at 13:21):

Danke für den Hinweis @Christof Gessner .
@Alexander Kiel Oh das ist dann der entscheidende Punkt für mich: Ich muss die resourcen gegen die Profile validieren können, welche ein bestimmtes Code-System (und offensichtlich auch ein Value-Set) referenzieren.

view this post on Zulip Mareike Przysucha (Mar 26 2021 at 13:21):

@Alexander Kiel Das hatte ich auch vermutet, daher meine entsprechende Einschränkung oben. Danke für die Klarstellung!

view this post on Zulip Christian Nau (Mar 26 2021 at 13:22):

Ah ok. Das mit der Validierung war mir so nicht bewusst. Dann werde ich in jedem Fall für alle bekannten Codes auch ValueSets einsetzen. Danke!

view this post on Zulip Christian Nau (Mar 26 2021 at 13:26):

Noch eine Frage:
Angenommen ich habe eine Observation die mit LOINC codiert werden soll. Wenn ich kein Profil hinterlege, gegen welches ValueSet wird dann dort validiert?
Nur der String-Vergleich auf system kann es in dem Fall nicht sein (zumindest bei HAPI / SmileCDR) @Simone Heckmann. Dort habe ich bereits Fehler bei der Validierung erhalten, wenn ich für LOINC kein CodeSystem installiert/hinterlegt hatte.

view this post on Zulip Simone Heckmann (Mar 26 2021 at 13:27):

Observation.code wird gar nicht validiert, da es im Core nur eine Example-Binding gibt, was so viel heißt wie "macht, was ihr wollt".

view this post on Zulip Simone Heckmann (Mar 26 2021 at 13:30):

Ah, es kann sein, dass es bei HAPI noch eine zusätzliche Kontrolle gibt, die Prüft, ob der Code im CodeSystem vorhanden ist. (zumindest ist uns das schon aufgefallen, wenn wir Bindings an ein expandetes ValueSet hatten, für das es aber kein zugrunde liegendes CodeSystem gab). Ob dieser Mechanismus auch getriggert wird, wenn man nur einen fixed value auf system setzt, kann ich gerade auswendig nicht sagen.
Der .NET-Validator macht das jedenfalls nicht...

view this post on Zulip Simone Heckmann (Mar 26 2021 at 13:31):

@Patrick Werner ...?

view this post on Zulip Christian Nau (Mar 26 2021 at 13:31):

@Patrick Werner hat das vielleicht etwas damit zu tun? https://github.com/hapifhir/hapi-fhir/issues/2489

view this post on Zulip Patrick Werner (Mar 26 2021 at 16:41):

der Java Validator validiert jedes Coding gegen das System (falls er es kennt)

view this post on Zulip Patrick Werner (Mar 26 2021 at 16:42):

Christian Nau said:

Patrick Werner hat das vielleicht etwas damit zu tun? https://github.com/hapifhir/hapi-fhir/issues/2489

das ist ein hapi spezifisches Verhalten, ich erstelle gerade einen PR der dies behebt, bzw. einstellbar macht

view this post on Zulip Patrick Werner (Mar 26 2021 at 16:44):

Generell zur Diskussion:
Falls kein Profil gesetzt wird in hapi gegen das CodeSystem validiert. Aktuell mit Error falls keine ValidationModul das CS kennt.
Java Validator und hapi haben unterschiedliche Terminologievalidierungsklassen und Verhalten. Der Java Validator nutzt tx.fhir.org, hapi hat einen eigenen, internen Terminologievalidator. Der Java Validator gibt mittlerweile auch keine Errors mehr aus für unknown CS.

Es empfiehlt sich eigentlich immer Profile zu erstellen gegen welche man validiert. In Profilen werden immer und ausschließlich ValueSets gebunden.

view this post on Zulip Patrick Werner (Mar 26 2021 at 16:45):

Einen UseCase bei dem bei einer Observation nur gegen Loinc geprüft wird kann ich mir nicht vorstellen, man sollte innerhalb eines use-cases eigentlich fast immer auf eine explizite, oder mittels Filtern definierte Liste an Concepts kommen.

view this post on Zulip Christian Nau (Mar 26 2021 at 16:49):

Ok.
Wenn Profile eingesetzt werden (empfohlen) -> Value Sets unumgänglich
Wenn keine Profile eingesetzt werden -> Validierung gegen Code-System (bei HAPI)
Danke an alle!


Last updated: Apr 12 2022 at 19:14 UTC