CI Build of main branch: https://hl7germany.github.io/ProjextX/main/
A ready-to-use development container for building FHIR Implementation Guides (IGs) with SUSHI and the IG Publisher.
- Pre-configured Environment: Comes with SUSHI (FSH compiler) and IG Publisher pre-installed
- Multi-Platform Support: Works on both AMD64 and ARM64 architectures (including Apple Silicon)
- VS Code Integration: Optimized for Visual Studio Code with Dev Containers
- GitHub Codespaces Ready: Start developing in seconds directly in your browser
- Automated Tasks: Pre-configured VS Code tasks for common IG development workflows
Choose one of the following options:
- Docker installed on your machine
- Visual Studio Code
- Dev Containers extension
- A GitHub account (no local installation required!)
-
Clone this repository:
git clone https://github.com/Gefyra/IGPublisherDevContainer.git cd IGPublisherDevContainer -
Open the project in VS Code:
code . -
When prompted, click "Reopen in Container" or run the command:
- Press
F1orCmd+Shift+P(Mac) /Ctrl+Shift+P(Windows/Linux) - Type:
Dev Containers: Reopen in Container
- Press
-
Wait for the container to build and start (first time may take a few minutes)
- Fork this repository to your GitHub account (click the "Fork" button at the top right)
- Navigate to your forked repository on GitHub
- Click the green "Code" button
- Select the "Codespaces" tab
- Click "Create codespace on main"
- Wait for your Codespace to start (automatic setup)
This project includes pre-configured tasks to streamline your IG development workflow. Access them via:
- Press
F1orCmd+Shift+P(Mac) /Ctrl+Shift+P(Windows/Linux) - Type:
Tasks: Run Task
| Task | Description |
|---|---|
| SUSHI: Build FSH | Compiles FSH files to FHIR resources using SUSHI |
| FHIR Package: Snapshot Dependencies | Downloads and snapshots SUSHI dependencies defined in sushi-config.yaml |
| IG Publisher: Full Build | Runs the complete IG build process (depends on SUSHI build) |
| Update IG Publisher | Updates the IG Publisher to the latest version |
| Serve IG Locally | Starts a local HTTP server to preview the generated IG at http://localhost:8080 |
The default build task is "IG Publisher: Full Build". You can run it with:
Cmd+Shift+B(Mac) /Ctrl+Shift+B(Windows/Linux)
.
βββ .devcontainer/ # Dev container configuration
β βββ devcontainer.json # Container settings and VS Code customizations
β βββ Dockerfile # Container image definition
βββ input/ # IG input files
β βββ fsh/ # FSH (FHIR Shorthand) source files
β βββ pagecontent/ # Markdown content for IG pages
βββ fsh-generated/ # Auto-generated FHIR resources (from SUSHI)
βββ output/ # Generated IG output (HTML, JSON, etc.)
βββ ig.ini # IG Publisher configuration
βββ sushi-config.yaml # SUSHI configuration
βββ _genonce.sh # Build script for IG generation
SUSHI is the reference implementation for compiling FHIR Shorthand (FSH) into FHIR resources.
Usage:
sushi # Compile FSH files in current directory
sushi --version # Check SUSHI version
sushi --help # Show helpThe FHIR IG Publisher generates complete Implementation Guides from FHIR resources.
Usage:
./_genonce.sh # Run full IG build
./_updatePublisher.sh # Update IG PublisherThe following extensions are automatically installed in the container:
-
FHIR Development:
gematikde.codfsh- FSH language supportfhir-shorthand.vscode-fsh- FSH syntax highlightingyannick-lagger.vscode-fhir-tools- FHIR development tools
-
General Development:
redhat.vscode-yaml- YAML language supportesbenp.prettier-vscode- Code formatteryzhang.markdown-all-in-one- Markdown supportstreetsidesoftware.code-spell-checker- Spell checkermhutchie.git-graph- Git visualizationpeakchen90.open-html-in-browser- HTML preview
The container image is automatically built and published to GitHub Container Registry when changes are pushed to the .devcontainer/ directory.
Image Tags:
latest- Latest versionsushi-X.Y.Z- Tagged with specific SUSHI version
Pull the latest image:
docker pull ghcr.io/gefyra/igpublisher-devcontainer:latest-
Edit FSH files in
input/fsh/:Profile: MyPatient Parent: Patient * name 1..* MS
-
Run SUSHI to compile:
- Use task: "SUSHI: Build FSH"
- Or run:
sushi
-
Edit dependencies in
sushi-config.yamlas needed. -
Snapshot dependencies:
- Use task: "FHIR Package: Snapshot Dependencies"
- Or run:
fhir-pkg-tool --sushi-deps-file sushi-config.yaml
-
Build the complete IG:
- Use task: "IG Publisher: Full Build"
- Or run:
./_genonce.sh
-
Preview your IG:
- Use task: "Serve IG Locally"
- Open
http://localhost:8080in your browser
- Ensure Docker is running
- Try rebuilding:
Dev Containers: Rebuild Container - Check Docker logs for errors
- Update IG Publisher: Run "Update IG Publisher" task
- Check
input/ignoreWarnings.txtfor known issues - Review
output/qa.htmlfor validation issues
- If port 8080 is in use, modify the port in
.vscode/tasks.json
Contributions are welcome! Please feel free to submit issues or pull requests.
This project is open source and available under the Apache License 2.0.
- FHIR Shorthand Documentation
- IG Publisher Documentation
- FHIR Specification
- Dev Containers Documentation
- GitHub Codespaces
For questions or issues: