gdc-common-utils-ts 2.0.12 → 2.0.14

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 (89) hide show
  1. package/README.md +6 -2
  2. package/dist/examples/employee.d.ts +9 -1
  3. package/dist/examples/employee.js +7 -4
  4. package/dist/examples/shared.d.ts +1 -1
  5. package/dist/examples/shared.js +6 -2
  6. package/dist/utils/actor.d.ts +3 -1
  7. package/dist/utils/medication-claim-helpers.d.ts +5 -85
  8. package/dist/utils/medication-claim-helpers.js +5 -255
  9. package/package.json +1 -5
  10. package/dist/examples/communication-bundle-session.d.ts +0 -22
  11. package/dist/examples/communication-bundle-session.js +0 -79
  12. package/dist/interfaces/IWallet.d.ts +0 -55
  13. package/dist/interfaces/IWallet.js +0 -3
  14. package/dist/models/fhir-related-person.d.ts +0 -61
  15. package/dist/models/fhir-related-person.js +0 -108
  16. package/dist/models/related-profile.d.ts +0 -42
  17. package/dist/models/related-profile.js +0 -16
  18. package/dist/utils/allergy-intolerance-claim-helpers.d.ts +0 -10
  19. package/dist/utils/allergy-intolerance-claim-helpers.js +0 -47
  20. package/dist/utils/appointment-claim-helpers.d.ts +0 -10
  21. package/dist/utils/appointment-claim-helpers.js +0 -26
  22. package/dist/utils/appointment-response-claim-helpers.d.ts +0 -8
  23. package/dist/utils/appointment-response-claim-helpers.js +0 -20
  24. package/dist/utils/claim-list-helpers.d.ts +0 -21
  25. package/dist/utils/claim-list-helpers.js +0 -50
  26. package/dist/utils/clinical-impression-claim-helpers.d.ts +0 -10
  27. package/dist/utils/clinical-impression-claim-helpers.js +0 -26
  28. package/dist/utils/communication-bundle-session.d.ts +0 -175
  29. package/dist/utils/communication-bundle-session.js +0 -524
  30. package/dist/utils/composition-claim-helpers.d.ts +0 -12
  31. package/dist/utils/composition-claim-helpers.js +0 -32
  32. package/dist/utils/condition-claim-helpers.d.ts +0 -10
  33. package/dist/utils/condition-claim-helpers.js +0 -47
  34. package/dist/utils/convert-allergy-intolerance.d.ts +0 -3
  35. package/dist/utils/convert-allergy-intolerance.js +0 -34
  36. package/dist/utils/convert-appointment-response.d.ts +0 -3
  37. package/dist/utils/convert-appointment-response.js +0 -32
  38. package/dist/utils/convert-appointment.d.ts +0 -3
  39. package/dist/utils/convert-appointment.js +0 -61
  40. package/dist/utils/convert-care-plan.d.ts +0 -3
  41. package/dist/utils/convert-care-plan.js +0 -58
  42. package/dist/utils/convert-clinical-impression.d.ts +0 -3
  43. package/dist/utils/convert-clinical-impression.js +0 -42
  44. package/dist/utils/convert-composition.d.ts +0 -3
  45. package/dist/utils/convert-composition.js +0 -35
  46. package/dist/utils/convert-condition.d.ts +0 -3
  47. package/dist/utils/convert-condition.js +0 -24
  48. package/dist/utils/convert-coverage.d.ts +0 -3
  49. package/dist/utils/convert-coverage.js +0 -51
  50. package/dist/utils/convert-device-use-statement.d.ts +0 -3
  51. package/dist/utils/convert-device-use-statement.js +0 -28
  52. package/dist/utils/convert-device.d.ts +0 -3
  53. package/dist/utils/convert-device.js +0 -37
  54. package/dist/utils/convert-diagnostic-report.d.ts +0 -3
  55. package/dist/utils/convert-diagnostic-report.js +0 -55
  56. package/dist/utils/convert-document-reference.d.ts +0 -3
  57. package/dist/utils/convert-document-reference.js +0 -35
  58. package/dist/utils/convert-encounter.d.ts +0 -3
  59. package/dist/utils/convert-encounter.js +0 -68
  60. package/dist/utils/convert-flag.d.ts +0 -3
  61. package/dist/utils/convert-flag.js +0 -34
  62. package/dist/utils/convert-immunization.d.ts +0 -3
  63. package/dist/utils/convert-immunization.js +0 -56
  64. package/dist/utils/convert-medication-statement.d.ts +0 -3
  65. package/dist/utils/convert-medication-statement.js +0 -64
  66. package/dist/utils/convert-observation.d.ts +0 -3
  67. package/dist/utils/convert-observation.js +0 -57
  68. package/dist/utils/convert-procedure.d.ts +0 -3
  69. package/dist/utils/convert-procedure.js +0 -50
  70. package/dist/utils/convert-related-person.d.ts +0 -3
  71. package/dist/utils/convert-related-person.js +0 -31
  72. package/dist/utils/convert-shared.d.ts +0 -34
  73. package/dist/utils/convert-shared.js +0 -179
  74. package/dist/utils/coverage-claim-helpers.d.ts +0 -10
  75. package/dist/utils/coverage-claim-helpers.js +0 -26
  76. package/dist/utils/diagnostic-report-claim-helpers.d.ts +0 -12
  77. package/dist/utils/diagnostic-report-claim-helpers.js +0 -32
  78. package/dist/utils/employee-editor.d.ts +0 -24
  79. package/dist/utils/employee-editor.js +0 -41
  80. package/dist/utils/encounter-claim-helpers.d.ts +0 -10
  81. package/dist/utils/encounter-claim-helpers.js +0 -26
  82. package/dist/utils/gateway-index-params.d.ts +0 -44
  83. package/dist/utils/gateway-index-params.js +0 -80
  84. package/dist/utils/normalize-subject-uuid.d.ts +0 -1
  85. package/dist/utils/normalize-subject-uuid.js +0 -24
  86. package/dist/utils/related-person-claim-helpers.d.ts +0 -8
  87. package/dist/utils/related-person-claim-helpers.js +0 -20
  88. package/dist/utils/search-parameter-catalog.d.ts +0 -31
  89. package/dist/utils/search-parameter-catalog.js +0 -81
