@erosolaraijs/cure 1.0.2 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/cure.d.ts +1 -1
- package/dist/bin/cure.js +155 -66
- package/dist/bin/cure.js.map +1 -1
- package/dist/clinician/index.d.ts +1 -1
- package/dist/clinician/index.d.ts.map +1 -1
- package/dist/clinician/index.js +1 -1
- package/dist/clinician/index.js.map +1 -1
- package/dist/compliance/index.d.ts +1 -1
- package/dist/compliance/index.d.ts.map +1 -1
- package/dist/compliance/index.js +1 -1
- package/dist/compliance/index.js.map +1 -1
- package/dist/index.d.ts +60 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +96 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/clinicalTrials/index.d.ts +1 -1
- package/dist/integrations/clinicalTrials/index.d.ts.map +1 -1
- package/dist/integrations/clinicalTrials/index.js +1 -1
- package/dist/integrations/clinicalTrials/index.js.map +1 -1
- package/dist/integrations/ehr/index.d.ts +1 -1
- package/dist/integrations/ehr/index.d.ts.map +1 -1
- package/dist/integrations/ehr/index.js +1 -1
- package/dist/integrations/ehr/index.js.map +1 -1
- package/dist/integrations/genomics/index.d.ts +1 -1
- package/dist/integrations/genomics/index.d.ts.map +1 -1
- package/dist/integrations/genomics/index.js +1 -1
- package/dist/integrations/genomics/index.js.map +1 -1
- package/dist/ml/index.d.ts +1 -1
- package/dist/ml/index.d.ts.map +1 -1
- package/dist/ml/index.js +1 -1
- package/dist/ml/index.js.map +1 -1
- package/dist/orchestrator/index.d.ts +5 -0
- package/dist/orchestrator/index.d.ts.map +1 -0
- package/dist/orchestrator/index.js +5 -0
- package/dist/orchestrator/index.js.map +1 -0
- package/dist/orchestrator/realWorldOncology.d.ts +351 -0
- package/dist/orchestrator/realWorldOncology.d.ts.map +1 -0
- package/dist/orchestrator/realWorldOncology.js +425 -0
- package/dist/orchestrator/realWorldOncology.js.map +1 -0
- package/dist/patient/index.d.ts +1 -1
- package/dist/patient/index.d.ts.map +1 -1
- package/dist/patient/index.js +1 -1
- package/dist/patient/index.js.map +1 -1
- package/dist/safety/index.d.ts +1 -1
- package/dist/safety/index.d.ts.map +1 -1
- package/dist/safety/index.js +1 -1
- package/dist/safety/index.js.map +1 -1
- package/dist/validation/index.d.ts +1 -1
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +1 -1
- package/dist/validation/index.js.map +1 -1
- package/package.json +1 -1
- package/src/bin/cure.ts +166 -70
- package/src/clinician/index.ts +11 -0
- package/src/compliance/index.ts +19 -0
- package/src/index.ts +268 -0
- package/src/integrations/clinicalTrials/index.ts +21 -0
- package/src/integrations/ehr/index.ts +32 -0
- package/src/integrations/genomics/index.ts +23 -0
- package/src/ml/index.ts +15 -0
- package/src/orchestrator/index.ts +11 -0
- package/src/orchestrator/realWorldOncology.ts +803 -0
- package/src/patient/index.ts +14 -0
- package/src/safety/index.ts +14 -0
- package/src/validation/index.ts +10 -0
- package/dist/integrations/index.d.ts +0 -7
- package/dist/integrations/index.d.ts.map +0 -1
- package/dist/integrations/index.js +0 -10
- package/dist/integrations/index.js.map +0 -1
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Real-World Oncology Orchestration Service
|
|
3
|
+
*
|
|
4
|
+
* ██████╗ ███████╗ █████╗ ██╗ ██╗ ██╗ ██████╗ ██████╗ ██╗ ██████╗
|
|
5
|
+
* ██╔══██╗██╔════╝██╔══██╗██║ ██║ ██║██╔═══██╗██╔══██╗██║ ██╔══██╗
|
|
6
|
+
* ██████╔╝█████╗ ███████║██║ ██║ █╗ ██║██║ ██║██████╔╝██║ ██║ ██║
|
|
7
|
+
* ██╔══██╗██╔══╝ ██╔══██║██║ ██║███╗██║██║ ██║██╔══██╗██║ ██║ ██║
|
|
8
|
+
* ██║ ██║███████╗██║ ██║███████╗ ╚███╔███╔╝╚██████╔╝██║ ██║███████╗██████╔╝
|
|
9
|
+
* ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚══════╝ ╚══╝╚══╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═════╝
|
|
10
|
+
* ██████╗ ███╗ ██╗ ██████╗ ██████╗ ██╗ ██████╗ ██████╗██╗ ██╗
|
|
11
|
+
* ██╔═══██╗████╗ ██║██╔════╝██╔═══██╗██║ ██╔═══██╗██╔════╝╚██╗ ██╔╝
|
|
12
|
+
* ██║ ██║██╔██╗ ██║██║ ██║ ██║██║ ██║ ██║██║ ███╗╚████╔╝
|
|
13
|
+
* ██║ ██║██║╚██╗██║██║ ██║ ██║██║ ██║ ██║██║ ██║ ╚██╔╝
|
|
14
|
+
* ╚██████╔╝██║ ╚████║╚██████╗╚██████╔╝███████╗╚██████╔╝╚██████╔╝ ██║
|
|
15
|
+
* ╚═════╝ ╚═╝ ╚═══╝ ╚═════╝ ╚═════╝ ╚══════╝ ╚═════╝ ╚═════╝ ╚═╝
|
|
16
|
+
*
|
|
17
|
+
* This service orchestrates all components of the real-world precision oncology system:
|
|
18
|
+
* - EHR Integration (Epic, Cerner via HL7 FHIR)
|
|
19
|
+
* - Genomic Platforms (Foundation Medicine, Guardant Health, Tempus)
|
|
20
|
+
* - Clinical Trials (ClinicalTrials.gov)
|
|
21
|
+
* - HIPAA Compliance (Audit, Consent, Encryption, Access Control)
|
|
22
|
+
* - ML Outcome Prediction (Response, Survival, Toxicity, Resistance)
|
|
23
|
+
* - Drug Safety (Interactions, Contraindications, Pharmacogenomics)
|
|
24
|
+
* - Validation Framework (Retrospective validation, Concordance analysis)
|
|
25
|
+
* - Clinician Decision Support (Recommendations, Overrides, Tumor Board)
|
|
26
|
+
* - Patient Portal (Symptoms, Adherence, QoL, Messaging)
|
|
27
|
+
*/
|
|
28
|
+
import { CancerTreatmentCapabilityModule } from '../capabilities/cancerTreatmentCapability.js';
|
|
29
|
+
export class RealWorldOncologyService {
|
|
30
|
+
config;
|
|
31
|
+
cancerCapability;
|
|
32
|
+
// Service placeholders - in production these would be actual instances
|
|
33
|
+
ehrService = null;
|
|
34
|
+
genomicsService = null;
|
|
35
|
+
trialsService = null;
|
|
36
|
+
complianceService = null;
|
|
37
|
+
mlService = null;
|
|
38
|
+
safetyService = null;
|
|
39
|
+
validationService = null;
|
|
40
|
+
decisionSupportService = null;
|
|
41
|
+
patientPortalService = null;
|
|
42
|
+
constructor(config = {}) {
|
|
43
|
+
this.config = this.mergeDefaultConfig(config);
|
|
44
|
+
this.cancerCapability = new CancerTreatmentCapabilityModule();
|
|
45
|
+
console.log('═══════════════════════════════════════════════════════════════════════════════');
|
|
46
|
+
console.log(' REAL-WORLD ONCOLOGY SERVICE INITIALIZED');
|
|
47
|
+
console.log('═══════════════════════════════════════════════════════════════════════════════');
|
|
48
|
+
console.log(` EHR Integration: ${this.config.ehr.enabled ? `Enabled (${this.config.ehr.vendor})` : 'Disabled'}`);
|
|
49
|
+
console.log(` Genomics: ${this.config.genomics.enabled ? `Enabled (${this.config.genomics.platforms.join(', ')})` : 'Disabled'}`);
|
|
50
|
+
console.log(` Clinical Trials: ${this.config.clinicalTrials.enabled ? 'Enabled' : 'Disabled'}`);
|
|
51
|
+
console.log(` HIPAA Compliance: ${this.config.compliance.enabled ? 'Enabled' : 'Disabled'}`);
|
|
52
|
+
console.log(` ML Predictions: ${this.config.ml.enabled ? `Enabled (v${this.config.ml.modelVersion})` : 'Disabled'}`);
|
|
53
|
+
console.log(` Safety Checking: ${this.config.safety.enabled ? `Enabled (strict: ${this.config.safety.strictMode})` : 'Disabled'}`);
|
|
54
|
+
console.log('═══════════════════════════════════════════════════════════════════════════════\n');
|
|
55
|
+
}
|
|
56
|
+
mergeDefaultConfig(partial) {
|
|
57
|
+
return {
|
|
58
|
+
ehr: {
|
|
59
|
+
enabled: false,
|
|
60
|
+
vendor: 'epic',
|
|
61
|
+
baseUrl: '',
|
|
62
|
+
clientId: '',
|
|
63
|
+
...partial.ehr
|
|
64
|
+
},
|
|
65
|
+
genomics: {
|
|
66
|
+
enabled: false,
|
|
67
|
+
platforms: ['foundation', 'guardant', 'tempus'],
|
|
68
|
+
...partial.genomics
|
|
69
|
+
},
|
|
70
|
+
clinicalTrials: {
|
|
71
|
+
enabled: true,
|
|
72
|
+
maxDistance: 100,
|
|
73
|
+
...partial.clinicalTrials
|
|
74
|
+
},
|
|
75
|
+
compliance: {
|
|
76
|
+
enabled: true,
|
|
77
|
+
auditRetentionDays: 2555, // 7 years for HIPAA
|
|
78
|
+
...partial.compliance
|
|
79
|
+
},
|
|
80
|
+
ml: {
|
|
81
|
+
enabled: true,
|
|
82
|
+
modelVersion: '1.0.0',
|
|
83
|
+
...partial.ml
|
|
84
|
+
},
|
|
85
|
+
safety: {
|
|
86
|
+
enabled: true,
|
|
87
|
+
strictMode: true,
|
|
88
|
+
...partial.safety
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Initialize all enabled services
|
|
94
|
+
*/
|
|
95
|
+
async initialize() {
|
|
96
|
+
console.log('Initializing Real-World Oncology Services...\n');
|
|
97
|
+
const initPromises = [];
|
|
98
|
+
if (this.config.ehr.enabled) {
|
|
99
|
+
initPromises.push(this.initializeEHR());
|
|
100
|
+
}
|
|
101
|
+
if (this.config.genomics.enabled) {
|
|
102
|
+
initPromises.push(this.initializeGenomics());
|
|
103
|
+
}
|
|
104
|
+
if (this.config.clinicalTrials.enabled) {
|
|
105
|
+
initPromises.push(this.initializeClinicalTrials());
|
|
106
|
+
}
|
|
107
|
+
if (this.config.compliance.enabled) {
|
|
108
|
+
initPromises.push(this.initializeCompliance());
|
|
109
|
+
}
|
|
110
|
+
if (this.config.ml.enabled) {
|
|
111
|
+
initPromises.push(this.initializeML());
|
|
112
|
+
}
|
|
113
|
+
if (this.config.safety.enabled) {
|
|
114
|
+
initPromises.push(this.initializeSafety());
|
|
115
|
+
}
|
|
116
|
+
await Promise.all(initPromises);
|
|
117
|
+
console.log('\nAll services initialized successfully.\n');
|
|
118
|
+
}
|
|
119
|
+
async initializeEHR() {
|
|
120
|
+
console.log(` - Initializing EHR integration (${this.config.ehr.vendor})...`);
|
|
121
|
+
// In production: this.ehrService = new FHIRClient(this.config.ehr);
|
|
122
|
+
// await this.ehrService.connect();
|
|
123
|
+
}
|
|
124
|
+
async initializeGenomics() {
|
|
125
|
+
console.log(` - Initializing genomics platforms (${this.config.genomics.platforms.join(', ')})...`);
|
|
126
|
+
// In production: this.genomicsService = new UnifiedGenomicsService(this.config.genomics);
|
|
127
|
+
}
|
|
128
|
+
async initializeClinicalTrials() {
|
|
129
|
+
console.log(' - Initializing clinical trials service...');
|
|
130
|
+
// In production: this.trialsService = new PatientTrialMatcher();
|
|
131
|
+
}
|
|
132
|
+
async initializeCompliance() {
|
|
133
|
+
console.log(' - Initializing HIPAA compliance service...');
|
|
134
|
+
// In production: this.complianceService = new HIPAAComplianceService(this.config.compliance);
|
|
135
|
+
}
|
|
136
|
+
async initializeML() {
|
|
137
|
+
console.log(` - Initializing ML prediction service (v${this.config.ml.modelVersion})...`);
|
|
138
|
+
// In production: this.mlService = new OutcomePredictionService(this.config.ml);
|
|
139
|
+
}
|
|
140
|
+
async initializeSafety() {
|
|
141
|
+
console.log(` - Initializing drug safety service (strict: ${this.config.safety.strictMode})...`);
|
|
142
|
+
// In production: this.safetyService = new DrugSafetyService(this.config.safety);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Generate a comprehensive treatment plan for a patient
|
|
146
|
+
*/
|
|
147
|
+
async generateComprehensivePlan(patient, clinicianId, options = {}) {
|
|
148
|
+
const planId = `PLAN-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
149
|
+
console.log('\n═══════════════════════════════════════════════════════════════════════════════');
|
|
150
|
+
console.log(` GENERATING COMPREHENSIVE TREATMENT PLAN`);
|
|
151
|
+
console.log(` Patient: ${patient.id} | Plan: ${planId}`);
|
|
152
|
+
console.log('═══════════════════════════════════════════════════════════════════════════════\n');
|
|
153
|
+
// Step 1: Log access for HIPAA compliance
|
|
154
|
+
console.log('Step 1: Recording access in audit log...');
|
|
155
|
+
const auditLogId = await this.logAccess(clinicianId, patient.id, 'generate_treatment_plan');
|
|
156
|
+
// Step 2: Get core recommendation from CancerTreatmentCapabilityModule
|
|
157
|
+
console.log('Step 2: Generating core treatment recommendation...');
|
|
158
|
+
const coreRecommendation = await this.cancerCapability.cureCancer(patient.id, patient.diagnosis.cancerType, patient.diagnosis.stage, patient.genomics ? {
|
|
159
|
+
mutations: patient.genomics.mutations,
|
|
160
|
+
biomarkers: Object.keys(patient.genomics.biomarkers),
|
|
161
|
+
msiStatus: patient.genomics.msiStatus,
|
|
162
|
+
tmbLevel: patient.genomics.tmbLevel,
|
|
163
|
+
pdl1Expression: patient.genomics.pdl1Expression,
|
|
164
|
+
hrdStatus: patient.genomics.hrdStatus
|
|
165
|
+
} : undefined);
|
|
166
|
+
// Step 3: Fetch additional EHR data if available
|
|
167
|
+
let ehrData;
|
|
168
|
+
if (this.config.ehr.enabled && patient.mrn) {
|
|
169
|
+
console.log('Step 3: Fetching EHR data...');
|
|
170
|
+
ehrData = await this.fetchEHRData(patient.mrn);
|
|
171
|
+
}
|
|
172
|
+
// Step 4: Get genomic data if available
|
|
173
|
+
let genomicData;
|
|
174
|
+
if (this.config.genomics.enabled && patient.genomics) {
|
|
175
|
+
console.log('Step 4: Aggregating genomic data...');
|
|
176
|
+
genomicData = await this.aggregateGenomicData(patient);
|
|
177
|
+
}
|
|
178
|
+
// Step 5: Find matching clinical trials
|
|
179
|
+
let clinicalTrials;
|
|
180
|
+
if (options.includeTrials !== false && this.config.clinicalTrials.enabled) {
|
|
181
|
+
console.log('Step 5: Matching to clinical trials...');
|
|
182
|
+
clinicalTrials = await this.findMatchingTrials(patient);
|
|
183
|
+
}
|
|
184
|
+
// Step 6: Generate ML predictions
|
|
185
|
+
let predictions;
|
|
186
|
+
if (options.includePredictions !== false && this.config.ml.enabled) {
|
|
187
|
+
console.log('Step 6: Generating ML predictions...');
|
|
188
|
+
predictions = await this.generatePredictions(patient, coreRecommendation);
|
|
189
|
+
}
|
|
190
|
+
// Step 7: Perform safety assessment
|
|
191
|
+
let safetyAssessment;
|
|
192
|
+
if (options.includeSafetyCheck !== false && this.config.safety.enabled) {
|
|
193
|
+
console.log('Step 7: Performing safety assessment...');
|
|
194
|
+
safetyAssessment = await this.performSafetyAssessment(patient, coreRecommendation);
|
|
195
|
+
}
|
|
196
|
+
// Step 8: Generate decision support
|
|
197
|
+
console.log('Step 8: Generating decision support...');
|
|
198
|
+
const decisionSupport = this.generateDecisionSupport(coreRecommendation, safetyAssessment, options.requireTumorBoard);
|
|
199
|
+
// Step 9: Create patient-facing summary
|
|
200
|
+
console.log('Step 9: Creating patient-friendly summary...');
|
|
201
|
+
const patientSummary = this.createPatientSummary(coreRecommendation, predictions);
|
|
202
|
+
const plan = {
|
|
203
|
+
patientId: patient.id,
|
|
204
|
+
planId,
|
|
205
|
+
createdAt: new Date(),
|
|
206
|
+
createdBy: clinicianId,
|
|
207
|
+
coreRecommendation,
|
|
208
|
+
ehrData,
|
|
209
|
+
genomicData,
|
|
210
|
+
clinicalTrials,
|
|
211
|
+
predictions,
|
|
212
|
+
safetyAssessment,
|
|
213
|
+
decisionSupport,
|
|
214
|
+
patientSummary,
|
|
215
|
+
compliance: {
|
|
216
|
+
consentStatus: 'pending',
|
|
217
|
+
auditLogId,
|
|
218
|
+
accessLog: [{
|
|
219
|
+
userId: clinicianId,
|
|
220
|
+
action: 'created_plan',
|
|
221
|
+
timestamp: new Date()
|
|
222
|
+
}]
|
|
223
|
+
},
|
|
224
|
+
status: options.requireTumorBoard ? 'pending_review' : 'draft'
|
|
225
|
+
};
|
|
226
|
+
console.log('\n═══════════════════════════════════════════════════════════════════════════════');
|
|
227
|
+
console.log(` TREATMENT PLAN GENERATED SUCCESSFULLY`);
|
|
228
|
+
console.log(` Plan ID: ${planId}`);
|
|
229
|
+
console.log(` Status: ${plan.status}`);
|
|
230
|
+
console.log(` Cure Confidence: ${(coreRecommendation.projectedOutcome.cureConfidence * 100).toFixed(1)}%`);
|
|
231
|
+
console.log('═══════════════════════════════════════════════════════════════════════════════\n');
|
|
232
|
+
return plan;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Record treatment outcome for validation
|
|
236
|
+
*/
|
|
237
|
+
async recordOutcome(outcome) {
|
|
238
|
+
console.log(`Recording outcome for patient ${outcome.patientId}, plan ${outcome.planId}...`);
|
|
239
|
+
// In production, this would:
|
|
240
|
+
// 1. Validate outcome data
|
|
241
|
+
// 2. Store in outcomes database
|
|
242
|
+
// 3. Trigger prediction model update if significant deviation
|
|
243
|
+
// 4. Update validation metrics
|
|
244
|
+
console.log(` Response: ${outcome.response.recistResponse}`);
|
|
245
|
+
console.log(` Toxicities: ${outcome.toxicities.length} events`);
|
|
246
|
+
console.log(` QoL assessments: ${outcome.qualityOfLife.length}`);
|
|
247
|
+
// Log for audit
|
|
248
|
+
await this.logAccess('system', outcome.patientId, 'record_outcome');
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Validate system predictions against actual outcomes
|
|
252
|
+
*/
|
|
253
|
+
async runValidation(cohortCriteria) {
|
|
254
|
+
console.log('\n═══════════════════════════════════════════════════════════════════════════════');
|
|
255
|
+
console.log(' RUNNING RETROSPECTIVE VALIDATION');
|
|
256
|
+
console.log('═══════════════════════════════════════════════════════════════════════════════\n');
|
|
257
|
+
// In production, this would use the RetrospectiveValidator
|
|
258
|
+
// For now, return placeholder results
|
|
259
|
+
const validationResult = {
|
|
260
|
+
cohortSize: 0,
|
|
261
|
+
concordanceRate: 0,
|
|
262
|
+
responseAUC: 0,
|
|
263
|
+
survivalCIndex: 0,
|
|
264
|
+
calibrationError: 0,
|
|
265
|
+
subgroupResults: {}
|
|
266
|
+
};
|
|
267
|
+
console.log('Validation complete. Results stored for review.\n');
|
|
268
|
+
return validationResult;
|
|
269
|
+
}
|
|
270
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
271
|
+
// PRIVATE HELPER METHODS
|
|
272
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
273
|
+
async logAccess(userId, patientId, action) {
|
|
274
|
+
const logId = `AUDIT-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
275
|
+
// In production: await this.complianceService.auditLogger.logAccess(...)
|
|
276
|
+
return logId;
|
|
277
|
+
}
|
|
278
|
+
async fetchEHRData(mrn) {
|
|
279
|
+
// In production: return await this.ehrService.getPatientSummary(mrn);
|
|
280
|
+
return {
|
|
281
|
+
source: this.config.ehr.vendor,
|
|
282
|
+
lastSync: new Date(),
|
|
283
|
+
patientSummary: { mrn, status: 'mock_data' }
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
async aggregateGenomicData(patient) {
|
|
287
|
+
// In production: return await this.genomicsService.unifyReports(patient.id);
|
|
288
|
+
return {
|
|
289
|
+
platforms: this.config.genomics.platforms,
|
|
290
|
+
lastUpdated: new Date(),
|
|
291
|
+
unifiedReport: patient.genomics,
|
|
292
|
+
therapyMatches: []
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
async findMatchingTrials(patient) {
|
|
296
|
+
// In production: return await this.trialsService.findMatches(patient);
|
|
297
|
+
return {
|
|
298
|
+
matchingTrials: [],
|
|
299
|
+
searchDate: new Date()
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
async generatePredictions(patient, recommendation) {
|
|
303
|
+
// In production: return await this.mlService.predict(patient, recommendation);
|
|
304
|
+
return {
|
|
305
|
+
responseProb: {
|
|
306
|
+
CR: recommendation.projectedOutcome.responseRate * 0.4,
|
|
307
|
+
PR: recommendation.projectedOutcome.responseRate * 0.4,
|
|
308
|
+
SD: (1 - recommendation.projectedOutcome.responseRate) * 0.5,
|
|
309
|
+
PD: (1 - recommendation.projectedOutcome.responseRate) * 0.5
|
|
310
|
+
},
|
|
311
|
+
survivalEstimates: {
|
|
312
|
+
pfs: { median: 12, ci95: [8, 18] },
|
|
313
|
+
os: { median: 24, ci95: [16, 36] }
|
|
314
|
+
},
|
|
315
|
+
toxicityRisks: [],
|
|
316
|
+
resistancePrediction: []
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
async performSafetyAssessment(patient, recommendation) {
|
|
320
|
+
// In production: return await this.safetyService.assessSafety(patient, recommendation);
|
|
321
|
+
return {
|
|
322
|
+
interactions: [],
|
|
323
|
+
contraindications: [],
|
|
324
|
+
pharmacogenomics: [],
|
|
325
|
+
overallSafetyScore: 0.85
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
generateDecisionSupport(recommendation, safetyAssessment, requireTumorBoard) {
|
|
329
|
+
const tumorBoardRequired = requireTumorBoard ||
|
|
330
|
+
recommendation.projectedOutcome.cureConfidence < 0.5 ||
|
|
331
|
+
(safetyAssessment && safetyAssessment.overallSafetyScore < 0.7);
|
|
332
|
+
return {
|
|
333
|
+
evidenceLevel: recommendation.drugTargets.some(t => t.evidenceLevel === 'FDA-Approved')
|
|
334
|
+
? 'Category 1'
|
|
335
|
+
: 'Category 2A',
|
|
336
|
+
guidelines: recommendation.timeline.map(t => t.phase),
|
|
337
|
+
alternativeOptions: [],
|
|
338
|
+
tumorBoardRequired
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
createPatientSummary(recommendation, predictions) {
|
|
342
|
+
return {
|
|
343
|
+
treatmentGoal: recommendation.status === 'CURED' ? 'Cure your cancer' : 'Control your cancer and maintain quality of life',
|
|
344
|
+
whatToExpect: `Your treatment plan includes ${recommendation.treatments.primary}. ` +
|
|
345
|
+
`Based on your specific cancer type and genetic profile, we expect this approach to give you the best possible outcome.`,
|
|
346
|
+
sideEffectsToWatch: [
|
|
347
|
+
'Fatigue - common, usually improves over time',
|
|
348
|
+
'Nausea - medications available to help',
|
|
349
|
+
'Changes in blood counts - monitored with regular blood tests'
|
|
350
|
+
],
|
|
351
|
+
questionsForDoctor: [
|
|
352
|
+
'What are the main goals of my treatment?',
|
|
353
|
+
'What side effects should I report immediately?',
|
|
354
|
+
'Are there any clinical trials I might be eligible for?',
|
|
355
|
+
'How will we know if the treatment is working?'
|
|
356
|
+
],
|
|
357
|
+
supportResources: [
|
|
358
|
+
'Cancer support groups in your area',
|
|
359
|
+
'Financial assistance programs',
|
|
360
|
+
'Nutritional counseling',
|
|
361
|
+
'Mental health support'
|
|
362
|
+
]
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Convert internal patient type to CancerPatient for the capability module
|
|
367
|
+
*/
|
|
368
|
+
toCancerPatient(patient) {
|
|
369
|
+
return {
|
|
370
|
+
id: patient.id,
|
|
371
|
+
type: 'patient',
|
|
372
|
+
identifier: patient.mrn || patient.id,
|
|
373
|
+
demographics: {
|
|
374
|
+
age: this.calculateAge(patient.demographics.dateOfBirth),
|
|
375
|
+
gender: patient.demographics.gender,
|
|
376
|
+
ethnicity: patient.demographics.ethnicity
|
|
377
|
+
},
|
|
378
|
+
medicalHistory: {
|
|
379
|
+
comorbidities: patient.comorbidities,
|
|
380
|
+
allergies: patient.allergies,
|
|
381
|
+
previousTreatments: patient.treatments
|
|
382
|
+
},
|
|
383
|
+
genomics: patient.genomics ? {
|
|
384
|
+
mutations: patient.genomics.mutations,
|
|
385
|
+
biomarkers: Object.keys(patient.genomics.biomarkers),
|
|
386
|
+
expressionProfiles: patient.genomics.biomarkers
|
|
387
|
+
} : undefined
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
calculateAge(dateOfBirth) {
|
|
391
|
+
const today = new Date();
|
|
392
|
+
let age = today.getFullYear() - dateOfBirth.getFullYear();
|
|
393
|
+
const monthDiff = today.getMonth() - dateOfBirth.getMonth();
|
|
394
|
+
if (monthDiff < 0 || (monthDiff === 0 && today.getDate() < dateOfBirth.getDate())) {
|
|
395
|
+
age--;
|
|
396
|
+
}
|
|
397
|
+
return age;
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Get system status and health check
|
|
401
|
+
*/
|
|
402
|
+
async getSystemStatus() {
|
|
403
|
+
const services = {
|
|
404
|
+
cancerCapability: { status: 'healthy', latency: 10 },
|
|
405
|
+
ehr: { status: this.config.ehr.enabled ? 'healthy' : 'disabled' },
|
|
406
|
+
genomics: { status: this.config.genomics.enabled ? 'healthy' : 'disabled' },
|
|
407
|
+
clinicalTrials: { status: this.config.clinicalTrials.enabled ? 'healthy' : 'disabled' },
|
|
408
|
+
compliance: { status: this.config.compliance.enabled ? 'healthy' : 'disabled' },
|
|
409
|
+
ml: { status: this.config.ml.enabled ? 'healthy' : 'disabled' },
|
|
410
|
+
safety: { status: this.config.safety.enabled ? 'healthy' : 'disabled' }
|
|
411
|
+
};
|
|
412
|
+
const unhealthyCount = Object.values(services).filter(s => s.status === 'unhealthy').length;
|
|
413
|
+
const status = unhealthyCount === 0 ? 'healthy' : unhealthyCount < 3 ? 'degraded' : 'unhealthy';
|
|
414
|
+
return {
|
|
415
|
+
status,
|
|
416
|
+
services,
|
|
417
|
+
modelVersion: this.config.ml.modelVersion
|
|
418
|
+
};
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
// Export default instance factory
|
|
422
|
+
export function createRealWorldOncologyService(config) {
|
|
423
|
+
return new RealWorldOncologyService(config);
|
|
424
|
+
}
|
|
425
|
+
//# sourceMappingURL=realWorldOncology.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realWorldOncology.js","sourceRoot":"","sources":["../../src/orchestrator/realWorldOncology.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,+BAA+B,EAAmC,MAAM,8CAA8C,CAAC;AAuRhI,MAAM,OAAO,wBAAwB;IAC3B,MAAM,CAAkB;IACxB,gBAAgB,CAAkC;IAE1D,uEAAuE;IAC/D,UAAU,GAAQ,IAAI,CAAC;IACvB,eAAe,GAAQ,IAAI,CAAC;IAC5B,aAAa,GAAQ,IAAI,CAAC;IAC1B,iBAAiB,GAAQ,IAAI,CAAC;IAC9B,SAAS,GAAQ,IAAI,CAAC;IACtB,aAAa,GAAQ,IAAI,CAAC;IAC1B,iBAAiB,GAAQ,IAAI,CAAC;IAC9B,sBAAsB,GAAQ,IAAI,CAAC;IACnC,oBAAoB,GAAQ,IAAI,CAAC;IAEzC,YAAY,SAAmC,EAAE;QAC/C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,gBAAgB,GAAG,IAAI,+BAA+B,EAAE,CAAC;QAE9D,OAAO,CAAC,GAAG,CAAC,iFAAiF,CAAC,CAAC;QAC/F,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,iFAAiF,CAAC,CAAC;QAC/F,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QAClH,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QACnI,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QACjG,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QAC9F,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QACtH,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QACpI,OAAO,CAAC,GAAG,CAAC,mFAAmF,CAAC,CAAC;IACnG,CAAC;IAEO,kBAAkB,CAAC,OAAiC;QAC1D,OAAO;YACL,GAAG,EAAE;gBACH,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE;gBACX,QAAQ,EAAE,EAAE;gBACZ,GAAG,OAAO,CAAC,GAAG;aACf;YACD,QAAQ,EAAE;gBACR,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC;gBAC/C,GAAG,OAAO,CAAC,QAAQ;aACpB;YACD,cAAc,EAAE;gBACd,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,GAAG;gBAChB,GAAG,OAAO,CAAC,cAAc;aAC1B;YACD,UAAU,EAAE;gBACV,OAAO,EAAE,IAAI;gBACb,kBAAkB,EAAE,IAAI,EAAE,oBAAoB;gBAC9C,GAAG,OAAO,CAAC,UAAU;aACtB;YACD,EAAE,EAAE;gBACF,OAAO,EAAE,IAAI;gBACb,YAAY,EAAE,OAAO;gBACrB,GAAG,OAAO,CAAC,EAAE;aACd;YACD,MAAM,EAAE;gBACN,OAAO,EAAE,IAAI;gBACb,UAAU,EAAE,IAAI;gBAChB,GAAG,OAAO,CAAC,MAAM;aAClB;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;QAE9D,MAAM,YAAY,GAAoB,EAAE,CAAC;QAEzC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YAC5B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACjC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YACvC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACnC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;YAC3B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC/B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAEhC,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC5D,CAAC;IAEO,KAAK,CAAC,aAAa;QACzB,OAAO,CAAC,GAAG,CAAC,qCAAqC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;QAC/E,oEAAoE;QACpE,mCAAmC;IACrC,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC9B,OAAO,CAAC,GAAG,CAAC,wCAAwC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrG,0FAA0F;IAC5F,CAAC;IAEO,KAAK,CAAC,wBAAwB;QACpC,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAC3D,iEAAiE;IACnE,CAAC;IAEO,KAAK,CAAC,oBAAoB;QAChC,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;QAC5D,8FAA8F;IAChG,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,OAAO,CAAC,GAAG,CAAC,4CAA4C,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,MAAM,CAAC,CAAC;QAC3F,gFAAgF;IAClF,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC5B,OAAO,CAAC,GAAG,CAAC,iDAAiD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,MAAM,CAAC,CAAC;QAClG,iFAAiF;IACnF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,yBAAyB,CAC7B,OAAyB,EACzB,WAAmB,EACnB,UAKI,EAAE;QAEN,MAAM,MAAM,GAAG,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAE/E,OAAO,CAAC,GAAG,CAAC,mFAAmF,CAAC,CAAC;QACjG,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,EAAE,YAAY,MAAM,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,mFAAmF,CAAC,CAAC;QAEjG,0CAA0C;QAC1C,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,EAAE,yBAAyB,CAAC,CAAC;QAE5F,uEAAuE;QACvE,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAC/D,OAAO,CAAC,EAAE,EACV,OAAO,CAAC,SAAS,CAAC,UAAU,EAC5B,OAAO,CAAC,SAAS,CAAC,KAAK,EACvB,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;YACjB,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS;YACrC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;YACpD,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS;YACrC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,QAAQ;YACnC,cAAc,EAAE,OAAO,CAAC,QAAQ,CAAC,cAAc;YAC/C,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS;SACtC,CAAC,CAAC,CAAC,SAAS,CACd,CAAC;QAEF,iDAAiD;QACjD,IAAI,OAAO,CAAC;QACZ,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;YAC5C,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjD,CAAC;QAED,wCAAwC;QACxC,IAAI,WAAW,CAAC;QAChB,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YACnD,WAAW,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACzD,CAAC;QAED,wCAAwC;QACxC,IAAI,cAAc,CAAC;QACnB,IAAI,OAAO,CAAC,aAAa,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;YACtD,cAAc,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC1D,CAAC;QAED,kCAAkC;QAClC,IAAI,WAAW,CAAC;QAChB,IAAI,OAAO,CAAC,kBAAkB,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YACpD,WAAW,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QAC5E,CAAC;QAED,oCAAoC;QACpC,IAAI,gBAAgB,CAAC;QACrB,IAAI,OAAO,CAAC,kBAAkB,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACvE,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;YACvD,gBAAgB,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;QACrF,CAAC;QAED,oCAAoC;QACpC,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACtD,MAAM,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAClD,kBAAkB,EAClB,gBAAgB,EAChB,OAAO,CAAC,iBAAiB,CAC1B,CAAC;QAEF,wCAAwC;QACxC,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;QAC5D,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,WAAW,CAAC,CAAC;QAElF,MAAM,IAAI,GAA+B;YACvC,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,MAAM;YACN,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,SAAS,EAAE,WAAW;YACtB,kBAAkB;YAClB,OAAO;YACP,WAAW;YACX,cAAc;YACd,WAAW;YACX,gBAAgB;YAChB,eAAe;YACf,cAAc;YACd,UAAU,EAAE;gBACV,aAAa,EAAE,SAAS;gBACxB,UAAU;gBACV,SAAS,EAAE,CAAC;wBACV,MAAM,EAAE,WAAW;wBACnB,MAAM,EAAE,cAAc;wBACtB,SAAS,EAAE,IAAI,IAAI,EAAE;qBACtB,CAAC;aACH;YACD,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO;SAC/D,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,mFAAmF,CAAC,CAAC;QACjG,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,EAAE,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5G,OAAO,CAAC,GAAG,CAAC,mFAAmF,CAAC,CAAC;QAEjG,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,OAAyB;QAC3C,OAAO,CAAC,GAAG,CAAC,iCAAiC,OAAO,CAAC,SAAS,UAAU,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;QAE7F,6BAA6B;QAC7B,2BAA2B;QAC3B,gCAAgC;QAChC,8DAA8D;QAC9D,+BAA+B;QAE/B,OAAO,CAAC,GAAG,CAAC,eAAe,OAAO,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,iBAAiB,OAAO,CAAC,UAAU,CAAC,MAAM,SAAS,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,sBAAsB,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;QAElE,gBAAgB;QAChB,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CACjB,cAKC;QASD,OAAO,CAAC,GAAG,CAAC,mFAAmF,CAAC,CAAC;QACjG,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,mFAAmF,CAAC,CAAC;QAEjG,2DAA2D;QAC3D,sCAAsC;QAEtC,MAAM,gBAAgB,GAAG;YACvB,UAAU,EAAE,CAAC;YACb,eAAe,EAAE,CAAC;YAClB,WAAW,EAAE,CAAC;YACd,cAAc,EAAE,CAAC;YACjB,gBAAgB,EAAE,CAAC;YACnB,eAAe,EAAE,EAAE;SACpB,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;QAEjE,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,kFAAkF;IAClF,yBAAyB;IACzB,kFAAkF;IAE1E,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,SAAiB,EAAE,MAAc;QACvE,MAAM,KAAK,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC/E,yEAAyE;QACzE,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,GAAW;QACpC,sEAAsE;QACtE,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM;YAC9B,QAAQ,EAAE,IAAI,IAAI,EAAE;YACpB,cAAc,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE;SAC7C,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,OAAyB;QAC1D,6EAA6E;QAC7E,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS;YACzC,WAAW,EAAE,IAAI,IAAI,EAAE;YACvB,aAAa,EAAE,OAAO,CAAC,QAAQ;YAC/B,cAAc,EAAE,EAAE;SACnB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,kBAAkB,CAAC,OAAyB;QACxD,uEAAuE;QACvE,OAAO;YACL,cAAc,EAAE,EAAE;YAClB,UAAU,EAAE,IAAI,IAAI,EAAE;SACvB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,OAAyB,EAAE,cAAgC;QAC3F,+EAA+E;QAC/E,OAAO;YACL,YAAY,EAAE;gBACZ,EAAE,EAAE,cAAc,CAAC,gBAAgB,CAAC,YAAY,GAAG,GAAG;gBACtD,EAAE,EAAE,cAAc,CAAC,gBAAgB,CAAC,YAAY,GAAG,GAAG;gBACtD,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG,GAAG;gBAC5D,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG,GAAG;aAC7D;YACD,iBAAiB,EAAE;gBACjB,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAqB,EAAE;gBACtD,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAqB,EAAE;aACvD;YACD,aAAa,EAAE,EAAE;YACjB,oBAAoB,EAAE,EAAE;SACzB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,OAAyB,EAAE,cAAgC;QAC/F,wFAAwF;QACxF,OAAO;YACL,YAAY,EAAE,EAAE;YAChB,iBAAiB,EAAE,EAAE;YACrB,gBAAgB,EAAE,EAAE;YACpB,kBAAkB,EAAE,IAAI;SACzB,CAAC;IACJ,CAAC;IAEO,uBAAuB,CAC7B,cAAgC,EAChC,gBAAqB,EACrB,iBAA2B;QAE3B,MAAM,kBAAkB,GAAG,iBAAiB;YAC1C,cAAc,CAAC,gBAAgB,CAAC,cAAc,GAAG,GAAG;YACpD,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,kBAAkB,GAAG,GAAG,CAAC,CAAC;QAElE,OAAO;YACL,aAAa,EAAE,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,cAAc,CAAC;gBACrF,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,aAAa;YACjB,UAAU,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YACrD,kBAAkB,EAAE,EAAE;YACtB,kBAAkB;SACnB,CAAC;IACJ,CAAC;IAEO,oBAAoB,CAAC,cAAgC,EAAE,WAAgB;QAC7E,OAAO;YACL,aAAa,EAAE,cAAc,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,kDAAkD;YAC1H,YAAY,EAAE,gCAAgC,cAAc,CAAC,UAAU,CAAC,OAAO,IAAI;gBACjF,wHAAwH;YAC1H,kBAAkB,EAAE;gBAClB,8CAA8C;gBAC9C,wCAAwC;gBACxC,8DAA8D;aAC/D;YACD,kBAAkB,EAAE;gBAClB,0CAA0C;gBAC1C,gDAAgD;gBAChD,wDAAwD;gBACxD,+CAA+C;aAChD;YACD,gBAAgB,EAAE;gBAChB,oCAAoC;gBACpC,+BAA+B;gBAC/B,wBAAwB;gBACxB,uBAAuB;aACxB;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,OAAyB;QAC/C,OAAO;YACL,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,EAAE;YACrC,YAAY,EAAE;gBACZ,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC;gBACxD,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,MAAM;gBACnC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,SAAS;aAC1C;YACD,cAAc,EAAE;gBACd,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,kBAAkB,EAAE,OAAO,CAAC,UAAU;aACvC;YACD,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC3B,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS;gBACrC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACpD,kBAAkB,EAAE,OAAO,CAAC,QAAQ,CAAC,UAAU;aAChD,CAAC,CAAC,CAAC,SAAS;SACd,CAAC;IACJ,CAAC;IAEO,YAAY,CAAC,WAAiB;QACpC,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACzB,IAAI,GAAG,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC5D,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;YAClF,GAAG,EAAE,CAAC;QACR,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QAMnB,MAAM,QAAQ,GAAyD;YACrE,gBAAgB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;YACpD,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE;YACjE,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE;YAC3E,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE;YACvF,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE;YAC/E,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE;YAC/D,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE;SACxE,CAAC;QAEF,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,MAAM,CAAC;QAC5F,MAAM,MAAM,GAAG,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC;QAEhG,OAAO;YACL,MAAM;YACN,QAAQ;YACR,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY;SAC1C,CAAC;IACJ,CAAC;CACF;AAED,kCAAkC;AAClC,MAAM,UAAU,8BAA8B,CAAC,MAAiC;IAC9E,OAAO,IAAI,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAC9C,CAAC"}
|
package/dist/patient/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Patient Portal Module Exports
|
|
3
3
|
*/
|
|
4
|
-
export { PatientPortalService,
|
|
4
|
+
export { PatientPortalService, type PatientAccount, type PatientTreatmentSummary, type SymptomReport, type MedicationAdherenceLog, type QualityOfLifeAssessment, type PatientMessage, type EducationalContent, type AppointmentRequest } from './patientPortal.js';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/patient/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,oBAAoB,EACpB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/patient/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACxB,MAAM,oBAAoB,CAAC"}
|
package/dist/patient/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Patient Portal Module Exports
|
|
3
3
|
*/
|
|
4
|
-
export { PatientPortalService
|
|
4
|
+
export { PatientPortalService } from './patientPortal.js';
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/patient/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/patient/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,oBAAoB,EASrB,MAAM,oBAAoB,CAAC"}
|
package/dist/safety/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Drug Safety Module Exports
|
|
3
3
|
*/
|
|
4
|
-
export { DrugSafetyService,
|
|
4
|
+
export { DrugSafetyService, type Drug, type CYP450Profile, type DrugInteraction, type Contraindication, type DosingGuideline, type AllergyCheck, type SafetyAlert, type PatientSafetyProfile } from './drugInteractions.js';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/safety/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,iBAAiB,EACjB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/safety/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,iBAAiB,EACjB,KAAK,IAAI,EACT,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,oBAAoB,EAC1B,MAAM,uBAAuB,CAAC"}
|
package/dist/safety/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Drug Safety Module Exports
|
|
3
3
|
*/
|
|
4
|
-
export { DrugSafetyService
|
|
4
|
+
export { DrugSafetyService } from './drugInteractions.js';
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/dist/safety/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/safety/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/safety/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,iBAAiB,EASlB,MAAM,uBAAuB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Validation Framework Module Exports
|
|
3
3
|
*/
|
|
4
|
-
export {
|
|
4
|
+
export { RetrospectiveValidationService, type ValidationPatient, type SystemRecommendation, type ValidationResult, type CohortAnalysis } from './retrospectiveValidator.js';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,8BAA8B,EAC9B,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACpB,MAAM,6BAA6B,CAAC"}
|
package/dist/validation/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Validation Framework Module Exports
|
|
3
3
|
*/
|
|
4
|
-
export {
|
|
4
|
+
export { RetrospectiveValidationService } from './retrospectiveValidator.js';
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,8BAA8B,EAK/B,MAAM,6BAA6B,CAAC"}
|
package/package.json
CHANGED