@erosolaraijs/cure 2.3.0 → 2.4.0

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.
Files changed (68) hide show
  1. package/README.md +321 -26
  2. package/dist/bin/cure.js +114 -1
  3. package/dist/bin/cure.js.map +1 -1
  4. package/dist/capabilities/clinicalTrialMatchingModule.d.ts +150 -0
  5. package/dist/capabilities/clinicalTrialMatchingModule.d.ts.map +1 -0
  6. package/dist/capabilities/clinicalTrialMatchingModule.js +436 -0
  7. package/dist/capabilities/clinicalTrialMatchingModule.js.map +1 -0
  8. package/dist/capabilities/cureValidationFramework.d.ts +195 -0
  9. package/dist/capabilities/cureValidationFramework.d.ts.map +1 -0
  10. package/dist/capabilities/cureValidationFramework.js +577 -0
  11. package/dist/capabilities/cureValidationFramework.js.map +1 -0
  12. package/dist/capabilities/emergencyOncology.d.ts +97 -0
  13. package/dist/capabilities/emergencyOncology.d.ts.map +1 -0
  14. package/dist/capabilities/emergencyOncology.js +1824 -0
  15. package/dist/capabilities/emergencyOncology.js.map +1 -0
  16. package/dist/capabilities/index.d.ts +11 -0
  17. package/dist/capabilities/index.d.ts.map +1 -1
  18. package/dist/capabilities/index.js +22 -0
  19. package/dist/capabilities/index.js.map +1 -1
  20. package/dist/capabilities/multimodalOncologyModule.d.ts +149 -0
  21. package/dist/capabilities/multimodalOncologyModule.d.ts.map +1 -0
  22. package/dist/capabilities/multimodalOncologyModule.js +701 -0
  23. package/dist/capabilities/multimodalOncologyModule.js.map +1 -0
  24. package/dist/capabilities/palliativeCareModule.d.ts +216 -0
  25. package/dist/capabilities/palliativeCareModule.d.ts.map +1 -0
  26. package/dist/capabilities/palliativeCareModule.js +1160 -0
  27. package/dist/capabilities/palliativeCareModule.js.map +1 -0
  28. package/dist/capabilities/precisionMedicineModule.d.ts +151 -0
  29. package/dist/capabilities/precisionMedicineModule.d.ts.map +1 -0
  30. package/dist/capabilities/precisionMedicineModule.js +758 -0
  31. package/dist/capabilities/precisionMedicineModule.js.map +1 -0
  32. package/dist/capabilities/specialPopulationsModule.d.ts +126 -0
  33. package/dist/capabilities/specialPopulationsModule.d.ts.map +1 -0
  34. package/dist/capabilities/specialPopulationsModule.js +574 -0
  35. package/dist/capabilities/specialPopulationsModule.js.map +1 -0
  36. package/dist/capabilities/survivorshipManagement.d.ts +178 -0
  37. package/dist/capabilities/survivorshipManagement.d.ts.map +1 -0
  38. package/dist/capabilities/survivorshipManagement.js +983 -0
  39. package/dist/capabilities/survivorshipManagement.js.map +1 -0
  40. package/dist/capabilities/treatmentSequencing.d.ts +140 -0
  41. package/dist/capabilities/treatmentSequencing.d.ts.map +1 -0
  42. package/dist/capabilities/treatmentSequencing.js +1689 -0
  43. package/dist/capabilities/treatmentSequencing.js.map +1 -0
  44. package/dist/capabilities/universalHealthFramework.d.ts +108 -0
  45. package/dist/capabilities/universalHealthFramework.d.ts.map +1 -0
  46. package/dist/capabilities/universalHealthFramework.js +615 -0
  47. package/dist/capabilities/universalHealthFramework.js.map +1 -0
  48. package/dist/compliance/hipaa.d.ts.map +1 -1
  49. package/dist/compliance/hipaa.js +7 -16
  50. package/dist/compliance/hipaa.js.map +1 -1
  51. package/dist/tools/index.d.ts +31 -0
  52. package/dist/tools/index.d.ts.map +1 -0
  53. package/dist/tools/index.js +1373 -0
  54. package/dist/tools/index.js.map +1 -0
  55. package/package.json +3 -2
  56. package/src/bin/cure.ts +130 -1
  57. package/src/capabilities/clinicalTrialMatchingModule.ts +600 -0
  58. package/src/capabilities/emergencyOncology.ts +1945 -0
  59. package/src/capabilities/index.ts +181 -0
  60. package/src/capabilities/multimodalOncologyModule.ts +873 -0
  61. package/src/capabilities/palliativeCareModule.ts +1438 -0
  62. package/src/capabilities/precisionMedicineModule.ts +952 -0
  63. package/src/capabilities/specialPopulationsModule.ts +711 -0
  64. package/src/capabilities/survivorshipManagement.ts +1213 -0
  65. package/src/capabilities/treatmentSequencing.ts +1878 -0
  66. package/src/capabilities/universalHealthFramework.ts +739 -0
  67. package/src/compliance/hipaa.ts +7 -15
  68. package/src/tools/index.ts +1628 -0
