From ccd052b0bd21b950d13e2033402bdf9a809dc2c1 Mon Sep 17 00:00:00 2001 From: Omar Khan Date: Wed, 15 Apr 2026 09:20:59 +0100 Subject: [PATCH 1/4] QC fixes --- .../workflows/firely-validation-dotnet.yaml | 59 ------------------- .github/workflows/firely-validation.yml | 4 +- .github/workflows/terminology.yml | 2 +- .../Bundle-NonWGSTestOrderForm-Example.json | 2 +- ...onWGSTestOrderForm-Reanalysis-Example.json | 2 +- Bundle/Bundle-WGSTestOrderForm-Example.json | 2 +- ...ition-InbornErrorOfMetabolism-Example.json | 2 +- ...ondition-MonogenicHearingLoss-Example.json | 2 +- custom.rules.yaml | 8 ++- 9 files changed, 13 insertions(+), 70 deletions(-) delete mode 100644 .github/workflows/firely-validation-dotnet.yaml diff --git a/.github/workflows/firely-validation-dotnet.yaml b/.github/workflows/firely-validation-dotnet.yaml deleted file mode 100644 index 5df6abd..0000000 --- a/.github/workflows/firely-validation-dotnet.yaml +++ /dev/null @@ -1,59 +0,0 @@ -# This is a basic workflow to help you get started with Actions - -name: Firely Validation - -# Controls when the action will run. -on: - # Triggers the workflow on push or pull request events but only for the master branch - #push: - # branches: [ master, main ] - #pull_request: - # branches: [ master, main ] - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel -jobs: - - # Validate all resources using Firely Terminal - CI_FHIR_VALIDATION: - # The type of runner that the job will run on - runs-on: ubuntu-latest - - # Steps represent a sequence of tasks that will be executed as part of the job - steps: - - name: Checkout code - uses: actions/checkout@v6 - - # Install .NET runtime - - name: Setup .NET Core SDK - uses: actions/setup-dotnet@v5 - with: - dotnet-version: 8.0.x - - # Install Java runtime (only needed if you want to run the offical HL7 Java validator) - - name: Setup Java JDK - uses: actions/setup-java@v5 - with: - distribution: 'microsoft' - java-version: '21' - - - name: Firely.Terminal (GitHub Actions) - uses: FirelyTeam/firely-terminal-pipeline@v0.7.31 - with: - PATH_TO_CONFORMANCE_RESOURCES: StructureDefinition ValueSet CodeSystem - PATH_TO_EXAMPLES: ActivityDefinition AuditEvent BodyStructure Bundle CapabilityStatement Composition ConceptMap Condition Consent Device DiagnosticReport DocumentReference FamilyMemberHistory GraphDefinition Group Library MessageDefinition MessageHeader NamingSystem Observation OperationDefinition OperationOutcome Organization Parameters Patient PlanDefinition Practitioner PractitionerRole Procedure Provenance Questionnaire QuestionnaireResponse RelatedPerson RequestGroup SearchParameter ServiceRequest Specimen SpecimenDefinition StructureMap Subscription Task - PATH_TO_QUALITY_CONTROL_RULES: custom - DOTNET_VALIDATION_ENABLED: true - JAVA_VALIDATION_ENABLED: false - #EXPECTED_FAILS: VALIDATION_EXAMPLES_JAVA - SIMPLIFIER_USERNAME: ${{ secrets.SIMPLIFIER_USERNAME }} - SIMPLIFIER_PASSWORD: ${{ secrets.SIMPLIFIER_PASSWORD }} - FIRELY_TERMINAL_VERSION: 3.5.0 - SUSHI_ENABLED: false - - # - name: Add & Commit - # uses: EndBug/add-and-commit@v9 - # with: - # add: 'fsh-generated/resources/' diff --git a/.github/workflows/firely-validation.yml b/.github/workflows/firely-validation.yml index 0f77fb0..b8c1775 100644 --- a/.github/workflows/firely-validation.yml +++ b/.github/workflows/firely-validation.yml @@ -45,8 +45,8 @@ jobs: PATH_TO_CONFORMANCE_RESOURCES: StructureDefinition ValueSet CodeSystem PATH_TO_EXAMPLES: ActivityDefinition AuditEvent BodyStructure Bundle CapabilityStatement Composition ConceptMap Condition Consent Device DiagnosticReport DocumentReference FamilyMemberHistory GraphDefinition Group Library MessageDefinition MessageHeader NamingSystem Observation OperationDefinition OperationOutcome Organization Parameters Patient PlanDefinition Practitioner PractitionerRole Procedure Provenance Questionnaire QuestionnaireResponse RelatedPerson RequestGroup SearchParameter ServiceRequest Specimen SpecimenDefinition StructureMap Subscription Task PATH_TO_QUALITY_CONTROL_RULES: custom - DOTNET_VALIDATION_ENABLED: false - JAVA_VALIDATION_ENABLED: true + DOTNET_VALIDATION_ENABLED: true + JAVA_VALIDATION_ENABLED: false #EXPECTED_FAILS: VALIDATION_EXAMPLES_JAVA SIMPLIFIER_USERNAME: ${{ secrets.SIMPLIFIER_USERNAME }} SIMPLIFIER_PASSWORD: ${{ secrets.SIMPLIFIER_PASSWORD }} diff --git a/.github/workflows/terminology.yml b/.github/workflows/terminology.yml index eb43eec..b09e073 100644 --- a/.github/workflows/terminology.yml +++ b/.github/workflows/terminology.yml @@ -5,7 +5,7 @@ on: # Triggers the workflow on push or pull request events but only for the master branch # Allows you to run this workflow manually from the Actions tab - push: + # push: workflow_dispatch: diff --git a/Bundle/Bundle-NonWGSTestOrderForm-Example.json b/Bundle/Bundle-NonWGSTestOrderForm-Example.json index 9cbc70a..41e6a22 100644 --- a/Bundle/Bundle-NonWGSTestOrderForm-Example.json +++ b/Bundle/Bundle-NonWGSTestOrderForm-Example.json @@ -360,7 +360,7 @@ { "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "inactive", - "display": "inactive" + "display": "Inactive" } ] }, diff --git a/Bundle/Bundle-NonWGSTestOrderForm-Reanalysis-Example.json b/Bundle/Bundle-NonWGSTestOrderForm-Reanalysis-Example.json index dfb6c13..4e3e163 100644 --- a/Bundle/Bundle-NonWGSTestOrderForm-Reanalysis-Example.json +++ b/Bundle/Bundle-NonWGSTestOrderForm-Reanalysis-Example.json @@ -380,7 +380,7 @@ { "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "inactive", - "display": "inactive" + "display": "Inactive" } ] }, diff --git a/Bundle/Bundle-WGSTestOrderForm-Example.json b/Bundle/Bundle-WGSTestOrderForm-Example.json index 6dc15bf..6ae7041 100644 --- a/Bundle/Bundle-WGSTestOrderForm-Example.json +++ b/Bundle/Bundle-WGSTestOrderForm-Example.json @@ -373,7 +373,7 @@ { "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "inactive", - "display": "inactive" + "display": "Inactive" } ] }, diff --git a/Condition/Condition-InbornErrorOfMetabolism-Example.json b/Condition/Condition-InbornErrorOfMetabolism-Example.json index 892b3e9..a8a34c3 100644 --- a/Condition/Condition-InbornErrorOfMetabolism-Example.json +++ b/Condition/Condition-InbornErrorOfMetabolism-Example.json @@ -15,7 +15,7 @@ { "system": "http://terminology.hl7.org/CodeSystem/condition-ver-status", "code": "unconfirmed", - "display": "unconfirmed" + "display": "Unconfirmed" } ] }, diff --git a/Condition/Condition-MonogenicHearingLoss-Example.json b/Condition/Condition-MonogenicHearingLoss-Example.json index 0315167..fdf5de6 100644 --- a/Condition/Condition-MonogenicHearingLoss-Example.json +++ b/Condition/Condition-MonogenicHearingLoss-Example.json @@ -6,7 +6,7 @@ { "system": "http://terminology.hl7.org/CodeSystem/condition-clinical", "code": "inactive", - "display": "inactive" + "display": "Inactive" } ] }, diff --git a/custom.rules.yaml b/custom.rules.yaml index d28b56a..955b65c 100644 --- a/custom.rules.yaml +++ b/custom.rules.yaml @@ -1,5 +1,3 @@ - # This is the minimal rule series - - action: parse name: parse-fhir-resources status: "Checking if all FHIR Resource files can be parsed" @@ -20,6 +18,10 @@ - eld-16 - ref-1 - dom-6 + - 1012 + - 4005 + - CONFIG + - 6006 - action: unique name: unique-canonicals @@ -27,4 +29,4 @@ category: StructureDefinition unique: url -# - include: manifest +# - include: manifest \ No newline at end of file From 3b94f256b76623447538962a6cb9c89003687a29 Mon Sep 17 00:00:00 2001 From: Omar Khan Date: Wed, 15 Apr 2026 09:44:12 +0100 Subject: [PATCH 2/4] Further QC Fixes --- ActivityDefinition/DGTS-ActivityDefinition-Example.json | 1 + .../DiagnosticReport-GenomicVariantAssessment-Example.json | 7 ------- Library/DGTS-Library-Example.json | 1 + .../Observation-GenomicTherapeuticImplication-Example.json | 6 ------ .../Observation-GenomicsVariantSLC52A2-Example.json | 6 ------ PlanDefinition/DGTS-PlanDefinition-Example.json | 1 + 6 files changed, 3 insertions(+), 19 deletions(-) diff --git a/ActivityDefinition/DGTS-ActivityDefinition-Example.json b/ActivityDefinition/DGTS-ActivityDefinition-Example.json index 23dd787..3b718c9 100644 --- a/ActivityDefinition/DGTS-ActivityDefinition-Example.json +++ b/ActivityDefinition/DGTS-ActivityDefinition-Example.json @@ -14,6 +14,7 @@ } ], "title": "15q11 critical region (AS/PWS) - MLPA or equivalent", + "name": "GT1_ActivityDefinition", "version": "1.0", "status": "active", "experimental": false, diff --git a/DiagnosticReport/DiagnosticReport-GenomicVariantAssessment-Example.json b/DiagnosticReport/DiagnosticReport-GenomicVariantAssessment-Example.json index 88eef74..c3fb4b5 100644 --- a/DiagnosticReport/DiagnosticReport-GenomicVariantAssessment-Example.json +++ b/DiagnosticReport/DiagnosticReport-GenomicVariantAssessment-Example.json @@ -1,13 +1,6 @@ { "resourceType": "DiagnosticReport", "id": "DiagnosticReport-GenomicVariantAssessment-Example", - "meta": { - "profile": [ - "http://hl7.org/fhir/uv/genomics-reporting/StructureDefinition/genomic-report", - "https://fhir.hl7.org.uk/StructureDefinition/UKCore-DiagnosticReport", - "http://hl7.eu/fhir/laboratory/StructureDefinition/DiagnosticReport-eu-lab" - ] - }, "extension": [ { "url": "http://hl7.org/fhir/5.0/StructureDefinition/extension-DiagnosticReport.composition", diff --git a/Library/DGTS-Library-Example.json b/Library/DGTS-Library-Example.json index b93997a..1d31be2 100644 --- a/Library/DGTS-Library-Example.json +++ b/Library/DGTS-Library-Example.json @@ -2,6 +2,7 @@ "resourceType": "Library", "id": "DGTS-Library-Example", "url": "https://fhir.nhs.uk/Library/GT1", + "name": "GT1_Library" "type": { "coding": [ { diff --git a/Observation/Observation-GenomicTherapeuticImplication-Example.json b/Observation/Observation-GenomicTherapeuticImplication-Example.json index 5d3bb6e..c8ecd4c 100644 --- a/Observation/Observation-GenomicTherapeuticImplication-Example.json +++ b/Observation/Observation-GenomicTherapeuticImplication-Example.json @@ -1,12 +1,6 @@ { "resourceType": "Observation", "id": "Observation-GenomicTherapeuticImplication-Example", - "meta": { - "profile": [ - "http://hl7.org/fhir/uv/genomics-reporting/StructureDefinition/therapeutic-implication", - "http://hl7.eu/fhir/laboratory/StructureDefinition/Observation-resultslab-eu-lab" - ] - }, "status": "final", "category": [ { diff --git a/Observation/Observation-GenomicsVariantSLC52A2-Example.json b/Observation/Observation-GenomicsVariantSLC52A2-Example.json index 90da491..b27bdcc 100644 --- a/Observation/Observation-GenomicsVariantSLC52A2-Example.json +++ b/Observation/Observation-GenomicsVariantSLC52A2-Example.json @@ -1,12 +1,6 @@ { "resourceType": "Observation", "id": "Observation-GenomicsVariantSLC52A2-Example", - "meta": { - "profile": [ - "http://hl7.org/fhir/uv/genomics-reporting/StructureDefinition/variant", - "http://hl7.eu/fhir/laboratory/StructureDefinition/Observation-resultslab-eu-lab" - ] - }, "status": "final", "basedOn": [ { diff --git a/PlanDefinition/DGTS-PlanDefinition-Example.json b/PlanDefinition/DGTS-PlanDefinition-Example.json index 7fe70e8..a9393da 100644 --- a/PlanDefinition/DGTS-PlanDefinition-Example.json +++ b/PlanDefinition/DGTS-PlanDefinition-Example.json @@ -14,6 +14,7 @@ } ], "title": "Angelman syndrome", + "name": "TP321_PlanDefinition", "status": "active", "experimental": false, "version": "1.0", From 103cc4446c57fbffa5cdf8967c7b8f2fe25b24b3 Mon Sep 17 00:00:00 2001 From: Omar Khan Date: Wed, 15 Apr 2026 10:03:14 +0100 Subject: [PATCH 3/4] Testing update to package.json --- fhirpkg.lock.json | 41 +++++++++++++++++++++++++++++++---------- package.json | 19 ++++++++++++------- 2 files changed, 43 insertions(+), 17 deletions(-) diff --git a/fhirpkg.lock.json b/fhirpkg.lock.json index e31acfc..98f0ab7 100644 --- a/fhirpkg.lock.json +++ b/fhirpkg.lock.json @@ -1,18 +1,39 @@ { - "updated": "2026-03-26T11:41:42.0351721+00:00", + "updated": "2026-04-15T10:02:40.6338296+01:00", "dependencies": { "hl7.fhir.r4.core": "4.0.1", - "hl7.fhir.uv.genomics-reporting": "3.0.0-ballot", - "hl7.fhir.uv.ips": "1.1.0", - "fhir.dicom": "2022.4.20221006", - "hl7.fhir.eu.laboratory": "0.1.0-ballot", "fhir.r4.ukcore.stu3.currentbuild": "0.28.0-pre-release", - "ihe.iti.pcf": "1.0.0-comment", - "hl7.fhir.r4b.core": "4.3.0", - "us.nlm.vsac": "0.9.0", - "ihe.iti.balp": "1.1.1", "hl7.fhir.uv.extensions.r4": "5.3.0-ballot-tc1", - "hl7.terminology.r4": "7.1.0" + "hl7.fhir.uv.xver-r5.r4": "0.1.0", + "hl7.terminology.r4": "7.1.0", + "hl7.fhir.uv.genomics-reporting": "3.0.0", + "hl7.fhir.uv.ips": "2.0.0", + "hl7.fhir.uv.ipa": "1.1.0", + "hl7.fhir.eu.laboratory": "0.1.1", + "hl7.fhir.eu.extensions": "0.1.1", + "hl7.terminology.r5": "6.5.0", + "hl7.fhir.uv.extensions.r5": "5.2.0", + "hl7.fhir.r5.core": "5.0.0", + "ihe.iti.pcf": "1.1.0", + "ihe.iti.balp": "1.1.4", + "hl7.fhir.us.mcode": "4.0.0", + "hl7.fhir.us.core": "6.1.0", + "hl7.fhir.uv.bulkdata": "2.0.0", + "hl7.fhir.uv.smart-app-launch": "2.1.0", + "us.nlm.vsac": "0.11.0", + "hl7.fhir.uv.sdc": "3.0.0", + "hl7.fhir.r4.examples": "4.0.1", + "us.cdc.phinvads": "0.12.0", + "ihe.formatcode.fhir": "1.1.0", + "fhir.r4.nhsengland.pathology": "0.1.4-alpha", + "fhir.r4.ukcore.stu2": "2.0.2", + "hl7.fhir.eu.extensions.r4": "1.2.0", + "hl7.fhir.eu.base": "2.0.0-ballot", + "ihe.pharm.mpd.r4": "1.0.0-comment-2", + "fhir.r4.nhsengland.programme": "0.23.3-pre-release", + "fhir.tx.support.r4": "0.27.0", + "fhir.r4.nhsengland.stu1": "1.5.0", + "hl7.fhir.uv.tools.r4": "1.1.2" }, "missing": {} } diff --git a/package.json b/package.json index c1435d5..531bb57 100644 --- a/package.json +++ b/package.json @@ -4,15 +4,20 @@ "author": "nhsdigital", "dependencies": { "hl7.fhir.r4.core": "4.0.1", - "hl7.fhir.uv.genomics-reporting": "3.0.0-ballot", - "hl7.fhir.uv.ips": "1.1.0", - "hl7.fhir.eu.laboratory": "0.1.0-ballot", "fhir.r4.ukcore.stu3.currentbuild": "0.28.0-pre-release", - "ihe.iti.pcf": "1.0.0-comment", - "hl7.fhir.uv.extensions.r4": "5.3.0-ballot-tc1" + "hl7.fhir.uv.extensions.r4": "5.3.0-ballot-tc1", + "hl7.fhir.uv.xver-r5.r4": "0.1.0", + "hl7.fhir.uv.genomics-reporting": "3.0.0", + "hl7.fhir.uv.ips": "2.0.0", + "hl7.fhir.eu.laboratory": "0.1.1", + "ihe.iti.pcf": "1.1.0", + "hl7.fhir.us.mcode": "4.0.0", + "fhir.r4.nhsengland.pathology": "0.1.4-alpha", + "fhir.r4.nhsengland.programme": "0.23.3-pre-release", + "hl7.fhir.uv.tools.r4": "1.1.2" }, "fhirVersions": [ "4.0.1" ], - "jurisdiction": "urn:iso:std:iso:3166:-2:GB-ENG" -} + "jurisdiction": "urn:iso:std:iso:3166:-2#GB" +} \ No newline at end of file From e5a1071a52cad9473baa15eef6f0e59f0ce1ec27 Mon Sep 17 00:00:00 2001 From: Omar Khan Date: Wed, 15 Apr 2026 10:20:26 +0100 Subject: [PATCH 4/4] Added additional suppression --- custom.rules.yaml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/custom.rules.yaml b/custom.rules.yaml index 955b65c..ae44db2 100644 --- a/custom.rules.yaml +++ b/custom.rules.yaml @@ -18,10 +18,11 @@ - eld-16 - ref-1 - dom-6 - - 1012 - - 4005 - - CONFIG - - 6006 + - 1012 #ref-1 + - 4005 # forgotten + - CONFIG #errors in dependencies e.g. loops, outdated, pre-release + - 6006 #failure to contact term service + - 1030 #reference loop - action: unique name: unique-canonicals