We built a better patient experience for accessing healthcare services using the Canvas Medical FHIR API. This software starter kit enables developers, healthcare providers, and stakeholders to rapidly deploy and customize a patient experience care pipeline, leveraging the power of the Canvas Medical FHIR API. Get your software off the ground quickly so you can start treating patients!
Report Bug
·
Request Feature
Table of Contents
Our patient experience starter offers a suite of features to enhance patient engagement and streamline healthcare processes.
-
New patient onboarding: Patients can sign up for an account and provide basic info. There is a staging area so you can ensure patients complete self-registration before the initial visit. This can include entering personal info and insurance coverage, completing necessary consents and questionnaires, and providing basic medical history. Once everything is filled out, the patient can schedule an initial consultation.
-
Patient Portal: Provides easy access to a patient's health records, allows patients to join and book appointments, take video calls with their providers, view and manage billing, and message their care team.
-
View health record: Patients can see their basic medical history information, inclusive of completed forms (consents, questionnaires), appointment history, conditions, medications, immunizations, allergies, imaging & lab results, clinical notes, and goals. Their health record is automatically updated after changes, such as during a video appointment.
-
Join and book appointments: Patients can join and schedule appointments with their known care team or an otherwise available clinician. Reminders and alerts can be implemented to reduce no-shows.
-
Billing for services: Patients can view billing statements as PDFs and provide payment.
PatientX.Starter.Video.Walkthrough.mp4
Please refer to our detailed PROJECT.md
document: Project Details
This should give you a comprehensive understanding of the patient experience starter and our design philosophy.
Integration with Canvas Medical FHIR API: We have created a fully type-safe Zod client to work with FHIR APIs.
This starter uses Turborepo and contains:
.github
└─ workflows
└─ CI with pnpm cache setup
.vscode
└─ Recommended extensions and settings for VSCode users
apps
├─ auth-proxy **NOTE: Not integrated yet because of remote data restrictions**
| ├─ Nitro server to proxy OAuth requests in preview deployments
| └─ Uses Auth.js Core
├─ expo
| ├─ Expo SDK 49
| ├─ React Native using React 18
| ├─ Navigation using Expo Router
| ├─ Tailwind using Nativewind
| └─ Typesafe API calls using tRPC
└─ next.js
├─ Next.js 14
├─ React 18
├─ Tailwind CSS
└─ E2E Typesafe API Server & Client
packages
├─ api
| └─ tRPC v10 router definition. Type-safe Canvas FHIR API Zod client.
├─ shared
| └─ Zod schemas for app-wide type-safety and validation.
├─ ui
| └─ shadcn/ui. **NOTE: Only used for the Next.js app at this time**
├─ auth
| └─ Authentication using next-auth. **NOTE: Not integrated yet because of remote data restrictions**
└─ db
└─ Typesafe db calls using Drizzle & Planetscale **NOTE: Not integrated yet because of remote data restrictions**
tooling
├─ eslint
| └─ shared, fine-grained, eslint presets
├─ prettier
| └─ shared prettier configuration
├─ tailwind
| └─ shared tailwind configuration
└─ typescript
└─ shared tsconfig you can extend from
In this template, we use
@acme
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@acme
to something like@my-company
or@project-name
.
No, it does not. The api
package should only be a production dependency in the Next.js application where it's served. The Expo app, and all other apps you may add in the future, should only add the api
package as a dev dependency. This lets you have full typesafety in your client applications, while keeping your backend code safe. We have created a separate shared
package that allows us to share runtime code between the client and server, such as input validation schemas.
# 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
# Push the Drizzle schema to the database **NOTE: Not integrated yet because of remote data restrictions**
pnpm db:push
-
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 enterI
to launch Expo Go. After the manual launch, you can runpnpm dev
in the root directory.+ "dev": "expo start --ios",
-
Run
pnpm dev
at the project root folder.
-
Install Android Studio tools as shown on expo docs.
-
Change the
dev
script atapps/expo/package.json
to open the Android emulator.+ "dev": "expo start --android",
Upcoming Features:
- Implement new Canvas auth solution and patient-scoped API tokens. (When it's ready)
Your feedback is valuable! Share your thoughts and ideas for future enhancements in Discussions
We welcome contributions! Find out how you can contribute to our project in CONTRIBUTING.md
: Contributing Guidelines
Made with contrib.rocks
Distributed under the MIT License. See LICENSE
for more information.
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.