Metriport
Metriport is an open-source universal API for healthcare data.
Install / Use
/learn @metriport/MetriportREADME
Join us on our Slack Community 💬
Overview
<div> <a href="https://www.loom.com/share/c5c049d2f0444e1ea8e075640077a77f"> <p>Check out our platform demo:</p> </a> <a href="https://www.loom.com/share/c5c049d2f0444e1ea8e075640077a77f"> <img style="max-width:300px;" src="https://cdn.loom.com/sessions/thumbnails/c5c049d2f0444e1ea8e075640077a77f-with-play.gif"> </a> </div>Security and Privacy
Metriport is SOC 2 and HIPAA compliant. Click here to learn more about our security practices.
<p style="text-align: center;"> <img src="./assets/soc2.png" width="20%" /> <img src="./assets/hipaa.png" width="30%" /> </p>Medical API
<div align="center"> <img width="90%" alt="open source healthcare data api" src="./assets/medical-api.png"> </div>Our Medical API brings you data from the largest clinical data networks in the country - one open-source API, 300+ million patients.
Metriport ensures clinical accuracy and completeness of medical information, with HL7 FHIR, C-CDA, and PDF formats supported. Through standardizing, de-duplicating, consolidating, and hydrating data with medical code crosswalking, Metriport delivers rich and comprehensive patient data at the point-of-care.
Medical Dashboard
<div align="center"> <img width="90%" alt="open source healthcare data dashboard" src="./assets/medical-dashboard.png"> </div>Our Medical Dashboard enables providers to streamline their patient record retrieval process. Get up and running within minutes, accessing the largest health information networks in the country through a user-friendly interface.
Tools like our FHIR explorer and PDF converter help you make sense of the data you need to make relevant care decisions and improve patient outcomes.
Converter API
<div align="center"> <img width="90%" alt="convert c-cda to fhir" src="./assets/fhir-converter.png"> </div>A key piece to achieving true interoperability is compatibility between different data formats. Using advanced processing techniques, Metriport's FHIR Converter takes common healthcare data formats such as C-CDA, and converts them into FHIR R4 to streamline data exchange.
Get started converting using our Quickstart Guide.
Getting Started
Check out the links below to get started with Metriport in minutes!
Slack Community 💬
Quickstart Guide 🚀
Developer Dashboard 💻
npm package
Repo Rundown
API Server
Backend for the Metriport API.
- Dir:
/packages/api - URL: https://api.metriport.com/
- Sandbox URL: https://api.sandbox.metriport.com/
FHIR Converter
Engine to convert various healthcara data formats to FHIR, and back.
Infrastructure as Code
We use AWS CDK as IaC.
- Dir:
/packages/infra
Docs
Our beautiful developer documentation, powered by mintlify ❤️.
- Dir:
/docs - URL: https://docs.metriport.com/
Packages
npm
Our npm packages are available in /packages:
- Metriport API: contains the Metriport data models, and a convenient API client wrapper.
- CommonWell JWT Maker: CLI to create a JWT for use in CommonWell queries.
- CommonWell SDK: SDK to simplify CommonWell API integration.
Contributing
Got ideas for how you can make Metriport better? We welcome community contributions!
Contribution guidelines
By making a contribution to this project, you are deemed to have accepted the Developer Certificate of Origin (DCO), agree to GitHub's Community Guidelines, and agree to the Acceptable Use Policies.
Requesting a feature, or reporting a bug
Click here to open a new issue - follow the chosen template and you're good to go.
Local Development
Monorepo
This monorepo uses npm workspaces to manage the packages and execute commands globally.
But not all folders under /packages are part of the workspace. To see the ones that are, check the
root folder's package.json under the workspaces section.
To setup this repository for local development, issue this command on the root folder:
$ npm run init # only needs to be run once
$ npm run build # packages depend on each other, so its best to build/compile them all
Useful commands:
npm run test: it executes thetestscript on all workspaces;npm run typecheck: it will runtypecheckon all workspaces, which checks for typescript compilation/syntax issues;npm run lint-fix: it will runlint-fixon all workspaces, which checks for linting issues and automatically fixes the issues it can;npm run prettier-fix: it will runprettier-fixon all workspaces, which checks for formatting issues and automatically fixes the issues it can;
Semantic version
This repo uses Semantic Version, and we automate the versioning by using Conventional Commits.
This means all commit messages must be created following a certain standard:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
To enforce commits follow this pattern, we have a Git hook (using Husky) that verifies commit messages according to the Conventional Commits - it uses commitlint under the hood (config).
Accepted types:
- build
- chore
- ci
- docs
- feat
- fix
- perf
- refactor
- revert
- style
- test
Scope is optional, and we can use one of these, or empty (no scope):
- api
- sdk
- infra
- core
- shared
- utils
- scripts
- docs
- ... (usually subdirectories of
./packages)
The footer should have the issue number supporting the commit:
...
Ref: #<issue-number>
Commitizen
One can enter the commit message manually and have commitlint check its content, or use Commitizen's
CLI to guide through building the commit message:
$ npm run commit
In case something goes wrong after you prepare the commit message and you want to retry it after fixing the issue, you can issue this command:
$ npm run commit -- --retry
Commitizen will retry the last commit message you prepared previously. More about this here.
Security
To avoid pushing secrets to the remote git repository we use Gitleaks - triggered by Husky.
From their repository:
Gitleaks is a SAST tool for detecting and preventing hardcoded secrets like passwords, api keys, and tokens in git repos.
It automaticaly scans new commits and interrupts the execution if it finds content that
