Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
15 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions .github/workflows/qa-all.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Zib2020 QA
uses: Nictiz/Nictiz-R4-QA@main
- name: Lab QA
uses: Nictiz/Nictiz-tooling-R4-QA@6.4.0
with:
changed-only: false
no-tx: true
verbosity-level: warning
best-practice-warnings: false
suppress-display-issues: true
9 changes: 5 additions & 4 deletions .github/workflows/qa-changed.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Zib2020 QA
uses: Nictiz/Nictiz-R4-QA@main
- name: Lab QA
uses: Nictiz/Nictiz-tooling-R4-QA@6.4.0
with:
changed-only: true
fail-at: "warning"
extensible-binding-warnings: true
best-practice-warnings: true
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<CapabilityStatement xmlns="http://hl7.org/fhir">
<id value="Lab2Healthcare-Results-RetrieveServe"/>
<id value="CapabilityStatement-Lab2Healthcare-Results-RetrieveServe"/>
<text>
<status value="empty" />
<div xmlns="http://www.w3.org/1999/xhtml">
No narrative is provided for definitional resources. A human-readable rendering can be found in the implementation guide(s) where this resource is used.
</div>
</text>
<url value="http://nictiz.nl/fhir/CapabilityStatement/Lab2Healthcare-Results-RetrieveServe"/>
<name value="Lab2Healthcare_Results_RetrieveServe"/>
<status value="draft"/>
<date value="2022-03-30"/>
<date value="2025-09-11"/>
<publisher value="Nictiz"/>
<contact>
<name value="Nictiz"/>
Expand All @@ -18,8 +24,8 @@
<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."/>
<kind value="requirements"/>
<fhirVersion value="4.0.1"/>
<format value="xml"/>
<format value="json"/>
<format value="application/fhir+xml"/>
<format value="application/fhir+json"/>
<rest>
<mode value="client"/>
<documentation value="A client is expected to support xml and/or json. It SHALL support search-type on Observation, and MAY support its searchParameters and/or the $lastn operation. It SHALL support read on Observation and secondary resources, when referenced but not included in search results. Note that inclusion of referenced resources may happen regardless of searchInclude by the client."/>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<CapabilityStatement xmlns="http://hl7.org/fhir">
<id value="Lab2Healthcare-Results-SendReceive"/>
<id value="CapabilityStatement-Lab2Healthcare-Results-SendReceive"/>
<text>
<status value="empty" />
<div xmlns="http://www.w3.org/1999/xhtml">
No narrative is provided for definitional resources. A human-readable rendering can be found in the implementation guide(s) where this resource is used.
</div>
</text>
<url value="http://nictiz.nl/fhir/CapabilityStatement/Lab2Healthcare-Results-SendReceive"/>
<name value="Lab2Healthcare_Results_SendReceive"/>
<status value="draft"/>
<date value="2023-03-20"/>
<date value="2025-09-11"/>
<publisher value="Nictiz"/>
<contact>
<name value="Nictiz"/>
Expand All @@ -18,8 +24,8 @@
<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."/>
<kind value="requirements"/>
<fhirVersion value="4.0.1"/>
<format value="xml"/>
<format value="json"/>
<format value="application/fhir+xml"/>
<format value="application/fhir+json"/>
<rest>
<mode value="client"/>
<documentation value="A client is expected to support xml and/or json. A client is not required to maintain a record of each server it created resources on, and thus not required to support 'update'."/>
Expand Down
1 change: 1 addition & 0 deletions Resources/fhirpkg.lock.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"updated": "2023-02-23T10:46:51.6284213+01:00",
"updated": "2025-09-01T12:33:07.694504+02:00",
"dependencies": {
"nictiz.fhir.nl.r4.nl-core": "0.8.0-beta.1",
"hl7.fhir.r4.core": "4.0.1",
Expand Down
22 changes: 16 additions & 6 deletions Resources/lu-Composition.xml
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<StructureDefinition xmlns="http://hl7.org/fhir">
<id value="lu-Composition" />
<text>
<status value="empty" />
<div xmlns="http://www.w3.org/1999/xhtml">
No narrative is provided for definitional resources. A human-readable rendering can be found in the implementation guide(s) where this resource is used.
</div>
</text>
<url value="http://nictiz.nl/fhir/StructureDefinition/lu-Composition" />
<version value="3.0.0-beta.2" />
<version value="3.0.0-beta.3" />
<name value="LuComposition" />
<title value="lu Composition" />
<status value="draft" />
Expand Down Expand Up @@ -40,12 +46,16 @@
<definition value="Laboratory Report" />
</element>
<element id="Composition.type.coding">
<path value="Composition.type.coding" />
<fixedCoding>
<system value="http://loinc.org" />
<code value="11502-2" />
<path value="Composition.type.coding"/>
<patternCoding>
<system value="http://loinc.org"/>
<code value="11502-2"/>
<display value="Laboratory Report" />
</fixedCoding>
</patternCoding>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't this always a Laboratory Report? Why change this into a patternCoding when a different code would change the meaning of the resource? see: https://informatiestandaarden.nictiz.nl/wiki/FHIR:V1.0_FHIR_Profiling_Guidelines_R4#Values_that_should_be_present_verbatim

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think based on that specific chapter it should be pattern, since Coding is a complex datatype. I made coding.system required to follow the guideline.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think putting the code on .fixed rather than .pattern hinges on whether:

  1. You expect users to use a different LOINC code to show that their FHIR instance is a laboratory report.
  2. You can accept that you will not be able to identify these FHIR instances by their coding.

If you these two things are okay for you, you should go ahead with the profile as-is! 👍

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I understand that perspective. From that point of view, I would definitely prefer to have fixedCoding, but I do have to take into account our general approach to profiling: the profiled value is a minimum expectation and other additional values are still allowed. I do see it as a compromise: we cannot be too restrictive (making it a bit less handy), but at least that one specific LOINC code 11502-2 has to be one of the codes in any FHIR instance.

</element>
<element id="Composition.type.coding.system">
<path value="Composition.type.coding.system"/>
<min value="1"/>
</element>
<element id="Composition.subject">
<path value="Composition.subject" />
Expand Down
8 changes: 7 additions & 1 deletion Resources/lu-LaboratoryTestResult-DiagnosticReport.xml
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<StructureDefinition xmlns="http://hl7.org/fhir">
<id value="lu-LaboratoryTestResult-DiagnosticReport" />
<text>
<status value="empty" />
<div xmlns="http://www.w3.org/1999/xhtml">
No narrative is provided for definitional resources. A human-readable rendering can be found in the implementation guide(s) where this resource is used.
</div>
</text>
<url value="http://nictiz.nl/fhir/StructureDefinition/lu-LaboratoryTestResult-DiagnosticReport" />
<version value="3.0.0-beta.2" />
<version value="3.0.0-beta.3" />
<name value="LuLaboratoryTestResultDiagnosticReport" />
<title value="lu LaboratoryTestResult DiagnosticReport" />
<status value="draft" />
Expand Down
161 changes: 161 additions & 0 deletions Resources/lu-OrderData.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
<?xml version="1.0" encoding="utf-8"?>
<StructureDefinition xmlns="http://hl7.org/fhir">
<id value="lu-OrderData" />
<text>
<status value="empty" />
<div xmlns="http://www.w3.org/1999/xhtml">
No narrative is provided for definitional resources. A human-readable rendering can be found in the implementation guide(s) where this resource is used.
</div>
</text>
<url value="http://nictiz.nl/fhir/StructureDefinition/lu-OrderData" />
<version value="3.0.0-beta.3" />
<name value="LuOrderData" />
<title value="lu OrderData" />
<status value="draft" />
<publisher value="Nictiz" />
<contact>
<name value="Nictiz" />
<telecom>
<system value="url" />
<value value="https://www.nictiz.nl" />
<use value="work" />
</telecom>
</contact>
<description value="The order data defines how information about the requester and the requested investigation is captured and exchanged within a healthcare order message." />
<purpose value="A derived profile from [ServiceRequest](https://hl7.org/fhir/R4/servicerequest.html) to provide a version better suited for implementation purposes." />
<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." />
<fhirVersion value="4.0.1" />
<mapping>
<identity value="lu-dataset-300-beta2-20230525" />
<uri value="https://decor.nictiz.nl/pub/labuitwisseling/lu-html-20230525T170259/ds-2.16.840.1.113883.2.4.3.11.60.25.1.2-2021-02-22T000000.html" />
<name value="ART-DECOR dataset LU 3.0.0-beta.2 20250525" />
</mapping>
<kind value="resource" />
<abstract value="false" />
<type value="ServiceRequest" />
<baseDefinition value="http://hl7.org/fhir/StructureDefinition/ServiceRequest" />
<derivation value="constraint" />
<differential>
<element id="ServiceRequest">
<path value="ServiceRequest" />
<short value="OrderData" />
<alias value="Aanvraaggegevens" />
<mapping>
<identity value="lu-dataset-300-beta2-20230525" />
<map value="lu-concept-v2-4410" />
<comment value="OrderData" />
</mapping>
</element>
<element id="ServiceRequest.identifier">
<path value="ServiceRequest.identifier" />
<short value="OrderId" />
<definition value="Identifier of the request. This is a number sent with the order and sent back in the result message. The requester assigns an identifier to the order (also known as the Placer Order ID). The performer also assigns an identifier to the order/result (also known as the Filler Order ID)." />
<alias value="Aanvraagnummer" />
<max value="1" />
<mapping>
<identity value="lu-dataset-300-beta2-20230525" />
<map value="lu-concept-v2-4473" />
<comment value="OrderId" />
</mapping>
</element>
<element id="ServiceRequest.status">
<path value="ServiceRequest.status" />
<short value="Status" />
<definition value="Status of the request, such as ‘requested’, ‘planned’, 'in progress'" />
<comment value="The status can have one of the following values: requested | planned | in progress | new | held | cancelled | active | completed | aborted" />
<alias value="Status" />
<binding>
<strength value="required" />
<description value="Use ConceptMap 'AanvraagStatusCodelijst_to_RequestStatus' to translate terminology from the functional model to profile terminology in ValueSet 'request-status'" />
</binding>
<mapping>
<identity value="lu-dataset-300-beta2-20230525" />
<map value="lu-concept-v2-4476" />
<comment value="Status" />
</mapping>
</element>
<element id="ServiceRequest.code">
<path value="ServiceRequest.code" />
<short value="ClinicalQuestion" />
<definition value="Description of the question to which the requester hopes to receive an answer. This is particularly important for actions whose outcome requires interpretation by the implementer." />
<alias value="Vraagstelling" />
<binding>
<strength value="required" />
<valueSet value="https://decor.nictiz.nl/fhir/4.0/zib2020bbr-/ValueSet/2.16.840.1.113883.2.4.3.11.60.121.11.7--20200901000000" />

Check notice on line 84 in Resources/lu-OrderData.xml

View workflow job for this annotation

GitHub Actions / Strict QA on changed materials

Canonical URL 'https://decor.nictiz.nl/fhir/4.0/zib2020bbr-/ValueSet/2.16.840.1.113883.2.4.3.11.60.121.11.7--20200901000000' does not resolve (at StructureDefinition.differential.element[3].binding.valueSet)
</binding>
<mapping>
<identity value="lu-dataset-300-beta2-20230525" />
<map value="lu-concept-v2-4475" />
<comment value="ClinicalQuestion" />
</mapping>
</element>
<element id="ServiceRequest.authoredOn">
<path value="ServiceRequest.authoredOn" />
<short value="OrderDateTime" />
<definition value="Date and, if applicable, time the request was made." />
<alias value="AanvraagDatumTijd" />
<mapping>
<identity value="lu-dataset-300-beta2-20230525" />
<map value="lu-concept-v2-4472" />
<comment value="OrderDateTime" />
</mapping>
</element>
<element id="ServiceRequest.requester">
<path value="ServiceRequest.requester" />
<short value="Requester" />
<definition value="The person who ordered the action (procedure, test, etc.)." />
<comment value="This is not the dispatcher, but rather who is the authorizer. This element is not intended to handle delegation which would generally be managed through the Provenance resource." />
<alias value="Zorgverlener" />
<type>
<code value="Reference" />
<targetProfile value="http://nictiz.nl/fhir/StructureDefinition/nl-core-HealthProfessional-PractitionerRole" />
<targetProfile value="http://hl7.org/fhir/StructureDefinition/Practitioner" />
<targetProfile value="http://hl7.org/fhir/StructureDefinition/PractitionerRole" />
<targetProfile value="http://hl7.org/fhir/StructureDefinition/Organization" />
<targetProfile value="http://hl7.org/fhir/StructureDefinition/Patient" />
<targetProfile value="http://hl7.org/fhir/StructureDefinition/RelatedPerson" />
<targetProfile value="http://hl7.org/fhir/StructureDefinition/Device" />
</type>
<mapping>
<identity value="lu-dataset-300-beta2-20230525" />
<map value="lu-concept-v2-4478" />
<comment value="Requester" />
</mapping>
</element>
<element id="ServiceRequest.reasonCode">
<path value="ServiceRequest.reasonCode" />
<short value="OrderReason" />
<definition value="An explanation or justification for why this service is being requested in coded or textual form. This is often for billing purposes. May relate to the resources referred to in `supportingInfo`." />
<alias value="RedenAanvraag" />
<max value="1" />
<mapping>
<identity value="lu-dataset-300-beta2-20230525" />
<map value="lu-concept-v2-4474" />
<comment value="OrderReason" />
</mapping>
</element>
<element id="ServiceRequest.reasonCode.coding">
<path value="ServiceRequest.reasonCode.coding" />
<max value="0" />
</element>
<element id="ServiceRequest.reasonCode.text">
<path value="ServiceRequest.reasonCode.text" />
<definition value="Context of the request, which is relevant to its execution." />
</element>
<element id="ServiceRequest.note">
<path value="ServiceRequest.note" />
<max value="1" />
</element>
<element id="ServiceRequest.note.text">
<path value="ServiceRequest.note.text" />
<short value="Comment" />
<definition value="Additional information that is important for the execution of the request and that cannot be described in any of the other elements." />
<alias value="Opmerking" />
<mapping>
<identity value="lu-dataset-300-beta2-20230525" />
<map value="lu-concept-v2-4477" />
<comment value="Comment" />
</mapping>
</element>
</differential>
</StructureDefinition>
Loading