This application is a FHIR reference implementation server for the security and identity matching implementation guides.
By default OAuth2 and UDAP security is currently disabled.
This project uses git submodules
# make sure you have meteor 2.x installed
npm install -g meteor
# clone repository & submodule
git clone https://github.com/HL7-FAST/identity-matching-server.git --recursive
cd identity-matching-server
git submodule update --init --recursive # for older versions of git
# install libraries
npm ci
# launch server
meteor run --settings configs/settings.nodeonfhir.localhost.json
# now open http://localhost:3000/ to make sure its runnning
# seed database with fixtures/patient
bundle install
bundle exec rake seed
# query match endpoint
# this uses the very handy http command from https://httpie.io/
http POST "localhost:3000/baseR4/Patient/\$match" "accept:application/fhir+json" @fixtures/parameters/example1.json
To pull updates for submodule:
git pull && git submodule update --init --recursive
To push submodule updates:
cd packages/identity-matching
git add --all
git commit -m "[my commit message]"
git push
cd ../..
git add --all
git commit -m "[updates submodule]"
git push
Here are the key endpoints available on the server, where []
denotes HTTP body in FHIR JSON:
GET / # => renders html home page
GET /metadata # => fhir capability statement
GET /baseR4/metadata # => same exact capability statement
GET /baseR4/Patient # => fhir bundle of all patients
GET /baseR4/Patient/1 # => fhir patient with id 1
POST /baseR4/Patient [fhir patient] # => create patient
DELETE /baseR4/Patient/1 # => delete patient with id 1
POST /baseR4/Patient/$match [fhir params] # => preform match operation
This application is MeteorJS app with builtin FHIR support and Rake for tooling. The rake seed
command creates all FHIR patients in fixtures/patients/ in database. The file fixtures/parameters/example1.json is the POST body for an example /baseR4/Patient/$match
call. File packages/identity-matching/FhirServer/Core.js actually implements the server in NodeJS, with full Patient RESTful CRUD support. All the functionality for $match
is modularized into packages/identity_matching, which is a git submodule and MeteorJS Atmosphere package. The file configs/settings.nodeonfhir.localhost.json controls security features such as enabling OAuth2. OAuth2 is disabled by default.
We included the following rake commands to help development, which requires Ruby and bundler to use:
Run bundle install
to setup rake once.
bundle exec rake --tasks # => list all tasks
bundle exec rake seed # => populate server with all FHIR resources in fixtures/patients/
bundle exec rake seed:bundle[path/to/fhir/bundle] # => populate server with all Patient resources in a give FHIR Bundle JSON file
bundle exec rake drop # => delete all Patients on server
You can access our cross-platform Docker image via:
# Make sure you are running Docker daemon
docker login ghcr.io
# Enter GitHub username and PAT
docker pull ghcr.io/hl7-fast/identity-matching-server:development
In order to run this application, you will need to have installed node versions 14.0 and lower.