@@ -0,0 +1,436 @@
1
+ /**
2
+ * Clinical Trial Matching Engine
3
+ *
4
+ * ╔═══════════════════════════════════════════════════════════════════════════════╗
5
+ * ║ CLINICAL TRIAL MATCHING - CONNECTING PATIENTS TO NOVEL THERAPIES ║
6
+ * ╠═══════════════════════════════════════════════════════════════════════════════╣
7
+ * ║ This module provides: ║
8
+ * ║ - Biomarker-to-trial mapping ║
9
+ * ║ - Eligibility criteria assessment ║
10
+ * ║ - Trial phase and mechanism matching ║
11
+ * ║ - Geographic and logistical feasibility ║
12
+ * ║ - Basket, umbrella, and platform trial navigation ║
13
+ * ╚═══════════════════════════════════════════════════════════════════════════════╝
14
+ */
15
+ // ═══════════════════════════════════════════════════════════════════════════════
16
+ // TRIAL DATABASE (REPRESENTATIVE EXAMPLES)
17
+ // ═══════════════════════════════════════════════════════════════════════════════
18
+ export const TRIAL_DATABASE = [
19
+ // EGFR-mutant NSCLC Trials
20
+ {
21
+ nctId: 'NCT04816214',
22
+ title: 'Amivantamab + Lazertinib vs Osimertinib in EGFR-Mutant NSCLC (MARIPOSA)',
23
+ phase: 'Phase 3',
24
+ status: 'Active, not recruiting',
25
+ trialType: 'Interventional',
26
+ sponsor: 'Janssen',
27
+ conditions: ['NSCLC', 'EGFR-mutant'],
28
+ interventions: [
29
+ { type: 'Combination', name: 'Amivantamab + Lazertinib', mechanism: 'EGFR-MET bispecific + EGFR TKI', novelty: 'Combination' }
30
+ ],
31
+ eligibilityCriteria: {
32
+ ageRange: { min: 18, max: 99 },
33
+ gender: 'All',
34
+ performanceStatus: { scale: 'ECOG', maxValue: 1 },
35
+ priorTherapyRequirements: [
36
+ { requirement: 'Excluded', therapyType: 'Prior EGFR TKI', details: 'No prior EGFR TKI for metastatic disease' }
37
+ ],
38
+ organFunctionRequirements: [
39
+ { organ: 'Renal', parameter: 'CrCl', requirement: '≥50 mL/min' },
40
+ { organ: 'Hepatic', parameter: 'AST/ALT', requirement: '≤3x ULN' }
41
+ ],
42
+ exclusionCriteria: ['Active brain metastases', 'Prior EGFR TKI', 'Interstitial lung disease'],
43
+ inclusionCriteria: ['EGFR exon 19 del or L858R', 'Metastatic NSCLC', 'Treatment-naive']
44
+ },
45
+ locations: [
46
+ { facility: 'MD Anderson Cancer Center', city: 'Houston', state: 'TX', country: 'USA', status: 'Recruiting' },
47
+ { facility: 'Memorial Sloan Kettering', city: 'New York', state: 'NY', country: 'USA', status: 'Recruiting' }
48
+ ],
49
+ biomarkerRequirements: [
50
+ { biomarker: 'EGFR exon 19 del or L858R', requirement: 'Required', testMethod: ['NGS', 'PCR', 'ctDNA'] }
51
+ ],
52
+ primaryEndpoint: 'Progression-free survival',
53
+ estimatedEnrollment: 1074,
54
+ studyStartDate: '2021-05',
55
+ estimatedCompletionDate: '2025-12'
56
+ },
57
+ // HER2+ Breast Cancer Trials
58
+ {
59
+ nctId: 'NCT04784715',
60
+ title: 'Trastuzumab Deruxtecan vs Physician Choice in HER2-low Breast Cancer (DESTINY-Breast06)',
61
+ phase: 'Phase 3',
62
+ status: 'Recruiting',
63
+ trialType: 'Interventional',
64
+ sponsor: 'Daiichi Sankyo',
65
+ conditions: ['Breast Cancer', 'HER2-low'],
66
+ interventions: [
67
+ { type: 'Biological', name: 'Trastuzumab Deruxtecan', mechanism: 'HER2-directed ADC', novelty: 'New indication' }
68
+ ],
69
+ eligibilityCriteria: {
70
+ ageRange: { min: 18, max: 99 },
71
+ gender: 'All',
72
+ performanceStatus: { scale: 'ECOG', maxValue: 1 },
73
+ priorTherapyRequirements: [
74
+ { requirement: 'Required', therapyType: 'Prior endocrine therapy', details: 'For HR+ patients' },
75
+ { requirement: 'Allowed', therapyType: 'Prior chemotherapy', details: '1-2 prior lines allowed' }
76
+ ],
77
+ organFunctionRequirements: [
78
+ { organ: 'Cardiac', parameter: 'LVEF', requirement: '≥50%' }
79
+ ],
80
+ exclusionCriteria: ['HER2-positive (IHC 3+)', 'History of ILD', 'Uncontrolled brain mets'],
81
+ inclusionCriteria: ['HER2-low (IHC 1+ or 2+/FISH-)', 'HR+ or HR-', 'Metastatic breast cancer']
82
+ },
83
+ locations: [
84
+ { facility: 'Dana-Farber Cancer Institute', city: 'Boston', state: 'MA', country: 'USA', status: 'Recruiting' }
85
+ ],
86
+ biomarkerRequirements: [
87
+ { biomarker: 'HER2-low', requirement: 'Required', testMethod: ['IHC', 'FISH'] }
88
+ ],
89
+ primaryEndpoint: 'Progression-free survival',
90
+ estimatedEnrollment: 850,
91
+ studyStartDate: '2021-03',
92
+ estimatedCompletionDate: '2026-06'
93
+ },
94
+ // KRAS G12C Trials
95
+ {
96
+ nctId: 'NCT04685135',
97
+ title: 'Sotorasib + Anti-EGFR in KRAS G12C CRC (CodeBreaK 300)',
98
+ phase: 'Phase 3',
99
+ status: 'Recruiting',
100
+ trialType: 'Interventional',
101
+ sponsor: 'Amgen',
102
+ conditions: ['Colorectal Cancer', 'KRAS G12C'],
103
+ interventions: [
104
+ { type: 'Combination', name: 'Sotorasib + Panitumumab', mechanism: 'KRAS G12C inhibitor + anti-EGFR', novelty: 'Combination' }
105
+ ],
106
+ eligibilityCriteria: {
107
+ ageRange: { min: 18, max: 99 },
108
+ gender: 'All',
109
+ performanceStatus: { scale: 'ECOG', maxValue: 1 },
110
+ priorTherapyRequirements: [
111
+ { requirement: 'Required', therapyType: 'Prior chemotherapy', details: '1-2 prior lines for metastatic disease' }
112
+ ],
113
+ organFunctionRequirements: [],
114
+ exclusionCriteria: ['Prior KRAS G12C inhibitor', 'Symptomatic brain mets'],
115
+ inclusionCriteria: ['KRAS G12C mutation', 'Metastatic CRC', 'Prior fluoropyrimidine, oxaliplatin, irinotecan']
116
+ },
117
+ locations: [
118
+ { facility: 'Multiple sites', city: 'Various', state: 'Various', country: 'USA', status: 'Recruiting' }
119
+ ],
120
+ biomarkerRequirements: [
121
+ { biomarker: 'KRAS G12C', requirement: 'Required', testMethod: ['NGS', 'PCR'] }
122
+ ],
123
+ primaryEndpoint: 'Overall survival',
124
+ estimatedEnrollment: 160,
125
+ studyStartDate: '2021-01',
126
+ estimatedCompletionDate: '2025-06'
127
+ },
128
+ // Basket Trial Example
129
+ {
130
+ nctId: 'NCT02465060',
131
+ title: 'NCI-MATCH: Targeted Therapy Directed by Genetic Testing (Basket Trial)',
132
+ phase: 'Phase 2',
133
+ status: 'Active, not recruiting',
134
+ trialType: 'Basket',
135
+ sponsor: 'NCI',
136
+ conditions: ['Solid Tumors', 'Lymphoma'],
137
+ interventions: [
138
+ { type: 'Drug', name: 'Multiple targeted agents', mechanism: 'Various - based on molecular alteration', novelty: 'First-in-class' }
139
+ ],
140
+ eligibilityCriteria: {
141
+ ageRange: { min: 18, max: 99 },
142
+ gender: 'All',
143
+ performanceStatus: { scale: 'ECOG', maxValue: 1 },
144
+ priorTherapyRequirements: [
145
+ { requirement: 'Required', therapyType: 'Prior standard therapy', details: 'Progressed on standard options' }
146
+ ],
147
+ organFunctionRequirements: [],
148
+ exclusionCriteria: ['Matched targeted therapy previously received'],
149
+ inclusionCriteria: ['Actionable genomic alteration', 'No standard treatment options']
150
+ },
151
+ locations: [
152
+ { facility: 'ECOG-ACRIN Network Sites', city: 'Multiple', state: 'Multiple', country: 'USA', status: 'Recruiting' }
153
+ ],
154
+ biomarkerRequirements: [
155
+ { biomarker: 'Actionable mutation per NCI-MATCH arms', requirement: 'Required', testMethod: ['NGS'] }
156
+ ],
157
+ primaryEndpoint: 'Overall response rate',
158
+ estimatedEnrollment: 6000,
159
+ studyStartDate: '2015-08',
160
+ estimatedCompletionDate: '2025-12'
161
+ },
162
+ // Immunotherapy Combination
163
+ {
164
+ nctId: 'NCT03899610',
165
+ title: 'Nivolumab + Relatlimab vs Nivolumab in Melanoma (RELATIVITY-047)',
166
+ phase: 'Phase 3',
167
+ status: 'Active, not recruiting',
168
+ trialType: 'Interventional',
169
+ sponsor: 'Bristol-Myers Squibb',
170
+ conditions: ['Melanoma'],
171
+ interventions: [
172
+ { type: 'Combination', name: 'Nivolumab + Relatlimab', mechanism: 'Anti-PD-1 + Anti-LAG-3', novelty: 'First-in-class' }
173
+ ],
174
+ eligibilityCriteria: {
175
+ ageRange: { min: 18, max: 99 },
176
+ gender: 'All',
177
+ performanceStatus: { scale: 'ECOG', maxValue: 1 },
178
+ priorTherapyRequirements: [
179
+ { requirement: 'Excluded', therapyType: 'Prior anti-PD-1/PD-L1', details: 'No prior checkpoint inhibitor' }
180
+ ],
181
+ organFunctionRequirements: [],
182
+ exclusionCriteria: ['Active autoimmune disease', 'Prior immunotherapy'],
183
+ inclusionCriteria: ['Unresectable or metastatic melanoma', 'Treatment-naive for metastatic disease']
184
+ },
185
+ locations: [
186
+ { facility: 'Multiple sites', city: 'Various', state: 'Various', country: 'USA', status: 'Recruiting' }
187
+ ],
188
+ biomarkerRequirements: [],
189
+ primaryEndpoint: 'Progression-free survival',
190
+ estimatedEnrollment: 714,
191
+ studyStartDate: '2019-04',
192
+ estimatedCompletionDate: '2024-12'
193
+ },
194
+ // CAR-T Trial
195
+ {
196
+ nctId: 'NCT04503278',
197
+ title: 'Cilta-cel vs Standard of Care in Multiple Myeloma (CARTITUDE-4)',
198
+ phase: 'Phase 3',
199
+ status: 'Active, not recruiting',
200
+ trialType: 'Interventional',
201
+ sponsor: 'Janssen',
202
+ conditions: ['Multiple Myeloma'],
203
+ interventions: [
204
+ { type: 'Biological', name: 'Ciltacabtagene autoleucel (Cilta-cel)', mechanism: 'BCMA-directed CAR-T', novelty: 'Next-generation' }
205
+ ],
206
+ eligibilityCriteria: {
207
+ ageRange: { min: 18, max: 99 },
208
+ gender: 'All',
209
+ performanceStatus: { scale: 'ECOG', maxValue: 1 },
210
+ priorTherapyRequirements: [
211
+ { requirement: 'Required', therapyType: 'Prior lenalidomide and PI', details: '1-3 prior lines including lenalidomide and a PI' }
212
+ ],
213
+ organFunctionRequirements: [
214
+ { organ: 'Cardiac', parameter: 'LVEF', requirement: '≥45%' },
215
+ { organ: 'Pulmonary', parameter: 'O2 sat', requirement: '≥92% on room air' }
216
+ ],
217
+ exclusionCriteria: ['Prior BCMA-targeted therapy', 'Active CNS involvement', 'Uncontrolled infection'],
218
+ inclusionCriteria: ['Relapsed/refractory MM', 'Lenalidomide-refractory', '1-3 prior lines']
219
+ },
220
+ locations: [
221
+ { facility: 'Multiple academic centers', city: 'Various', state: 'Various', country: 'USA', status: 'Recruiting' }
222
+ ],
223
+ biomarkerRequirements: [],
224
+ primaryEndpoint: 'Progression-free survival',
225
+ estimatedEnrollment: 400,
226
+ studyStartDate: '2020-06',
227
+ estimatedCompletionDate: '2026-01'
228
+ },
229
+ // Pediatric Trial
230
+ {
231
+ nctId: 'NCT03155620',
232
+ title: 'Larotrectinib in Pediatric Solid Tumors with NTRK Fusion (SCOUT)',
233
+ phase: 'Phase 1/2',
234
+ status: 'Recruiting',
235
+ trialType: 'Basket',
236
+ sponsor: 'Bayer',
237
+ conditions: ['Pediatric Solid Tumors', 'NTRK Fusion'],
238
+ interventions: [
239
+ { type: 'Drug', name: 'Larotrectinib', mechanism: 'TRK inhibitor', novelty: 'First-in-class' }
240
+ ],
241
+ eligibilityCriteria: {
242
+ ageRange: { min: 0, max: 21 },
243
+ gender: 'All',
244
+ performanceStatus: { scale: 'Karnofsky', maxValue: 50 },
245
+ priorTherapyRequirements: [
246
+ { requirement: 'Allowed', therapyType: 'Prior therapy', details: 'No limit on prior therapies' }
247
+ ],
248
+ organFunctionRequirements: [],
249
+ exclusionCriteria: ['Prior TRK inhibitor', 'Primary CNS tumor'],
250
+ inclusionCriteria: ['NTRK gene fusion', 'Relapsed or refractory solid tumor', 'Age ≤21']
251
+ },
252
+ locations: [
253
+ { facility: "Children's Hospital of Philadelphia", city: 'Philadelphia', state: 'PA', country: 'USA', status: 'Recruiting' },
254
+ { facility: 'Texas Childrens Hospital', city: 'Houston', state: 'TX', country: 'USA', status: 'Recruiting' }
255
+ ],
256
+ biomarkerRequirements: [
257
+ { biomarker: 'NTRK1/2/3 fusion', requirement: 'Required', testMethod: ['NGS', 'FISH', 'IHC'] }
258
+ ],
259
+ primaryEndpoint: 'Overall response rate',
260
+ estimatedEnrollment: 150,
261
+ studyStartDate: '2017-07',
262
+ estimatedCompletionDate: '2025-12'
263
+ }
264
+ ];
265
+ // ═══════════════════════════════════════════════════════════════════════════════
266
+ // TRIAL MATCHING ENGINE
267
+ // ═══════════════════════════════════════════════════════════════════════════════
268
+ export class ClinicalTrialMatchingEngine {
269
+ trials = TRIAL_DATABASE;
270
+ findMatchingTrials(patient) {
271
+ const matches = [];
272
+ for (const trial of this.trials) {
273
+ if (trial.status === 'Withdrawn' || trial.status === 'Terminated')
274
+ continue;
275
+ const matchResult = this.evaluateTrialMatch(patient, trial);
276
+ if (matchResult.matchScore > 0) {
277
+ matches.push(matchResult);
278
+ }
279
+ }
280
+ return matches.sort((a, b) => b.matchScore - a.matchScore);
281
+ }
282
+ evaluateTrialMatch(patient, trial) {
283
+ const matchDetails = [];
284
+ const barriers = [];
285
+ let score = 0;
286
+ // Check cancer type match
287
+ const cancerMatch = trial.conditions.some(c => c.toLowerCase().includes(patient.cancerType.toLowerCase()) ||
288
+ patient.cancerType.toLowerCase().includes(c.toLowerCase()));
289
+ if (cancerMatch) {
290
+ score += 30;
291
+ matchDetails.push({ criterion: 'Cancer type', status: 'Met', explanation: 'Cancer type matches trial conditions' });
292
+ }
293
+ else {
294
+ matchDetails.push({ criterion: 'Cancer type', status: 'Not Met', explanation: 'Cancer type does not match' });
295
+ }
296
+ // Check biomarker requirements
297
+ for (const bioReq of trial.biomarkerRequirements) {
298
+ const patientBiomarker = patient.biomarkers.find(b => b.name.toLowerCase().includes(bioReq.biomarker.toLowerCase()) ||
299
+ bioReq.biomarker.toLowerCase().includes(b.name.toLowerCase()));
300
+ if (bioReq.requirement === 'Required') {
301
+ if (patientBiomarker?.status === 'Positive') {
302
+ score += 25;
303
+ matchDetails.push({ criterion: `Biomarker: ${bioReq.biomarker}`, status: 'Met', explanation: 'Required biomarker is positive' });
304
+ }
305
+ else if (patientBiomarker?.status === 'Negative') {
306
+ score -= 50;
307
+ barriers.push(`Required biomarker ${bioReq.biomarker} is negative`);
308
+ matchDetails.push({ criterion: `Biomarker: ${bioReq.biomarker}`, status: 'Not Met', explanation: 'Required biomarker is negative' });
309
+ }
310
+ else {
311
+ matchDetails.push({ criterion: `Biomarker: ${bioReq.biomarker}`, status: 'Unknown', explanation: 'Biomarker status not tested' });
312
+ }
313
+ }
314
+ else if (bioReq.requirement === 'Excluded') {
315
+ if (patientBiomarker?.status === 'Positive') {
316
+ score -= 50;
317
+ barriers.push(`Excluded biomarker ${bioReq.biomarker} is positive`);
318
+ matchDetails.push({ criterion: `Biomarker: ${bioReq.biomarker}`, status: 'Not Met', explanation: 'Excluded biomarker is positive' });
319
+ }
320
+ }
321
+ }
322
+ // Check age eligibility
323
+ const ageElig = trial.eligibilityCriteria.ageRange;
324
+ if (patient.age >= ageElig.min && patient.age <= ageElig.max) {
325
+ score += 10;
326
+ matchDetails.push({ criterion: 'Age', status: 'Met', explanation: `Age ${patient.age} within range ${ageElig.min}-${ageElig.max}` });
327
+ }
328
+ else {
329
+ barriers.push(`Age ${patient.age} outside eligible range ${ageElig.min}-${ageElig.max}`);
330
+ matchDetails.push({ criterion: 'Age', status: 'Not Met', explanation: 'Age outside eligible range' });
331
+ }
332
+ // Check performance status
333
+ const psReq = trial.eligibilityCriteria.performanceStatus;
334
+ if (patient.performanceStatus <= psReq.maxValue) {
335
+ score += 10;
336
+ matchDetails.push({ criterion: 'Performance status', status: 'Met', explanation: `PS ${patient.performanceStatus} meets requirement ≤${psReq.maxValue}` });
337
+ }
338
+ else {
339
+ barriers.push(`Performance status ${patient.performanceStatus} exceeds maximum ${psReq.maxValue}`);
340
+ matchDetails.push({ criterion: 'Performance status', status: 'Not Met', explanation: 'Performance status too high' });
341
+ }
342
+ // Check phase preference
343
+ if (patient.preferences.preferredPhases.includes(trial.phase)) {
344
+ score += 5;
345
+ }
346
+ // Check location
347
+ const matchingLocation = trial.locations.find(loc => loc.country === patient.location.country &&
348
+ loc.status === 'Recruiting');
349
+ if (matchingLocation) {
350
+ score += 10;
351
+ matchDetails.push({ criterion: 'Location', status: 'Met', explanation: `Trial available in ${matchingLocation.city}, ${matchingLocation.state}` });
352
+ }
353
+ else if (patient.willingToTravel) {
354
+ score += 5;
355
+ matchDetails.push({ criterion: 'Location', status: 'Partial', explanation: 'Patient willing to travel' });
356
+ }
357
+ else {
358
+ barriers.push('No recruiting sites in patient location');
359
+ matchDetails.push({ criterion: 'Location', status: 'Not Met', explanation: 'No local sites; travel required' });
360
+ }
361
+ // Determine eligibility status
362
+ let eligibilityStatus;
363
+ if (barriers.length === 0 && score > 50) {
364
+ eligibilityStatus = 'Likely Eligible';
365
+ }
366
+ else if (barriers.length === 0) {
367
+ eligibilityStatus = 'Need More Info';
368
+ }
369
+ else if (barriers.some(b => b.includes('Required biomarker') || b.includes('Age'))) {
370
+ eligibilityStatus = 'Likely Ineligible';
371
+ }
372
+ else {
373
+ eligibilityStatus = 'Possibly Eligible';
374
+ }
375
+ // Generate next steps
376
+ const nextSteps = [];
377
+ if (eligibilityStatus === 'Likely Eligible' || eligibilityStatus === 'Possibly Eligible') {
378
+ nextSteps.push('Discuss with oncologist');
379
+ nextSteps.push(`Contact trial site: ${trial.locations[0]?.facility || 'See ClinicalTrials.gov'}`);
380
+ nextSteps.push(`Search ClinicalTrials.gov for NCT: ${trial.nctId}`);
381
+ }
382
+ if (matchDetails.some(m => m.status === 'Unknown')) {
383
+ nextSteps.push('Complete biomarker testing');
384
+ }
385
+ return {
386
+ trial,
387
+ matchScore: Math.max(0, score),
388
+ matchDetails,
389
+ eligibilityStatus,
390
+ barriers,
391
+ nextSteps
392
+ };
393
+ }
394
+ findTrialsByBiomarker(biomarker) {
395
+ return this.trials.filter(trial => trial.biomarkerRequirements.some(b => b.biomarker.toLowerCase().includes(biomarker.toLowerCase())));
396
+ }
397
+ findTrialsByMechanism(mechanism) {
398
+ return this.trials.filter(trial => trial.interventions.some(i => i.mechanism.toLowerCase().includes(mechanism.toLowerCase())));
399
+ }
400
+ findBasketTrials() {
401
+ return this.trials.filter(trial => trial.trialType === 'Basket');
402
+ }
403
+ findPediatricTrials() {
404
+ return this.trials.filter(trial => trial.eligibilityCriteria.ageRange.min < 18 ||
405
+ trial.conditions.some(c => c.toLowerCase().includes('pediatric')));
406
+ }
407
+ getTrialById(nctId) {
408
+ return this.trials.find(t => t.nctId === nctId);
409
+ }
410
+ generateTrialSearchStrategy(patient) {
411
+ const searchTerms = [
412
+ patient.cancerType,
413
+ patient.histology,
414
+ ...patient.biomarkers.filter(b => b.status === 'Positive').map(b => b.name)
415
+ ];
416
+ return {
417
+ searchTerms,
418
+ recommendedDatabases: [
419
+ 'ClinicalTrials.gov (clinicaltrials.gov)',
420
+ 'NCI Cancer Clinical Trials (cancer.gov/clinicaltrials)',
421
+ 'TrialMatch (lls.org/support/information-specialists)',
422
+ 'EmergingMed Navigator (emergingmed.com)'
423
+ ],
424
+ searchTips: [
425
+ 'Use condition + biomarker for targeted searches',
426
+ 'Filter by "Recruiting" status',
427
+ 'Check Phase 1/2 trials for novel mechanisms',
428
+ 'Consider basket trials if you have an actionable mutation',
429
+ 'Contact trial coordinators directly for eligibility questions'
430
+ ]
431
+ };
432
+ }
433
+ }
434
+ // Export singleton
435
+ export const clinicalTrialMatchingEngine = new ClinicalTrialMatchingEngine();
436
+ //# sourceMappingURL=clinicalTrialMatchingModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clinicalTrialMatchingModule.js","sourceRoot":"","sources":["../../src/capabilities/clinicalTrialMatchingModule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,195 @@
1
+ /**
2
+ * 癌症治愈验证框架 (Cancer Cure Validation Framework)
3
+ *
4
+ * ██╗ ██╗ █████╗ ██╗ ██╗██████╗ █████╗ ████████╗███████╗
5
+ * ██║ ██║██╔══██╗██║ ██║██╔══██╗██╔══██╗╚══██╔══╝██╔════╝
6
+ * ██║ ██║███████║██║ ██║██║ ██║███████║ ██║ █████╗
7
+ * ╚██╗ ██╔╝██╔══██║██║ ██║██║ ██║██╔══██║ ██║ ██╔══╝
8
+ * ╚████╔╝ ██║ ██║███████╗██║██████╔╝██║ ██║ ██║ ███████╗
9
+ * ╚═══╝ ╚═╝ ╚═╝╚══════╝╚═╝╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚══════╝
10
+ *
11
+ * Comprehensive validation ensuring:
12
+ * - 完整性验证 (Coverage Completeness)
13
+ * - 治疗效果验证 (Treatment Efficacy Validation)
14
+ * - 生存率监测 (Survival Monitoring)
15
+ * - 治愈认证 (Cure Certification)
16
+ * - 复发监测 (Recurrence Surveillance)
17
+ */
18
+ export interface CancerCoverageValidation {
19
+ cancerType: string;
20
+ icd10Code: string;
21
+ icdoMorphology: string;
22
+ hasTreatmentProtocol: boolean;
23
+ hasGlobalGuidelines: boolean;
24
+ hasResourceLimitedAdaptation: boolean;
25
+ hasPediatricProtocol: boolean;
26
+ hasEmergingTherapy: boolean;
27
+ hasSupportiveCare: boolean;
28
+ coverageScore: number;
29
+ gaps: string[];
30
+ recommendations: string[];
31
+ }
32
+ export interface TreatmentOutcomeValidation {
33
+ patientId: string;
34
+ cancerType: string;
35
+ stage: string;
36
+ treatmentProtocol: string;
37
+ startDate: Date;
38
+ currentStatus: 'active_treatment' | 'response' | 'stable' | 'progression' | 'remission' | 'cure_pending' | 'cured';
39
+ responseAssessment: {
40
+ method: 'RECIST' | 'iRECIST' | 'RANO' | 'Lugano' | 'IMWG' | 'Other';
41
+ result: 'CR' | 'PR' | 'SD' | 'PD' | 'NE';
42
+ date: Date;
43
+ };
44
+ biomarkerResponse?: {
45
+ marker: string;
46
+ baseline: number;
47
+ current: number;
48
+ percentChange: number;
49
+ }[];
50
+ molecularResponse?: {
51
+ mrdStatus: 'positive' | 'negative' | 'not_assessed';
52
+ ctdnaStatus?: 'detected' | 'not_detected' | 'not_assessed';
53
+ sensitivity: string;
54
+ };
55
+ nextAssessment: Date;
56
+ }
57
+ export interface CureCriteria {
58
+ cancerType: string;
59
+ definition: string;
60
+ timeRequirement: string;
61
+ biomarkerRequirements: string[];
62
+ imagingRequirements: string[];
63
+ clinicalRequirements: string[];
64
+ surveillanceProtocol: string[];
65
+ lateEffectsMonitoring: string[];
66
+ }
67
+ export interface CureVerification {
68
+ patientId: string;
69
+ cancerType: string;
70
+ diagnosisDate: Date;
71
+ treatmentCompletionDate: Date;
72
+ currentDate: Date;
73
+ timeSinceCompletion: string;
74
+ cureStatus: 'pending' | 'conditional' | 'verified' | 'not_applicable';
75
+ criteriaMetStatus: {
76
+ criterion: string;
77
+ met: boolean;
78
+ evidence: string;
79
+ }[];
80
+ overallConfidence: number;
81
+ nextVerificationDate: Date;
82
+ surveillanceSchedule: {
83
+ assessment: string;
84
+ date: Date;
85
+ }[];
86
+ }
87
+ export interface ComprehensiveCoverageReport {
88
+ generatedAt: Date;
89
+ totalCancerTypes: number;
90
+ coveredCancerTypes: number;
91
+ coveragePercentage: number;
92
+ byCategory: {
93
+ solidTumors: {
94
+ total: number;
95
+ covered: number;
96
+ };
97
+ hematologic: {
98
+ total: number;
99
+ covered: number;
100
+ };
101
+ pediatric: {
102
+ total: number;
103
+ covered: number;
104
+ };
105
+ rare: {
106
+ total: number;
107
+ covered: number;
108
+ };
109
+ };
110
+ byRegion: {
111
+ nccn: number;
112
+ esmo: number;
113
+ asian: number;
114
+ african: number;
115
+ latinAmerican: number;
116
+ who: number;
117
+ };
118
+ gaps: CancerCoverageValidation[];
119
+ recommendations: string[];
120
+ }
121
+ export declare const COMPLETE_CANCER_TAXONOMY: {
122
+ solidTumors: {
123
+ headAndNeck: string[];
124
+ thoracic: string[];
125
+ breast: string[];
126
+ giUpper: string[];
127
+ giLower: string[];
128
+ hepatobiliary: string[];
129
+ pancreas: string[];
130
+ genitourinary: string[];
131
+ gynecologic: string[];
132
+ skin: string[];
133
+ cns: string[];
134
+ bone: string[];
135
+ softTissue: string[];
136
+ neuroendocrine: string[];
137
+ rare: string[];
138
+ };
139
+ hematologic: {
140
+ leukemia: string[];
141
+ lymphoma: string[];
142
+ plasmaCell: string[];
143
+ mpn: string[];
144
+ mds: string[];
145
+ };
146
+ pediatric: {
147
+ solid: string[];
148
+ cns: string[];
149
+ hematologic: string[];
150
+ };
151
+ };
152
+ export declare const CURE_CRITERIA_DATABASE: CureCriteria[];
153
+ export declare class CureValidationFramework {
154
+ /**
155
+ * Validate comprehensive cancer coverage
156
+ */
157
+ validateCoverageCompleteness(): Promise<ComprehensiveCoverageReport>;
158
+ /**
159
+ * Verify patient cure status
160
+ */
161
+ verifyCureStatus(patientId: string, cancerType: string, treatmentHistory: TreatmentOutcomeValidation): Promise<CureVerification>;
162
+ /**
163
+ * Generate coverage validation for a specific cancer type
164
+ */
165
+ validateCancerCoverage(cancerType: string): Promise<CancerCoverageValidation>;
166
+ /**
167
+ * Get all cancer types from taxonomy
168
+ */
169
+ private getAllCancerTypes;
170
+ private assessCoveredTypes;
171
+ private calculateCategoryBreakdown;
172
+ private calculateRegionalBreakdown;
173
+ private generateCoverageRecommendations;
174
+ private calculateTimeSince;
175
+ private evaluateCriteria;
176
+ private calculateCureConfidence;
177
+ private determineCureStatus;
178
+ private calculateNextVerification;
179
+ private generateSurveillanceSchedule;
180
+ private generateGenericCureVerification;
181
+ private calculateCoverageScore;
182
+ private getICD10Code;
183
+ private getICDOMorphology;
184
+ /**
185
+ * Get coverage statistics summary
186
+ */
187
+ getCoverageStatistics(): {
188
+ totalCancerTypesInTaxonomy: number;
189
+ solidTumorCategories: number;
190
+ hematologicCategories: number;
191
+ pediatricCategories: number;
192
+ cureCriteriaDefined: number;
193
+ };
194
+ }
195
+ //# sourceMappingURL=cureValidationFramework.d.ts.map