From d1b2b7386f60ecec2e2c5b654bf68dd22ac6c29b Mon Sep 17 00:00:00 2001 From: Gunasundhari <69671035+gunasundhari@users.noreply.github.com> Date: Tue, 18 Jun 2024 09:25:36 +0800 Subject: [PATCH] Initial commit --- .github/workflows/fhirbuild.yml | 23 ++ .github/workflows/ghbuild.yml | 23 ++ .github/workflows/repo_actions.yml | 20 ++ .gitignore | 49 ++++ LICENSE.md | 44 +++ README.md | 18 ++ _gencontinuous.bat | 2 + _gencontinuous.sh | 2 + _genonce.bat | 27 ++ _genonce.new.sh | 30 ++ _genonce.sh | 30 ++ _updatePublisher.bat | 219 +++++++++++++++ _updatePublisher.sh | 132 +++++++++ badges.md | 6 + ig.ini | 5 + input/business-processes/.gitignore | 1 + input/cql/.gitignore | 1 + input/data/features.yaml | 4 + input/decision-logic/.gitignore | 1 + input/dictionary/.gitignore | 1 + input/examples/.gitignore | 1 + input/extensions/.gitignore | 1 + input/fsh/.gitignore | 1 + input/fsh/Aliases.fsh | 11 + input/fsh/activitydefinitions/.gitignore | 1 + input/fsh/actors/.gitignore | 1 + input/fsh/codesystems/.gitignore | 1 + input/fsh/conceptmaps/.gitignore | 1 + input/fsh/examples/.gitignore | 1 + input/fsh/extensions/.gitignore | 1 + input/fsh/libraries/.gitignore | 1 + input/fsh/measures/.gitignore | 1 + input/fsh/models/.gitignore | 1 + input/fsh/plandefinitions/.gitignore | 1 + input/fsh/profiles/.gitignore | 1 + input/fsh/questionnaires/.gitignore | 1 + input/fsh/requirements/.gitignore | 1 + input/fsh/rulesets/.gitignore | 1 + input/fsh/rulesets/rulesets-logicalmodels.fsh | 6 + .../fsh/rulesets/rulesets-questionnaires.fsh | 6 + input/fsh/scenarios/.gitignore | 1 + input/fsh/valuesets/.gitignore | 1 + input/history/.gitignore | 1 + input/ignoreWarnings.txt | 5 + input/images-source/.gitignore | 1 + input/images/.gitignore | 1 + input/indicators/.gitignore | 1 + input/maps/.gitignore | 1 + input/models/.gitignore | 1 + input/pagecontent/adapting.md | 13 + input/pagecontent/business-process.md | 1 + input/pagecontent/business-processes.md | 43 +++ input/pagecontent/business-requirements.md | 9 + input/pagecontent/changes.md | 3 + input/pagecontent/codings.md | 9 + input/pagecontent/concepts.md | 235 ++++++++++++++++ input/pagecontent/data-models-and-exchange.md | 29 ++ input/pagecontent/decision-logic.md | 21 ++ input/pagecontent/dependencies.md | 19 ++ input/pagecontent/deployment.md | 0 input/pagecontent/dictionary.md | 12 + input/pagecontent/downloads.md | 26 ++ input/pagecontent/feedback.md | 10 + input/pagecontent/functional-requirements.md | 7 + input/pagecontent/index-dak.md | 59 ++++ input/pagecontent/index-ig.md | 47 ++++ input/pagecontent/index.md | 5 + input/pagecontent/indicators-measures.md | 9 + input/pagecontent/indicators.md | 26 ++ input/pagecontent/indices.md | 0 input/pagecontent/license.md | 44 +++ input/pagecontent/maps.md | 1 + .../non-functional-requirements.md | 3 + input/pagecontent/personas.md | 17 ++ .../pagecontent/reference-implementations.md | 7 + input/pagecontent/references.md | 23 ++ input/pagecontent/scenarios.md | 7 + input/pagecontent/security-privacy.md | 3 + input/pagecontent/sequence-diagrams.md | 3 + input/pagecontent/system-actors.md | 12 + input/pagecontent/system-requirements.md | 6 + input/pagecontent/test-data.md | 3 + input/pagecontent/testing.md | 43 +++ input/pagecontent/transactions.md | 3 + input/pagecontent/trust_domain.md | 8 + input/pagecontent/trust_domain_policy.md | 0 .../trust_domain_specifications.md | 0 input/pagecontent/trust_domain_use_cases.md | 0 input/profiles/.gitignore | 1 + input/resources/.gitignore | 1 + input/scenarios/.gitignore | 1 + input/scheduling-logic/.gitignore | 1 + input/system-requirements/.gitignore | 1 + input/testing/.gitignore | 1 + input/vocabulary/.gitignore | 1 + sushi-config.yaml | 260 ++++++++++++++++++ 96 files changed, 1724 insertions(+) create mode 100644 .github/workflows/fhirbuild.yml create mode 100644 .github/workflows/ghbuild.yml create mode 100644 .github/workflows/repo_actions.yml create mode 100644 .gitignore create mode 100644 LICENSE.md create mode 100644 README.md create mode 100644 _gencontinuous.bat create mode 100644 _gencontinuous.sh create mode 100644 _genonce.bat create mode 100644 _genonce.new.sh create mode 100644 _genonce.sh create mode 100644 _updatePublisher.bat create mode 100644 _updatePublisher.sh create mode 100644 badges.md create mode 100644 ig.ini create mode 100644 input/business-processes/.gitignore create mode 100644 input/cql/.gitignore create mode 100644 input/data/features.yaml create mode 100644 input/decision-logic/.gitignore create mode 100644 input/dictionary/.gitignore create mode 100644 input/examples/.gitignore create mode 100644 input/extensions/.gitignore create mode 100644 input/fsh/.gitignore create mode 100644 input/fsh/Aliases.fsh create mode 100644 input/fsh/activitydefinitions/.gitignore create mode 100644 input/fsh/actors/.gitignore create mode 100644 input/fsh/codesystems/.gitignore create mode 100644 input/fsh/conceptmaps/.gitignore create mode 100644 input/fsh/examples/.gitignore create mode 100644 input/fsh/extensions/.gitignore create mode 100644 input/fsh/libraries/.gitignore create mode 100644 input/fsh/measures/.gitignore create mode 100644 input/fsh/models/.gitignore create mode 100644 input/fsh/plandefinitions/.gitignore create mode 100644 input/fsh/profiles/.gitignore create mode 100644 input/fsh/questionnaires/.gitignore create mode 100644 input/fsh/requirements/.gitignore create mode 100644 input/fsh/rulesets/.gitignore create mode 100644 input/fsh/rulesets/rulesets-logicalmodels.fsh create mode 100644 input/fsh/rulesets/rulesets-questionnaires.fsh create mode 100644 input/fsh/scenarios/.gitignore create mode 100644 input/fsh/valuesets/.gitignore create mode 100644 input/history/.gitignore create mode 100644 input/ignoreWarnings.txt create mode 100644 input/images-source/.gitignore create mode 100644 input/images/.gitignore create mode 100644 input/indicators/.gitignore create mode 100644 input/maps/.gitignore create mode 100644 input/models/.gitignore create mode 100644 input/pagecontent/adapting.md create mode 100644 input/pagecontent/business-process.md create mode 100644 input/pagecontent/business-processes.md create mode 100644 input/pagecontent/business-requirements.md create mode 100644 input/pagecontent/changes.md create mode 100644 input/pagecontent/codings.md create mode 100644 input/pagecontent/concepts.md create mode 100644 input/pagecontent/data-models-and-exchange.md create mode 100644 input/pagecontent/decision-logic.md create mode 100644 input/pagecontent/dependencies.md create mode 100644 input/pagecontent/deployment.md create mode 100644 input/pagecontent/dictionary.md create mode 100644 input/pagecontent/downloads.md create mode 100644 input/pagecontent/feedback.md create mode 100644 input/pagecontent/functional-requirements.md create mode 100644 input/pagecontent/index-dak.md create mode 100644 input/pagecontent/index-ig.md create mode 100644 input/pagecontent/index.md create mode 100644 input/pagecontent/indicators-measures.md create mode 100644 input/pagecontent/indicators.md create mode 100644 input/pagecontent/indices.md create mode 100644 input/pagecontent/license.md create mode 100644 input/pagecontent/maps.md create mode 100644 input/pagecontent/non-functional-requirements.md create mode 100644 input/pagecontent/personas.md create mode 100644 input/pagecontent/reference-implementations.md create mode 100644 input/pagecontent/references.md create mode 100644 input/pagecontent/scenarios.md create mode 100644 input/pagecontent/security-privacy.md create mode 100644 input/pagecontent/sequence-diagrams.md create mode 100644 input/pagecontent/system-actors.md create mode 100644 input/pagecontent/system-requirements.md create mode 100644 input/pagecontent/test-data.md create mode 100644 input/pagecontent/testing.md create mode 100644 input/pagecontent/transactions.md create mode 100644 input/pagecontent/trust_domain.md create mode 100644 input/pagecontent/trust_domain_policy.md create mode 100644 input/pagecontent/trust_domain_specifications.md create mode 100644 input/pagecontent/trust_domain_use_cases.md create mode 100644 input/profiles/.gitignore create mode 100644 input/resources/.gitignore create mode 100644 input/scenarios/.gitignore create mode 100644 input/scheduling-logic/.gitignore create mode 100644 input/system-requirements/.gitignore create mode 100644 input/testing/.gitignore create mode 100644 input/vocabulary/.gitignore create mode 100644 sushi-config.yaml diff --git a/.github/workflows/fhirbuild.yml b/.github/workflows/fhirbuild.yml new file mode 100644 index 000000000..15fadec14 --- /dev/null +++ b/.github/workflows/fhirbuild.yml @@ -0,0 +1,23 @@ +# This workflow reuses the openHIE GitHub action for building IGs +# Initial idea by Carl Leitner, developed by 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: FHIR CI Build + +# 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: WorldHealthOrganization/smart-base/.github/workflows/fhirbuild.yml@main diff --git a/.github/workflows/ghbuild.yml b/.github/workflows/ghbuild.yml new file mode 100644 index 000000000..575defd4e --- /dev/null +++ b/.github/workflows/ghbuild.yml @@ -0,0 +1,23 @@ +# This workflow reuses the openHIE GitHub action for building IGs +# Initial idea by Carl Leitner, developed by 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: GitHub Pages build + +# 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: WorldHealthOrganization/smart-base/.github/workflows/ghbuild.yml@main diff --git a/.github/workflows/repo_actions.yml b/.github/workflows/repo_actions.yml new file mode 100644 index 000000000..fcb5388d3 --- /dev/null +++ b/.github/workflows/repo_actions.yml @@ -0,0 +1,20 @@ +# This workflow uses a remote action to do some repository actions like updating the readme files + +name: Call remote repo actions + +# 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: + call-update-readme: + uses: WorldHealthOrganization/smart-base/.github/workflows/update_readme.yml@main + with: + repositoryOwner: ${{ github.repository_owner }} + repositoryName: ${{ github.event.repository.name }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..54d52e822 --- /dev/null +++ b/.gitignore @@ -0,0 +1,49 @@ +# Temporary folders # +##################### +temp +template +output +fsh-generated + +# Don't commit this because it's so large # +########################################### +/input-cache + +# Windows generated files # +########################### +Thumbs.db + +# OS generated files # +###################### +.DS_Store +.DS_Store? +**/.index.json + +# backup files # +################ +*.bak + +# java settings +################ + + +.vscode/ +.idea/ +.idea/* + +# word # +######## +~$* + + +# emacs # +######### +*~ +\#*\# +/.emacs.desktop +/.emacs.desktop.lock +*.elc +auto-save-list +tramp +.\#* +.swp diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 000000000..e0bc84989 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,44 @@ +
+ +

