diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 661491ce..00000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,23 +0,0 @@ -# This workflow reuses the openHIE GitHub action for building IGs -# Initial idea by from Elliot Silver, available from: https://www.argentixinfo.com/archives/156 -# Change log: -# v0.1.0 -# 2021-06-18: publish default branches to / , other branches branches/ -# 2021-11-26: reusable workflow - -name: CI - -# Controls when the action will run. -on: - # Triggers the workflow on push or pull request events for any main branch - push: - branches-ignore: - - 'gh-pages' - pull_request: - - workflow_dispatch: - -jobs: - # This workflow contains a single job called "build" - call_build: - uses: openhie/empty-fhir-ig/.github/workflows/main.yml@master diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..58241c8a --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,73 @@ +name: Build And Publish base +on: + workflow_dispatch: + push: +jobs: + build-and-publish: + runs-on: ubuntu-latest + steps: + - name: Runner Info + run: | + echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event." + echo "🐧 Now running on a ${{ runner.os }} server hosted by GitHub!" + echo "🔎 Branch is ${{ github.ref }} ${{ github.repository }} repo" + echo "💡 The ${{ github.repository }} repo has been cloned to the runner." + echo "The event_name is ${{ github.event_name }}" + echo "The event.pull_request.merged is ${{ github.event.pull_request.merged}}" + echo "The ref is ${{ github.ref }}" + echo "Provided IG is ${{ inputs.ig }}" + + - name: Checkout Repo + uses: actions/checkout@v2 + + - name: Setup Ruby + uses: actions/setup-ruby@v1 + with: + ruby-version: '3' + + - name: Setup Java / Maven + uses: actions/setup-java@v2 + with: + java-version: '11' + distribution: 'adopt' + + - name: Install Jekyll + run: | + gem install jekyll + + - name: Version Info + run: | + java -version + npm --version + jekyll --version + mvn --version + + - name: Install graphviz to support extra plantuml diagrams + run: | + sudo apt install graphviz + + - name: Build IG + run: | + npm install -g fsh-sushi + sushi . + ./_updatePublisher.sh -y && ./_genonce.sh + + - name: Deploy IG + uses: JamesIves/github-pages-deploy-action@v4.4.2 + with: + branch: gh-pages + folder: ./output + commit-message: Deploy IG ${{ github.ref_name }} + target-folder: ${{ github.ref_name }} + single-commit: true + clean: false + + # - name: Deploy history + # uses: JamesIves/github-pages-deploy-action@v4.4.2 + # with: + # branch: gh-pages + # folder: ./history + # commit-message: Deploy IG history ${{ github.ref_name }} + # target-folder: ${{ github.ref_name }} + # single-commit: true + # clean: false diff --git a/.gitignore b/.gitignore index 46725989..0c03a9b1 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,5 @@ Thumbs.db # backup files # ################ *.bak + +node_modules diff --git a/README.md b/README.md index 01fa0e62..a69ee452 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,48 @@ -Patient Monitoring Outcome ---- +## Patient Monitoring Outcome + IG

+ ### + ### Publication + This ImplementationGuide is published in the following locations: -Continuous Build: -__https://hl7-be.github.io/patient-monitoring/__ -__http://build.fhir.org/ig/hl7-be/patient-monitoring/branches/main/index.html__ -Canonical / permanent URL: +Continuous Build: +**https://hl7-be.github.io/patient-monitoring/** +**http://build.fhir.org/ig/hl7-be/patient-monitoring/branches/main/index.html** +Canonical / permanent URL:

