3.1. Logical models
Logical Models represent data structures, and contain data elements and their constraints and relationships. They allow data requirements to be described from a functional perspective. In this IG, the functional model is represented by FHIR Logical Models (note that this link redirects to the R5 specification, as there is no dedicated page for Logical Models in the R4 specification). These use FHIR to capture the data structures (namely by specifying a StructureDefinition and underlying ElementDefinitions, for each data structure), but they are not (directly) attached to FHIR resources.
The Logical Models contain all functional concepts, including corresponding datatype, terminology binding (if applicable) and an id.
- For each concept, an id is assigned by MedMij based on the corresponding element in the Mercurius dataset defined by Palga. These ids are also added as mappings in the FHIR profiles, and therefore form the linking pin between Logical Models and FHIR profiles.
- For each concept it is indicated whether it is repeating (i.e. by setting its maximum cardinality to
1or*). Moreover, for each concept it is indicated whether it is (conditionally) required by setting the minimum cardinality to1(or adding a constraint which specifies when the concept is required). - The FHIR datatypes are used in the Logical Models, even though these might bring 'physical' constraints, formats, etc. into the abstract logical data models which are not intended or applicable on the logical level. For instance, elements of the Attachment datatype need to satisfy the att-1 constraint, which states that the element SHALL have a
contentType, provided the element has non-emptydata. Even though this constraint makes sense on a technical level, the aforementioned attributescontentTypeanddataare not present in a logical data model. Therefore, such constraints may be 'ignored' in the Logical Models; instead, these constraints are taken into account in the corresponding FHIR profiles. - Since the Logical Models defined in this IG are meant to represent the use case,
.abstractis set to false. - For all Logical Models the scope is implicitly set to a single patient (with the exception of the Patient Logical Model, in which the scope is explicit). This relation is not explicitly modeled, similar to the approach of the zibs.
3.1.1. Patient
| LmPatient (path-lm-Patient) | Element | ||
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| Name | 1..1 | BackboneElement | |
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| modifierExtension | Σ ?! C | 0..* | Extension |
| Initials | 1..1 | string | |
| FamilyName | 1..1 | BackboneElement | |
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| modifierExtension | Σ ?! C | 0..* | Extension |
| Prefix | 0..1 | string | |
| LastName | 1..1 | string | |
| Gender | 1..1 | codeBinding | |
| BirthInformation | 1..1 | BackboneElement | |
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| modifierExtension | Σ ?! C | 0..* | Extension |
| BirthDate | 1..1 | date | |
| BirthPlace | 0..1 | string | |
| BirthCountry | 0..1 | string | |
| Address | 0..1 | BackboneElement | |
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| modifierExtension | Σ ?! C | 0..* | Extension |
| Street | 0..1 | string | |
| HouseNumber | 0..1 | string | |
| PostalCode | 0..1 | string | |
| City | 0..1 | string |
--- We have skipped the narrative for better readability of the resource ---
</text>
</identifier>
</telecom>
</contact>
<purpose value="This LogicalModel represents the Patient building block for patient use cases in the context of the information standard Pathology (Pathologie)." />
<copyright value="Copyright and related rights waived via CC0, https://creativecommons.org/publicdomain/zero/1.0/. This does not apply to information from third parties, for example a medical terminology system. The implementer alone is responsible for identifying and obtaining any necessary licenses or authorizations to utilize third party IP in connection with the specification or otherwise." />
</mapping>
</element>
</type>
</element>
</type>
</mapping>
</element>
</type>
</element>
</type>
</mapping>
</mapping>
</element>
</type>
</mapping>
</mapping>
</element>
</type>
</binding>
</mapping>
</element>
</type>
</element>
</type>
</mapping>
</mapping>
</element>
</type>
</mapping>
</element>
</type>
</mapping>
</element>
</type>
</element>
</type>
</mapping>
</element>
</type>
</mapping>
</element>
<comment value="Dutch postal codes contain 4 numerical characters, a space and 2 letters in uppercase (nnnn AA). Codes attain values between 1000 and 9999. If the postal code is unknown, the dummy _0000 XX_ is used.\n\nForeign postal codes are expressed in free text. If the postal code is unknown, the dummy _0009 XX_ is used." />
</type>
</mapping>
</mapping>
</element>
</type>
</mapping>
</element>
</differential>
</StructureDefinition>
{
--- We have skipped the narrative for better readability of the resource ---
},
],
{
}
],
"purpose": "This LogicalModel represents the Patient building block for patient use cases in the context of the information standard Pathology (Pathologie).",
"copyright": "Copyright and related rights waived via CC0, https://creativecommons.org/publicdomain/zero/1.0/. This does not apply to information from third parties, for example a medical terminology system. The implementer alone is responsible for identifying and obtaining any necessary licenses or authorizations to utilize third party IP in connection with the specification or otherwise.",
],
{
"Patiënt"
]
},
{
"Naam"
],
]
},
{
"Voorletters"
],
],
{
}
]
},
{
"Geslachtsnaam"
],
]
},
{
"Voorvoegsels"
],
],
{
},
{
}
]
},
{
"Achternaam"
],
],
{
},
{
}
]
},
{
"Geslacht"
],
],
},
{
}
]
},
{
"GeboorteInformatie"
],
]
},
{
"Geboortedatum"
],
],
{
},
{
}
]
},
{
"Geboorteplaats"
],
],
{
}
]
},
{
"Geboorteland"
],
],
{
}
]
},
{
"Adres"
],
]
},
{
"Straat"
],
],
{
}
]
},
{
"Huisnummer"
],
],
{
}
]
},
{
"comment": "Dutch postal codes contain 4 numerical characters, a space and 2 letters in uppercase (nnnn AA). Codes attain values between 1000 and 9999. If the postal code is unknown, the dummy _0000 XX_ is used.\n\nForeign postal codes are expressed in free text. If the postal code is unknown, the dummy _0009 XX_ is used.",
"Postcode"
],
],
{
},
{
}
]
},
{
"Woonplaats"
],
],
{
}
]
}
]
}
}
3.1.2. Report
| LmReport (path-lm-Report) | Element | ||
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| ReportIdentifier | 1..1 | Identifier | |
| Authorizer | 1..1 | string | |
| AuthorizationDate | 1..1 | date | |
| ClinicalInformation | 0..1 | string | |
| Macroscopy | 0..1 | string | |
| Microscopy | 1..1 | string | |
| Conclusion | 1..1 | string | |
| ProtocolData | 0..* | BackboneElement | |
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| modifierExtension | Σ ?! C | 0..* | Extension |
| ProtocolItemName | 1..1 | CodeableConcept | |
| ProtocolItemResult[x] | 1..1 | ||
| ProtocolItemResultCodeableConcept | CodeableConcept | ||
| ProtocolItemResultDateTime | dateTime | ||
| ProtocolItemResultQuantity | Quantity | ||
| ProtocolItemResultString | string |
--- We have skipped the narrative for better readability of the resource ---
</text>
</identifier>
</telecom>
</contact>
<description value="Pathology report which contains the findings and interpretation of a pathology study." />
<purpose value="This LogicalModel represents the Report building block for patient use cases in the context of the information standard Pathology (Pathologie)." />
<copyright value="Copyright and related rights waived via CC0, https://creativecommons.org/publicdomain/zero/1.0/. This does not apply to information from third parties, for example a medical terminology system. The implementer alone is responsible for identifying and obtaining any necessary licenses or authorizations to utilize third party IP in connection with the specification or otherwise." />
</mapping>
</mapping>
<definition value="Pathology report which contains the findings and interpretation of a pathology study." />
</element>
<definition value="Identifier of the pathology report assigned by the laboratory doing the analysis." />
<comment value="This identifier attains a value of the form _[TCSB]YY-nnnnn_ or _[TCSB]YY-nnnnnn_ (based on the laboratory the report originates from), e.g. T26-012345." />
</type>
</mapping>
</element>
</type>
</mapping>
</element>
</type>
</mapping>
</element>
</type>
</mapping>
</mapping>
</element>
</type>
</mapping>
</mapping>
</element>
</type>
</mapping>
</mapping>
</element>
</type>
</mapping>
</element>
</type>
</mapping>
</element>
</type>
</element>
</type>
</type>
</type>
</type>
</element>
</differential>
</StructureDefinition>
{
--- We have skipped the narrative for better readability of the resource ---
},
],
{
}
],
"description": "Pathology report which contains the findings and interpretation of a pathology study.",
"purpose": "This LogicalModel represents the Report building block for patient use cases in the context of the information standard Pathology (Pathologie).",
"copyright": "Copyright and related rights waived via CC0, https://creativecommons.org/publicdomain/zero/1.0/. This does not apply to information from third parties, for example a medical terminology system. The implementer alone is responsible for identifying and obtaining any necessary licenses or authorizations to utilize third party IP in connection with the specification or otherwise.",
{
},
{
}
],
{
"definition": "Pathology report which contains the findings and interpretation of a pathology study.",
"Verslag"
]
},
{
"comment": "This identifier attains a value of the form _[TCSB]YY-nnnnn_ or _[TCSB]YY-nnnnnn_ (based on the laboratory the report originates from), e.g. T26-012345.",
"VerslagIdentificatienummer"
],
],
{
}
]
},
{
"Autorisator"
],
],
{
}
]
},
{
"DatumAutorisatie"
],
],
{
}
]
},
{
"KlinischeGegevens"
],
],
{
},
{
}
]
},
{
"Macroscopie"
],
],
{
},
{
}
]
},
{
"Microscopie"
],
],
{
},
{
}
]
},
{
"Conclusie"
],
],
{
}
]
},
{
"Protocoldata"
],
],
{
}
]
},
{
"ProtocolitemNaam"
],
]
},
{
"ProtocolitemResultaat"
],
]
}
]
}
}
3.1.3. Request
| LmRequest (path-lm-Request) | Element | ||
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| RequestType | 1..1 | CodeableConceptBinding | |
| HealthScreeningType | 1..1 | CodeableConceptBinding | |
| Requester | 1..1 | BackboneElement | |
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| modifierExtension | Σ ?! C | 0..* | Extension |
| RequesterName | 1..1 | string | |
| Specialty | 0..1 | CodeableConceptBinding | |
| Hospital | 0..1 | string | |
| Location | 0..1 | string | |
| ClinicalQuestion | 1..1 | string | |
| Specimen | 1..1 | BackboneElement | |
| id | 0..1 | string | |
| extension | C | 0..* | Extension |
| modifierExtension | Σ ?! C | 0..* | Extension |
| SpecimenMaterial | 1..1 | string | |
| CollectionDate | 0..1 | date | |
| ReceivedDate | 1..1 | date | |
| CollectionMethod | 0..1 | string | |
| NumberOfSamples | 1..1 | integer |
--- We have skipped the narrative for better readability of the resource ---
</text>
</identifier>
</telecom>
</contact>
<purpose value="This LogicalModel represents the Request building block for patient use cases in the context of the information standard Pathology (Pathologie)." />
<copyright value="Copyright and related rights waived via CC0, https://creativecommons.org/publicdomain/zero/1.0/. This does not apply to information from third parties, for example a medical terminology system. The implementer alone is responsible for identifying and obtaining any necessary licenses or authorizations to utilize third party IP in connection with the specification or otherwise." />
</mapping>
</element>
</type>
</coding>
</defaultValueCodeableConcept>
</binding>
</mapping>
</element>
</type>
</coding>
</defaultValueCodeableConcept>
</binding>
</mapping>
</element>
</type>
</element>
</type>
</mapping>
</element>
</type>
</binding>
</mapping>
</element>
</type>
</mapping>
</element>
</type>
</mapping>
</element>
</type>
</mapping>
</element>
</type>
</element>
</type>
</mapping>
</element>
</type>
</mapping>
</element>
</type>
</mapping>
</element>
</type>
</mapping>
</element>
<definition value="The number of samples taken from the primary specimen, each sent to the laboratory in a different container." />
</type>
</element>
</differential>
</StructureDefinition>
{
--- We have skipped the narrative for better readability of the resource ---
},
],
{
}
],
"purpose": "This LogicalModel represents the Request building block for patient use cases in the context of the information standard Pathology (Pathologie).",
"copyright": "Copyright and related rights waived via CC0, https://creativecommons.org/publicdomain/zero/1.0/. This does not apply to information from third parties, for example a medical terminology system. The implementer alone is responsible for identifying and obtaining any necessary licenses or authorizations to utilize third party IP in connection with the specification or otherwise.",
],
{
"Aanvraag"
]
},
{
"SoortAanvraag"
],
],
]
},
},
{
}
]
},
{
"BVOSoort"
],
],
]
},
},
{
}
]
},
{
"Aanvrager"
],
]
},
{
"AanvragerNaam"
],
],
{
}
]
},
{
"Specialisme"
],
],
},
{
}
]
},
{
"Ziekenhuis"
],
],
{
}
]
},
{
"Locatie"
],
],
{
}
]
},
{
"KlinischeVraag"
],
],
{
}
]
},
{
"Monster"
],
]
},
{
"AardMateriaal"
],
],
{
}
]
},
{
"DatumAfname"
],
],
{
}
]
},
{
"DatumOntvangst"
],
],
{
}
]
},
{
"Verkrijgingswijze"
],
],
{
}
]
},
{
"definition": "The number of samples taken from the primary specimen, each sent to the laboratory in a different container.",
"AantalSamples"
],
]
}
]
}
}