This is a FHIR R4 Implementation Guide for the WellData project, which enables personal health data storage in Solid pods with FHIR-based access.
- FHIR Shorthand (FSH): Profiles and examples defined in
input/fsh/ - SUSHI: FSH compiler
- HL7 FHIR IG Publisher: Generates the full Implementation Guide
- Docker: Build environment
├── input/
│ ├── fsh/
│ │ ├── profiles/ # FHIR profile definitions (FSH)
│ │ └── instances/ # Example instances (FSH)
│ ├── pagecontent/ # Markdown documentation pages
│ └── images-source/ # PlantUML diagrams
├── sushi-config.yaml # SUSHI/IG configuration
├── ig.ini # IG Publisher configuration
├── Makefile # Build targets
├── Dockerfile # Build environment
└── docker-entrypoint.sh # Docker entry point
All builds use Docker. First build the image:
docker build . -t gidsopenstandaarden-welldata-igThen run targets:
# Full IG build (generates HTML, JSON, TTL)
docker run --rm -v "${PWD}:/src" gidsopenstandaarden-welldata-ig build
# SUSHI only (quick FSH validation)
docker run --rm -v "${PWD}:/src" gidsopenstandaarden-welldata-ig sushi
# Show available targets
docker run --rm -v "${PWD}:/src" gidsopenstandaarden-welldata-ig helpIn sushi-config.yaml:
FSHOnly: false- Generate full IG structureexcludettl: false- Generate TTL (RDF) outputexcludexml: true- Skip XML output
| Profile | File | Description |
|---|---|---|
| WellDataPatient | profiles/WellDataPatient.fsh |
Patient demographic data |
| WellDataObservation | profiles/WellDataObservation.fsh |
Health observations (vitals, lab results, surveys) |
| WellDataQuestionnaire | profiles/WellDataQuestionnaire.fsh |
Questionnaire definitions |
| WellDataQuestionnaireResponse | profiles/WellDataQuestionnaireResponse.fsh |
Questionnaire answers |
Add FSH instances in input/fsh/instances/. Example:
Instance: example-new-observation
InstanceOf: WellDataObservation
Title: "New Observation Example"
* status = #final
* code.coding.system = "http://snomed.info/sct"
* code.coding.code = #12345678
* subject.reference = "Patient/example-welldata-patient"
* effectiveDateTime = "2025-06-10T09:00:00+02:00"
* valueQuantity.value = 100
* valueQuantity.unit = "mg/dL"- Create markdown file in
input/pagecontent/ - Add to
pages:section insushi-config.yaml - Add to
menu:section insushi-config.yaml
Place .plantuml files in input/images-source/. Reference in markdown:
{::nomarkdown}
{% include diagram-name.svg %}
{:/}After make build, output is in output/:
*.html- Documentation pages*.json- FHIR resources as JSON*.ttl- FHIR resources as RDF/Turtlepackage.tgz- FHIR package for distribution
- Do not commit
output/,fsh-generated/,temp/,input-cache/ - Use
git rm -ffor deletions,git mvfor moves - Add new files to git immediately