gdc-common-utils-ts 1.14.9 → 1.14.13

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 (258) hide show
  1. package/README.md +55 -2
  2. package/dist/claims/claim-list-helpers.d.ts +21 -0
  3. package/dist/claims/claim-list-helpers.js +50 -0
  4. package/dist/claims/claims-helpers-allergy-intolerance.d.ts +10 -0
  5. package/dist/claims/claims-helpers-allergy-intolerance.js +47 -0
  6. package/dist/claims/claims-helpers-appointment-response.d.ts +8 -0
  7. package/dist/claims/claims-helpers-appointment-response.js +20 -0
  8. package/dist/claims/claims-helpers-appointment.d.ts +10 -0
  9. package/dist/claims/claims-helpers-appointment.js +26 -0
  10. package/dist/claims/claims-helpers-care-plan.d.ts +8 -0
  11. package/dist/claims/claims-helpers-care-plan.js +20 -0
  12. package/dist/claims/claims-helpers-clinical-impression.d.ts +10 -0
  13. package/dist/claims/claims-helpers-clinical-impression.js +26 -0
  14. package/dist/claims/claims-helpers-communication.d.ts +17 -0
  15. package/dist/claims/claims-helpers-communication.js +57 -0
  16. package/dist/claims/claims-helpers-composition.d.ts +12 -0
  17. package/dist/claims/claims-helpers-composition.js +32 -0
  18. package/dist/claims/claims-helpers-condition.d.ts +10 -0
  19. package/dist/claims/claims-helpers-condition.js +47 -0
  20. package/dist/claims/claims-helpers-consent.d.ts +112 -0
  21. package/dist/claims/claims-helpers-consent.js +271 -0
  22. package/dist/claims/claims-helpers-coverage.d.ts +10 -0
  23. package/dist/claims/claims-helpers-coverage.js +26 -0
  24. package/dist/claims/claims-helpers-device-use-statement.d.ts +8 -0
  25. package/dist/claims/claims-helpers-device-use-statement.js +20 -0
  26. package/dist/claims/claims-helpers-device.d.ts +8 -0
  27. package/dist/claims/claims-helpers-device.js +20 -0
  28. package/dist/claims/claims-helpers-diagnostic-report.d.ts +12 -0
  29. package/dist/claims/claims-helpers-diagnostic-report.js +32 -0
  30. package/dist/claims/claims-helpers-document-reference.d.ts +8 -0
  31. package/dist/claims/claims-helpers-document-reference.js +20 -0
  32. package/dist/claims/claims-helpers-encounter.d.ts +10 -0
  33. package/dist/claims/claims-helpers-encounter.js +26 -0
  34. package/dist/claims/claims-helpers-flag.d.ts +8 -0
  35. package/dist/claims/claims-helpers-flag.js +20 -0
  36. package/dist/claims/claims-helpers-immunization.d.ts +8 -0
  37. package/dist/claims/claims-helpers-immunization.js +20 -0
  38. package/dist/claims/claims-helpers-location.d.ts +10 -0
  39. package/dist/claims/claims-helpers-location.js +26 -0
  40. package/dist/claims/claims-helpers-medication-statement.d.ts +88 -0
  41. package/dist/claims/claims-helpers-medication-statement.js +259 -0
  42. package/dist/claims/claims-helpers-observation.d.ts +8 -0
  43. package/dist/claims/claims-helpers-observation.js +20 -0
  44. package/dist/claims/claims-helpers-organization.d.ts +12 -0
  45. package/dist/claims/claims-helpers-organization.js +32 -0
  46. package/dist/claims/claims-helpers-procedure.d.ts +8 -0
  47. package/dist/claims/claims-helpers-procedure.js +20 -0
  48. package/dist/claims/claims-helpers-related-person.d.ts +8 -0
  49. package/dist/claims/claims-helpers-related-person.js +20 -0
  50. package/dist/claims/index.d.ts +24 -0
  51. package/dist/claims/index.js +24 -0
  52. package/dist/constants/fhir-resource-types.d.ts +16 -0
  53. package/dist/constants/fhir-resource-types.js +8 -0
  54. package/dist/convert/convert-allergy-intolerance.d.ts +3 -0
  55. package/dist/convert/convert-allergy-intolerance.js +34 -0
  56. package/dist/convert/convert-appointment-response.d.ts +3 -0
  57. package/dist/convert/convert-appointment-response.js +32 -0
  58. package/dist/convert/convert-appointment.d.ts +3 -0
  59. package/dist/convert/convert-appointment.js +61 -0
  60. package/dist/convert/convert-care-plan.d.ts +3 -0
  61. package/dist/convert/convert-care-plan.js +58 -0
  62. package/dist/convert/convert-clinical-impression.d.ts +3 -0
  63. package/dist/convert/convert-clinical-impression.js +42 -0
  64. package/dist/convert/convert-composition.d.ts +3 -0
  65. package/dist/convert/convert-composition.js +35 -0
  66. package/dist/convert/convert-condition.d.ts +3 -0
  67. package/dist/convert/convert-condition.js +24 -0
  68. package/dist/convert/convert-coverage.d.ts +3 -0
  69. package/dist/convert/convert-coverage.js +51 -0
  70. package/dist/convert/convert-device-use-statement.d.ts +3 -0
  71. package/dist/convert/convert-device-use-statement.js +28 -0
  72. package/dist/convert/convert-device.d.ts +3 -0
  73. package/dist/convert/convert-device.js +37 -0
  74. package/dist/convert/convert-diagnostic-report.d.ts +3 -0
  75. package/dist/convert/convert-diagnostic-report.js +55 -0
  76. package/dist/convert/convert-document-reference.d.ts +3 -0
  77. package/dist/convert/convert-document-reference.js +35 -0
  78. package/dist/convert/convert-encounter.d.ts +3 -0
  79. package/dist/convert/convert-encounter.js +68 -0
  80. package/dist/convert/convert-flag.d.ts +3 -0
  81. package/dist/convert/convert-flag.js +34 -0
  82. package/dist/convert/convert-immunization.d.ts +3 -0
  83. package/dist/convert/convert-immunization.js +56 -0
  84. package/dist/convert/convert-location.d.ts +3 -0
  85. package/dist/convert/convert-location.js +44 -0
  86. package/dist/convert/convert-medication-statement.d.ts +3 -0
  87. package/dist/convert/convert-medication-statement.js +64 -0
  88. package/dist/convert/convert-observation.d.ts +3 -0
  89. package/dist/convert/convert-observation.js +57 -0
  90. package/dist/convert/convert-organization.d.ts +3 -0
  91. package/dist/convert/convert-organization.js +39 -0
  92. package/dist/convert/convert-procedure.d.ts +3 -0
  93. package/dist/convert/convert-procedure.js +50 -0
  94. package/dist/convert/convert-related-person.d.ts +3 -0
  95. package/dist/convert/convert-related-person.js +31 -0
  96. package/dist/convert/convert-shared.d.ts +34 -0
  97. package/dist/convert/convert-shared.js +179 -0
  98. package/dist/convert/index.d.ts +22 -0
  99. package/dist/convert/index.js +22 -0
  100. package/dist/examples/communication-bundle-document-request.js +2 -2
  101. package/dist/examples/communication-bundle-session.js +2 -2
  102. package/dist/examples/shared.d.ts +21 -2
  103. package/dist/examples/shared.js +74 -1
  104. package/dist/index.d.ts +2 -0
  105. package/dist/index.js +2 -0
  106. package/dist/models/bundle.d.ts +13 -1
  107. package/dist/models/interoperable-claims/appointment-claims.d.ts +23 -1
  108. package/dist/models/interoperable-claims/appointment-claims.js +22 -1
  109. package/dist/models/interoperable-claims/appointment-response-claims.d.ts +14 -0
  110. package/dist/models/interoperable-claims/appointment-response-claims.js +13 -0
  111. package/dist/models/interoperable-claims/care-plan-claims.d.ts +24 -0
  112. package/dist/models/interoperable-claims/care-plan-claims.js +44 -0
  113. package/dist/models/interoperable-claims/clinical-impression-claims.d.ts +17 -0
  114. package/dist/models/interoperable-claims/clinical-impression-claims.js +30 -0
  115. package/dist/models/interoperable-claims/coverage-claims.d.ts +16 -0
  116. package/dist/models/interoperable-claims/coverage-claims.js +28 -0
  117. package/dist/models/interoperable-claims/device-claims.d.ts +18 -0
  118. package/dist/models/interoperable-claims/device-claims.js +32 -0
  119. package/dist/models/interoperable-claims/diagnostic-report-claims.d.ts +2 -2
  120. package/dist/models/interoperable-claims/diagnostic-report-claims.js +1 -1
  121. package/dist/models/interoperable-claims/encounter-claims.d.ts +18 -0
  122. package/dist/models/interoperable-claims/encounter-claims.js +32 -0
  123. package/dist/models/interoperable-claims/flag-claims.d.ts +16 -0
  124. package/dist/models/interoperable-claims/flag-claims.js +28 -0
  125. package/dist/models/interoperable-claims/immunization-claims.d.ts +23 -0
  126. package/dist/models/interoperable-claims/immunization-claims.js +42 -0
  127. package/dist/models/interoperable-claims/index.d.ts +12 -0
  128. package/dist/models/interoperable-claims/index.js +12 -0
  129. package/dist/models/interoperable-claims/location-claims.d.ts +22 -0
  130. package/dist/models/interoperable-claims/location-claims.js +34 -0
  131. package/dist/models/interoperable-claims/observation-claims.d.ts +26 -0
  132. package/dist/models/interoperable-claims/observation-claims.js +48 -0
  133. package/dist/models/interoperable-claims/organization-claims.d.ts +18 -0
  134. package/dist/models/interoperable-claims/organization-claims.js +27 -0
  135. package/dist/models/interoperable-claims/procedure-claims.d.ts +22 -0
  136. package/dist/models/interoperable-claims/procedure-claims.js +40 -0
  137. package/dist/models/interoperable-claims/related-person-claims.d.ts +14 -0
  138. package/dist/models/interoperable-claims/related-person-claims.js +24 -0
  139. package/dist/utils/appointment-claim-helpers.d.ts +10 -0
  140. package/dist/utils/appointment-claim-helpers.js +26 -0
  141. package/dist/utils/appointment-response-claim-helpers.d.ts +8 -0
  142. package/dist/utils/appointment-response-claim-helpers.js +20 -0
  143. package/dist/utils/bundle-document-builder.d.ts +36 -0
  144. package/dist/utils/bundle-document-builder.js +311 -0
  145. package/dist/utils/claims-helpers-allergy-intolerance.d.ts +1 -0
  146. package/dist/utils/claims-helpers-allergy-intolerance.js +1 -0
  147. package/dist/utils/claims-helpers-appointment-response.d.ts +1 -0
  148. package/dist/utils/claims-helpers-appointment-response.js +1 -0
  149. package/dist/utils/claims-helpers-appointment.d.ts +1 -0
  150. package/dist/utils/claims-helpers-appointment.js +1 -0
  151. package/dist/utils/claims-helpers-care-plan.d.ts +1 -0
  152. package/dist/utils/claims-helpers-care-plan.js +1 -0
  153. package/dist/utils/claims-helpers-clinical-impression.d.ts +1 -0
  154. package/dist/utils/claims-helpers-clinical-impression.js +1 -0
  155. package/dist/utils/claims-helpers-communication.d.ts +1 -0
  156. package/dist/utils/claims-helpers-communication.js +1 -0
  157. package/dist/utils/claims-helpers-composition.d.ts +1 -0
  158. package/dist/utils/claims-helpers-composition.js +1 -0
  159. package/dist/utils/claims-helpers-condition.d.ts +1 -0
  160. package/dist/utils/claims-helpers-condition.js +1 -0
  161. package/dist/utils/claims-helpers-consent.d.ts +1 -0
  162. package/dist/utils/claims-helpers-consent.js +1 -0
  163. package/dist/utils/claims-helpers-coverage.d.ts +1 -0
  164. package/dist/utils/claims-helpers-coverage.js +1 -0
  165. package/dist/utils/claims-helpers-device-use-statement.d.ts +1 -0
  166. package/dist/utils/claims-helpers-device-use-statement.js +1 -0
  167. package/dist/utils/claims-helpers-device.d.ts +1 -0
  168. package/dist/utils/claims-helpers-device.js +1 -0
  169. package/dist/utils/claims-helpers-diagnostic-report.d.ts +1 -0
  170. package/dist/utils/claims-helpers-diagnostic-report.js +1 -0
  171. package/dist/utils/claims-helpers-document-reference.d.ts +1 -0
  172. package/dist/utils/claims-helpers-document-reference.js +1 -0
  173. package/dist/utils/claims-helpers-encounter.d.ts +1 -0
  174. package/dist/utils/claims-helpers-encounter.js +1 -0
  175. package/dist/utils/claims-helpers-flag.d.ts +1 -0
  176. package/dist/utils/claims-helpers-flag.js +1 -0
  177. package/dist/utils/claims-helpers-immunization.d.ts +1 -0
  178. package/dist/utils/claims-helpers-immunization.js +1 -0
  179. package/dist/utils/claims-helpers-location.d.ts +1 -0
  180. package/dist/utils/claims-helpers-location.js +1 -0
  181. package/dist/utils/claims-helpers-medication-statement.d.ts +1 -0
  182. package/dist/utils/claims-helpers-medication-statement.js +1 -0
  183. package/dist/utils/claims-helpers-observation.d.ts +1 -0
  184. package/dist/utils/claims-helpers-observation.js +1 -0
  185. package/dist/utils/claims-helpers-organization.d.ts +1 -0
  186. package/dist/utils/claims-helpers-organization.js +1 -0
  187. package/dist/utils/claims-helpers-procedure.d.ts +1 -0
  188. package/dist/utils/claims-helpers-procedure.js +1 -0
  189. package/dist/utils/claims-helpers-related-person.d.ts +1 -0
  190. package/dist/utils/claims-helpers-related-person.js +1 -0
  191. package/dist/utils/clinical-impression-claim-helpers.d.ts +10 -0
  192. package/dist/utils/clinical-impression-claim-helpers.js +26 -0
  193. package/dist/utils/clinical-resource-converters.d.ts +91 -62
  194. package/dist/utils/clinical-resource-converters.js +135 -273
  195. package/dist/utils/communication-bundle-document-request.d.ts +6 -4
  196. package/dist/utils/communication-bundle-document-request.js +7 -5
  197. package/dist/utils/communication-bundle-session.js +1 -1
  198. package/dist/utils/composition-claim-helpers.d.ts +12 -0
  199. package/dist/utils/composition-claim-helpers.js +32 -0
  200. package/dist/utils/consent-claim-helpers.d.ts +2 -2
  201. package/dist/utils/consent-claim-helpers.js +2 -2
  202. package/dist/utils/convert-allergy-intolerance.d.ts +3 -0
  203. package/dist/utils/convert-allergy-intolerance.js +34 -0
  204. package/dist/utils/convert-appointment-response.d.ts +3 -0
  205. package/dist/utils/convert-appointment-response.js +32 -0
  206. package/dist/utils/convert-appointment.d.ts +3 -0
  207. package/dist/utils/convert-appointment.js +61 -0
  208. package/dist/utils/convert-care-plan.d.ts +3 -0
  209. package/dist/utils/convert-care-plan.js +58 -0
  210. package/dist/utils/convert-clinical-impression.d.ts +3 -0
  211. package/dist/utils/convert-clinical-impression.js +42 -0
  212. package/dist/utils/convert-composition.d.ts +3 -0
  213. package/dist/utils/convert-composition.js +35 -0
  214. package/dist/utils/convert-condition.d.ts +3 -0
  215. package/dist/utils/convert-condition.js +24 -0
  216. package/dist/utils/convert-coverage.d.ts +3 -0
  217. package/dist/utils/convert-coverage.js +51 -0
  218. package/dist/utils/convert-device-use-statement.d.ts +3 -0
  219. package/dist/utils/convert-device-use-statement.js +28 -0
  220. package/dist/utils/convert-device.d.ts +3 -0
  221. package/dist/utils/convert-device.js +37 -0
  222. package/dist/utils/convert-diagnostic-report.d.ts +3 -0
  223. package/dist/utils/convert-diagnostic-report.js +55 -0
  224. package/dist/utils/convert-document-reference.d.ts +3 -0
  225. package/dist/utils/convert-document-reference.js +35 -0
  226. package/dist/utils/convert-encounter.d.ts +3 -0
  227. package/dist/utils/convert-encounter.js +68 -0
  228. package/dist/utils/convert-flag.d.ts +3 -0
  229. package/dist/utils/convert-flag.js +34 -0
  230. package/dist/utils/convert-immunization.d.ts +3 -0
  231. package/dist/utils/convert-immunization.js +56 -0
  232. package/dist/utils/convert-medication-statement.d.ts +3 -0
  233. package/dist/utils/convert-medication-statement.js +64 -0
  234. package/dist/utils/convert-observation.d.ts +3 -0
  235. package/dist/utils/convert-observation.js +57 -0
  236. package/dist/utils/convert-procedure.d.ts +3 -0
  237. package/dist/utils/convert-procedure.js +50 -0
  238. package/dist/utils/convert-related-person.d.ts +3 -0
  239. package/dist/utils/convert-related-person.js +31 -0
  240. package/dist/utils/convert-shared.d.ts +34 -0
  241. package/dist/utils/convert-shared.js +179 -0
  242. package/dist/utils/coverage-claim-helpers.d.ts +10 -0
  243. package/dist/utils/coverage-claim-helpers.js +26 -0
  244. package/dist/utils/diagnostic-report-claim-helpers.d.ts +12 -0
  245. package/dist/utils/diagnostic-report-claim-helpers.js +32 -0
  246. package/dist/utils/encounter-claim-helpers.d.ts +10 -0
  247. package/dist/utils/encounter-claim-helpers.js +26 -0
  248. package/dist/utils/fhir-cid.d.ts +49 -0
  249. package/dist/utils/fhir-cid.js +75 -0
  250. package/dist/utils/index.d.ts +4 -6
  251. package/dist/utils/index.js +4 -6
  252. package/dist/utils/ips-bundle-claims.d.ts +52 -0
  253. package/dist/utils/ips-bundle-claims.js +104 -0
  254. package/dist/utils/jwt.d.ts +16 -0
  255. package/dist/utils/jwt.js +21 -0
  256. package/dist/utils/related-person-claim-helpers.d.ts +8 -0
  257. package/dist/utils/related-person-claim-helpers.js +20 -0
  258. package/package.json +17 -1
