@the-cascade-protocol/cli 0.3.5 → 0.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 (126) hide show
  1. package/dist/commands/capabilities.d.ts.map +1 -1
  2. package/dist/commands/capabilities.js +6 -5
  3. package/dist/commands/capabilities.js.map +1 -1
  4. package/dist/commands/pod/conflicts.d.ts +10 -0
  5. package/dist/commands/pod/conflicts.d.ts.map +1 -0
  6. package/dist/commands/pod/conflicts.js +45 -0
  7. package/dist/commands/pod/conflicts.js.map +1 -0
  8. package/dist/commands/pod/import.d.ts.map +1 -1
  9. package/dist/commands/pod/import.js +85 -6
  10. package/dist/commands/pod/import.js.map +1 -1
  11. package/dist/commands/pod/index.d.ts.map +1 -1
  12. package/dist/commands/pod/index.js +4 -0
  13. package/dist/commands/pod/index.js.map +1 -1
  14. package/dist/commands/pod/resolve.d.ts +10 -0
  15. package/dist/commands/pod/resolve.d.ts.map +1 -0
  16. package/dist/commands/pod/resolve.js +61 -0
  17. package/dist/commands/pod/resolve.js.map +1 -0
  18. package/dist/lib/ccda-converter/code-systems.d.ts +6 -0
  19. package/dist/lib/ccda-converter/code-systems.d.ts.map +1 -0
  20. package/dist/lib/ccda-converter/code-systems.js +27 -0
  21. package/dist/lib/ccda-converter/code-systems.js.map +1 -0
  22. package/dist/lib/ccda-converter/document-type.d.ts +6 -0
  23. package/dist/lib/ccda-converter/document-type.d.ts.map +1 -0
  24. package/dist/lib/ccda-converter/document-type.js +15 -0
  25. package/dist/lib/ccda-converter/document-type.js.map +1 -0
  26. package/dist/lib/ccda-converter/index.d.ts +30 -0
  27. package/dist/lib/ccda-converter/index.d.ts.map +1 -0
  28. package/dist/lib/ccda-converter/index.js +211 -0
  29. package/dist/lib/ccda-converter/index.js.map +1 -0
  30. package/dist/lib/ccda-converter/narrative.d.ts +6 -0
  31. package/dist/lib/ccda-converter/narrative.d.ts.map +1 -0
  32. package/dist/lib/ccda-converter/narrative.js +35 -0
  33. package/dist/lib/ccda-converter/narrative.js.map +1 -0
  34. package/dist/lib/ccda-converter/parser.d.ts +6 -0
  35. package/dist/lib/ccda-converter/parser.d.ts.map +1 -0
  36. package/dist/lib/ccda-converter/parser.js +23 -0
  37. package/dist/lib/ccda-converter/parser.js.map +1 -0
  38. package/dist/lib/ccda-converter/sections/allergies.d.ts +8 -0
  39. package/dist/lib/ccda-converter/sections/allergies.d.ts.map +1 -0
  40. package/dist/lib/ccda-converter/sections/allergies.js +57 -0
  41. package/dist/lib/ccda-converter/sections/allergies.js.map +1 -0
  42. package/dist/lib/ccda-converter/sections/devices.d.ts +9 -0
  43. package/dist/lib/ccda-converter/sections/devices.d.ts.map +1 -0
  44. package/dist/lib/ccda-converter/sections/devices.js +50 -0
  45. package/dist/lib/ccda-converter/sections/devices.js.map +1 -0
  46. package/dist/lib/ccda-converter/sections/encounters.d.ts +9 -0
  47. package/dist/lib/ccda-converter/sections/encounters.d.ts.map +1 -0
  48. package/dist/lib/ccda-converter/sections/encounters.js +44 -0
  49. package/dist/lib/ccda-converter/sections/encounters.js.map +1 -0
  50. package/dist/lib/ccda-converter/sections/family-history.d.ts +9 -0
  51. package/dist/lib/ccda-converter/sections/family-history.d.ts.map +1 -0
  52. package/dist/lib/ccda-converter/sections/family-history.js +60 -0
  53. package/dist/lib/ccda-converter/sections/family-history.js.map +1 -0
  54. package/dist/lib/ccda-converter/sections/immunizations.d.ts +8 -0
  55. package/dist/lib/ccda-converter/sections/immunizations.d.ts.map +1 -0
  56. package/dist/lib/ccda-converter/sections/immunizations.js +62 -0
  57. package/dist/lib/ccda-converter/sections/immunizations.js.map +1 -0
  58. package/dist/lib/ccda-converter/sections/labs.d.ts +8 -0
  59. package/dist/lib/ccda-converter/sections/labs.d.ts.map +1 -0
  60. package/dist/lib/ccda-converter/sections/labs.js +82 -0
  61. package/dist/lib/ccda-converter/sections/labs.js.map +1 -0
  62. package/dist/lib/ccda-converter/sections/medications.d.ts +8 -0
  63. package/dist/lib/ccda-converter/sections/medications.d.ts.map +1 -0
  64. package/dist/lib/ccda-converter/sections/medications.js +68 -0
  65. package/dist/lib/ccda-converter/sections/medications.js.map +1 -0
  66. package/dist/lib/ccda-converter/sections/patient.d.ts +9 -0
  67. package/dist/lib/ccda-converter/sections/patient.d.ts.map +1 -0
  68. package/dist/lib/ccda-converter/sections/patient.js +46 -0
  69. package/dist/lib/ccda-converter/sections/patient.js.map +1 -0
  70. package/dist/lib/ccda-converter/sections/problems.d.ts +8 -0
  71. package/dist/lib/ccda-converter/sections/problems.d.ts.map +1 -0
  72. package/dist/lib/ccda-converter/sections/problems.js +76 -0
  73. package/dist/lib/ccda-converter/sections/problems.js.map +1 -0
  74. package/dist/lib/ccda-converter/sections/procedures.d.ts +8 -0
  75. package/dist/lib/ccda-converter/sections/procedures.d.ts.map +1 -0
  76. package/dist/lib/ccda-converter/sections/procedures.js +57 -0
  77. package/dist/lib/ccda-converter/sections/procedures.js.map +1 -0
  78. package/dist/lib/ccda-converter/sections/social-history.d.ts +9 -0
  79. package/dist/lib/ccda-converter/sections/social-history.d.ts.map +1 -0
  80. package/dist/lib/ccda-converter/sections/social-history.js +11 -0
  81. package/dist/lib/ccda-converter/sections/social-history.js.map +1 -0
  82. package/dist/lib/ccda-converter/sections/vitals.d.ts +8 -0
  83. package/dist/lib/ccda-converter/sections/vitals.d.ts.map +1 -0
  84. package/dist/lib/ccda-converter/sections/vitals.js +75 -0
  85. package/dist/lib/ccda-converter/sections/vitals.js.map +1 -0
  86. package/dist/lib/ccda-converter/vendor/detect.d.ts +7 -0
  87. package/dist/lib/ccda-converter/vendor/detect.d.ts.map +1 -0
  88. package/dist/lib/ccda-converter/vendor/detect.js +30 -0
  89. package/dist/lib/ccda-converter/vendor/detect.js.map +1 -0
  90. package/dist/lib/ccda-converter/vendor/normalize.d.ts +6 -0
  91. package/dist/lib/ccda-converter/vendor/normalize.d.ts.map +1 -0
  92. package/dist/lib/ccda-converter/vendor/normalize.js +13 -0
  93. package/dist/lib/ccda-converter/vendor/normalize.js.map +1 -0
  94. package/dist/lib/ccda-converter/vendor/quirks/cerner.d.ts +7 -0
  95. package/dist/lib/ccda-converter/vendor/quirks/cerner.d.ts.map +1 -0
  96. package/dist/lib/ccda-converter/vendor/quirks/cerner.js +26 -0
  97. package/dist/lib/ccda-converter/vendor/quirks/cerner.js.map +1 -0
  98. package/dist/lib/ccda-converter/vendor/quirks/epic.d.ts +7 -0
  99. package/dist/lib/ccda-converter/vendor/quirks/epic.d.ts.map +1 -0
  100. package/dist/lib/ccda-converter/vendor/quirks/epic.js +29 -0
  101. package/dist/lib/ccda-converter/vendor/quirks/epic.js.map +1 -0
  102. package/dist/lib/fhir-converter/converters-clinical.d.ts.map +1 -1
  103. package/dist/lib/fhir-converter/converters-clinical.js +26 -5
  104. package/dist/lib/fhir-converter/converters-clinical.js.map +1 -1
  105. package/dist/lib/fhir-converter/converters-demographics.d.ts.map +1 -1
  106. package/dist/lib/fhir-converter/converters-demographics.js +13 -3
  107. package/dist/lib/fhir-converter/converters-demographics.js.map +1 -1
  108. package/dist/lib/fhir-converter/index.d.ts.map +1 -1
  109. package/dist/lib/fhir-converter/index.js +15 -4
  110. package/dist/lib/fhir-converter/index.js.map +1 -1
  111. package/dist/lib/fhir-converter/types.d.ts +24 -0
  112. package/dist/lib/fhir-converter/types.d.ts.map +1 -1
  113. package/dist/lib/fhir-converter/types.js +54 -1
  114. package/dist/lib/fhir-converter/types.js.map +1 -1
  115. package/dist/lib/reconciler.d.ts.map +1 -1
  116. package/dist/lib/reconciler.js +196 -27
  117. package/dist/lib/reconciler.js.map +1 -1
  118. package/dist/lib/user-resolutions.d.ts +54 -0
  119. package/dist/lib/user-resolutions.d.ts.map +1 -0
  120. package/dist/lib/user-resolutions.js +224 -0
  121. package/dist/lib/user-resolutions.js.map +1 -0
  122. package/dist/shapes/checkup.shapes.ttl +0 -10
  123. package/dist/shapes/core.shapes.ttl +43 -0
  124. package/dist/shapes/core.ttl +90 -2
  125. package/dist/shapes/health.shapes.ttl +27 -0
  126. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/fhir-converter/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAMH,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAI3B,MAAM,YAAY,CAAC;AASpB,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,CAAC;AAGnF,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAM5D;;;;;;GAMG;AACH,wBAAsB,OAAO,CAC3B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,WAAW,EACjB,EAAE,EAAE,YAAY,EAChB,mBAAmB,GAAE,QAAQ,GAAG,QAAmB,EACnD,YAAY,CAAC,EAAE,MAAM,EACrB,kBAAkB,UAAQ,GACzB,OAAO,CAAC,qBAAqB,CAAC,CAoKhC;AAMD;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CA6B9D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/fhir-converter/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAMH,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAI3B,MAAM,YAAY,CAAC;AASpB,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,CAAC;AAGnF,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAM5D;;;;;;GAMG;AACH,wBAAsB,OAAO,CAC3B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,WAAW,EACjB,EAAE,EAAE,YAAY,EAChB,mBAAmB,GAAE,QAAQ,GAAG,QAAmB,EACnD,YAAY,CAAC,EAAE,MAAM,EACrB,kBAAkB,UAAQ,GACzB,OAAO,CAAC,qBAAqB,CAAC,CAgLhC;AAMD;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CA6B9D"}
