diff --git a/input/fsh/instances/encounter/EncounterAccidentBroennimann.fsh b/input/fsh/instances/encounter/EncounterAccidentBroennimann.fsh index 14a465e..8ef84b6 100644 --- a/input/fsh/instances/encounter/EncounterAccidentBroennimann.fsh +++ b/input/fsh/instances/encounter/EncounterAccidentBroennimann.fsh @@ -4,9 +4,8 @@ Usage: #example Title: "Encounter Accident Broennimann" Description: "Inpatient Encounter of Mrs. Broennimann which is flagged as an accident" * meta.source = "https://www.bfh.ch/de/studium/bachelor/medizininformatik/" -* identifier[VisitNumber].type = $v2-0203#VN "Visit number" -* identifier[VisitNumber].system = "http://example.com/fallnummerdomain" -* identifier[VisitNumber].value = "12345" +* identifier[CaseNumber].system = "http://example.com/fallnummerdomain" +* identifier[CaseNumber].value = "12345" * status = #finished * class = $v3-ActCode#IMP "inpatient encounter" * priority = $bfs-medstats-18-admittype#1 "Notfall (Behandlung innerhalb von 12 Std. unabdingbar)" diff --git a/input/fsh/instances/encounter/EncounterAmbulantBroennimann.fsh b/input/fsh/instances/encounter/EncounterAmbulantBroennimann.fsh index 45b5838..b9d370b 100644 --- a/input/fsh/instances/encounter/EncounterAmbulantBroennimann.fsh +++ b/input/fsh/instances/encounter/EncounterAmbulantBroennimann.fsh @@ -2,7 +2,7 @@ Instance: EncounterAmbulantBroennimann InstanceOf: CHCoreEncounter Usage: #example Title: "Encounter Ambulant Broennimann" -Description: "Ambulant Encounter of Mrs. Broennimann, representing the visit number (Fallnummer) and the BFS variables" +Description: "Ambulant Encounter of Mrs. Broennimann" * meta.source = "https://www.bfh.ch/de/studium/bachelor/medizininformatik/" * identifier.type = $v2-0203#VN "Visit number" * identifier.system = "http://example.com/fallnummerdomain" diff --git a/input/fsh/logical/CHAdministrativeCase.fsh b/input/fsh/logical/CHAdministrativeCase.fsh new file mode 100644 index 0000000..ad60943 --- /dev/null +++ b/input/fsh/logical/CHAdministrativeCase.fsh @@ -0,0 +1,43 @@ +Logical: CHAdministrativeCase +Id: ch-administrative-case +Title: "CH Administrative Case" +Description: "Defines the conceptual model of a Swiss administrative case (Fall / Cas / Caso), a logical artifact defined for national health administration and billing guidelines." + +* identifier 1..1 string "Case identifier/number" "The identifying number of the administrative case (visit number, hospitalization number, billing number, etc.). A local identifier meaningful within its assigning system, and not intended to be globally unique." +* sourceSystem 0..1 uri "Source system" "The source system that assigns the case number, e.g. a hospital information system, a billing system, etc." +* admissionDate 0..1 dateTime "Admission date/time" "When and individual was admitted to the healthcare provider." +* admissionLocation 0..1 string "Admission location" "Physical location or medical division which admitted the invidual" +* dischargeDate 0..1 dateTime "Discharge date/time" "When and individual was discharged from the healthcare provider." +* dischargeLocation 0..1 string "Discharge location" "Physical location or medical division which discharged the invidual" + + +Mapping: CHCoreEncounterToCHAdministrativeCase +Id: ch-core-encounter-to-ch-administrative-case +Title: "CH Core Encounter to Administrative Case" +Source: CHCoreEncounter +Target: "CHAdministrativeCase" +Description: """ +CH Core Encounter resources can be associated with an administrative case, if and only if, the `Encounter.identifier:CaseNumber` identifier is provided. +""" + +* identifier[CaseNumber].value -> "CHAdministrativeCase.identifier" +* identifier[CaseNumber].system -> "CHAdministrativeCase.sourceSystem" +* period.start -> "CHAdministrativeCase.admissionDate" +* period.end -> "CHAdministrativeCase.dischargeDate" + + +Mapping: CHCoreEpisodeOfCareToCHAdministrativeCase +Id: ch-core-episodeofcare-to-ch-administrative-case +Title: "CH Core Episode of Care to Administrative Case" +Source: CHCoreEpisodeOfCare +Target: "CHAdministrativeCase" +Description: """ +CH Core EpisodeofCare resources can be associated with an administrative case, if and only if, the `EpisodeOfCare.identifier:CaseNumber` identifier is provided. +""" + +* identifier[CaseNumber].value -> "CHAdministrativeCase.identifier" +* identifier[CaseNumber].system -> "CHAdministrativeCase.sourceSystem" +* period.start -> "CHAdministrativeCase.admissionDate" +* period.end -> "CHAdministrativeCase.dischargeDate" + + diff --git a/input/fsh/profiles-resources/CHCoreEncounter.fsh b/input/fsh/profiles-resources/CHCoreEncounter.fsh index 9410093..d155bf0 100644 --- a/input/fsh/profiles-resources/CHCoreEncounter.fsh +++ b/input/fsh/profiles-resources/CHCoreEncounter.fsh @@ -2,24 +2,28 @@ Profile: CHCoreEncounter Parent: Encounter Id: ch-core-encounter Title: "CH Core Encounter" -Description: "Base definition of the Encounter resource for use in Swiss specific use cases." +Description: "Base definition of the `Encounter` resource for use in Swiss-specific use cases." -* ^purpose = "Core patient demographics which can be shared" -* . ^short = "CH Core Encounter" -* . ^definition = "This is basic constraint on Encounter for use in CH Core resources." * identifier ^slicing.discriminator.type = #value * identifier ^slicing.discriminator.path = "$this" * identifier ^slicing.rules = #open * identifier contains VisitNumber 0..* -* identifier[VisitNumber] ^short = "Visit number (Fallnummer)" +* identifier[VisitNumber] ^short = "Administrative visit number (Besuchsnummer / Numero della visita | Numéro de visite)" +* identifier[VisitNumber] ^definition = "The identifying number for the visit (Besuch | Visita | Visite) associated with the Encounter (if relevant) for administrative and/or billing purposes." * identifier[VisitNumber] ^patternIdentifier.type = $v2-0203#VN * identifier[VisitNumber].system 1.. * identifier[VisitNumber].value 1.. -* class ^short = "AMB | IMP : See mapping from BFS Medizinische Statistik BFS Encounter Class to FHIR" +* identifier contains + CaseNumber 0..* +* identifier[CaseNumber] ^short = "Administrative case number (Fallnummer / Numero del caso | Cas numéro)" +* identifier[CaseNumber] ^definition = "The identifying number for the case (Fall | Caso | Cas) associated with the Encounter (if relevant) for administrative and/or billing purposes." +* identifier[CaseNumber] ^patternIdentifier.type = $v3-ActCode#PBILLACCT +* identifier[CaseNumber].system 1.. +* identifier[CaseNumber].value 1.. * class ^definition = "See mapping from BFS Medizinische Statistik [BFS Encounter Class to FHIR mapping](http://fhir.ch/ig/ch-term/ConceptMap-bfs-encounter-class-to-fhir.html)" * priority from $bfs-medstats-18-admittype_1 (extensible) -* priority ^short = "BFS Medizinische Statistik - Eintrittsart / Mode d’admission / Genere di ricovero" +* priority ^short = "Admission mode (Eintrittsart / Mode d’admission / Genere di ricovero)" * subject 1.. * subject only Reference(CHCorePatient or Group) * participant.type from http://fhir.ch/ig/ch-core/ValueSet/ch-core-encounter-participation-type (extensible) @@ -35,7 +39,7 @@ Description: "Base definition of the Encounter resource for use in Swiss specifi BfsMsEncounterType named BfsMsEncounterType 0..1 and BfsDischargeDecision named BfsDischargeDecision 0..1 and BfsDischargeDestination named BfsDischargeDestination 0..1 -* hospitalization.extension[BfsAdmitRole] ^short = "BFS Medizinische Statistik - Einweisende Instanz" +* hospitalization.extension[BfsAdmitRole] ^short = "Referrer type - (Einweisende Instanz / Décision d’envoi / Istanza ricoverante)" * hospitalization.extension[accident] ^short = "Flag if hospitalization was due to an accident" * hospitalization.extension[readmission] ^short = "Flag to indicate if it is a suspected readmission" * hospitalization.extension[BfsMsEncounterType] ^short = "BFS Medizinische Statistik - Liegeklasse (Encounter Type)" @@ -44,11 +48,10 @@ Description: "Base definition of the Encounter resource for use in Swiss specifi * hospitalization.origin only Reference(CHCoreLocation or CHCoreOrganization) * hospitalization.admitSource from $bfs-medstats-17-admitsource_1 (extensible) -* hospitalization.admitSource ^short = "BFS Medizinische Statistik - Aufenthaltsort vor dem Eintritt / Séjour avant l’admission / Luogo di soggiorno prima dell’ammissione" +* hospitalization.admitSource ^short = "Location of the patient prior to admission (Aufenthaltsort vor dem Eintritt / Séjour avant l’admission / Luogo di soggiorno prima dell’ammissione)" * hospitalization.destination only Reference(CHCoreLocation or CHCoreOrganization) * hospitalization.dischargeDisposition from $bfs-medstats-29-dischargeencounter_1 (preferred) -* hospitalization.dischargeDisposition ^short = "BFS Medizinische Statistik - Behandlung nach Austritt" -* hospitalization.dischargeDisposition ^binding.description = "BFS Medizinische Statistik - Behandlung nach Austritt" +* hospitalization.dischargeDisposition ^short = "Type of therapy/disposition after discharge (Behandlung nach Austritt / Prise en charge après la sortie / Trattamento dopo l’uscita)" * location.location only Reference(CHCoreLocation) * serviceProvider only Reference(CHCoreOrganization) diff --git a/input/fsh/profiles-resources/CHCoreEpisodeOfCare.fsh b/input/fsh/profiles-resources/CHCoreEpisodeOfCare.fsh new file mode 100644 index 0000000..22e4f26 --- /dev/null +++ b/input/fsh/profiles-resources/CHCoreEpisodeOfCare.fsh @@ -0,0 +1,25 @@ +Profile: CHCoreEpisodeOfCare +Parent: EpisodeOfCare +Id: ch-core-episodeofcare +Title: "CH Core EpisodeOfCare" +Description: "Base definition of the `EpisodeOfCare` resource for use in Swiss-specific use cases." + +* identifier ^slicing.discriminator.type = #value +* identifier ^slicing.discriminator.path = "$this" +* identifier ^slicing.rules = #open +* identifier contains + CaseNumber 0..* +* identifier[CaseNumber] ^short = "Administrative case number (Fallnummer / Numero del caso | Cas numéro)" +* identifier[CaseNumber] ^definition = "The identifying number for the case (Fall | Caso | Cas) associated with the EpisodeOfCare (if relevant) for administrative and/or billing purposes." +* identifier[CaseNumber] ^patternIdentifier.type = $v3-ActCode#PBILLACCT +* identifier[CaseNumber].system 1.. +* identifier[CaseNumber].value 1.. + + +* diagnosis.condition only Reference(CHCoreCondition) +* patient only Reference(CHCorePatient) +* managingOrganization only Reference(CHCoreOrganization) +* referralRequest only Reference(CHCoreServiceRequest) +* careManager only Reference(CHCorePractitioner or CHCorePractitionerRole) + + diff --git a/input/intro-notes/StructureDefinition-ch-administrative-case-intro.md b/input/intro-notes/StructureDefinition-ch-administrative-case-intro.md new file mode 100644 index 0000000..42ae9c6 --- /dev/null +++ b/input/intro-notes/StructureDefinition-ch-administrative-case-intro.md @@ -0,0 +1,19 @@ + +This logical model is based on the [`AdministrativeCase`](https://www.biomedit.ch/rdf/sphn-schema/sphn#AdministrativeCase) schema defined by the Swiss Personalized Healthcare Network (SPHN) and is provided as conceptual implementation guidance. + +### Scope and Usage + +This is **NOT** a resource and cannot appear directly in FHIR instances. It defined a logical pattern adhered to by other resources. It serves two purposes: + +* It provides implementation guidance to help map internal business logic conceptually to the HL7 CH Core FHIR resources used for data exchange. +* It includes explicit mappings that document where corresponding administrative case information can be found, when present. + +### Mapping to FHIR + +The table below lists the FHIR resources that can instanciate the logical model and their corresponding mappings. + +| FHIR Profile | Mapping Details | Scope +|-------|-------|-------| +| [`CH Core Encounter`](StructureDefinition-ch-core-encounter.html) | [`CH Core Encounter to Administrative Case`](StructureDefinition-ch-core-encounter-mappings.html) | Typically used for inpatient care | +|-------|-------|-------| +| [`CH Core EpisodeOfCare`](StructureDefinition-ch-core-episodeofcare.html) | [`CH Core EpisodeOfCare to Administrative Case`](StructureDefinition-ch-core-episodeofcare-mappings.html) | Typically used for outpatient care | \ No newline at end of file diff --git a/input/intro-notes/StructureDefinition-ch-core-encounter-intro.md b/input/intro-notes/StructureDefinition-ch-core-encounter-intro.md new file mode 100644 index 0000000..a5e1c40 --- /dev/null +++ b/input/intro-notes/StructureDefinition-ch-core-encounter-intro.md @@ -0,0 +1,6 @@ + +### Scope and Usage + +This profile constrains the base FHIR `Encounter` resource to support the exchange of patient visit and hospitalization data in Switzerland. It aligns with the data requirements for [BFS medical statistics](https://www.bfs.admin.ch/bfs/de/home/statistiken/gesundheit/erhebungen/ms.assetdetail.12167417.html) reporting (Federal Statistical Office). + +If the encounter is associated with an administrative case (Fall / Cas / Caso), the `identifier:CaseNumber` slice **SHOULD** be used to report it. However, this profile `CHCoreEncounter` does not represent an administrative case itself, it represents the clinical encounter that may be linked to such a case (see [here](StructureDefinition-ch-administrative-case.html) for details). diff --git a/input/intro-notes/StructureDefinition-ch-core-episodeofcare-intro.md b/input/intro-notes/StructureDefinition-ch-core-episodeofcare-intro.md new file mode 100644 index 0000000..119127b --- /dev/null +++ b/input/intro-notes/StructureDefinition-ch-core-episodeofcare-intro.md @@ -0,0 +1,6 @@ + +### Scope and Usage + +This profile constrains the base FHIR `EpisodeOfCare` resource to support the exchange of patient clinical episodes, programs, and problems in Switzerland. + +If the episode of care is associated with an administrative case (Fall / Cas / Caso), the `identifier:CaseNumber` slice **SHOULD** be used to report it. However, this profile `CHCoreEpisodeOfCare` does not represent an administrative case itself, it represents the clinical episode of care that may be linked to such a case (see [here](StructureDefinition-ch-administrative-case.html) for details).