87 Commits

Author SHA1 Message Date
4813f63da5 #
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 5m55s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 9s
2026-03-08 13:12:35 +06:00
04ef3b0b55 #
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 5m43s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 8s
2026-03-08 05:03:04 +06:00
25f0017595 #
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 6m5s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 9s
2026-03-08 04:48:06 +06:00
a5e39b94d3 #
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 5m43s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 10s
2026-03-08 00:08:16 +06:00
9968c28e5c #
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 6m37s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 10s
2026-03-07 23:51:13 +06:00
7125b57aa2 #
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 6m34s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 10s
2026-03-07 23:31:52 +06:00
958eba6c44 #
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 6m42s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 10s
2026-03-07 22:44:54 +06:00
fcb5002641 #
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 10m21s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 10s
2026-03-07 22:20:07 +06:00
b7c824b34a #
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 5m52s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 8s
2026-03-07 22:08:18 +06:00
e8cf5ab9be #
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 6m59s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 9s
2026-03-07 21:54:05 +06:00
c35bc8e8a4 #
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 6m33s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 21:42:57 +06:00
c2e7119335 #
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 3m49s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 21:32:34 +06:00
c6903044aa #
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 1m44s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 21:05:46 +06:00
aca893377c #
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 3m22s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 20:56:36 +06:00
ccf6fef643 #
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 1m24s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 20:53:06 +06:00
c80f2f3a40 #
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 46s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 20:48:42 +06:00
804a7ff3d6 #
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 2m7s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 20:40:50 +06:00
db2f074cbe #
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 3m52s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 20:22:12 +06:00
7731328402 #
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 10m54s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 8s
2026-03-07 20:02:55 +06:00
a5d41e88de #
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 9m5s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 8s
2026-03-07 19:36:05 +06:00
5ca0ffdd86 #
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 6m14s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 8s
2026-03-07 19:28:52 +06:00
d82e428e24 #
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 6m8s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 8s
2026-03-07 18:57:46 +06:00
dc43651043 # 2026-03-07 18:45:16 +06:00
2fc782a082 #
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 4m46s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 18:30:22 +06:00
2db03cd2cc #
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 9s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 18:29:27 +06:00
323abf04dc #
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 5s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 18:28:13 +06:00
e3de38a794 #
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 4m47s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 18:04:46 +06:00
9ed33227d3 #
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 5m47s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 8s
2026-03-07 17:47:51 +06:00
8ddb62ab26 #
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 5m50s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 8s
2026-03-07 17:30:52 +06:00
c2be28e714 #
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 4m13s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 17:16:58 +06:00
dee47229d7 #
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 5m54s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 8s
2026-03-07 17:01:01 +06:00
a60c2c6c21 #
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 5m51s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 8s
2026-03-07 16:42:54 +06:00
b759890259 #
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 4m49s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 16:28:14 +06:00
c9cf4c5157 #
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 4m48s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 15:41:05 +06:00
45505bd4b8 #
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 4m47s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 15:20:14 +06:00
3e1f6979b5 #
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 5m44s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 8s
2026-03-07 13:57:53 +06:00
c39615ff85 #
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 5m55s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 8s
2026-03-07 13:49:26 +06:00
06d3a6ef13 #
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 4m50s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 13:41:30 +06:00
8c8b8f032c #
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 4m53s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 13:32:02 +06:00
4d24e3f30c modified history template
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 5m38s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 8s
2026-03-07 05:40:28 +06:00
57aba6ddc6 modified history template and workflow
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 5m36s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 8s
2026-03-07 05:32:12 +06:00
665ba07e37 modified history template
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 5m41s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 8s
2026-03-07 05:20:59 +06:00
18f71a6a04 updated history template
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 5m40s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 8s
2026-03-07 04:58:21 +06:00
83ad838fc4 removed js from template
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 6m40s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 9s
2026-03-07 04:42:27 +06:00
63ca3fa44f updated template javascript
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 4m45s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 04:25:27 +06:00
fdca2f9c3b fixed template javascript
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 4m42s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 04:08:55 +06:00
3b48bd79e2 updated template
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 6m30s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 9s
2026-03-07 03:49:23 +06:00
b620db17d5 updated workflow
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 6m35s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 9s
2026-03-07 03:30:16 +06:00
f2201f4da8 updated history template
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 6m36s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 9s
2026-03-07 03:09:35 +06:00
b3cf356b32 modified history template
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 6m49s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 9s
2026-03-07 02:53:09 +06:00
7cb360b1d2 added history template
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 5m38s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 02:40:13 +06:00
6beb9318fe fixed workflow
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 5m34s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 02:20:58 +06:00
423d1c271f modified workflow
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Has been cancelled
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been cancelled
2026-03-07 02:12:12 +06:00
53190dddd6 removed cleanup workflow
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 29s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 01:58:35 +06:00
5205c06bab modified cleanup workflow
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 28s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 01:46:27 +06:00
b89620b4ed Added cleanup workflow
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 29s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 01:40:48 +06:00
c195390fe7 fixed ci/cd workflow to save disk space
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 29s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 01:33:29 +06:00
e6cb213212 fixed ci workflow to save disk space
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 40s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 01:30:57 +06:00
0bce070ae2 fixed workflow to save disk space
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 29s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 01:28:06 +06:00
9bf4b2d457 modified workflow to save disk space
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 5s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 01:23:26 +06:00
68c748b06e Add debugging to workflow and bump to 0.2.5
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 29s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
2026-03-07 01:06:10 +06:00
2b2ec21c24 Add debugging to workflow and bump to 0.2.4
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 5m59s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 10s
2026-03-07 00:17:09 +06:00
80c870f8a0 Added ICD11 codesystem
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 6m7s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 10s
2026-03-07 00:00:54 +06:00
5da54fa665 Prepare for 0.2.2 release with complete version history extended
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 6m3s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 10s
2026-03-06 23:27:59 +06:00
39717d3c1d Prepare for 0.2.2 release with complete version history
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 6m14s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 10s
2026-03-06 23:10:01 +06:00
jobayer
777f2b3a0d chore: update version to 0.2.1
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 8m31s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 11s
2025-12-22 15:56:22 +06:00
jobayer
791dda3931 ci: enhance pipeline with pre-build package-list.json update
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 4s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped
Move package-list.json update to occur before the build step for release builds,
allowing IG Publisher to generate history.html correctly. Adjust post-build steps
to only update package-feed.xml, and add verification for history.html generation
and deployment. This ensures registry files are prepared earlier in the process.
2025-12-22 15:41:41 +06:00
jobayer
205f3e58a1 -
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 6m33s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 9s
2025-12-22 15:28:57 +06:00
jobayer
c5e0a7d039 ci: enhance deployment with file cleanup and forced container recreation
All checks were successful
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 6m25s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Successful in 9s
2025-12-22 13:38:59 +06:00
jobayer
3297b88035 ci: enhance pipeline with version persistence and direct deployment
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Successful in 6m58s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Failing after 8s
- Add version extraction from IG and tag validation for releases
- Update package-list.json and package-feed.xml automatically on releases
- Replace Docker-based deployment with direct file upload via SCP/SSH
- Add publication request configuration for FHIR registry
- Remove obsolete Dockerfile.serve as deployment strategy changed
2025-12-22 12:58:59 +06:00
18c7029f91 fixed reverted back the download page
All checks were successful
FHIR IG CI/CD Pipeline / build-ig (push) Successful in 6m46s
FHIR IG CI/CD Pipeline / deploy (push) Successful in 6s
2025-10-06 15:44:18 +00:00
0b3ed58124 Added SHR Dashboard and SHR Info
All checks were successful
FHIR IG CI/CD Pipeline / build-ig (push) Successful in 6m26s
FHIR IG CI/CD Pipeline / deploy (push) Successful in 11s
2025-10-05 12:15:01 +06:00
ea9714686d fixed codesystem warnings
All checks were successful
FHIR IG CI/CD Pipeline / build-ig (push) Successful in 15m34s
FHIR IG CI/CD Pipeline / deploy (push) Successful in 11s
2025-10-03 13:03:07 +00:00
96c7f1038e fixed canonical url and id mismatches
All checks were successful
FHIR IG CI/CD Pipeline / build-ig (push) Successful in 6m28s
FHIR IG CI/CD Pipeline / deploy (push) Successful in 12s
2025-10-03 12:35:18 +00:00
debd34938f changed package name and canonical url
All checks were successful
FHIR IG CI/CD Pipeline / build-ig (push) Successful in 6m8s
FHIR IG CI/CD Pipeline / deploy (push) Successful in 11s
2025-10-03 09:42:42 +00:00
6f9ef8f32c #
All checks were successful
FHIR IG CI/CD Pipeline / build-ig (push) Successful in 42m0s
FHIR IG CI/CD Pipeline / deploy (push) Successful in 12s
2025-10-03 08:25:05 +00:00
9f903f8971 #
All checks were successful
FHIR IG CI/CD Pipeline / build-ig (push) Successful in 37m9s
FHIR IG CI/CD Pipeline / deploy (push) Successful in 11s
2025-10-02 17:29:54 +00:00
e96406dd66 Prepare v0.2.0 release: Fixed package name canonical url
All checks were successful
FHIR IG CI/CD Pipeline / build-ig (push) Successful in 7m26s
FHIR IG CI/CD Pipeline / deploy (push) Successful in 11s
2025-10-02 11:51:37 +00:00
7c70cbd667 Prepare v0.2.0 release: Fixed package name canonical url
All checks were successful
FHIR IG CI/CD Pipeline / build-ig (push) Successful in 6m52s
FHIR IG CI/CD Pipeline / deploy (push) Successful in 10s
2025-10-02 10:51:40 +00:00
441ba94e45 Prepare v0.2.0 release: Fixed ig.ini
All checks were successful
FHIR IG CI/CD Pipeline / build-ig (push) Successful in 7m1s
FHIR IG CI/CD Pipeline / deploy (push) Successful in 11s
2025-10-02 10:36:26 +00:00
56353fb6f0 Prepare v0.2.0 release: Fixed ig.ini
All checks were successful
FHIR IG CI/CD Pipeline / build-ig (push) Successful in 16m6s
FHIR IG CI/CD Pipeline / deploy (push) Successful in 10s
2025-10-02 10:16:38 +00:00
7bfa246e8e Prepare v0.2.0 release: Fixed package-list.json
All checks were successful
FHIR IG CI/CD Pipeline / build-ig (push) Successful in 6m53s
FHIR IG CI/CD Pipeline / deploy (push) Successful in 11s
2025-10-02 08:26:26 +00:00
575386df1b Update package-feed.xml
Some checks failed
FHIR IG CI/CD Pipeline / build-ig (push) Successful in 6m55s
FHIR IG CI/CD Pipeline / deploy (push) Has been cancelled
2025-10-02 14:19:51 +06:00
96448cd6f6 Update package-feed.xml
All checks were successful
FHIR IG CI/CD Pipeline / build-ig (push) Successful in 6m54s
FHIR IG CI/CD Pipeline / deploy (push) Successful in 11s
2025-10-02 13:59:19 +06:00
1c19dd476c Prepare v0.2.0 release: Fixed package-list.json and added package-feed.xml
All checks were successful
FHIR IG CI/CD Pipeline / build-ig (push) Successful in 7m3s
FHIR IG CI/CD Pipeline / deploy (push) Successful in 10s
2025-10-02 07:33:33 +00:00
334dc16c70 Update CHANGELOG.md
All checks were successful
FHIR IG CI/CD Pipeline / build-ig (push) Successful in 7m7s
FHIR IG CI/CD Pipeline / deploy (push) Successful in 11s
2025-10-02 11:56:50 +06:00
41ba52b5e8 Prepare v0.2.0 release: initial draft
All checks were successful
FHIR IG CI/CD Pipeline / build-ig (push) Successful in 7m4s
FHIR IG CI/CD Pipeline / deploy (push) Successful in 11s
2025-10-02 05:45:11 +00:00
41 changed files with 1041 additions and 450 deletions

