diff --git a/ImplementationGuide/ImplementierungsleitfadenIsiK_basismodul.json b/ImplementationGuide/ImplementierungsleitfadenIsiK_basismodul.json index 15a0fae6..7a07cd2f 100644 --- a/ImplementationGuide/ImplementierungsleitfadenIsiK_basismodul.json +++ b/ImplementationGuide/ImplementierungsleitfadenIsiK_basismodul.json @@ -1,7 +1,7 @@ { "resourceType": "ImplementationGuide", "url": "https://gematik.de/fhir/ISiK/v2/Basismodul/ImplementationGuide/ISiK-basismodul", - "version": "2.0.5", + "version": "2.0.7", "name": "Implementierungsleitfaden ISiK-Basismodul Stufe 2", "status": "active", "fhirVersion": [ diff --git a/ImplementationGuide/markdown/Einfuehrung.md b/ImplementationGuide/markdown/Einfuehrung.md index b5c82f36..cd602daa 100644 --- a/ImplementationGuide/markdown/Einfuehrung.md +++ b/ImplementationGuide/markdown/Einfuehrung.md @@ -1,43 +1,43 @@ -gematik logo - ----- -Version: 2.0.6 - -Datum: 2024-04-15 - -Realm: Deutschland - -Abgekündigte Versionen oder Zwischenveröffentlichungen der Implementierungsleitfäden finden Sie unter: https://gematik.github.io/spec-ISiK-Basismodul/index.html - - ----- - - -# Interoperabler Datenaustausch durch Informationssysteme im Krankenhaus (ISiK) - -Die gematik wurde vom Gesetzgeber beauftragt, im Benehmen mit der Deutschen Krankenhausgesellschaft (DKG) und den maßgeblichen Bundesverbänden der Industrie im Gesundheitswesen, verbindliche Standards für den Austausch von Gesundheitsdaten mit Informationssystemen im Krankenhaus zu erarbeiten. Dieser FHIR ImplementationGuide (IG) beschreibt die für diesen Zweck entwickelten FHIR Profile und das [REST](https://de.wikipedia.org/wiki/Representational_State_Transfer)-basierte Application Programming Interface (API). Die REST-API wird im Wesentlichen [vom FHIR Standard vorgegeben](https://www.hl7.org/fhir/R4/http.html). Dieser Leitfaden konkretisiert die ISiK-relevanten Funktionen der Standard-REST-API und trifft inhaltliche Festlegungen zu den ISiK-relevanten Ressourcen in Form von Ressourcen-Profilen. - -Hersteller bestätigungsrelevanter Systeme sollen durch diesen IG in die Lage versetzt werden, eine konforme Implementierung zu erstellen und das Bestätigungsverfahren der gematik erfolgreich zu absolvieren. - -Weitere Informationen siehe [§373 SGB V](https://www.gesetze-im-internet.de/sgb_5/__373.html). - -Hinweis: Sowohl für die Implementierung der ISiK-Spezifikation als auch für den Betrieb eines Produktes, das die ISiK-Spezifikation implementiert, ist eine SNOMED-CT-Lizenz notwendig. Diese kann beim [National Release Center für SNOMED CT in Deutschland](https://www.bfarm.de/DE/Kodiersysteme/Terminologien/SNOMED-CT/_node.html) beantragt werden. - -**Kontakt** - -Bringen Sie Allgemeine Fragen und Anmerkungen gerne über unser Anfrageportal ein: [Anfragen ISiK + ISiP](https://service.gematik.de/servicedesk/customer/portal/16) - -Falls Sie keinen Zugang zum Anfrageportal haben und dieses nutzen wollen, senden Sie uns bitte eine Nachricht an die Adresse isik [ at ] gematik.de mit dem Betreff "Portalzugang". - -**Herausgeber** - -gematik GmbH - -[Impressum](https://www.gematik.de/impressum/) - -**Gender-Hinweis** - -Zugunsten des Leseflusses wird in dieser Publikation meist die -männliche Form verwendet. Wir bitten, dies nicht als Zeichen einer -geschlechtsspezifischen Wertung zu deuten. Diese Variante deckt auch alle -weiteren Geschlechter, neben männlich und weiblich, ab. +gematik logo + +---- +Version: 2.0.7 + +Datum: 04.07.2024 + +Realm: Deutschland + +Abgekündigte Versionen oder Zwischenveröffentlichungen der Implementierungsleitfäden finden Sie unter: https://gematik.github.io/spec-ISiK-Basismodul/index.html + + +---- + + +# Interoperabler Datenaustausch durch Informationssysteme im Krankenhaus (ISiK) + +Die gematik wurde vom Gesetzgeber beauftragt, im Benehmen mit der Deutschen Krankenhausgesellschaft (DKG) und den maßgeblichen Bundesverbänden der Industrie im Gesundheitswesen, verbindliche Standards für den Austausch von Gesundheitsdaten mit Informationssystemen im Krankenhaus zu erarbeiten. Dieser FHIR ImplementationGuide (IG) beschreibt die für diesen Zweck entwickelten FHIR Profile und das [REST](https://de.wikipedia.org/wiki/Representational_State_Transfer)-basierte Application Programming Interface (API). Die REST-API wird im Wesentlichen [vom FHIR Standard vorgegeben](https://www.hl7.org/fhir/R4/http.html). Dieser Leitfaden konkretisiert die ISiK-relevanten Funktionen der Standard-REST-API und trifft inhaltliche Festlegungen zu den ISiK-relevanten Ressourcen in Form von Ressourcen-Profilen. + +Hersteller bestätigungsrelevanter Systeme sollen durch diesen IG in die Lage versetzt werden, eine konforme Implementierung zu erstellen und das Bestätigungsverfahren der gematik erfolgreich zu absolvieren. + +Weitere Informationen siehe [§373 SGB V](https://www.gesetze-im-internet.de/sgb_5/__373.html). + +Hinweis: Sowohl für die Implementierung der ISiK-Spezifikation als auch für den Betrieb eines Produktes, das die ISiK-Spezifikation implementiert, ist eine SNOMED-CT-Lizenz notwendig. Diese kann beim [National Release Center für SNOMED CT in Deutschland](https://www.bfarm.de/DE/Kodiersysteme/Terminologien/SNOMED-CT/_node.html) beantragt werden. + +**Kontakt** + +Bringen Sie Allgemeine Fragen und Anmerkungen gerne über unser Anfrageportal ein: [Anfragen ISiK + ISiP](https://service.gematik.de/servicedesk/customer/portal/16) + +Falls Sie keinen Zugang zum Anfrageportal haben und dieses nutzen wollen, senden Sie uns bitte eine Nachricht an die Adresse isik [ at ] gematik.de mit dem Betreff "Portalzugang". + +**Herausgeber** + +gematik GmbH + +[Impressum](https://www.gematik.de/impressum/) + +**Gender-Hinweis** + +Zugunsten des Leseflusses wird in dieser Publikation meist die +männliche Form verwendet. Wir bitten, dies nicht als Zeichen einer +geschlechtsspezifischen Wertung zu deuten. Diese Variante deckt auch alle +weiteren Geschlechter, neben männlich und weiblich, ab. diff --git a/ImplementationGuide/markdown/ReleaseNotes.md b/ImplementationGuide/markdown/ReleaseNotes.md index 949e1c70..073e1714 100644 --- a/ImplementationGuide/markdown/ReleaseNotes.md +++ b/ImplementationGuide/markdown/ReleaseNotes.md @@ -7,9 +7,10 @@ Die erste Ziffer X bezeichnet ein Major-Release und regelt die Gültigkeit von R Version: 2.0.7 -Datum: t.b.d +Datum: 4.7.2024 * Lockerung der Anforderung für MS-Definition und Suchparameter zu Condition.clinicalStatus https://github.com/gematik/spec-ISiK-Basismodul/pull/427 +* Fix des ValueSets für SNOMED-CT-Diagnosen https://github.com/gematik/spec-ISiK-Basismodul/pull/429/commits/52833ff1bd0f8a4c71a19b7a3c50c3cfa2d95e32 ---- diff --git a/Resources/fsh-generated/resources/CapabilityStatement-ISiKCapabilityStatementBasisServer.json b/Resources/fsh-generated/resources/CapabilityStatement-ISiKCapabilityStatementBasisServer.json index 04a37137..8c52d55e 100644 --- a/Resources/fsh-generated/resources/CapabilityStatement-ISiKCapabilityStatementBasisServer.json +++ b/Resources/fsh-generated/resources/CapabilityStatement-ISiKCapabilityStatementBasisServer.json @@ -4,11 +4,11 @@ "url": "https://gematik.de/fhir/isik/v2/Basismodul/CapabilityStatement/basis-server", "status": "active", "experimental": false, - "version": "2.0.6", + "version": "2.0.7", "publisher": "gematik GmbH", - "date": "2024-04-15", + "date": "2024-07-04", "implementationGuide": [ - "https://gematik.de/fhir/isik/v2/Basismodul/ImplementationGuide|2.0.5" + "https://gematik.de/fhir/isik/v2/Basismodul/ImplementationGuide|2.0.7" ], "name": "ISiKCapabilityStatementBasisServer", "title": "ISiK CapabilityStatement Basis Server", diff --git a/Resources/fsh-generated/resources/StructureDefinition-ISiKAbrechnungsfall.json b/Resources/fsh-generated/resources/StructureDefinition-ISiKAbrechnungsfall.json index df801bed..b2a4cb40 100644 --- a/Resources/fsh-generated/resources/StructureDefinition-ISiKAbrechnungsfall.json +++ b/Resources/fsh-generated/resources/StructureDefinition-ISiKAbrechnungsfall.json @@ -5,7 +5,7 @@ "name": "ISiKAbrechnungsfall", "status": "active", "experimental": false, - "date": "2024-04-15", + "date": "2024-07-04", "publisher": "gematik GmbH", "description": "Dieses Profil beschreibt die Gruppierung von medizinischen Leistungen in ISiK-Szenarien", "fhirVersion": "4.0.1", diff --git a/Resources/fsh-generated/resources/StructureDefinition-ISiKAngehoeriger.json b/Resources/fsh-generated/resources/StructureDefinition-ISiKAngehoeriger.json index 040df453..4573e199 100644 --- a/Resources/fsh-generated/resources/StructureDefinition-ISiKAngehoeriger.json +++ b/Resources/fsh-generated/resources/StructureDefinition-ISiKAngehoeriger.json @@ -5,7 +5,7 @@ "name": "ISiKAngehoeriger", "status": "active", "experimental": false, - "date": "2024-04-15", + "date": "2024-07-04", "publisher": "gematik GmbH", "description": "Dieses Profil ermöglicht die Nutzung von Angehörigen in ISiK Szenarien.", "fhirVersion": "4.0.1", diff --git a/Resources/fsh-generated/resources/StructureDefinition-ISiKBerichtBundle.json b/Resources/fsh-generated/resources/StructureDefinition-ISiKBerichtBundle.json index 1ef28ac4..23326ec5 100644 --- a/Resources/fsh-generated/resources/StructureDefinition-ISiKBerichtBundle.json +++ b/Resources/fsh-generated/resources/StructureDefinition-ISiKBerichtBundle.json @@ -6,7 +6,7 @@ "title": "ISiKBerichtBundle", "status": "active", "experimental": false, - "date": "2024-04-15", + "date": "2024-07-04", "publisher": "gematik GmbH", "description": "A document style representation of the receipt (complete, self-contained, signed)", "fhirVersion": "4.0.1", diff --git a/Resources/fsh-generated/resources/StructureDefinition-ISiKBerichtSubSysteme.json b/Resources/fsh-generated/resources/StructureDefinition-ISiKBerichtSubSysteme.json index ea72cd68..5b2d58ca 100644 --- a/Resources/fsh-generated/resources/StructureDefinition-ISiKBerichtSubSysteme.json +++ b/Resources/fsh-generated/resources/StructureDefinition-ISiKBerichtSubSysteme.json @@ -5,7 +5,7 @@ "name": "ISiKBerichtSubSysteme", "status": "active", "experimental": false, - "date": "2024-04-15", + "date": "2024-07-04", "publisher": "gematik GmbH", "description": "Dieses Profil ermöglicht die Krankenhaus-interne Übermittlung eines Berichtes in Form eines Dokumentes, die in ISiK Szenarien von Subsystemen an Primärsysteme gesendet werden.", "fhirVersion": "4.0.1", diff --git a/Resources/fsh-generated/resources/StructureDefinition-ISiKBinary.json b/Resources/fsh-generated/resources/StructureDefinition-ISiKBinary.json index 8aed67fb..668ffaf2 100644 --- a/Resources/fsh-generated/resources/StructureDefinition-ISiKBinary.json +++ b/Resources/fsh-generated/resources/StructureDefinition-ISiKBinary.json @@ -6,7 +6,7 @@ "title": "ISiKBinary", "status": "active", "experimental": false, - "date": "2024-04-15", + "date": "2024-07-04", "publisher": "gematik GmbH", "description": "Die Binary-Ressource erlaubt den Umgang mit FHIR-fremden Formaten (z.B. PDFs, Bilder, CDA) innerhalb des FHIR-Frameworks.\r\nDazu werden die Daten base64-codiert in der Binary-Ressource (in XML oder JSON) transportiert oder \r\nüber die REST-API am Binary-Endpunkt in ihrem nativen Format bereitgestellt. \r\nBinary-Ressourcen werden von Attachment-Elementen in DocumentReference-Ressourcen verlinkt und damit in den Kontext anderer FHIR-Ressourcen\r\n(z.B. Patient und Encounter) gestellt. ", "fhirVersion": "4.0.1", diff --git a/Resources/fsh-generated/resources/StructureDefinition-ISiKCodeSystem.json b/Resources/fsh-generated/resources/StructureDefinition-ISiKCodeSystem.json index dc0bacd3..45df5c41 100644 --- a/Resources/fsh-generated/resources/StructureDefinition-ISiKCodeSystem.json +++ b/Resources/fsh-generated/resources/StructureDefinition-ISiKCodeSystem.json @@ -5,7 +5,7 @@ "name": "ISiKCodeSystem", "status": "active", "experimental": false, - "date": "2024-04-15", + "date": "2024-07-04", "publisher": "gematik GmbH", "description": "Dieses Profil beschreibt die maschinenlesbare Repräsentation von system-sepzifischen Kodierungen in ISiK-Szenarien", "fhirVersion": "4.0.1", diff --git a/Resources/fsh-generated/resources/StructureDefinition-ISiKDiagnose.json b/Resources/fsh-generated/resources/StructureDefinition-ISiKDiagnose.json index c5f0b981..25dc0f6a 100644 --- a/Resources/fsh-generated/resources/StructureDefinition-ISiKDiagnose.json +++ b/Resources/fsh-generated/resources/StructureDefinition-ISiKDiagnose.json @@ -5,7 +5,7 @@ "name": "ISiKDiagnose", "status": "active", "experimental": false, - "date": "2024-04-15", + "date": "2024-07-04", "publisher": "gematik GmbH", "description": "Dieses Profil ermöglicht die Nutzung von Diagnosen in ISiK Szenarien.", "fhirVersion": "4.0.1", @@ -58,6 +58,8 @@ { "id": "Condition.clinicalStatus", "path": "Condition.clinicalStatus", + "definition": "Einschränkung der übergreifenden MS-Definition: Verfügt ein bestätigungsrelevantes System nicht über die Datenstruktur zur Hinterlegung des Status einer Diagnose, so MUSS dieses System die Information NICHT abbilden. Das System MUSS jedoch den Status kodieren in der Diagnose, sofern die Information verfügbar ist.", + "comment": "Hintergrund zur Motivation der MS-Definition: Auch in Stufe 2 sind keine (Client-seitigen) schreibenden Operationen für das Erstellen einer Condition-Ressource vorgesehen (siehe CapabilityStatement). Das heißt entweder führen KISe entsprechende Informationen und exponieren diese, oder es gibt keinen pragmatischen Mechanismus (im ISIK-Kontext), um den Use Case einer zusätzlichen Annotation mittels Client zu erfüllen. Da alle KIS-Hersteller, die sich zu Wort gemeldet haben, eine Befüllung von Condition.clinicalStatus NICHT unterstützen, erscheint das MS nach übergreifender Definition und ein verpflichtender Testfall nicht angemessen.", "mustSupport": true }, { diff --git a/Resources/fsh-generated/resources/StructureDefinition-ISiKKontaktGesundheitseinrichtung.json b/Resources/fsh-generated/resources/StructureDefinition-ISiKKontaktGesundheitseinrichtung.json index 044f4554..fd80b995 100644 --- a/Resources/fsh-generated/resources/StructureDefinition-ISiKKontaktGesundheitseinrichtung.json +++ b/Resources/fsh-generated/resources/StructureDefinition-ISiKKontaktGesundheitseinrichtung.json @@ -5,7 +5,7 @@ "name": "ISiKKontaktGesundheitseinrichtung", "status": "active", "experimental": false, - "date": "2024-04-15", + "date": "2024-07-04", "publisher": "gematik GmbH", "description": "Dieses Profil ermöglicht die Herstellung eines Fallbezuges welcher in der Mehrheit der ISiK Szenarien im Krankenhaus essentiell ist.", "fhirVersion": "4.0.1", diff --git a/Resources/fsh-generated/resources/StructureDefinition-ISiKPatient.json b/Resources/fsh-generated/resources/StructureDefinition-ISiKPatient.json index fa4a74cc..ec2f6073 100644 --- a/Resources/fsh-generated/resources/StructureDefinition-ISiKPatient.json +++ b/Resources/fsh-generated/resources/StructureDefinition-ISiKPatient.json @@ -5,7 +5,7 @@ "name": "ISiKPatient", "status": "active", "experimental": false, - "date": "2024-04-15", + "date": "2024-07-04", "publisher": "gematik GmbH", "description": "Dieses Profil beschreibt die Nutzung von administrativen Patientendaten in ISiK-Szenarien.", "fhirVersion": "4.0.1", diff --git a/Resources/fsh-generated/resources/StructureDefinition-ISiKPersonImGesundheitsberuf.json b/Resources/fsh-generated/resources/StructureDefinition-ISiKPersonImGesundheitsberuf.json index d4a3ee8e..c47de1f3 100644 --- a/Resources/fsh-generated/resources/StructureDefinition-ISiKPersonImGesundheitsberuf.json +++ b/Resources/fsh-generated/resources/StructureDefinition-ISiKPersonImGesundheitsberuf.json @@ -5,7 +5,7 @@ "name": "ISiKPersonImGesundheitsberuf", "status": "active", "experimental": false, - "date": "2024-04-15", + "date": "2024-07-04", "publisher": "gematik GmbH", "description": "Dieses Profil ermöglicht die Nutzung von in Gesundheitsberufen tätigen Personen in ISiK Szenarien.", "fhirVersion": "4.0.1", diff --git a/Resources/fsh-generated/resources/StructureDefinition-ISiKProzedur.json b/Resources/fsh-generated/resources/StructureDefinition-ISiKProzedur.json index 43d44f1b..80634aa6 100644 --- a/Resources/fsh-generated/resources/StructureDefinition-ISiKProzedur.json +++ b/Resources/fsh-generated/resources/StructureDefinition-ISiKProzedur.json @@ -5,7 +5,7 @@ "name": "ISiKProzedur", "status": "active", "experimental": false, - "date": "2024-04-15", + "date": "2024-07-04", "publisher": "gematik GmbH", "description": "Diese Profil ermöglicht die Nutzung von Prozedur-bezogenen Informationen in ISiK Szenarien.", "fhirVersion": "4.0.1", diff --git a/Resources/fsh-generated/resources/StructureDefinition-ISiKValueSet.json b/Resources/fsh-generated/resources/StructureDefinition-ISiKValueSet.json index 600e6f69..3e84b769 100644 --- a/Resources/fsh-generated/resources/StructureDefinition-ISiKValueSet.json +++ b/Resources/fsh-generated/resources/StructureDefinition-ISiKValueSet.json @@ -5,7 +5,7 @@ "name": "ISiKValueSet", "status": "active", "experimental": false, - "date": "2024-04-15", + "date": "2024-07-04", "publisher": "gematik GmbH", "description": "Dieses Profil beschreibt die maschinenlesbare Auswahl von Codes für die Kodierung spezifischer FHIR-Elemente in ISiK-Szenarien", "fhirVersion": "4.0.1", diff --git a/Resources/fsh-generated/resources/StructureDefinition-ISiKVersicherungsverhaeltnisGesetzlich.json b/Resources/fsh-generated/resources/StructureDefinition-ISiKVersicherungsverhaeltnisGesetzlich.json index 0e7ae485..2576b9b9 100644 --- a/Resources/fsh-generated/resources/StructureDefinition-ISiKVersicherungsverhaeltnisGesetzlich.json +++ b/Resources/fsh-generated/resources/StructureDefinition-ISiKVersicherungsverhaeltnisGesetzlich.json @@ -5,7 +5,7 @@ "name": "ISiKVersicherungsverhaeltnisGesetzlich", "status": "active", "experimental": false, - "date": "2024-04-15", + "date": "2024-07-04", "publisher": "gematik GmbH", "description": "Dieses Profil ermöglicht die Darstellung eines gesetzlichen Versicherungsverhältnisses in ISiK Szenarien.", "fhirVersion": "4.0.1", diff --git a/Resources/fsh-generated/resources/StructureDefinition-ISiKVersicherungsverhaeltnisSelbstzahler.json b/Resources/fsh-generated/resources/StructureDefinition-ISiKVersicherungsverhaeltnisSelbstzahler.json index 6caa6933..1c65ea11 100644 --- a/Resources/fsh-generated/resources/StructureDefinition-ISiKVersicherungsverhaeltnisSelbstzahler.json +++ b/Resources/fsh-generated/resources/StructureDefinition-ISiKVersicherungsverhaeltnisSelbstzahler.json @@ -5,7 +5,7 @@ "name": "ISiKVersicherungsverhaeltnisSelbstzahler", "status": "active", "experimental": false, - "date": "2024-04-15", + "date": "2024-07-04", "publisher": "gematik GmbH", "description": "Dieses Profil ermöglicht Selbstzahler Szenarien in ISiK.", "fhirVersion": "4.0.1", diff --git a/Resources/fsh-generated/resources/StructureDefinition-PlannedEndDate.json b/Resources/fsh-generated/resources/StructureDefinition-PlannedEndDate.json index a5f53841..aab30e92 100644 --- a/Resources/fsh-generated/resources/StructureDefinition-PlannedEndDate.json +++ b/Resources/fsh-generated/resources/StructureDefinition-PlannedEndDate.json @@ -5,7 +5,7 @@ "name": "PlannedEndDate", "status": "active", "experimental": false, - "date": "2024-04-15", + "date": "2024-07-04", "publisher": "gematik GmbH", "fhirVersion": "4.0.1", "kind": "complex-type", diff --git a/Resources/fsh-generated/resources/StructureDefinition-PlannedStartDate.json b/Resources/fsh-generated/resources/StructureDefinition-PlannedStartDate.json index a68e4414..73da7546 100644 --- a/Resources/fsh-generated/resources/StructureDefinition-PlannedStartDate.json +++ b/Resources/fsh-generated/resources/StructureDefinition-PlannedStartDate.json @@ -5,7 +5,7 @@ "name": "PlannedStartDate", "status": "active", "experimental": false, - "date": "2024-04-15", + "date": "2024-07-04", "publisher": "gematik GmbH", "fhirVersion": "4.0.1", "kind": "complex-type", diff --git a/Resources/fsh-generated/resources/ValueSet-DiagnosesSCT.json b/Resources/fsh-generated/resources/ValueSet-DiagnosesSCT.json index 50405289..c6c80216 100644 --- a/Resources/fsh-generated/resources/ValueSet-DiagnosesSCT.json +++ b/Resources/fsh-generated/resources/ValueSet-DiagnosesSCT.json @@ -7,7 +7,7 @@ "url": "https://gematik.de/fhir/isik/v2/Basismodul/ValueSet/DiagnosesSCT", "experimental": false, "publisher": "gematik GmbH", - "date": "2024-04-15", + "date": "2024-07-04", "compose": { "include": [ { @@ -17,12 +17,22 @@ "property": "concept", "op": "is-a", "value": "404684003" - }, + } + ] + }, + { + "system": "http://snomed.info/sct", + "filter": [ { "property": "concept", "op": "is-a", "value": "272379006" - }, + } + ] + }, + { + "system": "http://snomed.info/sct", + "filter": [ { "property": "concept", "op": "is-a", diff --git a/Resources/fsh-generated/resources/ValueSet-ISiKAccountType.json b/Resources/fsh-generated/resources/ValueSet-ISiKAccountType.json index 05831a57..3e4a5b72 100644 --- a/Resources/fsh-generated/resources/ValueSet-ISiKAccountType.json +++ b/Resources/fsh-generated/resources/ValueSet-ISiKAccountType.json @@ -7,7 +7,7 @@ "url": "https://gematik.de/fhir/isik/v2/Basismodul/ValueSet/ISiKAccountType", "experimental": false, "publisher": "gematik GmbH", - "date": "2024-04-15", + "date": "2024-07-04", "compose": { "include": [ { diff --git a/Resources/fsh-generated/resources/ValueSet-ISiKLocationPhysicalType.json b/Resources/fsh-generated/resources/ValueSet-ISiKLocationPhysicalType.json index 76048d3b..e5125b1f 100644 --- a/Resources/fsh-generated/resources/ValueSet-ISiKLocationPhysicalType.json +++ b/Resources/fsh-generated/resources/ValueSet-ISiKLocationPhysicalType.json @@ -6,7 +6,7 @@ "url": "https://gematik.de/fhir/isik/v2/Basismodul/ValueSet/ISiKLocationPhysicalType", "experimental": false, "publisher": "gematik GmbH", - "date": "2024-04-15", + "date": "2024-07-04", "compose": { "include": [ { diff --git a/Resources/fsh-generated/resources/ValueSet-ProzedurenCodesSCT.json b/Resources/fsh-generated/resources/ValueSet-ProzedurenCodesSCT.json index 627ee441..4ba18e06 100644 --- a/Resources/fsh-generated/resources/ValueSet-ProzedurenCodesSCT.json +++ b/Resources/fsh-generated/resources/ValueSet-ProzedurenCodesSCT.json @@ -7,7 +7,7 @@ "url": "https://gematik.de/fhir/isik/v2/Basismodul/ValueSet/ProzedurenCodesSCT", "experimental": false, "publisher": "gematik GmbH", - "date": "2024-04-15", + "date": "2024-07-04", "compose": { "include": [ { diff --git a/Resources/fsh-generated/resources/ValueSet-ProzedurenKategorieSCT.json b/Resources/fsh-generated/resources/ValueSet-ProzedurenKategorieSCT.json index 3bc8eaf4..baa16b13 100644 --- a/Resources/fsh-generated/resources/ValueSet-ProzedurenKategorieSCT.json +++ b/Resources/fsh-generated/resources/ValueSet-ProzedurenKategorieSCT.json @@ -7,7 +7,7 @@ "url": "https://gematik.de/fhir/isik/v2/Basismodul/ValueSet/ProzedurenKategorieSCT", "experimental": false, "publisher": "gematik GmbH", - "date": "2024-04-15", + "date": "2024-07-04", "compose": { "include": [ { diff --git a/Resources/input/fsh/ruleset.fsh b/Resources/input/fsh/ruleset.fsh index 2e7fd91e..557a6f58 100644 --- a/Resources/input/fsh/ruleset.fsh +++ b/Resources/input/fsh/ruleset.fsh @@ -1,14 +1,14 @@ -RuleSet: Meta -* ^status = #active -* ^experimental = false -* ^publisher = "gematik GmbH" -* ^date = "2024-04-15" - -RuleSet: Meta-CapabilityStatement -* status = #active -* experimental = false -* version = "2.0.6" -* publisher = "gematik GmbH" -* date = "2024-04-15" -* implementationGuide = "https://gematik.de/fhir/isik/v2/Basismodul/ImplementationGuide|2.0.5" -* url = "https://gematik.de/fhir/isik/v2/Basismodul/CapabilityStatement/basis-server" +RuleSet: Meta +* ^status = #active +* ^experimental = false +* ^publisher = "gematik GmbH" +* ^date = "2024-07-04" + +RuleSet: Meta-CapabilityStatement +* status = #active +* experimental = false +* version = "2.0.7" +* publisher = "gematik GmbH" +* date = "2024-07-04" +* implementationGuide = "https://gematik.de/fhir/isik/v2/Basismodul/ImplementationGuide|2.0.7" +* url = "https://gematik.de/fhir/isik/v2/Basismodul/CapabilityStatement/basis-server" diff --git a/Resources/input/fsh/valueSets.fsh b/Resources/input/fsh/valueSets.fsh index bbb719ad..e9c71bdd 100644 --- a/Resources/input/fsh/valueSets.fsh +++ b/Resources/input/fsh/valueSets.fsh @@ -3,9 +3,11 @@ Id: DiagnosesSCT Description: "Enthaelt alle SNOMED Clinical finding, Event und Situation with explicit context codes" * insert Meta * include codes from system SNOMED_CT - where concept is-a #404684003 and - concept is-a #272379006 and - concept is-a #243796009 + where concept is-a #404684003 +* include codes from system SNOMED_CT + where concept is-a #272379006 +* include codes from system SNOMED_CT + where concept is-a #243796009 ValueSet: ProzedurenCodesSCT Id: ProzedurenCodesSCT diff --git a/Resources/sushi-config.yaml b/Resources/sushi-config.yaml index 27d3023e..725a6f6d 100644 --- a/Resources/sushi-config.yaml +++ b/Resources/sushi-config.yaml @@ -1,16 +1,16 @@ -canonical: https://gematik.de/fhir/isik/v2/Basismodul -fhirVersion: 4.0.1 -FSHOnly: true -applyExtensionMetadataToRoot: false -id: Implementierungsleitfaden ISiK-Basismodul Stufe 2 2.0.5 -name: Implementierungsleitfaden ISiK-Basismodul Stufe 2 2.0.5 -status: active -version: "2.0.6" -publisher: - name: Gematik GmbH - url: https://www.gematik.de/ - email: ISiK@gematik.de -dependencies: - de.basisprofil.r4: 1.4.0 - hl7.fhir.r4.core: 4.0.1 - hl7.fhir.extensions.r5: 4.0.1 +canonical: https://gematik.de/fhir/isik/v2/Basismodul +fhirVersion: 4.0.1 +FSHOnly: true +applyExtensionMetadataToRoot: false +id: Implementierungsleitfaden ISiK-Basismodul Stufe 2 2.0.5 +name: Implementierungsleitfaden ISiK-Basismodul Stufe 2 2.0.5 +status: active +version: "2.0.7" +publisher: + name: Gematik GmbH + url: https://www.gematik.de/ + email: ISiK@gematik.de +dependencies: + de.basisprofil.r4: 1.4.0 + hl7.fhir.r4.core: 4.0.1 + hl7.fhir.extensions.r5: 4.0.1 diff --git a/package.json b/package.json index bccee19f..a73b8d69 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,10 @@ -{ - "name": "de.gematik.isik-basismodul", - "version": "2.0.6", - "fhirVersions": [ - "4.0.1" - ], - "dependencies": { - "de.basisprofil.r4": "1.4.0" - } +{ + "name": "de.gematik.isik-basismodul", + "version": "2.0.7", + "fhirVersions": [ + "4.0.1" + ], + "dependencies": { + "de.basisprofil.r4": "1.4.0" + } } \ No newline at end of file diff --git a/scripts/config.yaml b/scripts/config.yaml new file mode 100644 index 00000000..ab23a178 --- /dev/null +++ b/scripts/config.yaml @@ -0,0 +1,26 @@ +package.json: + - type: version + regex: '("version":\s*")([\d\.]+.*)(")' +sushi-config.yaml: + - type: version + regex: '(version:\s*)(\d+\.\d+\.\d+.*)()' +ruleset.fsh: + - type: version + regex: + - '(\*\s*version\s*=\s*")([\d\.]+.*)(")' + - '(\*\s*\^version\s*=\s*")([\d\.]+.*)(")' + - '(\*\s*implementationGuide\s*=\s*".*\|)([\d\.]+.*)(")' + - type: date + regex: + - '(\*\s*date\s*=\s*")(\d+\-\d+\-\d+)(")' + - '(\*\s*\^date\s*=\s*")(\d+\-\d+\-\d+)(")' + format: '%Y-%m-%d' +Einfuehrung.md: + - type: version + regex: '(Version: \s*)(\d+\.\d+\.\d+.*)()' + - type: date + regex: '(Datum:\s*)(\d+\.\d+\.\d+.*)()' + format: '%d.%m.%Y' +ImplementierungsleitfadenIsiK_basismodul.json: + - type: version + regex: '("version":\s*")(\d+\.\d+\.\d+.*)(",)' \ No newline at end of file diff --git a/scripts/release_publish.py b/scripts/release_publish.py index 9195808f..cf93aa75 100644 --- a/scripts/release_publish.py +++ b/scripts/release_publish.py @@ -1,124 +1,111 @@ +import datetime import re import subprocess import os import argparse from datetime import date +import yaml -class FileWithVersionToUpdate: - def __init__(self, filename, version_regex) -> None: - self.filename = filename - self.version_regex = version_regex - self.location = None - - def set_file_location(self, location): - self.location = location -class FileWithDateToUpdate: - def __init__(self, filename, date_regex) -> None: +class FileTypeCombinationToUpdate: + def __init__(self, filename, content_type, regex_list, format=None) -> None: self.filename = filename - self.date_regex = date_regex + self.content_type = content_type + self.regex_list = regex_list + self.format = format self.location = None def set_file_location(self, location): self.location = location -# class FileWithDateToUpdate: -# def __init__(self, filename, date_regex, format) -> None: -# self.filename = filename -# self.date_regex = date_regex -# self.location = None -# self.format = format -# def set_file_location(self, location): -# self.location = location - - +def load_config_file(config_file_path): + with open(config_file_path, 'r') as config_file: + return yaml.safe_load(config_file) def get_new_release_version_from_branch_name() -> str: git_branch = subprocess.check_output(['git', 'rev-parse', '--abbrev-ref', 'HEAD']).strip().decode() return git_branch -def replace_version_in_files(files : list, new_release_version: str): - if files is None: - print("Error: No Files found!") - return - for file in files: - replace_version_in_file(file,new_release_version) +def modify_TC_branch_name_to_version(git_branch): + if git_branch.startswith('TC-'): + version = git_branch.lstrip('TC-') + elif git_branch.startswith('TC_'): + version = git_branch.lstrip('TC_') + return version + +def create_files_to_update_list(config): + files_to_update = [] + for filename, replacements in config.items(): + for replacement in replacements: + files_to_update.append( + FileTypeCombinationToUpdate( + filename, + replacement["type"], + replacement["regex"] if isinstance(replacement["regex"], list) else [replacement["regex"]], + replacement.get("format", None), + ) + ) + return files_to_update -def replace_version_in_file(file: FileWithVersionToUpdate,new_release_version: str): - with open(file.location, 'r') as input_file: - input_text = input_file.read() - output_text = re.sub(file.version_regex, rf'\g<1>{new_release_version}\g<3>', input_text) - print(f"Info: Replaced version with '{new_release_version}' in file '{file.location}'.") +def locate_files_in_current_project(files: list): + located_files = [] + for current_file in files: + file_location = find_file(current_file.filename, ".") + if file_location is not None: + current_file.set_file_location(file_location) + located_files.append(current_file) + else: + print(f"Warning: File '{current_file.filename}' not found.") + return located_files - with open(file.location, 'w') as output_file: - output_file.write(output_text) -def replace_date_in_files(files : list, new_release_date: str): +def find_file(name, path="."): + for root, dirs, files in os.walk(path): + if name in files: + print(f"Info: Found '{name}' in {root}.") + return os.path.join(root, name) + return None + + +def replace_content_in_files(files: list, new_release_version: str, new_date: datetime): if files is None: - print("Error: No Files found!") + print("Error: No files found!") return - for file in files: - replace_date_in_file(file,new_release_date) + for FileTypeCombination in files: + if FileTypeCombination.content_type == "version": + replace_version_in_file(FileTypeCombination, new_release_version) + elif FileTypeCombination.content_type == "date": + replace_date_in_file(FileTypeCombination, new_date) + -def replace_date_in_file(file: FileWithVersionToUpdate, new_date: str): +def replace_version_in_file(file: FileTypeCombinationToUpdate, new_release_version: str): with open(file.location, 'r') as input_file: input_text = input_file.read() - #output_text = re.sub(file.date_regex, rf'\g<1>{new_date.strftime(file.format)}\g<3>', input_text) #see https://www.programiz.com/python-programming/datetime#:~:text=Python%20format%20datetime&text=It%27s%20more%20common%20to%20use,()%20methods%20to%20handle%20this. - output_text = re.sub(file.date_regex, rf'\g<1>{new_date}\g<3>', input_text) - print(f"Info: Replaced date with '{new_date}' in file '{file.location}'.") + for regex in file.regex_list: + input_text = re.sub(regex, rf'\g<1>{new_release_version}\g<3>', input_text) + + print(f"Info: Replaced version with '{new_release_version}' in file '{file.location}'.") with open(file.location, 'w') as output_file: - output_file.write(output_text) - -def get_file_to_update_version_list(): - file_list = [] - file_list.append(FileWithVersionToUpdate('package.json', r'("version":\s*")([\d\.]+.*)(")')) - file_list.append(FileWithVersionToUpdate('sushi-config.yaml', r'(version:\s*")(\d+\.\d+\.\d+.*)(")')) - file_list.append(FileWithVersionToUpdate('ruleset.fsh', r'(\*\s*version\s*=\s*")([\d\.]+.*)(")')) - file_list.append(FileWithVersionToUpdate('Einfuehrung.md', r'(Version: \s*)(\d+\.\d+\.\d+.*)()')) - return file_list - -def get_file_to_update_date_list(): - file_list = [] - #file_list.append(FileWithDateToUpdate('ruleset.fsh', r'(date\s*=\s*")(\d+\-\d+\-\d+)(")'), '%m/%d/%Y' ) - #file_list.append(FileWithDateToUpdate('Einfuehrung.md', r'(Datum: \s*)(\d+\.\d+\.\d+)()') , '%m/%d/%Y') - file_list.append(FileWithDateToUpdate('ruleset.fsh', r'(\*\s*date\s*=\s*")(\d+\-\d+\-\d+)(")')) - file_list.append(FileWithDateToUpdate('ruleset.fsh', r'(\*\s*\^date\s*=\s*")(\d+\-\d+\-\d+)(")')) - file_list.append(FileWithDateToUpdate('Einfuehrung.md', r'(Datum:\s*)(\d+\.\d+\.\d+.*)()')) - return file_list + output_file.write(input_text) -def locate_files_in_current_project(files: list): - return_list = [] - for current_file in files: - file_location = find_file(current_file.filename, ".") - if file_location is not None: - current_file.set_file_location(file_location) - return_list.append(current_file) - else: - print(f"Warning: File '{current_file.filename}' not found.") - return return_list +def replace_date_in_file(file: FileTypeCombinationToUpdate, new_date: datetime): + with open(file.location, 'r') as input_file: + input_text = input_file.read() -def find_file(name, path="."): - for root, dirs, files in os.walk(path): + for regex in file.regex_list: + input_text = re.sub(regex, rf'\g<1>{new_date.strftime(file.format)}\g<3>', input_text) - if name in files: - print(f"Info: Found '{name}' in {root}.") - return os.path.join(root, name) - return None + print(f"Info: Replaced date with '{new_date.strftime(file.format)}' in file '{file.location}'.") -def get_latest_release_tag(): - cmd = 'git describe --abbrev=0 --tags --match "v*.*.*" HEAD' - try: - output = subprocess.check_output(cmd, shell=True) - return output.decode().strip() - except subprocess.CalledProcessError: - return None + with open(file.location, 'w') as output_file: + output_file.write(input_text) def output_commit_messages_since_last_release(): latest_release_tag = get_latest_release_tag() @@ -133,34 +120,46 @@ def output_commit_messages_since_last_release(): except subprocess.CalledProcessError: print("Warning: Failed to get commit messages.") -def main(): - today = date.today() +def get_latest_release_tag(): + cmd = 'git describe --abbrev=0 --tags --match "v*.*.*" HEAD' + try: + output = subprocess.check_output(cmd, shell=True) + return output.decode().strip() + except subprocess.CalledProcessError: + return None - parser = argparse.ArgumentParser(description='Update release version number') + +def main(): + parser = argparse.ArgumentParser(description='Update release version number and date') parser.add_argument('-b', '--branch', action='store_true', help='get new version from branch name') parser.add_argument('-v', '--version', type=str, help='specify new version number') + parser.add_argument('-d', '--date', type=str, help='specify custom date for release') + parser.add_argument('-c', '--config', type=str, default='config.yaml', help='specify config file') parser.add_argument('-o', '--output', action='store_true', help='output commit messages since last release') - # TODO new argument -d if not date_time now - args = parser.parse_args() if args.version: new_release_version = args.version elif args.branch: new_release_version = get_new_release_version_from_branch_name() + if new_release_version.startswith('TC'): + new_release_version = modify_TC_branch_name_to_version(new_release_version) else: parser.error('No new release version specified. Please use either -v or -b to specify the new release version.') - if args.output: - output_commit_messages_since_last_release() + if args.date: + custom_date = datetime.datetime.strptime(args.date, '%d.%m.%Y').date() + else: + custom_date = date.today() - file_to_update_version_list = get_file_to_update_version_list() - file_version_list = locate_files_in_current_project(file_to_update_version_list) - replace_version_in_files(file_version_list, new_release_version) + config_file_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), args.config) + config = load_config_file(config_file_path) + files_to_update = create_files_to_update_list(config) + located_files = locate_files_in_current_project(files_to_update) + replace_content_in_files(located_files, new_release_version, custom_date) - file_to_update_date_list = get_file_to_update_date_list() - file_date_list = locate_files_in_current_project(file_to_update_date_list) - replace_date_in_files(file_date_list, today) + if args.output: + output_commit_messages_since_last_release() if __name__ == "__main__": main() \ No newline at end of file