Skip to content

Latest commit

 

History

History
246 lines (169 loc) · 10.2 KB

README.md

File metadata and controls

246 lines (169 loc) · 10.2 KB


Logo

PatientX Starter (by Trust the Process)

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

Contributors Forks Stars Issues MIT License Linkedin

Table of Contents
  1. Key Features and Functionalities
  2. Project Details
  3. Technical Details
  4. Installation and Usage
  5. Roadmap
  6. Contributing
  7. License
  8. References

Key Features and Functionalities

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

(back to top)

Project Details

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.

(back to top)

Technical Details

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.

Does this pattern leak backend code to my client applications?

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.

(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

# Push the Drizzle schema to the database **NOTE: Not integrated yet because of remote data restrictions**
pnpm db:push

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": "expo start --ios",
  2. Run pnpm dev at the project root folder.

Use Android Emulator

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

  2. Change the dev script at apps/expo/package.json to open the Android emulator.

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

(back to top)

Roadmap

Upcoming Features:

  1. 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

(back to top)

Contributing

We welcome contributions! Find out how you can contribute to our 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.

(back to top)