Skip to Content
Patient GraphOverview

Patient Graph

The Patient Graph is Loop Health’s unified clinical data system. It serves as the single source of truth for all patient health data — profiles, lab results, protocols, events, treatments, prescriptions, and wearable data.

Purpose

The Patient Graph solves the problem of fragmented health data by providing:

  • Unified Data Model — All patient health data in one schema with consistent access patterns
  • RBAC Security — Role-based access control with row-level ownership checks
  • Complete Audit Trail — Every data access is logged for HIPAA compliance
  • Identity Resolution — Cross-system identity mapping (Clerk, Rimo, BigCommerce)
  • Clinical API — RESTful Hono API with Zod validation and consistent response formats

Architecture

The Patient Graph consists of three layers:

1. API Layer (apps/patient-graph)

A standalone Hono HTTP API deployed on Fly.io. Handles authentication (Clerk JWT), RBAC, rate limiting, and audit logging.

2. Data Access Layer (packages/patient-graph)

Drizzle ORM repositories for type-safe database operations. Provides createRepositories() for profiles, labs, protocols, events, and more.

3. Schema Layer (packages/shared)

Drizzle schema definitions and Zod validation schemas shared across all consumers. Defines tables, enums, and validation rules.

Key Features

FeatureDescription
ProfilesPatient demographics, conditions, medications, subscription tier
Lab ResultsParsed biomarker data from lab report PDFs
ProtocolsTreatment protocols with compounds, dosages, and schedules
EventsClinical timeline (lab uploads, protocol changes, check-ins)
TreatmentsRimo Health treatment lifecycle tracking
PrescriptionsPrescription fulfillment from Rimo pharmacy
Conversation HistoryCross-channel AI conversation logs
Wearable DataOura, Whoop, Dexcom, Libre metrics
Audit LogsRBAC access logs for compliance

Consumers

ConsumerAccess Method
Luna AIDirect repository access via @loop/patient-graph package
Consumer AppHTTP client via @loop/patient-graph-client
Admin DashboardProxied API calls through admin app
Trigger.dev JobsDirect repository access