How wso2/fhir-server works
WSO2 FHIR Server accepts FHIR REST requests, routes them through resource and system interactions, validates and searches resources, and persists versioned data and search indexes in PostgreSQL. Startup configures the database, base definitions, search parameters, tenancy and optional terminology; Implementation Guides can add profiles and search parameters. The graph also preserves documented validation, bundle, operations and observability capabilities. Several runtime files are unsampled, so edges for those documented capabilities cite the README rather than implying unseen call paths.
Main entry points: main.go Server startup · handlers.go FHIR interactions · router.go HTTP routing · ig.go Implementation Guides
Components 21
Server runtime
- Server startup
cmd/server/main.go - Configuration
internal/config/config.go - Tenant resolution
internal/tenant/tenant.go - Base search seeding
internal/seed/seed.go
FHIR API
- HTTP routing
internal/handler/router.go - FHIR interactions
internal/handler/handlers.go - Bundles and operations
internal/handler/bundle.go - Metadata operations
internal/handler/operations.go
FHIR semantics
- Base definitions
internal/basedef/basedef.go - Implementation Guides
internal/ig/ig.go - Resource validation
internal/validate/validate.go - FHIRPath evaluation
internal/fhirpath/eval.go - Search parameters
internal/searchparam/definitions.go - Terminology client
internal/terminology/client.go
Persistence and search
- Resource lifecycle
internal/store/store.go - Search execution
internal/store/search.go - Write-time indexing
internal/index/extractor.go - PostgreSQL access
internal/db/db.go
Operations
- Observability hooks
internal/obs/obs.go
Other components
- FHIR client
- PostgreSQL
Connections 31
- FHIR client → HTTP routing: sends requests
README.md - Server startup → Configuration: loads settings
- Server startup → PostgreSQL access: connects database
cmd/server/main.go - Server startup → Base definitions: loads definitions
- Server startup → Search parameters: configures registry
- Server startup → Base search seeding: seeds parameters
- Server startup → Resource lifecycle: constructs store
cmd/server/main.go - Server startup → Implementation Guides: loads guides
- Server startup → Terminology client: configures client
cmd/server/main.go - Server startup → HTTP routing: starts HTTP service
- HTTP routing → FHIR interactions: routes interactions
internal/handler/router.go - HTTP routing → Tenant resolution: resolves tenant
internal/handler/router.go - HTTP routing → Observability hooks: applies middleware
internal/handler/router.go - FHIR interactions → Resource lifecycle: reads and writes
internal/handler/handlers.go - FHIR interactions → Resource validation: validates resources
internal/handler/handlers.go - FHIR interactions → Bundles and operations: dispatches bundles
- FHIR interactions → Metadata operations: offers operations
- FHIR interactions → Implementation Guides: uses profiles
internal/handler/handlers.go - Resource lifecycle → Search execution: executes searches
internal/store/store.go - Resource lifecycle → Write-time indexing: builds indexes
internal/store/store.go - Resource lifecycle → PostgreSQL: persists resources
README.md - PostgreSQL access → PostgreSQL: creates schema
- Search execution → Search parameters: uses definitions
internal/store/search.go - Search execution → Terminology client: resolves terminology
internal/store/search.go - Write-time indexing → Search parameters: extracts parameter values
internal/index/extractor.go - Write-time indexing → FHIRPath evaluation: evaluates expressions
internal/index/extractor.go - Base definitions → Resource validation: compiles profiles
internal/basedef/basedef.go - Resource validation → FHIRPath evaluation: evaluates invariants
internal/validate/validate.go - Implementation Guides → Search parameters: registers definitions
internal/ig/ig.go - Implementation Guides → Resource validation: supplies profiles
- Implementation Guides → FHIR client: downloads packages
internal/ig/ig.go