fluxq-engine 1.0.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 (90) hide show
  1. package/README.md +35 -0
  2. package/dist/api/client.d.ts +82 -0
  3. package/dist/api/client.d.ts.map +1 -0
  4. package/dist/api/client.js +75 -0
  5. package/dist/api/client.js.map +1 -0
  6. package/dist/api/controllers.d.ts +12 -0
  7. package/dist/api/controllers.d.ts.map +1 -0
  8. package/dist/api/controllers.js +569 -0
  9. package/dist/api/controllers.js.map +1 -0
  10. package/dist/api/middleware.d.ts +7 -0
  11. package/dist/api/middleware.d.ts.map +1 -0
  12. package/dist/api/middleware.js +133 -0
  13. package/dist/api/middleware.js.map +1 -0
  14. package/dist/api/routes.d.ts +3 -0
  15. package/dist/api/routes.d.ts.map +1 -0
  16. package/dist/api/routes.js +46 -0
  17. package/dist/api/routes.js.map +1 -0
  18. package/dist/api/server.d.ts +4 -0
  19. package/dist/api/server.d.ts.map +1 -0
  20. package/dist/api/server.js +72 -0
  21. package/dist/api/server.js.map +1 -0
  22. package/dist/core/classifiers/bloodPressure.d.ts +9 -0
  23. package/dist/core/classifiers/bloodPressure.d.ts.map +1 -0
  24. package/dist/core/classifiers/bloodPressure.js +178 -0
  25. package/dist/core/classifiers/bloodPressure.js.map +1 -0
  26. package/dist/core/classifiers/cholesterol.d.ts +9 -0
  27. package/dist/core/classifiers/cholesterol.d.ts.map +1 -0
  28. package/dist/core/classifiers/cholesterol.js +123 -0
  29. package/dist/core/classifiers/cholesterol.js.map +1 -0
  30. package/dist/core/classifiers/diabetes.d.ts +8 -0
  31. package/dist/core/classifiers/diabetes.d.ts.map +1 -0
  32. package/dist/core/classifiers/diabetes.js +154 -0
  33. package/dist/core/classifiers/diabetes.js.map +1 -0
  34. package/dist/core/classifiers/general.d.ts +8 -0
  35. package/dist/core/classifiers/general.d.ts.map +1 -0
  36. package/dist/core/classifiers/general.js +84 -0
  37. package/dist/core/classifiers/general.js.map +1 -0
  38. package/dist/core/classifiers/index.d.ts +5 -0
  39. package/dist/core/classifiers/index.d.ts.map +1 -0
  40. package/dist/core/classifiers/index.js +113 -0
  41. package/dist/core/classifiers/index.js.map +1 -0
  42. package/dist/core/classifiers/redFlags.d.ts +10 -0
  43. package/dist/core/classifiers/redFlags.d.ts.map +1 -0
  44. package/dist/core/classifiers/redFlags.js +59 -0
  45. package/dist/core/classifiers/redFlags.js.map +1 -0
  46. package/dist/core/clinicalMultiplier.d.ts +6 -0
  47. package/dist/core/clinicalMultiplier.d.ts.map +1 -0
  48. package/dist/core/clinicalMultiplier.js +199 -0
  49. package/dist/core/clinicalMultiplier.js.map +1 -0
  50. package/dist/core/demo.d.ts +3 -0
  51. package/dist/core/demo.d.ts.map +1 -0
  52. package/dist/core/demo.js +128 -0
  53. package/dist/core/demo.js.map +1 -0
  54. package/dist/core/fairnessEngine.d.ts +13 -0
  55. package/dist/core/fairnessEngine.d.ts.map +1 -0
  56. package/dist/core/fairnessEngine.js +156 -0
  57. package/dist/core/fairnessEngine.js.map +1 -0
  58. package/dist/core/metricsCalculator.d.ts +23 -0
  59. package/dist/core/metricsCalculator.d.ts.map +1 -0
  60. package/dist/core/metricsCalculator.js +159 -0
  61. package/dist/core/metricsCalculator.js.map +1 -0
  62. package/dist/core/predictor.d.ts +11 -0
  63. package/dist/core/predictor.d.ts.map +1 -0
  64. package/dist/core/predictor.js +45 -0
  65. package/dist/core/predictor.js.map +1 -0
  66. package/dist/core/priorityScorer.d.ts +17 -0
  67. package/dist/core/priorityScorer.d.ts.map +1 -0
  68. package/dist/core/priorityScorer.js +129 -0
  69. package/dist/core/priorityScorer.js.map +1 -0
  70. package/dist/core/queueConfig.d.ts +4 -0
  71. package/dist/core/queueConfig.d.ts.map +1 -0
  72. package/dist/core/queueConfig.js +114 -0
  73. package/dist/core/queueConfig.js.map +1 -0
  74. package/dist/core/queueOptimizer.d.ts +24 -0
  75. package/dist/core/queueOptimizer.d.ts.map +1 -0
  76. package/dist/core/queueOptimizer.js +269 -0
  77. package/dist/core/queueOptimizer.js.map +1 -0
  78. package/dist/core/simulator.d.ts +12 -0
  79. package/dist/core/simulator.d.ts.map +1 -0
  80. package/dist/core/simulator.js +181 -0
  81. package/dist/core/simulator.js.map +1 -0
  82. package/dist/core/types.d.ts +249 -0
  83. package/dist/core/types.d.ts.map +1 -0
  84. package/dist/core/types.js +20 -0
  85. package/dist/core/types.js.map +1 -0
  86. package/dist/index.d.ts +17 -0
  87. package/dist/index.d.ts.map +1 -0
  88. package/dist/index.js +42 -0
  89. package/dist/index.js.map +1 -0
  90. package/package.json +51 -0