@@ -1,12 +0,0 @@
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;
@@ -1,32 +0,0 @@
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,10 +0,0 @@
1
- import { type GenericInteroperableClaims } from './claim-list-helpers.js';
2
- export type ConditionInteroperableClaims = GenericInteroperableClaims;
3
- export declare function getConditionClaimList(claims: ConditionInteroperableClaims, claimKey: string): string[];
4
- export declare function setConditionClaimList(claims: ConditionInteroperableClaims, claimKey: string, values: string | readonly string[]): ConditionInteroperableClaims;
5
- export declare function addConditionClaimList(claims: ConditionInteroperableClaims, claimKey: string, values: string | readonly string[]): ConditionInteroperableClaims;
6
- export declare function removeConditionClaimList(claims: ConditionInteroperableClaims, claimKey: string, values: string | readonly string[]): ConditionInteroperableClaims;
7
- export declare function getConditionContainedDocumentIdentifierList(claims: ConditionInteroperableClaims): string[];
8
- export declare function setConditionContainedDocumentIdentifierList(claims: ConditionInteroperableClaims, values: string | readonly string[]): ConditionInteroperableClaims;
9
- export declare function addConditionContainedDocumentIdentifierList(claims: ConditionInteroperableClaims, values: string | readonly string[]): ConditionInteroperableClaims;
10
- export declare function removeConditionContainedDocumentIdentifierList(claims: ConditionInteroperableClaims, values: string | readonly string[]): ConditionInteroperableClaims;
@@ -1,47 +0,0 @@
1
- // Copyright 2026 Antifraud Services Inc. under the Apache License, Version 2.0.
2
- import { ConditionClaim } from '../models/interoperable-claims/condition-claims.js';
3
- import { addClaimValues, getClaimValues, removeClaimValues, setClaimValues, } from './claim-list-helpers.js';
4
- export function getConditionClaimList(claims, claimKey) {
5
- return getClaimValues(claims, claimKey);
6
- }
7
- export function setConditionClaimList(claims, claimKey, values) {
8
- return setClaimValues(claims, claimKey, values);
9
- }
10
- export function addConditionClaimList(claims, claimKey, values) {
11
- return addClaimValues(claims, claimKey, values);
12
- }
13
- export function removeConditionClaimList(claims, claimKey, values) {
14
- return removeClaimValues(claims, claimKey, values);
15
- }
16
- export function getConditionContainedDocumentIdentifierList(claims) {
17
- return uniqueCsvLists([
18
- getConditionClaimList(claims, ConditionClaim.ContainedDocuments),
19
- getConditionClaimList(claims, ConditionClaim.AttachmentContentIds),
20
- ]);
21
- }
22
- export function setConditionContainedDocumentIdentifierList(claims, values) {
23
- return setContainedDocuments(claims, values);
24
- }
25
- export function addConditionContainedDocumentIdentifierList(claims, values) {
26
- return setContainedDocuments(claims, uniqueCsvLists([
27
- getConditionContainedDocumentIdentifierList(claims),
28
- Array.isArray(values) ? [...values] : getConditionClaimList({ [ConditionClaim.ContainedDocuments]: values }, ConditionClaim.ContainedDocuments),
29
- ]));
30
- }
31
- export function removeConditionContainedDocumentIdentifierList(claims, values) {
32
- const toRemove = new Set((Array.isArray(values) ? values : getConditionClaimList({ [ConditionClaim.ContainedDocuments]: values }, ConditionClaim.ContainedDocuments))
33
- .map((item) => String(item || '').trim())
34
- .filter(Boolean));
35
- return setContainedDocuments(claims, getConditionContainedDocumentIdentifierList(claims).filter((item) => !toRemove.has(item)));
36
- }
37
- function setContainedDocuments(claims, values) {
38
- const next = setConditionClaimList(claims, ConditionClaim.ContainedDocuments, values);
39
- const cleaned = {
40
- ...next,
41
- };
42
- delete cleaned[ConditionClaim.AttachmentContentIds];
43
- return cleaned;
44
- }
45
- function uniqueCsvLists(lists) {
46
- return [...new Set(lists.flatMap((list) => list.map((item) => String(item || '').trim()).filter(Boolean)))];
47
- }
@@ -1,3 +0,0 @@
1
- import type { FhirResource, FlatClaims } from './convert-shared';
2
- export declare function allergyIntoleranceFlatToFhirR4(claims: FlatClaims): FhirResource;
3
- export declare function allergyIntoleranceFhirR4ToFlat(resource: FhirResource): FlatClaims;
@@ -1,34 +0,0 @@
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
- }
@@ -1,3 +0,0 @@
1
- import type { FhirResource, FlatClaims } from './convert-shared';
2
- export declare function appointmentResponseFlatToFhirR4(claims: FlatClaims): FhirResource;
3
- export declare function appointmentResponseFhirR4ToFlat(resource: FhirResource): FlatClaims;
@@ -1,32 +0,0 @@
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
- }
@@ -1,3 +0,0 @@
1
- import type { FhirResource, FlatClaims } from './convert-shared';
2
- export declare function appointmentFlatToFhirR4(claims: FlatClaims): FhirResource;
3
- export declare function appointmentFhirR4ToFlat(resource: FhirResource): FlatClaims;
@@ -1,61 +0,0 @@
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
- }
@@ -1,3 +0,0 @@
1
- import type { FhirResource, FlatClaims } from './convert-shared';
2
- export declare function carePlanFlatToFhirR4(claims: FlatClaims): FhirResource;
3
- export declare function carePlanFhirR4ToFlat(resource: FhirResource): FlatClaims;
@@ -1,58 +0,0 @@
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
- }
@@ -1,3 +0,0 @@
1
- import type { FhirResource, FlatClaims } from './convert-shared';
2
- export declare function clinicalImpressionFlatToFhirR4(claims: FlatClaims): FhirResource;
3
- export declare function clinicalImpressionFhirR4ToFlat(resource: FhirResource): FlatClaims;
@@ -1,42 +0,0 @@
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
- }
@@ -1,3 +0,0 @@
1
- import type { FhirResource, FlatClaims } from './convert-shared';
2
- export declare function compositionFlatToFhirR4(claims: FlatClaims): FhirResource;
3
- export declare function compositionFhirR4ToFlat(resource: FhirResource): FlatClaims;
@@ -1,35 +0,0 @@
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
- }
@@ -1,3 +0,0 @@
1
- import type { FhirResource, FlatClaims } from './convert-shared';
2
- export declare function conditionFlatToFhirR4(claims: FlatClaims): FhirResource;
3
- export declare function conditionFhirR4ToFlat(resource: FhirResource): FlatClaims;
@@ -1,24 +0,0 @@
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
- }
@@ -1,3 +0,0 @@
1
- import type { FhirResource, FlatClaims } from './convert-shared';
2
- export declare function coverageFlatToFhirR4(claims: FlatClaims): FhirResource;
3
- export declare function coverageFhirR4ToFlat(resource: FhirResource): FlatClaims;
@@ -1,51 +0,0 @@
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
- }
@@ -1,3 +0,0 @@
1
- import type { FhirResource, FlatClaims } from './convert-shared';
2
- export declare function deviceUseStatementFlatToFhirR4(claims: FlatClaims): FhirResource;
3
- export declare function deviceUseStatementFhirR4ToFlat(resource: FhirResource): FlatClaims;
@@ -1,28 +0,0 @@
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
- }
@@ -1,3 +0,0 @@
1
- import type { FhirResource, FlatClaims } from './convert-shared';
2
- export declare function deviceFlatToFhirR4(claims: FlatClaims): FhirResource;
3
- export declare function deviceFhirR4ToFlat(resource: FhirResource): FlatClaims;
@@ -1,37 +0,0 @@
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
- }
@@ -1,3 +0,0 @@
1
- import type { FhirResource, FlatClaims } from './convert-shared';
2
- export declare function diagnosticReportFlatToFhirR4(claims: FlatClaims): FhirResource;
3
- export declare function diagnosticReportFhirR4ToFlat(resource: FhirResource): FlatClaims;