This server provides various support functions to the FHIR community: package registry, implementation guide statistics, SMART Health Link Support, and ValueSet Compose Language processing.
Note: In production, this server always runs behind an nginx reverse proxy, so there's no in-build support for SSL, rate limiting etc.
This server is composed of a set of modules:
- Tx Ecosystem Registry: Terminology System Registry as described by the terminology ecosystem specification
- FHIR Package Server: NPM-style FHIR package registry with search, versioning, and downloads, consistent with the FHIR NPM Specification
- XIG (Implementation Guide Statistics): Comprehensive FHIR IG analytics with resource breakdowns by version, authority, and realm
- VCL (ValueSet Compose Language) Server: Parse VCL expressions into FHIR ValueSet resources for http://fhir.org/vcl
- SHL/VHL Services: A set of services to support SHL And VHL usage on healthintersections.com.au
- Node.js 16+
- NPM or Yarn
- Java 8+ (for FHIR validator)
# Clone the repository
git clone <repository-url>
cd fhir-server
# Install dependencies
npm install
# Create required directories
mkdir -p data logs static
# Copy example configuration
cp config.example.json config.json
# Edit configuration as needed
nano config.json
Each Module has it's own entry in the config, as described by the module.
Create a config.json
file (use config-template.json
):
{
"server": {
"port": 3000,
"cors": {
"origin": "*",
"credentials": true
}
},
"modules": {
// per modules...
}
}
# Development mode
npm run dev
# Production mode
npm start
The server will be available at http://localhost:{port}
using the port specified in the config.
npm test
You need to provide additional data files for testing:
- (none yet)
The server is available as a Docker image:
# Pull the latest image
docker pull ghcr.io/healthintersections/nodeserver:latest
# Run with mounted volumes
docker run -d --name fhir-server \
-p 3000:3000 \
-v /path/to/config.json:/app/config.json \
-v /path/to/data:/app/data \
ghcr.io/healthintersections/nodeserver:v1.0.0
Available tags:
latest
: Latest stable releasevX.Y.Z
: Specific version (e.g.,v1.0.0
)cibuild
: Latest build from the main branch
export PORT=3000
export NODE_ENV=production
export FHIR_SERVER_CONFIG=/path/to/config.json
You can install as a windows service using...
This project follows Semantic Versioning and uses a CHANGELOG.md file to track changes.
To create a new release:
- Update CHANGELOG.md with your changes under a new version section
- Commit your changes
- Tag the commit with the new version:
git tag vX.Y.Z
- Push the tag:
git push origin vX.Y.Z
GitHub Actions will automatically:
- Run tests
- Create a GitHub Release with notes from CHANGELOG.md
- Build and publish Docker images with appropriate tags
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
- Issues: GitHub Issues
- Documentation: Wiki
- FHIR Community: chat.fhir.org