Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ersetzen der statischen code-lookup HashMaps durch einen TermServer-Ansatz #70

Open
chgl opened this issue Aug 13, 2024 · 5 comments
Open

Comments

@chgl
Copy link
Contributor

chgl commented Aug 13, 2024

Aktuell sind viele oBDS->FHIR coding mappings hart-codiert in HashMaps. In den neuen Onko-Profilen werden ConceptMaps definiert die diese Mappings auf FHIR-native Art abbilden: https://simplifier.net/medizininformatikinitiative-modulonkologie/~resources?category=ConceptMap

Mappings können dann via $translate-calls umgesetzt werden: https://hl7.org/fhir/R4B/conceptmap-operation-translate.html

Für die lokale Entwicklung könnte man diese in einen HAPI FHIR server laden, oder einen externen TermServer nutzen (MII?).

@pcvolkmer
Copy link
Collaborator

pcvolkmer commented Aug 13, 2024

Hier mal eine (unvollständige) Übersicht der Lookup-Klassen und den URLs zu simplifier.net, auch mit ValueSets und CodeSystems neben den ConceptMaps. An einigen Stellen sind mehr Mapping-Werte vorhanden, als in den Lookup-Klassen.

Lookup-Klasse Url
BeurteilungResidualstatusVsLookup https://simplifier.net/medizininformatikinitiative-modulonkologie/mii-vs-onko-gesamtbeurteilung-residualstatus
DisplayAdtSeitenlokalisationLookup https://simplifier.net/MedizininformatikInitiative-ModulOnkologie/mii-cs-onko-seitenlokalisation
FMLokalisationVsLookup ?
GradingLookup https://simplifier.net/medizininformatikinitiative-modulonkologie/mii-cs-onko-grading, https://simplifier.net/medizininformatikinitiative-modulonkologie/mii-cm-onko-grading-sct
JnuVsLookup ?
OPIntentionVsLookup https://simplifier.net/medizininformatikinitiative-modulonkologie/mii-vs-onko-operation-intention
OPKomplikationVsLookup https://simplifier.net/medizininformatikinitiative-modulonkologie/mii-cs-onko-operation-komplikation
SideEffectTherapyGradingLookup https://simplifier.net/medizininformatikinitiative-modulonkologie/mii-cs-onko-nebenwirkung-ctcae-grad, https://simplifier.net/medizininformatikinitiative-modulonkologie/mii-cm-onko-nebenwirkung-sct
SnomedCtSeitenlokalisationLookup https://simplifier.net/MedizininformatikInitiative-ModulOnkologie/mii-cm-onko-seitenlokalisation-sct
StellungOpVsLookup https://simplifier.net/medizininformatikinitiative-modulonkologie/mii-vs-onko-systemische-therapie-stellung
SystIntentionVsLookup https://simplifier.net/medizininformatikinitiative-modulonkologie/mii-vs-onko-systemische-therapie-intention
SYSTTherapieartCSLookup https://simplifier.net/medizininformatikinitiative-modulonkologie/mii-vs-onko-systemische-therapie-art
TnmCpuPraefixTvsLookup https://simplifier.net/medizininformatikinitiative-modulonkologie/mii-vs-onko-tnm-cp-praefix

@pcvolkmer
Copy link
Collaborator

Da für ValueSets und CodeSystems der FHIR-Op $translate nicht verfügbar ist, könnte ein Client auch die möglichen Werte laden und das Mapping selbst vornehmen.

Beispiele (curl mit JSONPath) zum Auffinden anhand des Codes:

  • ValueSet: curl -fs 'https://simplifier.net/medizininformatikinitiative-modulonkologie/mii-vs-onko-gesamtbeurteilung-residualstatus/$download?format=json' | jq '.compose.include[].concept[] | select(.code=="R0")'
  • CodeSystem: curl -fs 'https://simplifier.net/MedizininformatikInitiative-ModulOnkologie/mii-cs-onko-seitenlokalisation/$download?format=json' | jq '.concept[] | select(.code=="T")'
  • ConceptMap: curl -fs 'https://simplifier.net/MedizininformatikInitiative-ModulOnkologie/mii-cm-onko-nebenwirkung-sct/$download?format=json' | jq '.group[].element[] | select(.code=="K")'

Anderenfalls müsste alles als ConceptMap vorliegen und der verwendete FHIR-Server $translate unterstützen. Soweit ich weiß unterstützt z.B. der oft genutzte https://github.com/samply/blaze dies (noch) nicht.

