
Medplum is a developer platform that enables flexible and rapid development of healthcare apps.
- Medplum Auth - End-to-end identity solution for easy user authentication, sign-in, and permissions using OAuth, OpenID, and SMART-on-FHIR.
- Medplum Clinical Data Repository (CDR) - Backend server that hosts your healthcare data in a secure, compliant, and standards-based repository.
- Medplum API - FHIR-based API for sending, receiving, and manipulating data.
- Medplum SDK - Client libraries that simplify the process of interacting with the Medplum API.
- Medplum App - Web application where you can view your data and perform basic editing tasks. You can also use the Medplum App to manage basic workflows.
- Medplum Bots - Write and run application logic server-side without needing to set up your own server.
- UI Component Library - React components designed to help you quickly develop custom healthcare applications.
Docs
Contributing
We heartily welcome any and all contributions that match our engineering standards!
That being said, this codebase isn't your typical open-source project because it's not a library or package with a
limited scope -- it's our entire product. Our Contributing documentation has
all the information you need to get started.
Ground Rules
Contributions and discussion guidelines
By making a contribution to this project, you are deemed to have accepted the Developer Certificate of Origin (DCO).
All conversations and communities on Medplum are expected to follow GitHub's Community Guidelines
and Acceptable Use Policies. We expect
discussions on issues and pull requests to stay positive, productive, and respectful. Remember: there are real people on
the other side of the screen!
Reporting a bug or proposing a new feature
If you found a technical bug on Medplum or have ideas for features we should implement, the issue tracker is the best
place to share with us. (click here to open a new issue)
Writing documentation or blog content
Did you learn how to do something using Medplum that wasn't obvious on your first try? By contributing your new knowledge
to our documentation, you can help others who might have a similar use case!
Our documentation is hosted on medplum.com/docs, but it is built from Markdown
files in our docs package.
For relatively small changes, you can edit files directly from your web browser on GitHub.dev
without needing to clone the repository.
Fixing a bug or implementing a new feature
To keep new contributors focused on work we're ready to accept, code contributions go through an approval system: your
Pull Request must be linked to an issue labeled open-to-community before we'll review it. This signals that a
maintainer has explicitly invited community help on that issue. You can link a PR to an issue with a closing keyword
in the PR description (e.g. Fixes #123) or via GitHub's Development panel. PRs that aren't linked to an
open-to-community issue are automatically closed, but can be reopened once the link is added. Established
contributors and Medplum team members are exempt from this requirement.
If you find a bug, look for an existing issue labeled open-to-community, or open a new issue and ask us to label it,
before starting work on a fix.
If you want to implement a new feature, open an issue first to discuss with us how the feature might work, and to ensure
it fits into our roadmap and plans for the app.
If you want to contribute but are unsure how to start, we have a "good first issue" label which is applied to newcomer-friendly issues. Take a look at the full list of good first issues and pick something you like!
Ready to get started writing code? Follow the local setup instructions and jump in! See our full contributing guide for more details on this process.
Codebase
Technologies
With the ground rules out of the way, let's talk about the coarse architecture of this mono repo:
- Full-stack TypeScript: We use Node.js to power our servers, and React to power our frontend apps. Almost all of the code you'll touch in this codebase will be TypeScript.
Here is a list of all the big technologies we use:
- PostgreSQL: Data storage
- Redis: Background jobs and caching
- Express: API server
- TypeScript: Type-safe JavaScript
- React: Frontend React app
Folder structure
medplum/
โโโ packages
โย ย โโโ agent
โย ย โโโ app
โย ย โโโ bot-layer
โย ย โโโ cdk
โย ย โโโ cli
โย ย โโโ core
โย ย โโโ definitions
โย ย โโโ docs
โย ย โโโ examples
โย ย โโโ fhir-router
โย ย โโโ fhirtypes
โย ย โโโ generator
โย ย โโโ graphiql
โย ย โโโ hl7
โย ย โโโ mock
โย ย โโโ react
โย ย โโโ react-hooks
โย ย โโโ server
โโโ scripts
Thanks

Thanks to Chromatic for providing the visual testing platform that helps us review UI changes and catch visual regressions.
License
Apache 2.0