@@ -235,8 +235,8 @@ export function createSummaryOperationRequestParameters(subjectIdOrInput, filter
235
235
  ];
236
236
  }
237
237
  /**
238
- * Flattens semantic summary-operation parameters to the relative search path
239
- * currently stored in `Communication.content-reference`.
238
+ * Flattens semantic summary-operation parameters to the relative `Bundle/_search`
239
+ * path currently stored in `Communication.content-reference`.
240
240
  */
241
241
  export function createSummaryOperationRequestReferencePath(parameters) {
242
242
  const params = ['type=document'];
@@ -258,7 +258,7 @@ export function createSummaryOperationRequestReferencePath(parameters) {
258
258
  params.push(`composition.section=${String(parameter.value || '').trim()}`);
259
259
  }
260
260
  }
261
- return `individual/org.hl7.fhir.r4/Bundle?${params.filter(Boolean).join('&')}`;
261
+ return `individual/org.hl7.fhir.r4/Bundle/_search?${params.filter(Boolean).join('&')}`;
262
262
  }
263
263
  /**
264
264
  * Resolves the full runtime URL to call GW CORE from the provider sector DID
@@ -323,8 +323,10 @@ export const communication = Object.freeze({
323
323
  */
324
324
  newIpsSummarySearchCommunication: createIpsSummarySearchCommunicationClaims,
