gdc-common-utils-ts 2.3.26 → 2.3.28
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 +5 -0
- package/dist/claims/claims-helpers-related-person.js +0 -1
- package/dist/convert/convert-care-plan.js +25 -1
- package/dist/convert/convert-condition.js +12 -0
- package/dist/convert/convert-consent.js +59 -13
- package/dist/convert/convert-device-use-statement.js +3 -1
- package/dist/convert/convert-immunization.js +12 -2
- package/dist/convert/convert-medication-statement.js +35 -1
- package/dist/convert/convert-observation.js +43 -2
- package/dist/convert/convert-practitioner-role.d.ts +1 -1
- package/dist/convert/convert-practitioner-role.js +41 -13
- package/dist/convert/convert-shared.js +1 -1
- package/dist/examples/communication-didcomm-payload.d.ts +2 -2
- package/dist/examples/related-person.d.ts +9 -9
- package/dist/models/consent-rule.d.ts +8 -1
- package/dist/models/consent-rule.js +8 -1
- package/dist/models/indexing.d.ts +5 -5
- package/dist/models/interoperable-claims/appointment-claims.d.ts +57 -57
- package/dist/models/interoperable-claims/appointment-claims.js +31 -32
- package/dist/models/interoperable-claims/appointment-response-claims.d.ts +11 -11
- package/dist/models/interoperable-claims/appointment-response-claims.js +11 -11
- package/dist/models/interoperable-claims/care-plan-claims.d.ts +11 -0
- package/dist/models/interoperable-claims/care-plan-claims.js +11 -0
- package/dist/models/interoperable-claims/clinical-impression-claims.d.ts +1 -1
- package/dist/models/interoperable-claims/clinical-impression-claims.js +1 -1
- package/dist/models/interoperable-claims/condition-claims.d.ts +2 -0
- package/dist/models/interoperable-claims/condition-claims.js +2 -0
- package/dist/models/interoperable-claims/device-use-statement-claims.d.ts +3 -2
- package/dist/models/interoperable-claims/device-use-statement-claims.js +3 -2
- package/dist/models/interoperable-claims/document-reference-claims.d.ts +1 -1
- package/dist/models/interoperable-claims/document-reference-claims.js +1 -1
- package/dist/models/interoperable-claims/immunization-claims.d.ts +4 -0
- package/dist/models/interoperable-claims/immunization-claims.js +4 -0
- package/dist/models/interoperable-claims/medication-statement-claims.d.ts +6 -0
- package/dist/models/interoperable-claims/medication-statement-claims.js +6 -0
- package/dist/models/interoperable-claims/observation-claims.d.ts +12 -4
- package/dist/models/interoperable-claims/observation-claims.js +10 -2
- package/dist/models/interoperable-claims/practitioner-role-claims.d.ts +9 -0
- package/dist/models/interoperable-claims/practitioner-role-claims.js +9 -0
- package/dist/models/interoperable-claims/related-person-claims.d.ts +3 -2
- package/dist/models/interoperable-claims/related-person-claims.js +3 -2
- package/dist/models/params.d.ts +1 -1
- package/dist/utils/bundle-document-builder.js +37 -16
- package/dist/utils/bundle-entry-editor.d.ts +13 -0
- package/dist/utils/bundle-entry-editor.js +18 -0
- package/dist/utils/clinical-resource-converters.js +6 -4
- package/dist/utils/clinical-resource-view.d.ts +55 -0
- package/dist/utils/clinical-resource-view.js +137 -1
- package/dist/utils/communication-bundle-document-request.js +1 -1
- package/dist/utils/communication-fhir-r4.js +1 -1
- package/dist/utils/fhir-api-claim-helpers.d.ts +2 -0
- package/dist/utils/fhir-api-claim-helpers.js +16 -0
- package/dist/utils/ips-bundle-claims.d.ts +3 -4
- package/dist/utils/ips-bundle-claims.js +7 -7
- package/dist/utils/medication-statement-entry-editor.js +10 -10
- package/dist/utils/observation-component-entry-editor.d.ts +2 -2
- package/dist/utils/observation-component-entry-editor.js +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -49,6 +49,11 @@ It is intentionally not a full backend orchestration layer.
|
|
|
49
49
|
`Communication.topic`; the native projection may contain
|
|
50
50
|
`Communication.topic.coding`, but `Communication.topic.coding` is not a
|
|
51
51
|
claims key.
|
|
52
|
+
- FHIR claims are version-independent FHIR API SearchParameter claims. Their
|
|
53
|
+
only context is `@context: org.hl7.fhir.api`; an expanded key is therefore
|
|
54
|
+
`org.hl7.fhir.api.<ResourceType>.<concrete-parameter>`. Never use
|
|
55
|
+
`org.hl7.fhir.r4.*` as a claim namespace: R4 identifies a native FHIR
|
|
56
|
+
resource representation, not the claims vocabulary.
|
|
52
57
|
- Schema.org claims are a different vocabulary and preserve the canonical
|
|
53
58
|
Schema.org camelCase property name.
|
|
54
59
|
- Only define custom names when no canonical FHIR SearchParameter exists.
|
|
@@ -21,6 +21,8 @@ export function carePlanFlatToFhirR4(claims) {
|
|
|
21
21
|
}]
|
|
22
22
|
: undefined,
|
|
23
23
|
created: claims[CarePlanClaim.Date],
|
|
24
|
+
description: claims[CarePlanClaim.Description],
|
|
25
|
+
period: claims[CarePlanClaim.PeriodStart] || claims[CarePlanClaim.PeriodEnd] ? { start: claims[CarePlanClaim.PeriodStart], end: claims[CarePlanClaim.PeriodEnd] } : undefined,
|
|
24
26
|
note: claims[CarePlanClaim.Note] ? [{ text: claims[CarePlanClaim.Note] }] : undefined,
|
|
25
27
|
basedOn: claims[CarePlanClaim.BasedOn] ? claims[CarePlanClaim.BasedOn].split(',').map((reference) => ({ reference: reference.trim() })) : undefined,
|
|
26
28
|
careTeam: claims[CarePlanClaim.CareTeam] ? claims[CarePlanClaim.CareTeam].split(',').map((reference) => ({ reference: reference.trim() })) : undefined,
|
|
@@ -29,12 +31,22 @@ export function carePlanFlatToFhirR4(claims) {
|
|
|
29
31
|
goal: claims[CarePlanClaim.Goal] ? claims[CarePlanClaim.Goal].split(',').map((reference) => ({ reference: reference.trim() })) : undefined,
|
|
30
32
|
partOf: claims[CarePlanClaim.PartOf] ? claims[CarePlanClaim.PartOf].split(',').map((reference) => ({ reference: reference.trim() })) : undefined,
|
|
31
33
|
replaces: claims[CarePlanClaim.Replaces] ? claims[CarePlanClaim.Replaces].split(',').map((reference) => ({ reference: reference.trim() })) : undefined,
|
|
32
|
-
activity: (claims[CarePlanClaim.ActivityCode] || claims[CarePlanClaim.ActivityDate] || claims[CarePlanClaim.ActivityReference] || claims[CarePlanClaim.Performer]) ? [{
|
|
34
|
+
activity: (claims[CarePlanClaim.ActivityCode] || claims[CarePlanClaim.ActivityDate] || claims[CarePlanClaim.ActivityReference] || claims[CarePlanClaim.Performer] || claims[CarePlanClaim.ActivityStatus]) ? [{
|
|
35
|
+
outcomeCodeableConcept: claims[CarePlanClaim.ActivityOutcome] ? [{ coding: codingFromValue(claims[CarePlanClaim.ActivityOutcome]) }] : undefined,
|
|
33
36
|
reference: claims[CarePlanClaim.ActivityReference] ? { reference: claims[CarePlanClaim.ActivityReference] } : undefined,
|
|
34
37
|
detail: {
|
|
35
38
|
code: claims[CarePlanClaim.ActivityCode] ? { coding: codingFromValue(claims[CarePlanClaim.ActivityCode]) } : undefined,
|
|
36
39
|
scheduledString: claims[CarePlanClaim.ActivityDate],
|
|
37
40
|
performer: claims[CarePlanClaim.Performer] ? claims[CarePlanClaim.Performer].split(',').map((reference) => ({ reference: reference.trim() })) : undefined,
|
|
41
|
+
status: claims[CarePlanClaim.ActivityStatus],
|
|
42
|
+
statusReason: claims[CarePlanClaim.ActivityStatusReason] ? { text: claims[CarePlanClaim.ActivityStatusReason] } : undefined,
|
|
43
|
+
doNotPerform: claims[CarePlanClaim.ActivityDoNotPerform] === undefined ? undefined : claims[CarePlanClaim.ActivityDoNotPerform] === 'true',
|
|
44
|
+
scheduledTiming: claims[CarePlanClaim.ActivityTimingFrequency] || claims[CarePlanClaim.ActivityTimingPeriod] ? { repeat: {
|
|
45
|
+
frequency: claims[CarePlanClaim.ActivityTimingFrequency] ? Number(claims[CarePlanClaim.ActivityTimingFrequency]) : undefined,
|
|
46
|
+
period: claims[CarePlanClaim.ActivityTimingPeriod] ? Number(claims[CarePlanClaim.ActivityTimingPeriod]) : undefined,
|
|
47
|
+
periodUnit: claims[CarePlanClaim.ActivityTimingPeriodUnit],
|
|
48
|
+
} } : undefined,
|
|
49
|
+
location: claims[CarePlanClaim.ActivityLocationDisplay] ? { display: claims[CarePlanClaim.ActivityLocationDisplay] } : undefined,
|
|
38
50
|
},
|
|
39
51
|
}] : undefined,
|
|
40
52
|
};
|
|
@@ -43,6 +55,7 @@ export function carePlanFhirR4ToFlat(resource) {
|
|
|
43
55
|
const activity = Array.isArray(resource.activity) ? resource.activity[0] : undefined;
|
|
44
56
|
const detail = activity?.detail;
|
|
45
57
|
const period = resource.period;
|
|
58
|
+
const repeat = detail?.scheduledTiming?.repeat;
|
|
46
59
|
return {
|
|
47
60
|
[CarePlanClaim.ActivityCode]: codingToValue(detail?.code?.coding?.[0]),
|
|
48
61
|
[CarePlanClaim.ActivityDate]: detail?.scheduledString,
|
|
@@ -65,5 +78,16 @@ export function carePlanFhirR4ToFlat(resource) {
|
|
|
65
78
|
[CarePlanClaim.Status]: resource.status,
|
|
66
79
|
[CarePlanClaim.Subject]: referenceToValue(resource.subject),
|
|
67
80
|
[CarePlanClaim.Note]: resource.note?.[0]?.text,
|
|
81
|
+
[CarePlanClaim.Description]: resource.description,
|
|
82
|
+
[CarePlanClaim.PeriodStart]: period?.start,
|
|
83
|
+
[CarePlanClaim.PeriodEnd]: period?.end,
|
|
84
|
+
[CarePlanClaim.ActivityStatus]: detail?.status,
|
|
85
|
+
[CarePlanClaim.ActivityStatusReason]: detail?.statusReason?.text,
|
|
86
|
+
[CarePlanClaim.ActivityDoNotPerform]: detail?.doNotPerform === undefined ? undefined : String(detail.doNotPerform),
|
|
87
|
+
[CarePlanClaim.ActivityOutcome]: codingToValue(activity?.outcomeCodeableConcept?.[0]?.coding?.[0]),
|
|
88
|
+
[CarePlanClaim.ActivityLocationDisplay]: detail?.location?.display,
|
|
89
|
+
[CarePlanClaim.ActivityTimingFrequency]: repeat?.frequency === undefined ? undefined : String(repeat.frequency),
|
|
90
|
+
[CarePlanClaim.ActivityTimingPeriod]: repeat?.period === undefined ? undefined : String(repeat.period),
|
|
91
|
+
[CarePlanClaim.ActivityTimingPeriodUnit]: repeat?.periodUnit,
|
|
68
92
|
};
|
|
69
93
|
}
|
|
@@ -23,6 +23,12 @@ export function conditionFlatToFhirR4(claims) {
|
|
|
23
23
|
: undefined,
|
|
24
24
|
clinicalStatus: claims[ConditionClaim.ClinicalStatus] ? { coding: [{ code: claims[ConditionClaim.ClinicalStatus] }] } : undefined,
|
|
25
25
|
verificationStatus: claims[ConditionClaim.VerificationStatus] ? { coding: [{ code: claims[ConditionClaim.VerificationStatus] }] } : undefined,
|
|
26
|
+
category: claims[ConditionClaim.Category] ? [{ coding: codingFromValue(claims[ConditionClaim.Category]) }] : undefined,
|
|
27
|
+
severity: claims[ConditionClaim.Severity] ? { coding: codingFromValue(claims[ConditionClaim.Severity]) } : undefined,
|
|
28
|
+
onsetDateTime: claims[ConditionClaim.OnsetDateTime],
|
|
29
|
+
recordedDate: claims[ConditionClaim.RecordedDate],
|
|
30
|
+
asserter: claims[ConditionClaim.Asserter] ? { reference: claims[ConditionClaim.Asserter] } : undefined,
|
|
31
|
+
recorder: claims[ConditionClaim.Recorder] ? { reference: claims[ConditionClaim.Recorder] } : undefined,
|
|
26
32
|
};
|
|
27
33
|
}
|
|
28
34
|
export function conditionFhirR4ToFlat(resource) {
|
|
@@ -35,5 +41,11 @@ export function conditionFhirR4ToFlat(resource) {
|
|
|
35
41
|
[ConditionClaim.CodeDisplay]: code?.coding?.[0]?.display,
|
|
36
42
|
[ConditionClaim.ClinicalStatus]: resource.clinicalStatus?.coding?.[0]?.code,
|
|
37
43
|
[ConditionClaim.VerificationStatus]: resource.verificationStatus?.coding?.[0]?.code,
|
|
44
|
+
[ConditionClaim.Category]: codingToValue(resource.category?.[0]?.coding?.[0]),
|
|
45
|
+
[ConditionClaim.Severity]: codingToValue(resource.severity?.coding?.[0]),
|
|
46
|
+
[ConditionClaim.OnsetDateTime]: resource.onsetDateTime,
|
|
47
|
+
[ConditionClaim.RecordedDate]: resource.recordedDate,
|
|
48
|
+
[ConditionClaim.Asserter]: resource.asserter?.reference,
|
|
49
|
+
[ConditionClaim.Recorder]: resource.recorder?.reference,
|
|
38
50
|
};
|
|
39
51
|
}
|
|
@@ -1,32 +1,78 @@
|
|
|
1
1
|
// Copyright 2026 Conéctate Soluciones y Aplicaciones SL under the Apache License, Version 2.0.
|
|
2
2
|
import { ClaimConsent } from '../models/consent-rule.js';
|
|
3
|
-
import { codingFromValue, codingToValue,
|
|
4
|
-
export function consentFhirR4ToFlat(resource, context = 'org.hl7.fhir.
|
|
3
|
+
import { codingFromValue, codingToValue, referenceToValue, } from './convert-shared.js';
|
|
4
|
+
export function consentFhirR4ToFlat(resource, context = 'org.hl7.fhir.api') {
|
|
5
5
|
const concept = resource.category?.[0];
|
|
6
|
+
const provision = resource.provision;
|
|
7
|
+
const scope = resource.scope;
|
|
8
|
+
const policyRule = resource.policyRule;
|
|
6
9
|
return {
|
|
7
|
-
|
|
10
|
+
'@context': context,
|
|
11
|
+
[ClaimConsent.identifier]: resource.identifier?.[0]?.value
|
|
12
|
+
|| resource.id,
|
|
13
|
+
[ClaimConsent.status]: resource.status,
|
|
14
|
+
[ClaimConsent.subject]: referenceToValue(resource.patient),
|
|
15
|
+
[ClaimConsent.patient]: referenceToValue(resource.patient),
|
|
16
|
+
[ClaimConsent.date]: resource.dateTime,
|
|
17
|
+
[ClaimConsent.decision]: provision?.type,
|
|
18
|
+
[ClaimConsent.action]: codingToValue(provision?.action?.[0]?.coding?.[0]),
|
|
19
|
+
[ClaimConsent.periodStart]: provision?.period?.start,
|
|
20
|
+
[ClaimConsent.periodEnd]: provision?.period?.end,
|
|
21
|
+
[ClaimConsent.purpose]: codingToValue(provision?.purpose?.[0]),
|
|
22
|
+
[ClaimConsent.sourceReference]: referenceToValue(resource.sourceReference),
|
|
8
23
|
[ClaimConsent.category]: codingToValue(concept?.coding?.[0]),
|
|
9
24
|
[ClaimConsent.categoryText]: concept?.text,
|
|
10
25
|
[ClaimConsent.categoryDisplay]: concept?.coding?.[0]?.display,
|
|
26
|
+
[ClaimConsent.scope]: codingToValue(scope?.coding?.[0]),
|
|
27
|
+
[ClaimConsent.scopeDisplay]: scope?.coding?.[0]?.display,
|
|
28
|
+
[ClaimConsent.policyRule]: codingToValue(policyRule?.coding?.[0]),
|
|
29
|
+
[ClaimConsent.provisionCode]: codingToValue(provision?.code?.[0]?.coding?.[0]),
|
|
30
|
+
[ClaimConsent.provisionCodeDisplay]: provision?.code?.[0]?.coding?.[0]?.display,
|
|
11
31
|
};
|
|
12
32
|
}
|
|
13
33
|
export function consentFlatToFhirR4(claims) {
|
|
14
|
-
const structuralClaims = { ...claims };
|
|
15
|
-
delete structuralClaims[ClaimConsent.category];
|
|
16
|
-
delete structuralClaims[ClaimConsent.categoryText];
|
|
17
|
-
delete structuralClaims[ClaimConsent.categoryDisplay];
|
|
18
|
-
const resource = flatClaimsToFhirResource(structuralClaims);
|
|
19
34
|
const coding = codingFromValue(claims[ClaimConsent.category])?.map((item) => ({
|
|
20
35
|
...item,
|
|
21
36
|
...(claims[ClaimConsent.categoryDisplay]
|
|
22
37
|
? { display: claims[ClaimConsent.categoryDisplay] }
|
|
23
38
|
: {}),
|
|
24
39
|
}));
|
|
25
|
-
|
|
26
|
-
|
|
40
|
+
const actionCoding = codingFromValue(claims[ClaimConsent.action]);
|
|
41
|
+
const purposeCoding = codingFromValue(claims[ClaimConsent.purpose]);
|
|
42
|
+
const scopeCoding = codingFromValue(claims[ClaimConsent.scope])?.map((item) => ({ ...item, ...(claims[ClaimConsent.scopeDisplay] ? { display: claims[ClaimConsent.scopeDisplay] } : {}) }));
|
|
43
|
+
const provisionCodeCoding = codingFromValue(claims[ClaimConsent.provisionCode])?.map((item) => ({ ...item, ...(claims[ClaimConsent.provisionCodeDisplay] ? { display: claims[ClaimConsent.provisionCodeDisplay] } : {}) }));
|
|
44
|
+
return {
|
|
45
|
+
resourceType: 'Consent',
|
|
46
|
+
identifier: claims[ClaimConsent.identifier] ? [{ value: claims[ClaimConsent.identifier] }] : undefined,
|
|
47
|
+
status: claims[ClaimConsent.status],
|
|
48
|
+
scope: scopeCoding ? { coding: scopeCoding } : undefined,
|
|
49
|
+
policyRule: claims[ClaimConsent.policyRule] ? { coding: codingFromValue(claims[ClaimConsent.policyRule]) } : undefined,
|
|
50
|
+
patient: claims[ClaimConsent.subject] || claims[ClaimConsent.patient]
|
|
51
|
+
? { reference: claims[ClaimConsent.subject] || claims[ClaimConsent.patient] }
|
|
52
|
+
: undefined,
|
|
53
|
+
dateTime: claims[ClaimConsent.date],
|
|
54
|
+
sourceReference: claims[ClaimConsent.sourceReference]
|
|
55
|
+
? { reference: claims[ClaimConsent.sourceReference] }
|
|
56
|
+
: undefined,
|
|
57
|
+
category: coding || claims[ClaimConsent.categoryText] ? [{
|
|
27
58
|
...(coding ? { coding } : {}),
|
|
28
59
|
...(claims[ClaimConsent.categoryText] ? { text: claims[ClaimConsent.categoryText] } : {}),
|
|
29
|
-
}]
|
|
30
|
-
|
|
31
|
-
|
|
60
|
+
}] : undefined,
|
|
61
|
+
provision: claims[ClaimConsent.decision]
|
|
62
|
+
|| claims[ClaimConsent.periodStart]
|
|
63
|
+
|| claims[ClaimConsent.periodEnd]
|
|
64
|
+
|| actionCoding
|
|
65
|
+
|| purposeCoding
|
|
66
|
+
|| provisionCodeCoding
|
|
67
|
+
? {
|
|
68
|
+
type: claims[ClaimConsent.decision],
|
|
69
|
+
period: claims[ClaimConsent.periodStart] || claims[ClaimConsent.periodEnd]
|
|
70
|
+
? { start: claims[ClaimConsent.periodStart], end: claims[ClaimConsent.periodEnd] }
|
|
71
|
+
: undefined,
|
|
72
|
+
action: actionCoding ? [{ coding: actionCoding }] : undefined,
|
|
73
|
+
purpose: purposeCoding,
|
|
74
|
+
code: provisionCodeCoding ? [{ coding: provisionCodeCoding }] : undefined,
|
|
75
|
+
}
|
|
76
|
+
: undefined,
|
|
77
|
+
};
|
|
32
78
|
}
|
|
@@ -17,8 +17,9 @@ export function deviceUseStatementFlatToFhirR4(claims) {
|
|
|
17
17
|
: {}),
|
|
18
18
|
},
|
|
19
19
|
status,
|
|
20
|
-
recordedOn: claims[DeviceUseStatementClaim.RecordedOn],
|
|
20
|
+
recordedOn: claims[DeviceUseStatementClaim.RecordedOn] || claims['DeviceUseStatement.recordedon'],
|
|
21
21
|
timingDateTime: claims[DeviceUseStatementClaim.TimingDateTime],
|
|
22
|
+
_timingDateTime: claims[DeviceUseStatementClaim.TimingAbsentReason] ? { extension: [{ url: 'http://hl7.org/fhir/StructureDefinition/data-absent-reason', valueCode: claims[DeviceUseStatementClaim.TimingAbsentReason] }] } : undefined,
|
|
22
23
|
};
|
|
23
24
|
}
|
|
24
25
|
export function deviceUseStatementFhirR4ToFlat(resource) {
|
|
@@ -30,5 +31,6 @@ export function deviceUseStatementFhirR4ToFlat(resource) {
|
|
|
30
31
|
[DeviceUseStatementClaim.Status]: resource.status,
|
|
31
32
|
[DeviceUseStatementClaim.RecordedOn]: resource.recordedOn,
|
|
32
33
|
[DeviceUseStatementClaim.TimingDateTime]: resource.timingDateTime,
|
|
34
|
+
[DeviceUseStatementClaim.TimingAbsentReason]: (resource._timingDateTime?.extension)?.[0]?.valueCode,
|
|
33
35
|
};
|
|
34
36
|
}
|
|
@@ -26,6 +26,8 @@ export function immunizationFlatToFhirR4(claims) {
|
|
|
26
26
|
location: claims[ImmunizationClaim.Location] ? { reference: claims[ImmunizationClaim.Location] } : undefined,
|
|
27
27
|
manufacturer: claims[ImmunizationClaim.Manufacturer] ? { reference: claims[ImmunizationClaim.Manufacturer] } : undefined,
|
|
28
28
|
lotNumber: claims[ImmunizationClaim.LotNumber],
|
|
29
|
+
route: claims[ImmunizationClaim.Route] ? { coding: codingFromValue(claims[ImmunizationClaim.Route])?.map((coding) => ({ ...coding, ...(claims[ImmunizationClaim.RouteDisplay] ? { display: claims[ImmunizationClaim.RouteDisplay] } : {}) })) } : undefined,
|
|
30
|
+
site: claims[ImmunizationClaim.Site] ? { coding: codingFromValue(claims[ImmunizationClaim.Site])?.map((coding) => ({ ...coding, ...(claims[ImmunizationClaim.SiteDisplay] ? { display: claims[ImmunizationClaim.SiteDisplay] } : {}) })) } : undefined,
|
|
29
31
|
performer: claims[ImmunizationClaim.Performer] ? claims[ImmunizationClaim.Performer].split(',').map((reference) => ({ actor: { reference: reference.trim() } })) : undefined,
|
|
30
32
|
reasonCode: claims[ImmunizationClaim.ReasonCode] ? [{ coding: codingFromValue(claims[ImmunizationClaim.ReasonCode]) }] : undefined,
|
|
31
33
|
reasonReference: claims[ImmunizationClaim.ReasonReference] ? [{ reference: claims[ImmunizationClaim.ReasonReference] }] : undefined,
|
|
@@ -34,7 +36,9 @@ export function immunizationFlatToFhirR4(claims) {
|
|
|
34
36
|
protocolApplied: (claims[ImmunizationClaim.Series] || claims[ImmunizationClaim.TargetDisease] || claims[ImmunizationClaim.DoseSequence]) ? [{
|
|
35
37
|
series: claims[ImmunizationClaim.Series],
|
|
36
38
|
targetDisease: claims[ImmunizationClaim.TargetDisease] ? [{ coding: codingFromValue(claims[ImmunizationClaim.TargetDisease]) }] : undefined,
|
|
37
|
-
|
|
39
|
+
...(claims[ImmunizationClaim.DoseSequence] && /^\d+$/.test(claims[ImmunizationClaim.DoseSequence])
|
|
40
|
+
? { doseNumberPositiveInt: Number(claims[ImmunizationClaim.DoseSequence]) }
|
|
41
|
+
: { doseNumberString: claims[ImmunizationClaim.DoseSequence] }),
|
|
38
42
|
}] : undefined,
|
|
39
43
|
reaction: claims[ImmunizationClaim.ReactionDate] ? [{ date: claims[ImmunizationClaim.ReactionDate] }] : undefined,
|
|
40
44
|
};
|
|
@@ -63,8 +67,14 @@ export function immunizationFhirR4ToFlat(resource) {
|
|
|
63
67
|
[ImmunizationClaim.VaccineCode]: codingToValue(resource.vaccineCode?.coding?.[0]),
|
|
64
68
|
[ImmunizationClaim.VaccineCodeText]: resource.vaccineCode?.text,
|
|
65
69
|
[ImmunizationClaim.VaccineCodeDisplay]: resource.vaccineCode?.coding?.[0]?.display,
|
|
66
|
-
[ImmunizationClaim.DoseSequence]: protocolApplied?.
|
|
70
|
+
[ImmunizationClaim.DoseSequence]: protocolApplied?.doseNumberPositiveInt === undefined
|
|
71
|
+
? protocolApplied?.doseNumberString
|
|
72
|
+
: String(protocolApplied.doseNumberPositiveInt),
|
|
67
73
|
[ImmunizationClaim.Subject]: referenceToValue(resource.patient),
|
|
68
74
|
[ImmunizationClaim.Note]: resource.note?.[0]?.text,
|
|
75
|
+
[ImmunizationClaim.Route]: codingToValue(resource.route?.coding?.[0]),
|
|
76
|
+
[ImmunizationClaim.RouteDisplay]: resource.route?.coding?.[0]?.display,
|
|
77
|
+
[ImmunizationClaim.Site]: codingToValue(resource.site?.coding?.[0]),
|
|
78
|
+
[ImmunizationClaim.SiteDisplay]: resource.site?.coding?.[0]?.display,
|
|
69
79
|
};
|
|
70
80
|
}
|
|
@@ -22,6 +22,13 @@ export function medicationStatementFlatToFhirR4(claims) {
|
|
|
22
22
|
expirationDate: medicationExpirationDate,
|
|
23
23
|
} : undefined,
|
|
24
24
|
} : undefined;
|
|
25
|
+
const dosageRoute = claims[MedicationStatementClaim.DosageRoute];
|
|
26
|
+
const dosageFrequency = claims[MedicationStatementClaim.TimingFrequency];
|
|
27
|
+
const dosagePeriod = claims[MedicationStatementClaim.TimingPeriod];
|
|
28
|
+
const dosagePeriodUnit = claims[MedicationStatementClaim.TimingPeriodUnit];
|
|
29
|
+
const doseValue = claims[MedicationStatementClaim.DoseQuantityValue];
|
|
30
|
+
const doseUnit = claims[MedicationStatementClaim.DoseQuantityUnit];
|
|
31
|
+
const hasDosage = claims[MedicationStatementClaim.DosageInstruction] || dosageRoute || dosageFrequency || dosagePeriod || doseValue;
|
|
25
32
|
return {
|
|
26
33
|
resourceType: 'MedicationStatement',
|
|
27
34
|
identifier: claims[MedicationStatementClaim.Identifier] ? [{ value: claims[MedicationStatementClaim.Identifier] }] : undefined,
|
|
@@ -39,7 +46,21 @@ export function medicationStatementFlatToFhirR4(claims) {
|
|
|
39
46
|
: (!hasContainedMedication && medicationText ? { text: medicationText } : undefined),
|
|
40
47
|
medicationReference: hasContainedMedication ? { reference: `#${containedMedicationId}` } : undefined,
|
|
41
48
|
contained: containedMedication ? [containedMedication] : undefined,
|
|
42
|
-
|
|
49
|
+
informationSource: claims[MedicationStatementClaim.Source] ? { reference: claims[MedicationStatementClaim.Source] } : undefined,
|
|
50
|
+
dosage: hasDosage ? [{
|
|
51
|
+
text: claims[MedicationStatementClaim.DosageInstruction],
|
|
52
|
+
route: dosageRoute ? { coding: codingFromValue(dosageRoute) } : undefined,
|
|
53
|
+
timing: dosageFrequency || dosagePeriod || dosagePeriodUnit ? { repeat: {
|
|
54
|
+
frequency: dosageFrequency ? Number(dosageFrequency) : undefined,
|
|
55
|
+
period: dosagePeriod ? Number(dosagePeriod) : undefined,
|
|
56
|
+
periodUnit: dosagePeriodUnit,
|
|
57
|
+
} } : undefined,
|
|
58
|
+
doseAndRate: doseValue ? [{ doseQuantity: {
|
|
59
|
+
value: Number(doseValue),
|
|
60
|
+
unit: doseUnit,
|
|
61
|
+
...(codingFromValue(doseUnit)?.[0] || {}),
|
|
62
|
+
} }] : undefined,
|
|
63
|
+
}] : undefined,
|
|
43
64
|
note: claims[MedicationStatementClaim.Note] ? [{ text: claims[MedicationStatementClaim.Note] }] : undefined,
|
|
44
65
|
};
|
|
45
66
|
}
|
|
@@ -55,6 +76,12 @@ export function medicationStatementFhirR4ToFlat(resource) {
|
|
|
55
76
|
const medicationConcept = resource.medicationCodeableConcept;
|
|
56
77
|
const medicationCode = codingToValue(medicationConcept?.coding?.[0]);
|
|
57
78
|
const medicationText = containedMedicationText || medicationConcept?.text || undefined;
|
|
79
|
+
const dosage = resource.dosage?.[0];
|
|
80
|
+
const repeat = dosage?.timing
|
|
81
|
+
? dosage.timing.repeat
|
|
82
|
+
: undefined;
|
|
83
|
+
const routeCoding = dosage?.route?.coding?.[0];
|
|
84
|
+
const doseQuantity = (dosage?.doseAndRate?.[0]?.doseQuantity);
|
|
58
85
|
return {
|
|
59
86
|
[MedicationStatementClaim.Identifier]: resource.identifier?.[0]?.value,
|
|
60
87
|
[MedicationStatementClaim.Subject]: resource.subject?.reference,
|
|
@@ -65,6 +92,13 @@ export function medicationStatementFhirR4ToFlat(resource) {
|
|
|
65
92
|
[MedicationStatementClaim.CodeDisplay]: medicationConcept?.coding?.[0]?.display,
|
|
66
93
|
[MedicationStatementClaim.Note]: resource.note?.[0]?.text,
|
|
67
94
|
[MedicationStatementClaim.DosageInstruction]: resource.dosage?.[0]?.text,
|
|
95
|
+
[MedicationStatementClaim.Source]: resource.informationSource?.reference,
|
|
96
|
+
[MedicationStatementClaim.DosageRoute]: codingToValue(routeCoding),
|
|
97
|
+
[MedicationStatementClaim.DoseQuantityValue]: doseQuantity?.value === undefined ? undefined : String(doseQuantity.value),
|
|
98
|
+
[MedicationStatementClaim.DoseQuantityUnit]: codingToValue(doseQuantity?.system || doseQuantity?.code ? { system: doseQuantity?.system, code: doseQuantity?.code } : undefined) || doseQuantity?.unit,
|
|
99
|
+
[MedicationStatementClaim.TimingFrequency]: repeat?.frequency === undefined ? undefined : String(repeat.frequency),
|
|
100
|
+
[MedicationStatementClaim.TimingPeriod]: repeat?.period === undefined ? undefined : String(repeat.period),
|
|
101
|
+
[MedicationStatementClaim.TimingPeriodUnit]: repeat?.periodUnit,
|
|
68
102
|
[MedicationStatementClaim.MedicationIdentifier]: containedMedicationIdentifier,
|
|
69
103
|
[MedicationStatementClaim.MedicationSerialNumber]: batch?.lotNumber,
|
|
70
104
|
[MedicationStatementClaim.MedicationExpirationDate]: batch?.expirationDate,
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
// File: src/utils/convert-observation.ts
|
|
3
3
|
import { ObservationClaim } from '../models/interoperable-claims/observation-claims.js';
|
|
4
4
|
import { codingFromValue, codingListToCsv, codingToValue, referenceListToCsv, referenceToValue } from './convert-shared.js';
|
|
5
|
+
/** Legacy camelCase claim accepted only while reading previously persisted rows. */
|
|
6
|
+
const LEGACY_OBSERVATION_EFFECTIVE_DATE_TIME = 'Observation.effectiveDateTime';
|
|
5
7
|
/**
|
|
6
8
|
* Converts flat editable Observation claims into a FHIR R4 Observation.
|
|
7
9
|
*
|
|
@@ -33,6 +35,11 @@ export function observationFromFlatToFhirR4(claims) {
|
|
|
33
35
|
? { display: claims[ObservationClaim.ValueConceptDisplay] }
|
|
34
36
|
: {}),
|
|
35
37
|
}));
|
|
38
|
+
const componentCodes = splitClaimList(claims[ObservationClaim.ComponentCode]);
|
|
39
|
+
const componentDisplays = splitClaimList(claims[ObservationClaim.ComponentCodeDisplay]);
|
|
40
|
+
const componentNumbers = splitClaimList(claims[ObservationClaim.ComponentValueQuantityNumber]);
|
|
41
|
+
const componentUnits = splitClaimList(claims[ObservationClaim.ComponentValueQuantityUnit]);
|
|
42
|
+
const referenceUnit = claims[ObservationClaim.ReferenceRangeUnit];
|
|
36
43
|
return {
|
|
37
44
|
resourceType: 'Observation',
|
|
38
45
|
identifier: claims[ObservationClaim.Identifier] ? [{ value: claims[ObservationClaim.Identifier] }] : undefined,
|
|
@@ -45,8 +52,12 @@ export function observationFromFlatToFhirR4(claims) {
|
|
|
45
52
|
}
|
|
46
53
|
: undefined,
|
|
47
54
|
subject: subject ? { reference: subject } : undefined,
|
|
48
|
-
effectiveDateTime: claims[ObservationClaim.EffectiveDateTime]
|
|
49
|
-
|
|
55
|
+
effectiveDateTime: claims[ObservationClaim.EffectiveDateTime]
|
|
56
|
+
?? claims[LEGACY_OBSERVATION_EFFECTIVE_DATE_TIME]
|
|
57
|
+
?? claims[ObservationClaim.Date],
|
|
58
|
+
issued: claims[ObservationClaim.EffectiveDateTime] || claims[LEGACY_OBSERVATION_EFFECTIVE_DATE_TIME]
|
|
59
|
+
? undefined
|
|
60
|
+
: claims[ObservationClaim.Date],
|
|
50
61
|
performer: claims[ObservationClaim.Performer] ? claims[ObservationClaim.Performer].split(',').map((reference) => ({ reference: reference.trim() })) : undefined,
|
|
51
62
|
valueCodeableConcept: valueConceptToken
|
|
52
63
|
? {
|
|
@@ -81,6 +92,17 @@ export function observationFromFlatToFhirR4(claims) {
|
|
|
81
92
|
hasMember: claims[ObservationClaim.HasMember] ? claims[ObservationClaim.HasMember].split(',').map((reference) => ({ reference: reference.trim() })) : undefined,
|
|
82
93
|
method: claims[ObservationClaim.Method] ? { coding: codingFromValue(claims[ObservationClaim.Method]) } : undefined,
|
|
83
94
|
specimen: claims[ObservationClaim.Specimen] ? { reference: claims[ObservationClaim.Specimen] } : undefined,
|
|
95
|
+
referenceRange: claims[ObservationClaim.ReferenceRangeLowNumber] || claims[ObservationClaim.ReferenceRangeHighNumber] || claims[ObservationClaim.ReferenceRangeText]
|
|
96
|
+
? [{
|
|
97
|
+
low: claims[ObservationClaim.ReferenceRangeLowNumber] ? quantityFromClaims(claims[ObservationClaim.ReferenceRangeLowNumber], referenceUnit) : undefined,
|
|
98
|
+
high: claims[ObservationClaim.ReferenceRangeHighNumber] ? quantityFromClaims(claims[ObservationClaim.ReferenceRangeHighNumber], referenceUnit) : undefined,
|
|
99
|
+
text: claims[ObservationClaim.ReferenceRangeText],
|
|
100
|
+
}]
|
|
101
|
+
: undefined,
|
|
102
|
+
component: componentCodes.map((code, index) => ({
|
|
103
|
+
code: { coding: codingFromValue(code)?.map((coding) => ({ ...coding, ...(componentDisplays[index] ? { display: componentDisplays[index] } : {}) })) },
|
|
104
|
+
valueQuantity: componentNumbers[index] ? quantityFromClaims(componentNumbers[index], componentUnits[index]) : undefined,
|
|
105
|
+
})),
|
|
84
106
|
};
|
|
85
107
|
}
|
|
86
108
|
/**
|
|
@@ -94,6 +116,10 @@ export function observationToFlatFhirR4(resource) {
|
|
|
94
116
|
const codeCoding = resource.code?.coding?.[0];
|
|
95
117
|
const valueConceptCoding = valueCodeableConcept?.coding?.[0];
|
|
96
118
|
const valueQuantity = resource.valueQuantity;
|
|
119
|
+
const referenceRange = resource.referenceRange?.[0];
|
|
120
|
+
const referenceLow = referenceRange?.low;
|
|
121
|
+
const referenceHigh = referenceRange?.high;
|
|
122
|
+
const components = resource.component || [];
|
|
97
123
|
return {
|
|
98
124
|
[ObservationClaim.BasedOn]: referenceListToCsv(resource.basedOn),
|
|
99
125
|
[ObservationClaim.Category]: codingListToCsv(resource.category?.flatMap((item) => item.coding || [])),
|
|
@@ -128,8 +154,23 @@ export function observationToFlatFhirR4(resource) {
|
|
|
128
154
|
[ObservationClaim.ValueString]: resource.valueString,
|
|
129
155
|
[ObservationClaim.Note]: resource.note?.[0]?.text,
|
|
130
156
|
[ObservationClaim.EffectiveDateTime]: resource.effectiveDateTime,
|
|
157
|
+
[ObservationClaim.ReferenceRangeLowNumber]: scalarString(referenceLow?.value),
|
|
158
|
+
[ObservationClaim.ReferenceRangeHighNumber]: scalarString(referenceHigh?.value),
|
|
159
|
+
[ObservationClaim.ReferenceRangeUnit]: codingToValue(referenceLow?.system || referenceLow?.code ? { system: referenceLow?.system, code: referenceLow?.code } : referenceHigh?.system || referenceHigh?.code ? { system: referenceHigh?.system, code: referenceHigh?.code } : undefined) || referenceLow?.unit || referenceHigh?.unit,
|
|
160
|
+
[ObservationClaim.ReferenceRangeText]: referenceRange?.text,
|
|
161
|
+
[ObservationClaim.ComponentCode]: joinClaimList(components.map((component) => codingToValue(component.code?.coding?.[0]))),
|
|
162
|
+
[ObservationClaim.ComponentCodeDisplay]: joinClaimList(components.map((component) => component.code?.coding?.[0]?.display)),
|
|
163
|
+
[ObservationClaim.ComponentValueQuantityNumber]: joinClaimList(components.map((component) => scalarString(component.valueQuantity?.value))),
|
|
164
|
+
[ObservationClaim.ComponentValueQuantityUnit]: joinClaimList(components.map((component) => { const quantity = component.valueQuantity; return codingToValue(quantity?.system || quantity?.code ? { system: quantity?.system, code: quantity?.code } : undefined) || quantity?.unit; })),
|
|
131
165
|
};
|
|
132
166
|
}
|
|
167
|
+
function splitClaimList(value) { return value ? JSON.parse(value) : []; }
|
|
168
|
+
function joinClaimList(values) { return values.some((value) => value !== undefined) ? JSON.stringify(values.map((value) => value || '')) : undefined; }
|
|
169
|
+
function scalarString(value) { return value === undefined || value === null ? undefined : String(value); }
|
|
170
|
+
function quantityFromClaims(number, unit) {
|
|
171
|
+
const coding = codingFromValue(unit)?.[0];
|
|
172
|
+
return { value: Number(number), ...(unit ? { unit, ...(coding?.system ? { system: coding.system } : {}), ...(coding?.code ? { code: coding.code } : {}) } : {}) };
|
|
173
|
+
}
|
|
133
174
|
/** @deprecated Prefer `observationFromFlatToFhirR4`. */
|
|
134
175
|
export const observationFlatToFhirR4 = observationFromFlatToFhirR4;
|
|
135
176
|
/** @deprecated Prefer `observationToFlatFhirR4`. */
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { FhirResource, FlatClaims } from './convert-shared';
|
|
2
|
-
export declare function practitionerRoleFhirR4ToFlat(resource: FhirResource,
|
|
2
|
+
export declare function practitionerRoleFhirR4ToFlat(resource: FhirResource, _context?: string): FlatClaims;
|
|
3
3
|
export declare function practitionerRoleFlatToFhirR4(claims: FlatClaims): FhirResource;
|
|
@@ -1,34 +1,62 @@
|
|
|
1
1
|
// Copyright 2026 Conéctate Soluciones y Aplicaciones SL under the Apache License, Version 2.0.
|
|
2
2
|
import { PractitionerRoleClaim } from '../models/interoperable-claims/practitioner-role-claims.js';
|
|
3
|
-
import { codingFromValue, codingToValue,
|
|
4
|
-
export function practitionerRoleFhirR4ToFlat(resource,
|
|
3
|
+
import { codingFromValue, codingToValue, referenceListToCsv, referenceToValue, } from './convert-shared.js';
|
|
4
|
+
export function practitionerRoleFhirR4ToFlat(resource, _context = 'org.hl7.fhir.api') {
|
|
5
5
|
const concept = resource.code?.[0];
|
|
6
6
|
return {
|
|
7
|
-
|
|
7
|
+
[PractitionerRoleClaim.Identifier]: resource.identifier?.[0]?.value,
|
|
8
|
+
[PractitionerRoleClaim.Active]: resource.active === undefined ? undefined : String(resource.active),
|
|
9
|
+
[PractitionerRoleClaim.Practitioner]: referenceToValue(resource.practitioner),
|
|
10
|
+
[PractitionerRoleClaim.Organization]: referenceToValue(resource.organization),
|
|
11
|
+
[PractitionerRoleClaim.Location]: referenceListToCsv(resource.location),
|
|
12
|
+
[PractitionerRoleClaim.Service]: referenceListToCsv(resource.healthcareService),
|
|
13
|
+
[PractitionerRoleClaim.Specialty]: codingToValue(resource.specialty?.[0]?.coding?.[0]),
|
|
14
|
+
[PractitionerRoleClaim.PeriodStart]: resource.period?.start,
|
|
15
|
+
[PractitionerRoleClaim.PeriodEnd]: resource.period?.end,
|
|
8
16
|
[PractitionerRoleClaim.Code]: codingToValue(concept?.coding?.[0]),
|
|
9
17
|
[PractitionerRoleClaim.CodeText]: concept?.text,
|
|
10
18
|
[PractitionerRoleClaim.CodeDisplay]: concept?.coding?.[0]?.display,
|
|
11
19
|
};
|
|
12
20
|
}
|
|
13
21
|
export function practitionerRoleFlatToFhirR4(claims) {
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
delete structuralClaims[PractitionerRoleClaim.CodeText];
|
|
17
|
-
delete structuralClaims[PractitionerRoleClaim.CodeDisplay];
|
|
18
|
-
const resource = flatClaimsToFhirResource(structuralClaims);
|
|
22
|
+
const location = claims[PractitionerRoleClaim.Location]?.split(',').map((reference) => ({ reference: reference.trim() }));
|
|
23
|
+
const healthcareService = claims[PractitionerRoleClaim.Service]?.split(',').map((reference) => ({ reference: reference.trim() }));
|
|
19
24
|
const coding = codingFromValue(claims[PractitionerRoleClaim.Code])?.map((item) => ({
|
|
20
25
|
...item,
|
|
21
26
|
...(claims[PractitionerRoleClaim.CodeDisplay]
|
|
22
27
|
? { display: claims[PractitionerRoleClaim.CodeDisplay] }
|
|
23
28
|
: {}),
|
|
24
29
|
}));
|
|
25
|
-
|
|
26
|
-
|
|
30
|
+
return {
|
|
31
|
+
resourceType: 'PractitionerRole',
|
|
32
|
+
identifier: claims[PractitionerRoleClaim.Identifier]
|
|
33
|
+
? [{ value: claims[PractitionerRoleClaim.Identifier] }]
|
|
34
|
+
: undefined,
|
|
35
|
+
active: claims[PractitionerRoleClaim.Active] === undefined
|
|
36
|
+
? undefined
|
|
37
|
+
: claims[PractitionerRoleClaim.Active] === 'true',
|
|
38
|
+
practitioner: claims[PractitionerRoleClaim.Practitioner]
|
|
39
|
+
? { reference: claims[PractitionerRoleClaim.Practitioner] }
|
|
40
|
+
: undefined,
|
|
41
|
+
organization: claims[PractitionerRoleClaim.Organization]
|
|
42
|
+
? { reference: claims[PractitionerRoleClaim.Organization] }
|
|
43
|
+
: undefined,
|
|
44
|
+
location,
|
|
45
|
+
healthcareService,
|
|
46
|
+
specialty: claims[PractitionerRoleClaim.Specialty]
|
|
47
|
+
? [{ coding: codingFromValue(claims[PractitionerRoleClaim.Specialty]) }]
|
|
48
|
+
: undefined,
|
|
49
|
+
period: claims[PractitionerRoleClaim.PeriodStart] || claims[PractitionerRoleClaim.PeriodEnd]
|
|
50
|
+
? {
|
|
51
|
+
start: claims[PractitionerRoleClaim.PeriodStart],
|
|
52
|
+
end: claims[PractitionerRoleClaim.PeriodEnd],
|
|
53
|
+
}
|
|
54
|
+
: undefined,
|
|
55
|
+
code: coding || claims[PractitionerRoleClaim.CodeText] ? [{
|
|
27
56
|
...(coding ? { coding } : {}),
|
|
28
57
|
...(claims[PractitionerRoleClaim.CodeText]
|
|
29
58
|
? { text: claims[PractitionerRoleClaim.CodeText] }
|
|
30
59
|
: {}),
|
|
31
|
-
}]
|
|
32
|
-
}
|
|
33
|
-
return resource;
|
|
60
|
+
}] : undefined,
|
|
61
|
+
};
|
|
34
62
|
}
|
|
@@ -139,7 +139,7 @@ function assignInflatedPath(target, path, value, typeHint) {
|
|
|
139
139
|
/**
|
|
140
140
|
* Generic structural fallback for unsupported resources.
|
|
141
141
|
*/
|
|
142
|
-
export function fhirResourceToFlatClaims(resource, context = 'org.hl7.fhir.
|
|
142
|
+
export function fhirResourceToFlatClaims(resource, context = 'org.hl7.fhir.api') {
|
|
143
143
|
if (!resource?.resourceType) {
|
|
144
144
|
throw new Error('FHIR resource must define resourceType.');
|
|
145
145
|
}
|
|
@@ -34,6 +34,6 @@ export declare const EXAMPLE_APPOINTMENT_CLAIMS: {
|
|
|
34
34
|
readonly "Appointment.description": "Medication follow-up visit.";
|
|
35
35
|
readonly "Appointment.start": "2026-07-01T09:00:00Z";
|
|
36
36
|
readonly "Appointment.end": "2026-07-01T09:30:00Z";
|
|
37
|
-
readonly "Appointment.
|
|
38
|
-
readonly "Appointment.
|
|
37
|
+
readonly "Appointment.actor": `${string},${string}`;
|
|
38
|
+
readonly "Appointment.part-status": AppointmentParticipantStatus.Accepted;
|
|
39
39
|
};
|
|
@@ -28,7 +28,7 @@ export declare const EXAMPLE_INDIVIDUAL_MEMBER_IDENTITY: Readonly<{
|
|
|
28
28
|
export declare const EXAMPLE_RELATED_PERSON_DISABLE_INPUT: {
|
|
29
29
|
readonly memberClaims: {
|
|
30
30
|
readonly '@context': "org.hl7.fhir.api";
|
|
31
|
-
readonly "RelatedPerson.identifier
|
|
31
|
+
readonly "RelatedPerson.identifier": "rel-001";
|
|
32
32
|
readonly "RelatedPerson.patient": string;
|
|
33
33
|
readonly "RelatedPerson.telecom": "mailto:parent.guardian@example.org";
|
|
34
34
|
readonly "RelatedPerson.relationship": "v3-RoleCode|RESPRSN";
|
|
@@ -64,7 +64,7 @@ export declare const EXAMPLE_RELATED_PERSON_DISABLE_BUNDLE_ENTRY: {
|
|
|
64
64
|
readonly meta: {
|
|
65
65
|
readonly claims: {
|
|
66
66
|
readonly '@context': "org.hl7.fhir.api";
|
|
67
|
-
readonly "RelatedPerson.identifier
|
|
67
|
+
readonly "RelatedPerson.identifier": "rel-001";
|
|
68
68
|
readonly "RelatedPerson.patient": string;
|
|
69
69
|
readonly "RelatedPerson.telecom": "mailto:parent.guardian@example.org";
|
|
70
70
|
readonly "RelatedPerson.relationship": "v3-RoleCode|RESPRSN";
|
|
@@ -98,7 +98,7 @@ export declare const EXAMPLE_RELATED_PERSON_DISABLE_BUNDLE_PAYLOAD: {
|
|
|
98
98
|
readonly meta: {
|
|
99
99
|
readonly claims: {
|
|
100
100
|
readonly '@context': "org.hl7.fhir.api";
|
|
101
|
-
readonly "RelatedPerson.identifier
|
|
101
|
+
readonly "RelatedPerson.identifier": "rel-001";
|
|
102
102
|
readonly "RelatedPerson.patient": string;
|
|
103
103
|
readonly "RelatedPerson.telecom": "mailto:parent.guardian@example.org";
|
|
104
104
|
readonly "RelatedPerson.relationship": "v3-RoleCode|RESPRSN";
|
|
@@ -139,7 +139,7 @@ export declare const EXAMPLE_RELATED_PERSON_PURGE_BUNDLE_ENTRY: {
|
|
|
139
139
|
readonly meta: {
|
|
140
140
|
readonly claims: {
|
|
141
141
|
readonly '@context': "org.hl7.fhir.api";
|
|
142
|
-
readonly "RelatedPerson.identifier
|
|
142
|
+
readonly "RelatedPerson.identifier": "rel-001";
|
|
143
143
|
readonly "RelatedPerson.patient": string;
|
|
144
144
|
readonly "RelatedPerson.telecom": "mailto:parent.guardian@example.org";
|
|
145
145
|
readonly "RelatedPerson.relationship": "v3-RoleCode|RESPRSN";
|
|
@@ -171,7 +171,7 @@ export declare const EXAMPLE_RELATED_PERSON_PURGE_BUNDLE_PAYLOAD: {
|
|
|
171
171
|
readonly meta: {
|
|
172
172
|
readonly claims: {
|
|
173
173
|
readonly '@context': "org.hl7.fhir.api";
|
|
174
|
-
readonly "RelatedPerson.identifier
|
|
174
|
+
readonly "RelatedPerson.identifier": "rel-001";
|
|
175
175
|
readonly "RelatedPerson.patient": string;
|
|
176
176
|
readonly "RelatedPerson.telecom": "mailto:parent.guardian@example.org";
|
|
177
177
|
readonly "RelatedPerson.relationship": "v3-RoleCode|RESPRSN";
|
|
@@ -292,7 +292,7 @@ export declare const EXAMPLE_RELATED_PERSON_LIST_RECORD_ACTIVE: {
|
|
|
292
292
|
readonly meta: {
|
|
293
293
|
readonly claims: {
|
|
294
294
|
readonly '@context': "org.hl7.fhir.api";
|
|
295
|
-
readonly "RelatedPerson.identifier
|
|
295
|
+
readonly "RelatedPerson.identifier": "rel-001";
|
|
296
296
|
readonly "RelatedPerson.patient": string;
|
|
297
297
|
readonly "RelatedPerson.telecom": "mailto:parent.guardian@example.org";
|
|
298
298
|
readonly "RelatedPerson.relationship": "v3-RoleCode|RESPRSN";
|
|
@@ -313,7 +313,7 @@ export declare const EXAMPLE_RELATED_PERSON_LIST_RECORD_INACTIVE: {
|
|
|
313
313
|
readonly meta: {
|
|
314
314
|
readonly claims: {
|
|
315
315
|
readonly '@context': "org.hl7.fhir.api";
|
|
316
|
-
readonly "RelatedPerson.identifier
|
|
316
|
+
readonly "RelatedPerson.identifier": "urn:uuid:related-person-002";
|
|
317
317
|
readonly "RelatedPerson.patient": string;
|
|
318
318
|
readonly "RelatedPerson.telecom": "mailto:caregiver.two@example.org";
|
|
319
319
|
readonly "RelatedPerson.relationship": "http://terminology.hl7.org/CodeSystem/v3-RoleCode|NMTH";
|
|
@@ -336,7 +336,7 @@ export declare const EXAMPLE_RELATED_PERSON_LIST_RESPONSE_BODY: {
|
|
|
336
336
|
readonly meta: {
|
|
337
337
|
readonly claims: {
|
|
338
338
|
readonly '@context': "org.hl7.fhir.api";
|
|
339
|
-
readonly "RelatedPerson.identifier
|
|
339
|
+
readonly "RelatedPerson.identifier": "rel-001";
|
|
340
340
|
readonly "RelatedPerson.patient": string;
|
|
341
341
|
readonly "RelatedPerson.telecom": "mailto:parent.guardian@example.org";
|
|
342
342
|
readonly "RelatedPerson.relationship": "v3-RoleCode|RESPRSN";
|
|
@@ -356,7 +356,7 @@ export declare const EXAMPLE_RELATED_PERSON_LIST_RESPONSE_BODY: {
|
|
|
356
356
|
readonly meta: {
|
|
357
357
|
readonly claims: {
|
|
358
358
|
readonly '@context': "org.hl7.fhir.api";
|
|
359
|
-
readonly "RelatedPerson.identifier
|
|
359
|
+
readonly "RelatedPerson.identifier": "urn:uuid:related-person-002";
|
|
360
360
|
readonly "RelatedPerson.patient": string;
|
|
361
361
|
readonly "RelatedPerson.telecom": "mailto:caregiver.two@example.org";
|
|
362
362
|
readonly "RelatedPerson.relationship": "http://terminology.hl7.org/CodeSystem/v3-RoleCode|NMTH";
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
export declare enum ClaimConsent {
|
|
2
2
|
'decision' = "Consent.decision",
|
|
3
|
+
'status' = "Consent.status",
|
|
3
4
|
'action' = "Consent.action",
|
|
4
5
|
'category' = "Consent.category",
|
|
5
6
|
'categoryText' = "Consent.category-text",
|
|
6
7
|
'categoryDisplay' = "Consent.category-display",
|
|
7
|
-
'resourceType' = "Consent.
|
|
8
|
+
'resourceType' = "Consent.resource-type",
|
|
8
9
|
'subject' = "Consent.subject",
|
|
10
|
+
'patient' = "Consent.patient",
|
|
9
11
|
'actorIdentifier' = "Consent.actor-identifier",
|
|
10
12
|
'actorRole' = "Consent.actor-role",
|
|
11
13
|
'date' = "Consent.date",
|
|
@@ -18,6 +20,11 @@ export declare enum ClaimConsent {
|
|
|
18
20
|
'identifier' = "Consent.identifier",
|
|
19
21
|
'eventBasedOn' = "Consent.event-basedon",
|
|
20
22
|
'sourceReference' = "Consent.source-reference",
|
|
23
|
+
'scope' = "Consent.scope",
|
|
24
|
+
'scopeDisplay' = "Consent.scope-display",
|
|
25
|
+
'policyRule' = "Consent.policy-rule",
|
|
26
|
+
'provisionCode' = "Consent.provision-code",
|
|
27
|
+
'provisionCodeDisplay' = "Consent.provision-code-display",
|
|
21
28
|
'containedReferenceList' = "Consent.contained-reference-list",
|
|
22
29
|
/**
|
|
23
30
|
* @deprecated Use `containedReferenceList`.
|