This server provides a set of server-side services that are useful for the FHIR Community. The set of are two kinds of services:
- (Coming) R4/R6 interconverter
- (Coming) tx.fhir.org server
- SHL Server - SHL/VHL support services
- TX Registry - Terminology System Registry as described by the terminology ecosystem specification(as running at http://tx.fhir.org/tx-reg)
- Package server - NPM-style FHIR package registry with search, versioning, and downloads, consistent with the FHIR NPM Specification (as running at http://packages2.fhir.org/packages)
- XIG server - Comprehensive FHIR IG analytics with resource breakdowns by version, authority, and realm (as running at http://packages2.fhir.org/packages)
- Publisher - FHIR publishing services (coming)
- VCL - Parse VCL expressions into FHIR ValueSet resources for http://fhir.org/vcl
- (Coming) Token services
Note: In production, this server always runs behind an nginx reverse proxy, so there's no in-build support for SSL, rate limiting etc.
- 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.jsonEach 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 startThe server will be available at http://localhost:{port} using the port specified in the config.
In the production servers listed above, the server always sits behind an NGINX server.
npm testYou 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.0Available 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.jsonYou 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