325
325
  /**
326
- * Frontend-facing IPS helper: creates the DIDComm-ready message to request
327
- * an IPS summary/search using an already-generated reference path.
326
+ * Compatibility helper for current DIDComm transport flows.
327
+ *
328
+ * Prefer `newIpsSummarySearchCommunication(...)` in `common-utils` 101 docs.
329
+ * DIDComm/outbox orchestration belongs to the next SDK layer.
328
330
  */
329
331
  newIpsSummarySearchDidcommMessage: createIpsSummarySearchDidcommMessage,
330
332
  /**
@@ -7,7 +7,7 @@ import { CommunicationClaim } from '../models/interoperable-claims/communication
7
7
  import { ConditionClaim } from '../models/interoperable-claims/condition-claims.js';
8
8
  import { DocumentReferenceClaim } from '../models/interoperable-claims/document-reference-claims.js';
9
9
  import { BundleQuery } from './bundle-query.js';
10
- import { addClaimValues } from './claim-list-helpers.js';
10
+ import { addClaimValues } from '../claims/claim-list-helpers.js';
11
11
  import { MedicationStatementClaim, } from '../models/interoperable-claims/medication-statement-claims.js';
12
12
  /**
13
13
  * Communication editing session with bundle-in-memory as source of truth.
@@ -0,0 +1,12 @@
1
+ import { type GenericInteroperableClaims } from './claim-list-helpers.js';
2
+ export type CompositionInteroperableClaims = GenericInteroperableClaims;
3
+ export declare function getCompositionClaimList(claims: CompositionInteroperableClaims, claimKey: string): string[];
4
+ export declare function setCompositionClaimList(claims: CompositionInteroperableClaims, claimKey: string, values: string | readonly string[]): CompositionInteroperableClaims;
5
+ export declare function addCompositionClaimList(claims: CompositionInteroperableClaims, claimKey: string, values: string | readonly string[]): CompositionInteroperableClaims;
6
+ export declare function removeCompositionClaimList(claims: CompositionInteroperableClaims, claimKey: string, values: string | readonly string[]): CompositionInteroperableClaims;
7
+ export declare function getCompositionTypeList(claims: CompositionInteroperableClaims): string[];
8
+ export declare function setCompositionTypeList(claims: CompositionInteroperableClaims, values: string | readonly string[]): CompositionInteroperableClaims;
9
+ export declare function getCompositionSectionList(claims: CompositionInteroperableClaims): string[];
10
+ export declare function setCompositionSectionList(claims: CompositionInteroperableClaims, values: string | readonly string[]): CompositionInteroperableClaims;
11
+ export declare function getCompositionSubject(claims: CompositionInteroperableClaims): string;
12
+ export declare function setCompositionSubject(claims: CompositionInteroperableClaims, value: string): CompositionInteroperableClaims;
@@ -0,0 +1,32 @@
1
+ import { CompositionClaim } from '../models/interoperable-claims/composition-claims.js';
2
+ import { addClaimValues, getClaimValues, normalizeClaimScalar, removeClaimValues, setClaimValues, } from './claim-list-helpers.js';
3
+ export function getCompositionClaimList(claims, claimKey) {
4
+ return getClaimValues(claims, claimKey);
5
+ }
6
+ export function setCompositionClaimList(claims, claimKey, values) {
7
+ return setClaimValues(claims, claimKey, values);
8
+ }
9
+ export function addCompositionClaimList(claims, claimKey, values) {
10
+ return addClaimValues(claims, claimKey, values);
11
+ }
12
+ export function removeCompositionClaimList(claims, claimKey, values) {
13
+ return removeClaimValues(claims, claimKey, values);
14
+ }
15
+ export function getCompositionTypeList(claims) {
16
+ return getCompositionClaimList(claims, CompositionClaim.Type);
17
+ }
18
+ export function setCompositionTypeList(claims, values) {
19
+ return setCompositionClaimList(claims, CompositionClaim.Type, values);
20
+ }
21
+ export function getCompositionSectionList(claims) {
22
+ return getCompositionClaimList(claims, CompositionClaim.Section);
23
+ }
24
+ export function setCompositionSectionList(claims, values) {
25
+ return setCompositionClaimList(claims, CompositionClaim.Section, values);
26
+ }
27
+ export function getCompositionSubject(claims) {
28
+ return normalizeClaimScalar(claims[CompositionClaim.Subject]);
29
+ }
30
+ export function setCompositionSubject(claims, value) {
31
+ return { ...claims, [CompositionClaim.Subject]: normalizeClaimScalar(value) };
32
+ }
@@ -1,5 +1,5 @@
1
- export { addClaimValues, getClaimValues, removeClaimValues, setClaimValues, } from './claim-list-helpers.js';
2
- import { type GenericInteroperableClaims } from './claim-list-helpers.js';
1
+ export { addClaimValues, getClaimValues, removeClaimValues, setClaimValues, } from '../claims/claim-list-helpers.js';
2
+ import { type GenericInteroperableClaims } from '../claims/claim-list-helpers.js';
3
3
  export type InteroperableClaims = GenericInteroperableClaims;
4
4
  export declare function getActors(claims: InteroperableClaims): string[];
5
5
  /**
@@ -1,7 +1,7 @@
1
1
  // Copyright 2026 Antifraud Services Inc. under the Apache License, Version 2.0.
2
2
  import { ClaimConsent } from '../models/consent-rule.js';
3
- export { addClaimValues, getClaimValues, removeClaimValues, setClaimValues, } from './claim-list-helpers.js';
4
- import { addClaimValues, getClaimValues, normalizeClaimScalar, removeClaimValues, setClaimValues, } from './claim-list-helpers.js';
3
+ export { addClaimValues, getClaimValues, removeClaimValues, setClaimValues, } from '../claims/claim-list-helpers.js';
4
+ import { addClaimValues, getClaimValues, normalizeClaimScalar, removeClaimValues, setClaimValues, } from '../claims/claim-list-helpers.js';
5
5
  export function getActors(claims) {
6
6
  return getClaimValues(claims, ClaimConsent.actorIdentifier);
7
7
  }
@@ -0,0 +1,3 @@
1
+ import type { FhirResource, FlatClaims } from './convert-shared';
2
+ export declare function allergyIntoleranceFlatToFhirR4(claims: FlatClaims): FhirResource;
3
+ export declare function allergyIntoleranceFhirR4ToFlat(resource: FhirResource): FlatClaims;
@@ -0,0 +1,34 @@
1
+ // Copyright 2026 Conéctate Soluciones y Aplicaciones SL under the Apache License, Version 2.0.
2
+ // File: src/utils/convert-allergy-intolerance.ts
3
+ import { AllergyIntoleranceClaim } from '../models/interoperable-claims/allergy-intolerance-claims.js';
4
+ import { codingFromValue, codingToValue, requireDidWeb, requireSubjectIdentifier } from './convert-shared.js';
5
+ export function allergyIntoleranceFlatToFhirR4(claims) {
6
+ const patient = claims[AllergyIntoleranceClaim.Subject] ?? claims[AllergyIntoleranceClaim.Patient];
7
+ const recorder = claims[AllergyIntoleranceClaim.Recorder];
8
+ if (!patient)
9
+ throw new Error(`Missing required claim: ${AllergyIntoleranceClaim.Subject}`);
10
+ requireSubjectIdentifier(patient, AllergyIntoleranceClaim.Subject);
11
+ if (recorder)
12
+ requireDidWeb(recorder, AllergyIntoleranceClaim.Recorder);
13
+ return {
14
+ resourceType: 'AllergyIntolerance',
15
+ identifier: claims[AllergyIntoleranceClaim.Identifier] ? [{ value: claims[AllergyIntoleranceClaim.Identifier] }] : undefined,
16
+ patient: { reference: patient },
17
+ code: claims[AllergyIntoleranceClaim.Code] ? { coding: codingFromValue(claims[AllergyIntoleranceClaim.Code]) } : undefined,
18
+ clinicalStatus: claims[AllergyIntoleranceClaim.ClinicalStatus] ? { coding: [{ code: claims[AllergyIntoleranceClaim.ClinicalStatus] }] } : undefined,
19
+ verificationStatus: claims[AllergyIntoleranceClaim.VerificationStatus] ? { coding: [{ code: claims[AllergyIntoleranceClaim.VerificationStatus] }] } : undefined,
20
+ recorder: recorder ? { reference: recorder } : undefined,
21
+ };
22
+ }
23
+ export function allergyIntoleranceFhirR4ToFlat(resource) {
24
+ const subject = resource.patient?.reference;
25
+ return {
26
+ [AllergyIntoleranceClaim.Identifier]: resource.identifier?.[0]?.value,
27
+ [AllergyIntoleranceClaim.Subject]: subject,
28
+ [AllergyIntoleranceClaim.Patient]: subject,
29
+ [AllergyIntoleranceClaim.Code]: codingToValue(resource.code?.coding?.[0]),
30
+ [AllergyIntoleranceClaim.ClinicalStatus]: resource.clinicalStatus?.coding?.[0]?.code,
31
+ [AllergyIntoleranceClaim.VerificationStatus]: resource.verificationStatus?.coding?.[0]?.code,
32
+ [AllergyIntoleranceClaim.Recorder]: resource.recorder?.reference,
33
+ };
34
+ }
@@ -0,0 +1,3 @@
1
+ import type { FhirResource, FlatClaims } from './convert-shared';
2
+ export declare function appointmentResponseFlatToFhirR4(claims: FlatClaims): FhirResource;
3
+ export declare function appointmentResponseFhirR4ToFlat(resource: FhirResource): FlatClaims;
@@ -0,0 +1,32 @@
1
+ // Copyright 2026 Conéctate Soluciones y Aplicaciones SL under the Apache License, Version 2.0.
2
+ // File: src/utils/convert-appointment-response.ts
3
+ import { AppointmentResponseClaim } from '../models/interoperable-claims/appointment-response-claims.js';
4
+ import { codingFromValue, codingToValue, referenceToValue } from './convert-shared.js';
5
+ export function appointmentResponseFlatToFhirR4(claims) {
6
+ return {
7
+ resourceType: 'AppointmentResponse',
8
+ identifier: claims[AppointmentResponseClaim.Identifier] ? [{ value: claims[AppointmentResponseClaim.Identifier] }] : undefined,
9
+ appointment: claims[AppointmentResponseClaim.Appointment] ? { reference: claims[AppointmentResponseClaim.Appointment] } : undefined,
10
+ actor: claims[AppointmentResponseClaim.Actor] ? { reference: claims[AppointmentResponseClaim.Actor] } : undefined,
11
+ participantStatus: claims[AppointmentResponseClaim.ParticipantStatus],
12
+ participantType: claims[AppointmentResponseClaim.ParticipantType] ? [{ coding: codingFromValue(claims[AppointmentResponseClaim.ParticipantType]) }] : undefined,
13
+ start: claims[AppointmentResponseClaim.Start],
14
+ end: claims[AppointmentResponseClaim.End],
15
+ comment: claims[AppointmentResponseClaim.Comment],
16
+ };
17
+ }
18
+ export function appointmentResponseFhirR4ToFlat(resource) {
19
+ return {
20
+ [AppointmentResponseClaim.Actor]: referenceToValue(resource.actor),
21
+ [AppointmentResponseClaim.Appointment]: referenceToValue(resource.appointment),
22
+ [AppointmentResponseClaim.Comment]: resource.comment,
23
+ [AppointmentResponseClaim.Identifier]: resource.identifier?.[0]?.value,
24
+ [AppointmentResponseClaim.Start]: resource.start,
25
+ [AppointmentResponseClaim.End]: resource.end,
26
+ [AppointmentResponseClaim.ParticipantType]: codingToValue(resource.participantType?.[0]?.coding?.[0]),
27
+ [AppointmentResponseClaim.ParticipantStatus]: resource.participantStatus,
28
+ [AppointmentResponseClaim.Patient]: undefined,
29
+ [AppointmentResponseClaim.Practitioner]: undefined,
30
+ [AppointmentResponseClaim.Location]: undefined,
31
+ };
32
+ }
@@ -0,0 +1,3 @@
1
+ import type { FhirResource, FlatClaims } from './convert-shared';
2
+ export declare function appointmentFlatToFhirR4(claims: FlatClaims): FhirResource;
3
+ export declare function appointmentFhirR4ToFlat(resource: FhirResource): FlatClaims;
@@ -0,0 +1,61 @@
1
+ // Copyright 2026 Conéctate Soluciones y Aplicaciones SL under the Apache License, Version 2.0.
2
+ // File: src/utils/convert-appointment.ts
3
+ import { AppointmentClaim } from '../models/interoperable-claims/appointment-claims.js';
4
+ import { codingFromValue, codingToValue, referenceListToCsv, referenceToValue } from './convert-shared.js';
5
+ export function appointmentFlatToFhirR4(claims) {
6
+ return {
7
+ resourceType: 'Appointment',
8
+ identifier: claims[AppointmentClaim.Identifier] ? [{ value: claims[AppointmentClaim.Identifier] }] : undefined,
9
+ status: claims[AppointmentClaim.Status],
10
+ serviceCategory: claims[AppointmentClaim.ServiceCategory] ? [{ coding: codingFromValue(claims[AppointmentClaim.ServiceCategory]) }] : undefined,
11
+ serviceType: claims[AppointmentClaim.ServiceType] ? [{ coding: codingFromValue(claims[AppointmentClaim.ServiceType]) }] : undefined,
12
+ specialty: claims[AppointmentClaim.Specialty] ? [{ coding: codingFromValue(claims[AppointmentClaim.Specialty]) }] : undefined,
13
+ appointmentType: claims[AppointmentClaim.AppointmentType] ? { coding: codingFromValue(claims[AppointmentClaim.AppointmentType]) } : undefined,
14
+ reasonCode: claims[AppointmentClaim.ReasonCode] ? [{ coding: codingFromValue(claims[AppointmentClaim.ReasonCode]) }] : undefined,
15
+ reasonReference: claims[AppointmentClaim.ReasonReference] ? claims[AppointmentClaim.ReasonReference].split(',').map((reference) => ({ reference: reference.trim() })) : undefined,
16
+ description: claims[AppointmentClaim.Description],
17
+ start: claims[AppointmentClaim.Start],
18
+ end: claims[AppointmentClaim.End],
19
+ minutesDuration: claims[AppointmentClaim.MinutesDuration] ? Number(claims[AppointmentClaim.MinutesDuration]) : undefined,
20
+ created: claims[AppointmentClaim.Created],
21
+ note: claims[AppointmentClaim.NoteText] ? [{ text: claims[AppointmentClaim.NoteText] }] : undefined,
22
+ patientInstruction: claims[AppointmentClaim.PatientInstruction],
23
+ basedOn: claims[AppointmentClaim.BasedOn] ? claims[AppointmentClaim.BasedOn].split(',').map((reference) => ({ reference: reference.trim() })) : undefined,
24
+ participant: claims[AppointmentClaim.ParticipantActor]
25
+ ? claims[AppointmentClaim.ParticipantActor].split(',').map((reference) => ({
26
+ actor: { reference: reference.trim() },
27
+ status: claims[AppointmentClaim.ParticipantStatus],
28
+ type: claims[AppointmentClaim.ParticipantType] ? [{ coding: codingFromValue(claims[AppointmentClaim.ParticipantType]) }] : undefined,
29
+ }))
30
+ : undefined,
31
+ };
32
+ }
33
+ export function appointmentFhirR4ToFlat(resource) {
34
+ const participant = Array.isArray(resource.participant) ? resource.participant[0] : undefined;
35
+ return {
36
+ [AppointmentClaim.Identifier]: resource.identifier?.[0]?.value,
37
+ [AppointmentClaim.Status]: resource.status,
38
+ [AppointmentClaim.ServiceCategory]: codingToValue(resource.serviceCategory?.[0]?.coding?.[0]),
39
+ [AppointmentClaim.ServiceType]: codingToValue(resource.serviceType?.[0]?.coding?.[0]),
40
+ [AppointmentClaim.Specialty]: codingToValue(resource.specialty?.[0]?.coding?.[0]),
41
+ [AppointmentClaim.AppointmentType]: codingToValue(resource.appointmentType?.coding?.[0]),
42
+ [AppointmentClaim.ReasonCode]: codingToValue(resource.reasonCode?.[0]?.coding?.[0]),
43
+ [AppointmentClaim.ReasonReference]: referenceListToCsv(resource.reasonReference),
44
+ [AppointmentClaim.Description]: resource.description,
45
+ [AppointmentClaim.Start]: resource.start,
46
+ [AppointmentClaim.End]: resource.end,
47
+ [AppointmentClaim.MinutesDuration]: resource.minutesDuration === undefined ? undefined : String(resource.minutesDuration),
48
+ [AppointmentClaim.Created]: resource.created,
49
+ [AppointmentClaim.NoteText]: resource.note?.[0]?.text,
50
+ [AppointmentClaim.PatientInstruction]: resource.patientInstruction,
51
+ [AppointmentClaim.BasedOn]: referenceListToCsv(resource.basedOn),
52
+ [AppointmentClaim.ParticipantActor]: Array.isArray(resource.participant)
53
+ ? resource.participant
54
+ .map((item) => referenceToValue(item?.actor))
55
+ .filter((item) => Boolean(item))
56
+ .join(',')
57
+ : undefined,
58
+ [AppointmentClaim.ParticipantStatus]: participant?.status,
59
+ [AppointmentClaim.ParticipantType]: codingToValue(participant?.type?.[0]?.coding?.[0]),
60
+ };
61
+ }
@@ -0,0 +1,3 @@
1
+ import type { FhirResource, FlatClaims } from './convert-shared';
2
+ export declare function carePlanFlatToFhirR4(claims: FlatClaims): FhirResource;
3
+ export declare function carePlanFhirR4ToFlat(resource: FhirResource): FlatClaims;
@@ -0,0 +1,58 @@
1
+ // Copyright 2026 Conéctate Soluciones y Aplicaciones SL under the Apache License, Version 2.0.
2
+ // File: src/utils/convert-care-plan.ts
3
+ import { CarePlanClaim } from '../models/interoperable-claims/care-plan-claims.js';
4
+ import { codingFromValue, codingToValue, referenceListToCsv, referenceToValue } from './convert-shared.js';
5
+ export function carePlanFlatToFhirR4(claims) {
6
+ const subject = claims[CarePlanClaim.Subject] ?? claims[CarePlanClaim.Patient];
7
+ return {
8
+ resourceType: 'CarePlan',
9
+ identifier: claims[CarePlanClaim.Identifier] ? [{ value: claims[CarePlanClaim.Identifier] }] : undefined,
10
+ status: claims[CarePlanClaim.Status],
11
+ intent: claims[CarePlanClaim.Intent],
12
+ subject: subject ? { reference: subject } : undefined,
13
+ category: claims[CarePlanClaim.Category] ? [{ coding: codingFromValue(claims[CarePlanClaim.Category]) }] : undefined,
14
+ created: claims[CarePlanClaim.Date],
15
+ note: claims[CarePlanClaim.Note] ? [{ text: claims[CarePlanClaim.Note] }] : undefined,
16
+ basedOn: claims[CarePlanClaim.BasedOn] ? claims[CarePlanClaim.BasedOn].split(',').map((reference) => ({ reference: reference.trim() })) : undefined,
17
+ careTeam: claims[CarePlanClaim.CareTeam] ? claims[CarePlanClaim.CareTeam].split(',').map((reference) => ({ reference: reference.trim() })) : undefined,
18
+ addresses: claims[CarePlanClaim.Condition] ? claims[CarePlanClaim.Condition].split(',').map((reference) => ({ reference: reference.trim() })) : undefined,
19
+ encounter: claims[CarePlanClaim.Encounter] ? { reference: claims[CarePlanClaim.Encounter] } : undefined,
20
+ goal: claims[CarePlanClaim.Goal] ? claims[CarePlanClaim.Goal].split(',').map((reference) => ({ reference: reference.trim() })) : undefined,
21
+ partOf: claims[CarePlanClaim.PartOf] ? claims[CarePlanClaim.PartOf].split(',').map((reference) => ({ reference: reference.trim() })) : undefined,
22
+ replaces: claims[CarePlanClaim.Replaces] ? claims[CarePlanClaim.Replaces].split(',').map((reference) => ({ reference: reference.trim() })) : undefined,
23
+ activity: (claims[CarePlanClaim.ActivityCode] || claims[CarePlanClaim.ActivityDate] || claims[CarePlanClaim.ActivityReference] || claims[CarePlanClaim.Performer]) ? [{
24
+ reference: claims[CarePlanClaim.ActivityReference] ? { reference: claims[CarePlanClaim.ActivityReference] } : undefined,
25
+ detail: {
26
+ code: claims[CarePlanClaim.ActivityCode] ? { coding: codingFromValue(claims[CarePlanClaim.ActivityCode]) } : undefined,
27
+ scheduledString: claims[CarePlanClaim.ActivityDate],
28
+ performer: claims[CarePlanClaim.Performer] ? claims[CarePlanClaim.Performer].split(',').map((reference) => ({ reference: reference.trim() })) : undefined,
29
+ },
30
+ }] : undefined,
31
+ };
32
+ }
33
+ export function carePlanFhirR4ToFlat(resource) {
34
+ const activity = Array.isArray(resource.activity) ? resource.activity[0] : undefined;
35
+ const detail = activity?.detail;
36
+ const period = resource.period;
37
+ return {
38
+ [CarePlanClaim.ActivityCode]: codingToValue(detail?.code?.coding?.[0]),
39
+ [CarePlanClaim.ActivityDate]: detail?.scheduledString,
40
+ [CarePlanClaim.ActivityReference]: referenceToValue(activity?.reference),
41
+ [CarePlanClaim.BasedOn]: referenceListToCsv(resource.basedOn),
42
+ [CarePlanClaim.CareTeam]: referenceListToCsv(resource.careTeam),
43
+ [CarePlanClaim.Category]: codingToValue(resource.category?.[0]?.coding?.[0]),
44
+ [CarePlanClaim.Condition]: referenceListToCsv(resource.addresses),
45
+ [CarePlanClaim.Date]: resource.created || period?.start,
46
+ [CarePlanClaim.Encounter]: referenceToValue(resource.encounter),
47
+ [CarePlanClaim.Goal]: referenceListToCsv(resource.goal),
48
+ [CarePlanClaim.Identifier]: resource.identifier?.[0]?.value,
49
+ [CarePlanClaim.Intent]: resource.intent,
50
+ [CarePlanClaim.PartOf]: referenceListToCsv(resource.partOf),
51
+ [CarePlanClaim.Patient]: referenceToValue(resource.subject),
52
+ [CarePlanClaim.Performer]: referenceListToCsv(detail?.performer),
53
+ [CarePlanClaim.Replaces]: referenceListToCsv(resource.replaces),
54
+ [CarePlanClaim.Status]: resource.status,
55
+ [CarePlanClaim.Subject]: referenceToValue(resource.subject),
56
+ [CarePlanClaim.Note]: resource.note?.[0]?.text,
57
+ };
58
+ }
@@ -0,0 +1,3 @@
1
+ import type { FhirResource, FlatClaims } from './convert-shared';
2
+ export declare function clinicalImpressionFlatToFhirR4(claims: FlatClaims): FhirResource;
3
+ export declare function clinicalImpressionFhirR4ToFlat(resource: FhirResource): FlatClaims;
@@ -0,0 +1,42 @@
1
+ // Copyright 2026 Conéctate Soluciones y Aplicaciones SL under the Apache License, Version 2.0.
2
+ // File: src/utils/convert-clinical-impression.ts
3
+ import { ClinicalImpressionClaim } from '../models/interoperable-claims/clinical-impression-claims.js';
4
+ import { codingFromValue, codingToValue, referenceListToCsv, referenceToValue } from './convert-shared.js';
5
+ export function clinicalImpressionFlatToFhirR4(claims) {
6
+ return {
7
+ resourceType: 'ClinicalImpression',
8
+ identifier: claims[ClinicalImpressionClaim.Identifier] ? [{ value: claims[ClinicalImpressionClaim.Identifier] }] : undefined,
9
+ status: claims[ClinicalImpressionClaim.Status],
10
+ description: claims[ClinicalImpressionClaim.Description],
11
+ subject: claims[ClinicalImpressionClaim.Subject] ? { reference: claims[ClinicalImpressionClaim.Subject] } : undefined,
12
+ encounter: claims[ClinicalImpressionClaim.Encounter] ? { reference: claims[ClinicalImpressionClaim.Encounter] } : undefined,
13
+ effectiveDateTime: claims[ClinicalImpressionClaim.EffectiveDateTime],
14
+ date: claims[ClinicalImpressionClaim.Date],
15
+ assessor: claims[ClinicalImpressionClaim.Assessor] ? { reference: claims[ClinicalImpressionClaim.Assessor] } : undefined,
16
+ problem: claims[ClinicalImpressionClaim.Problem] ? claims[ClinicalImpressionClaim.Problem].split(',').map((reference) => ({ reference: reference.trim() })) : undefined,
17
+ finding: claims[ClinicalImpressionClaim.Finding] ? claims[ClinicalImpressionClaim.Finding].split(',').map((reference) => ({ itemReference: { reference: reference.trim() } })) : undefined,
18
+ prognosisCodeableConcept: claims[ClinicalImpressionClaim.PrognosisCode] ? [{ coding: codingFromValue(claims[ClinicalImpressionClaim.PrognosisCode]) }] : undefined,
19
+ summary: claims[ClinicalImpressionClaim.Summary],
20
+ };
21
+ }
22
+ export function clinicalImpressionFhirR4ToFlat(resource) {
23
+ return {
24
+ [ClinicalImpressionClaim.Identifier]: resource.identifier?.[0]?.value,
25
+ [ClinicalImpressionClaim.Status]: resource.status,
26
+ [ClinicalImpressionClaim.Description]: resource.description,
27
+ [ClinicalImpressionClaim.Subject]: referenceToValue(resource.subject),
28
+ [ClinicalImpressionClaim.Encounter]: referenceToValue(resource.encounter),
29
+ [ClinicalImpressionClaim.EffectiveDateTime]: resource.effectiveDateTime,
30
+ [ClinicalImpressionClaim.Date]: resource.date,
31
+ [ClinicalImpressionClaim.Assessor]: referenceToValue(resource.assessor),
32
+ [ClinicalImpressionClaim.Problem]: referenceListToCsv(resource.problem),
33
+ [ClinicalImpressionClaim.Finding]: Array.isArray(resource.finding)
34
+ ? resource.finding
35
+ .map((item) => referenceToValue(item?.itemReference))
36
+ .filter((item) => Boolean(item))
37
+ .join(',')
38
+ : undefined,
39
+ [ClinicalImpressionClaim.PrognosisCode]: codingToValue(resource.prognosisCodeableConcept?.[0]?.coding?.[0]),
40
+ [ClinicalImpressionClaim.Summary]: resource.summary,
41
+ };
42
+ }
@@ -0,0 +1,3 @@
1
+ import type { FhirResource, FlatClaims } from './convert-shared';
2
+ export declare function compositionFlatToFhirR4(claims: FlatClaims): FhirResource;
3
+ export declare function compositionFhirR4ToFlat(resource: FhirResource): FlatClaims;
@@ -0,0 +1,35 @@
1
+ // Copyright 2026 Conéctate Soluciones y Aplicaciones SL under the Apache License, Version 2.0.
2
+ // File: src/utils/convert-composition.ts
3
+ import { CompositionClaim } from '../models/interoperable-claims/composition-claims.js';
4
+ import { codingFromValue, codingToValue, referenceListToCsv, referenceToValue } from './convert-shared.js';
5
+ export function compositionFlatToFhirR4(claims) {
6
+ return {
7
+ resourceType: 'Composition',
8
+ identifier: claims[CompositionClaim.Identifier] ? { value: claims[CompositionClaim.Identifier] } : undefined,
9
+ subject: claims[CompositionClaim.Subject] ? { reference: claims[CompositionClaim.Subject] } : undefined,
10
+ author: claims[CompositionClaim.Author] ? claims[CompositionClaim.Author].split(',').map((reference) => ({ reference: reference.trim() })) : undefined,
11
+ date: claims[CompositionClaim.Date],
12
+ title: claims[CompositionClaim.Title],
13
+ type: claims[CompositionClaim.Type] ? { coding: codingFromValue(claims[CompositionClaim.Type]) } : undefined,
14
+ section: claims[CompositionClaim.Section]
15
+ ? claims[CompositionClaim.Section].split(',').map((value) => ({ code: { coding: codingFromValue(value.trim()) } }))
16
+ : undefined,
17
+ };
18
+ }
19
+ export function compositionFhirR4ToFlat(resource) {
20
+ const sectionValues = Array.isArray(resource.section)
21
+ ? resource.section
22
+ .map((item) => codingToValue(item?.code?.coding?.[0]))
23
+ .filter((item) => Boolean(item))
24
+ : [];
25
+ return {
26
+ [CompositionClaim.Subject]: referenceToValue(resource.subject),
27
+ [CompositionClaim.Section]: sectionValues.length ? sectionValues.join(',') : undefined,
28
+ [CompositionClaim.Author]: referenceListToCsv(resource.author),
29
+ [CompositionClaim.Date]: resource.date,
30
+ [CompositionClaim.Entry]: undefined,
31
+ [CompositionClaim.Type]: codingToValue(resource.type?.coding?.[0]),
32
+ [CompositionClaim.Identifier]: resource.identifier?.value,
33
+ [CompositionClaim.Title]: resource.title,
34
+ };
35
+ }
@@ -0,0 +1,3 @@
1
+ import type { FhirResource, FlatClaims } from './convert-shared';
2
+ export declare function conditionFlatToFhirR4(claims: FlatClaims): FhirResource;
3
+ export declare function conditionFhirR4ToFlat(resource: FhirResource): FlatClaims;
@@ -0,0 +1,24 @@
1
+ // Copyright 2026 Conéctate Soluciones y Aplicaciones SL under the Apache License, Version 2.0.
2
+ // File: src/utils/convert-condition.ts
3
+ import { ConditionClaim } from '../models/interoperable-claims/condition-claims.js';
4
+ import { codingFromValue, codingToValue, requireClaim } from './convert-shared.js';
5
+ export function conditionFlatToFhirR4(claims) {
6
+ const subject = requireClaim(claims, ConditionClaim.Subject);
7
+ return {
8
+ resourceType: 'Condition',
9
+ identifier: claims[ConditionClaim.Identifier] ? [{ value: claims[ConditionClaim.Identifier] }] : undefined,
10
+ subject: { reference: subject },
11
+ code: claims[ConditionClaim.Code] ? { coding: codingFromValue(claims[ConditionClaim.Code]) } : undefined,
12
+ clinicalStatus: claims[ConditionClaim.ClinicalStatus] ? { coding: [{ code: claims[ConditionClaim.ClinicalStatus] }] } : undefined,
13
+ verificationStatus: claims[ConditionClaim.VerificationStatus] ? { coding: [{ code: claims[ConditionClaim.VerificationStatus] }] } : undefined,
14
+ };
15
+ }
16
+ export function conditionFhirR4ToFlat(resource) {
17
+ return {
18
+ [ConditionClaim.Identifier]: resource.identifier?.[0]?.value,
19
+ [ConditionClaim.Subject]: resource.subject?.reference,
20
+ [ConditionClaim.Code]: codingToValue(resource.code?.coding?.[0]),
21
+ [ConditionClaim.ClinicalStatus]: resource.clinicalStatus?.coding?.[0]?.code,
22
+ [ConditionClaim.VerificationStatus]: resource.verificationStatus?.coding?.[0]?.code,
23
+ };
24
+ }
@@ -0,0 +1,3 @@
1
+ import type { FhirResource, FlatClaims } from './convert-shared';
2
+ export declare function coverageFlatToFhirR4(claims: FlatClaims): FhirResource;
3
+ export declare function coverageFhirR4ToFlat(resource: FhirResource): FlatClaims;
@@ -0,0 +1,51 @@
1
+ // Copyright 2026 Conéctate Soluciones y Aplicaciones SL under the Apache License, Version 2.0.
2
+ // File: src/utils/convert-coverage.ts
3
+ import { CoverageClaim } from '../models/interoperable-claims/coverage-claims.js';
4
+ import { codingFromValue, codingToValue, referenceListToCsv, referenceToValue } from './convert-shared.js';
5
+ export function coverageFlatToFhirR4(claims) {
6
+ return {
7
+ resourceType: 'Coverage',
8
+ identifier: claims[CoverageClaim.Identifier] ? [{ value: claims[CoverageClaim.Identifier] }] : undefined,
9
+ status: claims[CoverageClaim.Status],
10
+ type: claims[CoverageClaim.Type] ? { coding: codingFromValue(claims[CoverageClaim.Type]) } : undefined,
11
+ policyHolder: claims[CoverageClaim.PolicyHolder] ? { reference: claims[CoverageClaim.PolicyHolder] } : undefined,
12
+ subscriber: claims[CoverageClaim.Subscriber] ? { reference: claims[CoverageClaim.Subscriber] } : undefined,
13
+ beneficiary: claims[CoverageClaim.Beneficiary] ? { reference: claims[CoverageClaim.Beneficiary] } : undefined,
14
+ relationship: claims[CoverageClaim.Relationship] ? { coding: codingFromValue(claims[CoverageClaim.Relationship]) } : undefined,
15
+ period: (claims[CoverageClaim.PeriodStart] || claims[CoverageClaim.PeriodEnd]) ? {
16
+ start: claims[CoverageClaim.PeriodStart],
17
+ end: claims[CoverageClaim.PeriodEnd],
18
+ } : undefined,
19
+ payor: claims[CoverageClaim.Payor] ? claims[CoverageClaim.Payor].split(',').map((reference) => ({ reference: reference.trim() })) : undefined,
20
+ class: claims[CoverageClaim.Class]
21
+ ? claims[CoverageClaim.Class].split(',').map((value) => {
22
+ const [type, val] = value.trim().split('|');
23
+ return { type: { text: type }, value: val ?? type };
24
+ })
25
+ : undefined,
26
+ };
27
+ }
28
+ export function coverageFhirR4ToFlat(resource) {
29
+ const classValues = Array.isArray(resource.class)
30
+ ? resource.class
31
+ .map((item) => {
32
+ const type = item?.type?.text;
33
+ const value = item?.value;
34
+ return type && value ? `${type}|${value}` : undefined;
35
+ })
36
+ .filter((item) => Boolean(item))
37
+ : [];
38
+ return {
39
+ [CoverageClaim.Identifier]: resource.identifier?.[0]?.value,
40
+ [CoverageClaim.Status]: resource.status,
41
+ [CoverageClaim.Type]: codingToValue(resource.type?.coding?.[0]),
42
+ [CoverageClaim.PolicyHolder]: referenceToValue(resource.policyHolder),
43
+ [CoverageClaim.Subscriber]: referenceToValue(resource.subscriber),
44
+ [CoverageClaim.Beneficiary]: referenceToValue(resource.beneficiary),
45
+ [CoverageClaim.Relationship]: codingToValue(resource.relationship?.coding?.[0]),
46
+ [CoverageClaim.PeriodStart]: resource.period?.start,
47
+ [CoverageClaim.PeriodEnd]: resource.period?.end,
48
+ [CoverageClaim.Payor]: referenceListToCsv(resource.payor),
49
+ [CoverageClaim.Class]: classValues.length ? classValues.join(',') : undefined,
50
+ };
51
+ }
@@ -0,0 +1,3 @@
1
+ import type { FhirResource, FlatClaims } from './convert-shared';
2
+ export declare function deviceUseStatementFlatToFhirR4(claims: FlatClaims): FhirResource;
3
+ export declare function deviceUseStatementFhirR4ToFlat(resource: FhirResource): FlatClaims;
@@ -0,0 +1,28 @@
1
+ // Copyright 2026 Conéctate Soluciones y Aplicaciones SL under the Apache License, Version 2.0.
2
+ // File: src/utils/convert-device-use-statement.ts
3
+ import { DeviceUseStatementClaim } from '../models/interoperable-claims/device-use-statement-claims.js';
4
+ import { requireClaim } from './convert-shared.js';
5
+ export function deviceUseStatementFlatToFhirR4(claims) {
6
+ const subject = requireClaim(claims, DeviceUseStatementClaim.Subject);
7
+ const device = requireClaim(claims, DeviceUseStatementClaim.Device);
8
+ const status = requireClaim(claims, DeviceUseStatementClaim.Status);
9
+ return {
10
+ resourceType: 'DeviceUseStatement',
11
+ identifier: claims[DeviceUseStatementClaim.Identifier] ? [{ value: claims[DeviceUseStatementClaim.Identifier] }] : undefined,
12
+ subject: { reference: subject },
13
+ device: { reference: device },
14
+ status,
15
+ recordedOn: claims[DeviceUseStatementClaim.RecordedOn],
16
+ timingDateTime: claims[DeviceUseStatementClaim.TimingDateTime],
17
+ };
18
+ }
19
+ export function deviceUseStatementFhirR4ToFlat(resource) {
20
+ return {
21
+ [DeviceUseStatementClaim.Identifier]: resource.identifier?.[0]?.value,
22
+ [DeviceUseStatementClaim.Subject]: resource.subject?.reference,
23
+ [DeviceUseStatementClaim.Device]: resource.device?.reference,
24
+ [DeviceUseStatementClaim.Status]: resource.status,
25
+ [DeviceUseStatementClaim.RecordedOn]: resource.recordedOn,
26
+ [DeviceUseStatementClaim.TimingDateTime]: resource.timingDateTime,
27
+ };
28
+ }
@@ -0,0 +1,3 @@
1
+ import type { FhirResource, FlatClaims } from './convert-shared';
2
+ export declare function deviceFlatToFhirR4(claims: FlatClaims): FhirResource;
3
+ export declare function deviceFhirR4ToFlat(resource: FhirResource): FlatClaims;
@@ -0,0 +1,37 @@
1
+ // Copyright 2026 Conéctate Soluciones y Aplicaciones SL under the Apache License, Version 2.0.
2
+ // File: src/utils/convert-device.ts
3
+ import { DeviceClaim } from '../models/interoperable-claims/device-claims.js';
4
+ import { codingFromValue, codingToValue, referenceToValue } from './convert-shared.js';
5
+ export function deviceFlatToFhirR4(claims) {
6
+ return {
7
+ resourceType: 'Device',
8
+ identifier: claims[DeviceClaim.Identifier] ? [{ value: claims[DeviceClaim.Identifier] }] : undefined,
9
+ deviceName: claims[DeviceClaim.DeviceName] ? [{ name: claims[DeviceClaim.DeviceName] }] : undefined,
10
+ location: claims[DeviceClaim.Location] ? { reference: claims[DeviceClaim.Location] } : undefined,
11
+ manufacturer: claims[DeviceClaim.Manufacturer],
12
+ modelNumber: claims[DeviceClaim.Model],
13
+ owner: claims[DeviceClaim.Organization] ? { reference: claims[DeviceClaim.Organization] } : undefined,
14
+ patient: claims[DeviceClaim.Patient] ? { reference: claims[DeviceClaim.Patient] } : undefined,
15
+ serialNumber: claims[DeviceClaim.SerialNumber],
16
+ status: claims[DeviceClaim.Status],
17
+ type: claims[DeviceClaim.Type] ? { coding: codingFromValue(claims[DeviceClaim.Type]) } : undefined,
18
+ udiCarrier: claims[DeviceClaim.UdiCarrier] ? [{ carrierHRF: claims[DeviceClaim.UdiCarrier] }] : undefined,
19
+ url: claims[DeviceClaim.Url],
20
+ };
21
+ }
22
+ export function deviceFhirR4ToFlat(resource) {
23
+ return {
24
+ [DeviceClaim.DeviceName]: resource.deviceName?.[0]?.name,
25
+ [DeviceClaim.Identifier]: resource.identifier?.[0]?.value,
26
+ [DeviceClaim.Location]: referenceToValue(resource.location),
27
+ [DeviceClaim.Manufacturer]: resource.manufacturer,
28
+ [DeviceClaim.Model]: resource.modelNumber || resource.model,
29
+ [DeviceClaim.Organization]: referenceToValue(resource.owner),
30
+ [DeviceClaim.Patient]: referenceToValue(resource.patient),
31
+ [DeviceClaim.SerialNumber]: resource.serialNumber,
32
+ [DeviceClaim.Status]: resource.status,
33
+ [DeviceClaim.Type]: codingToValue(resource.type?.coding?.[0]),
34
+ [DeviceClaim.UdiCarrier]: resource.udiCarrier?.[0]?.carrierHRF,
35
+ [DeviceClaim.Url]: resource.url,
36
+ };
37
+ }
@@ -0,0 +1,3 @@
1
+ import type { FhirResource, FlatClaims } from './convert-shared';
2
+ export declare function diagnosticReportFlatToFhirR4(claims: FlatClaims): FhirResource;
3
+ export declare function diagnosticReportFhirR4ToFlat(resource: FhirResource): FlatClaims;