/** * Clinician Decision Support System * * Provides clinical decision support features: * - Treatment recommendations with explanations * - Override management and documentation * - Tumor board integration * - Evidence summaries * - Risk-benefit visualization * - Alert acknowledgment workflows * * Designed to augment (not replace) clinical judgment. */ import { EventEmitter } from 'events'; export interface ClinicalRecommendation { id: string; patientId: string; generatedAt: Date; validUntil: Date; primaryRecommendation: { regimen: string; drugs: { name: string; dose: string; schedule: string; route: string; }[]; setting: 'neoadjuvant' | 'adjuvant' | 'first-line' | 'second-line' | 'third-line-plus' | 'maintenance'; confidenceScore: number; }; alternativeOptions: { regimen: string; drugs: string[]; confidenceScore: number; comparisonToPrimary: string; }[]; supportingEvidence: { type: 'clinical-trial' | 'guideline' | 'real-world' | 'expert-consensus'; source: string; description: string; strength: 'strong' | 'moderate' | 'limited'; url?: string; }[]; biomarkerRationale: { biomarker: string; status: string; impact: string; evidenceLevel: string; }[]; predictions: { responseRate: { value: number; ci95: [number, number]; }; medianPFS: { value: number; ci95: [number, number]; unit: 'months'; }; medianOS: { value: number; ci95: [number, number]; unit: 'months'; }; grade3PlusToxicity: { value: number; topRisks: string[]; }; qualityOfLife: { score: number; considerations: string[]; }; }; clinicalConsiderations: { category: 'efficacy' | 'safety' | 'practical' | 'cost'; consideration: string; importance: 'critical' | 'important' | 'notable'; }[]; monitoringPlan: { item: string; frequency: string; rationale: string; }[]; clinicalTrialOptions?: { nctId: string; title: string; phase: string; matchingBiomarkers: string[]; distance?: number; }[]; status: 'active' | 'accepted' | 'modified' | 'rejected' | 'expired'; reviewedBy?: string; reviewedAt?: Date; } export interface ClinicianOverride { id: string; recommendationId: string; patientId: string; clinicianId: string; clinicianName: string; clinicianRole: string; timestamp: Date; overrideType: 'full' | 'partial' | 'modification'; originalRecommendation: { regimen: string; drugs: string[]; }; selectedTreatment: { regimen: string; drugs: string[]; doses?: string[]; }; reason: { category: OverrideCategory; freeText: string; clinicalJustification: string; }; riskAcknowledgment?: { acknowledgedRisks: string[]; mitigationPlan?: string; signature: string; timestamp: Date; }; supervisorApproval?: { required: boolean; supervisorId?: string; supervisorName?: string; approved?: boolean; approvalTimestamp?: Date; comments?: string; }; auditStatus: 'pending-review' | 'reviewed' | 'flagged'; } export type OverrideCategory = 'patient-preference' | 'comorbidity' | 'prior-treatment' | 'access-availability' | 'clinical-trial' | 'contraindication' | 'organ-function' | 'performance-status' | 'cost-coverage' | 'clinical-judgment' | 'other'; export interface TumorBoardCase { id: string; patientId: string; scheduledDate: Date; status: 'scheduled' | 'presented' | 'completed' | 'deferred'; presenter: { id: string; name: string; role: string; department: string; }; attendees: { id: string; name: string; specialty: string; present: boolean; }[]; caseSummary: { diagnosis: string; stage: string; relevantHistory: string; currentStatus: string; questionForBoard: string; }; systemRecommendation?: ClinicalRecommendation; boardDecision?: { recommendation: string; rationale: string; votingResult?: { agree: number; disagree: number; abstain: number; }; dissenting_opinions?: string[]; followUpPlan: string; recordedBy: string; timestamp: Date; }; actions?: { action: string; assignedTo: string; dueDate?: Date; completed: boolean; }[]; } export interface AlertAcknowledgment { alertId: string; alertType: string; severity: 'critical' | 'high' | 'moderate' | 'low'; acknowledgedBy: string; acknowledgedAt: Date; action: 'proceed' | 'modify' | 'cancel' | 'defer'; reason?: string; signature: string; } export declare class ClinicalDecisionSupportService extends EventEmitter { private recommendations; private overrides; private tumorBoardCases; private alertAcknowledgments; constructor(); /** * Generate a clinical recommendation */ generateRecommendation(params: { patientId: string; cancerType: string; stage: string; biomarkers: { name: string; value: string | number; status?: string; }[]; genomicAlterations: { gene: string; alteration: string; }[]; priorTherapies?: string[]; performanceStatus?: number; comorbidities?: string[]; patientPreferences?: string[]; }): Promise; /** * Get recommendation by ID */ getRecommendation(recommendationId: string): ClinicalRecommendation | undefined; /** * Get recommendations for a patient */ getPatientRecommendations(patientId: string): ClinicalRecommendation[]; /** * Accept a recommendation */ acceptRecommendation(recommendationId: string, clinicianId: string, clinicianName: string): Promise; /** * Record an override */ recordOverride(override: Omit): Promise; /** * Check if supervisor approval is required */ private requiresSupervisorApproval; /** * Approve an override */ approveOverride(overrideId: string, supervisorId: string, supervisorName: string, approved: boolean, comments?: string): Promise; /** * Get overrides for a patient */ getPatientOverrides(patientId: string): ClinicianOverride[]; /** * Get pending approvals for a supervisor */ getPendingApprovals(): ClinicianOverride[]; /** * Create a tumor board case */ createTumorBoardCase(caseData: Omit): Promise; /** * Record tumor board decision */ recordTumorBoardDecision(caseId: string, decision: TumorBoardCase['boardDecision']): Promise; /** * Acknowledge an alert */ acknowledgeAlert(acknowledgment: Omit): Promise; /** * Generate explanation for a recommendation */ generateExplanation(recommendation: ClinicalRecommendation): { summary: string; detailedRationale: string[]; keyFactors: { factor: string; impact: 'positive' | 'negative' | 'neutral'; weight: number; }[]; uncertainties: string[]; alternativeConsiderations: string[]; }; /** * Generate risk-benefit analysis */ generateRiskBenefitAnalysis(recommendation: ClinicalRecommendation): { benefits: { benefit: string; magnitude: 'high' | 'moderate' | 'low'; confidence: number; }[]; risks: { risk: string; probability: number; severity: 'severe' | 'moderate' | 'mild'; manageable: boolean; }[]; overallAssessment: string; numberNeededToTreat?: number; numberNeededToHarm?: number; }; private determinePrimaryRecommendation; private determineAlternatives; private gatherEvidence; private generateBiomarkerRationale; private getBiomarkerImpact; private getBiomarkerEvidenceLevel; private generatePredictions; private identifyConsiderations; private generateMonitoringPlan; private determineImpact; private determineWeight; private generateOverallAssessment; /** * Export decision data for quality review */ exportDecisionData(startDate: Date, endDate: Date): { recommendations: ClinicalRecommendation[]; overrides: ClinicianOverride[]; tumorBoardCases: TumorBoardCase[]; summary: { totalRecommendations: number; acceptanceRate: number; overrideRate: number; commonOverrideReasons: { reason: OverrideCategory; count: number; }[]; }; }; } export default ClinicalDecisionSupportService; //# sourceMappingURL=decisionSupport.d.ts.map