@@ -196,10 +196,21 @@ export async function convert(input, from, to, outputSerialization = 'turtle', s
196
196
  };
197
197
  }
198
198
  else if (from === 'c-cda') {
199
- return {
200
- success: false, output: '', format: to, resourceCount: 0, skippedCount: 0,
201
- warnings: [], errors: ['C-CDA conversion is not yet supported'], results: [],
202
- };
199
+ // Native C-CDA converter — preserves CVX, LOINC, SNOMED, RxNorm, ICD-10 codes
200
+ const { convertCcda } = await import('../ccda-converter/index.js');
201
+ // Detect if input looks like an IHE XDM zip (binary PK header)
202
+ let inputData;
203
+ const firstTwo = input.charCodeAt(0) === 0x50 && input.charCodeAt(1) === 0x4b;
204
+ if (firstTwo) {
205
+ inputData = Buffer.from(input, 'binary');
206
+ }
207
+ else {
208
+ inputData = input;
209
+ }
210
+ return await convertCcda(inputData, {
211
+ sourceSystem,
212
+ importedAt: new Date().toISOString(),
213
+ });
203
214
  }
204
215
  else {
205
216
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/fhir-converter/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/fhir-converter/index.ts"],"names":[],"mappings":"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"}
@@ -82,6 +82,30 @@ export declare function tripleDate(subject: string, predicate: string, dateStr:
82
82
  * - If no resource.id: falls back to a random UUID (last resort)
83
83
  */
84
84
  export declare function mintSubjectUri(resource: any): string;
85
+ /**
86
+ * Generate a deterministic urn:uuid: URI from clinical content fields.
87
+ * Used when no stable FHIR resource ID is available.
88
+ *
89
+ * Identity string construction:
90
+ * "{resourceType}::{sortedKeyValuePairs}"
91
+ * where sortedKeyValuePairs =
92
+ * entries of contentFields where value is non-null and non-empty after .trim()
93
+ * sorted ascending by key (localeCompare)
94
+ * mapped as "key=value"
95
+ * joined with "|"
96
+ *
97
+ * URI selection:
98
+ * If identity string has content: return "urn:uuid:" + deterministicUuid(identity)
99
+ * Else if fallbackId: return "urn:uuid:" + deterministicUuid("{resourceType}:{fallbackId}")
100
+ * Else: return "urn:uuid:" + randomUUID() (non-deterministic fallback)
101
+ *
102
+ * Example:
103
+ * contentHashedUri("Patient", { dob:"1985-03-15", sex:"male", family:"Smith", given:"John" })
104
+ * -> identity: "Patient::dob=1985-03-15|family=Smith|given=John|sex=male"
105
+ * -> urn:uuid:{deterministicUuid("Patient::dob=1985-03-15|family=Smith|given=John|sex=male")}
106
+ * -> urn:uuid:aba8c9f5-fdc6-5187-a363-0d5a7cb72438
107
+ */
108
+ export declare function contentHashedUri(resourceType: string, contentFields: Record<string, string | undefined>, fallbackId?: string): string;
85
109
  /** Common triples every Cascade resource gets */
86
110
  export declare function commonTriples(subject: string): Quad[];
87
111
  export declare function quadsToTurtle(quads: Quad[]): Promise<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/fhir-converter/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/fhir-converter/types.ts"],"names":[],"mappings":"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"}
@@ -190,9 +190,24 @@ export function tripleDate(subject, predicate, dateStr) {
190
190
  // Subject URI minting (deterministic from resource.id)
191
191
  // ---------------------------------------------------------------------------
192
192
  const UUID_V4_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
193
+ /**
194
+ * Cascade Protocol Deterministic UUID (CDP-UUID)
195
+ *
196
+ * Algorithm:
197
+ * Input: UTF-8 string
198
+ * Hash: SHA-1(input) -> 40-char lowercase hex digest `h`
199
+ * Layout: {h[0:8]}-{h[8:12]}-5{h[13:16]}-{v}{h[18:20]}-{h[20:32]}
200
+ * where v = (parseInt(h[16:18], 16) & 0x3f | 0x80).toString(16).padStart(2,'0')
201
+ * (Sets UUID version nibble to 5, variant bits to 10xx -- same layout as RFC 4122 v5
202
+ * but hashing the raw input string directly, not a namespace+name pair)
203
+ *
204
+ * Cross-SDK verification:
205
+ * SHA-1("hello") == "aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d"
206
+ * deterministicUuid("hello") == "aaf4c61d-dcc5-58a2-9abe-de0f3b482cd9"
207
+ * (verify this value before using in any SDK implementation)
208
+ */
193
209
  function deterministicUuid(input) {
194
210
  const hash = createHash('sha1').update(input).digest('hex');
195
- // Format as a deterministic UUID-shaped string (SHA-1 based, not strict v5)
196
211
  const v = ((parseInt(hash.slice(16, 18), 16) & 0x3f) | 0x80).toString(16).padStart(2, '0');
197
212
  return `${hash.slice(0, 8)}-${hash.slice(8, 12)}-5${hash.slice(13, 16)}-${v}${hash.slice(18, 20)}-${hash.slice(20, 32)}`;
198
213
  }
@@ -211,6 +226,44 @@ export function mintSubjectUri(resource) {
211
226
  const resourceType = resource?.resourceType ?? 'Unknown';
212
227
  return `urn:uuid:${deterministicUuid(`${resourceType}:${id}`)}`;
213
228
  }
229
+ /**
230
+ * Generate a deterministic urn:uuid: URI from clinical content fields.
231
+ * Used when no stable FHIR resource ID is available.
232
+ *
233
+ * Identity string construction:
234
+ * "{resourceType}::{sortedKeyValuePairs}"
235
+ * where sortedKeyValuePairs =
236
+ * entries of contentFields where value is non-null and non-empty after .trim()
237
+ * sorted ascending by key (localeCompare)
238
+ * mapped as "key=value"
239
+ * joined with "|"
240
+ *
241
+ * URI selection:
242
+ * If identity string has content: return "urn:uuid:" + deterministicUuid(identity)
243
+ * Else if fallbackId: return "urn:uuid:" + deterministicUuid("{resourceType}:{fallbackId}")
244
+ * Else: return "urn:uuid:" + randomUUID() (non-deterministic fallback)
245
+ *
246
+ * Example:
247
+ * contentHashedUri("Patient", { dob:"1985-03-15", sex:"male", family:"Smith", given:"John" })
248
+ * -> identity: "Patient::dob=1985-03-15|family=Smith|given=John|sex=male"
249
+ * -> urn:uuid:{deterministicUuid("Patient::dob=1985-03-15|family=Smith|given=John|sex=male")}
250
+ * -> urn:uuid:aba8c9f5-fdc6-5187-a363-0d5a7cb72438
251
+ */
252
+ export function contentHashedUri(resourceType, contentFields, fallbackId) {
253
+ // Filter out undefined/empty values and sort keys for stability
254
+ const content = Object.entries(contentFields)
255
+ .filter(([, v]) => v != null && v.trim().length > 0)
256
+ .sort(([a], [b]) => a.localeCompare(b))
257
+ .map(([k, v]) => `${k}=${v}`)
258
+ .join('|');
259
+ if (content.length > 0) {
260
+ return `urn:uuid:${deterministicUuid(`${resourceType}::${content}`)}`;
261
+ }
262
+ if (fallbackId) {
263
+ return `urn:uuid:${deterministicUuid(`${resourceType}:${fallbackId}`)}`;
264
+ }
265
+ return `urn:uuid:${randomUUID()}`; // true last resort
266
+ }
214
267
  /** Common triples every Cascade resource gets */
215
268
  export function commonTriples(subject) {
216
269
  return [
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/fhir-converter/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/fhir-converter/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"reconciler.d.ts","sourceRoot":"","sources":["../../src/lib/reconciler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QACN,OAAO,EAAE,KAAK,CAAC;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAClD,OAAO,EAAE;YACP,iBAAiB,EAAE,MAAM,CAAC;YAC1B,sBAAsB,EAAE,MAAM,CAAC;YAC/B,oBAAoB,EAAE,MAAM,CAAC;YAC7B,iBAAiB,EAAE,MAAM,CAAC;YAC1B,mBAAmB,EAAE,MAAM,CAAC;YAC5B,gBAAgB,EAAE,MAAM,CAAC;SAC1B,CAAC;QACF,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,mBAAmB,EAAE,MAAM,EAAE,CAAC;KAC/B,CAAC;CACH;AAMD,KAAK,iBAAiB,GAClB,yBAAyB,GACzB,wBAAwB,GACxB,sBAAsB,GACtB,wBAAwB,GACxB,2BAA2B,GAC3B,oBAAoB,GACpB,wBAAwB,GACxB,wBAAwB,CAAC;AAiB7B,UAAU,QAAQ;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,YAAY;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,iBAAiB,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;CACrC;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAmChG;AAMD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKrD;AAiRD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,eAAe,EAAE,EACzB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CA8G3B"}
1
+ {"version":3,"file":"reconciler.d.ts","sourceRoot":"","sources":["../../src/lib/reconciler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QACN,OAAO,EAAE,KAAK,CAAC;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAClD,OAAO,EAAE;YACP,iBAAiB,EAAE,MAAM,CAAC;YAC1B,sBAAsB,EAAE,MAAM,CAAC;YAC/B,oBAAoB,EAAE,MAAM,CAAC;YAC7B,iBAAiB,EAAE,MAAM,CAAC;YAC1B,mBAAmB,EAAE,MAAM,CAAC;YAC5B,gBAAgB,EAAE,MAAM,CAAC;SAC1B,CAAC;QACF,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,mBAAmB,EAAE,MAAM,EAAE,CAAC;KAC/B,CAAC;CACH;AAMD,KAAK,iBAAiB,GAClB,yBAAyB,GACzB,wBAAwB,GACxB,sBAAsB,GACtB,wBAAwB,GACxB,2BAA2B,GAC3B,oBAAoB,GACpB,wBAAwB,GACxB,wBAAwB,CAAC;AAiB7B,UAAU,QAAQ;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,YAAY;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,iBAAiB,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;CACrC;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAmChG;AAMD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKrD;AAuVD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,eAAe,EAAE,EACzB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CAqN3B"}
@@ -136,14 +136,76 @@ function matchLabs(a, b, tol) {
136
136
  return { match: false, confidence: 0, matchedOn: '' };
137
137
  }
138
138
  function matchImmunizations(a, b) {
139
+ // Tier 1: CVX code + exact date (high confidence)
139
140
  const cA = getProp(a, NS.health + 'cvxCode');
140
141
  const cB = getProp(b, NS.health + 'cvxCode');
141
142
  const dA = dateOnly(getProp(a, NS.health + 'administrationDate') ?? getProp(a, NS.health + 'startDate') ?? '');
142
143
  const dB = dateOnly(getProp(b, NS.health + 'administrationDate') ?? getProp(b, NS.health + 'startDate') ?? '');
143
144
  if (cA && cB && codeFromUri(cA) === codeFromUri(cB) && dA && dA === dB)
144
145
  return { match: true, confidence: 1.0, matchedOn: `cvx:${codeFromUri(cA)}+${dA}` };
146
+ // Tier 2: Vaccine name (normalized) + date -- fallback when CVX absent
147
+ const nA = (getProp(a, NS.health + 'vaccineName') ?? '').toLowerCase().trim();
148
+ const nB = (getProp(b, NS.health + 'vaccineName') ?? '').toLowerCase().trim();
149
+ if (nA && nB && nA !== 'unknown vaccine' && nA === nB && dA && dA === dB)
150
+ return { match: true, confidence: 0.80, matchedOn: `name:"${nA}"+${dA}` };
151
+ // Tier 3: Vaccine name match, no date -- very conservative
152
+ if (nA && nB && nA !== 'unknown vaccine' && nA === nB)
153
+ return { match: true, confidence: 0.60, matchedOn: `name-only:"${nA}"` };
145
154
  return { match: false, confidence: 0, matchedOn: '' };
146
155
  }
156
+ function matchVitalSigns(a, b) {
157
+ const lcA = getProp(a, NS.health + 'testCode'); // LOINC
158
+ const lcB = getProp(b, NS.health + 'testCode');
159
+ const dtA = dateOnly(getProp(a, NS.health + 'effectiveDate') ?? getProp(a, NS.health + 'performedDate') ?? '');
160
+ const dtB = dateOnly(getProp(b, NS.health + 'effectiveDate') ?? getProp(b, NS.health + 'performedDate') ?? '');
161
+ if (lcA && lcB && codeFromUri(lcA) === codeFromUri(lcB) && dtA && dtA === dtB) {
162
+ // Same LOINC, same day -- check value proximity
163
+ const vA = parseFloat(getProp(a, NS.health + 'value') ?? 'NaN');
164
+ const vB = parseFloat(getProp(b, NS.health + 'value') ?? 'NaN');
165
+ if (!isNaN(vA) && !isNaN(vB)) {
166
+ const diff = Math.abs(vA - vB) / Math.max(Math.abs(vA), 0.001);
167
+ if (diff <= 0.05)
168
+ return { match: true, confidence: 0.95, matchedOn: `loinc:${codeFromUri(lcA)}+${dtA}` };
169
+ if (diff <= 0.15)
170
+ return { match: true, confidence: 0.75, matchedOn: `loinc-approx:${codeFromUri(lcA)}+${dtA}` };
171
+ }
172
+ return { match: true, confidence: 0.85, matchedOn: `loinc:${codeFromUri(lcA)}+${dtA}` };
173
+ }
174
+ return { match: false, confidence: 0, matchedOn: '' };
175
+ }
176
+ function matchPatientProfiles(a, b) {
177
+ const dobA = getProp(a, NS.cascade + 'dateOfBirth');
178
+ const dobB = getProp(b, NS.cascade + 'dateOfBirth');
179
+ const sexA = getProp(a, NS.cascade + 'biologicalSex');
180
+ const sexB = getProp(b, NS.cascade + 'biologicalSex');
181
+ if (dobA && dobB && dobA === dobB && sexA && sexB && sexA === sexB) {
182
+ return { match: true, confidence: 0.95, matchedOn: `dob:${dobA}+sex:${sexA}` };
183
+ }
184
+ // Try DOB alone (lower confidence)
185
+ if (dobA && dobB && dobA === dobB) {
186
+ return { match: true, confidence: 0.75, matchedOn: `dob:${dobA}` };
187
+ }
188
+ return { match: false, confidence: 0, matchedOn: '' };
189
+ }
190
+ /**
191
+ * Returns the confidence threshold to use when comparing two records.
192
+ *
193
+ * Records from summarization documents (LOINC 34133-9, e.g. MyChart "Summarization
194
+ * of Episode Note") contain the patient's full history snapshot. When the same
195
+ * patient imports multiple such summaries, every clinical fact appears once per
196
+ * summary export. A lower threshold (0.50) catches these cross-summary duplicates
197
+ * that would otherwise be missed at the standard threshold of 0.65.
198
+ *
199
+ * Additive documents (progress notes, discharge summaries) represent a single
200
+ * encounter; their records are kept at the standard 0.65 threshold.
201
+ */
202
+ function getMatchThreshold(a, b) {
203
+ const aIsSummary = getProp(a, NS.cascade + 'documentType') === 'summarization';
204
+ const bIsSummary = getProp(b, NS.cascade + 'documentType') === 'summarization';
205
+ if (aIsSummary || bIsSummary)
206
+ return 0.50;
207
+ return 0.65;
208
+ }
147
209
  function doRecordsMatch(a, b, tol) {
148
210
  if (a.type !== b.type)
149
211
  return { match: false, confidence: 0, matchedOn: '' };
@@ -153,6 +215,8 @@ function doRecordsMatch(a, b, tol) {
153
215
  case 'health:AllergyRecord': return matchAllergies(a, b);
154
216
  case 'health:LabResultRecord': return matchLabs(a, b, tol);
155
217
  case 'health:ImmunizationRecord': return matchImmunizations(a, b);
218
+ case 'clinical:VitalSign': return matchVitalSigns(a, b);
219
+ case 'cascade:PatientProfile': return matchPatientProfiles(a, b);
156
220
  default: return { match: false, confidence: 0, matchedOn: '' };
157
221
  }
158
222
  }
@@ -311,39 +375,143 @@ export async function runReconciliation(inputs, options) {
311
375
  // Match and group
312
376
  const groups = [];
313
377
  const assigned = new Set();
314
- for (let i = 0; i < allRecords.length; i++) {
315
- const a = allRecords[i];
316
- if (assigned.has(a.uri))
317
- continue;
318
- if (a.type === 'cascade:PatientProfile' || a.type === 'coverage:InsurancePlan') {
319
- groups.push({ matchType: 'pass_through', confidence: 1.0, records: [a], matchedOn: 'profile' });
378
+ const hasExistingPod = allRecords.some(r => r.sourceSystem === 'existing-pod');
379
+ if (hasExistingPod) {
380
+ // ---------------------------------------------------------------------------
381
+ // Fast path: O(n_new × k) type-indexed matching for --reconcile-existing mode
382
+ // ---------------------------------------------------------------------------
383
+ const existingRecords = allRecords.filter(r => r.sourceSystem === 'existing-pod');
384
+ const newRecords = allRecords.filter(r => r.sourceSystem !== 'existing-pod');
385
+ // Build a type index over existing records only
386
+ const existingIndex = new Map();
387
+ for (const r of existingRecords) {
388
+ const bucket = existingIndex.get(r.type);
389
+ if (bucket)
390
+ bucket.push(r);
391
+ else
392
+ existingIndex.set(r.type, [r]);
393
+ }
394
+ // Cross-batch pass: match each new record against same-type existing records
395
+ for (const a of newRecords) {
396
+ if (assigned.has(a.uri))
397
+ continue;
398
+ if (a.type === 'coverage:InsurancePlan') {
399
+ groups.push({ matchType: 'pass_through', confidence: 1.0, records: [a], matchedOn: 'coverage' });
400
+ assigned.add(a.uri);
401
+ continue;
402
+ }
403
+ const matched = [a];
404
+ let matchedOn = '';
405
+ let bestConf = 1.0;
406
+ const candidates = existingIndex.get(a.type) ?? [];
407
+ for (const b of candidates) {
408
+ if (assigned.has(b.uri) || a.sourceSystem === b.sourceSystem)
409
+ continue;
410
+ const { match, confidence, matchedOn: mo } = doRecordsMatch(a, b, labTol);
411
+ const threshold = getMatchThreshold(a, b);
412
+ if (match && confidence >= threshold) {
413
+ matched.push(b);
414
+ assigned.add(b.uri);
415
+ if (!matchedOn) {
416
+ matchedOn = mo;
417
+ bestConf = confidence;
418
+ }
419
+ }
420
+ }
320
421
  assigned.add(a.uri);
321
- continue;
422
+ if (matched.length === 1) {
423
+ groups.push({ matchType: 'pass_through', confidence: 1.0, records: matched, matchedOn: '' });
424
+ }
425
+ else {
426
+ const { matchType, conflictField, conflictValues } = classifyGroup(matched, labTol);
427
+ groups.push({ matchType, confidence: bestConf, records: matched, matchedOn, conflictField, conflictValues });
428
+ }
322
429
  }
323
- const matched = [a];
324
- let matchedOn = '';
325
- let bestConf = 1.0;
326
- for (let j = i + 1; j < allRecords.length; j++) {
327
- const b = allRecords[j];
328
- if (assigned.has(b.uri) || a.sourceSystem === b.sourceSystem)
430
+ // Within-batch pass: pairwise loop over newRecords only (existing-pod records
431
+ // from the same sourceSystem never match each other)
432
+ for (let i = 0; i < newRecords.length; i++) {
433
+ const a = newRecords[i];
434
+ if (assigned.has(a.uri))
329
435
  continue;
330
- const { match, confidence, matchedOn: mo } = doRecordsMatch(a, b, labTol);
331
- if (match && confidence >= 0.65) {
332
- matched.push(b);
333
- assigned.add(b.uri);
334
- if (!matchedOn) {
335
- matchedOn = mo;
336
- bestConf = confidence;
436
+ if (a.type === 'coverage:InsurancePlan') {
437
+ // Already handled above; skip if already assigned
438
+ continue;
439
+ }
440
+ const matched = [a];
441
+ let matchedOn = '';
442
+ let bestConf = 1.0;
443
+ for (let j = i + 1; j < newRecords.length; j++) {
444
+ const b = newRecords[j];
445
+ if (assigned.has(b.uri) || a.sourceSystem === b.sourceSystem)
446
+ continue;
447
+ const { match, confidence, matchedOn: mo } = doRecordsMatch(a, b, labTol);
448
+ const threshold = getMatchThreshold(a, b);
449
+ if (match && confidence >= threshold) {
450
+ matched.push(b);
451
+ assigned.add(b.uri);
452
+ if (!matchedOn) {
453
+ matchedOn = mo;
454
+ bestConf = confidence;
455
+ }
337
456
  }
338
457
  }
458
+ assigned.add(a.uri);
459
+ if (matched.length === 1) {
460
+ groups.push({ matchType: 'pass_through', confidence: 1.0, records: matched, matchedOn: '' });
461
+ }
462
+ else {
463
+ const { matchType, conflictField, conflictValues } = classifyGroup(matched, labTol);
464
+ groups.push({ matchType, confidence: bestConf, records: matched, matchedOn, conflictField, conflictValues });
465
+ }
339
466
  }
340
- assigned.add(a.uri);
341
- if (matched.length === 1) {
342
- groups.push({ matchType: 'pass_through', confidence: 1.0, records: matched, matchedOn: '' });
467
+ // Existing-pod pass-through: records not matched into any group must still
468
+ // appear as their own pass-through groups so they are written back to the pod
469
+ for (const r of existingRecords) {
470
+ if (assigned.has(r.uri))
471
+ continue;
472
+ groups.push({ matchType: 'pass_through', confidence: 1.0, records: [r], matchedOn: '' });
473
+ assigned.add(r.uri);
343
474
  }
344
- else {
345
- const { matchType, conflictField, conflictValues } = classifyGroup(matched, labTol);
346
- groups.push({ matchType, confidence: bestConf, records: matched, matchedOn, conflictField, conflictValues });
475
+ }
476
+ else {
477
+ // ---------------------------------------------------------------------------
478
+ // Original O(n²) algorithm — unchanged when no existing-pod records present
479
+ // ---------------------------------------------------------------------------
480
+ for (let i = 0; i < allRecords.length; i++) {
481
+ const a = allRecords[i];
482
+ if (assigned.has(a.uri))
483
+ continue;
484
+ if (a.type === 'coverage:InsurancePlan') {
485
+ groups.push({ matchType: 'pass_through', confidence: 1.0, records: [a], matchedOn: 'coverage' });
486
+ assigned.add(a.uri);
487
+ continue;
488
+ }
489
+ const matched = [a];
490
+ let matchedOn = '';
491
+ let bestConf = 1.0;
492
+ for (let j = i + 1; j < allRecords.length; j++) {
493
+ const b = allRecords[j];
494
+ if (assigned.has(b.uri) || a.sourceSystem === b.sourceSystem)
495
+ continue;
496
+ const { match, confidence, matchedOn: mo } = doRecordsMatch(a, b, labTol);
497
+ const threshold = getMatchThreshold(a, b);
498
+ if (match && confidence >= threshold) {
499
+ matched.push(b);
500
+ assigned.add(b.uri);
501
+ if (!matchedOn) {
502
+ matchedOn = mo;
503
+ bestConf = confidence;
504
+ }
505
+ }
506
+ }
507
+ assigned.add(a.uri);
508
+ if (matched.length === 1) {
509
+ groups.push({ matchType: 'pass_through', confidence: 1.0, records: matched, matchedOn: '' });
510
+ }
511
+ else {
512
+ const { matchType, conflictField, conflictValues } = classifyGroup(matched, labTol);
513
+ groups.push({ matchType, confidence: bestConf, records: matched, matchedOn, conflictField, conflictValues });
514
+ }
347
515
  }
348
516
  }
349
517
  // Resolve
@@ -367,6 +535,7 @@ export async function runReconciliation(inputs, options) {
367
535
  conflictField: g.conflictField,
368
536
  conflictValues: g.conflictValues,
369
537
  resolved: res.resolved,
538
+ documentType: getProp(g.records[0], NS.cascade + 'documentType'),
370
539
  };
371
540
  switch (g.matchType) {
372
541
  case 'exact_duplicate':
@@ -383,7 +552,7 @@ export async function runReconciliation(inputs, options) {
383
552
  if (g.matchType !== 'pass_through')
384
553
  transformations.push(t);
385
554
  if (!res.resolved)
386
- unresolvedList.push(t);
555
+ unresolvedList.push({ ...t, candidateUris: g.records.map(r => r.uri) });
387
556
  }
388
557
  return {
389
558
  turtle,