This commit is contained in:
unknown 2025-09-28 12:28:06 +06:00
parent 3c281adb2c
commit 25be57f1dd
5 changed files with 512 additions and 10 deletions

386
_build.new.bat Normal file
View File

@ -0,0 +1,386 @@
@ECHO OFF
setlocal enabledelayedexpansion
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 "upper_path=..\"
SET "scriptdlroot=https://raw.githubusercontent.com/HL7/ig-publisher-scripts/main"
SET "build_bat_url=%scriptdlroot%/_build.bat"
SET "build_sh_url=%scriptdlroot%/_build.sh"
:: Debugging statements to check jar file location
ECHO Checking for publisher.jar in %input_cache_path%
IF EXIST "%input_cache_path%%publisher_jar%" (
SET "jar_location=%input_cache_path%%publisher_jar%"
ECHO Found publisher.jar in input-cache
) ELSE (
ECHO Checking for publisher.jar in %upper_path%
IF EXIST "%upper_path%%publisher_jar%" (
SET "jar_location=%upper_path%%publisher_jar%"
ECHO Found publisher.jar in parent folder
) ELSE (
SET "jar_location=not_found"
SET "default_choice=1"
ECHO publisher.jar not found in input-cache or parent folder
)
)
:: Handle command-line argument to bypass the menu
IF NOT "%~1"=="" (
IF /I "%~1"=="update" SET "userChoice=1"
IF /I "%~1"=="build" SET "userChoice=2"
IF /I "%~1"=="nosushi" SET "userChoice=3"
IF /I "%~1"=="notx" SET "userChoice=4"
IF /I "%~1"=="jekyll" SET "userChoice=5"
IF /I "%~1"=="clean" SET "userChoice=6"
IF /I "%~1"=="exit" SET "userChoice=0"
GOTO executeChoice
)
echo ---------------------------------------------------------------
ECHO Checking internet connection...
PING tx.fhir.org -4 -n 1 -w 4000 >nul 2>&1 && SET "online_status=true" || SET "online_status=false"
IF "%online_status%"=="true" (
ECHO We're online and tx.fhir.org is available.
FOR /F "tokens=2 delims=:" %%a IN ('curl -s https://api.github.com/repos/HL7/fhir-ig-publisher/releases/latest ^| findstr "tag_name"') DO SET "latest_version=%%a"
SET "latest_version=!latest_version:"=!"
SET "latest_version=!latest_version: =!"
SET "latest_version=!latest_version:~0,-1!"
) ELSE (
ECHO We're offline or tx.fhir.org is not available, can only run the publisher without TX...
SET "txoption=-tx n/a"
SET "latest_version=unknown"
SET "default_choice=4"
)
echo ---------------------------------------------------------------
IF NOT "%jar_location%"=="not_found" (
FOR /F "tokens=*" %%i IN ('java "-Dfile.encoding=UTF-8" -jar "%jar_location%" -v 2^>^&1') DO SET "publisher_version=%%i"
SET "publisher_version=!publisher_version:"=!"
ECHO Detected publisher version: !publisher_version!
) ELSE (
SET "publisher_version=unknown"
ECHO publisher.jar location is not found
)
ECHO Publisher version: !publisher_version!; Latest is !latest_version!
IF NOT "%online_status%"=="true" (
ECHO We're offline.
) ELSE (
IF NOT "!publisher_version!"=="!latest_version!" (
ECHO An update is recommended.
SET "default_choice=1"
) ELSE (
ECHO Publisher is up to date.
SET "default_choice=2"
)
)
echo ---------------------------------------------------------------
echo.
echo Please select an option:
echo 1. Download or update publisher
echo 2. Build IG
echo 3. Build IG - no sushi
echo 4. Build IG - force no TX server
echo 5. Jekyll build
echo 6. Clean up temp directories
echo 0. Exit
:: echo [Press Enter for default (%default_choice%) or type an option number:]
echo.
:: Using CHOICE to handle input with timeout
:: ECHO [Enter=Continue, 1-7=Option, 0=Exit]
choice /C 12345670 /N /CS /D %default_choice% /T 5 /M "Choose an option number or wait 5 seconds for default (%default_choice%):"
SET "userChoice=%ERRORLEVEL%"
:executeChoice
echo You selected: %userChoice%
IF "%userChoice%"=="1" GOTO downloadpublisher
IF "%userChoice%"=="2" GOTO publish_once
IF "%userChoice%"=="3" GOTO publish_nosushi
IF "%userChoice%"=="4" GOTO publish_notx
IF "%userChoice%"=="5" GOTO debugjekyll
IF "%userChoice%"=="6" GOTO clean
IF "%userChoice%"=="0" EXIT /B
:end
:debugjekyll
echo Running Jekyll build...
jekyll build -s temp/pages -d output
GOTO end
:clean
echo Cleaning up directories...
if exist ".\input-cache\publisher.jar" (
echo Preserving publisher.jar and removing other files in .\input-cache...
move ".\input-cache\publisher.jar" ".\"
rmdir /s /q ".\input-cache"
mkdir ".\input-cache"
move ".\publisher.jar" ".\input-cache"
) else (
if exist ".\input-cache\" (
rmdir /s /q ".\input-cache"
)
)
if exist ".\temp\" (
rmdir /s /q ".\temp"
echo Removed: .\temp
)
if exist ".\output\" (
rmdir /s /q ".\output"
echo Removed: .\output
)
if exist ".\template\" (
rmdir /s /q ".\template"
echo Removed: .\template
)
GOTO end
:downloadpublisher
ECHO Downloading Publisher...
: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="Download? (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 ~200 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 _build.sh
call POWERSHELL -command if ('System.Net.WebClient' -as [type]) {(new-object System.Net.WebClient).DownloadFile(\"%build_sh_url%\",\"_build.new.sh\") } else { Invoke-WebRequest -Uri "%build_sh_url%" -Outfile "_build.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 "_build.new.sh" "_build.sh" ^&^& del "_build.new.sh" ^&^& exit
:dl_script_2
ECHO Updating _build.bat
call POWERSHELL -command if ('System.Net.WebClient' -as [type]) {(new-object System.Net.WebClient).DownloadFile(\"%build_bat_url%\",\"_build.new.bat\") } else { Invoke-WebRequest -Uri "%build_bat_url%" -Outfile "_build.new.bat" }
if %ERRORLEVEL% == 0 goto upd_script_2
echo "Errors encountered during download: %errorlevel%"
goto end
:upd_script_2
start copy /y "_build.new.bat" "_build.bat" ^&^& del "_build.new.bat" ^&^& exit
GOTO end
:publish_once
SET JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
:: Debugging statements before running publisher
ECHO 1jar_location is: %jar_location%
IF NOT "%jar_location%"=="not_found" (
java %JAVA_OPTS% -jar "%jar_location%" -ig . %txoption% %*
) ELSE (
ECHO IG Publisher NOT FOUND in input-cache or parent folder. Please run _updatePublisher. Aborting...
)
GOTO end
:publish_nosushi
SET JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
:: Debugging statements before running publisher
ECHO 3jar_location is: %jar_location%
IF NOT "%jar_location%"=="not_found" (
java %JAVA_OPTS% -jar "%jar_location%" -ig . %txoption% -no-sushi %*
) ELSE (
ECHO IG Publisher NOT FOUND in input-cache or parent folder. Please run _updatePublisher. Aborting...
)
GOTO end
:publish_notx
SET txoption=-tx n/a
SET JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
:: Debugging statements before running publisher
ECHO 2jar_location is: %jar_location%
IF NOT "%jar_location%"=="not_found" (
java %JAVA_OPTS% -jar "%jar_location%" -ig . %txoption% %*
) ELSE (
ECHO IG Publisher NOT FOUND in input-cache or parent folder. Please run _updatePublisher. Aborting...
)
GOTO end
:publish_continuous
SET JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
:: Debugging statements before running publisher
ECHO Checking %input_cache_path% for publisher.jar
IF EXIST "%input_cache_path%\%publisher_jar%" (
java %JAVA_OPTS% -jar "%input_cache_path%\%publisher_jar%" -ig . %txoption% -watch %*
) ELSE (
ECHO Checking %upper_path% for publisher.jar
IF EXIST "..\%publisher_jar%" (
java %JAVA_OPTS% -jar "..\%publisher_jar%" -ig . %txoption% -watch %*
) ELSE (
ECHO IG Publisher NOT FOUND in input-cache or parent folder. Please run _updatePublisher. Aborting...
)
)
GOTO end
:end
:: Pausing at the end
IF NOT "%skipPrompts%"=="true" (
PAUSE
)

View File

@ -0,0 +1,83 @@
CodeSystem: bd-occupations
Id: bangladesh-occupations-cs
Title: "Bangladesh Occupations"
* ^url = "https://fhir.dghs.gov.bd/core/CodeSystem/bd-occupations"
* #1 "Physical Scientists & Related Technicians" "ভৌত বিজ্ঞানী ও এতদসংক্রান্ত টেকনিশিয়ান"
* #2 "Engineering and Architects" "ইঞ্জিয়ারিং ও স্থপতি "
* #3 "Engineering and Architect-related Technicians" "ইঞ্জিয়ারিং ও স্থপতি সম্পর্কিত টেকনিশিয়ান "
* #4 "Officers of Aircraft and Ship" "বিমান ও জাহাজের কর্মকর্তা "
* #5 "Biologists and Related Technicians" "জীববিজ্ঞানী ও এতদসংক্রান্ত টেকনিশিয়ান "
* #6 "Physicians, Dentists, and Veterinarians" "চিকিৎসক, দন্ত চিকিৎসক ও পশু চিকিৎসক "
* #7 "Nurses and Other Medical Staffs" "নার্স ও চিকিৎসক সংক্রান্ত অন্যান্য কর্মী "
* #8 "Statisticians, Mathematicians, System Analysts, and Related Staff" "পরিসংখ্যানবিদ, গণিতবিদ, সিস্টেম এনালিস্ট ও এতদসংক্রান্ত কর্মী "
* #9 "Economists" "অর্থনীতিবিদ"
* #10 "Accountants" "হিসাবরক্ষক"
* #12 "Judges" "বিচারক"
* #13 "Teachers" "শিক্ষক"
* #14 "Religious Workers" "ধর্মীয় কর্মী"
* #15 "Writers, Journalists, and Related Staffs" "লেখক, সাংবাদিক ও এতদসম্পর্কিত কর্মী "
* #16 "Painters, Photographers, and Other Creative Artists" "চিত্রশিল্পী, ফটোগ্রাফার ও এতদসংক্রান্ত সৃজনশীল শিল্পী "
* #17 "Actors, Singers, and Dancers" "অভিনয়, কণ্ঠশিল্পী ও নৃত্যশিল্পী "
* #18 "Sportspersons and Related Staffs" "খেলোয়াড় এবং এতদসম্পর্কিত কর্মী "
* #19 "Professional, Technical, and Other Related Workers (not elsewhere classified)" "পেশাগত, কারিগরি ও অন্যান্য অশ্রেণীভুক্ত এতদসম্পর্কিত কর্মী "
* #20 "Lawyers" "আইনজীবী"
* #21 "Managers" "ম্যানেজার"
* #30 "Government Executive Officers" "সরকারি নির্বাহী কর্মকর্তা "
* #31 "Clerks" "করণিক (কেরানী)"
* #32 "Typists, Stenographers and Computer Operators" "টাইপিস্ট/স্টেনোগ্রাফার/কম্পিউটার অপারেটর"
* #33 "Record Keepers, Cahiers and Related Staffs" "রেকর্ড কিপার, ক্যাশিয়ার ও এতদসম্পর্কিত কর্মী"
* #34 "Computer Professionals and Associate Staffs" "কম্পিউটার সম্পর্কিত কর্মী "
* #35 "Transport and Communication Supervisors" "যানবাহন ও যোগাযোগ তত্ত্বাবধায়ক "
* #36 "Drivers and Conductors (Mechanical and Manual)" "গাড়িচালক ও কন্টাক্টর (যান্ত্রিক ও কায়িক) "
* #37 "Mail Carriers / Postmen" "চিঠিপত্র বিলি (ডাক পিয়ন) "
* #38 "Telephone and Telegraph Operators" "টেলিফোন ও টেলিগ্রাফ অপারেটর"
* #39 "Clerical Work, Not Elsewhere Classified" "অশ্রেণীভুক্ত দাপ্তরিক কাজ "
* #40 "Managers in Wholesale and Retail Trade" "ম্যানেজার (পাইকারি ও খুচরা ব্যাবসা) "
* #42 "Sales Supervisors" "বিক্রয় তত্ত্বাবধায়ক"
* #43 "Travel Attendants and Related Workers" "ভ্রমণ সংক্রান্ত কাজে নিয়োজিত কর্মী "
* #44 "Salespersons in Insurance, Real Estate, Business, and Related Services" "বীমা, রিয়েল এস্টেট, ব্যাবসা এবং এতদসংক্রান্ত সেবা বিক্রেতা "
* #45 "Street and Market Salespersons" "ফেরিওয়ালা "
* #46 "Sales Workers, Not Elsewhere Classified" "অশ্রেণীভুক্ত বিক্রয়কর্মী "
* #50 "Hotel and Lodging Managers" "আবাসিক হোটেল ম্যানেজার "
* #51 "Hotel Proprietors" "হোটেল মালিক "
* #52 "Residential Hotel Supervisors" "আবাসিক হোটেল তত্ত্বাবধায়ক"
* #53 "Cooks, Waiters, and Related Hotel Workers" "বাবুর্চি, হোটেল বয় ও এতদসম্পর্কিত কর্মী "
* #54 "Unclassified Housemaids" "অশ্রেণীভুক্ত গৃহ পরিচারিকা "
* #55 "Caretakers, Janitors, and Related Domestic Workers" "বাড়ির কেয়ারটেকার, ঝাড়ুদার ও এতদসম্পর্কিত কর্মী "
* #56 "Laundry Workers" "ধোপা "
* #58 "Security Guards" "নিরাপত্তা কর্মী "
* #59 "Unclassified Service Workers" "অশ্রেণীভুক্ত সেবা কর্মী "
* #60 "Agricultural Farm Managers and Supervisors" "কৃষিখামার ব্যবস্থাপক ও তত্ত্বাবধায়ক "
* #61 "Crop and Livestock Farmers" "কৃষিকাজ "
* #63 "Forestry Workers" "বন কর্মী "
* #64 "Fishers, Hunters, and Related Workers" "জেলে, শিকারি ও এতদসম্পর্কিত কর্মী "
* #70 "Production Supervisors and Foremen" "উৎপাদন তত্ত্বাবধায়ক ও ফোরম্যান "
* #71 "Miners and Quarry Workers" "খননকর্মী ও খননকারী "
* #72 "Metal Processing and Finishing Workers" "ধাতু প্রক্রিয়াকারী "
* #74 "Chemical Products Processing Workers" "রাসায়নিক দ্রব্য প্রক্রিয়াকারী "
* #75 "Weavers, Knitters, Dyers, and Related Textile Workers" "তাঁতী, কাপড় বোনা ও রং করা "
* #76 "Tanners and Leather Processing Workers" "চামড়া প্রক্রিয়াকারী "
* #77 "Food and Beverage Processing Plant Operators" "খাদ্য ও পানীয় প্রক্রিয়াকারী "
* #78 "Tobacco Preparers and Tobacco Processing Workers" "তামাক প্রক্রিয়াকারী "
* #79 "Tailors, Dressmakers, and Sewing Workers" "দর্জি ও অন্যান্য সেলাই কর্মী "
* #80 "Footwear and Leather Goods Makers" "জুতা ও চামড়াজাত দ্রব্য প্রস্তুতকারী "
* #81 "Carpenters" "কাঠমিস্ত্রি "
* #82 "Stone Cutters and Processing Workers" "পাথর কাটা ও প্রক্রিয়াকারী "
* #83 "Blacksmiths, Toolmakers, and Related Trades Workers" "কর্মকার, ঢালাইকর্মী ও যন্ত্রাংশ প্রস্তুতকারী "
* #84 "Non-Electrical Machine Operators" "বৈদ্যুতিক ব্যতীত অন্যান্য মেশিনকর্মী "
* #85 "Electricians" "বৈদ্যুতিক কর্মী"
* #86 "Broadcasting and Audio-Visual Technicians" "শব্দ প্রচার কর্মী ও চলচ্চিত্র প্রদর্শনকারী "
* #87 "Water and Sewerage Construction Workers and Welders" "পানি ও পয়োঃ নিষ্কাশন কাঠামো নির্মাণকারী ও ধাতু ঝালাইকারী "
* #88 "Jewellery and Precious Metal Workers" "স্বর্ণকার "
* #89 "Glass, Pottery, and Related Trades Workers" "গ্লাস ও মাটির জিনিস প্রস্তুতকারী "
* #90 "Rubber and Plastic Products Makers" "রাবার ও প্লাস্টিক দ্রব্য প্রস্তুতকারী"
* #91 "Paper and Paperboard Products Workers" "কাগজ ও কাগজের বোর্ড প্রস্তুতকারী "
* #92 "Printers and Related Workers" "মুদ্রণকাজ"
ValueSet: bd-occupations
Id: bd-occupations-vs
Title: "Bangladesh Occupations ValueSet"
Description: "Occupations value set according to CCDS guideline"
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-occupations"
* include codes from system https://fhir.dghs.gov.bd/core/CodeSystem/bd-occupations

View File

@ -0,0 +1,20 @@
//codeSystems/bd-regions.fsh
CodeSystem: bd-religions
Id: bangladesh-religions-cs
Title: "Bangladesh Religions"
* ^url = "https://fhir.dghs.gov.bd/core/CodeSystem/bd-religions"
* #1 "Islam" "Muslim"
* #2 "Hinduism" "Hindu"
* #3 "Buddhism" "Buddhist"
* #4 "Christianity" "Christian"
* #8 "Refuse to disclose" "Patient declined to state religion"
* #9 "Not a believer" "Identifies as not having a religion"
* #0 "Other (specify)" "Other religion (to be specified in free text)"
ValueSet: bd-religions
Id: bd-religions-vs
Title: "Bangladesh Religions ValueSet"
Description: "Religions value set according to CCDS guideline"
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-religions"
* include codes from system https://fhir.dghs.gov.bd/core/CodeSystem/bd-religions

View File

@ -0,0 +1,11 @@
Extension: occupation
Description: "Occupation"
Id: occupation-bd
Title: "Bangladesh Occupations"
Context: Patient
// occupation using standard HL7 extension
* value[x] only string
* value[x] from https://fhir.dghs.gov.bd/core/ValueSet/bd-occupations (required)

View File

@ -1,12 +1,14 @@
Extension: ReligionBD // Extension: religion
Description: "Example Religion" // Description: "Bangladesh Religions"
Id: religion-bd // Id: religion-bd
Title: "Religion Extension"
Context: Patient // Title: "Religion Extension"
// Context: Patient
// Religion using standard HL7 extension // // Religion using standard HL7 extension
* extension contains http://hl7.org/fhir/StructureDefinition/patient-religion named religion 0..1 // * extension contains http://hl7.org/fhir/StructureDefinition/patient-religion named religion 0..1
* extension[religion] ^short = "ধর্ম (Religion)" // * extension[religion] ^short = "ধর্ম (Religion)"
* extension[religion] ^definition = "The patient's religious affiliation." // * extension[religion] ^definition = "The patient's religious affiliation."
* extension[religion].valueCodeableConcept from http://hl7.org/fhir/ValueSet/religious-affiliation // * extension[religion].valueCodeableConcept from https://fhir.dghs.gov.bd/core/ValueSet/bd-religions (required)
// * ^url = "https://fhir.dghs.gov.bd/core/StructureDefinition/occupation"