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.
Made with:
- React Native + Expo + Nativewind
- tRPC + Zod
- Nextjs serverless API routes
- Turborepo + pnpm monorepo organization, dependency management, and task orchestration
- 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). - Run
pnpm install
from the root - Run
pnpm dev
from the root - Open the Expo Go app to load the React Native application on your device
.
├── 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
- Run the model transformation unit tests with
pnpm -F canvas test
- Lint the codebase with
pnpm lint
- Typecheck the codebase with
pnpm typecheck