/ottehr

Modular, Production-Ready EHR

Primary LanguageTypeScriptOtherNOASSERTION

Ottehr Logo.

The production-ready, open-source EHR.

Ottehr.com

Last Commit Code Size Contributors GitHub Issues GitHub Stars GitHub Pull Requests GitHub Pull Requests Closed

Ottehr

This monorepo contains code for Ottehr telehealth.

Ottehr is a modern, modular EHR that began as a reference implementation for ZapEHR. It quickly outgrew "sample EHR" status and became the foundation for large-scale production EHR installations. Ottehr uses ZapEHR for back-end service endpoints, and requires a free ZapEHR account to run as-is, but you are welcome to modify and use a third-party service vendor or build your own service architecture. Ottehr is designed for developers, hopefully making it easy to fork, white-label, and build entire new classes of EHRs and health-tech products with a fraction of the effort of starting from scratch.

First Time Setup

For a video walkthrough, please see this getting started with ottehr video.

Node Installation

To manage Node.js versions efficiently, we recommend using Node Version Manager (nvm).

  1. Install nvm by following the instructions provided here.

  2. Use nvm to install Node.js version 18 with the following commands:

    nvm install 18
  3. Set Node.js version 18 as the default with:

    nvm alias default 18

After successful installation, verify the setup by executing:

node -v

This command should display the installed Node.js version.

Installing pnpm

To manage Node.js packages, we recommend using pnpm.

Using Homebrew or NPM (macOS/Linux):

The easiest way to get started is to use the brew or npm command:

brew install pnpm

OR

npm install -g pnpm

Manual Installation:

Alternatively, you can install pnpm using the official documentation.

Joining ZapEHR

You'll need a free ZapEHR account to run Ottehr. Register for access at zapehr.com. Follow these simple steps:

  1. Visit zapehr.com.
  2. Click on Free Access to initiate your early access request.

Once your request is received, the ZapEHR team will promptly reach out to you via email, providing the credentials you need to kickstart your ZapEHR journey.

For comprehensive guidance on getting started with ZapEHR, explore our technical documentation available at https://docs.zapehr.com/docs/welcome.

Setup Procedure

To proceed with this setup guide, it is assumed that you have access to a ZapEHR project. If you have done so, please follow these steps:

  1. Fork Ottehr: Visit https://github.com/masslight/ottehr/fork and fork the repository.

  2. Clone Your Fork: Copy the HTTPS clone link of your fork and execute the following command in your preferred folder:

    git clone https://github.com/{{your-git-user-name}}/{{ottehr-fork-name}}.git
  3. (Optional) Add Ottehr as Upstream: If desired, add the original Ottehr repository as an upstream remote:

    git remote add upstream git@github.com:masslight/ottehr.git
  4. Open Repository in Your Editor: Open the repository in your chosen editor; for example, in VSCode:

    code .vscode/Ottehr.code-workspace

Before proceeding, ensure that you have Node.js v18.x and pnpm installed on your machine.

Once these dependencies are in place, execute the setup script from the root directory:

sh scripts/setup.sh

The script will prompt you for the following information:

  • Your access token: Log in to your ZapEHR project, and copy the access token from the dashboard.
  • Your project ID: Find this on the ZapEHR project details page.
  • Your first provider email: This can be your email address.

Upon completion, the script will generate important links highlighted in magenta. Follow these steps:

  1. Locate the reset password link in the console output and visit the provided URL in your browser to set a password.
  2. Go to http://localhost:5173/dashboard and log in using the email provided to the script and the chosen password.
  3. Open a new tab and visit the waiting room URL, as output in the script logs (e.g., http://localhost:5173/{uuid}).
  4. Enter your name as the patient, initiate the call, and grant video/audio permissions.
  5. Accept the call from your provider tab.

You should now be in a video call with yourself.

Repository Structure

This repository uses a monorepo structure. Each package has its own code in its respective folder in packages/.

  • app - The static frontend website that patients use to join their telehealth visit and providers use to answer.
  • zambdas - The application's backend endpoints, deployed on the ZapEHR platform.

Each package has its own README explaining in more detail its purpose, as well as how to run locally and deploy (if applicable).

Run pnpm i at the root level to install dependencies for all packages in the monorepo. Then run pnpm start to start all packages locally.

Scripts

pnpm <script name>

If a script is environment specific, use:

pnpm <script name>:<env>

build

Builds all packages using the build script.

lint

Lints all packages using ESLint.

start

Environment specific: local, dev, dev2, testing, staging.

Starts all packages. If the env is excluded, defaults to local.

update

Interactively updates all dependencies to their latest versions, respecting ranges specified in package.json.