feat: complete Jane App feature set with Telehealth, Retail POS, Memberships, Multi-Discipline Charting, Waitlist & RBAC

This commit is contained in:
2026-09-05 15:15:35 -07:00
parent e681f066bb
commit dd5057d4e3
9 changed files with 1641 additions and 102 deletions
+65 -9
View File
@@ -1,3 +1,7 @@
export type StaffRole = 'doctor' | 'front_desk' | 'billing_admin';
export type ClinicalDiscipline = 'chiropractic' | 'physical_therapy' | 'acupuncture' | 'massage_therapy';
export interface ClinicTenant {
id: string;
name: string;
@@ -23,7 +27,7 @@ export interface Provider {
tenantId: string;
name: string;
title: string;
credentials: string; // e.g., "D.C., CCSP"
credentials: string;
specialty: string;
npi: string;
email: string;
@@ -36,7 +40,7 @@ export interface CarePlan {
title: string;
totalVisits: number;
completedVisits: number;
frequency: string; // e.g. "2x / week for 6 weeks"
frequency: string;
targetCondition: string;
startDate: string;
status: 'on_track' | 'lagging' | 'at_risk' | 'completed';
@@ -60,6 +64,8 @@ export interface Patient {
status: 'active' | 'dropout_risk' | 'reactivated' | 'discharged';
chiefComplaint: string;
daysSinceLastVisit: number;
activeMembership?: string;
packageCreditsRemaining?: number;
}
export type AppointmentStatus = 'booked' | 'confirmed' | 'arrived' | 'in_room' | 'completed' | 'no_show';
@@ -72,20 +78,21 @@ export interface Appointment {
patientPhone: string;
providerId: string;
providerName: string;
date: string; // YYYY-MM-DD
time: string; // HH:MM AM/PM
date: string;
time: string;
durationMinutes: number;
serviceType: string;
status: AppointmentStatus;
room: string;
notes?: string;
fee: number;
isTelehealth?: boolean;
}
export interface SpinalAdjustmentEntry {
vertebra: string; // e.g. "C2", "L5"
vertebra: string;
region: 'Cervical' | 'Thoracic' | 'Lumbar' | 'Pelvis/Sacrum';
listing: string; // e.g., "Right Lateral / Posterior"
listing: string;
technique: 'Diversified' | 'Thompson Drop' | 'Activator' | 'Gonstead' | 'Webster' | 'Flexion-Distraction';
notes?: string;
}
@@ -111,6 +118,7 @@ export interface SoapNote {
appointmentId?: string;
date: string;
status: 'draft' | 'signed';
discipline: ClinicalDiscipline;
subjective: string;
objective: string;
assessment: string;
@@ -118,7 +126,7 @@ export interface SoapNote {
spinalAdjustments: SpinalAdjustmentEntry[];
icd10Codes: Icd10CodeItem[];
cptCodes: CptCodeItem[];
vasScore: number; // 0-10
vasScore: number;
signedAt?: string;
signedBy?: string;
}
@@ -145,7 +153,7 @@ export interface Superbill {
clinicAddress: string;
clinicTaxId: string;
dateOfService: string;
posCode: string; // Place of Service "11 - Office"
posCode: string;
icd10Codes: Icd10CodeItem[];
items: SuperbillLineItem[];
totalAmount: number;
@@ -165,7 +173,7 @@ export interface IntakeSubmission {
chiefComplaints: string[];
painAreas: string[];
vasScore: number;
painNature: string[]; // ['Sharp', 'Dull Ache', 'Shooting']
painNature: string[];
symptomsOnset: string;
medications: string;
priorChiropractic: boolean;
@@ -173,3 +181,51 @@ export interface IntakeSubmission {
submittedAt: string;
status: 'pending_review' | 'imported_to_chart';
}
export interface RetailProduct {
id: string;
tenantId: string;
name: string;
sku: string;
category: 'Supplements' | 'Orthotics & Pillows' | 'Topical & Pain Relief' | 'Rehab Gear';
price: number;
cost: number;
stockQty: number;
reorderPoint: number;
supplier: string;
}
export interface WellnessMembership {
id: string;
tenantId: string;
name: string;
monthlyFee: number;
includedVisits: number;
additionalVisitDiscount: string;
activeMembers: number;
mrrContribution: number;
description: string;
}
export interface PrePaidPackage {
id: string;
tenantId: string;
name: string;
totalVisits: number;
price: number;
perVisitRate: number;
savings: string;
activeSold: number;
}
export interface WaitlistEntry {
id: string;
patientName: string;
phone: string;
providerName: string;
requestedService: string;
preferredDays: string;
preferredTimeRange: string;
notes: string;
status: 'waiting' | 'notified' | 'filled';
}