Skip to content

Latest commit

 

History

History
248 lines (182 loc) · 8.08 KB

README.md

File metadata and controls

248 lines (182 loc) · 8.08 KB


Logo

scribeHC - AI Ambient Scribe for Healthcare

This is an open source AI ambient scribe app for healthcare. Record patient-doctor conversations and automatically generate SOAP notes based on the transcripts. Make sure you are HIPAA compliant before using this in a healthcare setting.

Table of Contents
  1. Demo
  2. Project Details
  3. Technical Details
  4. Installation and Usage
  5. Feedback
  6. Contributing
  7. License
  8. References

Demo

scribeHC-mobile-demo.MP4
scribeHC-web-demo.MP4

(back to top)

Project Details

Apps

  • Expo mobile app for recording patient-doctor conversations.
  • Next.js dashboard for managing conversations and SOAP notes.
  • FastAPI for processing audio recordings, generating transcripts, and generating SOAP notes.

Features

  • Animations: react-native-reanimated for OpenAI-like animations.
  • Authentication: Sign up with Google, Apple, or email. Clerk components for Next.js, custom components (signin, signup, OTP, password reset) for Expo.
  • Audio Recording: Record patient-doctor conversations using expo-av.
  • Transcripts + SOAP Notes: Generated in FastAPI using OpenAI APIs.
  • Web Dashboard: Next.js app for managing SOAP notes.
  • Note Editor: Edit generated SOAP notes using novel.

Refer to building-hipaa-compliant for more information on making this project HIPAA compliant.

(back to top)

Technical Details

Tech Stack

.github
  └─ workflows
        └─ CI with pnpm cache setup
.vscode
  ├─ Recommended extensions and settings for VSCode users
  └─ Multi-root Workspaces for smoother python experience in monorepo
apps
  ├─ expo
  |   ├─ Expo SDK 51
  |   ├─ React Native using React 18
  |   ├─ Navigation using Expo Router
  |   ├─ Tailwind using NativeWind
  |   ├─ Typesafe API calls using tRPC
  |   └─ Jest + React Native Testing Library for unit tests
  ├─ nextjs
  |   ├─ Next.js 14
  |   ├─ React 18
  |   ├─ Tailwind CSS
  |   └─ E2E Typesafe API Server & Client
  └─ fastapi
      ├─ FastAPI for uploading and processing audio recordings
      ├─ OpenAI Whisper for transcription
      └─ OpenAI Chat Completions API for generating SOAP notes from transcripts
packages
  ├─ api
  |   ├─ tRPC v11 router definition.
  |   └─ Generated TypeScript client from FastAPI OpenAPI spec.
  ├─ db
  |   └─ Typesafe db calls using Drizzle & Amazon RDS
  ├─ ui
  |   └─ shadcn/ui.
  └─ validators
      └─ Zod schemas for repo-wide type-safety and validation.
infra
  └─ SST Ion resources
tooling
  ├─ eslint
  |   └─ shared, fine-grained, eslint presets
  ├─ prettier
  |   └─ shared prettier configuration
  ├─ tailwind
  |   └─ shared tailwind configuration
  ├─ github
  |   └─ shared github actions
  └─ typescript
      └─ shared tsconfig you can extend from

In this project, we use @shc as a placeholder for package names. As a user, you might want to replace it with your own organization or project name. You can use find-and-replace to change all the instances of @shc to something like @my-company or @project-name.

(back to top)

Installation and Usage

1. Setup dependencies

# Install dependencies
pnpm i

# Configure environment variables
# There is an `.env.example` in the root directory you can use for reference
cp .env.example .env
cp .env.example .env.local

Configure AWS credentials https://docs.sst.dev/advanced/iam-credentials#loading-from-a-file

Install the SST CLI https://ion.sst.dev/docs/reference/cli

# Run SST Ion (run this in apps/nextjs)
pnpm dev

# Push the Drizzle schema to the RDS database
pnpm db:generate
pnpm db:migrate

2. Configure Expo dev-script

Use iOS Simulator

  1. Make sure you have XCode and XCommand Line Tools installed as shown on expo docs.

    NOTE: If you just installed XCode, or if you have updated it, you need to open the simulator manually once. Run npx expo start in the root dir, and then enter I to launch Expo Go. After the manual launch, you can run pnpm dev in the root directory.

    +  "dev:ios": "expo start --ios",
  2. Run pnpm dev:ios at apps/expo to open the iOS simulator.

Use Android Emulator

  1. Install Android Studio tools as shown on expo docs.

  2. Run pnpm dev:android script at apps/expo to open the Android emulator.

    +  "dev:android": "expo start --android",

(back to top)

Feedback

Share your thoughts in Discussions

(back to top)

Contributing

We welcome contributions! Find out how you can contribute to the project in CONTRIBUTING.md: Contributing Guidelines

A table of avatars from the project's contributors

Made with contrib.rocks

(back to top)

License

Distributed under the MIT License. See LICENSE for more information.

(back to top)

References

This repo originates from create-t3-turbo. Feel free to check out the project if you are running into issues with running/deploying the starter.

Thanks as well to the following:

(back to top)