View File

@@ -1,24 +1,315 @@
name: FHIR IG CI/CD Pipeline
name: FHIR IG CI/CD Pipeline with Version Persistence
on:
push:
branches: [ main, develop ]
tags:
- 'v*.*.*'
pull_request:
branches: [ main ]
env:
REGISTRY: git.dghs.gov.bd # Replace with your Gitea instance
IMAGE_NAME: gitadmin/bd-core-fhir-ig # Replace with your image name
REGISTRY: git.dghs.gov.bd
IMAGE_NAME: gitadmin/bd-core-fhir-ig
jobs:
build-ig:
runs-on: ubuntu-latest
runs-on: fhir-runner
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0 # Full history for proper IG building
fetch-depth: 0
- name: Extract version from IG
id: version
run: |
VERSION=$(grep -oP '<version value="\K[^"]+' input/bd.fhir.core.xml | head -1)
if [ -z "$VERSION" ]; then
echo "ERROR: Could not extract version from ImplementationGuide XML"
exit 1
fi
echo "Extracted version: $VERSION"
echo "version=$VERSION" >> $GITHUB_OUTPUT
if [[ "$GITHUB_REF" == refs/tags/v* ]]; then
BUILD_TYPE="release"
TAG_VERSION="${GITHUB_REF#refs/tags/v}"
if [ "$TAG_VERSION" != "$VERSION" ]; then
echo "ERROR: Git tag version ($TAG_VERSION) doesn't match IG version ($VERSION)"
exit 1
fi
else
BUILD_TYPE="dev"
fi
echo "build_type=$BUILD_TYPE" >> $GITHUB_OUTPUT
echo "Build type: $BUILD_TYPE"
- name: Prepare package-list.json and history.xml for IG Publisher
run: |
VERSION="${{ steps.version.outputs.version }}"
BUILD_TYPE="${{ steps.version.outputs.build_type }}"
DATE=$(date +%Y-%m-%d)
export VERSION DATE BUILD_TYPE
echo "📋 Preparing package-list.json and history.xml for IG Publisher..."
if [ ! -f "package-list.json" ]; then
echo "⚠️ package-list.json not found in repo root"
echo "Creating initial package-list.json..."
cat > package-list.json << 'PKGEOF'
{
"package-id": "bd.fhir.core",
"title": "Bangladesh Core FHIR Implementation Guide",
"canonical": "https://fhir.dghs.gov.bd/core",
"introduction": "The Bangladesh Core FHIR IG defines national base profiles, value sets, and extensions for health data interoperability.",
"list": [
{
"version": "current",
"desc": "Continuous Integration Build (latest in version control)",
"path": "https://fhir.dghs.gov.bd/core/",
"status": "ci-build",
"current": true
}
]
}
PKGEOF
fi
python3 << 'PYEOF'
import json
import os
import sys
version = os.environ.get('VERSION', '')
date = os.environ.get('DATE', '')
build_type = os.environ.get('BUILD_TYPE', '')
with open('package-list.json', 'r', encoding='utf-8') as f:
pkg_list = json.load(f)
if 'list' not in pkg_list or not isinstance(pkg_list['list'], list):
print("ERROR: package-list.json does not contain a valid 'list' array")
sys.exit(1)
current_entries = [e for e in pkg_list['list'] if e.get('version') == 'current']
if not current_entries:
pkg_list['list'].insert(0, {
"version": "current",
"desc": "Continuous Integration Build (latest in version control)",
"path": "https://fhir.dghs.gov.bd/core/",
"status": "ci-build",
"current": True
})
if build_type == 'release':
version_entry = None
for e in pkg_list['list']:
if e.get('version') == version:
version_entry = e
break
if version_entry is None:
new_entry = {
"version": version,
"date": date,
"desc": f"Release {version}",
"path": f"https://fhir.dghs.gov.bd/core/{version}/",
"status": "trial-use",
"sequence": "STU 1"
}
insert_index = 1
for i, entry in enumerate(pkg_list['list']):
if entry.get('version') == 'current':
insert_index = i + 1
break
pkg_list['list'].insert(insert_index, new_entry)
print(f"✅ Added version {version} to package-list.json")
else:
print(f" Version {version} already exists in package-list.json")
else:
print(" Dev build - using existing package-list.json without release modification")
with open('package-list.json', 'w', encoding='utf-8') as f:
json.dump(pkg_list, f, indent=2, ensure_ascii=False)
PYEOF
echo "🔍 Validating package-list.json..."
python3 -m json.tool package-list.json > /dev/null && echo "✅ Valid JSON" || (echo "❌ Invalid JSON!" && exit 1)
echo "📂 Ensuring package-list.json is in required locations..."
mkdir -p input
cp package-list.json input/package-list.json
echo "📝 Generating static history.xml from package-list.json..."
mkdir -p input/pagecontent
python3 << 'PYEOF'
import json
import os
from html import escape
os.makedirs('input/pagecontent', exist_ok=True)
with open('package-list.json', 'r', encoding='utf-8') as f:
pkg_list = json.load(f)
xml = '''<?xml version="1.0" encoding="UTF-8"?>
<div xmlns="http://www.w3.org/1999/xhtml">
<p>This page provides the version history for the Bangladesh Core FHIR Implementation Guide.</p>
<p>For a machine-readable version history see <a href="package-list.json">package-list.json</a>.</p>
<p><b>Published Versions</b></p>
<table class="grid table table-striped table-bordered table-hover">
<thead>
<tr>
<th>Version</th>
<th>Date</th>
<th>Status</th>
<th>Description</th>
</tr>
</thead>
<tbody>
'''
def version_key(v):
try:
return tuple(int(x) for x in v.split('.'))
except:
return (0,)
published = [
e for e in pkg_list['list']
if e.get('version') and e.get('version') != "current"
]
# Sort newest version first
published.sort(
key=lambda e: version_key(e.get("version", "0.0.0")),
reverse=True
)
published_found = False
first_row = True
for entry in published:
published_found = True
version = escape(entry.get('version', 'Unknown'))
date = escape(entry.get('date', 'N/A'))
desc = escape(entry.get('desc', ''))
path = escape(entry.get('path', '#'))
status_val = entry.get('status', 'unknown')
if status_val == "trial-use":
status = '<span class="badge bg-info">Trial Use</span>'
elif status_val == "normative":
status = '<span class="badge bg-success">Normative</span>'
else:
status = f'<span class="badge bg-secondary">{escape(status_val)}</span>'
badge = '<span class="badge bg-success">Latest</span> ' if first_row else ''
xml += f'''
<tr>
<td><a href="{path}">{badge}{version}</a></td>
<td>{date}</td>
<td>{status}</td>
<td>{desc}</td>
</tr>
'''
first_row = False
if not published_found:
xml += '''
<tr>
<td colspan="4">No published versions available yet.</td>
</tr>
'''
xml += '''
</tbody>
</table>
<p class="lead"><b>Continuous Integration Build</b></p>
'''
current_entry = None
for entry in pkg_list['list']:
if entry.get('version') == 'current':
current_entry = entry
break
if current_entry:
path = escape(current_entry.get('path', pkg_list.get('canonical', '') + '/'))
xml += f'''
<p>The latest development build is available at:
<a href="{path}">{path}</a></p>
'''
else:
xml += '''
<p><i>No CI build entry found in package-list.json.</i></p>
'''
xml += '''
</div>
'''
with open('input/pagecontent/history.xml', 'w', encoding='utf-8') as f:
f.write(xml)
print("✅ Generated static history.xml")
print(f" File location: {os.path.abspath('input/pagecontent/history.xml')}")
print(f" File size: {os.path.getsize('input/pagecontent/history.xml')} bytes")
PYEOF
if [ -f "input/pagecontent/history.xml" ]; then
echo "✅ Verified: history.xml exists"
echo " First 20 lines:"
head -20 input/pagecontent/history.xml
else
echo "❌ ERROR: history.xml was not created!"
exit 1
fi
echo "✅ Pre-build preparation complete:"
echo " - Root: $(pwd)/package-list.json"
echo " - Input: $(pwd)/input/package-list.json"
echo " - History: $(pwd)/input/pagecontent/history.xml"
echo "==============================="
echo "PACKAGE LIST USED FOR BUILD:"
cat package-list.json
echo "-------------------------------"
echo "INPUT COPY:"
cat input/package-list.json
echo "==============================="
- name: Emergency Disk Cleanup
run: |
echo "Disk usage before:"
df -h
echo "Clearing tool cache..."
rm -rf /opt/hostedtoolcache/* || true
rm -rf /usr/share/dotnet || true
rm -rf /usr/local/lib/android || true
rm -rf /opt/ghc || true
rm -rf ~/.fhir/packages || true
echo "Disk usage after:"
df -h
- name: Install Docker CLI
run: |
@@ -26,258 +317,312 @@ jobs:
apt-get install -y docker.io
docker --version
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3
with:
install: true
- name: Build FHIR IG (Copy In/Out)
- name: Preload previous IG package for comparison
run: |
echo "Building FHIR IG using copy approach..."
echo "Detecting previous version..."
PREV_VERSION=$(python3 <<'PY'
import json
with open("package-list.json") as f:
data = json.load(f)
versions = [v["version"] for v in data["list"] if v["version"] != "current"]
print(versions[0] if versions else "")
PY
)
if [ -z "$PREV_VERSION" ]; then
echo "No previous version found. Skipping preload."
exit 0
fi
echo "Previous version detected: $PREV_VERSION"
mkdir -p previous-packages
TMPDIR=$(mktemp -d)
URL="https://fhir.dghs.gov.bd/core/$PREV_VERSION/package.tgz"
echo "Downloading $URL"
curl -L "$URL" -o "$TMPDIR/package.tgz"
mkdir -p "previous-packages/bd.fhir.core#$PREV_VERSION"
tar -xzf "$TMPDIR/package.tgz" -C "previous-packages/bd.fhir.core#$PREV_VERSION"
echo "Previous package cached:"
ls previous-packages
- name: Build FHIR IG
run: |
echo "Building FHIR IG version ${{ steps.version.outputs.version }}..."
# Create a container (don't start yet)
CONTAINER_ID=$(docker create \
-v $(pwd)/previous-packages:/previous-packages \
hl7fhir/ig-publisher-base:latest \
/bin/bash -c "cp -r /home/publisher/ig /tmp/build && cd /tmp/build && _updatePublisher.sh -y && _genonce.sh")
/bin/bash -c "
mkdir -p /tmp/build
cp -r /home/publisher/ig /tmp/build/ig
cd /tmp/build/ig
rm -f package-list.json
_updatePublisher.sh -y
_genonce.sh
")
echo "Container ID: $CONTAINER_ID"
# Copy all source files into the container
docker cp $(pwd)/. $CONTAINER_ID:/home/publisher/ig/
# Start and wait for completion
docker start -a $CONTAINER_ID
docker cp "$(pwd)/." "$CONTAINER_ID:/home/publisher/ig/"
echo "Mounted FHIR packages:"
ls -R previous-packages || echo "No previous packages directory"
docker start -a "$CONTAINER_ID"
EXIT_CODE=$?
# Copy outputs back
echo "Copying outputs from container..."
docker cp $CONTAINER_ID:/tmp/build/output ./output || echo "Warning: No output directory"
docker cp $CONTAINER_ID:/tmp/build/fsh-generated ./fsh-generated || echo "No FSH generated files"
docker cp $CONTAINER_ID:/tmp/build/input-cache ./input-cache || echo "No input-cache"
docker cp $CONTAINER_ID:/tmp/build/temp ./temp || echo "No temp directory"
docker cp "$CONTAINER_ID:/tmp/build/ig/output" ./output || echo "Warning: No output directory"
docker cp "$CONTAINER_ID:/tmp/build/ig/fsh-generated" ./fsh-generated || echo "No FSH generated"
docker cp "$CONTAINER_ID:/tmp/build/ig/input-cache" ./input-cache || echo "No input-cache"
docker cp "$CONTAINER_ID:/tmp/build/ig/temp" ./temp || echo "No temp directory"
# Show container logs if failed
if [ $EXIT_CODE -ne 0 ]; then
echo "Build failed, showing container logs:"
docker logs $CONTAINER_ID
echo "Build failed, showing logs:"
docker logs "$CONTAINER_ID"
docker rm "$CONTAINER_ID"
exit 1
fi
# Cleanup
docker rm $CONTAINER_ID
docker rm "$CONTAINER_ID"
# Verify
if [ ! -f "output/index.html" ]; then
echo "ERROR: Build failed - no index.html"
exit 1
fi
echo ""
echo "🔍 Checking for history.html..."
if [ -f "output/history.html" ]; then
echo "✅ history.html generated successfully!"
echo "📄 history.html size: $(ls -lh output/history.html | awk '{print $5}')"
else
echo "⚠️ WARNING: history.html was NOT generated"
echo "This might indicate an issue with the template or history.xml/package-list.json"
fi
echo "================================"
echo "IG Publisher comparison log:"
cat output/qa.compare.txt || echo "qa.compare.txt not found"
echo "================================"
echo "✅ Build successful!"
- name: Verify IG Output
- name: Update package-feed.xml for releases
if: steps.version.outputs.build_type == 'release'
run: |
ls -la output/
if [ ! -f "output/index.html" ]; then
echo "ERROR: IG build failed - no index.html found"
exit 1
fi
echo "IG build successful!"
VERSION="${{ steps.version.outputs.version }}"
DATETIME=$(date -u +%Y-%m-%dT%H:%M:%SZ)
- name: Login to Gitea Container Registry
if: github.ref == 'refs/heads/main'
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ gitea.actor }}
password: ${{ secrets.ACCESS_TOKEN_GITEA }}
cat > update-feed.py << 'EOF'
import sys
import xml.etree.ElementTree as ET
- name: Extract metadata
if: github.ref == 'refs/heads/main'
id: meta
uses: docker/metadata-action@v4
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=ref,event=branch
type=ref,event=pr
type=sha,prefix={{branch}}-
type=raw,value=latest,enable={{is_default_branch}}
version = sys.argv[1]
datetime_iso = sys.argv[2]
- name: Build and push Docker image
if: github.ref == 'refs/heads/main'
uses: docker/build-push-action@v6
ET.register_namespace('', 'http://www.w3.org/2005/Atom')
tree = ET.parse('package-feed.xml')
root = tree.getroot()
ns = {'atom': 'http://www.w3.org/2005/Atom'}
updated_elem = root.find('atom:updated', ns)
if updated_elem is not None:
updated_elem.text = datetime_iso
entry_exists = False
for entry in root.findall('atom:entry', ns):
title = entry.find('atom:title', ns)
if title is not None and version in (title.text or ''):
entry_exists = True
entry_updated = entry.find('atom:updated', ns)
if entry_updated is not None:
entry_updated.text = datetime_iso
break
if not entry_exists:
new_entry = ET.Element('{http://www.w3.org/2005/Atom}entry')
title = ET.SubElement(new_entry, '{http://www.w3.org/2005/Atom}title')
title.text = f"bd.fhir.core version {version}"
link = ET.SubElement(new_entry, '{http://www.w3.org/2005/Atom}link')
link.set('rel', 'alternate')
link.set('href', f"https://fhir.dghs.gov.bd/core/{version}/")
entry_id = ET.SubElement(new_entry, '{http://www.w3.org/2005/Atom}id')
entry_id.text = f"https://fhir.dghs.gov.bd/core/{version}/"
entry_updated = ET.SubElement(new_entry, '{http://www.w3.org/2005/Atom}updated')
entry_updated.text = datetime_iso
summary = ET.SubElement(new_entry, '{http://www.w3.org/2005/Atom}summary')
summary.text = f"Release {version} of Bangladesh Core FHIR Implementation Guide"
insert_pos = 0
for i, child in enumerate(root):
if child.tag.endswith('entry'):
insert_pos = i
break
insert_pos = i + 1
root.insert(insert_pos, new_entry)
tree.write('output/package-feed.xml', encoding='utf-8', xml_declaration=True)
print("✅ Updated package-feed.xml")
EOF
python3 update-feed.py "$VERSION" "$DATETIME"
cp package-list.json output/package-list.json
echo "📋 Updated registry files"
- name: Prepare deployment artifact
run: |
VERSION="${{ steps.version.outputs.version }}"
BUILD_TYPE="${{ steps.version.outputs.build_type }}"
tar -czf ig-output.tar.gz -C output .
echo "version=$VERSION" > deployment.env
echo "build_type=$BUILD_TYPE" >> deployment.env
echo "build_date=$(date -u +%Y-%m-%dT%H:%M:%SZ)" >> deployment.env
echo "📦 Output contents:"
ls -lh output/ | grep -E "(history\.html|package-list\.json|package-feed\.xml|index\.html)" || echo "Some files may be missing"
ls -lh ig-output.tar.gz
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
context: .
file: ./Dockerfile.serve
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
# cache-from: type=gha
# cache-to: type=gha,mode=max
name: ig-output
path: |
ig-output.tar.gz
deployment.env
package-list.json
package-feed.xml
retention-days: 30
deploy:
needs: build-ig
runs-on: ubuntu-latest
if: github.ref == 'refs/heads/main'
if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags/v')
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Download artifact
uses: actions/download-artifact@v3
with:
name: ig-output
- name: Load deployment env
id: deploy_info
run: |
source deployment.env
echo "version=$version" >> $GITHUB_OUTPUT
echo "build_type=$build_type" >> $GITHUB_OUTPUT
echo "build_date=$build_date" >> $GITHUB_OUTPUT
echo "Deploying version: $version"
echo "Build type: $build_type"
- name: Deploy to server
uses: appleboy/ssh-action@v1.0.3
env:
REGISTRY: ${{ env.REGISTRY }}
IMAGE_NAME: ${{ env.IMAGE_NAME }}
IMAGE_TAG: latest
uses: appleboy/scp-action@v0.1.7
with:
host: ${{ secrets.DEPLOY_HOST }}
username: ${{ secrets.DEPLOY_USER }}
password: ${{ secrets.DEPLOY_PASSWORD }}
port: ${{ secrets.DEPLOY_PORT || 22 }}
source: "ig-output.tar.gz,deployment.env,package-list.json,package-feed.xml"
target: "/tmp/fhir-ig-deploy/"
- name: Execute deployment on server
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.DEPLOY_HOST }}
username: ${{ secrets.DEPLOY_USER }}
password: ${{ secrets.DEPLOY_PASSWORD }}
port: ${{ secrets.DEPLOY_PORT || 22 }}
envs: REGISTRY,IMAGE_NAME,IMAGE_TAG
script: |
# Create deployment directory if it doesn't exist
mkdir -p /opt/fhir-ig
cd /opt/fhir-ig
# Create docker-compose.prod.yml
cat > docker-compose.prod.yml << EOF
services:
fhir-ig:
image: \${REGISTRY}/\${IMAGE_NAME}:\${IMAGE_TAG:-latest}
container_name: fhir-ig-app
restart: unless-stopped
ports:
- "80:80"
environment:
- NODE_ENV=production
networks:
- fhir-ig-network
healthcheck:
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
volumes:
- fhir-ig-logs:/var/log/nginx
networks:
fhir-ig-network:
driver: bridge
volumes:
fhir-ig-logs:
driver: local
EOF
# Create deployment script
cat > deploy.sh << 'DEPLOY_SCRIPT'
#!/bin/bash
set -e
# Configuration
COMPOSE_FILE="docker-compose.prod.yml"
SERVICE_NAME="fhir-ig"
BACKUP_DIR="/opt/backups/fhir-ig"
LOG_FILE="/var/log/fhir-ig-deploy.log"
source /tmp/fhir-ig-deploy/deployment.env
# Create directories
mkdir -p "$BACKUP_DIR"
mkdir -p "$(dirname "$LOG_FILE")"
echo "=========================================="
echo "Deploying FHIR IG"
echo "Version: $version"
echo "Build Type: $build_type"
echo "Build Date: $build_date"
echo "=========================================="
# Logging function
log() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" | tee -a "$LOG_FILE"
}
VERSIONS_DIR="/opt/fhir-ig/versions"
mkdir -p "$VERSIONS_DIR"
log "Starting deployment of BD Core FHIR IG..."
log "Registry: $REGISTRY"
log "Image: $IMAGE_NAME"
log "Tag: $IMAGE_TAG"
# Login to registry
echo "$GITEA_PASSWORD" | docker login $REGISTRY -u "$GITEA_USERNAME" --password-stdin
# Backup current container if it exists
if docker compose -f "$COMPOSE_FILE" ps --services --filter "status=running" | grep -q "$SERVICE_NAME"; then
log "Creating backup of current deployment..."
BACKUP_FILE="$BACKUP_DIR/backup-$(date +%Y%m%d-%H%M%S).tar.gz"
docker compose -f "$COMPOSE_FILE" exec -T "$SERVICE_NAME" tar -czf - -C /usr/share/nginx/html . > "$BACKUP_FILE" 2>/dev/null || log "Backup failed, continuing..."
if [ "$build_type" = "release" ]; then
TARGET_DIR="$VERSIONS_DIR/$version"
echo "📦 Deploying release version to: $TARGET_DIR"
else
TARGET_DIR="$VERSIONS_DIR/dev"
echo "🔧 Deploying dev build to: $TARGET_DIR"
mkdir -p "$TARGET_DIR"
echo "Cleaning old dev files..."
rm -rf "$TARGET_DIR"/*
fi
# Set environment variables for docker compose
export REGISTRY="$REGISTRY"
export IMAGE_NAME="$IMAGE_NAME"
export IMAGE_TAG="$IMAGE_TAG"
mkdir -p "$TARGET_DIR"
# Pull the latest image
log "Pulling latest image: $REGISTRY/$IMAGE_NAME:$IMAGE_TAG..."
docker pull "$REGISTRY/$IMAGE_NAME:$IMAGE_TAG"
echo "Extracting IG output..."
tar -xzf /tmp/fhir-ig-deploy/ig-output.tar.gz -C "$TARGET_DIR"
# docker pull "\${REGISTRY}/\${IMAGE_NAME}:\${IMAGE_TAG}"
if [ -f "$TARGET_DIR/history.html" ]; then
echo "✅ history.html deployed successfully"
else
echo "⚠️ WARNING: history.html not found in deployment"
fi
# Stop and remove old container
log "Stopping old container..."
docker compose -f "$COMPOSE_FILE" down || log "No existing container to stop"
cp "$TARGET_DIR/package-list.json" "$VERSIONS_DIR/package-list.json"
cp "$TARGET_DIR/package-feed.xml" "$VERSIONS_DIR/package-feed.xml"
# Start new container
log "Starting new container..."
docker compose -f "$COMPOSE_FILE" up -d
cp "$TARGET_DIR/package-list.json" "/opt/fhir-ig/package-list.json"
cp "$TARGET_DIR/package-feed.xml" "/opt/fhir-ig/package-feed.xml"
# Wait for container to be healthy
# log "Waiting for container to become healthy..."
# timeout=120
# elapsed=0
# healthy=false
if [ "$build_type" = "release" ]; then
echo "Updating 'current' symlink to point to $version"
rm -f "$VERSIONS_DIR/current"
ln -sf "$version" "$VERSIONS_DIR/current"
fi
# while [ $elapsed -lt $timeout ]; do
# if docker compose -f "$COMPOSE_FILE" ps --format json | grep -q '"Health":"healthy"'; then
# log "Container is healthy!"
# healthy=true
# break
# fi
# sleep 5
# elapsed=$((elapsed + 5))
# log "Waiting... ($elapsed/$timeout seconds)"
# done
cd /opt/fhir-ig
# if [ "$healthy" = false ]; then
# log "ERROR: Container failed to become healthy within $timeout seconds"
# docker compose -f "$COMPOSE_FILE" logs --tail=50
# log "Rolling back..."
# docker compose -f "$COMPOSE_FILE" down
# exit 1
# fi
if [ ! -f "docker-compose.prod.yml" ]; then
echo "ERROR: docker-compose.prod.yml not found!"
echo "Please deploy the updated docker-compose.prod.yml and nginx.conf first"
exit 1
fi
# Cleanup old images (keep last 3 versions)
log "Cleaning up old images..."
docker images "\${REGISTRY}/\${IMAGE_NAME}" --format "table {{.Repository}}:{{.Tag}}\t{{.CreatedAt}}" | tail -n +2 | sort -k2 -r | tail -n +4 | awk '{print $1}' | xargs -r docker rmi || log "No old images to clean"
docker compose -f docker-compose.prod.yml up -d --force-recreate fhir-ig
# Cleanup old backups (keep only last 5)
log "Cleaning up old backups..."
ls -t "$BACKUP_DIR"/backup-*.tar.gz 2>/dev/null | tail -n +6 | xargs -r rm || log "No old backups to clean"
rm -rf /tmp/fhir-ig-deploy
log "Deployment completed successfully!"
log "🌐 Service available at: http://$(hostname -I | awk '{print $1}')"
echo "=========================================="
echo "✅ Deployment completed successfully!"
echo "Version $version is now available at:"
if [ "$build_type" = "release" ]; then
echo " - https://fhir.dghs.gov.bd/core/$version/"
echo " - https://fhir.dghs.gov.bd/core/$version/history.html"
echo " - https://fhir.dghs.gov.bd/core/ (current)"
else
echo " - https://fhir.dghs.gov.bd/core/dev/"
fi
echo "=========================================="
# Display final status
docker compose -f "$COMPOSE_FILE" ps
DEPLOY_SCRIPT
# Make deploy script executable
chmod +x deploy.sh
# Set registry credentials
export GITEA_USERNAME="${{ gitea.actor }}"
export GITEA_PASSWORD="${{ secrets.ACCESS_TOKEN_GITEA }}"
# Execute deployment
./deploy.sh
echo "Available versions:"
ls -lh "$VERSIONS_DIR" | grep -v total

23
CHANGELOG.md Normal file
View File

@@ -0,0 +1,23 @@
# Changelog
## [0.2.0] 2025-10-02
**First official draft release of BD-Core-FHIR-IG**
### Added
- **BDPatientProfile** with Bangladesh-specific identifier and address extensions.
- **BDPractitionerProfile** to capture practitioner details.
- **Identifier CodeSystem and ValueSet** including:
- National ID (NID)
- Birth Registration Number (BRN)
- Unique Health ID (UHID)
- **Bangladesh Address profile** with Division, District, Upazila, and Union levels.
- Initial **examples** for Patient and Practitioner resources.
- Configured **bd.fhir.core.xml** with canonical URL `https://fhir.dghs.gov.bd/core`.
### Notes
- This is a **pre-release draft**.
- Backward compatibility is **not guaranteed** until `1.0.0`.
- Future drafts may adjust slicing rules, bindings, and extensions.
---

View File

@@ -1,42 +0,0 @@
# Multi-stage build for serving FHIR IG output
FROM nginx:alpine
# Copy the built IG output to nginx html directory
# (Uncomment and adjust the path if needed)
COPY output/ /usr/share/nginx/html/
# Copy custom nginx configuration
COPY nginx.conf /etc/nginx/nginx.conf
# Create a non-root user for security
RUN addgroup -g 1001 -S nginx-user && \
adduser -S -D -H -u 1001 -h /var/cache/nginx -s /sbin/nologin -G nginx-user -g nginx-user nginx-user
# Set proper permissions for Nginx directories
RUN chown -R nginx-user:nginx-user /usr/share/nginx/html && \
chown -R nginx-user:nginx-user /var/cache/nginx && \
chown -R nginx-user:nginx-user /var/log/nginx && \
chown -R nginx-user:nginx-user /etc/nginx/conf.d
# Fix Nginx PID permission issue
RUN mkdir -p /var/cache/nginx/run && \
chown -R nginx-user:nginx-user /var/cache/nginx/run
# Update nginx.conf to point PID to writable location
# Ensure your nginx.conf has:
# pid /var/cache/nginx/run/nginx.pid;
# Switch to non-root user
USER nginx-user
# Health check
# HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
# CMD curl -f http://localhost/ || exit 1
EXPOSE 80
# Start Nginx in foreground
# CMD ["nginx", "-g", "daemon off;"]
CMD ["nginx", "-g", "daemon off;", "-c", "/etc/nginx/nginx.conf"]

3
ig.ini
View File

@@ -1,11 +1,12 @@
[IG]
# ini file for the Implementation Guide publisher
# see comments below for instructions
ig = input/myig.xml
ig = input/bd.fhir.core.xml
#template = fhir.base.template#current
template = #bd-national-template
#template = D:\Git\templates\ig-template-base
#template = #local-template
historypage = true
##########################
### ig.ini parameters: ###

View File

@@ -13,7 +13,7 @@
</extension>-->
<url value="https://fhir.dghs.gov.bd/core/ImplementationGuide/bd.fhir.core"/>
<!-- This version will propagate to all artifacts unless the "propagate-version" extension is overridden -->
<version value="0.2.0"/>
<version value="0.2.5"/>
<name value="BangladeshCoreFHIRIG"/>
<title value="Bangladesh Core FHIR Implementation Guide"/>
<status value="active"/>
@@ -78,9 +78,6 @@
<extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-standards-status">
<valueCode value="trial-use"/>
</extension>
<extension url="http://hl7.org/fhir/StructureDefinition/structuredefinition-fmm">
<valueInteger value="3"/>
</extension>
<nameUrl value="spec.html"/>
<title value="Detailed BD-Core-FHIR Specification"/>
<generation value="markdown"/>
@@ -105,6 +102,11 @@
<title value="IG Change History"/>
<generation value="html"/>
</page>
<page>
<nameUrl value="history.html"/>
<title value="Version History"/>
<generation value="html"/>
</page>
</page>
<!-- copyright year is a mandatory parameter -->
<parameter>
@@ -114,7 +116,7 @@
<!-- releaselabel should be the ballot status for HL7-published IGs. -->
<parameter>
<code value="releaselabel"/>
<value value="Published by MoHFW"/>
<value value="Published by DGHS, MoHFW"/>
</parameter>
<parameter>
<code value="find-other-resources"/>
@@ -153,10 +155,6 @@
<code value="excludemap"/>
<value value="true"/>
</parameter>-->
<parameter>
<code value="showsource"/>
<value value="true"/>
</parameter>
<parameter>
<code value="i18n-default-lang"/>
<value value="en"/>
@@ -177,9 +175,5 @@
<code value="translation-sources"/>
<value value="input/translations-fr"/>
</parameter>
<parameter>
<code value="fcp-approved-specification"/>
<value value="false"/>
</parameter>
</definition>
</ImplementationGuide>

View File

@@ -5,4 +5,4 @@ Title: "ICD 11"
Description: "Condition coded with ICD-11"
* code 1..1 MS
* code from http://id.who.int/icd/release/11/mms (preferred)
* code from BDConditionICD11VS (preferred)

View File

@@ -4,6 +4,8 @@ Title: "Bangladesh Immunization Reaction Code System"
Description: "Codes for adverse reactions after vaccination in Bangladesh."
* ^url = "https://fhir.dghs.gov.bd/core/CodeSystem/bd-immunization-reaction"
* ^status = #active
* ^caseSensitive = true
* ^experimental = false
* ^content = #complete
* #NONE "No Reaction"

View File

@@ -6,6 +6,8 @@ Id: bd-blood-groups
Title: "Bangladesh Blood Group CodeSystem"
Description: "Blood group codes according to CCDS guideline"
* ^url = "https://fhir.dghs.gov.bd/core/CodeSystem/bd-blood-groups"
* ^caseSensitive = true
* ^experimental = false
* ^content = #complete
* #1 "O Positive"
* #2 "O Negative"
@@ -20,7 +22,7 @@ Description: "Blood group codes according to CCDS guideline"
// ValueSet for BD Blood Groups
// ---------------------------
ValueSet: BDBloodGroupVS
Id: bd-blood-group-vs
Id: bd-blood-group-valueset
Title: "Bangladesh Blood Group ValueSet"
Description: "Blood group value set according to CCDS guideline"
* include codes from system BDBloodGroupCS

View File

@@ -1,7 +1,9 @@
CodeSystem: BDCountryListCS
Id: bd-country-list-cs
Id: bd-country-list
Title: "Nationality List"
* ^url = "https://fhir.dghs.gov.bd/core/CodeSystem/bd-country-list"
* ^caseSensitive = true
* ^experimental = false
* #4 "Afghan"
* #8 "Albanian"
@@ -194,8 +196,8 @@ Title: "Nationality List"
ValueSet: BDCountryListVS
Id: bd-country-list-vs
Id: bd-country-list-valueset
Title: "Nationality ValueSet"
Description: "Nationality value set"
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-country-list"
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-country-list-valueset"
* include codes from system https://fhir.dghs.gov.bd/core/CodeSystem/bd-country-list

View File

@@ -1,8 +1,10 @@
CodeSystem: BDGeoCodesCS
Id: bd-geocodes-cs
Id: bd-geocodes
Title: "Bangladesh GeoCodes CodeSystem"
Description: "Bangladesh GeoCodes"
* ^url = "https://fhir.dghs.gov.bd/core/CodeSystem/bd-geocodes"
* ^caseSensitive = true
* ^experimental = false
// DIvisions
* #30 "Dhaka"
* #20 "Chattogram"
@@ -1601,10 +1603,10 @@ Description: "Bangladesh GeoCodes"
* #4589009077 "Sreebardi Pourasabha"
ValueSet: BDDivisionsVS
Id: bd-division-code-vs
Id: bd-division-code-valueset
Title: "Bangladesh Division ValueSet"
Description: "Bangladesh Division Codes (only two-digit codes)"
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-divisions"
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-division-code-valueset"
// include only codes that are exactly 2 digits
* include codes from system https://fhir.dghs.gov.bd/core/CodeSystem/bd-geocodes
@@ -1612,10 +1614,10 @@ Description: "Bangladesh Division Codes (only two-digit codes)"
ValueSet: BDDistrictsVS
Id: bd-district-code-vs
Id: bd-district-code-valueset
Title: "Bangladesh district ValueSet"
Description: "Bangladesh district Codes (only two-digit codes)"
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-districts"
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-district-code-valueset"
// include only codes that are exactly 4 digits
* include codes from system https://fhir.dghs.gov.bd/core/CodeSystem/bd-geocodes
@@ -1623,10 +1625,10 @@ Description: "Bangladesh district Codes (only two-digit codes)"
ValueSet: BDCityCorporationsVS
Id: bd-city-corporations-code-vs
Id: bd-city-corporation-code-valueset
Title: "Bangladesh City Corperation ValueSet"
Description: "Bangladesh City Corperation Codes (only two-digit codes)"
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-city-corporations"
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-city-corporation-code-valueset"
// include only codes that are exactly 6 digits
* include codes from system https://fhir.dghs.gov.bd/core/CodeSystem/bd-geocodes
@@ -1634,20 +1636,20 @@ Description: "Bangladesh City Corperation Codes (only two-digit codes)"
ValueSet: BDUpazillasVS
Id: bd-upazillas-code-vs
Id: bd-upazilla-code-valueset
Title: "Bangladesh Upazila ValueSet"
Description: "Bangladesh Upazila Codes (only two-digit codes)"
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-upazillas"
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-upazilla-code-valueset"
// include only codes that are exactly 8 digits
* include codes from system https://fhir.dghs.gov.bd/core/CodeSystem/bd-geocodes
where code regex "^[0-9]{8}$"
ValueSet: BDMunicipalitiesVS
Id: bd-municipalities-code-vs
Id: bd-municipalities-code-valueset
Title: "Bangladesh Municipalities ValueSet"
Description: "Bangladesh Municipalities Codes (only two-digit codes)"
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-municipalities"
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-municipalities-code-valueset"
// include only codes that are exactly 10 digits
* include codes from system https://fhir.dghs.gov.bd/core/CodeSystem/bd-geocodes

View File

@@ -1,9 +1,12 @@
//// this code systems for Identifier types
CodeSystem: BangladeshIdentifierType
Id: bangladesh-identifier-type-cs
Id: bd-identifier-type
Title: "Bangladesh Identifier Types"
Description: "Codes identifying the type of identifiers used in Bangladesh."
* ^url = "https://fhir.dghs.gov.bd/core/CodeSystem/bd-identifier-type"
* ^caseSensitive = true
* ^experimental = false
* #NID "National ID"
* #BRN "Birth Registration Number"
@@ -11,10 +14,10 @@ Title: "Bangladesh Identifier Types"
ValueSet: BangladeshIdentifierTypeVS
Id: bangladesh-identifier-type-vs
Id: bd-identifier-type-valueset
Title: "Bangladesh Identifier Type"
Description: "Bangladesh Standard Identifier type"
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-identifier-type"
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-identifier-type-valueset"
// * include codes from valueset http://hl7.org/fhir/ValueSet/identifier-type /// use name or uri
* include codes from system https://fhir.dghs.gov.bd/core/CodeSystem/bd-identifier-type

View File

@@ -4,6 +4,8 @@ Title: "Bangladesh Immunization Site Code System"
Description: "Codes for anatomical site of vaccine administration in Bangladesh."
* ^url = "https://fhir.dghs.gov.bd/core/CodeSystem/bd-immunization-site"
* ^status = #active
* ^caseSensitive = true
* ^experimental = false
* ^content = #complete
* #LA "Left Arm"

View File

@@ -1,8 +1,10 @@
CodeSystem: BDMedicationCodeSystem
Id: bd-medication-cs
Id: bd-medication-code
Title: "Bangladesh Medication Codes"
Description: "Bangladesh Medication Codes"
* ^url = "https://fhir.dghs.gov.bd/core/CodeSystem/bd-medication-code"
* ^caseSensitive = true
* ^experimental = false
// DGDA DAR Code "Brand Name"
* #394-0010-030 "Tubutol" "Ethambutol"
* #394-0011-030 "AFDCDT-2" "Isoniazid + Rifampicin"
@@ -16,7 +18,7 @@ Description: "Bangladesh Medication Codes"
// ValueSet for BD Medication
// ---------------------------
ValueSet: BDMedicationVS
Id: bd-medication-vs
Id: bd-medication-valueset
Title: "Bangladesh Medication ValueSet"
Description: "Bangladesh Medication ValueSet"
* include codes from system BDMedicationCodeSystem

View File

@@ -34,8 +34,8 @@ Description: "Medication dose form codes according to CCDS guideline"
// ValueSet for BD Medication Dose Forms
// ---------------------------
ValueSet: BDMedicationDoseFormVS
Id: bd-dose-form-vs
Id: bd-dose-form-valueset
Title: "Bangladesh Medication Dose Form ValueSet"
Description: "Medication dose form value set according to CCDS guideline"
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-dose-form-vs"
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-dose-form-valueset"
* include codes from system BDMedicationDoseForm

View File

@@ -1,6 +1,7 @@
CodeSystem: BDOccupationsCS
Id: bangladesh-occupations-cs
Id: bd-occupations
Title: "Bangladesh Occupations"
Description: "Occupations code system according to CCDS guideline"
* ^url = "https://fhir.dghs.gov.bd/core/CodeSystem/bd-occupations"
* #1 "Physical Scientists & Related Technicians" "ভৌত বিজ্ঞানী ও এতদসংক্রান্ত টেকনিশিয়ান"
@@ -76,8 +77,8 @@ Title: "Bangladesh Occupations"
* #92 "Printers and Related Workers" "মুদ্রণকাজ"
ValueSet: BDOccupationsVS
Id: bd-occupations-vs
Id: bd-occupations-valueset
Title: "Bangladesh Occupations ValueSet"
Description: "Occupations value set according to CCDS guideline"
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-occupations"
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-occupations-valueset"
* include codes from system https://fhir.dghs.gov.bd/core/CodeSystem/bd-occupations

View File

@@ -1,6 +1,6 @@
//codeSystems/bd-regions.fsh
CodeSystem: BDReligionsCS
Id: bangladesh-religions-cs
Id: bd-religions
Title: "Bangladesh Religions"
* ^url = "https://fhir.dghs.gov.bd/core/CodeSystem/bd-religions"
@@ -13,8 +13,8 @@ Title: "Bangladesh Religions"
* #0 "Other (specify)" "Other religion (to be specified in free text)"
ValueSet: BDReligionsVS
Id: bd-religions-vs
Id: bd-religions-valueset
Title: "Bangladesh Religions ValueSet"
Description: "Religions value set according to CCDS guideline"
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-religions"
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-religions-valueset"
* include codes from system https://fhir.dghs.gov.bd/core/CodeSystem/bd-religions

View File

@@ -4,6 +4,8 @@ Title: "Bangladesh Vaccine Code System"
Description: "Vaccine codes used in Bangladesh EPI and immunization program."
* ^url = "https://fhir.dghs.gov.bd/core/CodeSystem/bd-vaccine-code"
* ^status = #active
* ^caseSensitive = true
* ^experimental = false
* ^content = #complete
* #BCG "BCG Vaccine"

View File

@@ -0,0 +1,47 @@
// ============================================================
// CodeSystem-icd11-mms.fsh
// ICD-11 Mortality and Morbidity Statistics (MMS) — stub only
// Content is hosted externally; canonical authority is WHO.
// Runtime resolution via OCL: https://tr.ocl.dghs.gov.bd
// ============================================================
CodeSystem: ICD11MMSCS
Id: icd11-mms
Title: "ICD-11 Mortality and Morbidity Statistics (MMS)"
Description: """
WHO ICD-11 Mortality and Morbidity Statistics linearization.
Canonical system URI: http://id.who.int/icd/release/11/mms
This CodeSystem is declared as a stub (content = #not-present).
The authoritative content is maintained by the World Health Organization.
In Bangladesh, runtime code validation and lookup are delegated to the
national OCL terminology server at https://tr.ocl.dghs.gov.bd.
Supported operations (use `system=` parameter, not `url=`):
- $validate-code: https://tr.ocl.dghs.gov.bd/api/fhir/CodeSystem/$validate-code?system=http://id.who.int/icd/release/11/mms&code={code}
- $lookup: https://tr.ocl.dghs.gov.bd/api/fhir/CodeSystem/$lookup?system=http://id.who.int/icd/release/11/mms&code={code}
$expand is not supported — known OCL limitation. Expansion must not be
attempted at build time or by IG Publisher.
Preferred code form: short stem codes (e.g. 1A00, NC72.Z).
Linearization URIs are not used as code identifiers in this IG.
Version 2025-01 is imported into OCL with 36,941 concepts across
the following concept classes: Diagnosis, Finding, Substance, Organism,
Device, Anatomy, Misc.
"""
* ^url = "http://id.who.int/icd/release/11/mms"
* ^version = "2025-01"
* ^status = #active
* ^experimental = false
* ^publisher = "World Health Organization (WHO)"
* ^contact.name = "Directorate General of Health Services (DGHS), MoHFW, Bangladesh"
* ^contact.telecom.system = #url
* ^contact.telecom.value = "https://dghs.gov.bd"
* ^jurisdiction = urn:iso:std:iso:3166#BD "Bangladesh"
* ^copyright = "ICD-11 is copyright © World Health Organization. Used under licence."
* ^content = #not-present
* ^count = 36941
* ^caseSensitive = true

View File

@@ -4,6 +4,8 @@ Title: "Bangladesh Immunization Route Code System"
Description: "Codes for routes of vaccine administration in Bangladesh."
* ^url = "https://fhir.dghs.gov.bd/core/CodeSystem/bd-immunization-route"
* ^status = #active
* ^caseSensitive = true
* ^experimental = false
* ^content = #complete
* #IM "Intramuscular"

View File

@@ -10,4 +10,4 @@ Description: "Nationality of the patient based on Bangladesh country list."
// Only one value, bound to your ValueSet
* value[x] only CodeableConcept
* valueCodeableConcept from https://fhir.dghs.gov.bd/core/ValueSet/bd-country-list (required)
* valueCodeableConcept from https://fhir.dghs.gov.bd/core/ValueSet/bd-country-list-valueset (required)

View File

@@ -7,5 +7,5 @@ Context: Patient
// occupation using standard HL7 extension
* value[x] only string
* value[x] from https://fhir.dghs.gov.bd/core/ValueSet/bd-occupations (required)
* value[x] from https://fhir.dghs.gov.bd/core/ValueSet/bd-occupations-valueset (required)

View File

@@ -1,5 +1,3 @@
// @Name: Profile
// @Description: Immunization Profile of the Bangladeshi Patient.
Profile: BDImmunizationProfile
@@ -13,7 +11,6 @@ Description: "Bangladesh Immunization Profile"
* identifier 1..*
* identifier ^short = "Unique identifier"
* identifier ^definition = "Unique identifier for the vaccination event"
* ^url = "https://fhir.dghs.gov.bd/core/identifier/bd-immunization"
* reasonReference 0..*
* reasonReference only Reference(Condition or Observation or DiagnosticReport)
@@ -26,7 +23,7 @@ Description: "Bangladesh Immunization Profile"
* manufacturer 0..1
* manufacturer ^short = "Manufacturer"
* manufacturer ^definition = "Vaccine manufacturer"
* ^url = "https://fhir.dghs.gov.bd/core/StructureDefinition/bd-organization"
* manufacturer only Reference(BDOrganization)
* lotNumber 0..1
* lotNumber ^short = "Vaccine Lot Number"

View File

@@ -51,7 +51,7 @@ Patient profile for Bangladesh.
* identifier[NID].system = "http://dghs.gov.bd/identifier/nid"
* identifier[NID].type.coding.code = #NID
// * identifier[NID].type.coding.system = "http://terminology.hl7.org/CodeSystem/v2-0203"
* identifier[NID].type.coding.system = "https://fhir.dghs.gov.bd/core/ValueSet/bd-identifier-type"
* identifier[NID].type.coding.system = "https://fhir.dghs.gov.bd/core/ValueSet/bd-identifier-type-valueset"
* identifier[NID].type from BangladeshIdentifierTypeVS (extensible)
* identifier[NID].type.text = "Organization identifier"
// * identifier[NID].value = "Personal identifier National ID"
@@ -61,7 +61,7 @@ Patient profile for Bangladesh.
* identifier[BRN].system = "http://dghs.gov.bd/identifier/brn"
* identifier[BRN].type.coding.code = #BRN
* identifier[BRN].type.coding.system = "https://fhir.dghs.gov.bd/core/ValueSet/bd-identifier-type"
* identifier[BRN].type.coding.system = "https://fhir.dghs.gov.bd/core/ValueSet/bd-identifier-type-valueset"
* identifier[BRN].type from BangladeshIdentifierTypeVS (extensible)
* identifier[BRN].type.text = "Organization identifier"
// * identifier[BRN].value = "Personal identifier Birth Registration"
@@ -69,7 +69,7 @@ Patient profile for Bangladesh.
* identifier[UHID].system = "http://dghs.gov.bd/identifier/uhid"
* identifier[UHID].type.coding.code = #UHID
* identifier[UHID].type.coding.system = "https://fhir.dghs.gov.bd/core/ValueSet/bd-identifier-type"
* identifier[UHID].type.coding.system = "https://fhir.dghs.gov.bd/core/ValueSet/bd-identifier-type-valueset"
* identifier[UHID].type from BangladeshIdentifierTypeVS (extensible)
* identifier[UHID].type.text = "Organization identifier"
@@ -96,7 +96,7 @@ Patient profile for Bangladesh.
// Religion using standard HL7 extension
* extension contains http://hl7.org/fhir/StructureDefinition/patient-religion named religion 0..1
* extension[religion].valueCodeableConcept from https://fhir.dghs.gov.bd/core/ValueSet/bd-religions
* extension[religion].valueCodeableConcept from https://fhir.dghs.gov.bd/core/ValueSet/bd-religions-valueset
* address 1..* MS
* address only BDAddress

View File

@@ -0,0 +1,6 @@
ValueSet: BDConditionICD11VS
Id: bd-condition-icd11-valueset
Title: "Bangladesh ICD-11 MMS ValueSet"
Description: "ValueSet that includes the ICD-11 MMS CodeSystem for Condition.code"
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-condition-icd11-valueset"
* include codes from system http://id.who.int/icd/release/11/mms

View File

@@ -1,6 +1,6 @@
// ---------- ValueSet ----------
ValueSet: BDEncounterClassSubsetVS
Id: bd-encounter-class-subset-vs
Id: bd-encounter-class-subset
Title: "BD Encounter Class Subset"
Description: "Subset of EncounterClass limited to inpatient, ambulatory, and emergency."
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-encounter-class-subset"

View File

@@ -1,6 +1,6 @@
// ---------- ValueSet ----------
ValueSet: BDEncounterStatusSubsetVS
Id: bd-encounter-status-subset-vs
Id: bd-encounter-status-subset
Title: "BD Encounter Status Subset"
Description: "Subset of EncounterStatus limited to planned, in-progress, finished, and cancelled."
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-encounter-status-subset"

View File

@@ -1,5 +1,5 @@
ValueSet: BDImmunizationReactionValueSet
Id: bd-immunization-reaction-vs
Id: bd-immunization-reaction-valueset
Title: "Bangladesh Immunization Reaction Value Set"
Description: "Allowed vaccine reactions for immunization in Bangladesh."
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-immunization-reaction-valueset"

View File

@@ -1,5 +1,5 @@
ValueSet: BDImmunizationRouteVS
Id: bd-immunization-route-vs
Id: bd-immunization-route-valueset
Title: "Bangladesh Immunization Route Value Set"
Description: "Allowed administration routes for vaccines in Bangladesh."
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-immunization-route-valueset"

View File

@@ -1,5 +1,5 @@
ValueSet: BDImmunizationSiteVS
Id: bd-immunization-site-vs
Id: bd-immunization-site-valueset
Title: "Bangladesh Immunization Site Value Set"
Description: "Allowed administration sites for vaccines in Bangladesh."
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-immunization-site-valueset"

View File

@@ -1,6 +1,8 @@
ValueSet: BDLanguageVS
Id: bd-language-vs
Id: bd-language-valueset
Title: "Allowed Languages"
Description: "Only English and Bengali are allowed"
* http://hl7.org/fhir/ValueSet/languages#en "English"
* http://hl7.org/fhir/ValueSet/languages#bn "Bengali"
* urn:ietf:bcp:47#en "English"
* urn:ietf:bcp:47#bn "Bengali"
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-language-valueset"

View File

@@ -1,5 +1,5 @@
ValueSet: BDVaccineVS
Id: bd-vaccine-vs
Id: bd-vaccine-valueset
Title: "Bangladesh Vaccine Value Set"
Description: "Allowed vaccines for immunization in Bangladesh."
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-vaccine-valueset"

Binary file not shown.

After

Width:  |  Height:  |  Size: 347 KiB

View File

@@ -38,4 +38,6 @@
</li>
</ul>
</li>
<li><a href="https://pdb.shrlive.dghs.gov.bd">SHR Dashboard</a></li>
<li><a href="https://en.info.shr.dghs.gov.bd">Learn More</a></li>
</ul>

55
input/package-list.json Normal file
View File

@@ -0,0 +1,55 @@
{
"package-id": "bd.fhir.core",
"title": "Bangladesh Core FHIR Implementation Guide",
"canonical": "https://fhir.dghs.gov.bd/core",
"introduction": "The Bangladesh Core FHIR IG defines national base profiles, value sets, and extensions for health data interoperability.",
"list": [
{
"version": "current",
"desc": "Continuous Integration Build (latest in development)",
"path": "https://fhir.dghs.gov.bd/core/",
"status": "ci-build",
"current": true
},
{
"version": "0.2.4",
"date": "2025-10-06",
"desc": "Second draft release of the Bangladesh Core FHIR IG",
"path": "https://fhir.dghs.gov.bd/core/0.2.4/",
"status": "trial-use",
"sequence": "STU 1"
},
{
"version": "0.2.3",
"date": "2025-10-06",
"desc": "Second draft release of the Bangladesh Core FHIR IG",
"path": "https://fhir.dghs.gov.bd/core/0.2.3/",
"status": "trial-use",
"sequence": "STU 1"
},
{
"version": "0.2.2",
"date": "2025-10-06",
"desc": "Second draft release of the Bangladesh Core FHIR IG",
"path": "https://fhir.dghs.gov.bd/core/0.2.2/",
"status": "trial-use",
"sequence": "STU 1"
},
{
"version": "0.2.1",
"date": "2025-10-06",
"desc": "Second draft release of the Bangladesh Core FHIR IG",
"path": "https://fhir.dghs.gov.bd/core/0.2.1/",
"status": "trial-use",
"sequence": "STU 1"
},
{
"version": "0.2.0",
"date": "2025-10-02",
"desc": "First draft release of the Bangladesh Core FHIR IG",
"path": "https://fhir.dghs.gov.bd/core/0.2.0/",
"status": "trial-use",
"sequence": "STU 1"
}
]
}

View File

@@ -1,10 +1,34 @@
<div xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://hl7.org/fhir ../../input-cache/schemas/R5/fhir-single.xsd">
<h3>Heading 1</h3>
<p>
Some text
The Bangladesh Core FHIR Implementation Guide defines national base
profiles, code systems, and value sets to ensure interoperability across
digital health systems under DGHS and MoHFW.
</p>
<h3>Heading 2</h3>
<h3>Motivation</h3>
<p>
<img height="600" src="anImage.png" alt="A sample image"/>
Bangladesh has multiple health information systems developed over the
years, including DHIS2, multiple hospital automation systems, field automation systems, and HRIS. These systems use different data
standards, which makes interoperability difficult. This guide aligns
national systems with HL7® FHIR® R4 to ensure semantic consistency and
facilitate integration with global initiatives.
</p>
<h3>Scope</h3>
<ul>
<li>Patient identity management (UHID, NID, BRN)</li>
<li>Health facility and organization registry</li>
<li>Immunization, laboratory, and condition profiles</li>
<li>Terminology services (ICD-11, SNOMED subsets, local CodeSystems)</li>
</ul>
<h3>National Digital Health Architecture</h3>
<p>
The following diagram shows how FHIR-based services are integrated into
Bangladesh's national digital health architecture:
</p>
<p>
<img src="bd-core-architecture.png" alt="Bangladesh Digital Health Architecture" style="max-width:100%; height:auto"/>
</p>
</div>

View File

@@ -0,0 +1,14 @@
{
"package-id": "bd.fhir.core",
"version": "0.2.0",
"path": "https://fhir.dghs.gov.bd/core/0.2.0",
"mode": "working",
"status": "trial-use",
"sequence": "STU1",
"desc": "First draft release of the Bangladesh Core FHIR Implementation Guide",
"descmd": "# Bangladesh Core FHIR IG - Release 0.2.0\n\nThis is the first draft release of the Bangladesh Core FHIR Implementation Guide. It defines national base profiles, value sets, and extensions for health data interoperability in Bangladesh.\n\n## Key Features\n- Base profiles for common FHIR resources\n- National value sets and code systems\n- Extensions for Bangladesh-specific requirements\n\n## Status\nThis is a trial-use release. Implementers are encouraged to provide feedback.",
"first": true,
"category": "National Base",
"ci-build": "https://fhir.dghs.gov.bd/core/",
"package-list": "https://fhir.dghs.gov.bd/core/package-list.json"
}

33
package-feed.xml Normal file
View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<id>https://fhir.dghs.gov.bd/core/package-feed.xml</id>
<title>Bangladesh Core FHIR IG Package Feed</title>
<subtitle>FHIR Package Feed for bd.fhir.core</subtitle>
<link rel="self" href="https://fhir.dghs.gov.bd/core/package-feed.xml"/>
<link rel="alternate" href="https://fhir.dghs.gov.bd/core/"/>
<updated>2025-10-02T00:00:00Z</updated>
<author>
<name>MIS, Directorate General of Health Services (DGHS), Bangladesh</name>
<uri>https://dghs.gov.bd</uri>
</author>
<!-- Entries will be automatically added by the CI/CD pipeline -->
<!-- Example entry structure (will be generated): -->
<!--
<entry>
<title>bd.fhir.core version 0.2.0</title>
<link rel="alternate" href="https://fhir.dghs.gov.bd/core/0.2.0/"/>
<id>https://fhir.dghs.gov.bd/core/0.2.0/</id>
<updated>2025-10-02T00:00:00Z</updated>
<summary>Release 0.2.0 of Bangladesh Core FHIR Implementation Guide</summary>
</entry>
-->
<entry>
<title>bd.fhir.core version 0.2.0</title>
<link rel="alternate" href="https://fhir.dghs.gov.bd/core/0.2.0/"/>
<id>https://fhir.dghs.gov.bd/core/0.2.0/</id>
<updated>2025-10-02T00:00:00Z</updated>
<summary>First draft release of Bangladesh Core FHIR Implementation Guide</summary>
</entry>
</feed>

23
package-list.backup Normal file
View File

@@ -0,0 +1,23 @@
{
"package-id": "bd.fhir.core",
"title": "Bangladesh Core FHIR Implementation Guide",
"canonical": "https://fhir.dghs.gov.bd",
"introduction": "The Bangladesh Core FHIR IG defines national base profiles, value sets, and extensions for health data interoperability.",
"list": [
{
"version": "current",
"desc": "Continuous Integration Build (latest development version)",
"path": "https://fhir.dghs.gov.bd/build",
"status": "ci-build",
"current": true
},
{
"version": "v0.2.0",
"date": "2025-10-02",
"desc": "First draft release of the Bangladesh Core FHIR IG.",
"path": "https://fhir.dghs.gov.bd/v0.2.0",
"status": "trial-use",
"sequence": "STU 1"
}
]
}

View File

@@ -1,20 +1,55 @@
{
"package-id" : "hl7.fhir.uv.myig",
"title" : "Your User Friendly Name for MyIG Here",
"canonical" : "http://hl7.org/fhir/uv/myig",
"introduction" : "The introduction that should appear in the FHIR IG registry",
"list" : [{
"package-id": "bd.fhir.core",
"title": "Bangladesh Core FHIR Implementation Guide",
"canonical": "https://fhir.dghs.gov.bd/core",
"introduction": "The Bangladesh Core FHIR IG defines national base profiles, value sets, and extensions for health data interoperability.",
"list": [
{
"version": "current",
"desc" : "Continuous Integration Build (latest in version control)",
"path" : "http://hl7.org/fhir/ig/HL7/myig",
"desc": "Continuous Integration Build (latest in development)",
"path": "https://fhir.dghs.gov.bd/core/",
"status": "ci-build",
"current": true
},{
"version" : "0.1.0",
"date" : "2099-01-01",
"desc" : "Initial STU ballot (Mmm yyyy Ballot)",
"path" : "http://hl7.org/fhir/yyyyMmm/myig.html",
"status" : "ballot",
"sequence" : "DSTU 1"
}]
},
{
"version": "0.2.4",
"date": "2025-10-06",
"desc": "Second draft release of the Bangladesh Core FHIR IG",
"path": "https://fhir.dghs.gov.bd/core/0.2.4/",
"status": "trial-use",
"sequence": "STU 1"
},
{
"version": "0.2.3",
"date": "2025-10-06",
"desc": "Second draft release of the Bangladesh Core FHIR IG",
"path": "https://fhir.dghs.gov.bd/core/0.2.3/",
"status": "trial-use",
"sequence": "STU 1"
},
{
"version": "0.2.2",
"date": "2025-10-06",
"desc": "Second draft release of the Bangladesh Core FHIR IG",
"path": "https://fhir.dghs.gov.bd/core/0.2.2/",
"status": "trial-use",
"sequence": "STU 1"
},
{
"version": "0.2.1",
"date": "2025-10-06",
"desc": "Second draft release of the Bangladesh Core FHIR IG",
"path": "https://fhir.dghs.gov.bd/core/0.2.1/",
"status": "trial-use",
"sequence": "STU 1"
},
{
"version": "0.2.0",
"date": "2025-10-02",
"desc": "First draft release of the Bangladesh Core FHIR IG",
"path": "https://fhir.dghs.gov.bd/core/0.2.0/",
"status": "trial-use",
"sequence": "STU 1"
}
]
}

View File

@@ -0,0 +1,12 @@
{
"package-id": "bd.fhir.core",
"title": "Bangladesh Core FHIR Implementation Guide",
"canonical": "https://fhir.dghs.gov.bd",
"version": "0.2.0",
"path": "https://fhir.dghs.gov.bd",
"status": "trial-use",
"sequence": "STU 1",
"mode": "milestone",
"desc": "First draft release of the Bangladesh Core FHIR IG.",
"first": true
}

View File

@@ -6,7 +6,7 @@ description: >
This Implementation Guide defines the Bangladesh Core FHIR profiles,
value sets, code systems, and implementation rules for national digital health systems.
status: draft
version: 0.2.0
version: 0.2.5
fhirVersion: 4.0.1
copyrightYear: 2025+
releaseLabel: CI Build