For the english version please click here.
Eine eher allgemeine Beschreibung der verschiedenen Anwendungsfälle finden Sie hier. Bitte beachten Sie, dass dies keine vollständige Liste von Anwendungsfällen ist. Sie soll Ihnen nur einen Eindruck davon vermitteln, was mit TerminoloGit möglich ist.
Codesysteme und extensionale Value-Sets sollten zum Verzeichnis terminologies/
hinzugefügt werden, damit sie von MaLaC-CT in alle unterstützten Dateiformate konvertiert werden können.
Intensionale ValueSets und andere FHIR®-Ressourcen müssen dagegen zum Verzeichnis input/resources/
hinzugefügt werden, da sie von MaLaC-CT nicht unterstützt werden.
Eine zusätzliche Konfiguration von TerminoloGit wird empfohlen, wenn das Hinzufügen einer Terminologie mit einer anderen Basis-URL innerhalb ihres Canonicals.
Codesysteme und extensionale Value-Sets sollten dem Verzeichnis terminologies/
hinzugefügt werden, damit sie von MaLaC-CT in alle anderen unterstützten Dateiformate konvertiert werden können.
Eine neue Terminologie kann in jedem der unterstützten Dateiformate erstellt werden. Es wird jedoch nicht empfohlen, eines der veralteten Dateiformate zu verwenden, da dies zu einem Informationsverlust führen kann.
Im Folgenden wird beschrieben, wie Sie eine neue Terminologie auf der Grundlage des Dateiformats .1.propcsv.xlsx
hinzufügen:
[CodeSystem | ValueSet]-[id].1.propcsv.xlsx
terminologies/
nach dem folgenden Muster: [CodeSystem | ValueSet]-[id]
.1.propcsv.xlsx
in das entsprechende Verzeichnis innerhalb des Verzeichnisses terminologies/
. Der resultierende Pfad sollte wie folgt aussehen: terminologies/[CodeSystem | ValueSet]-[id]/[CodeSystem | ValueSet]-[id].1.propcsv.xlsx
z.B. terminologies/CodeSystem-appc-anatomie/CodeSystem-appc-anatomie.1.propcsv.xlsx
oder terminologies/ValueSet-elga-laborparameter/ValueSet-elga-laborparameter.1.propcsv.xlsx
.input/includes/
[CodeSystem | ValueSet]-[id]-download.xhtml
[CodeSystem | ValueSet]-[id]-previous-versions.xhtml
input/redirects/
[CodeSystem | ValueSet]/[id].html
terminologies/[CodeSystem | ValueSet]-[id]/
Intensionale ValueSets oder andere FHIR®-Ressourcen (als FHIR® XML oder FHIR® JSON) müssen in das Verzeichnis input/resources/
aufgenommen werden, da sie von MaLaC-CT nicht konvertiert werden können.
Beachten Sie die folgenden Anforderungen:
Der folgende Prozess beschreibt, wie Sie ein intensionales ValueSet oder andere FHIR®-Ressourcen hinzufügen:
input/resources/
nach folgendem Muster: [FHIR® resource type]-[id].[xml | json]
input/includes/[CodeSystem | ValueSet]-[id]-download.xhtml
unter Verwendung der Download-Vorlage durch entsprechendes Ersetzen von [CI_PROJECT_PATH]
, [CI_DEFAULT_BRANCH]
und [CodeSystem | ValueSet]-[id]
sowie unter Verwendung der entsprechenden Dateierweiterung xml
oder json
, je nachdem in welchem Format das ValueSet erstellt wurde.input/includes/[CodeSystem | ValueSet]-[id]-previous-versions.xhtml
unter Verwendung der Vorlage für frühere Versionen.input/redirects/[CodeSystem | ValueSet]/[id].html
unter Verwendung der Vorlage für Weiterleitungen durch entsprechendes Ersetzen von [TERMGIT_CANONICAL]
und [CodeSystem | ValueSet]-[id]
.terminologies/terminologiesMetadata.csv
hinzufügen name
- [CodeSystem | ValueSet]-[id]
.canonical
- [TERMGIT_CANONICAL]/[CodeSystem | ValueSet]/[id]
oid
- OID der Terminologieversion
- Version der Terminologieid
- [id]
type
- [CodeSystem | ValueSet]
.metadata-change-timestamp
- der Zeitpunkt der letzten Änderung der Terminologie-Metadaten.Es ist möglich, Terminologien hinzuzufügen, die eine kanonische URL haben, deren Basis nicht mit der TERMGIT_CANONICAL
übereinstimmt, z.B. die TERMGIT_CANONICAL
ist https://termgit.elga.gv.at
, aber die kanonische URL der Terminologie ist http://terminology.hl7.org/ValueSet/v3-TargetAwareness
.
In einem solchen Fall folgen Sie den Anweisungen wie oben beschrieben, je nachdem, was am besten zu der hinzuzufügenden Ressource passt, aber es wird zusätzlich empfohlen, den Canonical der Ressource in die sushi-config.yaml
aufzunehmen:
...
Parameter:
...
special-url:
- http://terminology.hl7.org/ValueSet/v3-TargetAwareness
...
Es ist möglich, dass ein Value-Set auf einem Codesystem basiert, das weder in terminologies/
noch in input/resources/
enthalten ist, z.B. http://loinc.org
oder http://terminology.hl7.org/CodeSystem/v3-AdministrativeGender
. In einem solchen Fall muss ein manueller Eintrag in der Datei terminologies/terminologiesMetadata.csv
hinzugefügt werden, um eine Konvertierung der Value-Set in alle Dateiformate zu gewährleisten.
Hinzufügen einer Zeile zu terminologies/terminologiesMetadata.csv
name
- leercanonical
- Canonical des referenzierten Codesystems, z.B. http://loinc.org
oder http://terminology.hl7.org/CodeSystem/v3-AdministrativeGender
oid
- OID der Terminologieversion
- Version der Terminologieid
- leerTyp
- leermetadata-change-timestamp
- leerEs kann einfach jedes der unterstützten Dateiformate einer Terminologie im Verzeichnis terminologies/
bearbeitet und commited werden, um eine aktualisierte Veröffentlichung der Terminologie auszulösen.
Wenn die Geschäftsversion der Terminologie (CodeSystem.version
bzw. ValueSet.version
) erhöht wurde, erstellt IGver.py
automatisch eine vorherige Version für die Terminologie.
Aktualisieren Sie einfach die Terminologie im Verzeichnis input/resources/
.
Wenn für die aktualisierte Terminologie eine frühere Version erstellt werden soll, muss dies manuell geschehen:
TERMGIT_HTML_PROJECT
: YYYYMMDD-hhmmss-
das Datum und die Uhrzeit der Erstellung der Kopie darstellt: output/[CodeSystem | ValueSet]-[id].html
und erstellen Sie output/YYYYMMDD-hhmmss-[CodeSystem | ValueSet]-[id].html
.output/[CodeSystem | ValueSet]-[id].download.html
und Erstellung von output/YYYYMMDD-hhmmss-[CodeSystem | ValueSet]-[id].download.html
.[CodeSystem | ValueSet]-[id]
entsprechend: <div role="alert" class="alert alert-danger">
<p id="publish-box">This is an outdated version that is no longer valid! You can access the <a href=[CodeSystem | ValueSet]-[id].html>current version here</a>.</p>
</div>
TERMGIT_HTML_PROJECT
.input/includes/[CodeSystem | ValueSet]-[id]-previous-versions.xhtml
eine neue Zeile nach folgendem Muster. Die Zeile OLD_BUSINESS_VERSION
stellt die Geschäftsversion der veralteten Terminologie dar. <tr><td><a href="YYYYMMDD-hhmmss-[CodeSystem | ValueSet]-[id].html">OLD_BUSINESS_VERSION</a></td><td><a onclick="createDiff('[CodeSystem | ValueSet]-[id].html', 'YYYYMMDD-hhmmss-[CodeSystem | ValueSet]-[id].html')" href="javascript:void(0);">Diff</a></td></tr>
Bevor eine Terminologie aus TerminoloGit gelöscht wird, sollte ihr
status
aufretired
gesetzt werden (sieheCodeSystem.status
bzw.ValueSet.status
).
TERMGIT_HTML_PROJECT
: ls output/*[CodeSystem | ValueSet]-[id].*
ls output/[CodeSystem | ValueSet]/[id].html
TERMGIT_HTML_PROJECT
.input/includes/[CodeSystem | ValueSet]-[id]-previous-versions.xhtml
input/includes/[CodeSystem | ValueSet]-[id]-download.xhtml
input/redirects/[CodeSystem | ValueSet]/[id].html
terminologies/[CodeSystem | ValueSet]-[id]/
oder input/resources/[CodeSystem | ValueSet]-[id].xml
terminologies/terminologiesMetadata.csv
.Grundsätzlich gibt es vier Möglichkeiten, wie die GitLab-Pipeline gestartet werden kann:
CI_COMMIT_TITLE
. Auf diese Weise wird ein Commit simuliert.Der HL7® FHIR® IG Publisher erstellt eine Reihe von statischen HTML-Seiten. Diese Seiten sind ideal für Nachforschungszwecke oder einfach zum Durchblättern, da alle Terminologien in einer gut strukturierten HTML-Seite dargestellt werden. Der Benutzer hat die Möglichkeit, verschiedene Codesysteme und Value-Sets in strukturierter Form abzurufen oder mit Hilfe der Suchfunktion nach bestimmten Konzepten zu suchen. Zwischen den Codesystemen und Value-Sets besteht immer eine Verknüpfung, um das Auffinden zusammengehöriger Terminologien zu erleichtern.
Um sicherzustellen, dass ein System immer auf dem neuesten Stand ist, gibt es verschiedene Möglichkeiten des automatischen Imports von Terminologien. Die hier vorgestellten Optionen konzentrieren sich auf den Import einer bestimmten Terminologie.
Grundsätzlich kann die folgende URL-Vorlage verwendet werden, um immer die neueste Version einer Terminologie abzurufen:
terminologies/
: [GITLAB_URL]/[PROJECT_PATH]/-/raw/[DEFAULT_BRANCH]/terminologies/[NAME_OF_TERMINOLOGY]/[NAME_OF_TERMINOLOGY][FORMAT]
input/resources/
: [GITLAB_URL]/[PROJECT_PATH]/-/raw/[DEFAULT_BRANCH]/input/resources/[NAME_OF_TERMINOLOGY].xml
Hier steht die
[GITLAB_URL]
für den Zugriff auf die GitLab-Instanz, in der sich das Git-Repository mit den Terminologien befindet (z. B. https://gitlab.com
).[PROJECT_PATH]
der Pfad zum Git-Repository mit den Terminologien (z. B. elga-gmbh/termgit
).[DEFAULT_BRANCH]
gibt den Namen des Standardzweigs des Git-Repository an (z. B. main
).[NAME_OF_TERMINOLOGY]
entspricht dem Typ der Terminologie (CodeSystem
oder ValueSet
) und der ID der Terminologie (z.B. iso-3166-1-alpha-3
). Typ und id werden mit -
verbunden, was zu CodeSystem-iso-3166-1-alpha-3
führt.[FORMAT]
entspricht der Dateierweiterung eines der unterstützten Dateiformate, z. B. 4.fhir.xml
.Das Ergebnis kann dann wie folgt aussehen:
https://gitlab.com/elga-gmbh/termgit/-/raw/main/terminologies/CodeSystem-iso-3166-1-alpha-3/CodeSystem-iso-3166-1-alpha-3.4.fhir.xml
Ausgehend von einem bestimmten Dateiformat einer Terminologie werden in den nächsten Punkten verschiedene Arten des Abrufs vorgestellt. Beachten Sie, dass die Beispiele hier auf dem österreichischen Terminologiebrowser termgit.elga.gv.at basieren.
Python:
response = urllib2.urlopen('https://gitlab.com/elga-gmbh/termgit/-/raw/main/terminologies/CodeSystem-iso-3166-1-alpha-3/CodeSystem-iso-3166-1-alpha-3.2.claml.xml?inline=false')
Java:
URL url = new URL("https://gitlab.com/elga-gmbh/termgit/-/raw/main/terminologies/CodeSystem-iso-3166-1-alpha-3/CodeSystem-iso-3166-1-alpha-3.2.claml.xml?inline=false");
URLConnection connection = url.openConnection();
InputStream is = connection.getInputStream();
// ... dann die Datei herunterladen
Erster Klon des Repositorys:
git clone git@gitlab.com:elga-gmbh/termgit.git
Aktualisierung des lokalen Git-Repositorys (inkl. Git-Tags):
git fetch --tags -f
Überprüfen des Unterschieds zwischen dem aktuellen Inhalt des lokalen Verzeichnisses und dem der Git-Tags einer Terminologie nach der Aktualisierung des Repositorys:
git log HEAD..tags/CodeSystem-iso-3166-1-alpha-3
oder
git log HEAD..tags/1.0.3166.1.2.3
Checkout der neuesten Version einer Terminologie mit dem entsprechenden Git-Tag. Hinweis: Dadurch wird das gesamte Repository auf den Stand des Git-Tags gesetzt. Andere Terminologien können einen aktuelleren Stand haben.
git checkout tags/CodeSystem-iso-3166-1-alpha-3
oder
git checkout tags/1.0.3166.1.2.3
Mit Git über ssh ohne ein lokales Repository und die Git-Tags für das entsprechende Terminologieverzeichnis. Es werden alle verfügbaren Download-Formate abgerufen:
git archive -o C:/tmp/CS-ISO-3166-1-alpha-3.zip --remote git@gitlab.com:elga-gmbh/termgit.git CodeSystem-iso-3166-1-alpha-3:terminologies/CodeSystem-iso-3166-1-alpha-3
oder
git archive -o C:/tmp/CS-ISO-3166-1-alpha-3.zip --remote git@gitlab.com:elga-gmbh/termgit.git 1.0.3166.1.2.3:terminologies/CodeSystem-iso-3166-1-alpha-3
Mit GitLab API über REST für ein bestimmtes Download-Format (hier .2.claml.xml
). /
muss mit %2f
escaped werden:
curl https://gitlab.com/api/v4/projects/33179072/repository/files/terminologies%2fCodeSystem-iso-3166-1-alpha-3%2fCodeSystem-iso-3166-1-alpha-3.2.claml.xml?ref=main
curl:
curl https://tergi.elga.gv.at/fhir-server/api/v4/CodeSystem/iso-3166-1-alpha-3
für weitere Details siehe http://www.hl7.org/fhir/overview-dev.html#Interactions
Für jede verfügbare Terminologie werden automatisch zwei Git-Tags erstellt, die stets auf die aktuelle Version der jeweiligen Terminologie verweisen:
name
, z.B. 1.0.3166.1.2.3
name
, z.B. CodeSystem-iso-3166-1-alpha-3
.Die GitLab-API für Git-Tags kann zur automatischen Überprüfung verwendet werden, ob eine bestimmte Terminologie aktualisiert wurde. Der folgende Befehl kann verwendet werden, um die Metadaten eines Git-Tags abzurufen:
curl https://gitlab.com/api/v4/projects/33179072/repository/tags/CodeSystem-iso-3166-1-alpha-3
Die Metadaten enthalten unter anderem
message
).created_at
).Neben dem automatischen Import von Terminologien ist es auch möglich, alle Terminologien manuell zu importieren. Dazu empfiehlt es sich, die Tag-News in GitLab zu aktivieren. Sie erhalten dann bei jeder Änderung eine automatische Benachrichtigung.
Das System kann auch verwendet werden, um zu prüfen, ob ein bestimmter Code Teil eines Codesystems oder ValueSets ist. Dies funktioniert mit der FHIR®-Operation $validate-code
für CodeSysteme und $validate-code
für ValueSets.
curl https://tergi.elga.gv.at/fhir-server/api/v4/ValueSet/appc-anatomie/$validate-code?system=https://termgit.elga.gv.at/CodeSystem/appc-anatomie&code=0
Wenn Sie den HAPI JPA Server verwenden, beachten Sie bitte die folgende Einschränkungen zur FHIR®-Operation $validate-code
, die gemäß der FHIR R4-Spezifikation funktioniert:
[base]/CodeSystem/$validate-code
erlaubt keinen abschließenden Schrägstrich für den GET Parameter url
(z.B. https://dev-tergi.elga.gv.at/fhir-server/api/v4/CodeSystem/$validate-code?code=100&url=https://termgit.elga.gv.at/CodeSystem/elga-e-health-anwendungen)[base]/CodeSystem/[id]/$validate-code
(z. B. https://dev-tergi.elga.gv.at/fhir-server/api/v4/CodeSystem/appc-anatomie/$validate-code?code=100)[base]/ValueSet/$validate-code
erlaubt keinen abschließenden Schrägstrich für die GET-Parameter url
und system
(z. B. https://dev-tergi.elga.gv.at/fhir-server/api/v4/ValueSet/$validate-code?url=https://termgit.elga.gv.at/ValueSet/appc-anatomie&code=0&system=https://termgit.elga.gv.at/CodeSystem/appc-anatomie)[base]/ValueSet/[id]/$validate-code
erlaubt keinen abschließenden Schrägstrich für den GET-Parameter system
(z. B. https://dev-tergi.elga.gv.at/fhir-server/api/v4/ValueSet/appc-anatomie/$validate-code?system=https://termgit.elga.gv.at/CodeSystem/appc-anatomie&code=0)[base]/CodeSystem/$lookup
erfordert einen abschließenden Schrägstrich für den GET-Parameter system
(z.B. https://dev-tergi.elga.gv.at/fhir-server/api/v4/CodeSystem/$lookup?code=100&system=https://termgit.elga.gv.at/CodeSystem/appc-anatomie/)[base]/ValueSet/$expand
erlaubt keinen abschließenden Schrägstrich für den GET-Parameter url
(z. B. https://dev-tergi.elga.gv.at/fhir-server/api/v4/ValueSet/$expand?url=https://termgit.elga.gv.at/ValueSet/appc-anatomie&system=https://termgit.elga.gv.at/CodeSystem/appc-anatomie/)[base]/ValueSet/[id]/$expand
(z. B. https://dev-tergi.elga.gv.at/fhir-server/api/v4/ValueSet/appc-anatomie/$expand?system=https://termgit.elga.gv.at/CodeSystem/appc-anatomie/)Die von TerminoloGit verwalteten Ressourcen können automatisch auf FHIR®-Server hochgeladen werden. Dies kann durch die Nutzung von GitLab's Project-level Secure Files erreicht werden.
Verwenden Sie die Vorlage zur Angabe von FHIR®-Server, füllen Sie die erforderlichen Informationen aus und erstellen Sie eine Datei für jeden zusätzlichen FHIR®-Server. Die Variable FHIRServer
ist obligatorisch. Sie können zwischen User
+UserPassword
oder dem TergiTunnelToken
wählen, die unbenutzte Variable lassen Sie bitte mit ""
leer. Weitere Informationen zu den Variablen finden Sie in der setup.
Fügen Sie nun die erstellte Datei Ihrer TerminoloGit Instanz hinzu:
Alle neuen oder bearbeiteten Terminologien bzw. jene FHIR®-Ressourcen, die sich im Verzeichnis input/resources
befinden, werden in der Folge auf die zusätzlichen FHIR®-Server geladen.