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.
- package/README.md +55 -2
- package/dist/claims/claim-list-helpers.d.ts +21 -0
- package/dist/claims/claim-list-helpers.js +50 -0
- package/dist/claims/claims-helpers-allergy-intolerance.d.ts +10 -0
- package/dist/claims/claims-helpers-allergy-intolerance.js +47 -0
- package/dist/claims/claims-helpers-appointment-response.d.ts +8 -0
- package/dist/claims/claims-helpers-appointment-response.js +20 -0
- package/dist/claims/claims-helpers-appointment.d.ts +10 -0
- package/dist/claims/claims-helpers-appointment.js +26 -0
- package/dist/claims/claims-helpers-care-plan.d.ts +8 -0
- package/dist/claims/claims-helpers-care-plan.js +20 -0
- package/dist/claims/claims-helpers-clinical-impression.d.ts +10 -0
- package/dist/claims/claims-helpers-clinical-impression.js +26 -0
- package/dist/claims/claims-helpers-communication.d.ts +17 -0
- package/dist/claims/claims-helpers-communication.js +57 -0
- package/dist/claims/claims-helpers-composition.d.ts +12 -0
- package/dist/claims/claims-helpers-composition.js +32 -0
- package/dist/claims/claims-helpers-condition.d.ts +10 -0
- package/dist/claims/claims-helpers-condition.js +47 -0
- package/dist/claims/claims-helpers-consent.d.ts +112 -0
- package/dist/claims/claims-helpers-consent.js +271 -0
- package/dist/claims/claims-helpers-coverage.d.ts +10 -0
- package/dist/claims/claims-helpers-coverage.js +26 -0
- package/dist/claims/claims-helpers-device-use-statement.d.ts +8 -0
- package/dist/claims/claims-helpers-device-use-statement.js +20 -0
- package/dist/claims/claims-helpers-device.d.ts +8 -0
- package/dist/claims/claims-helpers-device.js +20 -0
- package/dist/claims/claims-helpers-diagnostic-report.d.ts +12 -0
- package/dist/claims/claims-helpers-diagnostic-report.js +32 -0
- package/dist/claims/claims-helpers-document-reference.d.ts +8 -0
- package/dist/claims/claims-helpers-document-reference.js +20 -0
- package/dist/claims/claims-helpers-encounter.d.ts +10 -0
- package/dist/claims/claims-helpers-encounter.js +26 -0
- package/dist/claims/claims-helpers-flag.d.ts +8 -0
- package/dist/claims/claims-helpers-flag.js +20 -0
- package/dist/claims/claims-helpers-immunization.d.ts +8 -0
- package/dist/claims/claims-helpers-immunization.js +20 -0
- package/dist/claims/claims-helpers-location.d.ts +10 -0
- package/dist/claims/claims-helpers-location.js +26 -0
- package/dist/claims/claims-helpers-medication-statement.d.ts +88 -0
- package/dist/claims/claims-helpers-medication-statement.js +259 -0
- package/dist/claims/claims-helpers-observation.d.ts +8 -0
- package/dist/claims/claims-helpers-observation.js +20 -0
- package/dist/claims/claims-helpers-organization.d.ts +12 -0
- package/dist/claims/claims-helpers-organization.js +32 -0
- package/dist/claims/claims-helpers-procedure.d.ts +8 -0
- package/dist/claims/claims-helpers-procedure.js +20 -0
- package/dist/claims/claims-helpers-related-person.d.ts +8 -0
- package/dist/claims/claims-helpers-related-person.js +20 -0
- package/dist/claims/index.d.ts +24 -0
- package/dist/claims/index.js +24 -0
- package/dist/constants/fhir-resource-types.d.ts +16 -0
- package/dist/constants/fhir-resource-types.js +8 -0
- package/dist/convert/convert-allergy-intolerance.d.ts +3 -0
- package/dist/convert/convert-allergy-intolerance.js +34 -0
- package/dist/convert/convert-appointment-response.d.ts +3 -0
- package/dist/convert/convert-appointment-response.js +32 -0
- package/dist/convert/convert-appointment.d.ts +3 -0
- package/dist/convert/convert-appointment.js +61 -0
- package/dist/convert/convert-care-plan.d.ts +3 -0
- package/dist/convert/convert-care-plan.js +58 -0
- package/dist/convert/convert-clinical-impression.d.ts +3 -0
- package/dist/convert/convert-clinical-impression.js +42 -0
- package/dist/convert/convert-composition.d.ts +3 -0
- package/dist/convert/convert-composition.js +35 -0
- package/dist/convert/convert-condition.d.ts +3 -0
- package/dist/convert/convert-condition.js +24 -0
- package/dist/convert/convert-coverage.d.ts +3 -0
- package/dist/convert/convert-coverage.js +51 -0
- package/dist/convert/convert-device-use-statement.d.ts +3 -0
- package/dist/convert/convert-device-use-statement.js +28 -0
- package/dist/convert/convert-device.d.ts +3 -0
- package/dist/convert/convert-device.js +37 -0
- package/dist/convert/convert-diagnostic-report.d.ts +3 -0
- package/dist/convert/convert-diagnostic-report.js +55 -0
- package/dist/convert/convert-document-reference.d.ts +3 -0
- package/dist/convert/convert-document-reference.js +35 -0
- package/dist/convert/convert-encounter.d.ts +3 -0
- package/dist/convert/convert-encounter.js +68 -0
- package/dist/convert/convert-flag.d.ts +3 -0
- package/dist/convert/convert-flag.js +34 -0
- package/dist/convert/convert-immunization.d.ts +3 -0
- package/dist/convert/convert-immunization.js +56 -0
- package/dist/convert/convert-location.d.ts +3 -0
- package/dist/convert/convert-location.js +44 -0
- package/dist/convert/convert-medication-statement.d.ts +3 -0
- package/dist/convert/convert-medication-statement.js +64 -0
- package/dist/convert/convert-observation.d.ts +3 -0
- package/dist/convert/convert-observation.js +57 -0
- package/dist/convert/convert-organization.d.ts +3 -0
- package/dist/convert/convert-organization.js +39 -0
- package/dist/convert/convert-procedure.d.ts +3 -0
- package/dist/convert/convert-procedure.js +50 -0
- package/dist/convert/convert-related-person.d.ts +3 -0
- package/dist/convert/convert-related-person.js +31 -0
- package/dist/convert/convert-shared.d.ts +34 -0
- package/dist/convert/convert-shared.js +179 -0
- package/dist/convert/index.d.ts +22 -0
- package/dist/convert/index.js +22 -0
- package/dist/examples/communication-bundle-document-request.js +2 -2
- package/dist/examples/communication-bundle-session.js +2 -2
- package/dist/examples/shared.d.ts +21 -2
- package/dist/examples/shared.js +74 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/models/bundle.d.ts +13 -1
- package/dist/models/interoperable-claims/appointment-claims.d.ts +23 -1
- package/dist/models/interoperable-claims/appointment-claims.js +22 -1
- package/dist/models/interoperable-claims/appointment-response-claims.d.ts +14 -0
- package/dist/models/interoperable-claims/appointment-response-claims.js +13 -0
- package/dist/models/interoperable-claims/care-plan-claims.d.ts +24 -0
- package/dist/models/interoperable-claims/care-plan-claims.js +44 -0
- package/dist/models/interoperable-claims/clinical-impression-claims.d.ts +17 -0
- package/dist/models/interoperable-claims/clinical-impression-claims.js +30 -0
- package/dist/models/interoperable-claims/coverage-claims.d.ts +16 -0
- package/dist/models/interoperable-claims/coverage-claims.js +28 -0
- package/dist/models/interoperable-claims/device-claims.d.ts +18 -0
- package/dist/models/interoperable-claims/device-claims.js +32 -0
- package/dist/models/interoperable-claims/diagnostic-report-claims.d.ts +2 -2
- package/dist/models/interoperable-claims/diagnostic-report-claims.js +1 -1
- package/dist/models/interoperable-claims/encounter-claims.d.ts +18 -0
- package/dist/models/interoperable-claims/encounter-claims.js +32 -0
- package/dist/models/interoperable-claims/flag-claims.d.ts +16 -0
- package/dist/models/interoperable-claims/flag-claims.js +28 -0
- package/dist/models/interoperable-claims/immunization-claims.d.ts +23 -0
- package/dist/models/interoperable-claims/immunization-claims.js +42 -0
- package/dist/models/interoperable-claims/index.d.ts +12 -0
- package/dist/models/interoperable-claims/index.js +12 -0
- package/dist/models/interoperable-claims/location-claims.d.ts +22 -0
- package/dist/models/interoperable-claims/location-claims.js +34 -0
- package/dist/models/interoperable-claims/observation-claims.d.ts +26 -0
- package/dist/models/interoperable-claims/observation-claims.js +48 -0
- package/dist/models/interoperable-claims/organization-claims.d.ts +18 -0
- package/dist/models/interoperable-claims/organization-claims.js +27 -0
- package/dist/models/interoperable-claims/procedure-claims.d.ts +22 -0
- package/dist/models/interoperable-claims/procedure-claims.js +40 -0
- package/dist/models/interoperable-claims/related-person-claims.d.ts +14 -0
- package/dist/models/interoperable-claims/related-person-claims.js +24 -0
- package/dist/utils/appointment-claim-helpers.d.ts +10 -0
- package/dist/utils/appointment-claim-helpers.js +26 -0
- package/dist/utils/appointment-response-claim-helpers.d.ts +8 -0
- package/dist/utils/appointment-response-claim-helpers.js +20 -0
- package/dist/utils/bundle-document-builder.d.ts +36 -0
- package/dist/utils/bundle-document-builder.js +311 -0
- package/dist/utils/claims-helpers-allergy-intolerance.d.ts +1 -0
- package/dist/utils/claims-helpers-allergy-intolerance.js +1 -0
- package/dist/utils/claims-helpers-appointment-response.d.ts +1 -0
- package/dist/utils/claims-helpers-appointment-response.js +1 -0
- package/dist/utils/claims-helpers-appointment.d.ts +1 -0
- package/dist/utils/claims-helpers-appointment.js +1 -0
- package/dist/utils/claims-helpers-care-plan.d.ts +1 -0
- package/dist/utils/claims-helpers-care-plan.js +1 -0
- package/dist/utils/claims-helpers-clinical-impression.d.ts +1 -0
- package/dist/utils/claims-helpers-clinical-impression.js +1 -0
- package/dist/utils/claims-helpers-communication.d.ts +1 -0
- package/dist/utils/claims-helpers-communication.js +1 -0
- package/dist/utils/claims-helpers-composition.d.ts +1 -0
- package/dist/utils/claims-helpers-composition.js +1 -0
- package/dist/utils/claims-helpers-condition.d.ts +1 -0
- package/dist/utils/claims-helpers-condition.js +1 -0
- package/dist/utils/claims-helpers-consent.d.ts +1 -0
- package/dist/utils/claims-helpers-consent.js +1 -0
- package/dist/utils/claims-helpers-coverage.d.ts +1 -0
- package/dist/utils/claims-helpers-coverage.js +1 -0
- package/dist/utils/claims-helpers-device-use-statement.d.ts +1 -0
- package/dist/utils/claims-helpers-device-use-statement.js +1 -0
- package/dist/utils/claims-helpers-device.d.ts +1 -0
- package/dist/utils/claims-helpers-device.js +1 -0
- package/dist/utils/claims-helpers-diagnostic-report.d.ts +1 -0
- package/dist/utils/claims-helpers-diagnostic-report.js +1 -0
- package/dist/utils/claims-helpers-document-reference.d.ts +1 -0
- package/dist/utils/claims-helpers-document-reference.js +1 -0
- package/dist/utils/claims-helpers-encounter.d.ts +1 -0
- package/dist/utils/claims-helpers-encounter.js +1 -0
- package/dist/utils/claims-helpers-flag.d.ts +1 -0
- package/dist/utils/claims-helpers-flag.js +1 -0
- package/dist/utils/claims-helpers-immunization.d.ts +1 -0
- package/dist/utils/claims-helpers-immunization.js +1 -0
- package/dist/utils/claims-helpers-location.d.ts +1 -0
- package/dist/utils/claims-helpers-location.js +1 -0
- package/dist/utils/claims-helpers-medication-statement.d.ts +1 -0
- package/dist/utils/claims-helpers-medication-statement.js +1 -0
- package/dist/utils/claims-helpers-observation.d.ts +1 -0
- package/dist/utils/claims-helpers-observation.js +1 -0
- package/dist/utils/claims-helpers-organization.d.ts +1 -0
- package/dist/utils/claims-helpers-organization.js +1 -0
- package/dist/utils/claims-helpers-procedure.d.ts +1 -0
- package/dist/utils/claims-helpers-procedure.js +1 -0
- package/dist/utils/claims-helpers-related-person.d.ts +1 -0
- package/dist/utils/claims-helpers-related-person.js +1 -0
- package/dist/utils/clinical-impression-claim-helpers.d.ts +10 -0
- package/dist/utils/clinical-impression-claim-helpers.js +26 -0
- package/dist/utils/clinical-resource-converters.d.ts +91 -62
- package/dist/utils/clinical-resource-converters.js +135 -273
- package/dist/utils/communication-bundle-document-request.d.ts +6 -4
- package/dist/utils/communication-bundle-document-request.js +7 -5
- package/dist/utils/communication-bundle-session.js +1 -1
- package/dist/utils/composition-claim-helpers.d.ts +12 -0
- package/dist/utils/composition-claim-helpers.js +32 -0
- package/dist/utils/consent-claim-helpers.d.ts +2 -2
- package/dist/utils/consent-claim-helpers.js +2 -2
- package/dist/utils/convert-allergy-intolerance.d.ts +3 -0
- package/dist/utils/convert-allergy-intolerance.js +34 -0
- package/dist/utils/convert-appointment-response.d.ts +3 -0
- package/dist/utils/convert-appointment-response.js +32 -0
- package/dist/utils/convert-appointment.d.ts +3 -0
- package/dist/utils/convert-appointment.js +61 -0
- package/dist/utils/convert-care-plan.d.ts +3 -0
- package/dist/utils/convert-care-plan.js +58 -0
- package/dist/utils/convert-clinical-impression.d.ts +3 -0
- package/dist/utils/convert-clinical-impression.js +42 -0
- package/dist/utils/convert-composition.d.ts +3 -0
- package/dist/utils/convert-composition.js +35 -0
- package/dist/utils/convert-condition.d.ts +3 -0
- package/dist/utils/convert-condition.js +24 -0
- package/dist/utils/convert-coverage.d.ts +3 -0
- package/dist/utils/convert-coverage.js +51 -0
- package/dist/utils/convert-device-use-statement.d.ts +3 -0
- package/dist/utils/convert-device-use-statement.js +28 -0
- package/dist/utils/convert-device.d.ts +3 -0
- package/dist/utils/convert-device.js +37 -0
- package/dist/utils/convert-diagnostic-report.d.ts +3 -0
- package/dist/utils/convert-diagnostic-report.js +55 -0
- package/dist/utils/convert-document-reference.d.ts +3 -0
- package/dist/utils/convert-document-reference.js +35 -0
- package/dist/utils/convert-encounter.d.ts +3 -0
- package/dist/utils/convert-encounter.js +68 -0
- package/dist/utils/convert-flag.d.ts +3 -0
- package/dist/utils/convert-flag.js +34 -0
- package/dist/utils/convert-immunization.d.ts +3 -0
- package/dist/utils/convert-immunization.js +56 -0
- package/dist/utils/convert-medication-statement.d.ts +3 -0
- package/dist/utils/convert-medication-statement.js +64 -0
- package/dist/utils/convert-observation.d.ts +3 -0
- package/dist/utils/convert-observation.js +57 -0
- package/dist/utils/convert-procedure.d.ts +3 -0
- package/dist/utils/convert-procedure.js +50 -0
- package/dist/utils/convert-related-person.d.ts +3 -0
- package/dist/utils/convert-related-person.js +31 -0
- package/dist/utils/convert-shared.d.ts +34 -0
- package/dist/utils/convert-shared.js +179 -0
- package/dist/utils/coverage-claim-helpers.d.ts +10 -0
- package/dist/utils/coverage-claim-helpers.js +26 -0
- package/dist/utils/diagnostic-report-claim-helpers.d.ts +12 -0
- package/dist/utils/diagnostic-report-claim-helpers.js +32 -0
- package/dist/utils/encounter-claim-helpers.d.ts +10 -0
- package/dist/utils/encounter-claim-helpers.js +26 -0
- package/dist/utils/fhir-cid.d.ts +49 -0
- package/dist/utils/fhir-cid.js +75 -0
- package/dist/utils/index.d.ts +4 -6
- package/dist/utils/index.js +4 -6
- package/dist/utils/ips-bundle-claims.d.ts +52 -0
- package/dist/utils/ips-bundle-claims.js +104 -0
- package/dist/utils/jwt.d.ts +16 -0
- package/dist/utils/jwt.js +21 -0
- package/dist/utils/related-person-claim-helpers.d.ts +8 -0
- package/dist/utils/related-person-claim-helpers.js +20 -0
- 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
|
|
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
|
-
*
|
|
327
|
-
*
|
|
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 '
|
|
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 '
|
|
2
|
-
import { type GenericInteroperableClaims } from '
|
|
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 '
|
|
4
|
-
import { addClaimValues, getClaimValues, normalizeClaimScalar, removeClaimValues, setClaimValues, } from '
|
|
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,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,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,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,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,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,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,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,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,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,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
|
+
}
|