SMART Guidelines, including this one, are required to express the license their copyright license.

+

All WHO-authored SMART Guidelines shall be subject to the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 IGO License. This includes all commons and dependencies authored by the WHO and this current guidance.

+ +

SMART Guidelines license details

+ +Creative Commons License + +

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 IGO License.

+ +

Copyright(c) 2022 World Health Organization Some rights reserved.

+ +

+Under the terms of this licence, you may copy, redistribute and adapt the work for noncommercial purposes provided the work +is appropriately cited, as indicated below. In any use of this work, there should be no suggestion that WHO endorses any specific +organizations, products or services. The use of the WHO logo is not permitted. If you adapt the work, then you must license your +work under the same or equivalent Creative Commons licence. If you create a translation of this work, you should add the following +disclaimer along with the suggested citation: "This translation was not created by the World Health Organization (WHO). WHO is not +responsible for the content or accuracy of this translation. The original English edition shall be the binding and authentic edition." +Any mediation relating to disputes arising under the licence shall be conducted in accordance with the mediation rules of the World +Intellectual Property Organization. (http://www.wipo.int/amc/en/mediation/rules/). +

+ +

License details for Software

+ +

Copyright(c) 2022 World Health Organization All rights reserved.

+ +

3-clause BSD license

+

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

+
    +
  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. + +
  3. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  4. + +
  5. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
  6. +
+

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +

+
diff --git a/README.md b/README.md new file mode 100644 index 000000000..06699989f --- /dev/null +++ b/README.md @@ -0,0 +1,18 @@ + +[![License: CC BY-IGO 3.0](https://licensebuttons.net/l/by-nc/3.0/igo/80x15.png)](https://creativecommons.org/licenses/by/3.0/igo) +![CI Build](https://img.shields.io/github/actions/workflow/status/WorldHealthOrganization/smart-ig-empty/ghbuild.yml) + +![QA errors](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2FWorldHealthOrganization.github.io%2Fsmart-ig-empty%2Fqa.json&query=%24.errs&logoColor=red&label=QA%20errors&color=yellow) +![QA warnings](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2FWorldHealthOrganization.github.io%2Fsmart-ig-empty%2Fqa.json&query=%24.warnings&logoColor=orange&label=QA%20warnings&color=yellow) +![QA hints](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2FWorldHealthOrganization.github.io%2Fsmart-ig-empty%2Fqa.json&query=%24.hints&logoColor=yellow&label=QA%20hints&color=yellow) + + +# WHO SMART GUIDELINES - EMPTY IG + +This is an empty framework, to be used to create SMART Implementation Guides. + + +## Changes and feedback + +Feedback and issues about this empty framework can be submitted via the [issues](issues) page, and will be incorporated into subsequent releases. + diff --git a/_gencontinuous.bat b/_gencontinuous.bat new file mode 100644 index 000000000..ca2867a5f --- /dev/null +++ b/_gencontinuous.bat @@ -0,0 +1,2 @@ +@ECHO OFF +CALL ./_genonce.bat -watch \ No newline at end of file diff --git a/_gencontinuous.sh b/_gencontinuous.sh new file mode 100644 index 000000000..b9ac5933d --- /dev/null +++ b/_gencontinuous.sh @@ -0,0 +1,2 @@ +#!/bin/bash +./_genonce.sh -watch diff --git a/_genonce.bat b/_genonce.bat new file mode 100644 index 000000000..a9864ef10 --- /dev/null +++ b/_genonce.bat @@ -0,0 +1,27 @@ +@ECHO OFF +SET publisher_jar=publisher.jar +SET input_cache_path=%CD%\input-cache + +ECHO Checking internet connection... +PING tx.fhir.org -4 -n 1 -w 1000 | FINDSTR TTL && GOTO isonline +ECHO We're offline... +SET txoption=-tx n/a +GOTO igpublish + +:isonline +ECHO We're online +SET txoption= + +:igpublish + +SET JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8 + +IF EXIST "%input_cache_path%\%publisher_jar%" ( + JAVA -jar "%input_cache_path%\%publisher_jar%" -ig . %txoption% %* +) ELSE If exist "..\%publisher_jar%" ( + JAVA -jar "..\%publisher_jar%" -ig . %txoption% %* +) ELSE ( + ECHO IG Publisher NOT FOUND in input-cache or parent folder. Please run _updatePublisher. Aborting... +) + +PAUSE diff --git a/_genonce.new.sh b/_genonce.new.sh new file mode 100644 index 000000000..4f981f055 --- /dev/null +++ b/_genonce.new.sh @@ -0,0 +1,30 @@ +#!/bin/bash +publisher_jar=publisher.jar +input_cache_path=./input-cache/ +echo Checking internet connection... +curl -sSf tx.fhir.org > /dev/null + +if [ $? -eq 0 ]; then + echo "Online" + txoption="" +else + echo "Offline" + txoption="-tx n/a" +fi + +echo "$txoption" + +export JAVA_TOOL_OPTIONS="$JAVA_TOOL_OPTIONS -Dfile.encoding=UTF-8" + +publisher=$input_cache_path/$publisher_jar +if test -f "$publisher"; then + java -jar $publisher -ig . $txoption $* + +else + publisher=../$publisher_jar + if test -f "$publisher"; then + java -jar $publisher -ig . $txoption $* + else + echo IG Publisher NOT FOUND in input-cache or parent folder. Please run _updatePublisher. Aborting... + fi +fi diff --git a/_genonce.sh b/_genonce.sh new file mode 100644 index 000000000..4f981f055 --- /dev/null +++ b/_genonce.sh @@ -0,0 +1,30 @@ +#!/bin/bash +publisher_jar=publisher.jar +input_cache_path=./input-cache/ +echo Checking internet connection... +curl -sSf tx.fhir.org > /dev/null + +if [ $? -eq 0 ]; then + echo "Online" + txoption="" +else + echo "Offline" + txoption="-tx n/a" +fi + +echo "$txoption" + +export JAVA_TOOL_OPTIONS="$JAVA_TOOL_OPTIONS -Dfile.encoding=UTF-8" + +publisher=$input_cache_path/$publisher_jar +if test -f "$publisher"; then + java -jar $publisher -ig . $txoption $* + +else + publisher=../$publisher_jar + if test -f "$publisher"; then + java -jar $publisher -ig . $txoption $* + else + echo IG Publisher NOT FOUND in input-cache or parent folder. Please run _updatePublisher. Aborting... + fi +fi diff --git a/_updatePublisher.bat b/_updatePublisher.bat new file mode 100644 index 000000000..67aebf583 --- /dev/null +++ b/_updatePublisher.bat @@ -0,0 +1,219 @@ +@ECHO OFF + +SETLOCAL + +SET dlurl=https://github.com/HL7/fhir-ig-publisher/releases/latest/download/publisher.jar +SET publisher_jar=publisher.jar +SET input_cache_path=%CD%\input-cache\ +SET skipPrompts=false + +SET scriptdlroot=https://raw.githubusercontent.com/HL7/ig-publisher-scripts/main +SET update_bat_url=%scriptdlroot%/_updatePublisher.bat +SET gen_bat_url=%scriptdlroot%/_genonce.bat +SET gencont_bat_url=%scriptdlroot%/_gencontinuous.bat +SET gencont_sh_url=%scriptdlroot%/_gencontinuous.sh +SET gen_sh_url=%scriptdlroot%/_genonce.sh +SET update_sh_url=%scriptdlroot%/_updatePublisher.sh + +IF "%~1"=="/f" SET skipPrompts=y + + +ECHO. +ECHO Checking internet connection... +PING tx.fhir.org -4 -n 1 -w 1000 | FINDSTR TTL && GOTO isonline +ECHO We're offline, nothing to do... +GOTO end + +:isonline +ECHO We're online + + +:processflags +SET ARG=%1 +IF DEFINED ARG ( + IF "%ARG%"=="-f" SET FORCE=true + IF "%ARG%"=="--force" SET FORCE=true + SHIFT + GOTO processflags +) + +FOR %%x IN ("%CD%") DO SET upper_path=%%~dpx + +ECHO. +IF NOT EXIST "%input_cache_path%%publisher_jar%" ( + IF NOT EXIST "%upper_path%%publisher_jar%" ( + SET jarlocation="%input_cache_path%%publisher_jar%" + SET jarlocationname=Input Cache + ECHO IG Publisher is not yet in input-cache or parent folder. + REM we don't use jarlocation below because it will be empty because we're in a bracketed if statement + GOTO create + ) ELSE ( + ECHO IG Publisher FOUND in parent folder + SET jarlocation="%upper_path%%publisher_jar%" + SET jarlocationname=Parent folder + GOTO upgrade + ) +) ELSE ( + ECHO IG Publisher FOUND in input-cache + SET jarlocation="%input_cache_path%%publisher_jar%" + SET jarlocationname=Input Cache + GOTO upgrade +) + +:create +IF DEFINED FORCE ( + MKDIR "%input_cache_path%" 2> NUL + GOTO download +) + +IF "%skipPrompts%"=="y" ( + SET create=Y +) ELSE ( + SET /p create="Ok? (Y/N) " +) +IF /I "%create%"=="Y" ( + ECHO Will place publisher jar here: %input_cache_path%%publisher_jar% + MKDIR "%input_cache_path%" 2> NUL + GOTO download +) +GOTO done + +:upgrade +IF "%skipPrompts%"=="y" ( + SET overwrite=Y +) ELSE ( + SET /p overwrite="Overwrite %jarlocation%? (Y/N) " +) + +IF /I "%overwrite%"=="Y" ( + GOTO download +) +GOTO done + +:download +ECHO Downloading most recent publisher to %jarlocationname% - it's ~100 MB, so this may take a bit + +FOR /f "tokens=4-5 delims=. " %%i IN ('ver') DO SET VERSION=%%i.%%j +IF "%version%" == "10.0" GOTO win10 +IF "%version%" == "6.3" GOTO win8.1 +IF "%version%" == "6.2" GOTO win8 +IF "%version%" == "6.1" GOTO win7 +IF "%version%" == "6.0" GOTO vista + +ECHO Unrecognized version: %version% +GOTO done + +:win10 +CALL POWERSHELL -command if ('System.Net.WebClient' -as [type]) {(new-object System.Net.WebClient).DownloadFile(\"%dlurl%\",\"%jarlocation%\") } else { Invoke-WebRequest -Uri "%dlurl%" -Outfile "%jarlocation%" } + +GOTO done + +:win7 +rem this may be triggering the antivirus - bitsadmin.exe is a known threat +rem CALL bitsadmin /transfer GetPublisher /download /priority normal "%dlurl%" "%jarlocation%" + +rem this didn't work in win 10 +rem CALL Start-BitsTransfer /priority normal "%dlurl%" "%jarlocation%" + +rem this should work - untested +call (New-Object Net.WebClient).DownloadFile('%dlurl%', '%jarlocation%') +GOTO done + +:win8.1 +:win8 +:vista +GOTO done + + + +:done + + + + +ECHO. +ECHO Updating scripts +IF "%skipPrompts%"=="y" ( + SET updateScripts=Y +) ELSE ( + SET /p updateScripts="Update scripts? (Y/N) " +) +IF /I "%updateScripts%"=="Y" ( + GOTO scripts +) +GOTO end + + +:scripts + +REM Download all batch files (and this one with a new name) + +SETLOCAL DisableDelayedExpansion + + + +:dl_script_1 +ECHO Updating _updatePublisher.sh +call POWERSHELL -command if ('System.Net.WebClient' -as [type]) {(new-object System.Net.WebClient).DownloadFile(\"%update_sh_url%\",\"_updatePublisher.new.sh\") } else { Invoke-WebRequest -Uri "%update_sh_url%" -Outfile "_updatePublisher.new.sh" } +if %ERRORLEVEL% == 0 goto upd_script_1 +echo "Errors encountered during download: %errorlevel%" +goto dl_script_2 +:upd_script_1 +start copy /y "_updatePublisher.new.sh" "_updatePublisher.sh" ^&^& del "_updatePublisher.new.sh" ^&^& exit + + +:dl_script_2 +ECHO Updating _genonce.bat +call POWERSHELL -command if ('System.Net.WebClient' -as [type]) {(new-object System.Net.WebClient).DownloadFile(\"%gen_bat_url%\",\"_genonce.new.bat\") } else { Invoke-WebRequest -Uri "%gen_bat_url%" -Outfile "_genonce.bat" } +if %ERRORLEVEL% == 0 goto upd_script_2 +echo "Errors encountered during download: %errorlevel%" +goto dl_script_3 +:upd_script_2 +start copy /y "_genonce.new.bat" "_genonce.bat" ^&^& del "_genonce.new.bat" ^&^& exit + +:dl_script_3 +ECHO Updating _gencontinuous.bat +call POWERSHELL -command if ('System.Net.WebClient' -as [type]) {(new-object System.Net.WebClient).DownloadFile(\"%gencont_bat_url%\",\"_gencontinuous.new.bat\") } else { Invoke-WebRequest -Uri "%gencont_bat_url%" -Outfile "_gencontinuous.bat" } +if %ERRORLEVEL% == 0 goto upd_script_3 +echo "Errors encountered during download: %errorlevel%" +goto dl_script_4 +:upd_script_3 +start copy /y "_gencontinuous.new.bat" "_gencontinuous.bat" ^&^& del "_gencontinuous.new.bat" ^&^& exit + + +:dl_script_4 +ECHO Updating _genonce.sh +call POWERSHELL -command if ('System.Net.WebClient' -as [type]) {(new-object System.Net.WebClient).DownloadFile(\"%gen_sh_url%\",\"_genonce.new.sh\") } else { Invoke-WebRequest -Uri "%gen_sh_url%" -Outfile "_genonce.sh" } +if %ERRORLEVEL% == 0 goto upd_script_4 +echo "Errors encountered during download: %errorlevel%" +goto dl_script_5 +:upd_script_4 +start copy /y "_genonce.new.sh" "_genonce.sh" ^&^& del "_genonce.new.sh" ^&^& exit + +:dl_script_5 +ECHO Updating _gencontinuous.sh +call POWERSHELL -command if ('System.Net.WebClient' -as [type]) {(new-object System.Net.WebClient).DownloadFile(\"%gencont_sh_url%\",\"_gencontinuous.new.sh\") } else { Invoke-WebRequest -Uri "%gencont_sh_url%" -Outfile "_gencontinuous.sh" } +if %ERRORLEVEL% == 0 goto upd_script_5 +echo "Errors encountered during download: %errorlevel%" +goto dl_script_6 +:upd_script_5 +start copy /y "_gencontinuous.new.sh" "_gencontinuous.sh" ^&^& del "_gencontinuous.new.sh" ^&^& exit + + + +:dl_script_6 +ECHO Updating _updatePublisher.bat +call POWERSHELL -command if ('System.Net.WebClient' -as [type]) {(new-object System.Net.WebClient).DownloadFile(\"%update_bat_url%\",\"_updatePublisher.new.bat\") } else { Invoke-WebRequest -Uri "%update_bat_url%" -Outfile "_updatePublisher.new.bat" } +if %ERRORLEVEL% == 0 goto upd_script_6 +echo "Errors encountered during download: %errorlevel%" +goto end +:upd_script_6 +start copy /y "_updatePublisher.new.bat" "_updatePublisher.bat" ^&^& del "_updatePublisher.new.bat" ^&^& exit + + +:end + + +IF "%skipPrompts%"=="true" ( + PAUSE +) diff --git a/_updatePublisher.sh b/_updatePublisher.sh new file mode 100644 index 000000000..0f9ecbed9 --- /dev/null +++ b/_updatePublisher.sh @@ -0,0 +1,132 @@ +#!/bin/bash +pubsource=https://github.com/HL7/fhir-ig-publisher/releases/latest/download/ +publisher_jar=publisher.jar +dlurl=$pubsource$publisher_jar + +input_cache_path=$PWD/input-cache/ + +scriptdlroot=https://raw.githubusercontent.com/HL7/ig-publisher-scripts/main +update_bat_url=$scriptdlroot/_updatePublisher.bat +gen_bat_url=$scriptdlroot/_genonce.bat +gencont_bat_url=$scriptdlroot/_gencontinuous.bat +gencont_sh_url=$scriptdlroot/_gencontinuous.sh +gen_sh_url=$scriptdlroot/_genonce.sh +update_sh_url=$scriptdlroot/_updatePublisher.sh + +skipPrompts=false +FORCE=false + +if ! type "curl" > /dev/null; then + echo "ERROR: Script needs curl to download latest IG Publisher. Please install curl." + exit 1 +fi + +while [ "$#" -gt 0 ]; do + case $1 in + -f|--force) FORCE=true ;; + -y|--yes) skipPrompts=true ; FORCE=true ;; + *) echo "Unknown parameter passed: $1. Exiting"; exit 1 ;; + esac + shift +done + +echo "Checking internet connection" +curl -sSf tx.fhir.org > /dev/null + +if [ $? -ne 0 ] ; then + echo "Offline (or the terminology server is down), unable to update. Exiting" + exit 1 +fi + +if [ ! -d "$input_cache_path" ] ; then + if [ $FORCE != true ]; then + echo "$input_cache_path does not exist" + message="create it?" + read -r -p "$message" response + else + response=y + fi +fi + +if [[ $response =~ ^[yY].*$ ]] ; then + mkdir ./input-cache +fi + +publisher="$input_cache_path$publisher_jar" + +if test -f "$publisher" ; then + echo "IG Publisher FOUND in input-cache" + jarlocation="$publisher" + jarlocationname="Input Cache" + upgrade=true +else + publisher="../$publisher_jar" + upgrade=true + if test -f "$publisher"; then + echo "IG Publisher FOUND in parent folder" + jarlocation="$publisher" + jarlocationname="Parent Folder" + upgrade=true + else + echo "IG Publisher NOT FOUND in input-cache or parent folder" + jarlocation=$input_cache_path$publisher_jar + jarlocationname="Input Cache" + upgrade=false + fi +fi + +if [[ $skipPrompts == false ]]; then + + if [[ $upgrade == true ]]; then + message="Overwrite $jarlocation? (Y/N) " + else + echo Will place publisher jar here: "$jarlocation" + message="Ok (enter 'y' or 'Y' to continue, any other key to cancel)?" + fi + read -r -p "$message" response +else + response=y +fi +if [[ $skipPrompts == true ]] || [[ $response =~ ^[yY].*$ ]]; then + + echo "Downloading most recent publisher to $jarlocationname - it's ~100 MB, so this may take a bit" + curl -L $dlurl -o "$jarlocation" --create-dirs +else + echo cancelled publisher update +fi + +if [[ $skipPrompts != true ]]; then + message="Update scripts? (enter 'y' or 'Y' to continue, any other key to cancel)?" + read -r -p "$message" response + fi + +if [[ $skipPrompts == true ]] || [[ $response =~ ^[yY].*$ ]]; then + echo "Downloading most recent scripts " + + curl -L $update_bat_url -o /tmp/_updatePublisher.new + cp /tmp/_updatePublisher.new _updatePublisher.bat + rm /tmp/_updatePublisher.new + + curl -L $gen_bat_url -o /tmp/_genonce.new + cp /tmp/_genonce.new _genonce.bat + rm /tmp/_genonce.new + + curl -L $gencont_bat_url -o /tmp/_gencontinuous.new + cp /tmp/_gencontinuous.new _gencontinuous.bat + rm /tmp/_gencontinuous.new + + curl -L $gencont_sh_url -o /tmp/_gencontinuous.new + cp /tmp/_gencontinuous.new _gencontinuous.sh + chmod +x _gencontinuous.sh + rm /tmp/_gencontinuous.new + + curl -L $gen_sh_url -o /tmp/_genonce.new + cp /tmp/_genonce.new _genonce.sh + chmod +x _genonce.sh + rm /tmp/_genonce.new + + curl -L $update_sh_url -o /tmp/_updatePublisher.new + cp /tmp/_updatePublisher.new _updatePublisher.sh + chmod +x _updatePublisher.sh + rm /tmp/_updatePublisher.new +fi diff --git a/badges.md b/badges.md new file mode 100644 index 000000000..32c427d6a --- /dev/null +++ b/badges.md @@ -0,0 +1,6 @@ +[![License: CC BY-IGO 3.0](https://licensebuttons.net/l/by-nc/3.0/igo/80x15.png)](https://creativecommons.org/licenses/by/3.0/igo) +![CI Build](https://img.shields.io/github/actions/workflow/status///ghbuild.yml) + +![QA errors](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2F.github.io%2F%2Fqa.json&query=%24.errs&logoColor=red&label=QA%20errors&color=yellow) +![QA warnings](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2F.github.io%2F%2Fqa.json&query=%24.warnings&logoColor=orange&label=QA%20warnings&color=yellow) +![QA hints](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2F.github.io%2F%2Fqa.json&query=%24.hints&logoColor=yellow&label=QA%20hints&color=yellow) diff --git a/ig.ini b/ig.ini new file mode 100644 index 000000000..973502bcd --- /dev/null +++ b/ig.ini @@ -0,0 +1,5 @@ +[IG] +ig = fsh-generated/resources/ImplementationGuide-who.fhir.smart-ig-empty.json + +#template = #local-template +template = who.template.root#current diff --git a/input/business-processes/.gitignore b/input/business-processes/.gitignore new file mode 100644 index 000000000..2c0d4a3d6 --- /dev/null +++ b/input/business-processes/.gitignore @@ -0,0 +1 @@ +Empty file to keep the folder structure \ No newline at end of file diff --git a/input/cql/.gitignore b/input/cql/.gitignore new file mode 100644 index 000000000..2c0d4a3d6 --- /dev/null +++ b/input/cql/.gitignore @@ -0,0 +1 @@ +Empty file to keep the folder structure \ No newline at end of file diff --git a/input/data/features.yaml b/input/data/features.yaml new file mode 100644 index 000000000..c81e4c9e3 --- /dev/null +++ b/input/data/features.yaml @@ -0,0 +1,4 @@ +--- +github: + repo_owner: "WorldHealthOrganization" + repo_name: "smart-empty" \ No newline at end of file diff --git a/input/decision-logic/.gitignore b/input/decision-logic/.gitignore new file mode 100644 index 000000000..2c0d4a3d6 --- /dev/null +++ b/input/decision-logic/.gitignore @@ -0,0 +1 @@ +Empty file to keep the folder structure \ No newline at end of file diff --git a/input/dictionary/.gitignore b/input/dictionary/.gitignore new file mode 100644 index 000000000..2c0d4a3d6 --- /dev/null +++ b/input/dictionary/.gitignore @@ -0,0 +1 @@ +Empty file to keep the folder structure \ No newline at end of file diff --git a/input/examples/.gitignore b/input/examples/.gitignore new file mode 100644 index 000000000..2c0d4a3d6 --- /dev/null +++ b/input/examples/.gitignore @@ -0,0 +1 @@ +Empty file to keep the folder structure \ No newline at end of file diff --git a/input/extensions/.gitignore b/input/extensions/.gitignore new file mode 100644 index 000000000..2c0d4a3d6 --- /dev/null +++ b/input/extensions/.gitignore @@ -0,0 +1 @@ +Empty file to keep the folder structure \ No newline at end of file diff --git a/input/fsh/.gitignore b/input/fsh/.gitignore new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/input/fsh/.gitignore @@ -0,0 +1 @@ + diff --git a/input/fsh/Aliases.fsh b/input/fsh/Aliases.fsh new file mode 100644 index 000000000..0123c52b1 --- /dev/null +++ b/input/fsh/Aliases.fsh @@ -0,0 +1,11 @@ +Alias: $SCT = http://snomed.info/sct +Alias: $LNC = http://loinc.org +Alias: $ICD11 = http://id.who.int/icd/release/11/mms +Alias: $ICD10 = http://hl7.org/fhir/sid/icd-10 +Alias: $CVX = http://hl7.org/fhir/sid/cvx +Alias: $GENDER = http://hl7.org/fhir/administrative-gender + +Alias: $library-type = http://terminology.hl7.org/CodeSystem/library-type +Alias: $measure-scoring = http://terminology.hl7.org/CodeSystem/measure-scoring +Alias: $measure-population = http://terminology.hl7.org/CodeSystem/measure-population +Alias: $action-type = http://terminology.hl7.org/CodeSystem/action-type \ No newline at end of file diff --git a/input/fsh/activitydefinitions/.gitignore b/input/fsh/activitydefinitions/.gitignore new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/input/fsh/activitydefinitions/.gitignore @@ -0,0 +1 @@ + diff --git a/input/fsh/actors/.gitignore b/input/fsh/actors/.gitignore new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/input/fsh/actors/.gitignore @@ -0,0 +1 @@ + diff --git a/input/fsh/codesystems/.gitignore b/input/fsh/codesystems/.gitignore new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/input/fsh/codesystems/.gitignore @@ -0,0 +1 @@ + diff --git a/input/fsh/conceptmaps/.gitignore b/input/fsh/conceptmaps/.gitignore new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/input/fsh/conceptmaps/.gitignore @@ -0,0 +1 @@ + diff --git a/input/fsh/examples/.gitignore b/input/fsh/examples/.gitignore new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/input/fsh/examples/.gitignore @@ -0,0 +1 @@ + diff --git a/input/fsh/extensions/.gitignore b/input/fsh/extensions/.gitignore new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/input/fsh/extensions/.gitignore @@ -0,0 +1 @@ + diff --git a/input/fsh/libraries/.gitignore b/input/fsh/libraries/.gitignore new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/input/fsh/libraries/.gitignore @@ -0,0 +1 @@ + diff --git a/input/fsh/measures/.gitignore b/input/fsh/measures/.gitignore new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/input/fsh/measures/.gitignore @@ -0,0 +1 @@ + diff --git a/input/fsh/models/.gitignore b/input/fsh/models/.gitignore new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/input/fsh/models/.gitignore @@ -0,0 +1 @@ + diff --git a/input/fsh/plandefinitions/.gitignore b/input/fsh/plandefinitions/.gitignore new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/input/fsh/plandefinitions/.gitignore @@ -0,0 +1 @@ + diff --git a/input/fsh/profiles/.gitignore b/input/fsh/profiles/.gitignore new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/input/fsh/profiles/.gitignore @@ -0,0 +1 @@ + diff --git a/input/fsh/questionnaires/.gitignore b/input/fsh/questionnaires/.gitignore new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/input/fsh/questionnaires/.gitignore @@ -0,0 +1 @@ + diff --git a/input/fsh/requirements/.gitignore b/input/fsh/requirements/.gitignore new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/input/fsh/requirements/.gitignore @@ -0,0 +1 @@ + diff --git a/input/fsh/rulesets/.gitignore b/input/fsh/rulesets/.gitignore new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/input/fsh/rulesets/.gitignore @@ -0,0 +1 @@ + diff --git a/input/fsh/rulesets/rulesets-logicalmodels.fsh b/input/fsh/rulesets/rulesets-logicalmodels.fsh new file mode 100644 index 000000000..ad728e09b --- /dev/null +++ b/input/fsh/rulesets/rulesets-logicalmodels.fsh @@ -0,0 +1,6 @@ +RuleSet: ElementMap(source, target, equivalence) +* element[+] + * code = #{source} + * target[+] + * code = #{target} + * equivalence = #{equivalence} diff --git a/input/fsh/rulesets/rulesets-questionnaires.fsh b/input/fsh/rulesets/rulesets-questionnaires.fsh new file mode 100644 index 000000000..25becad0a --- /dev/null +++ b/input/fsh/rulesets/rulesets-questionnaires.fsh @@ -0,0 +1,6 @@ +RuleSet: Question(linkId, text, type, required, repeats) +* item[+].linkId = "{linkId}" +* item[=].text = "{text}" +* item[=].type = #{type} +* item[=].repeats = {repeats} +* item[=].required = {required} diff --git a/input/fsh/scenarios/.gitignore b/input/fsh/scenarios/.gitignore new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/input/fsh/scenarios/.gitignore @@ -0,0 +1 @@ + diff --git a/input/fsh/valuesets/.gitignore b/input/fsh/valuesets/.gitignore new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/input/fsh/valuesets/.gitignore @@ -0,0 +1 @@ + diff --git a/input/history/.gitignore b/input/history/.gitignore new file mode 100644 index 000000000..2c0d4a3d6 --- /dev/null +++ b/input/history/.gitignore @@ -0,0 +1 @@ +Empty file to keep the folder structure \ No newline at end of file diff --git a/input/ignoreWarnings.txt b/input/ignoreWarnings.txt new file mode 100644 index 000000000..d03142bca --- /dev/null +++ b/input/ignoreWarnings.txt @@ -0,0 +1,5 @@ +== Suppressed Messages == + +# Add warning and/or information messages here after you've confirmed that they aren't really a problem +# (And include comments like this justifying why) +# See https://github.com/FHIR/sample-ig/blob/master/input/ignoreWarnings.txt for examples \ No newline at end of file diff --git a/input/images-source/.gitignore b/input/images-source/.gitignore new file mode 100644 index 000000000..2c0d4a3d6 --- /dev/null +++ b/input/images-source/.gitignore @@ -0,0 +1 @@ +Empty file to keep the folder structure \ No newline at end of file diff --git a/input/images/.gitignore b/input/images/.gitignore new file mode 100644 index 000000000..2c0d4a3d6 --- /dev/null +++ b/input/images/.gitignore @@ -0,0 +1 @@ +Empty file to keep the folder structure \ No newline at end of file diff --git a/input/indicators/.gitignore b/input/indicators/.gitignore new file mode 100644 index 000000000..2c0d4a3d6 --- /dev/null +++ b/input/indicators/.gitignore @@ -0,0 +1 @@ +Empty file to keep the folder structure \ No newline at end of file diff --git a/input/maps/.gitignore b/input/maps/.gitignore new file mode 100644 index 000000000..2c0d4a3d6 --- /dev/null +++ b/input/maps/.gitignore @@ -0,0 +1 @@ +Empty file to keep the folder structure \ No newline at end of file diff --git a/input/models/.gitignore b/input/models/.gitignore new file mode 100644 index 000000000..2c0d4a3d6 --- /dev/null +++ b/input/models/.gitignore @@ -0,0 +1 @@ +Empty file to keep the folder structure \ No newline at end of file diff --git a/input/pagecontent/adapting.md b/input/pagecontent/adapting.md new file mode 100644 index 000000000..34d0f2232 --- /dev/null +++ b/input/pagecontent/adapting.md @@ -0,0 +1,13 @@ +The following page provides a reference to resources that can guide countries in adapting the guidelines for country use. + +To implement WHO recommendations in country settings, governments must interpret and then adapt the content in line with local policies, procedures, and digital tools. + +This implementation guide provides the generic content required in digital systems, independently of a specific software application and with the intention that countries can adapt it to meet local needs. + +WHO guidelines articulate and endorse rigorously tested recommendations for health interventions to be adopted within country programs. When applied correctly and consistently, guideline recommendations save lives. To ensure that countries can effectively benefit from digital health investments, the SMART Guidelines approach is intended to facilitate the accurate reflection of WHO’s clinical, public health and data use guidelines in the digital systems that countries are adopting. + +For more on layers of knowledge representation and how they are used in WHO’s SMART Guidelines approach, see [WHO’s SMART Guidelines](https://www.who.int/teams/digital-health-and-innovation/smart-guidelines) and this [Lancet article](https://www.thelancet.com/journals/landig/article/PIIS2589-7500(21)00038-8/fulltext). + +The standards-based technical artifacts in this implementation guide are at the third layer of knowledge representation (L3: Machine-readable recommendations). It provides code necessary for software developers to incorporate standardised logic from WHO guidelines into digital systems, testable for conformance to standards including fidelity to recommendations. A standards-based technical implementation guide builds on operational (L2) by mapping L2 content to value sets and Health Level Seven International Fast Healthcare Interoperability Resources (FHIR) standards. Alongside data standards from L2, this allows for semantic and syntactic interoperability at scale. The logic derived from guidelines, which might include clinical decision support and calculations for performance indicators, which may be encoded into Clinical Quality Language (CQL). This ensures that key indicators can be consistently extracted to support patient care, as well as case surveillance and programme monitoring. The machine-readable representations in this implementation guide are intended for adaptation into countries’ digital health service delivery and reporting systems. Digital solutions comprising L3 machine-readable recommendations may then be testable for conformance to interoperability standards. + +The fourth layer (L4: Executable—reference applications and services) focuses on software applications and services within a digital ecosystem. It is intended to include executable reference software that accurately represents the intentions, operational, and functional requirements of the WHO recommendations; addresses user and health system needs; and comprises machine-readable data and calculations within interoperability standards, as documented in the L1–L3 layers. As a fully functional application, it is intended to serve as a generic starting point, ready to be localised to the specific operational context of the users, population, and health system within which it is deployed. Additional products at this layer include terminology services to support consistent data representation for interoperability; reusable software libraries including software development kits; application programming interfaces; and function as a service to support updates to FHIR content and capabilities across subscribed digital systems. \ No newline at end of file diff --git a/input/pagecontent/business-process.md b/input/pagecontent/business-process.md new file mode 100644 index 000000000..d471231e0 --- /dev/null +++ b/input/pagecontent/business-process.md @@ -0,0 +1 @@ +# Downloads \ No newline at end of file diff --git a/input/pagecontent/business-processes.md b/input/pagecontent/business-processes.md new file mode 100644 index 000000000..5cc81ea80 --- /dev/null +++ b/input/pagecontent/business-processes.md @@ -0,0 +1,43 @@ +This page describes the business processes included in the WHO Digital +Adaptation Kit (DAK) [insert health domain here] (link forthcoming). +For full details, see the published DAK content. + +A business process, or process, is a set of related activities or tasks +performed together to achieve the objectives of the health programme area, +such as registration, counselling, referrals. Workflows are a visual +representation of the progression of activities (tasks, events, interactions) +that are performed within the business process. The workflow provides a “story” +for the business process being diagrammed and is used to enhance communication +and collaboration among users, stakeholders and engineers. + +The DAK for [insert health domain here] focuses on key business processes insert content here. + +### Overview of Key Business Processes +The following table describes the workflows of the included processes. + + + + + + + + + + + + + + + + + + + + +
# Process Name Process ID Personas Objectives
Title ID used to reference this process throughout the DAK Individuals interacting to complete the process A concrete statement describing what the process seeks to achieve
+ +### Workflows +The workflows that follow depict processes that have been generalized across different contexts and may not reflect the variability and nuances across different settings. The simplicity of the workflow may not adequately illustrate the nonlinear steps that may occur. + +#### Overview of key [insert health domain here] process flows +The business processes included in the DAK are shown in the following figure. Processes included in the DAK start with a letter (e.g. "A.") and are shown using the "Activity with sub-process" shape, which includes a plus sign. diff --git a/input/pagecontent/business-requirements.md b/input/pagecontent/business-requirements.md new file mode 100644 index 000000000..773013014 --- /dev/null +++ b/input/pagecontent/business-requirements.md @@ -0,0 +1,9 @@ +- [**Concepts**](concepts.html) - A glossary of terms and key concepts introduced in the L2 or in the Implementation Guide +- [**Generic Personas**](personas.html) - Depiction of end-users and related stakeholders as introduced in the L2 +- [**Use Cases**](scenarios.html) - User scenarios depicting how different personas will interact in a typical workflow along with use cases listed as introduced in the L2 +- [**Business Processes**](business-processes.html) - Depiction of business processes as visual workflows as introduced in the L2 +- [**Data Dictionary**](dictionary.html) - Data dictionary with detailed data specifications as introduced in the L2 +- [**Decision-support Logic**](decision-logic.html) - Decision-support logic and algorithms as introduced in the L2 +- [**Indicator and Performance Metrics**](indicators.html) - Core set of indicators and performance metrics as introduced in the L2 +- [**Functional Requirements**](functional-requirements.html) - List of core functions and capabilities the system must have to meet the end-users’ needs and achieve tasks within the business process. +- [**Non-functional Requirements**](non-functional-requirements.html) - List of capabilities the system must have as introduced in the L2 diff --git a/input/pagecontent/changes.md b/input/pagecontent/changes.md new file mode 100644 index 000000000..b77380b13 --- /dev/null +++ b/input/pagecontent/changes.md @@ -0,0 +1,3 @@ +# SMART + +Feel free to modify this index page with your own awesome content! \ No newline at end of file diff --git a/input/pagecontent/codings.md b/input/pagecontent/codings.md new file mode 100644 index 000000000..ce94c13fa --- /dev/null +++ b/input/pagecontent/codings.md @@ -0,0 +1,9 @@ +Note that the terminologies included in this implementation guide will need to be updated, because the ideal mechanism for distribution (as an expression) is not currently supported by the content logical definition constructs available in the FHIR ValueSet resource and all known implementations of it. Before use in a production environment, ensure you have the latest value sets based on the definitions for each value set (as defined in the inclusion/exclusion criteria for each one). + +The following terminology artifacts are included for this implementation guide: + +### CodeSystems +{% include list-simple-codesystems.xhtml %} + +### ValueSets +{% include list-simple-valuesets.xhtml %} \ No newline at end of file diff --git a/input/pagecontent/concepts.md b/input/pagecontent/concepts.md new file mode 100644 index 000000000..05dc384c5 --- /dev/null +++ b/input/pagecontent/concepts.md @@ -0,0 +1,235 @@ +Key concepts and abbreviations are described here. Additional terms are defined in the Glossary and List of Abbreviations in the WHO Digital Adaptation Kit for [insert health domain here] (link forthcoming) +### Concepts + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TermDescription
Anatomical Therapeutic Chemical code (ATC)A unique code assigned to a medicine according to the organ or system it works on and how it works.
CertificateA document attesting a fact. In the context of the vaccination certificate, it attests to the fact that a vaccine has been administered to an individual.
Clinical practice guidelines (CPG)Clinical practice guidelines are statements that include recommendations intended to optimize patient care that are informed by a systematic review of evidence and an assessment of the benefits and harms of alternative care options.
Clinical Quality Language (CQL)This is a HL7 specification for the expression of clinical knowledge that can be used within both the Clinical Decision Support (CDS) and Clinical Quality Measurement (CQM) domains.
Data dictionaryA centralized repository of information about the data elements that contains their definition, relationships, origin, usage, and type of data. For this digital adaptation kit, the data dictionary is provided as a spreadsheet.
Data elementA unit of data that has specific and precise meaning.
Fast Healthcare Interoperability Resources (FHIR)A standard describing data formats and elements and an application programming interface for exchanging electronic health records.
Functional requirementCapabilities the system must have in order to meet the end-users’ needs and achieve tasks within the business process.
Implementation Guide (IG)A set of rules about how FHIR resources are used (or should be used) to solve a particular problem, with associated documentation to support and clarify the usage. This IG is based on WHO guidance, as it is represented in the Digital Adaptation Kit for [insert health domain here], to support the adoption of open standards for interoperability.
IndicatorSummary measures that capture relevant information on different attributes and dimensions of health status and performance of a health system.
International Patient Summary (IPS)An electronic health record extract containing essential healthcare information about a client.
Non-functional requirementGeneral attributes and features of the digital system to ensure usability and overcome technical and physical constraints. Examples of non-functional requirements include ability to work offline, multiple language settings, and password protection.
Systemized Nomenclature of Medicine – Clinical Terms Global Patient Set (SNOMED CT GPS)A systematically organized computer-processable collection of medical terms providing codes, terms, synonyms and definitions used in clinical documentation and reporting.
+ +### Abbreviations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TermDescription
BPMNBusiness Process Model and Notation
CDCCenters for Disease Control and Prevention
CDSClinical decision support
CHWCommunity health worker
CQLClinical Quality Language
DAKDigital Adaptation Kit
DEData element
DMNDecision Model and Notation
DTDecision support table
DTDSDigital tracking and decision support
EDEvent-driven
eHealthElectronic health
EMRElectronic medical record
FHIRFast Healthcare Interoperability Resources
HWHealth Worker
HL7Health Level Seven International
HMISHealth management information system
ICDInternational Classification of Diseases
ICD-11International Classification of Diseases (version 11)
ICFInternational Classification of Functioning, Disability and Health
ICHIInternational Classification of Health Interventions
IDIdentification
IGImplementation guide
IHEIntegrating the Healthcare Enterprise
ISCOInternational Standard for Classification of Occupations
ITUInternational Telecommunication Union
LOINCLogical Observation Identifiers Names and Codes
M&EMonitoring and Evaluation
MAPSmHealth Assessment and Planning for Scale
mHealthMobile Health
MOHMinistry of Health
NMFLNational Master Facility List
NFXNREQNon-functional requirement
OpenHIEOpen Health Information Exchange
PrEPpre-exposure prophylaxis
SMARTStandards-based, Machine-readable, Adaptive, Requirements-based and Testable
SNOMED CTSystematized Nomenclature of Medicine - Clinical Terms
VVMVaccine Vial Monitor
WHOWorld Health Organization
diff --git a/input/pagecontent/data-models-and-exchange.md b/input/pagecontent/data-models-and-exchange.md new file mode 100644 index 000000000..4ad6e4c8f --- /dev/null +++ b/input/pagecontent/data-models-and-exchange.md @@ -0,0 +1,29 @@ +This section contains the data models and data exchange protocols with actors and transactions defined. It is part of the L3 machine-readable knowledge representation. + +The pages included in this section are described below. + +- [**Actors**](personas.html) - A list and description of software or human entities that interact with the system, derived from business requirements defined in the L2. +- [**Sequence Diagrams**](sequence-diagrams.html) - Sequence diagrams depicting the interactions between system actors, in order, derived from business processes in the L2. +- [**Transactions**](transactions.html) - A defined list of system transactions at an atomic level for each actor along with narrative, capability statements, structure definition, questionnaires, document bundles and composition. It may also refer to transactions in other implementation guides. +- [**Logical Models**](#) - A StructureDefinition resource that describes data element definitions and their associated rules of usage, derived from the data dictionary in the L2. +- [**Indicators and Measures**](indicators-measures.html) - A thematic list of indicators defined in the implementation guide that link to L1 and L2 guidance documents. + +### Design Documentation -DRAFT- +The documentation below details how to use this IG to execute the decision logic and the resources required to do so including PlanDefinitions, ActivityDefinitions, ValueSets, and Libraries. + +#### PlanDefinitions +insert content here has been represented as a FHIR PlanDefinition conformant to the FHIR Clinical Practice Guidelines Implementation guide [CPG-ComputablePlanDefinition](http://hl7.org/fhir/uv/cpg/StructureDefinition/cpg-computableplandefinition). For example, there is a PlanDefinition for Hepatitis A, Measles, etc. The intention behind this design is for each implementation to utilize only the antigens that are required for their national/local context, as many countries have national vaccine routines, which may leverage the WHO guidance. The aim of this content was to be adaptable for those contexts. + +These PlanDefinitions can be found in the [Artifact Index](artifacts.html) + +#### ActivityDefinitions +To represent the activities that need to be carried out, this implementation guide follows the workflow patterns established by the base FHIR specification. Each antigen represented as a PlanDefinition will be processed to produce ActivityDefnitions conform to the FHIR Clinical Practice Guidelines Implementation guide [CPG-ActivityProfiles](http://hl7.org/fhir/uv/cpg/profiles.html#activity-profiles). + + +#### FHIR Library +The FHIR Library contains a base64 encoded CQL library which represents the decision logic as a series of boolean clauses. Each PlanDefinition and Measure will reference a Library from which each decision point can be made and specify which expression from the CQL is used to trigger a decision in PlanDefinition or where to retrieve data to create the MeasureReport in the Measure, repsectively. + +#### ValueSets +Many of the ValueSets used in this IG are from [CPG on FHIR](https://hl7.org/fhir/uv/cpg/) and the [IPS](https://hl7.org/fhir/uv/ips/). There are a number of generated ValueSets based on the user scenarios detailed in this IG. + +There is one exception to that format which is the vaccine libraries, which map the codes between a variety of different systems including SNOMED GPS and WHO ATC in order to allow implementers to search for any vaccine which might be applicable to their user. More details on this approach is provided below. diff --git a/input/pagecontent/decision-logic.md b/input/pagecontent/decision-logic.md new file mode 100644 index 000000000..23be60adc --- /dev/null +++ b/input/pagecontent/decision-logic.md @@ -0,0 +1,21 @@ +This page describes the decision support logic included in the WHO +Digital Adaptation Kit (DAK) for [insert health domain here](link forthcoming). + +The decision-support logic component provides the decision logic and +algorithms, as well as the scheduling of services, in accordance with +WHO guidelines. The decision logic and algorithms in this implementation +guide deconstruct the recommendations within the [insert health domain here] guidelines +and guidance into a machine readable format that clearly labels the +inputs and outputs that would be operationalized in a digital +decision-support system. + +### Decision Support Logic Overview +The table below provides an overview of the decision-support tables and +algorithms for the different business processes in an EIR. The structure +of the decision-support tables is based on an adaptation of the Decision +Model and Notation (DMN™), an industry standard for modelling and +executing decision logic. These decision-support tables detail the +business rules, data inputs and outputs to support EIR business +processes. + +**Overview of decision support tables** diff --git a/input/pagecontent/dependencies.md b/input/pagecontent/dependencies.md new file mode 100644 index 000000000..453a2f92c --- /dev/null +++ b/input/pagecontent/dependencies.md @@ -0,0 +1,19 @@ +The following standards and profiles are referenced in this implementation guide: + +* Integrating the Healthcare Enterprise (IHE): + + * [Audit Trail and Node Authentication (ATNA) Profile](https://profiles.ihe.net/ITI/TF/Volume1/ch-9.html) + + * [Sharing Valuesets and Concept Maps (SVCM) Profile](https://profiles.ihe.net/ITI/SVCM/index.html) + + * [Mobile Care Services Discovery (mCSD) Profile](https://profiles.ihe.net/ITI/mCSD/index.html) + +* The International Patient Summary (IPS): + + * [Health Level 7 (HL7) Fast Healthcare Interoperability Resources (FHIR) IPS Implementation Guide, published by HL7 International - Patient Care Work Group](http://hl7.org/fhir/uv/ips/index.html) + +* World Health Organization (WHO): + + * [WHO International Classification of Diseases 11th Revision (ICD-11)](https://icd.who.int/en) + + * [WHO Family of International Classifications](https://www.who.int/standards/classifications) \ No newline at end of file diff --git a/input/pagecontent/deployment.md b/input/pagecontent/deployment.md new file mode 100644 index 000000000..e69de29bb diff --git a/input/pagecontent/dictionary.md b/input/pagecontent/dictionary.md new file mode 100644 index 000000000..204c2220f --- /dev/null +++ b/input/pagecontent/dictionary.md @@ -0,0 +1,12 @@ +Component 5 in the Digital Adaptation Kit (DAK) for [insert health domain here] +(link forthcoming) outlines the minimum set of data corresponding to different +points of the workflow within the identified business processes. This data set +can be used on any softwaresystem and lists the data elements relevant for +service delivery and executing decision-support logic, as well as for populating +indicators and performance metrics. + +See Web Annex A of the DAK for the complete data dictionary in +spreadsheet form detailing the input options, validation checks and +concept dictionary codes. + + diff --git a/input/pagecontent/downloads.md b/input/pagecontent/downloads.md new file mode 100644 index 000000000..aff16cb0c --- /dev/null +++ b/input/pagecontent/downloads.md @@ -0,0 +1,26 @@ +### Package + +This is the technical package containing the artifacts in this Implementation Guide: + +* [IG Package](package.tgz) + +### Definitions + +In addition to the above, we have provided format-specific _definitions_: + +* [XML](definitions.xml.zip) +* [JSON](definitions.json.zip) +* [TTL](definitions.ttl.zip) + + These files should be the first choice whenever generating any implementation artifacts since they contain all of the rules about what makes these profiles valid. + Implementers will still need to be familiar with the content of the specification and profiles that apply in order to make a conformant implementation. + See the overview on [validating FHIR profiles and resources](http://hl7.org/fhir/validation.html) for more information about validating profiles and how to use these artifacts. + + +### Examples + + All examples used in this Implementation Guide: + +* [XML](examples.xml.zip) +* [JSON](examples.json.zip) +* [TTL](examples.ttl.zip) diff --git a/input/pagecontent/feedback.md b/input/pagecontent/feedback.md new file mode 100644 index 000000000..0b2f770d9 --- /dev/null +++ b/input/pagecontent/feedback.md @@ -0,0 +1,10 @@ + +

+ Feedback specific to this specification can provided through: +

+ + diff --git a/input/pagecontent/functional-requirements.md b/input/pagecontent/functional-requirements.md new file mode 100644 index 000000000..58de75605 --- /dev/null +++ b/input/pagecontent/functional-requirements.md @@ -0,0 +1,7 @@ +Functional requirements describe the capabilities the system must have in order to meet the end-users’ needs and achieve tasks within the business process. + +These requirements are taken from Component 8 and Web Annex D of the WHO Digital Adaptation Kit for [insert health domain here] (link forthcoming). + +Please note that these are not exhaustive lists and should be modified according to context and user persona needs + +{% include fragment-functionalrequirements.liquid %} diff --git a/input/pagecontent/index-dak.md b/input/pagecontent/index-dak.md new file mode 100644 index 000000000..dbc9fee89 --- /dev/null +++ b/input/pagecontent/index-dak.md @@ -0,0 +1,59 @@ + +
+

This DAK and set of implementation tools are still undergoing development.

+

Content is for demonstration purposes only.

+
{:.stu-note} + + +### Summary +This WHO [insert health domain here] DAK add content here + +### L1 Narrative guidelines +[insert content here] + +### L2 Operational guidelines +The L2 [insert health domain here] Digital adaptation kit publications and implementations tools can be found here: + + +- [Published DAK Document]() + +- [Link to core data dictionary]() + +- [Link to decision support logic]() + +- [Link to scheduling logic]() + +- [Link to indicators table]() + +- [Link to functional and non functional requirements]() + +### L3 Machine readable guidelines +The L3 FHIR Implementation Guide for the [insert health domain here] SMART Guidelines is yet to be published. Links will be published here as soon as they're available. + +### L4 Executable guidelines +Reference implementations representing the L4 layer for the [insert health domain here] SMART Guidelines are not yet available. Links will be published here as soon as they're available. + +### L5 Dynamic guidelines +Content representing the L5 layer for the [insert health domain here] SMART Guidelines are not yet available. Links will be published here as soon as they're available. + +### News + +### Contact Us +

Please let us know about your experience in using the DAK and questions you may have by contacting us at SMART@who.int

+ +### License +This work is licensed under a +[Creative Commons Attribution-NonCommercial-ShareAlike 3.0 IGO License][cc-by]. + +[![CC BY 3.0][cc-by-image]][cc-by] + +[cc-by]: http://creativecommons.org/licenses/by-nc-sa/3.0/igo/ +[cc-by-image]: https://i.creativecommons.org/l/by-nc-sa/3.0/igo/88x31.png +[cc-by-shield]: https://img.shields.io/badge/License-CC%20BY%203.0-lightgrey.svg + +### Providing Feedback +{% include feedback.md %} + + +### 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/index-ig.md b/input/pagecontent/index-ig.md new file mode 100644 index 000000000..d0e4e5fea --- /dev/null +++ b/input/pagecontent/index-ig.md @@ -0,0 +1,47 @@ +This WHO [insert health domain here] Implementation Guide details how to use Health Level 7 (HL7) Fast Healthcare Interoperability Resources (FHIR) for consistent digital representation of [insert health domain here] services. + +
+

This implementation guide and set of artifacts are still undergoing development.

+

Content is for demonstration purposes only.

+
{:.stu-note} + + +### Summary +This implementation guide includes a machine-readable representation of WHO guidelines for [insert health domain here], as documented in the WHO Digital Adaptation Kit for [insert health domain here] (link forthcoming) and explicitly encodes computer-interoperable logic, including data models, terminologies, and logic expressions, in a computable language to support implementation of [insert health domain here] use cases by WHO Member States. + +The guide is part of the [WHO SMART Guidelines approach](https://www.who.int/teams/digital-health-and-innovation/smart-guidelines) to support countries to integrate WHO global health and data recommendations into digital systems accurately and consistently. It defines a series of FHIR Resources, Profiles, Extensions, and Terminology based on the WHO [insert health domain here] Digital Adaptation Kit (link forthcoming). + +Supporting guidance, recommendations, resources, and standards are included in the References and Dependencies. + +### About this implementation guide + +This implementation guide is broken into the following levels of [knowledge representation](https://hl7.org/fhir/uv/cpg/documentation-approach-06-01-levels-of-knowledge-representation.html): +- Home - contains references to the guidance, guidelines, policies and recommendations underpinning this implementation guide. +- Business Requirements - contains the requirements for this implementation guide including the definition of key concepts, use cases, and a data dictionary. +- Data Models and Exchange - contains the data models and data exchange protocols with actors and transactions defined. +- Deployment Guidance - contains relevant technical specifications and guidance, testing resources, reference implementation materials, and supporting guidance for adaptation to local contexts. + +This guide is prepared to facilitate digital implementation of WHO [insert health domain here] guidelines by providing FHIR-based computable representations of and implementation guidance for using the key components of the WHO [insert health domain here] digital adaptation kit (DAK): + +* Health Interventions & Recommendations +* Generic Personas +* User Scenarios +* Business Processes & Workflows +* Core Data Elements +* Decision Support Logic +* Indicators & Monitoring +* Functional & Non-functional Requirements + +This guide is a companion to the Digital Adaptation Kit (DAK) and should be used side-by-side with it. Implementers are strongly encouraged to make use of the Digital Adaptation Kit. The focus of this guide is on the explanation and use of the computable artifacts. + +This guide assumes use of the following resources: +* [IPS Patient](http://hl7.org/fhir/uv/ips/StructureDefinition/Patient-uv-ips) +* [CPG ActivityDefinitions](https://hl7.org/fhir/uv/cpg/artifacts.html#activitydefinition-index) + +- For a complete listing of the artifacts defined in this implementation guide, refer to the [Artifact Index](artifacts.html). +- A complete offline copy of this implementation guide can be found on the [Downloads](downloads.html) page. + +- This Implementation Guide makes use of [Clinical Quality Language](https://cql.hl7.org/) for the decision support artifacts including the PlanDefinitions and Measures. They are used to express how a calculation should occur and can be used with a CQL engine in order to process the decision or indicator directly from the applicable FHIR resources. Links to this specification, the FHIR Clinical Practice Guidelines Speciciation, and other helpful resources can be found in the Support dropdown. + +### 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. diff --git a/input/pagecontent/index.md b/input/pagecontent/index.md new file mode 100644 index 000000000..1b5d29181 --- /dev/null +++ b/input/pagecontent/index.md @@ -0,0 +1,5 @@ + +{% include index-dak.md %} + + +{% include index-ig.md %} \ No newline at end of file diff --git a/input/pagecontent/indicators-measures.md b/input/pagecontent/indicators-measures.md new file mode 100644 index 000000000..33e1b6b83 --- /dev/null +++ b/input/pagecontent/indicators-measures.md @@ -0,0 +1,9 @@ +The FHIR Measure is used to describe the indicator in a computable format. These indicators may be aggregated automatically from the digital tracking tool to populate a digital health management information system (HMIS). + +Measures included in this implementation guide are listed in the [Artifact Index - Measures](artifacts.html) + +For the operational descriptions of indicators and references, see the Digital Adaptation Kit (DAK) for [insert health domain here], including Web Annex C of the DAK. Summary indicator content from the DAK is also represented in the Indicators and Performance Metrics page. + + + + diff --git a/input/pagecontent/indicators.md b/input/pagecontent/indicators.md new file mode 100644 index 000000000..53715287c --- /dev/null +++ b/input/pagecontent/indicators.md @@ -0,0 +1,26 @@ +This page includes indicators and performance metrics that would be aggregated from core data elements identified and is extracted from the WHO Digital Adaptation Kit (DAK) for [insert health domain here] (link forthcoming). + +For full operational descriptions of the indicators included and their references, see Web Annex C of the DAK. +For machine-readable representations, see the Indicators and Measures. + +These indicators may be aggregated automatically from the digital tracking tool to populate a digital health management information system (HMIS). + +### Indicator table column descriptions + +| Data Element | Description | +|----|----| +|Indicator code|An identifier for the indicator| +|Indicator name|A short name for the indicator| +|Description|A description about the indicator| +|Numerator definition|The description of numerator used to calculate the indicator.| +|Numerator computation|The calculation or how to derive this numerator. Any specific data elements noted here should align directly with the individual-level Data Element Name.| +|Denominator definition|The dglossescription of denominator used to calculate the indicator.| +|Denominator definition|The description of denominator used to calculate the indicator.| +|Denominator computation|The calculation or how to derive this denominator. Any specific data elements noted here should align directly with the individual-level Data Element Name.| +|Disaggregations|Are there any dis-aggregations that you would like to be able to do in order to conduct the necessary analysis?| +|References|If there are any national or global guidelines (e.g. WHO guidelines) that dictate how and why this indicator should be calculated or reported, it should be noted here. If any guidelines or recommendations change, having a clear reference listed would help in updating or restructuring your data.| +|References|If there are any national or global guidelines (e.g. WHO guidelines) that dictate how and why this indicator should be calculated or reported, it should be noted here. If any guidelines or recommendations change, having a clear reference listed would help in updating or restructuring your data.| +{:.grid} + +### Indicators and performance metrics table +The following indicators are extracted from the DAK for [insert health domain here]. The full indicators and performance metrics table is available in Web Annex C of the DAK. To see linkages to references and full details of the L2 content, please reference the DAK. diff --git a/input/pagecontent/indices.md b/input/pagecontent/indices.md new file mode 100644 index 000000000..e69de29bb diff --git a/input/pagecontent/license.md b/input/pagecontent/license.md new file mode 100644 index 000000000..e0bc84989 --- /dev/null +++ b/input/pagecontent/license.md @@ -0,0 +1,44 @@ +
+ +

SMART Guidelines, including this one, are required to express the license their copyright license.

+

All WHO-authored SMART Guidelines shall be subject to the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 IGO License. This includes all commons and dependencies authored by the WHO and this current guidance.

+ +

SMART Guidelines license details

+ +Creative Commons License + +

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 IGO License.

+ +

Copyright(c) 2022 World Health Organization Some rights reserved.

+ +

+Under the terms of this licence, you may copy, redistribute and adapt the work for noncommercial purposes provided the work +is appropriately cited, as indicated below. In any use of this work, there should be no suggestion that WHO endorses any specific +organizations, products or services. The use of the WHO logo is not permitted. If you adapt the work, then you must license your +work under the same or equivalent Creative Commons licence. If you create a translation of this work, you should add the following +disclaimer along with the suggested citation: "This translation was not created by the World Health Organization (WHO). WHO is not +responsible for the content or accuracy of this translation. The original English edition shall be the binding and authentic edition." +Any mediation relating to disputes arising under the licence shall be conducted in accordance with the mediation rules of the World +Intellectual Property Organization. (http://www.wipo.int/amc/en/mediation/rules/). +

+ +

License details for Software

+ +

Copyright(c) 2022 World Health Organization All rights reserved.

+ +

3-clause BSD license

+

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

+
    +
  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. + +
  3. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
  4. + +
  5. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
  6. +
+

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +

+
diff --git a/input/pagecontent/maps.md b/input/pagecontent/maps.md new file mode 100644 index 000000000..977a7b716 --- /dev/null +++ b/input/pagecontent/maps.md @@ -0,0 +1 @@ +# Mappings \ No newline at end of file diff --git a/input/pagecontent/non-functional-requirements.md b/input/pagecontent/non-functional-requirements.md new file mode 100644 index 000000000..7b923069e --- /dev/null +++ b/input/pagecontent/non-functional-requirements.md @@ -0,0 +1,3 @@ +Non-functional requirements provide the general attributes and features of the digital system to ensure usability and overcome technical and physical constraints. Examples of non-functional requirements include ability to work offline, multiple language settings and password protection. + +Table 17 in the DAK provides non-functional requirements as general characteristics of the overall system. diff --git a/input/pagecontent/personas.md b/input/pagecontent/personas.md new file mode 100644 index 000000000..342c2550a --- /dev/null +++ b/input/pagecontent/personas.md @@ -0,0 +1,17 @@ +This page includes a depiction of end-users and related stakeholders as introduced in the WHO Digital Adaptation Kit for [insert health domain here](link forthcoming). + +The specific roles and demographic profile of the personas will vary depending on the setting, the generic personas are based on the WHO core competencies and credentials of different health worker personas. + + +### Targeted generic personas + +The targeted personas for the [insert health domain here] Digital Adaptation Kit are +health professionals operating in care settings that are able to provide +the required essential interventions for [insert health domain here] delivery. Their +key competences of are defined in the following table. + +**Descriptions of key generic personas** + +{% include fragment-actors.liquid %} + +
\ No newline at end of file diff --git a/input/pagecontent/reference-implementations.md b/input/pagecontent/reference-implementations.md new file mode 100644 index 000000000..cdb601fdb --- /dev/null +++ b/input/pagecontent/reference-implementations.md @@ -0,0 +1,7 @@ +This page includes sample resources that can be leveraged to support the implementation of SMART Guidelines for [insert health domain here]. Content is for demonstration purposes only. + +Additional relevant resources are included in the References and Dependencies. + +### Reference applications + +### Reference architecture diff --git a/input/pagecontent/references.md b/input/pagecontent/references.md new file mode 100644 index 000000000..140434991 --- /dev/null +++ b/input/pagecontent/references.md @@ -0,0 +1,23 @@ +This implementation guide is meant to facilitate operationalization of the World Health Organization (WHO) Digital Adaptation Kit (DAK) for [insert health domain here]. This page includes links to the published DAK for [insert health domain here], as well as a small subset of other references. + +For additional resources, see the Dependencies page, which includes the standards referenced in this implementation guide and the references section in the published DAK for [insert health domain here]. + +### WHO Digital Adaptation Kit (DAK) for [insert health domain here] + +> The Digital Adaptation Kit was published on \[publication date\]: +> +> \[Link to the DAK and accompanying web annexes when available\] + +### WHO guideline development + +- [WHO SMART Guidelines](https://www.who.int/teams/digital-health-and-innovation/smart-guidelines) - provides an overview of the SMART Guidelines approach + +- [WHO Handbook for guideline development](https://www.who.int/publications/i/item/9789241548960)- provides an overview of the WHO guideline development and publication process + +### Tutorials and reference materials for developers +- [References section of the SMART IG starter kit](https://worldhealthorganization.github.io/smart-ig-starter-kit/references.html#2) + +### Additional resources +- [WHO Digital implementation investment guide (DIIG): integrating digital interventions into health programmes](https://www.who.int/publications/i/item/9789240010567) + +- [Open Health Information Exchange (OpenHIE) Specification and Architecture](https://guides.ohie.org/arch-spec/architecture-specification/overview-of-the-architecture) diff --git a/input/pagecontent/scenarios.md b/input/pagecontent/scenarios.md new file mode 100644 index 000000000..44f448f3d --- /dev/null +++ b/input/pagecontent/scenarios.md @@ -0,0 +1,7 @@ +Component 3 in the Digital Adaptation Kit (link forthcoming) includes user scenarios, which are narratives that describe how the different personas may interact with each other. The user scenarios are only illustrative and are intended to give an idea of a typical workflow. + +**How to interpret user scenarios** + +User scenarios can be helpful tools not only to better understand the context in which a digital tool would operate, but also for some insights into what key data elements would need to be recorded and accounted for in the database. Additionally, the context in which the tool would operate, illuminated by the user scenarios, provides insight into some functional and non-functional requirements that the system would also need. + +As examples, the scenarios identify: key data elements that need to be recorded and/or calculated; decision-support logic that can be automated in the system; key functional and non-functional requirements that should be included in the system, and adolescent-specific considerations that should be accounted for. diff --git a/input/pagecontent/security-privacy.md b/input/pagecontent/security-privacy.md new file mode 100644 index 000000000..622f5c04a --- /dev/null +++ b/input/pagecontent/security-privacy.md @@ -0,0 +1,3 @@ +This page will contain security and privacy considerations related to SMART Guidelines for [insert health domain here]. + +For an illustrative, starting set of non-functional requirements, which includes security and privacy-related requirements from the Digital Adaptation Kit for [insert health domain here], see the [Non-functional Requirements](non-functional-requirements.html). \ No newline at end of file diff --git a/input/pagecontent/sequence-diagrams.md b/input/pagecontent/sequence-diagrams.md new file mode 100644 index 000000000..b77380b13 --- /dev/null +++ b/input/pagecontent/sequence-diagrams.md @@ -0,0 +1,3 @@ +# SMART + +Feel free to modify this index page with your own awesome content! \ No newline at end of file diff --git a/input/pagecontent/system-actors.md b/input/pagecontent/system-actors.md new file mode 100644 index 000000000..583f7823e --- /dev/null +++ b/input/pagecontent/system-actors.md @@ -0,0 +1,12 @@ +This page lists and describes the human users and digital services that interact with the system, derived from the business requirements defined at the operational level (L2). For more details about end-users and related stakeholders, see the [Generic Personas](personas.html) and the WHO Digital Adaptation Kit for [insert health domain here](link forthcoming). + +Systems managing clinical and patient information are expected to interact with a shared health record, laboratory information system or a longitudinal health record, as appropriate, and to synchronize with data collected in a clinical encounter. + +For additional actor definitions, see the [Digital Documentation of COVID-19 Certificates (DDCC) Implementation Guide](https://worldhealthorganization.github.io/ddcc/actors.html). Additionally, Integrating the Healthcare Enterprise (IHE) maintains a [repository with common actors](https://profiles.ihe.net/GeneralIntro/ch-A.html) used in IHE profiles. + +### Key generic personas interacting with the system +In the clinical flows, generic personas are represented using profiles of the various entity resources in HL7 FHIR, such as [Patient](http://hl7.org/fhir/patient), [Practitioner](http://hl7.org/fhir/practitioner), [PractitionerRole](http://hl7.org/fhir/practitionerrole), and [RelatedPerson](http://hl7.org/fhir/relatedperson). + + + + diff --git a/input/pagecontent/system-requirements.md b/input/pagecontent/system-requirements.md new file mode 100644 index 000000000..c7dc61666 --- /dev/null +++ b/input/pagecontent/system-requirements.md @@ -0,0 +1,6 @@ +### Functional Requirements +{% include functional-requirements.md %} + + +### Non-functional Requirements +{% include non-functional-requirements.md %} \ No newline at end of file diff --git a/input/pagecontent/test-data.md b/input/pagecontent/test-data.md new file mode 100644 index 000000000..b957ee520 --- /dev/null +++ b/input/pagecontent/test-data.md @@ -0,0 +1,3 @@ +This page will include test data developed for the test scenarios and actors included in this implementation guide. See [Testing](testing.html) for additional testing artifacts. + +The testing artifacts in this implementation guide are not intended to be used to determine formal conformance, nor are they intended to be authoritative or comprehensive. \ No newline at end of file diff --git a/input/pagecontent/testing.md b/input/pagecontent/testing.md new file mode 100644 index 000000000..4dced900d --- /dev/null +++ b/input/pagecontent/testing.md @@ -0,0 +1,43 @@ +--- +--- +{% assign igId = site.data.fhir.igId %} +{% assign resourceKey = "ImplementationGuide/" | append: igId %} +{% assign resource = site.data.resources[resourceKey] %} +{% assign source = resource.source %} + +This page will include testing artifacts for this implementation guide. + +Artifacts will include Gherkin .feature files, with acceptance criteria for each test definition, and with defined test cases for PlanDefinitions and Measures. Example data will be in the form of FHIR shorthand (FSH) files or FHIR Resources, with examples listed under the example tab of the resources. + +See [Test Data](test-data.html) for test data. + +The testing artifacts in this implementation guide are not intended to be used to determine formal conformance, nor are they intended to be authoritative or comprehensive. + + + +### Testing platforms + + +These files allow a quick setup of working servers, for testing of the specification in a known configuration. + +Prerequisites: [Docker](https://www.docker.com) + +#### Questionnaires and StructureMap Transformations + +The matchbox server configuration allows you to test the mappings. For more information: [https://github.com/ahdis/matchbox](https://github.com/ahdis/matchbox) + +How to setup the server: +1. Download the .env file +2. Download the docker compose file +3. From the same folder, run `docker-compose up -d` +4. Navigate to http://localhost: e.g. http://localhost:8087 +5. Follow the instructions there to setup and run the extractions + + +#### Scheduling and Decision Logic, Measures +CQFRuler +1. Download the .env file +2. Download the docker compose file +3. From the same folder, run `docker-compose up -d` +4. Navigate to http://localhost: e.g. http://localhost:8080 +5. Follow the instructions there to setup and run the plan definitions. \ No newline at end of file diff --git a/input/pagecontent/transactions.md b/input/pagecontent/transactions.md new file mode 100644 index 000000000..465f8ae3f --- /dev/null +++ b/input/pagecontent/transactions.md @@ -0,0 +1,3 @@ +This page will describe transactions with trigger events, message semantics, and expected actions, as well as sequence diagrams. + +See the [Digital Documentation of COVID-19 Certificates (DDCC) Transactions](https://worldhealthorganization.github.io/ddcc/transactions.html) for additional transactions that may be relevant. diff --git a/input/pagecontent/trust_domain.md b/input/pagecontent/trust_domain.md new file mode 100644 index 000000000..fb734396f --- /dev/null +++ b/input/pagecontent/trust_domain.md @@ -0,0 +1,8 @@ +### Use Cases +{% include trust_domain_use_cases.md %} + +### Technical Standards +{% include trust_domain_specifications.md %} + +### Policy +{% include trust_domain_policy.md %} diff --git a/input/pagecontent/trust_domain_policy.md b/input/pagecontent/trust_domain_policy.md new file mode 100644 index 000000000..e69de29bb diff --git a/input/pagecontent/trust_domain_specifications.md b/input/pagecontent/trust_domain_specifications.md new file mode 100644 index 000000000..e69de29bb diff --git a/input/pagecontent/trust_domain_use_cases.md b/input/pagecontent/trust_domain_use_cases.md new file mode 100644 index 000000000..e69de29bb diff --git a/input/profiles/.gitignore b/input/profiles/.gitignore new file mode 100644 index 000000000..2c0d4a3d6 --- /dev/null +++ b/input/profiles/.gitignore @@ -0,0 +1 @@ +Empty file to keep the folder structure \ No newline at end of file diff --git a/input/resources/.gitignore b/input/resources/.gitignore new file mode 100644 index 000000000..2c0d4a3d6 --- /dev/null +++ b/input/resources/.gitignore @@ -0,0 +1 @@ +Empty file to keep the folder structure \ No newline at end of file diff --git a/input/scenarios/.gitignore b/input/scenarios/.gitignore new file mode 100644 index 000000000..2c0d4a3d6 --- /dev/null +++ b/input/scenarios/.gitignore @@ -0,0 +1 @@ +Empty file to keep the folder structure \ No newline at end of file diff --git a/input/scheduling-logic/.gitignore b/input/scheduling-logic/.gitignore new file mode 100644 index 000000000..2c0d4a3d6 --- /dev/null +++ b/input/scheduling-logic/.gitignore @@ -0,0 +1 @@ +Empty file to keep the folder structure \ No newline at end of file diff --git a/input/system-requirements/.gitignore b/input/system-requirements/.gitignore new file mode 100644 index 000000000..2c0d4a3d6 --- /dev/null +++ b/input/system-requirements/.gitignore @@ -0,0 +1 @@ +Empty file to keep the folder structure \ No newline at end of file diff --git a/input/testing/.gitignore b/input/testing/.gitignore new file mode 100644 index 000000000..2c0d4a3d6 --- /dev/null +++ b/input/testing/.gitignore @@ -0,0 +1 @@ +Empty file to keep the folder structure \ No newline at end of file diff --git a/input/vocabulary/.gitignore b/input/vocabulary/.gitignore new file mode 100644 index 000000000..2c0d4a3d6 --- /dev/null +++ b/input/vocabulary/.gitignore @@ -0,0 +1 @@ +Empty file to keep the folder structure \ No newline at end of file diff --git a/sushi-config.yaml b/sushi-config.yaml new file mode 100644 index 000000000..018a5dd4a --- /dev/null +++ b/sushi-config.yaml @@ -0,0 +1,260 @@ +id: who.fhir.smart-ig-empty +canonical: http://worldhealthorganization.github.io/smart +name: SMART +title: SMART Empty IG +description: An empty Implementation Guide to be used as a starting point for building SMART Guidelines Implementation Guides +status: draft # draft | active | retired | unknown +version: 0.1.0 +fhirVersion: 4.3.0 # https://www.hl7.org/fhir/valueset-FHIR-version.html +copyrightYear: 2023+ +releaseLabel: ci-build # ci-build | draft | qa-preview | ballot | trial-use | release | update | normative+trial-use +# license: CC0-1.0 # https://www.hl7.org/fhir/valueset-spdx-license.html +# jurisdiction: urn:iso:std:iso:3166#US "United States of America" # https://www.hl7.org/fhir/valueset-jurisdiction.html +publisher: + name: WHO + url: http://who.int + # email: test@example.org + + +meta: + profile: + - SMARTImplementationGuide + +pages: + index.md: + title: Home + changes.md: + title: Changes + dependencies.md: + title: Dependencies + references.md: + title: References + adapting.md: + title: Adapting Guidelines for Country use + license.md: + title: License + business-requirements.md: + title: Business Requirements + concepts.md: + title: Concepts + personas.md: + title: Generic Personas + scenarios.md: + title: User Scenarios + business-processes.md: + title: Business Processes + dictionary.md: + title: Data Dictionary + decision-logic.md: + title: Decision-support logic + indicators.md: + title: Indicator and Performance Metrics + functional-requirements.md: + title: Functional Requirements + non-functional-requirements.md: + title: Non-functional Requirements + data-models-and-exchange.md: + title: Data Models and Exchange + system-actors.md: + title: System Actors + sequence-diagrams.md: + title: Sequence Diagrams + transactions.md: + title: Transactions +# logical-models.md: +# title: Logical Models + indicators-measures.md: + title: Indicators and Measures +# profiles.xml: +# title: Content profiles + codings.md: + title: Codings + deployment.md: + title: Deployment + security-privacy.md: + title: Security and Privacy Considerations + testing.md: + title: Testing + test-data.md: + title: Test Data + reference-implementations.md: + title: Reference Implementations + trust_domain.md: + title: Trust Domains + downloads.md: + title: Downloads + indices.md: + title: Indices + artifacts.html: + title: Artifact Index + maps.md: + title: Mappings + + +menu: + Home: + Summary: index.html + Changes: changes.html + Dependencies: dependencies.html + References: references.html + Adapting Guidelines for Country use: adapting.html + Business Requirements: + Concepts: concepts.html + Generic Personas: personas.html + User Scenarios: scenarios.html + Business Processes: business-processes.html + Data Dictionary: dictionary.html + Decision-support Logic: decision-logic.html + Indicator and Performance Metrics: indicators.html + Functional Requirements: functional-requirements.html + Non-functional Requirements: non-functional-requirements.html + Data Models and Exchange: + System Actors: system-actors.html + Sequence Diagrams: sequence-diagrams.html + Transactions: transactions.html + Indicators and Measures: indicators-measures.html + Codings: codings.html + + Deployment: + Security and Privacy Considerations: security-privacy.html + Testing: testing.html + Test Data: test-data.html + Reference Implementations: reference-implementations.html + Trust Domains: trust_domain.html + Downloads: downloads.html + + Indices: + Artifact Index: artifacts.html + Mappings: maps.html + +# ╭───────────────────────────Less Common Implementation Guide Properties──────────────────────────╮ +# │ Uncomment the properties below to configure additional properties on the ImplementationGuide │ +# │ resource. These properties are less commonly needed than those above. │ +# ╰────────────────────────────────────────────────────────────────────────────────────────────────╯ +# +# Those who need more control or want to add additional details to the contact values can use +# contact directly and follow the format outlined in the ImplementationGuide resource and +# ContactDetail. +# +# contact: +# - name: Bob Smith +# telecom: +# - system: email # phone | fax | email | pager | url | sms | other +# value: bobsmith@example.org +# use: work +# +# +# The global property corresponds to the IG.global property, but it +# uses the type as the YAML key and the profile as its value. Since +# FHIR does not explicitly disallow more than one profile per type, +# neither do we; the value can be a single profile URL or an array +# of profile URLs. If a value is an id or name, SUSHI will replace +# it with the correct canonical when generating the IG JSON. +# +# global: +# Patient: http://example.org/fhir/StructureDefinition/my-patient-profile +# Encounter: http://example.org/fhir/StructureDefinition/my-encounter-profile +# +# +# The resources property corresponds to IG.definition.resource. +# SUSHI can auto-generate all of the resource entries based on +# the FSH definitions and/or information in any user-provided +# JSON or XML resource files. If the generated entries are not +# sufficient or complete, however, the author can add entries +# here. If the reference matches a generated entry, it will +# replace the generated entry. If it doesn't match any generated +# entries, it will be added to the generated entries. The format +# follows IG.definition.resource with the following differences: +# * use IG.definition.resource.reference.reference as the YAML key. +# * if the key is an id or name, SUSHI will replace it with the +# correct URL when generating the IG JSON. +# * specify "omit" to omit a FSH-generated resource from the +# resource list. +# * if the exampleCanonical is an id or name, SUSHI will replace +# it with the correct canonical when generating the IG JSON. +# * groupingId can be used, but top-level groups syntax may be a +# better option (see below). +# The following are simple examples to demonstrate what this might +# look like: +# +# resources: +# Patient/my-example-patient: +# name: My Example Patient +# description: An example Patient +# exampleBoolean: true +# Patient/bad-example: omit +# +# +# Groups can control certain aspects of the IG generation. The IG +# documentation recommends that authors use the default groups that +# are provided by the templating framework, but if authors want to +# use their own instead, they can use the mechanism below. This will +# create IG.definition.grouping entries and associate the individual +# resource entries with the corresponding groupIds. If a resource +# is specified by id or name, SUSHI will replace it with the correct +# URL when generating the IG JSON. +# +# groups: +# GroupA: +# name: Group A +# description: The Alpha Group +# resources: +# - StructureDefinition/animal-patient +# - StructureDefinition/arm-procedure +# GroupB: +# name: Group B +# description: The Beta Group +# resources: +# - StructureDefinition/bark-control +# - StructureDefinition/bee-sting +# +# +# The ImplementationGuide resource defines several other properties +# not represented above. These properties can be used as-is and +# should follow the format defined in ImplementationGuide: +# * date +# * meta +# * implicitRules +# * language +# * text +# * contained +# * extension +# * modifierExtension +# * experimental +# * useContext +# * copyright +# * packageId +# +# +# ╭──────────────────────────────────────────SUSHI flags───────────────────────────────────────────╮ +# │ The flags below configure aspects of how SUSHI processes FSH. │ +# ╰────────────────────────────────────────────────────────────────────────────────────────────────╯ +# The FSHOnly flag indicates if only FSH resources should be exported. +# 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: true +# +# +# The instanceOptions property is used to configure certain aspects of how SUSHI processes instances. +# See the individual option definitions below for more detail. +# +# instanceOptions: +# Determines for which types of Instances SUSHI will automatically set meta.profile +# if InstanceOf references a profile: +# +# setMetaProfile: always # always | never | inline-only | standalone-only +# +# +# Determines for which types of Instances SUSHI will automatically set id +# if InstanceOf references a profile: +# +# setId: always # always | standalone-only +dependencies: + who.base: current