@@ -0,0 +1,249 @@
1
+ export type UrgencyLevel = 'CRITICAL' | 'HIGH' | 'STANDARD' | 'LOW';
2
+ export type QueueType = 'diabetes' | 'cholesterol' | 'bloodPressure' | 'general';
3
+ export type ComfortLevel = 0 | 1 | 2 | 3 | 4;
4
+ export type OnsetType = 'acute' | 'today' | 'days' | 'chronic';
5
+ export type SeverityLevel = 'low' | 'standard' | 'high' | 'critical';
6
+ export interface EmergencySignals {
7
+ chestPain: boolean;
8
+ breathingDifficulty: boolean;
9
+ severeHeadache: boolean;
10
+ confusion: boolean;
11
+ visionLoss: boolean;
12
+ limbWeakness: boolean;
13
+ fainting: boolean;
14
+ }
15
+ export interface MedicalContext {
16
+ hasDiabetes?: boolean;
17
+ hasHeartDisease?: boolean;
18
+ hasKidneyDisease?: boolean;
19
+ hasHighBP?: boolean;
20
+ hasHighCholesterol?: boolean;
21
+ onMedication?: boolean;
22
+ isPregnant?: boolean;
23
+ }
24
+ export interface DiabetesSymptoms {
25
+ shaking: boolean;
26
+ suddenSweating: boolean;
27
+ heartPounding: boolean;
28
+ suddenHunger: boolean;
29
+ paleSkin: boolean;
30
+ mentalFog: boolean;
31
+ tinglingLips: boolean;
32
+ suddenAnxiety: boolean;
33
+ extremeThirst: boolean;
34
+ frequentUrination: boolean;
35
+ blurredVision: boolean;
36
+ fruityBreath: boolean;
37
+ nausea: boolean;
38
+ deepFastBreathing: boolean;
39
+ extremeTiredness: boolean;
40
+ stomachPain: boolean;
41
+ slowWoundHealing: boolean;
42
+ onInsulin: boolean;
43
+ hasKidneyDisease: boolean;
44
+ isPregnant: boolean;
45
+ recentHypoEpisode: boolean;
46
+ missedInsulinDose: boolean;
47
+ routineCheck: boolean;
48
+ bloodGlucose?: number;
49
+ hba1c?: number;
50
+ }
51
+ export interface CholesterolSymptoms {
52
+ followUpBloodTest: boolean;
53
+ doctorReferred: boolean;
54
+ chestTightness: boolean;
55
+ breathlessOnStairs: boolean;
56
+ unusualFatigue: boolean;
57
+ familyHeartAttack: boolean;
58
+ priorCardiacEvent: boolean;
59
+ medicationReview: boolean;
60
+ statinSideEffect: boolean;
61
+ generalAssessment: boolean;
62
+ hasDiabetes: boolean;
63
+ hasHighBP: boolean;
64
+ smokerOrExSmoker: boolean;
65
+ significantlyOverweight: boolean;
66
+ ageRisk: boolean;
67
+ familyEarlyHeartAttack: boolean;
68
+ hasKidneyDisease: boolean;
69
+ familialHypercholesterolaemia: boolean;
70
+ priorClotStrokeTIA: boolean;
71
+ inflammatoryCondition: boolean;
72
+ ldl?: number;
73
+ totalCholesterol?: number;
74
+ hdl?: number;
75
+ triglycerides?: number;
76
+ patientGender?: 'M' | 'F' | 'Other';
77
+ }
78
+ export interface BloodPressureSymptoms {
79
+ severeHeadache: boolean;
80
+ blurredVision: boolean;
81
+ nauseaWithHeadache: boolean;
82
+ chestPain: boolean;
83
+ shortnessOfBreathRest: boolean;
84
+ heartbeatInEars: boolean;
85
+ unstoppableNosebleed: boolean;
86
+ swollenAnkles: boolean;
87
+ mildHeadache: boolean;
88
+ flushed: boolean;
89
+ dizziness: boolean;
90
+ palpitations: boolean;
91
+ noSymptoms: boolean;
92
+ diagnosedHighBP: boolean;
93
+ measuredVeryHighToday: boolean;
94
+ missedBPMedication: boolean;
95
+ hasDiabetes: boolean;
96
+ hasKidneyDisease: boolean;
97
+ priorStrokeTIA: boolean;
98
+ hasHeartFailure: boolean;
99
+ isPregnant: boolean;
100
+ recentMedicationChange: boolean;
101
+ systolic?: number;
102
+ diastolic?: number;
103
+ }
104
+ export interface GeneralSymptoms {
105
+ primaryComplaint: 'fever' | 'cough' | 'stomach' | 'pain' | 'skin' | 'mentalHealth' | 'urinary' | 'eyeEarDental' | 'prescription' | 'other';
106
+ highFever: boolean;
107
+ worseningRapidly: boolean;
108
+ bladderBowelLoss: boolean;
109
+ rashWithSwelling: boolean;
110
+ selfHarmThoughts: boolean;
111
+ vomitingOver5Times: boolean;
112
+ nothingStaysDown: boolean;
113
+ worstPainEver: boolean;
114
+ gotSeriousBefore: boolean;
115
+ confusedNotSelf: boolean;
116
+ impactLevel: 0 | 1 | 2 | 3;
117
+ isOver65: boolean;
118
+ immunocompromised: boolean;
119
+ isPregnant: boolean;
120
+ caringForChild: boolean;
121
+ }
122
+ export interface IntakeForm {
123
+ queueType: QueueType;
124
+ comfort: ComfortLevel;
125
+ onset: OnsetType;
126
+ emergencySignals: EmergencySignals;
127
+ diabetesSymptoms?: DiabetesSymptoms;
128
+ cholesterolSymptoms?: CholesterolSymptoms;
129
+ bloodPressureSymptoms?: BloodPressureSymptoms;
130
+ generalSymptoms?: GeneralSymptoms;
131
+ medicalContext?: MedicalContext;
132
+ }
133
+ export interface ClassificationResult {
134
+ severity: SeverityLevel;
135
+ clinicalMultiplier: number;
136
+ symptomPattern: string;
137
+ baseSeverityScore: number;
138
+ finalScore: number;
139
+ starvationThreshold: number;
140
+ estimatedDuration: number;
141
+ escalationReasons: string[];
142
+ queueType: QueueType;
143
+ }
144
+ export interface Patient {
145
+ id: string;
146
+ age: number;
147
+ gender: 'M' | 'F' | 'Other';
148
+ chiefComplaint: string;
149
+ conditionType: string;
150
+ urgency: UrgencyLevel;
151
+ arrivalTime: Date;
152
+ estimatedDuration?: number;
153
+ waitTime?: number;
154
+ consultationTime?: number;
155
+ isReturning: boolean;
156
+ hasComplexHistory: boolean;
157
+ isMultiSymptom: boolean;
158
+ isTeleconsultFollowUp: boolean;
159
+ preferredDoctorId?: string;
160
+ intake?: IntakeForm;
161
+ classification?: ClassificationResult;
162
+ queueType?: QueueType;
163
+ severity?: 'low' | 'medium' | 'high';
164
+ }
165
+ export interface Doctor {
166
+ id: string;
167
+ name: string;
168
+ specialty: string;
169
+ isAvailable: boolean;
170
+ currentWorkload: number;
171
+ maxDailyPatients: number;
172
+ patientsServed: number;
173
+ }
174
+ export interface QueueOptimizationConfig {
175
+ severityWeight: number;
176
+ waitTimeWeight: number;
177
+ fairnessWeight: number;
178
+ maxWaitTimeForLowPriority: number;
179
+ maxWaitTimeForMediumPriority: number;
180
+ maxWaitTimeForHighPriority: number;
181
+ agingThresholds: {
182
+ minutes: number;
183
+ boost: number;
184
+ }[];
185
+ mandatorySlotAfter: number;
186
+ interleaveAfter: number;
187
+ scheduledWindowMinutes: number;
188
+ }
189
+ export interface OptimizationResult {
190
+ baselineQueue: QueueOrder[];
191
+ optimizedQueue: QueueOrder[];
192
+ baselineMetrics: Metrics;
193
+ optimizedMetrics: Metrics;
194
+ fairnessReport: FairnessReport;
195
+ recommendations: string[];
196
+ }
197
+ export interface QueueOrder {
198
+ patient: Patient;
199
+ position: number;
200
+ estimatedStartTime: Date;
201
+ estimatedEndTime: Date;
202
+ estimatedWaitTime: number;
203
+ assignedDoctor?: Doctor;
204
+ priorityScore?: number;
205
+ }
206
+ export interface Metrics {
207
+ averageWaitTime: number;
208
+ medianWaitTime: number;
209
+ maxWaitTime: number;
210
+ minWaitTime: number;
211
+ fairnessScore: number;
212
+ doctorUtilization: number;
213
+ throughput: number;
214
+ patientSatisfaction: number;
215
+ totalOvertime: number;
216
+ waitTimeReduction?: number;
217
+ }
218
+ export interface FairnessViolation {
219
+ patientId: string;
220
+ rule: 'F1' | 'F2' | 'F3' | 'F4';
221
+ reason: string;
222
+ waitTime: number;
223
+ }
224
+ export interface AgingBoost {
225
+ patientId: string;
226
+ waitMinutes: number;
227
+ boostApplied: number;
228
+ newPriority: number;
229
+ }
230
+ export interface StarvationRisk {
231
+ patientId: string;
232
+ urgency: UrgencyLevel;
233
+ currentWait: number;
234
+ threshold: number;
235
+ percentToThreshold: number;
236
+ }
237
+ export interface FairnessReport {
238
+ agingBoosts: AgingBoost[];
239
+ violations: FairnessViolation[];
240
+ fairnessScore: number;
241
+ starvationRisks: StarvationRisk[];
242
+ }
243
+ export interface SimulationInput {
244
+ patients: Patient[];
245
+ doctors?: Doctor[];
246
+ config?: Partial<QueueOptimizationConfig>;
247
+ }
248
+ export declare const DEFAULT_CONFIG: QueueOptimizationConfig;
249
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_CONFIG = void 0;
4
+ exports.DEFAULT_CONFIG = {
5
+ severityWeight: 0.5,
6
+ waitTimeWeight: 0.3,
7
+ fairnessWeight: 0.2,
8
+ maxWaitTimeForLowPriority: 60,
9
+ maxWaitTimeForMediumPriority: 45,
10
+ maxWaitTimeForHighPriority: 30,
11
+ agingThresholds: [
12
+ { minutes: 15, boost: 10 },
13
+ { minutes: 30, boost: 25 },
14
+ { minutes: 45, boost: 45 },
15
+ ],
16
+ mandatorySlotAfter: 60,
17
+ interleaveAfter: 3,
18
+ scheduledWindowMinutes: 240,
19
+ };
20
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":";;;AA4Sa,QAAA,cAAc,GAA4B;IACrD,cAAc,EAAE,GAAG;IACnB,cAAc,EAAE,GAAG;IACnB,cAAc,EAAE,GAAG;IACnB,yBAAyB,EAAE,EAAE;IAC7B,4BAA4B,EAAE,EAAE;IAChC,0BAA0B,EAAE,EAAE;IAC9B,eAAe,EAAE;QACf,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAC1B,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAC1B,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;KAC3B;IACD,kBAAkB,EAAE,EAAE;IACtB,eAAe,EAAE,CAAC;IAClB,sBAAsB,EAAE,GAAG;CAC5B,CAAC"}
@@ -0,0 +1,17 @@
1
+ export { QueueOptimizer } from "./core/queueOptimizer";
2
+ export { DurationPredictor } from "./core/predictor";
3
+ export { PriorityScorer } from "./core/priorityScorer";
4
+ export { MetricsCalculator } from "./core/metricsCalculator";
5
+ export { QueueSimulator } from "./core/simulator";
6
+ export { FairnessEngine } from "./core/fairnessEngine";
7
+ export { classifyPatient, checkRedFlags, severityToUrgency, baseSeverityScore } from "./core/classifiers/index";
8
+ export { classifyDiabetes } from "./core/classifiers/diabetes";
9
+ export { classifyCholesterol } from "./core/classifiers/cholesterol";
10
+ export { classifyBloodPressure } from "./core/classifiers/bloodPressure";
11
+ export { classifyGeneral } from "./core/classifiers/general";
12
+ export { computeDiabetesMultiplier, computeCholesterolMultiplier, computeBPMultiplier, computeGeneralMultiplier, } from "./core/clinicalMultiplier";
13
+ export { getStarvationThreshold, getDurationPrediction } from "./core/queueConfig";
14
+ export type { Patient, Doctor, UrgencyLevel, QueueOptimizationConfig, OptimizationResult, QueueOrder, Metrics, SimulationInput, FairnessReport, FairnessViolation, AgingBoost, StarvationRisk, QueueType, ComfortLevel, OnsetType, SeverityLevel, IntakeForm, ClassificationResult, EmergencySignals, MedicalContext, DiabetesSymptoms, CholesterolSymptoms, BloodPressureSymptoms, GeneralSymptoms, } from "./core/types";
15
+ export { DEFAULT_CONFIG } from "./core/types";
16
+ export { QueueOptimizerClient, apiClient } from "./api/client";
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAChH,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EACL,yBAAyB,EACzB,4BAA4B,EAC5B,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAGnF,YAAY,EACV,OAAO,EACP,MAAM,EACN,YAAY,EACZ,uBAAuB,EACvB,kBAAkB,EAClB,UAAU,EACV,OAAO,EACP,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,UAAU,EACV,cAAc,EAEd,SAAS,EACT,YAAY,EACZ,SAAS,EACT,aAAa,EACb,UAAU,EACV,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,GAChB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.apiClient = exports.QueueOptimizerClient = exports.DEFAULT_CONFIG = exports.getDurationPrediction = exports.getStarvationThreshold = exports.computeGeneralMultiplier = exports.computeBPMultiplier = exports.computeCholesterolMultiplier = exports.computeDiabetesMultiplier = exports.classifyGeneral = exports.classifyBloodPressure = exports.classifyCholesterol = exports.classifyDiabetes = exports.baseSeverityScore = exports.severityToUrgency = exports.checkRedFlags = exports.classifyPatient = exports.FairnessEngine = exports.QueueSimulator = exports.MetricsCalculator = exports.PriorityScorer = exports.DurationPredictor = exports.QueueOptimizer = void 0;
4
+ var queueOptimizer_1 = require("./core/queueOptimizer");
5
+ Object.defineProperty(exports, "QueueOptimizer", { enumerable: true, get: function () { return queueOptimizer_1.QueueOptimizer; } });
6
+ var predictor_1 = require("./core/predictor");
7
+ Object.defineProperty(exports, "DurationPredictor", { enumerable: true, get: function () { return predictor_1.DurationPredictor; } });
8
+ var priorityScorer_1 = require("./core/priorityScorer");
9
+ Object.defineProperty(exports, "PriorityScorer", { enumerable: true, get: function () { return priorityScorer_1.PriorityScorer; } });
10
+ var metricsCalculator_1 = require("./core/metricsCalculator");
11
+ Object.defineProperty(exports, "MetricsCalculator", { enumerable: true, get: function () { return metricsCalculator_1.MetricsCalculator; } });
12
+ var simulator_1 = require("./core/simulator");
13
+ Object.defineProperty(exports, "QueueSimulator", { enumerable: true, get: function () { return simulator_1.QueueSimulator; } });
14
+ var fairnessEngine_1 = require("./core/fairnessEngine");
15
+ Object.defineProperty(exports, "FairnessEngine", { enumerable: true, get: function () { return fairnessEngine_1.FairnessEngine; } });
16
+ var index_1 = require("./core/classifiers/index");
17
+ Object.defineProperty(exports, "classifyPatient", { enumerable: true, get: function () { return index_1.classifyPatient; } });
18
+ Object.defineProperty(exports, "checkRedFlags", { enumerable: true, get: function () { return index_1.checkRedFlags; } });
19
+ Object.defineProperty(exports, "severityToUrgency", { enumerable: true, get: function () { return index_1.severityToUrgency; } });
20
+ Object.defineProperty(exports, "baseSeverityScore", { enumerable: true, get: function () { return index_1.baseSeverityScore; } });
21
+ var diabetes_1 = require("./core/classifiers/diabetes");
22
+ Object.defineProperty(exports, "classifyDiabetes", { enumerable: true, get: function () { return diabetes_1.classifyDiabetes; } });
23
+ var cholesterol_1 = require("./core/classifiers/cholesterol");
24
+ Object.defineProperty(exports, "classifyCholesterol", { enumerable: true, get: function () { return cholesterol_1.classifyCholesterol; } });
25
+ var bloodPressure_1 = require("./core/classifiers/bloodPressure");
26
+ Object.defineProperty(exports, "classifyBloodPressure", { enumerable: true, get: function () { return bloodPressure_1.classifyBloodPressure; } });
27
+ var general_1 = require("./core/classifiers/general");
28
+ Object.defineProperty(exports, "classifyGeneral", { enumerable: true, get: function () { return general_1.classifyGeneral; } });
29
+ var clinicalMultiplier_1 = require("./core/clinicalMultiplier");
30
+ Object.defineProperty(exports, "computeDiabetesMultiplier", { enumerable: true, get: function () { return clinicalMultiplier_1.computeDiabetesMultiplier; } });
31
+ Object.defineProperty(exports, "computeCholesterolMultiplier", { enumerable: true, get: function () { return clinicalMultiplier_1.computeCholesterolMultiplier; } });
32
+ Object.defineProperty(exports, "computeBPMultiplier", { enumerable: true, get: function () { return clinicalMultiplier_1.computeBPMultiplier; } });
33
+ Object.defineProperty(exports, "computeGeneralMultiplier", { enumerable: true, get: function () { return clinicalMultiplier_1.computeGeneralMultiplier; } });
34
+ var queueConfig_1 = require("./core/queueConfig");
35
+ Object.defineProperty(exports, "getStarvationThreshold", { enumerable: true, get: function () { return queueConfig_1.getStarvationThreshold; } });
36
+ Object.defineProperty(exports, "getDurationPrediction", { enumerable: true, get: function () { return queueConfig_1.getDurationPrediction; } });
37
+ var types_1 = require("./core/types");
38
+ Object.defineProperty(exports, "DEFAULT_CONFIG", { enumerable: true, get: function () { return types_1.DEFAULT_CONFIG; } });
39
+ var client_1 = require("./api/client");
40
+ Object.defineProperty(exports, "QueueOptimizerClient", { enumerable: true, get: function () { return client_1.QueueOptimizerClient; } });
41
+ Object.defineProperty(exports, "apiClient", { enumerable: true, get: function () { return client_1.apiClient; } });
42
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAKA,wDAAuD;AAA9C,gHAAA,cAAc,OAAA;AACvB,8CAAqD;AAA5C,8GAAA,iBAAiB,OAAA;AAC1B,wDAAuD;AAA9C,gHAAA,cAAc,OAAA;AACvB,8DAA6D;AAApD,sHAAA,iBAAiB,OAAA;AAC1B,8CAAkD;AAAzC,2GAAA,cAAc,OAAA;AACvB,wDAAuD;AAA9C,gHAAA,cAAc,OAAA;AAGvB,kDAAgH;AAAvG,wGAAA,eAAe,OAAA;AAAE,sGAAA,aAAa,OAAA;AAAE,0GAAA,iBAAiB,OAAA;AAAE,0GAAA,iBAAiB,OAAA;AAC7E,wDAA+D;AAAtD,4GAAA,gBAAgB,OAAA;AACzB,8DAAqE;AAA5D,kHAAA,mBAAmB,OAAA;AAC5B,kEAAyE;AAAhE,sHAAA,qBAAqB,OAAA;AAC9B,sDAA6D;AAApD,0GAAA,eAAe,OAAA;AACxB,gEAKmC;AAJjC,+HAAA,yBAAyB,OAAA;AACzB,kIAAA,4BAA4B,OAAA;AAC5B,yHAAA,mBAAmB,OAAA;AACnB,8HAAA,wBAAwB,OAAA;AAE1B,kDAAmF;AAA1E,qHAAA,sBAAsB,OAAA;AAAE,oHAAA,qBAAqB,OAAA;AA+BtD,sCAA8C;AAArC,uGAAA,cAAc,OAAA;AAGvB,uCAA+D;AAAtD,8GAAA,oBAAoB,OAAA;AAAE,mGAAA,SAAS,OAAA"}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "fluxq-engine",
3
+ "version": "1.0.0",
4
+ "description": "Powerful, clinical-aware patient triage and queue optimization engine for healthcare platforms.",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "build": "tsc",
9
+ "start": "ts-node src/api/server.ts",
10
+ "demo": "ts-node src/demo.ts",
11
+ "test": "jest",
12
+ "prepare": "npm run build"
13
+ },
14
+ "keywords": [
15
+ "telemedicine",
16
+ "queue-optimization",
17
+ "healthcare",
18
+ "scheduling",
19
+ "priority-queue",
20
+ "ml",
21
+ "fairness"
22
+ ],
23
+ "author": "Your Name",
24
+ "license": "MIT",
25
+ "devDependencies": {
26
+ "@types/cors": "^2.8.19",
27
+ "@types/express": "^5.0.6",
28
+ "@types/node": "^20.0.0",
29
+ "ts-node": "^10.9.2",
30
+ "typescript": "^5.0.0"
31
+ },
32
+ "files": [
33
+ "dist",
34
+ "README.md",
35
+ "LICENSE"
36
+ ],
37
+ "repository": {
38
+ "type": "git",
39
+ "url": "https://github.com/dikshaa2909/FluxQ.git"
40
+ },
41
+ "bugs": {
42
+ "url": "https://github.com/dikshaa2909/FluxQ/issues"
43
+ },
44
+ "homepage": "https://github.com/dikshaa2909/FluxQ#readme",
45
+ "dependencies": {
46
+ "cors": "^2.8.6",
47
+ "dotenv": "^17.3.1",
48
+ "express": "^5.2.1",
49
+ "helmet": "^8.1.0"
50
+ }
51
+ }