/careforge

Submission for the https://www.canvasmedical.com/fhir-api-prize

Primary LanguageTypeScriptMIT LicenseMIT

Careforge

Submission for the Canvas Medical FHIR API Challenge

Careforge is a cross-platform mobile app allowing patients to take control of their health data by viewing their medical records, making appointments, and more.

Screenshot of Homepage Screenshot of Chat

Screenshot of Appointments Screenshot of Profile

Architecture

Made with:

Diagram of Application Architecture

Development Setup

Prerequisites

Setup

  1. Rename .env.example to .env and fill in the necessary secrets for connecting to your Canvas FHIR API and EMR (see Canvas' docs for more detail).
  2. Run pnpm install from the root
  3. Run pnpm dev from the root
  4. Open the Expo Go app to load the React Native application on your device

Navigating the Codebase

.
├── apps
│   ├── expo
│   │   └── src
│   │       ├── app        --> app screens using expo-router
│   │       ├── components --> React components used throughout the app
│   │       ├── fhirpath   --> fhirpath helpers for extracting strings from FHIR resources
│   │       ├── theme      --> Color palette used from tailwind config
│   │       └── ...
│   └── nextjs             --> Nextjs serverless API handlers
├── packages
│   ├── api
│   │   └── src
│   │       ├── router     --> tRPC routers for each FHIR resource
│   │       └── ...
│   └── canvas
│       └── src
│           ├── models     --> Zod Schemas/TypeScript types for each FHIR Resource
│           ├── services   --> Services for each FHIR resource
│           └── ...
└── tooling
    ├── eslint             --> Shared eslint config
    ├── github             --> GitHub actions/CI utils
    ├── prettier           --> Shared prettier config
    ├── tailwind           --> Shared tailwind config
    └── typescript         --> Shared TypeScript config

Testing

  1. Run the model transformation unit tests with pnpm -F canvas test
  2. Lint the codebase with pnpm lint
  3. Typecheck the codebase with pnpm typecheck