feat: Initial Mediusa Clinic OS practice management platform ('Jane App But Better')
This commit is contained in:
@@ -0,0 +1,175 @@
|
||||
export interface ClinicTenant {
|
||||
id: string;
|
||||
name: string;
|
||||
slug: string;
|
||||
domain: string;
|
||||
phone: string;
|
||||
email: string;
|
||||
address: string;
|
||||
cityStateZip: string;
|
||||
npi: string;
|
||||
taxId: string;
|
||||
logoText: string;
|
||||
brandColor: string;
|
||||
accentColor: string;
|
||||
plan: 'Starter' | 'Pro Clinic' | 'Multi-Doc Enterprise';
|
||||
mrr: number;
|
||||
stripeConnected: boolean;
|
||||
createdAt: string;
|
||||
}
|
||||
|
||||
export interface Provider {
|
||||
id: string;
|
||||
tenantId: string;
|
||||
name: string;
|
||||
title: string;
|
||||
credentials: string; // e.g., "D.C., CCSP"
|
||||
specialty: string;
|
||||
npi: string;
|
||||
email: string;
|
||||
phone: string;
|
||||
avatarUrl: string;
|
||||
color: string;
|
||||
}
|
||||
|
||||
export interface CarePlan {
|
||||
title: string;
|
||||
totalVisits: number;
|
||||
completedVisits: number;
|
||||
frequency: string; // e.g. "2x / week for 6 weeks"
|
||||
targetCondition: string;
|
||||
startDate: string;
|
||||
status: 'on_track' | 'lagging' | 'at_risk' | 'completed';
|
||||
}
|
||||
|
||||
export interface Patient {
|
||||
id: string;
|
||||
tenantId: string;
|
||||
firstName: string;
|
||||
lastName: string;
|
||||
email: string;
|
||||
phone: string;
|
||||
dob: string;
|
||||
gender: string;
|
||||
address: string;
|
||||
insuranceName: string;
|
||||
insuranceId: string;
|
||||
carePlan: CarePlan;
|
||||
lastVisitDate: string;
|
||||
nextAppointmentDate?: string;
|
||||
status: 'active' | 'dropout_risk' | 'reactivated' | 'discharged';
|
||||
chiefComplaint: string;
|
||||
daysSinceLastVisit: number;
|
||||
}
|
||||
|
||||
export type AppointmentStatus = 'booked' | 'confirmed' | 'arrived' | 'in_room' | 'completed' | 'no_show';
|
||||
|
||||
export interface Appointment {
|
||||
id: string;
|
||||
tenantId: string;
|
||||
patientId: string;
|
||||
patientName: string;
|
||||
patientPhone: string;
|
||||
providerId: string;
|
||||
providerName: string;
|
||||
date: string; // YYYY-MM-DD
|
||||
time: string; // HH:MM AM/PM
|
||||
durationMinutes: number;
|
||||
serviceType: string;
|
||||
status: AppointmentStatus;
|
||||
room: string;
|
||||
notes?: string;
|
||||
fee: number;
|
||||
}
|
||||
|
||||
export interface SpinalAdjustmentEntry {
|
||||
vertebra: string; // e.g. "C2", "L5"
|
||||
region: 'Cervical' | 'Thoracic' | 'Lumbar' | 'Pelvis/Sacrum';
|
||||
listing: string; // e.g., "Right Lateral / Posterior"
|
||||
technique: 'Diversified' | 'Thompson Drop' | 'Activator' | 'Gonstead' | 'Webster' | 'Flexion-Distraction';
|
||||
notes?: string;
|
||||
}
|
||||
|
||||
export interface CptCodeItem {
|
||||
code: string;
|
||||
description: string;
|
||||
fee: number;
|
||||
}
|
||||
|
||||
export interface Icd10CodeItem {
|
||||
code: string;
|
||||
description: string;
|
||||
}
|
||||
|
||||
export interface SoapNote {
|
||||
id: string;
|
||||
tenantId: string;
|
||||
patientId: string;
|
||||
patientName: string;
|
||||
providerId: string;
|
||||
providerName: string;
|
||||
appointmentId?: string;
|
||||
date: string;
|
||||
status: 'draft' | 'signed';
|
||||
subjective: string;
|
||||
objective: string;
|
||||
assessment: string;
|
||||
plan: string;
|
||||
spinalAdjustments: SpinalAdjustmentEntry[];
|
||||
icd10Codes: Icd10CodeItem[];
|
||||
cptCodes: CptCodeItem[];
|
||||
vasScore: number; // 0-10
|
||||
signedAt?: string;
|
||||
signedBy?: string;
|
||||
}
|
||||
|
||||
export interface SuperbillLineItem {
|
||||
cptCode: string;
|
||||
description: string;
|
||||
units: number;
|
||||
rate: number;
|
||||
total: number;
|
||||
}
|
||||
|
||||
export interface Superbill {
|
||||
id: string;
|
||||
tenantId: string;
|
||||
invoiceNumber: string;
|
||||
patientId: string;
|
||||
patientName: string;
|
||||
patientDob: string;
|
||||
patientAddress: string;
|
||||
providerName: string;
|
||||
providerNpi: string;
|
||||
clinicName: string;
|
||||
clinicAddress: string;
|
||||
clinicTaxId: string;
|
||||
dateOfService: string;
|
||||
posCode: string; // Place of Service "11 - Office"
|
||||
icd10Codes: Icd10CodeItem[];
|
||||
items: SuperbillLineItem[];
|
||||
totalAmount: number;
|
||||
patientPaid: number;
|
||||
balanceDue: number;
|
||||
paymentMethod: 'Stripe Card' | 'HSA/FSA' | 'Cash' | 'Unpaid';
|
||||
generatedAt: string;
|
||||
}
|
||||
|
||||
export interface IntakeSubmission {
|
||||
id: string;
|
||||
tenantId: string;
|
||||
patientName: string;
|
||||
dob: string;
|
||||
phone: string;
|
||||
email: string;
|
||||
chiefComplaints: string[];
|
||||
painAreas: string[];
|
||||
vasScore: number;
|
||||
painNature: string[]; // ['Sharp', 'Dull Ache', 'Shooting']
|
||||
symptomsOnset: string;
|
||||
medications: string;
|
||||
priorChiropractic: boolean;
|
||||
signatureName: string;
|
||||
submittedAt: string;
|
||||
status: 'pending_review' | 'imported_to_chart';
|
||||
}
|
||||
Reference in New Issue
Block a user