### Issues -Issues and change requests are managed here: -Issues: __https://github.com/hl7-be/patient-monitoring/issues__ -Kanban board: __https://github.com/hl7-be/patient-monitoring/projects/1__ +Issues and change requests are managed here: + +Issues: **https://github.com/hl7-be/patient-monitoring/issues** +Kanban board: **https://github.com/hl7-be/patient-monitoring/projects/1** --- + +### Running locally + +1. Install Prerequisites + Before running a FHIR IG locally, ensure you have the necessary tools installed: + +a. Java +FHIR tools like the IG Publisher require Java. Download and install Java. + +b. Node.js and npm +Some IGs may use Node.js scripts. Download and install Node.js. + +c. FHIR IG Publisher +The FHIR IG Publisher tool is essential for generating and validating IGs. Download the latest publisher.jar from [here](https://github.com/HL7/fhir-ig-publisher/releases). + +d. Jekyll (Optional) +If your IG uses Jekyll for hosting and templating, install Jekyll. Ensure Ruby and Bundler are installed. + +Run Locally: + +``` +java -jar path/to/publisher.jar -ig ig.ini +``` diff --git a/input/fsh/aliases.fsh b/input/fsh/aliases.fsh new file mode 100644 index 00000000..dc14dd45 --- /dev/null +++ b/input/fsh/aliases.fsh @@ -0,0 +1,7 @@ +Alias: $observation-category = http://terminology.hl7.org/CodeSystem/observation-category +Alias: $loinc = http://loinc.org +Alias: $vitalsigns = http://hl7.org/fhir/StructureDefinition/vitalsigns +Alias: $fhir = https://remecare.github.io/patient-monitoring/wip/ +Alias: $snomed = http://snomed.info/sct +Alias: $cd-hcparty = https://www.ehealth.fgov.be/standards/fhir/core/CodeSystem/cd-hcparty +Alias: $UCUM = http://unitsofmeasure.org \ No newline at end of file diff --git a/input/fsh/example-blood-pressure.fsh b/input/fsh/example-blood-pressure.fsh deleted file mode 100644 index e3f220bd..00000000 --- a/input/fsh/example-blood-pressure.fsh +++ /dev/null @@ -1,17 +0,0 @@ -Alias: $observation-category = http://terminology.hl7.org/CodeSystem/observation-category -Alias: $loinc = http://loinc.org -Alias: $vitalsigns = http://hl7.org/fhir/StructureDefinition/vitalsigns - -Instance: BloodPressureExample -InstanceOf: $vitalsigns -Usage: #example -* status = #final -* category = $observation-category#vital-signs "Vital Signs" -* code = $loinc#85354-9 "Blood pressure" -* subject.reference = "Patient/D358D4B4-6007-4C3E-A33B-056773F45DC9" -* component[0].code = $loinc#8480-6 "Systolic blood pressure" -* component[=].valueQuantity = 140 'mm[Hg]' "mmHg" -* component[+].code = $loinc#8462-4 "Diastolic blood pressure" -* component[=].valueQuantity = 74 'mm[Hg]' "mmHg" -* device.reference = "Device/Byteflies Vital Signs" -* effectiveDateTime = "2024-11-18T09:38:52+00:00" diff --git a/input/fsh/example-body-temperature.fsh b/input/fsh/example-body-temperature.fsh deleted file mode 100644 index af5f32ba..00000000 --- a/input/fsh/example-body-temperature.fsh +++ /dev/null @@ -1,15 +0,0 @@ -Alias: $observation-category = http://terminology.hl7.org/CodeSystem/observation-category -Alias: $loinc = http://loinc.org -Alias: $vitalsigns = http://hl7.org/fhir/StructureDefinition/vitalsigns - -Instance: BodyTemperatureExample -InstanceOf: $vitalsigns -Usage: #example -* status = #final -* category = $observation-category#vital-signs "Vital Signs" -* code = $loinc#8310-5 "Body Temperature" -* subject.reference = "Patient/EFD5E060-9522-48BE-9ECC-3BFA54EA3666" -* component.code = $loinc#8310-5 "Body Temperature" -* component.valueQuantity = 35.29 'Cel' "C" -* device.reference = "Device/Byteflies Vital Signs" -* effectiveDateTime = "2024-11-19T19:30:42+00:00" diff --git a/input/fsh/example-body-weight.fsh b/input/fsh/example-body-weight.fsh deleted file mode 100644 index 26129b20..00000000 --- a/input/fsh/example-body-weight.fsh +++ /dev/null @@ -1,15 +0,0 @@ -Alias: $observation-category = http://terminology.hl7.org/CodeSystem/observation-category -Alias: $loinc = http://loinc.org -Alias: $vitalsigns = http://hl7.org/fhir/StructureDefinition/vitalsigns - -Instance: BodyWeightExample -InstanceOf: $vitalsigns -Usage: #example -* status = #final -* category = $observation-category#vital-signs "Vital Signs" -* code = $loinc#29463-7 "Body Weight" -* subject.reference = "Patient/D358D4B4-6007-4C3E-A33B-056773F45DC9" -* component.code = $loinc#29463-7 "Body weight" -* component.valueQuantity = 39.3 'kg' "kg" -* device.reference = "Device/Byteflies Vital Signs" -* effectiveDateTime = "2024-11-19T06:48:20+00:00" diff --git a/input/fsh/example-heart-rate.fsh b/input/fsh/example-heart-rate.fsh deleted file mode 100644 index 31759caa..00000000 --- a/input/fsh/example-heart-rate.fsh +++ /dev/null @@ -1,15 +0,0 @@ -Alias: $observation-category = http://terminology.hl7.org/CodeSystem/observation-category -Alias: $loinc = http://loinc.org -Alias: $vitalsigns = http://hl7.org/fhir/StructureDefinition/vitalsigns - -Instance: HeartRateExample -InstanceOf: $vitalsigns -Usage: #example -* status = #final -* category = $observation-category#vital-signs "Vital Signs" -* code = $loinc#8867-4 "Heart rate" -* subject.reference = "Patient/D358D4B4-6007-4C3E-A33B-056773F45DC9" -* component.code = $loinc#8867-4 "Heart rate" -* component.valueQuantity = 78 '/min' "beats/min" -* device.reference = "Device/Byteflies Vital Signs" -* effectiveDateTime = "2024-11-18T09:38:52+00:00" diff --git a/input/fsh/example-oxygen-saturation.fsh b/input/fsh/example-oxygen-saturation.fsh deleted file mode 100644 index 8093a684..00000000 --- a/input/fsh/example-oxygen-saturation.fsh +++ /dev/null @@ -1,15 +0,0 @@ -Alias: $observation-category = http://terminology.hl7.org/CodeSystem/observation-category -Alias: $loinc = http://loinc.org -Alias: $vitalsigns = http://hl7.org/fhir/StructureDefinition/vitalsigns - -Instance: OxygenSaturationExample -InstanceOf: $vitalsigns -Usage: #example -* status = #final -* category = $observation-category#vital-signs "Vital Signs" -* code = $loinc#59408-5 "Oxygen saturation" -* subject.reference = "Patient/BE84DC42-2B5D-464C-AFFD-57DB87BD7D48" -* component.code = $loinc#59408-5 "Oxygen saturation in Arterial blood by Pulse oximetry" -* component.valueQuantity = 98 '%' "%O2" -* device.reference = "Device/Byteflies Vital Signs" -* effectiveDateTime = "2024-11-19T11:16:55+00:00" diff --git a/input/fsh/example-respiratory-rate.fsh b/input/fsh/example-respiratory-rate.fsh deleted file mode 100644 index afad7dbc..00000000 --- a/input/fsh/example-respiratory-rate.fsh +++ /dev/null @@ -1,16 +0,0 @@ -Alias: $observation-category = http://terminology.hl7.org/CodeSystem/observation-category -Alias: $loinc = http://loinc.org -Alias: $vitalsigns = http://hl7.org/fhir/StructureDefinition/vitalsigns - -Instance: RespiratoryRateExample -InstanceOf: $vitalsigns -Usage: #example -* status = #final -* category = $observation-category#vital-signs "Vital Signs" -* code = $loinc#9279-1 "Respiratory rate" -* subject.reference = "Patient/BE84DC42-2B5D-464C-AFFD-57DB87BD7D48" -* component.code = $loinc#9279-1 "Respiratory rate" -* component.valueQuantity = 17.35 '/min' "breaths/minute" -* device.reference = "Device/Byteflies Vital Signs" -* effectivePeriod.start = "2024-11-15T09:56:00+00:00" -* effectivePeriod.end = "2024-11-15T09:57:00+00:00" diff --git a/input/fsh/examples/devices.fsh b/input/fsh/examples/devices.fsh new file mode 100644 index 00000000..c3054d09 --- /dev/null +++ b/input/fsh/examples/devices.fsh @@ -0,0 +1,8 @@ +Instance: vital-signs-box +InstanceOf: Device +Usage: #inline +* identifier.value = "240822yti3tgeyay" +* deviceName.name = "VS-4" +* deviceName.type = #other +* manufacturer = "Byteflies" +* meta.tag = https://api-vitalsigns.byteflies.net/version#20241028-1511 "API Version 20241028-1511" diff --git a/input/fsh/examples/organisations.fsh b/input/fsh/examples/organisations.fsh new file mode 100644 index 00000000..83cfbd0d --- /dev/null +++ b/input/fsh/examples/organisations.fsh @@ -0,0 +1,4 @@ +Instance: byteflies +InstanceOf: Organization +Usage: #inline +* name = "Byteflies" \ No newline at end of file diff --git a/input/fsh/examples/other-qualitative/example-distended-abdomen.fsh b/input/fsh/examples/other-qualitative/example-distended-abdomen.fsh new file mode 100644 index 00000000..600c6cd9 --- /dev/null +++ b/input/fsh/examples/other-qualitative/example-distended-abdomen.fsh @@ -0,0 +1,14 @@ +Instance: DistendedAbdomenExample +InstanceOf: Observation +Usage: #example +Title: "INCOMPLETE: Distended abdomen example" +Description: "NEEDS ATTENTION: Current answer options are no / a little / fierce. These cannot be found in LOINC or SNOMEDCT currently. Change answer options or request new LOINC codes." +* status = #final +* code = $snomed#60728008 "Swollen abdomen" +* subject.identifier.system = $fhir +* subject.identifier.value = "D358D4B4-6007-4C3E-A33B-056773F45DC9" +* valueCodeableConcept = $loinc#LA10138-8 //TODO: Needs correct value +* effectivePeriod.start = "2024-11-15T09:56:00+00:00" +* effectivePeriod.end = "2024-11-15T09:57:00+00:00" +* contained[0] = nurse +* performer = Reference(nurse) diff --git a/input/fsh/examples/other-qualitative/example-level-of-responsiveness.fsh b/input/fsh/examples/other-qualitative/example-level-of-responsiveness.fsh new file mode 100644 index 00000000..fc5bac5a --- /dev/null +++ b/input/fsh/examples/other-qualitative/example-level-of-responsiveness.fsh @@ -0,0 +1,13 @@ +Instance: LevelOfResponsivenessExample +InstanceOf: Observation +Usage: #example +Title: "Level of responsiveness example" +Description: "Level of responsiveness (AVPU scale)" +* status = #final +* code = $loinc#67775-7 "Level of responsiveness" +* subject.identifier.system = $fhir +* subject.identifier.value = "D358D4B4-6007-4C3E-A33B-056773F45DC9" +* valueCodeableConcept = $loinc#LA17108-4 +* effectiveDateTime = "2024-11-19T06:48:20+00:00" +* contained[0] = nurse +* performer = Reference(nurse) \ No newline at end of file diff --git a/input/fsh/examples/other-qualitative/example-shortness-of-breath.fsh b/input/fsh/examples/other-qualitative/example-shortness-of-breath.fsh new file mode 100644 index 00000000..1735d282 --- /dev/null +++ b/input/fsh/examples/other-qualitative/example-shortness-of-breath.fsh @@ -0,0 +1,13 @@ +Instance: ShortnessOfBreathExample +InstanceOf: Observation +Usage: #example +Title: "Shortness of breath example" +Description: "Possible answers are yes and no" +* status = #final +* code = $snomed#267036007 "Shortness of breath" +* subject.identifier.system = $fhir +* subject.identifier.value = "D358D4B4-6007-4C3E-A33B-056773F45DC9" +* valueCodeableConcept = $snomed#373066001 +* effectiveDateTime = "2024-11-19T06:48:20+00:00" +* contained[0] = nurse +* performer = Reference(nurse) \ No newline at end of file diff --git a/input/fsh/examples/other-quantitative/example-national-early-warning-score.fsh b/input/fsh/examples/other-quantitative/example-national-early-warning-score.fsh new file mode 100644 index 00000000..abfba72f --- /dev/null +++ b/input/fsh/examples/other-quantitative/example-national-early-warning-score.fsh @@ -0,0 +1,13 @@ +Instance: NationalEarlyWarningScoreExample +InstanceOf: Observation +Usage: #example +Title: "National Early Warning Score example" +Description: "National Early Warning Score (NEWS)" +* status = #final +* code = $snomed#1287358002 "National Early Warning Score" +* subject.identifier.system = $fhir +* subject.identifier.value = "D358D4B4-6007-4C3E-A33B-056773F45DC9" +* valueQuantity.value = 6 +* effectiveDateTime = "2024-11-19T06:48:20+00:00" +* contained[0] = nurse +* performer = Reference(nurse) \ No newline at end of file diff --git a/input/fsh/examples/pain/example-abdominal-pain.fsh b/input/fsh/examples/pain/example-abdominal-pain.fsh new file mode 100644 index 00000000..efe7587b --- /dev/null +++ b/input/fsh/examples/pain/example-abdominal-pain.fsh @@ -0,0 +1,14 @@ +Instance: AbdominalPainExample +InstanceOf: Observation +Usage: #example +Title: "Abdominal pain example" +Description: "Pain scale is used as answer" +* status = #final +* code = $snomed#21522001 "Abdominal pain" +* subject.identifier.system = $fhir +* subject.identifier.value = "D358D4B4-6007-4C3E-A33B-056773F45DC9" +* valueCodeableConcept = $loinc#LA10138-8 +* effectivePeriod.start = "2024-11-15T09:56:00+00:00" +* effectivePeriod.end = "2024-11-15T09:57:00+00:00" +* contained[0] = nurse +* performer = Reference(nurse) diff --git a/input/fsh/examples/pain/example-pain-during-urination.fsh b/input/fsh/examples/pain/example-pain-during-urination.fsh new file mode 100644 index 00000000..00bd3119 --- /dev/null +++ b/input/fsh/examples/pain/example-pain-during-urination.fsh @@ -0,0 +1,14 @@ +Instance: PainDuringUrinationExample +InstanceOf: Observation +Usage: #example +Title: "Pain during urination example" +Description: "Possible answers are yes and no" +* status = #final +* code = $snomed#49650001 "Urination painful" +* subject.identifier.system = $fhir +* subject.identifier.value = "D358D4B4-6007-4C3E-A33B-056773F45DC9" +* valueCodeableConcept = $snomed#373066001 +* effectivePeriod.start = "2024-11-15T09:56:00+00:00" +* effectivePeriod.end = "2024-11-15T09:57:00+00:00" +* performer.identifier.system = $fhir +* performer.identifier.value = "D358D4B4-6007-4C3E-A33B-056773F45DC9" diff --git a/input/fsh/examples/pain/example-pain-in-calves.fsh b/input/fsh/examples/pain/example-pain-in-calves.fsh new file mode 100644 index 00000000..79788f2b --- /dev/null +++ b/input/fsh/examples/pain/example-pain-in-calves.fsh @@ -0,0 +1,14 @@ +Instance: PainInCalvesExample +InstanceOf: Observation +Usage: #example +Title: "Pain in calves example" +Description: "Possible answers are yes and no" +* status = #final +* code = $snomed#1264028004 "Pain in muscle of lower leg" +* subject.identifier.system = $fhir +* subject.identifier.value = "D358D4B4-6007-4C3E-A33B-056773F45DC9" +* valueCodeableConcept = $snomed#373066001 +* effectivePeriod.start = "2024-11-15T09:56:00+00:00" +* effectivePeriod.end = "2024-11-15T09:57:00+00:00" +* performer.identifier.system = $fhir +* performer.identifier.value = "D358D4B4-6007-4C3E-A33B-056773F45DC9" diff --git a/input/fsh/examples/pain/example-pain-medication-taken.fsh b/input/fsh/examples/pain/example-pain-medication-taken.fsh new file mode 100644 index 00000000..fd3b0700 --- /dev/null +++ b/input/fsh/examples/pain/example-pain-medication-taken.fsh @@ -0,0 +1,14 @@ +Instance: PainMedicationTakenExample +InstanceOf: Observation +Usage: #example +Title: "INCOMPLETE: Pain medication taken example" +Description: "NEEDS ATTENTION: No LOINC or SNOMEDCT code currently exists for Pain medication taken. Change answer options or request new LOINC codes." +* status = #final +* code = $loinc#72514-3 "Pain severity - 0-10 verbal numeric rating [Score] - Reported" //TODO: Needs correct code +* subject.identifier.system = $fhir +* subject.identifier.value = "D358D4B4-6007-4C3E-A33B-056773F45DC9" +* valueCodeableConcept = $loinc#LA10138-8 //TODO: Find out which valueset to use +* effectivePeriod.start = "2024-11-15T09:56:00+00:00" +* effectivePeriod.end = "2024-11-15T09:57:00+00:00" +* performer.identifier.system = $fhir +* performer.identifier.value = "D358D4B4-6007-4C3E-A33B-056773F45DC9" diff --git a/input/fsh/examples/pain/example-pain-surgical-wounds.fsh b/input/fsh/examples/pain/example-pain-surgical-wounds.fsh new file mode 100644 index 00000000..ae17a394 --- /dev/null +++ b/input/fsh/examples/pain/example-pain-surgical-wounds.fsh @@ -0,0 +1,14 @@ +Instance: PainSurgicalWoundsExample +InstanceOf: Observation +Usage: #example +Title: "Pain surgical wounds example" +Description: "Pain surgical wounds example description" //TODO: Needs description +* status = #final +* code = $loinc#72514-3 "Pain severity - 0-10 verbal numeric rating [Score] - Reported" //TODO: Needs correct code +* subject.identifier.system = $fhir +* subject.identifier.value = "D358D4B4-6007-4C3E-A33B-056773F45DC9" +* valueCodeableConcept = $loinc#LA10138-8 //TODO: Needs correct value +* effectivePeriod.start = "2024-11-15T09:56:00+00:00" +* effectivePeriod.end = "2024-11-15T09:57:00+00:00" +* contained[0] = nurse +* performer = Reference(nurse) diff --git a/input/fsh/examples/pain/example-shoulder-pain.fsh b/input/fsh/examples/pain/example-shoulder-pain.fsh new file mode 100644 index 00000000..7facc325 --- /dev/null +++ b/input/fsh/examples/pain/example-shoulder-pain.fsh @@ -0,0 +1,14 @@ +Instance: ShoulderPainExample +InstanceOf: Observation +Usage: #example +Title: "INCOMPLETE: Shoulder pain example" +Description: "NEEDS ATTENTION: No LOINC or SNOMEDCT code currently exists for shoulder pain. Pain scale is used as answer." +* status = #final +* code = $loinc#72514-3 "Pain severity - 0-10 verbal numeric rating [Score] - Reported" //TODO: Needs correct code +* subject.identifier.system = $fhir +* subject.identifier.value = "D358D4B4-6007-4C3E-A33B-056773F45DC9" +* valueCodeableConcept = $loinc#LA10138-8 +* effectivePeriod.start = "2024-11-15T09:56:00+00:00" +* effectivePeriod.end = "2024-11-15T09:57:00+00:00" +* contained[0] = nurse +* performer = Reference(nurse) diff --git a/input/fsh/examples/practitioner-roles.fsh b/input/fsh/examples/practitioner-roles.fsh new file mode 100644 index 00000000..162453cd --- /dev/null +++ b/input/fsh/examples/practitioner-roles.fsh @@ -0,0 +1,5 @@ +Instance: nurse +InstanceOf: PractitionerRole +Usage: #inline +* meta.profile = "https://www.ehealth.fgov.be/standards/fhir/core/StructureDefinition/be-practitionerrole" +* code = $cd-hcparty#persnurse "Nurse" \ No newline at end of file diff --git a/input/fsh/examples/vital-signs/example-blood-pressure.fsh b/input/fsh/examples/vital-signs/example-blood-pressure.fsh new file mode 100644 index 00000000..df202e46 --- /dev/null +++ b/input/fsh/examples/vital-signs/example-blood-pressure.fsh @@ -0,0 +1,18 @@ +Instance: BloodPressureExample +InstanceOf: $vitalsigns +Usage: #example +Description: "Blood Pressure example" //TODO: Needs description +* status = #final +* category = $observation-category#vital-signs "Vital Signs" +* code = $loinc#85354-9 "Blood pressure panel with all children optional" +* subject.identifier.system = $fhir +* subject.identifier.value = "D358D4B4-6007-4C3E-A33B-056773F45DC9" +* component[0].code = $loinc#8480-6 "Systolic blood pressure" +* component[=].valueQuantity = 140 'mm[Hg]' "mmHg" +* component[+].code = $loinc#8462-4 "Diastolic blood pressure" +* component[=].valueQuantity = 74 'mm[Hg]' "mmHg" +* contained[0] = vital-signs-box +* contained[+] = byteflies +* device = Reference(vital-signs-box) +* performer = Reference(byteflies) +* effectiveDateTime = "2024-11-18T09:38:52+00:00" \ No newline at end of file diff --git a/input/fsh/examples/vital-signs/example-body-temperature.fsh b/input/fsh/examples/vital-signs/example-body-temperature.fsh new file mode 100644 index 00000000..2a611047 --- /dev/null +++ b/input/fsh/examples/vital-signs/example-body-temperature.fsh @@ -0,0 +1,16 @@ +Instance: BodyTemperatureExample +InstanceOf: $vitalsigns +Usage: #example +Description: "Temperature example" //TODO: Needs description +* status = #final +* category = $observation-category#vital-signs "Vital Signs" +* code = $loinc#8310-5 "Body Temperature" +* subject.identifier.system = $fhir +* subject.identifier.value = "EFD5E060-9522-48BE-9ECC-3BFA54EA3666" +* valueQuantity.value = 35.29 +* valueQuantity = $UCUM#Cel "C" +* contained[0] = vital-signs-box +* contained[+] = byteflies +* device = Reference(vital-signs-box) +* performer = Reference(byteflies) +* effectiveDateTime = "2024-11-19T19:30:42+00:00" diff --git a/input/fsh/examples/vital-signs/example-body-weight.fsh b/input/fsh/examples/vital-signs/example-body-weight.fsh new file mode 100644 index 00000000..6971f583 --- /dev/null +++ b/input/fsh/examples/vital-signs/example-body-weight.fsh @@ -0,0 +1,16 @@ +Instance: BodyWeightExample +InstanceOf: $vitalsigns +Usage: #example +Description: "Body Weight example" //TODO: Needs description +* status = #final +* category = $observation-category#vital-signs "Vital Signs" +* code = $loinc#29463-7 "Body Weight" +* subject.identifier.system = $fhir +* subject.identifier.value = "D358D4B4-6007-4C3E-A33B-056773F45DC9" +* valueQuantity.value = 89.3 +* valueQuantity = $UCUM#kg "kg" +* contained[0] = vital-signs-box +* contained[+] = byteflies +* device = Reference(vital-signs-box) +* performer = Reference(byteflies) +* effectiveDateTime = "2024-11-19T06:48:20+00:00" \ No newline at end of file diff --git a/input/fsh/examples/vital-signs/example-heart-rate.fsh b/input/fsh/examples/vital-signs/example-heart-rate.fsh new file mode 100644 index 00000000..7b52feb8 --- /dev/null +++ b/input/fsh/examples/vital-signs/example-heart-rate.fsh @@ -0,0 +1,16 @@ +Instance: HeartRateExample +InstanceOf: $vitalsigns +Usage: #example +Description: "Heart Rate example" //TODO: Needs description +* status = #final +* category = $observation-category#vital-signs "Vital Signs" +* code = $loinc#8867-4 "Heart rate" +* subject.identifier.system = $fhir +* subject.identifier.value = "D358D4B4-6007-4C3E-A33B-056773F45DC9" +* valueQuantity.value = 78 +* valueQuantity = $UCUM#/min "/min" +* contained[0] = vital-signs-box +* contained[+] = byteflies +* device = Reference(vital-signs-box) +* performer = Reference(byteflies) +* effectiveDateTime = "2024-11-18T09:38:52+00:00" diff --git a/input/fsh/examples/vital-signs/example-oxygen-saturation.fsh b/input/fsh/examples/vital-signs/example-oxygen-saturation.fsh new file mode 100644 index 00000000..36c3e644 --- /dev/null +++ b/input/fsh/examples/vital-signs/example-oxygen-saturation.fsh @@ -0,0 +1,21 @@ +Instance: OxygenSaturationExample +InstanceOf: $vitalsigns +Usage: #example +Description: "Oxygen saturation example" //TODO: Needs description +* status = #final +* category = $observation-category#vital-signs "Vital Signs" +* code.coding[0].system = $loinc +* code.coding[0].code = #2708-6 +* code.coding[0].display = "Oxygen saturation in Arterial blood" +* code.coding[+].system = $loinc +* code.coding[=].code = #59408-5 +* code.coding[=].display = "Oxygen saturation in Arterial blood by Pulse oximetry" +* subject.identifier.system = $fhir +* subject.identifier.value = "BE84DC42-2B5D-464C-AFFD-57DB87BD7D48" +* valueQuantity.value = 98 +* valueQuantity = $UCUM#% "%O2" +* contained[0] = vital-signs-box +* contained[+] = byteflies +* device = Reference(vital-signs-box) +* performer = Reference(byteflies) +* effectiveDateTime = "2024-11-19T11:16:55+00:00" diff --git a/input/fsh/examples/vital-signs/example-respiratory-rate.fsh b/input/fsh/examples/vital-signs/example-respiratory-rate.fsh new file mode 100644 index 00000000..73593262 --- /dev/null +++ b/input/fsh/examples/vital-signs/example-respiratory-rate.fsh @@ -0,0 +1,17 @@ +Instance: RespiratoryRateExample +InstanceOf: $vitalsigns +Usage: #example +Description: "Respiration example" //TODO: Needs description +* status = #final +* category = $observation-category#vital-signs "Vital Signs" +* code = $loinc#9279-1 "Respiratory rate" +* subject.identifier.system = $fhir +* subject.identifier.value = "BE84DC42-2B5D-464C-AFFD-57DB87BD7D48" +* valueQuantity.value = 17.35 +* valueQuantity = $UCUM#/min "breaths/minute" +* contained[0] = vital-signs-box +* contained[+] = byteflies +* device = Reference(vital-signs-box) +* performer = Reference(byteflies) +* effectivePeriod.start = "2024-11-15T09:56:00+00:00" +* effectivePeriod.end = "2024-11-15T09:57:00+00:00" diff --git a/input/fsh/models/patientmonitoring.fsh b/input/fsh/models/patientmonitoring.fsh deleted file mode 100644 index 64b48161..00000000 --- a/input/fsh/models/patientmonitoring.fsh +++ /dev/null @@ -1,71 +0,0 @@ -Logical: PatientMonitoring -Id: PatientMonitoring -Title: "Patient Monitoring" -Description: "The data structure for Patient monitoring." -* ^extension[http://hl7.org/fhir/tools/StructureDefinition/logical-target].valueBoolean = true - -* identifier 1..1 Identifier "Measurement Identifier" "Measurement Identifier" -* status 1..1 code "Measurement status" "Measurement status" -* code 1..1 CodeableConcept "Code for the sign" - -* patient 1..1 BackboneElement "patient data" "patient data" - * identfier 1..1 string "user id" "user id" - * nissNumber 1..1 string "Patient NISS Number" "Patient NISS Number" - * otherId 0..* string "Patient NISS Number" "Patient NISS Number" - * userName 1..1 Identifier "user name" "user name" - - * userEmail 1..1 string "app version" "app version" - * dateOfBirth 1..1 date "Date of Birth" "Date of Birth" - - -* device 0..1 BackboneElement "The device used to acquire or interpret the signals" - * model 0..1 string "Model name" "Model name" - * serialNumber 0..1 string "Serial number of the device" "Serial number of the device" - * manufacturer 0..1 string "Name of the manufacturer" "Name of the manufacturer" -* software 0..1 BackboneElement "The software used to aquire or interpret the signals" - * version 0..1 string "Software version" "Software version" - * softwareName 0..1 string "Software version" "Software version" - - - -* measurement 0..* BackboneElement "Measurement data" "Measurement data" - * measurementTimeStamp 1..1 dateTime "Measurement timestamp" "Measurement timestamp" - * measurementPeriod 1..1 period "Measurement Period" "Measurement Period" - * value 0..1 string "Value of the aquired sign" "Value of the sign" - -* dataAbsentReason 1..1 period "Data absent reason" "Data absent reason" - -* hasMember 0..* Reference(PatientMonitoring) "Component results, if separate" "Component results" -* derivedFrom 0..* Reference "Related signs from which this is obtained" "Related signs from which this is obtained" - - -* interpretation 0..1 CodeableConcept "High, low, normal, etc." "High, low, normal, etc." -* note 0..* Annotation "Comments about the sign" "Comments about the sign" - -* referenceRange 0..* BackboneElement "Provides guide for interpretation" "Provides guide for interpretation" - * low 0..1 SimpleQuantity "Low Range, if relevant" "Low Range, if relevant" - * high 0..1 SimpleQuantity "High Range, if relevant" "High Range, if relevant" - * normalValue 0..1 CodeableConcept "Normal Range, if relevant" "Normal Range, if relevant" - * type 0..1 CodeableConcept "Reference range qualifier" "Reference range qualifier" - * age 0..1 Range "Applicable age range, if relevant" "Applicable age range, if relevant" - * text 0..1 markdown "Text based reference range in an observation" "Text based reference range in an observation" - -* component 0..* BackboneElement "Components when there are more than one values in the same sign" - * value 0..1 string "Value of the aquired sign" "Value of the sign" - * dataAbsentReason 0..1 CodeableConcept "Reason for missing data" "Reason for missing data" - * interpretation 0..1 CodeableConcept "High, low, normal, etc." "High, low, normal, etc." - * note 0..* Annotation "Comments about the sign" "Comments about the sign" - * referenceRange 0..* BackboneElement "Provides guide for interpretation" "Provides guide for interpretation" - * low 0..1 SimpleQuantity "Low Range, if relevant" "Low Range, if relevant" - * High 0..1 SimpleQuantity "High Range, if relevant" "High Range, if relevant" - * normalValue 0..1 CodeableConcept "Normal Range, if relevant" "Normal Range, if relevant" - * type 0..1 CodeableConcept "Reference range qualifier" "Reference range qualifier" - * age 0..1 Range "Applicable age range, if relevant" "Applicable age range, if relevant" - * text 0..1 markdown "Text based reference range in an observation" "Text based reference range in an observation" - -* context 0..* BackboneElement "Context" - * symptoms 0..* CodeableConcept "Symptoms" "Symptoms" - * activity 0..* CodeableConcept "Activity" "Activity" - * others 0..* CodeableConcept "Others" "Others" - - diff --git a/input/includes/menu.xml b/input/includes/menu.xml deleted file mode 100644 index 01acc95d..00000000 --- a/input/includes/menu.xml +++ /dev/null @@ -1,38 +0,0 @@ - \ No newline at end of file diff --git a/input/myig.xml b/input/myig.xml deleted file mode 100644 index 7c110afd..00000000 --- a/input/myig.xml +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - - <status value="draft"/> - <experimental value="false"/> - <publisher value="xxxYour Work Group"/> - <contact> - <telecom> - <!-- Or whatever URL and/or email address(es) are appropriate --> - <system value="url"/> - <value value="xxxhttp://hl7.org/Special/committees/[something]"/> - </telecom> - </contact> - <description value="xxxA brief description of what this IG is about "/> - <jurisdiction> - <!-- This will drive SNOMED release used --> - <coding> - <!-- This is the code for universal --> - <system value="http://unstats.un.org/unsd/methods/m49/m49.htm"/> - <code value="001"/> - <!-- Change to this if the IG is country-specific - <system value="http://unstats.un.org/unsd/methods/m49/m49.htm"/> - <code value="001"/> - --> - </coding> - </jurisdiction> - <packageId value="xxxexample.fhir.uv.myig"/> - <!-- This should be changed to 'not-open-source' or another license if appropriate for non-HL7-published content --> - <license value="CC0-1.0"/> - <!-- This is whatever FHIR version(s) the IG artifacts are targeting (not the version of this file, which should always be 'current release') --> - <fhirVersion value="4.0.1"/> - <definition> - <!-- You don't need to define any groupings. The IGPublisher will define them for you. You only need to do so if your IG is 'special' and it's - inappropriate to use the defaults. Feel free to provide feedback about the defaults... --> - <page> - <!-- The root will always be toc.html - the template will force it if you don't do it --> - <nameUrl value="toc.html"/> - <title value="Table of Contents"/> - <generation value="html"/> - <page> - <nameUrl value="index.html"/> - <title value="MyIG Home Page"/> - <generation value="html"/> - </page> - <page> - <nameUrl value="downloads.html"/> - <title value="Useful Downloads"/> - <generation value="html"/> - </page> - <!-- change history page --> - <page> - <nameUrl value="changes.html"/> - <title value="IG Change History"/> - <generation value="html"/> - </page> - </page> - <!-- copyright year is a mandatory parameter --> - <parameter> - <code value="copyrightyear"/> - <value value="2019+"/> - </parameter> - <!-- releaselabel should be the ballot status for HL7-published IGs. --> - <parameter> - <code value="releaselabel"/> - <value value="CI Build"/> - </parameter> - <parameter> - <code value="find-other-resources"/> - <value value="true"/> - </parameter> - <parameter> - <code value="path-resource"/> - <value value="input\history"/> - </parameter> - <parameter> - <code value="path-resource"/> - <value value="input\scenarios"/> - </parameter> - <parameter> - <code value="path-binary"/> - <value value="input\cql"/> - </parameter> - <parameter> - <code value="path-liquid"/> - <value value="templates\liquid"/> - </parameter> -<!-- Uncomment one or more of these if you want to limit which syntaxes are supported or want to disable the display of mappings - <parameter> - <code value="excludexml"/> - <value value="true"/> - </parameter> - <parameter> - <code value="excludejson"/> - <value value="true"/> - </parameter> - <parameter> - <code value="excludettl"/> - <value value="true"/> - </parameter> - <parameter> - <code value="excludemap"/> - <value value="true"/> - </parameter>--> - </definition> -</ImplementationGuide> diff --git a/input/pagecontent/history.md b/input/pagecontent/changes.md similarity index 100% rename from input/pagecontent/history.md rename to input/pagecontent/changes.md diff --git a/input/pagecontent/copyrights.md b/input/pagecontent/copyrights.md new file mode 100644 index 00000000..4a618a34 --- /dev/null +++ b/input/pagecontent/copyrights.md @@ -0,0 +1,12 @@ +### Intellectual Property Considerations + +While this implementation guide and the underlying FHIR are licensed as public domain, this guide includes examples making use of terminologies such +as LOINC, SNOMED CT and others which have more restrictive licensing requirements. Implementers should make themselves familiar with licensing and +any other constraints of terminologies, questionnaires, and other components used as part of their implementation process. In some cases, +licensing requirements may limit the systems that data captured using certain questionnaires may be shared with. + +### Disclaimer + +The specification herewith documented is a demo working specification, and may not be used for any implementation purposes. +This draft is provided without warranty of completeness or consistency, and the official publication supersedes this draft. +No liability can be inferred from the use or misuse of this specification, or its consequences. \ No newline at end of file diff --git a/input/pagecontent/ews.md b/input/pagecontent/ews.md new file mode 100644 index 00000000..644bea2f --- /dev/null +++ b/input/pagecontent/ews.md @@ -0,0 +1,97 @@ +**DRAFT: 2024-11-25** + +### Care Pathway Overview + +- **Accessibility**: Reachable during office hours. +- **Patient Criteria**: + + - Signed informed consent + - Ability to sustainably implement telemonitoring + - Lives within the geographically defined region + - Patient has no psychosocial issues + - Patient without non-compliance + - Patient is willing to wear wearables during the hospital stay and in the home environment + - Patient is over 16 years old + - Patient was not admitted to intensive care + - Patient is medically stable + - Patient is no longer receiving oxygen therapy at discharge (EWS calculation) + +- **Accessibility**: Reachable during office hours. + +--- + +### Process and Workflow Description + +#### Start-Up + +- **Screening and risk Assessment**: performed by the attending physician. +- **Informed consent**: Collected and securely stored. +- **Tele Care Center**: Involved in the workflow. +- **Parameters monitored**: + + - Heart Rate (HR) + - Systolic Blood Pressure (BP) + - Saturation + - Temperature + - Respiratory Rate + - Oxygen + - AWPU + - Frequency: Daily, 3 times per day, 10 days. + +#### Data Collection + +- Data is automatically collected via connected devices or manually entered into the system. +- Technology is CE-certified, with end-to-end encryption and GDPR compliance. + +#### Alarm Management + +- (N)EWS and/or single vital sign alarm thresholds are predefined on the digital platform. +- The RRT/tele care center checks the collected data daily during working hours. +- In case of alarms, the tele care center will inform the home nurse as soon as possible. + +--- + +### Integration Modules for EPD + +#### Outcome Module - PDF + +- **Daily Updates**: Updated daily per measurement. +- **Content**: Overview of the questions and vital parameters. +- **File Size**: ±100KB per PDF, max: 10MB per PDF. + +--- + +#### Outcome Module - FHIR Integration + +##### Vital Signs + +- **Frequency**: Maximum of 5 updates per day, on average 1 update per day (per measurement). +- **LOINC Codes**: +<div class="table-md"></div> + + | Description | Code(s) | Possible answers | + | ------------------------------------ | --------------------- | -------------------- | + | Heart rate (HR) measurement | LOINC 8867-4 | | + | Blood pressure (BP) measurement | LOINC 8480-6 / 8463-4 | | + | Body weight (BW) measurement | LOINC 29463-7 | | + | Respiratory (RESP) measurement | LOINC 9279-1 | | + | Temperature (TEMP) measurement | LOINC 8310-5 | | + | Oxygen Saturation (SPO2) measurement | LOINC 59408-5 | | + | Level of responsiveness (AVPU scale) | LOINC 67775-7 | LOINC LL1845-8 | + | National Early Warning Score (NEWS) | SNOMED 1287358002 | | + +These FHIR modules ensure standardized data exchange between systems and guarantee consistency of the vital parameters. + +##### Specification: + +For detailed specifications, refer to the + +- [Blood Pressure Example](./Observation-BloodPressureExample.html) +- [Weight Example](./Observation-BodyWeightExample.html) +- [Heart Rate Example](./Observation-HeartRateExample.html) +- [Oxygen Saturation Example](./Observation-OxygenSaturationExample.html) +- [Respiratory Rate Example](./Observation-RespiratoryRateExample.html) +- [Temperature Example](./Observation-BodyTemperatureExample.html) +- [Level of responsiveness Example](./Observation-LevelOfResponsivenessExample.html) +- [National Early Warning Score Example](./Observation-NationalEarlyWarningScoreExample.html) + diff --git a/input/pagecontent/heartfailure.md b/input/pagecontent/heartfailure.md new file mode 100644 index 00000000..4ab14634 --- /dev/null +++ b/input/pagecontent/heartfailure.md @@ -0,0 +1,78 @@ +**DRAFT: 2024-11-25** + +### Care Pathway Overview + +- **Duration**: 4 years +- **Central Care Facility**: Specialized heart failure center with a telemonitoring team. +- **Minimal Capacity**: 0.5 FTE heart failure nurse per 100 patients. +- **Educational Material**: Available for self-management and adherence. +- **Accessibility**: Reachable during office hours. + +#### Patient Criteria + +- **NYHA Classification**: II or III (85% of all new patients, ~21,000 per year). +- **Informed Consent**: Signed informed consent required. +- **Physical Consultation**: At least 1 physical consultation 2 years before the start of telemonitoring. + +--- + +### Process and Workflow Description + +#### Start-Up + +- **Screening and Risk Assessment**: Performed by the heart failure center. +- **Informed Consent**: Collected and securely stored. +- **Involvement**: General practitioner or home nurse involved in the workflow. +- **Parameters Monitored**: + - Heart Rate (HR) + - Blood Pressure (BP) + - Weight (BW) +- **Frequency**: Daily, once per day, 7 days a week, 6 months. + +#### Data Collection + +- Data is automatically collected via connected devices or manually entered into the system. +- Technology is CE-certified, with end-to-end encryption and GDPR compliance. + +#### Alarm Management + +- **Thresholds**: Heart failure alarm thresholds predefined on the digital platform. +- **Monitoring**: Data checked daily during working hours by the heart failure team. +- **Alarm Notification**: + - General practitioner or home nurse informed within 5 working days (or within 48 hours if urgent). + +--- + +### Integration Modules for EPD + +#### Outcome Module - PDF + +- **Daily Updates**: Updated daily per measurement. +- **Content**: Overview of the questions and vital parameters. +- **File Size**: ±100KB per PDF, max: 10MB per PDF. + +--- + +#### Outcome Module - FHIR Integration + +##### Vital Signs + +- **Frequency**: Maximum of 5 updates per day, on average 1 update per day (per measurement). +- **LOINC Codes**: +<div class="table-md"></div> + + | Description | LOINC Code(s) | + | ------------------------------- | --------------------- | + | Heart rate (HR) measurement | LOINC 8867-4 | + | Blood pressure (BP) measurement | LOINC 8480-6 / 8463-4 | + | Body weight (BW) measurement | LOINC 29463-7 | + +These FHIR modules ensure standardized data exchange between systems and guarantee consistency of the vital parameters. + +##### Specification: + +For detailed specifications, refer to the + +- [Blood Pressure Example](./Observation-BloodPressureExample.html) +- [Weight Example](./Observation-BodyWeightExample.html) +- [Heart Rate Example](./Observation-HeartRateExample.html) diff --git a/input/pagecontent/index.md b/input/pagecontent/index.md index 5c22b9c4..9dc2c545 100644 --- a/input/pagecontent/index.md +++ b/input/pagecontent/index.md @@ -1,101 +1,27 @@ -# Introduction +## Implementation Guide for Telemonitoring Prescription -# Purpose +### Introduction -# Scope +This Implementation Guide (IG) provides standardized guidance for Electronic Health Record (EHR) systems and Telemonitoring (TM) Providers. Developed in alignment with HL7 standards, it offers a unified framework for seamless data integration between EHRs and TM Providers. The guide is fully aligned with the Telemonitoring Prescription initiative. Additional information can be found at [telemonitoring-prescription.com](https://www.telemonitoring-prescription.com). -# Audience +### Purpose -# Intellectual Property Considerations +The primary goal of this IG is to standardize the use of FHIR outputs within the Telemonitoring Hub. By providing clear guidelines, it ensures that EHR systems can effectively interpret data sent by Telemonitoring Providers and received by prescribers (typically EHR systems). This facilitates streamlined and consistent communication across the healthcare ecosystem. -While this implementation guide and the underlying FHIR are licensed as public domain, this guide includes examples making use of terminologies such -as LOINC, SNOMED CT and others which have more restrictive licensing requirements. Implementers should make themselves familiar with licensing and -any other constraints of terminologies, questionnaires, and other components used as part of their implementation process. In some cases, -licensing requirements may limit the systems that data captured using certain questionnaires may be shared with. - -# Disclaimer +### Scope -The specification herewith documented is a demo working specification, and may not be used for any implementation purposes. -This draft is provided without warranty of completeness or consistency, and the official publication supersedes this draft. -No liability can be inferred from the use or misuse of this specification, or its consequences. - +The Telemonitoring Prescription focuses on integrating patient monitoring data into hospital and healthcare systems, regardless of where the data is collected—inside or outside a hospital. This guide emphasizes interoperability between hospital systems and external providers, ensuring that patient monitoring outcomes are seamlessly incorporated into clinical workflows. -# Use Cases and Scenarios -## Overview -## Common Scenarios -### Monitoring Chronic Conditions (e.g., Diabetes, Hypertension) -### Post-Surgical Recovery Monitoring -### COVID-19 or Infectious Disease Monitoring -### Behavioral Health Monitoring +### Topics Covered -# Key Concepts and Definitions -## FHIR Basics for RPM -## Observation Resource Overview -## Profiles, Extensions, and Value Sets -## Terminologies and Coding Systems (e.g., LOINC, SNOMED CT) +- **Use Cases and Scenarios**: Practical examples to demonstrate the implementation of Telemonitoring in real-world settings. +- **Key Concepts and Definitions**: Clear explanations of core terms and concepts relevant to the Telemonitoring Prescription. +- **Interoperability**: Guidelines for achieving seamless data exchange between EHRs and TM Providers. +- **FHIR Profiles and Terminology Bindings**: Detailed specifications for consistent use of FHIR standards. +- **Sample Resources**: Examples of FHIR resources to facilitate implementation. +- **Security and Privacy**: Best practices for ensuring compliance with privacy regulations and securing patient data. +- **Implementation Guidance**: + - Handling errors and exceptions + - Best practices for deployment and integration -# RPM Observation Profiles -## General Structure of Observation Profiles -## Core RPM Observations -### Vital Signs (e.g., Heart Rate, Blood Pressure, Body Temperature) -### Physical Measurements (e.g., Weight, BMI) -### Activity Data (e.g., Steps, Calories Burned) -### Cardiovascular Monitoring (e.g., ECG, Pulse Oximetry) -### Respiratory Monitoring (e.g., Spirometry, Peak Flow) -### Behavioral and Mood Assessments -### Device-Specific Observations - -# Data Flow and Interoperability -## Data Collection and Transmission -## Data Transformation and Storage -## Interoperability with EHR Systems -## Handling Data from Multiple Sources -## Security and Privacy Considerations - -# FHIR Profiles and Extensions -## Profiles for RPM Observations -## Custom Extensions for Specialized Data -## Best Practices for Defining Extensions -## Example Profiles and Extensions - -# Implementation Guidance -## Conformance and Validation Requirements -## Handling Errors and Exceptions -## Workflow Integration Tips -## Best Practices for RPM Implementation - -# Sample Transactions and Bundles -## Patient Resource Example -## Observation Resource Example -## Bundled Transactions for RPM Scenarios -## Test Data Examples - -# Terminology Bindings -## Standardized Codes for RPM Observations -## Value Set Definitions -## Mapping Local Codes to Standard Codes - -# Security and Privacy -## Securing RPM Data Transfers -## Managing Patient Consent -## Access Control and Authentication -## Compliance with HIPAA, GDPR, or Other Regulations - -# Testing and Validation -## Tools for Validation (e.g., FHIR Validator) -## Test Scripts for RPM Observations -## Example Test Cases - -# Appendix -## Glossary of Terms -## References and Resources -## Change Log for the Guide -## FAQs - -# Acknowledgments -## Contributors -## Organizations and Stakeholders - -# Contact Information -## Feedback and Support -## IG Maintenance and Updates +This guide serves as a critical resource for ensuring the success of the Telemonitoring Prescription initiative by promoting consistency, interoperability, and security in patient monitoring data exchange. diff --git a/input/pagecontent/overview-loinc.md b/input/pagecontent/overview-loinc.md new file mode 100644 index 00000000..f72bb662 --- /dev/null +++ b/input/pagecontent/overview-loinc.md @@ -0,0 +1,288 @@ +### Ongoing + +| LOINC | SNOMED CT | Short Display | +|------------|------------------|-------------------| +| | 29463-7 | Body weight | +| | 8310-5 | Body temperature | +| | 8480-6 | BP sys | +| | 8462-4 | BP dia | +| | 59408-5 | Oxygen saturation | +| | 8867-4 | Heart rate | + +### TO-DO + +| Observations Patient Monitoring | | | | | | | | | | | | +|---------------------------------|------------------------------|-----------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------|----------------------------------|----------------------------------|------------------|--------------|----------------|-----------------|--------------| +| Snomed CT Code | LOINC code | Short Display | Long Description (EN) | Status | translation NL available (nl-BE) | translation FR available (fr-BE) | Fibricheck (Y/N) | MoveUp (Y/N) | Remecare (Y/N) | Byteflies (Y/N) | Abbott (Y/N) | +| | 29463-7 | Weight | Body weight | | No | Yes | | Y | Y | Y | | +| | 8310-5 | Body temperature | Body temperature | | No | Yes | | Y | Y | Y | | +| | 39156-5 | BMI | Body mass index (BMI) [Ratio] | | No | No | | Y | Y | | | +| | 8480-6 | BP sys | Systolic blood pressure | | No | No | | Y | Y | Y | | +| | 8462-4 | BP dias | Diastolic blood pressure | | No | No | | Y | Y | Y | | +| | 8867-4 | Heart rate | Heart rate | | No | No | | Y | Y | Y | | +| | 64008-6 | Pain severity | Pain severity [Score] [PhenX] | | No | No | | Y | Y | | | +| | ? | ? | Weight gain (%) | | | | | | Y | | | +| | 59417-6 | SaO2 Resting % BldA PulseOx | Oxygen saturation in Arterial blood by Pulse oximetry --resting | | No | Yes | | | Y | N, 59408-5 | | +| | 76528-9 | Breaths.spontaneous | Breath rate spontaneous | | No | No | | Y | Y | Y | | +| | ? | | Anxiety score (Hospital Anxiety and Depression Scale) | | | | | Y | Y | | | +| | ? | | Depression score (Hospital Anxiety and Depression Scale) | | | | | Y | Y | | | +| | ? | | Breath rate resting | | | | | Y | Y | | | +| | ? | | Body weight difference (between this and last measure) | | | | | | Y | | | +| | 41950-7 | # steps 24h nRate Measured | Number of steps in 24 hour Measured | | No | No | | Y | Y | | | +| | ? | | Heart rate before product administration | | | | | | Y | | | +| | ? | | Heart rate during product administration | | | | | | Y | | | +| | ? | | Heart rate after product administration | | | | | | Y | | | +| | ? | | Systolic blood pressure before product administration (exists for transfusion and anesthesia) | | | | | | Y | | | +| | ? | | Systolic blood pressure during product administration (exists for transfusion and anesthesia) | | | | | | Y | | | +| | ? | | Systolic blood pressure after product administration (exists for transfusion and anesthesia) | | | | | | Y | | | +| | ? | | Diastolic blood pressure before product administration (exists for transfusion and anesthesia) | | | | | | Y | | | +| | ? | | Diastolic blood pressure during product administration (exists for transfusion and anesthesia) | | | | | | Y | | | +| | ? | | Diastolic blood pressure after product administration (exists for transfusion and anesthesia) | | | | | | Y | | | +| | 8460-8 | BP sys--stand | Systolic blood pressure--standing | | No | No | | | Y | | | +| | 8461-6 | BP sys--sup | Systolic blood pressure--supine | | No | No | | | Y | | | +| | 8454-1 | BP dias--stand | Diastolic blood pressure--standing | | No | No | | | Y | | | +| | 8455-8 | BP dias--sup | Diastolic blood pressure--supine | | No | No | | | Y | | | +| | ? | | Body temperature before product administration | | | | | | Y | | | +| | ? | | Body temperature during product administration | | | | | | Y | | | +| | ? | | Body temperature after product administration | | | | | | Y | | | +| | ? | | Morisky scale | | | | | | Y | | | +| | 67741-9 | Smoking tobacco | Smoking tobacco use duration | | No | No | | | Y | | | +| | ? | | Amount of cigarettes smoked (packs) | | | | | | Y | | | +| | ? | | Gezondheidsbeleving score controle (Bloem) | | | | | | Y | | | +| | ? | | Gezondheidsbeleving score acceptatie (Bloem) | | | | | | Y | | | +| | 61876-9 | / | How often did you have physical energy in past 7 days [PROMIS] | | No | No | | | Y | | | +| | 62339-7 | / | I felt sad in the past 7 days [PROMIS.PEDS] | | No | No | | | Y | | | +| | 70628-3 | / | I have joint pain or muscle cramps in the past 7 days [FACIT] | | No | No | | | Y | | | +| | ? | | Gedurende de laatste week, door mijn ziekte van Crohn of colitis ulcerosa, heb ik moeite gehad met persoonlijke relaties en/of moeite in de omgang met anderen. | | | | | | Y | | | +| | ? | | Gedurende de laatste week, door mijn ziekte van Crohn of colitis ulcerosa, was ik niet tevreden over hoe mijn lichaam of sommige delen ervan eruit zagen. | | | | | | Y | | | +| | ? | | Gedurende de laatste week, door mijn ziekte van Crohn of colitis ulcerosa, heb ik moeite gehad met school of studieactiviteiten, en/of moeite met werk of huishoudelijke taken. | | | | | | Y | | | +| | ? | | Gedurende de laatste week, door mijn ziekte van Crohn of colitis ulcerosa, heb ik moeite gehad met de mentale en/of lichamelijke aspecten van seks. | | | | | | Y | | | +| | ? | | Gedurende de laatste week, door mijn ziekte van Crohn of colitis ulcerosa, heb ik moeite gehad met het slapen, zoals het in slaap vallen, vaak wakker worden ’s nachts of te vroeg wakker worden ’s ochtends. | | | | | | Y | | | +| | ? | | Gedurende de laatste week, door mijn ziekte van Crohn of colitis ulcerosa, heb ik moeite gehad om mijn stoelgang te coördineren en controleren, inclusief het (tijdig) vinden van een geschikte plaats voor ontlasting en mijzelf nadien proper te maken. | | | | | | Y | | | +| | 45720-0 | | Stomach pain [Minimum Data Set] | | No | No | | | Y | | | +| | ? | | Procentuele gewichtsafname/toename ten opzichte van referentiegewicht/alarmgewicht | | | | | | Y | | | +| | ? | | Compliance registratie lichaamsgewicht afgelopen maand | | | | | | Y | | | +| | 44261-6 | / | Patient Health Questionnaire 9 item (PHQ-9) total score [Reported] | | No | No | | | Y | | | +| | ? | | Quality of Life questionnaire EQ-5D | | | | | Y | Y | | | +| | 64 different parts and codes | | UPDRS scales | | | | | | Y | | | +| | 72106-8 | / | Total score [MMSE] | | No | No | | | Y | | | +| | 10230-1 | | Left ventricular Ejection fraction | | | | | | | | | +| | | | | | | | | | | | | +| | | ISAR | Identification of Senior At Risk Score | | | | | Y | | | | +| | | BAROS | Bariatric analysis and reporting outcome system Subtotal weight loss | | | | | Y | | | | +| | | BAROS | Bariatric analysis and reporting outcome system Subtotal medical conditions | | | | | Y | | | | +| | | BAROS | Bariatric analysis and reporting outcome system Subtotal QoL | | | | | Y | | | | +| | | BAROS | Bariatric analysis and reporting outcome system Subtotal Complications | | | | | Y | | | | +| | | BAROS | Bariatric analysis and reporting outcome system Total score | | | | | Y | | | | +| | | FAOS | Foot and Ankle Outcome Score Symptoms + Stiffness score | | | | | Y | | | | +| | | FAOS | Foot and Ankle Outcome Score Pain score | | | | | Y | | | | +| | | FAOS | Foot and Ankle Outcome Score Function, daily living score | | | | | Y | | | | +| | | FAOS | Foot and Ankle Outcome Score Function, sports and recreational activities score | | | | | Y | | | | +| | | FAOS | Foot and Ankle Outcome Score Quality of life score | | | | | Y | | | | +| | | PFP | Self-reported Physical Frailty Phenotyping  Total score | | | | | Y | | | | +| | | OBESI-Q | kwaliteit van leven bij patiënten met morbide obesitas die een gewichtsverminderende behandeling ondergaan Totaal Eetgedrag | | | | | Y | | | | +| | | OBESI-Q | kwaliteit van leven bij patiënten met morbide obesitas die een gewichtsverminderende behandeling ondergaan Totaal zelfbeeld | | | | | Y | | | | +| | | CAIT | Cumberland Ankle Instability Tool Total score | | | | | Y | | | | +| | | WRMS | Weight-Related Symptom Measure Total score | | | | | Y | | | | +| | | WRMS | Weight-Related Symptom Measure D score (diabetes) | | | | | Y | | | | +| | | CAT | COPD Assessment Test  CAT score | | | | | Y | | | | +| | | SRS-22 | Scoliosis Research Society-22 Function score | | | | | Y | | | | +| | | SRS-22 | Scoliosis Research Society-22 Pain score | | | | | Y | | | | +| | | SRS-22 | Scoliosis Research Society-22 Self-Image score | | | | | Y | | | | +| | | SRS-22 | Scoliosis Research Society-22 Mental health score | | | | | Y | | | | +| | | SRS-22 | Scoliosis Research Society-22 Satisfaction score | | | | | Y | | | | +| | | SBST | STarT Back Screening Tool Total score | | | | | Y | | | | +| | | SBST | STarT Back Screening Tool Level of risk score | | | | | Y | | | | +| | 82323-7 | HOOS JR | Hip Disability and Osteoarthritis Outcome Score, Joint Replacement Total score | | | | | Y | | | | +| | | MoveUP Index Knee | MoveUP Index Knee Assessment Score Total score | | | | | Y | | | | +| | | SKV | Subjective Knee Value SKV score | | | | | Y | | | | +| | | OES | Oxford Elbow Score Total score | | | | | Y | | | | +| | | FJS | Forgotten Joint Score - Knee Total score | | | | | Y | | | | +| | | QoR | Quality of recovery Score  Total score | | | | | Y | | | | +| | | ? | COPD: Diagnosis classification Total score | | | | | Y | | | | +| | | OMPS-Q | Örebro Musculoskeletal Pain Screening Questionnaire (short) Total score | | | | | Y | | | | +| | | NVE | Nederlandse Vragenlijst voor Eetgedrag Emotional eating score | | | | | Y | | | | +| | | NVE | Nederlandse Vragenlijst voor Eetgedrag Eating with diffuse emotions score | | | | | Y | | | | +| | | NVE | Nederlandse Vragenlijst voor Eetgedrag Eating with clearly defined emotions score | | | | | Y | | | | +| | | NVE | Nederlandse Vragenlijst voor Eetgedrag External eating score | | | | | Y | | | | +| | | NVE | Nederlandse Vragenlijst voor Eetgedrag Restrained eating score | | | | | Y | | | | +| | | SCL-90-R | Symptom Checklist-90-R ANG score | | | | | Y | | | | +| | | SCL-90-R | Symptom Checklist-90-R AGO score | | | | | Y | | | | +| | | SCL-90-R | Symptom Checklist-90-R DEP score | | | | | Y | | | | +| | | SCL-90-R | Symptom Checklist-90-R SOM score | | | | | Y | | | | +| | | SCL-90-R | Symptom Checklist-90-R IN score | | | | | Y | | | | +| | | SCL-90-R | Symptom Checklist-90-R SEN score | | | | | Y | | | | +| | | SCL-90-R | Symptom Checklist-90-R HOS score | | | | | Y | | | | +| | | SCL-90-R | Symptom Checklist-90-R SLA score | | | | | Y | | | | +| | | SCL-90-R | Symptom Checklist-90-R OVER score | | | | | Y | | | | +| | | SCL-90-R | Symptom Checklist-90-R PSNEUR score | | | | | Y | | | | +| | | BRIEF | BRIEF: Health Literacy Screening Tool Total score | | | | | Y | | | | +| | | AUDIT | Alcohol Use Disorder Identification Test Total score | | | | | Y | | | | +| | | POSAS | The Patient and Observer Scar Assessment Scale Total score | | | | | Y | | | | +| | | PRWHE | Patient Rated Wrist/Hand Evaluation Pain score | | | | | Y | | | | +| | | PRWHE | Patient Rated Wrist/Hand Evaluation Function score | | | | | Y | | | | +| | | PRWHE | Patient Rated Wrist/Hand Evaluation Total score | | | | | Y | | | | +| | | ESP | ESP Eating disorder Screen for Primary care Total score | | | | | Y | | | | +| | | SVH | Subjective Hip Value Total score | | | | | Y | | | | +| | | AOFAS | American Orthopaedic Foot and Ankle Society (AOFAS) Ankle-Hindfoot Scale Total score | | | | | Y | | | | +| | 72101-9 | KOOS | Knee Injury and Osteoarthritis Outcome Score  Symptoms score | | | | | Y | | | | +| | 72102-7 | KOOS | Knee Injury and Osteoarthritis Outcome Score  Pain score | | | | | Y | | | | +| | 72100-1 | KOOS | Knee Injury and Osteoarthritis Outcome Score  ADL score | | | | | Y | | | | +| | 72098-7 | KOOS | Knee Injury and Osteoarthritis Outcome Score  QoL score | | | | | Y | | | | +| | | HADS | Hospital Anxiety and Depression Scale (HADS) Anxiety score | | | | | Y | | | | +| | | HADS | Hospital Anxiety and Depression Scale (HADS) Depression score | | | | | Y | | | | +| | | Quick DASH | Quick Disabilities of the Arm, Shoulder and Hand Total score | | | | | Y | | | | +| | | CSI | Central sensitisation inventory (CSI) Total score | | | | | Y | | | | +| | | HHS | Harris Hip Score Pain score | | | | | Y | | | | +| | | HHS | Harris Hip Score Function score | | | | | Y | | | | +| | | EORTC QLQ C30 | EORTC Core Quality of Life questionnaire Global health status/QoL (Score) | | | | | Y | | | | +| | | EORTC QLQ C30 | EORTC Core Quality of Life questionnaire Functional scale: physical functioning (Score) | | | | | Y | | | | +| | | EORTC QLQ C30 | EORTC Core Quality of Life questionnaire Functional scale: role functioning (Score) | | | | | Y | | | | +| | | EORTC QLQ C30 | EORTC Core Quality of Life questionnaire Functional scale: emotional functioning (Score) | | | | | Y | | | | +| | | EORTC QLQ C30 | EORTC Core Quality of Life questionnaire Functional scale: cognitive functioning (Score) | | | | | Y | | | | +| | | EORTC QLQ C30 | EORTC Core Quality of Life questionnaire Functional scale: social functioning (Score) | | | | | Y | | | | +| | | EORTC QLQ C30 | EORTC Core Quality of Life questionnaire Symptom scales/items: fatigue (Score) | | | | | Y | | | | +| | | EORTC QLQ C30 | EORTC Core Quality of Life questionnaire Symptom scales/items: nausea & vomiting (Score) | | | | | Y | | | | +| | | EORTC QLQ C30 | EORTC Core Quality of Life questionnaire Symptom scales/items: pain (Score) | | | | | Y | | | | +| | | EORTC QLQ C30 | EORTC Core Quality of Life questionnaire Symptom scales/items: dyspnoea (Score) | | | | | Y | | | | +| | | EORTC QLQ C30 | EORTC Core Quality of Life questionnaire Symptom scales/items: insomnia (Score) | | | | | Y | | | | +| | | EORTC QLQ C30 | EORTC Core Quality of Life questionnaire Symptom scales/items: appetite loss (Score) | | | | | Y | | | | +| | | EORTC QLQ C30 | EORTC Core Quality of Life questionnaire Symptom scales/items: constipation (Score) | | | | | Y | | | | +| | | EORTC QLQ C30 | EORTC Core Quality of Life questionnaire Symptom scales/items: diarrhoea (Score) | | | | | Y | | | | +| | | EORTC QLQ C30 | EORTC Core Quality of Life questionnaire Symptom scales/items: financial difficulties (Score) | | | | | Y | | | | +| | | OKS | Oxford Knee Score Total score | | | | | Y | | | | +| | | FTS | Food Tolerance Score Satisfaction about eating score | | | | | Y | | | | +| | | FTS | Food Tolerance Score Tolerance score | | | | | Y | | | | +| | | CCI | Charlson comorbidity index score Total score | | | | | Y | | | | +| | | SF-36 | Short Form Health Survey Physical functioning score | | | | | Y | | | | +| | | SF-36 | Short Form Health Survey Role functioning/physical score | | | | | Y | | | | +| | | SF-36 | Short Form Health Survey Role functioning/emotional score | | | | | Y | | | | +| | | SF-36 | Short Form Health Survey Energy/fatigue score | | | | | Y | | | | +| | | SF-36 | Short Form Health Survey Emotional well-being score | | | | | Y | | | | +| | | SF-36 | Short Form Health Survey Social functioning score | | | | | Y | | | | +| | | SF-36 | Short Form Health Survey Pain SF-36 score | | | | | Y | | | | +| | | SF-36 | Short Form Health Survey General health score | | | | | Y | | | | +| | | SF-36 | Short Form Health Survey Total score score | | | | | Y | | | | +| | | KOOS-12 | Knee injury and Osteoarthritis Outcome Score-12 Pain score | | | | | Y | | | | +| | | KOOS-12 | Knee injury and Osteoarthritis Outcome Score-12 Function score | | | | | Y | | | | +| | | KOOS-12 | Knee injury and Osteoarthritis Outcome Score-12 QoL score | | | | | Y | | | | +| | | GAD-7 | Generalized Anxiety Disorder 7-item Total score | | | | | Y | | | | +| | | FJS-12 | Forgotten Joint Score-12 Total score | | | | | Y | | | | +| | | KBILD | King’s Brief Interstitial Lung Disease Questionnaire Activity score | | | | | Y | | | | +| | | KBILD | King’s Brief Interstitial Lung Disease Questionnaire Impact score | | | | | Y | | | | +| | | KBILD | King’s Brief Interstitial Lung Disease Questionnaire Symptome score | | | | | Y | | | | +| | | KBILD | King’s Brief Interstitial Lung Disease Questionnaire Total score | | | | | Y | | | | +| | | OHS | Oxford Hip Score Total score | | | | | Y | | | | +| | | SGRQ-C | Saint- George's Respiratory Questionnaire COPD Symptoms score | | | | | Y | | | | +| | | SGRQ-C | Saint- George's Respiratory Questionnaire COPD Activity score | | | | | Y | | | | +| | | SGRQ-C | Saint- George's Respiratory Questionnaire COPD Impacts score | | | | | Y | | | | +| | | SGRQ-C | Saint- George's Respiratory Questionnaire COPD Total score | | | | | Y | | | | +| | | UCL | Utrechtse Coping Lijst ACT (Actief aanpakken, confronteren) score | | | | | Y | | | | +| | | UCL | Utrechtse Coping Lijst PAL (Palliatieve reactie) score | | | | | Y | | | | +| | | UCL | Utrechtse Coping Lijst VER (Vermijden, afwachten) score | | | | | Y | | | | +| | | UCL | Utrechtse Coping Lijst SOC (Sociale steun zoeken) score | | | | | Y | | | | +| | | UCL | Utrechtse Coping Lijst PAS (Passief reactiepatroon) score | | | | | Y | | | | +| | | UCL | Utrechtse Coping Lijst EXP (Expressie van emoties/boosheid) score | | | | | Y | | | | +| | | UCL | Utrechtse Coping Lijst GER (Geruststellende en troostende gedachten) score | | | | | Y | | | | +| | | UCL | Utrechtse Coping Lijst Total score | | | | | Y | | | | +| | | ASES | American Shoulder and Elbow Surgeons score Pain score | | | | | Y | | | | +| | | ASES | American Shoulder and Elbow Surgeons score Function score | | | | | Y | | | | +| | | EQ-5D | EuroQol-5 Dimension Mobility score | | | | | Y | | | | +| | | EQ-5D | EuroQol-5 Dimension Self-care score | | | | | Y | | | | +| | | EQ-5D | EuroQol-5 Dimension Usual activities score | | | | | Y | | | | +| | | EQ-5D | EuroQol-5 Dimension Pain / discomfort score | | | | | Y | | | | +| | | EQ-5D | EuroQol-5 Dimension Anxiety / depression score | | | | | Y | | | | +| | | EQ-5D | EuroQol-5 Dimension VAS score | | | | | Y | | | | +| | | KSS | Knee Society Score Symptoms Subscore | | | | | Y | | | | +| | | KSS | Knee Society Score Patient Satisfaction Subscore | | | | | Y | | | | +| | | KSS | Knee Society Score Patient Expectations Subscore | | | | | Y | | | | +| | | KSS | Knee Society Score Functional Activities: Walking and standing Subscore | | | | | Y | | | | +| | | KSS | Knee Society Score Functional Activities: Standard activities (ADL) Subscore | | | | | Y | | | | +| | | KSS | Knee Society Score Functional Activities: Advanced activities Subscore | | | | | Y | | | | +| | | KSS | Knee Society Score Functional Activities: Discretionary activities (Top 3 activities) Subscore | | | | | Y | | | | +| | | KSS | Knee Society Score Functional activities: Total subscore | | | | | Y | | | | +| | | GARS-4 | Groningen Activiteiten Restrictie Schaal Total score | | | | | Y | | | | +| | | EORTC QLQ-MY20 | European Organisation for the Research and Treatment of Cancer Myeloma Module Quality of Life Questionnaire Symptom scales: disease (Score) | | | | | Y | | | | +| | | EORTC QLQ-MY20 | European Organisation for the Research and Treatment of Cancer Myeloma Module Quality of Life Questionnaire Symptom scales: side effects (Score) | | | | | Y | | | | +| | | EORTC QLQ-MY20 | European Organisation for the Research and Treatment of Cancer Myeloma Module Quality of Life Questionnaire Functional scales/items: body image (Score) | | | | | Y | | | | +| | | EORTC QLQ-MY20 | European Organisation for the Research and Treatment of Cancer Myeloma Module Quality of Life Questionnaire Functional scales/items: future perspective (Score) | | | | | Y | | | | +| | | EORTC QLQ-MY20 | European Organisation for the Research and Treatment of Cancer Myeloma Module Quality of Life Questionnaire Symptom scales: side effects MINUS HAIRLOSS (Score) | | | | | Y | | | | +| | | CCQ | Clinical COPD Questionnaire Total score | | | | | Y | | | | +| | | CCQ | Clinical COPD Questionnaire Symptom score | | | | | Y | | | | +| | | CCQ | Clinical COPD Questionnaire Functional Status score | | | | | Y | | | | +| | | CCQ | Clinical COPD Questionnaire Mental Status score | | | | | Y | | | | +| | | ACT | Asthma Control Test Total score | | | | | Y | | | | +| | | COMI | Core Outcome Measure Index Pain score | | | | | Y | | | | +| | | COMI | Core Outcome Measure Index Disability score | | | | | Y | | | | +| | | COMI | Core Outcome Measure Index Total score | | | | | Y | | | | +| | | SSTS | Simple Shoulder Test Score Total score | | | | | Y | | | | +| | | SEMCD | Self-Efficacy for Managing Chronic Disease 6-item Scale Total score | | | | | Y | | | | +| | | TSK | Tampa Scale for kinesiofobia  Total score | | | | | Y | | | | +| | | WPAI:GH | Work Productivity and Activity Impairment Questionnaire: General Health V2.0 (WPAI:GH) Percent work time missed due to health | | | | | Y | | | | +| | | WPAI:GH | Work Productivity and Activity Impairment Questionnaire: General Health V2.0 (WPAI:GH) Percent impairment while working due to health | | | | | Y | | | | +| | | WPAI:GH | Work Productivity and Activity Impairment Questionnaire: General Health V2.0 (WPAI:GH) Percent overall work impairment due to health | | | | | Y | | | | +| | | WPAI:GH | Work Productivity and Activity Impairment Questionnaire: General Health V2.0 (WPAI:GH) Percent activity impairment due to health | | | | | Y | | | | +| | | OWLQoL | Obesity and Weight-Loss Quality-of-Life Total score | | | | | Y | | | | +| | | mFI-5 | Modified frailty index - 5 items Total score | | | | | Y | | | | +| | | FSS | Fatigue Severity Scale Total score | | | | | Y | | | | +| | | AKPS | Kujala Anterior Knee Pain Scale Total score | | | | | Y | | | | +| | | ODI | Oswestry Disabilty Index Total score | | | | | Y | | | | +| | | NDI | Neck disability index  Total score | | | | | Y | | | | +| | | PRTEE | PATIENT-RATED TENNIS ELBOW EVALUATION Pain score | | | | | Y | | | | +| | | PRTEE | PATIENT-RATED TENNIS ELBOW EVALUATION Specific Activities score | | | | | Y | | | | +| | | PRTEE | PATIENT-RATED TENNIS ELBOW EVALUATION Usual Activities score | | | | | Y | | | | +| | | PRTEE | PATIENT-RATED TENNIS ELBOW EVALUATION Function Subscale score | | | | | Y | | | | +| | | PRTEE | PATIENT-RATED TENNIS ELBOW EVALUATION Total Score | | | | | Y | | | | +| | | HADS | Hospital Anxiety and Depression Scale ANGST score | | | | | Y | | | | +| | | HADS | Hospital Anxiety and Depression Scale DEPRESSIE score | | | | | Y | | | | +| | | FAAM | Foot and Ankle Ability Measure Total score | | | | | Y | | | | +| | | FAAM | Foot and Ankle Ability Measure Everyday Activities score | | | | | Y | | | | +| | | FAAM | Foot and Ankle Ability Measure Sporting activities score | | | | | Y | | | | +| | | MoveUP Index Hip | MoveUP Index Hip Assessment score moveUP index Hip score | | | | | Y | | | | +| | | PCS | Pain Catastrophizing Scale Ruminatie score | | | | | Y | | | | +| | | PCS | Pain Catastrophizing Scale Magnificatie score | | | | | Y | | | | +| | | PCS | Pain Catastrophizing Scale Hulpeloosheid score | | | | | Y | | | | +| | | PCS | Pain Catastrophizing Scale Total score | | | | | Y | | | | +| | | BDI | Beck Depression Inventory Total score | | | | | Y | | | | +| | | PHQ-9 | Patient Health Questionnaire-9 Total score | | | | | Y | | | | +| | | FES-I | Falls Efficacy Scale Total score | | | | | Y | | | | +| | | IKDC | nternational Knee Documentation Committee Score Total score | | | | | Y | | | | +| | | OSS | Oxford Shoulder Score Total score | | | | | Y | | | | +| | | CMS | Constant-Murley Shoulder Outcome Score Total score | | | | | Y | | | | +| | | mHHS | Modified Harris Hip Score Total score | | | | | Y | | | | +| | | PRAISE | Pulmonary Rehabilitation Adapted Index of Self-Efficacy Total score | | | | | Y | | | | +| | | FABQ | Fear Avoidence Belief Questionnaire Physical activity score | | | | | Y | | | | +| | | FABQ | Fear Avoidence Belief Questionnaire Work score | | | | | Y | | | | +| | | FABQ | Fear Avoidence Belief Questionnaire Total score | | | | | Y | | | | +| | | Oswestry LBPDQ | Oswestry Low Back Pain Disability Questionnaire (NL-EN-FR-ES) Total score | | | | | Y | | | | +| | 82332-8 | KOOS-JR | Knee injury and Osteoarthritis Outcome Score for Joint Replacement  Total score | | | | | Y | | | | +| | | UCOPD | Understanding COPD Questionnaire Total score | | | | | Y | | | | +| | | UCOPD | Understanding COPD Questionnaire About COPD score | | | | | Y | | | | +| | | UCOPD | Understanding COPD Questionnaire Managing Symptoms of COPD score | | | | | Y | | | | +| | | UCOPD | Understanding COPD Questionnaire Accessing Help and Support score | | | | | Y | | | | +| | | WORQ | Work Osteoarthritis joint-Replacement Questionnaire Total score | | | | | Y | | | | +| | | MHQ | Michigan Hand Outcomes Questionnaire Overal LEFT Hand Function score | | | | | Y | | | | +| | | MHQ | Michigan Hand Outcomes Questionnaire Overal RIGHT Hand Function score | | | | | Y | | | | +| | | MHQ | Michigan Hand Outcomes Questionnaire Overal Hand Function score | | | | | Y | | | | +| | | MHQ | Michigan Hand Outcomes Questionnaire Activities of Daily Living LEFT Hand score | | | | | Y | | | | +| | | MHQ | Michigan Hand Outcomes Questionnaire Activities of Daily Living RIGHT Hand score | | | | | Y | | | | +| | | MHQ | Michigan Hand Outcomes Questionnaire Activities of Daily Living BOTH Hands score | | | | | Y | | | | +| | | MHQ | Michigan Hand Outcomes Questionnaire Activities of Daily Living Total LEFT Hand score | | | | | Y | | | | +| | | MHQ | Michigan Hand Outcomes Questionnaire Work score | | | | | Y | | | | +| | | MHQ | Michigan Hand Outcomes Questionnaire Pain score | | | | | Y | | | | +| | | MHQ | Michigan Hand Outcomes Questionnaire Aesthetics LEFT Hand score | | | | | Y | | | | +| | | MHQ | Michigan Hand Outcomes Questionnaire Aesthetics Right Hand score | | | | | Y | | | | +| | | MHQ | Michigan Hand Outcomes Questionnaire Aesthetics Overal score | | | | | Y | | | | +| | | MHQ | Michigan Hand Outcomes Questionnaire Satisfaction Left Hand score | | | | | Y | | | | +| | | MHQ | Michigan Hand Outcomes Questionnaire Satisfaction Right Hand score | | | | | Y | | | | +| | | MHQ | Michigan Hand Outcomes Questionnaire Satisfaction Overal score | | | | | Y | | | | +| | | MHQ | Michigan Hand Outcomes Questionnaire Activities of Daily Living Total RIGHT score | | | | | Y | | | | +| | | MHQ | Michigan Hand Outcomes Questionnaire Activities of Daily Living Total Both Hands score | | | | | Y | | | | +| | | DLQI | Dermatology Life Quality Index Total score | | | | | Y | | | | +| | | BSHS-B | Burn Specific Health Scale - Brief Total score | | | | | Y | | | | +| | 72096-1 | HOOS | Hip disability and Osteoarthritis Outcome Score Symptoms Subscore | | | | | Y | | | | +| | 72097-9 | HOOS | Hip disability and Osteoarthritis Outcome Score Pain Subscore | | | | | Y | | | | +| | 72095-3 | HOOS | Hip disability and Osteoarthritis Outcome Score ADL Subscore | | | | | Y | | | | +| | 72093-8 | HOOS | Hip disability and Osteoarthritis Outcome Score QOL Subscore | | | | | Y | | | | +| | 88785-1 | HOOS | Hip disability and Osteoarthritis Outcome Score Stifness score | | | | | Y | | | | +| | 72094-6 | HOOS | Hip disability and Osteoarthritis Outcome Score Physical function score | | | | | Y | | | | \ No newline at end of file diff --git a/input/pagecontent/overview.md b/input/pagecontent/overview.md index eb1a7738..e69de29b 100644 --- a/input/pagecontent/overview.md +++ b/input/pagecontent/overview.md @@ -1,35 +0,0 @@ -### Specifications - -These are the core data requirements for common profiles: - -* **Patient** data for identity management / demographics: name and NISS and other identifiers; userID and userName, email address; dateOfbirth - -The monitoring can produce **measurements** or **reports**. - -* **Measurement** can contain - * metadata e.g. measurement attempts - * status - * timestamp - * reference measurements - * findings / interpretation - * notes - * context (e.g. symptoms, activity, others) - * **components** (i.e. sub-measurements) - -Measurement are associated with a Device (software and/or hardware) -* **Device** - * **software** - * app - * version - * **hardware** - -<br> -<br> -### Model overview - -<figure> - {% include monitoring-model.svg %} - <figcaption>Overall patient monitoring model</figcaption> -</figure> -<br clear="all"> - diff --git a/input/pagecontent/usage.md b/input/pagecontent/recommendations.md similarity index 100% rename from input/pagecontent/usage.md rename to input/pagecontent/recommendations.md diff --git a/input/pagecontent/telemonitoring-prescription.md b/input/pagecontent/telemonitoring-prescription.md new file mode 100644 index 00000000..b4ab80bc --- /dev/null +++ b/input/pagecontent/telemonitoring-prescription.md @@ -0,0 +1,188 @@ +URL: https://www.telemonitoring-prescription.com/ + +### **Heart Failure Care Pathway: Telemonitoring Integration** + +DRAFT : 2024-10-01 + + +#### **Objective:** + +This document describes the technical requirements and expectations for integrating data from the Heart Failure care pathway into an Electronic Patient Record (EPD), in line with the Telemonitoring guidelines and the principles of FAIR data (Findable, Accessible, Interoperable, Reusable). The integration includes both PDF generation and FHIR compliance to ensure a smooth and consistent data flow between systems. + +*** + + +### **1. Heart Failure Care Pathway: Overview** + +**Duration:** 4 years\ +**Central Care Facility:** Specialized heart failure center with a telemonitoring team.\ +**Minimal Capacity:** 0.5 FTE heart failure nurse per 100 patients.\ +**Educational Material:** Available for self-management and adherence.\ +**Accessibility:** Reachable during office hours. + +**Patient Criteria:** + +- NYHA classification II or III (85% of all new patients, \~21,000 per year) + +- Signed informed consent + +- At least 1 physical consultation 2 years before the start of telemonitoring + +- Ability to sustainably implement telemonitoring + +*** + + +### ******** + +### **2. Process and Workflow Description** + +#### **Start-Up:** + +- Screening and risk assessment performed by the heart failure center. + +- Informed consent is collected and securely stored. + +- General practitioner or home nurse is involved in the workflow. + +- Parameters monitored: Heart Rate (HR), Blood Pressure (BP), Weight (BW). + + - Frequency: Daily, once per day, 7 days a week, 6 months. + + +#### **Data Collection:** + +- Data is automatically collected via connected devices or manually entered into the system. + +- Technology is CE certified, with end-to-end encryption and GDPR compliant. + + +#### **Alarm Management:** + +- Heart failure alarm thresholds are predefined on the digital platform. + +- The heart failure team checks the collected data daily during working hours. + +- In case of alarms, the general practitioner or home nurse is informed within 5 working days (or within 48 hours if urgent). + +*** + + +### ******** + +### **3. Integration Modules for EPD** + +**Outcome Module - PDF** + +- **Daily Updates:** The Telemonitoring Overview is updated daily per measurement. + +- **Content:** Overview of the questions and vital parameters. + +- **File Size:** ±100KB per PDF, max : 10MB per PDF + +**Example :**  + +****![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXdWX17TQScQ0aE34tYE2ipCfU6HXdQc754lAuq648GnvxsJ01Nrq1NCb9to3Djy9fkTGLkBUNqxgFxpQkpveeBijcWx5E9zIFxDNi_wcWdB6wAEl3je2X3dmc-rVH6bsNUWSQKZznJh_giv5IBM0qWSY8VJ?key=6Kaq7lqtajICNiFjKTzGKQ)**** + + +#### ******** + +#### **Outcome Module - FHIR Integratie** + +**Vital Signs:** + +- **Frequency:** Maximum of 5 updates per day, on average 1 update per day (per measurement). + +- **LOINC codes for vital parameters:** + + - **Heart Rate (HR):** LOINC 8867-4 + + - **Blood Pressure (BP):** LOINC 8480-6 / 8463-4 + + - **Weight (BW):** LOINC 29463-7 + +These FHIR modules ensure standardized data exchange between systems and guarantee consistency of the vital parameters. + +**Example :**  + + { +   resourceType: "Observation", +   id: "tm-xxxx-xxx-xxx", +   meta: {profile:["http://hl7.org/fhir/StructureDefinition/vitalsigns"]}, +   text: { +    status: "generated", +    div: "<div xmlns="http://www.w3.org/1999/xhtml"><p>Heart Rate Measurement</p></div>" +   }, +   status: "final", +   category: [{ +      coding:[{ +      system: "http://terminology.hl7.org/CodeSystem/observation-category", +      code: "vital-signs", +      display: "Vital Signs" +      }] +   }], +   code:{ +     coding: [{ +       system: "http://loinc.org", +       code: "8867-4", +       display: "Heart rate" +    }]}, +   subject:{reference: "Patient/XXX-XXX"}, +   effectiveDateTime: "2024-10-07T10:27:18+00:00", + + + + +   component: [{ +     code: { +      coding: [{ +        system: "http://loinc.org", +        code: "8867-4", +        display: "Heart rate"} +     }, +     valueQuantity: { +       value: 74, +       unit: "beats/min", +       system: "http://unitsofmeasure.org", +       code: "/min" +     }}], +   device:{reference: "Device/Byteflies Vital Signs"} + } + +**Questionnaires:** + +- **Frequency: TBC** + +- **LOINC codes for questionnaires: TBC** + +* + + +#### **Dashboard Module** + +- **N/A** (For this care pathway, no direct dashboard integration is foreseen). + +*** + + +### ******** + +### **4. Expectations for EPD Integration** + +For each integration, EPDs must be able to: + +- Correctly process **PDF files** and make them visible to healthcare providers within the EPD and Health Hubs. + +- Optionally: Interpret **FHIR data** according to the specified LOINC codes and link the data to the appropriate patient records (in this case, the PDF does not need to be linked). + +The Telemonitoring Coördination application must foresee :  + +- To support automated workflows that **trigger alerts** when thresholds are exceeded. + +\ + + +Optie 1 : EPD + Carepath Provider + Telemetry Provider + +Optie 2 : EPD + Telemetry Provider + diff --git a/input/pagecontent/use-cases.md b/input/pagecontent/terminology.md similarity index 100% rename from input/pagecontent/use-cases.md rename to input/pagecontent/terminology.md diff --git a/input/pagecontent/totem.md b/input/pagecontent/totem.md new file mode 100644 index 00000000..9f00d3dd --- /dev/null +++ b/input/pagecontent/totem.md @@ -0,0 +1,141 @@ +**DRAFT: 2024-11-25** + +### Care Pathway Overview + +TOTeM stands for Transmurale Opvolging met TeleMonitoring na chirurgie. + +Improved surgical techniques allow patients to go home earlier and earlier after their surgery. Complications are possible with any surgery. It is important that they are noticed in time so that the necessary action can be taken by the appropriate healthcare provider. + +TOTeM aims to send patients home after surgery as early as medically possible, with quality and specialised follow-up in the home environment. + +The patient can recover in a familiar environment and is more involved in the recovery process. For the hospital, faster discharge offers the opportunity to optimise length of stay and bed occupancy. The social cost of care falls. + +With support from the FPS Public Health, some TOTeM projects are being rolled out in 6 hospitals in a pilot project; and this for specific types of surgery (depending on the hospital's choice): colon surgery, obesity surgery, kidney surgery, bladder surgery, pancreatic surgery and anti-reflux surgery. + +### Process and Workflow Description + +#### Start-Up + +- **Parameters Monitored**: + - Heart Rate + - Blood Pressure + - Body weight + - Respiratory rate + - Saturation + - Body temperature + - Abdominal pain + - Pain surgical wound + - Pain puncture wounds + - Pain during urination + - Pain in calves + - Pain medication taken + - Well-being + - Flatulence + - Bowel movement + - Distended abdomen + - Nausea + - Vomiting + - Water intake last 24h + - Meals last 24h + - Coughing + - Mucus when coughing + - Pression on chest + - Shortness of breath + - Walking daily + - Shoulder pain + +- **Frequency**: 3 times a day, 7 days a week. + +#### Data Collection + +- Data is automatically collected via connected devices or manually entered into the system. +- Technology is CE-certified, with end-to-end encryption and GDPR compliance. + +### Integration Modules for EPD + +#### Outcome Module - FHIR Integration + +##### Vital Signs + +- **Frequency**: Maximum of 5 updates per day, on average 1 update per day (per measurement). +- **LOINC Codes**: + +###### General +<div class="table-md"></div> + + | Description | Code(s) | Possible answers | + | ------------------------- | ------------------------ | -------------------- | + | Heart rate | LOINC 8867-4 | | + | Blood pressure | LOINC 8480-6 / 8463-4 | | + | Body weight | LOINC 29463-7 | | + | Respiratory rate | LOINC 9279-1 | | + | Saturation | LOINC 2708-6 | | + | Body temperature | LOINC 8310-5 | | + | Abdominal pain | SNOMED 21522001 | LOINC 72514-3 | + | Pain puncture wounds | ?? | LOINC 72514-3 | + | Pain during urination | SNOMED 49650001 | SNOMED 373066001 - ??| + | Pain in calves | SNOMED 1264028004 | SNOMED 373066001 - ??| + | Pain medication taken | ?? | ?? | + | Well-being | SNOMED 365275006 | ?? | + | Flatulence | SNOMED 249504006 | ?? | + | Bowel movement | SNOMED 39211005 | ?? | + | Nausea | SNOMED 422587007 | ?? | + | Vomiting | SNOMED 300359004 | ?? | + | Water intake last 24h | LOINC 9007-6 | ?? | + | Meals last 24h | ?? | ?? | + | Coughing | SNOMED 263731006 | ?? | + | Product cough | SNOMED 28743005 | ?? | + | Pressure in chest | SNOMED 23924001 | ?? | + | Shortness of breath | SNOMED 267036007 | ?? | + | Walking daily | ?? | ?? | + | Wound appearance | | SNOMED 17621005 | + | Concern about patient | ?? | SNOMED 373066001 - ??| + | Fraxiparine | ?? | | + +###### Colon surgery specific +<div class="table-md"></div> + + | Description | Code(s) | Possible answers | + | ------------------------- | ------------------------ | ---------------------| + | Pain surgical wound | ? ? | LOINC 72514-3 | + | Distended abdomen | SNOMED 60728008 | ??? | + +###### Bariatric surgery specific +<div class="table-md"></div> + + | Description | Code(s) | Possible answers | + | ------------------------- | ------------------------ | ------------------------------------------------ | + | Shoulder pain | ?? | SNOMED 24028007 (right) <br> SNOMED 7771000 (left) <br> SNOMED 51440002 (right and left) <br> SNOMED 260413007 (no) | + +These FHIR modules ensure standardized data exchange between systems and guarantee consistency of the vital parameters. + +##### Specification: + +For detailed specifications, refer to the + +- [Heart Rate Example](./Observation-HeartRateExample.html) +- [Blood Pressure Example](./Observation-BloodPressureExample.html) +- [Weight Example](./Observation-BodyWeightExample.html) +- [Respiratory rate Example](./Observation-RespiratoryRateExample.html) +- [Saturation Example](./Observation-OxygenSaturationExample.html) +- [Abdominal pain Example](./Observation-AbdominalPainExample.html) +- [Pain surgical wound Example](./Observation-PainSurgicalWoundsExample.html) +- Pain puncture wounds Example +- [Pain during urination Example](./Observation-PainDuringUrinationExample.html) +- [Pain in calves Example](./Observation-PainInCalvesExample.html) +- [Pain medication taken Example](./Observation-PainMedicationTakenExample.html) +- Well-being Example +- Flatulence Example +- Bowel movement Example +- [Distended abdomen Example](./Observation-DistendedAbdomenExample.html) +- Nausea Example +- Vomiting Example +- Water intake last 24h Example +- Meals last 24h Example +- Coughing Example +- Mucus when coughing Example +- Pression on chest Example +- [Shortness of breath Example](./Observation-ShortnessOfBreathExample.html) +- Walking daily Example +- [Shoulder pain Example](./Observation-ShoulderPainExample.html) + diff --git a/local-template/package/content/assets/css/tables.css b/local-template/package/content/assets/css/tables.css new file mode 100644 index 00000000..b67e496a --- /dev/null +++ b/local-template/package/content/assets/css/tables.css @@ -0,0 +1,28 @@ +/* markdown table */ + +div.table-md + table{ + margin-bottom: 10px; + margin-right: auto; + } + + div.table-md + table th { + border:1px solid silver; + padding:3px 7px 2px 7px !important; + font-size: 12px; + line-height: 1.4em; + font-family: verdana; + font-weight: bold; + padding: 3px; + vertical-align: top; + } + + div.table-md + table td { + border:1px solid silver; + padding:3px 7px 2px 7px !important; + font-size: 12px; + line-height: 1.4em; + font-family: verdana; + font-weight: normal; + padding: 3px; + vertical-align: top; + } \ No newline at end of file diff --git a/local-template/package/includes/_append.fragment-css.html b/local-template/package/includes/_append.fragment-css.html index 9ae66e47..6138bb28 100644 --- a/local-template/package/includes/_append.fragment-css.html +++ b/local-template/package/includes/_append.fragment-css.html @@ -1,2 +1,3 @@ <!-- Placeholder for child template CSS declarations --> -<link href="{{site.data.info.assets}}assets/css/colors.css" rel="stylesheet"/> \ No newline at end of file +<link href="{{site.data.info.assets}}assets/css/colors.css" rel="stylesheet"/> +<link href="{{site.data.info.assets}}assets/css/tables.css" rel="stylesheet"/> diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..50a15895 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1192 @@ +{ + "name": "patient-monitoring", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "fsh-sushi": "^3.12.1" + } + }, + "node_modules/@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@dabh/diagnostics": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", + "dependencies": { + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" + } + }, + "node_modules/@types/triple-beam": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==" + }, + "node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/antlr4": { + "version": "4.13.2", + "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.13.2.tgz", + "integrity": "sha512-QiVbZhyy4xAZ17UPEuG3YTOt8ZaoeOR1CvEAqrEsDBsOqINslaB147i9xqljZqoyf5S+EUlGStaj+t22LT9MOg==", + "engines": { + "node": ">=16" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/clean-css": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/color/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", + "dependencies": { + "color": "^3.1.3", + "text-hex": "1.0.x" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "engines": { + "node": ">=18" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-uri": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.3.tgz", + "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==" + }, + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" + }, + "node_modules/fhir": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/fhir/-/fhir-4.12.0.tgz", + "integrity": "sha512-N+eLuUbYjvjX5NlZPhE08OVrsJJhulQKkVWnW1M3HpNvreWC1yVvoF8ptmGzlvtDZRCrNrBArfLklphFO2L0oA==", + "bundleDependencies": [ + "lodash", + "path", + "q", + "xml-js" + ], + "dependencies": { + "lodash": "^4.17.19", + "path": "^0.12.7", + "q": "^1.4.1", + "randomatic": "^3.1.0", + "xml-js": "^1.6.8" + } + }, + "node_modules/fhir-package-loader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fhir-package-loader/-/fhir-package-loader-1.0.0.tgz", + "integrity": "sha512-x3VY3RY1wkJv8Fd7dA7fY3aw+6Vg7qeCU0pci7wUaEhnJ84k7Lnca6dfH00l36uzH1N5EwVX51iKuuwsS6RdlA==", + "dependencies": { + "axios": "^1.6.7", + "chalk": "^4.1.2", + "commander": "^11.1.0", + "fs-extra": "^11.2.0", + "https-proxy-agent": "^7.0.2", + "lodash": "^4.17.21", + "semver": "^7.5.4", + "tar": "^6.2.0", + "temp": "^0.9.1", + "winston": "^3.11.0" + }, + "bin": { + "fpl": "dist/app.js" + } + }, + "node_modules/fhir-package-loader/node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "engines": { + "node": ">=16" + } + }, + "node_modules/fhir/node_modules/inherits": { + "version": "2.0.3", + "inBundle": true, + "license": "ISC" + }, + "node_modules/fhir/node_modules/lodash": { + "version": "4.17.21", + "inBundle": true, + "license": "MIT" + }, + "node_modules/fhir/node_modules/path": { + "version": "0.12.7", + "inBundle": true, + "license": "MIT", + "dependencies": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, + "node_modules/fhir/node_modules/process": { + "version": "0.11.10", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/fhir/node_modules/q": { + "version": "1.5.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/fhir/node_modules/sax": { + "version": "1.2.4", + "inBundle": true, + "license": "ISC" + }, + "node_modules/fhir/node_modules/util": { + "version": "0.10.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/fhir/node_modules/xml-js": { + "version": "1.6.8", + "inBundle": true, + "license": "MIT", + "dependencies": { + "sax": "^1.2.4" + }, + "bin": { + "xml-js": "bin/cli.js" + } + }, + "node_modules/fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==" + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsh-sushi": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/fsh-sushi/-/fsh-sushi-3.12.1.tgz", + "integrity": "sha512-cvditqxO/FIimwZ0zmmodi2jPawy8mFkaEwLJn+cqohv/RnPEU9RpdGez5qefUrDAgU4qvY8zub29Or/TfQBrA==", + "dependencies": { + "ajv": "^8.17.1", + "antlr4": "^4.13.2", + "axios": "^1.7.7", + "chalk": "^4.1.2", + "commander": "^12.1.0", + "fhir": "^4.12.0", + "fhir-package-loader": "^1.0.0", + "fs-extra": "^11.2.0", + "html-minifier-terser": "5.1.1", + "https-proxy-agent": "^7.0.5", + "ini": "^5.0.0", + "junk": "^3.1.0", + "lodash": "^4.17.21", + "readline-sync": "^1.4.10", + "sanitize-filename": "^1.6.3", + "sax": "^1.4.1", + "temp": "^0.9.4", + "text-table": "^0.2.0", + "title-case": "^3.0.3", + "valid-url": "^1.0.9", + "winston": "^3.15.0", + "yaml": "^1.10.2" + }, + "bin": { + "sushi": "dist/app.js" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" + } + }, + "node_modules/html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "dependencies": { + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-5.0.0.tgz", + "integrity": "sha512-+N0ngpO3e7cRUWOJAS7qw0IZIVc6XPrW4MlFBdD066F2L4k1L6ker3hLqSq7iXxU5tgS4WGkIUElWn5vogAEnw==", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" + }, + "node_modules/is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/junk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", + "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/logform": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.7.0.tgz", + "integrity": "sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==", + "dependencies": { + "@colors/colors": "1.6.0", + "@types/triple-beam": "^1.3.2", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/math-random": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==" + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "dependencies": { + "fn.name": "1.x.x" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/randomatic": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "dependencies": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readline-sync": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz", + "integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-stable-stringify": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dependencies": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==", + "engines": { + "node": "*" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/temp": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", + "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", + "dependencies": { + "mkdirp": "^0.5.1", + "rimraf": "~2.6.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/temp/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/terser": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/text-hex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", + "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==" + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + }, + "node_modules/title-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/title-case/-/title-case-3.0.3.tgz", + "integrity": "sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==", + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/triple-beam": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", + "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", + "dependencies": { + "utf8-byte-length": "^1.0.1" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/utf8-byte-length": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", + "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/valid-url": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", + "integrity": "sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==" + }, + "node_modules/winston": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.17.0.tgz", + "integrity": "sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw==", + "dependencies": { + "@colors/colors": "^1.6.0", + "@dabh/diagnostics": "^2.0.2", + "async": "^3.2.3", + "is-stream": "^2.0.0", + "logform": "^2.7.0", + "one-time": "^1.0.0", + "readable-stream": "^3.4.0", + "safe-stable-stringify": "^2.3.1", + "stack-trace": "0.0.x", + "triple-beam": "^1.3.0", + "winston-transport": "^4.9.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/winston-transport": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.9.0.tgz", + "integrity": "sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==", + "dependencies": { + "logform": "^2.7.0", + "readable-stream": "^3.6.2", + "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "engines": { + "node": ">= 6" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..81b651e1 --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "fsh-sushi": "^3.12.1" + } +} diff --git a/sushi-config.yaml b/sushi-config.yaml index dda55033..3ce9b4ae 100644 --- a/sushi-config.yaml +++ b/sushi-config.yaml @@ -6,12 +6,11 @@ # │ specific packageId is also provided in this file. │ # ╰────────────────────────────────────────────────────────────────────────────────────────────────╯ - id: hl7.fhir.be.patient-monitoring canonical: http://hl7belgium.org/fhir/patient-monitoring # url: http://example.com/fhir/example name: Patient-Monitoring-Outcome -title: "Patient Monitoring Outcome FHIR Implementation Guide" +title: 'Patient Monitoring Outcome FHIR Implementation Guide' description: Patient Monitoring Outcome FHIR Implementation Guide. status: draft date: 2024-11-20 @@ -33,7 +32,7 @@ releaseLabel: STU1 # as IG.publisher. The contact details and/or additional publishers # will be translated into IG.contact values. publisher: - name: My Organization + name: My Organization url: http://example.com/committees email: my-group@example.com @@ -123,13 +122,31 @@ dependencies: # file name extension. Any subproperties that are valid filenames # with supported extensions (e.g., .md/.xml) will be treated as # sub-pages. -# pages: -# Home: index.html -# Use cases: use-cases.html -# Usage: usage.html -# Artifacts: artifacts.html -# Downloads: downloads.html -# History: history.html +pages: + index.md: + title: Patient Monitoring Outcome Home Page + overview.md: + title: Overview + recommendations.md: + title: General Recommendations + terminology.md: + title: Terminologies + downloads.md: + title: Useful Downloads + copyrights.md: + title: Acknowledgments, licenses and copyrights + changes.md: + title: IG Change History + telemonitoring-prescription.md: + title: Telemonitoring Prescription + heartfailure.md: + title: Heart failure + ews.md: + title: EWS (Early Warning Score) + overview-loinc.md: + title: Overview LOINC + totem.md: + title: TOTeM # The ImplementationGuide resource defines several other properties # not represented above. These properties can be used as-is and @@ -153,12 +170,27 @@ dependencies: # To provide a custom menu.xml file, do not include this property and # include a `menu.xml` file in input/includes. menu: - Home: index.html - Use cases: use-cases.html - Usage: usage.html - Artifacts: artifacts.html - Downloads: downloads.html - History: history.html + Home: + Home: index.html + Telemonitoring Prescription: telemonitoring-prescription.html + Guidelines: + General Recommendations: recommendations.html + Terminologies: terminology.html + Use Cases: + Overview: overview.html + Heart failure: heartfailure.html + EWS: ews.html + TOTeM: totem.html + Diabetes: https://build.fhir.org/ig/hl7-be/core-clinical/branches/issue-48/StructureDefinition-be-observation-diabetes.html + Overview LOINC: overview-loinc.html + + Artifact Index: artifacts.html + History: changes.html + Support: + FHIR Spec: https://hl7.org/fhir/R4/ + Transversal Clinical Core: https://build.fhir.org/ig/hl7-be/core-clinical/ + Downloads: downloads.html + Copyrights: copyrights.html # The parameters property represents IG.definition.parameter. Rather # than a list of code/value pairs (as in the ImplementationGuide @@ -174,7 +206,6 @@ menu: # If set to true, no IG related content will be generated. # The default value for this property is false. FSHOnly: false - # When set to true, the "short" and "definition" field on the root element of an Extension will # be set to the "Title" and "Description" of that Extension. Default is true. #applyExtensionMetadataToRoot: false