@chgl
Copy link
Contributor Author

chgl commented Aug 22, 2024

Für den HAPI FHIR kann man zB so IGs laden:

services:
  hapi-fhir-server:
    image: docker.io/hapiproject/hapi:v7.2.0@sha256:9bcafa8342b572eee248cb7c48c496863d352bbd0347e1d98ea238d09620e89b
    restart: unless-stopped
    cap_drop:
      - ALL
    ipc: none
    security_opt:
      - "no-new-privileges:true"
    read_only: true
    tmpfs:
      - /tmp
      - /app/target
    privileged: false
    environment:
      SPRING_DATASOURCE_URL: "jdbc:postgresql://hapi-fhir-db:5432/fhir?currentSchema=public"
      SPRING_DATASOURCE_USERNAME: postgres
      # kics-scan ignore-line
      SPRING_DATASOURCE_PASSWORD: postgres
      SPRING_DATASOURCE_DRIVERCLASSNAME: org.postgresql.Driver
      spring.jpa.properties.hibernate.dialect: ca.uhn.fhir.jpa.model.dialect.HapiFhirPostgres94Dialect
      HAPI_FHIR_VALIDATION_REQUESTS_ENABLED: "false"
      HAPI_FHIR_USE_APACHE_ADDRESS_STRATEGY: "true"
      HAPI_FHIR_ENFORCE_REFERENTIAL_INTEGRITY_ON_DELETE: "false"
      HAPI_FHIR_ENFORCE_REFERENTIAL_INTEGRITY_ON_WRITE: "false"
      HAPI_FHIR_SUBSCRIPTION_RESTHOOK_ENABLED: "false"
      HAPI_FHIR_ALLOW_MULTIPLE_DELETE: "true"
      HAPI_FHIR_BULK_IMPORT_ENABLED: "false"
      HAPI_FHIR_IMPLEMENTATIONGUIDES_MIIONKOLOGIE_PACKAGEURL: "https://packages.simplifier.net/de.medizininformatikinitiative.kerndatensatz.onkologie/2024.0.0-ballot-beta-1"
      HAPI_FHIR_IMPLEMENTATIONGUIDES_MIIONKOLOGIE_VERSION: "2024.0.0-ballot-beta-1"
      HAPI_FHIR_IMPLEMENTATIONGUIDES_MIIONKOLOGIE_NAME: "de.medizininformatikinitiative.kerndatensatz.onkologie"
    depends_on:
      - hapi-fhir-db
    ports:
      - "127.0.0.1:8084:8080"

  hapi-fhir-db:
    image: docker.io/bitnami/postgresql:16.4.0@sha256:6bea1699d088605204841b889fb79d7572030a36ec5731e736d73cd33018cc03
    restart: unless-stopped
    environment:
      # kics-scan ignore-line
      POSTGRESQL_PASSWORD: postgres
      POSTGRESQL_DATABASE: fhir

Allerdings klappt zB GET http://localhost:8084/fhir/ConceptMap/$translate?system=https://www.medizininformatik-initiative.de/fhir/ext/modul-onko/CodeSystem/mii-cs-onko-verlauf-primaertumor&code=K&targetSystem=http://snomed.info/sct auf anhieb nicht. Das kann aber auch Anwenderfehler sein.

@pcvolkmer
Copy link
Collaborator

Allerdings klappt zB GET http://localhost:8084/fhir/ConceptMap/$translate?system=https://www.medizininformatik-initiative.de/fhir/ext/modul-onko/CodeSystem/mii-cs-onko-verlauf-primaertumor&code=K&targetSystem=http://snomed.info/sct auf anhieb nicht. Das kann aber auch Anwenderfehler sein.

Bei ConceptMaps funktioniert es, bei ValueSets und CodeSystems leider nicht (Siehe auch: #70 (comment)). Eventuell könnte dies ein Problem werden.

@chgl
Copy link
Contributor Author

chgl commented Aug 23, 2024

Ah jetzt, also bei den ValueSets und CodeSystem lookup Klassen nutzen wir das primär um das display zu bekommen - dafür würde sich dann $lookup anbieten: https://www.hl7.org/fhir/codesystem-operation-lookup.html - ValueSet beschreibt auch nur eine Teilmenge von einem oder mehreren CodeSystem.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants