fhir-data-utils-ts 0.4.0 → 0.6.1
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/.codex/skills/govern-fhir-data-utilities/SKILL.md +35 -0
- package/CHANGELOG.md +61 -0
- package/README.md +35 -0
- package/dist/appointment-communication-test-data.d.ts +63 -0
- package/dist/appointment-communication-test-data.js +77 -0
- package/dist/builders/department-service-graph.d.ts +32 -0
- package/dist/builders/department-service-graph.js +102 -0
- package/dist/builders/device-compliance-graph.d.ts +51 -0
- package/dist/builders/device-compliance-graph.js +115 -0
- package/dist/builders/index.d.ts +3 -0
- package/dist/builders/index.js +3 -0
- package/dist/builders/service-schedule-graph.d.ts +58 -0
- package/dist/builders/service-schedule-graph.js +149 -0
- package/dist/care-emergency-alert.d.ts +18 -0
- package/dist/care-emergency-alert.js +29 -1
- package/dist/claims/appointment-claims.d.ts +6 -0
- package/dist/claims/appointment-claims.js +6 -0
- package/dist/claims/device-metric-claims.d.ts +16 -0
- package/dist/claims/device-metric-claims.js +25 -0
- package/dist/claims/encounter-claims.d.ts +15 -0
- package/dist/claims/encounter-claims.js +19 -0
- package/dist/claims/encounter-history-claims.d.ts +20 -0
- package/dist/claims/encounter-history-claims.js +34 -0
- package/dist/claims/healthcare-service-claims.d.ts +32 -0
- package/dist/claims/healthcare-service-claims.js +54 -0
- package/dist/claims/index.d.ts +5 -0
- package/dist/claims/index.js +5 -0
- package/dist/claims/location-claims.d.ts +3 -0
- package/dist/claims/location-claims.js +6 -0
- package/dist/claims/organization-claims.d.ts +3 -1
- package/dist/claims/organization-claims.js +4 -1
- package/dist/claims/procedure-claims.d.ts +2 -0
- package/dist/claims/procedure-claims.js +4 -0
- package/dist/claims/regulated-authorization-claims.d.ts +17 -0
- package/dist/claims/regulated-authorization-claims.js +27 -0
- package/dist/claims/schedule-slot-claims.d.ts +45 -0
- package/dist/claims/schedule-slot-claims.js +70 -0
- package/dist/constants/fhir-resource-types.d.ts +10 -0
- package/dist/constants/fhir-resource-types.js +4 -0
- package/dist/converters/convert-appointment-communication.d.ts +14 -0
- package/dist/converters/convert-appointment-communication.js +97 -0
- package/dist/converters/convert-appointment.js +16 -7
- package/dist/converters/convert-device-metric.d.ts +3 -0
- package/dist/converters/convert-device-metric.js +37 -0
- package/dist/converters/convert-document-reference.js +5 -0
- package/dist/converters/convert-encounter-history.d.ts +5 -0
- package/dist/converters/convert-encounter-history.js +83 -0
- package/dist/converters/convert-encounter.d.ts +4 -0
- package/dist/converters/convert-encounter.js +73 -1
- package/dist/converters/convert-healthcare-service.d.ts +7 -0
- package/dist/converters/convert-healthcare-service.js +60 -0
- package/dist/converters/convert-location.d.ts +4 -0
- package/dist/converters/convert-location.js +41 -3
- package/dist/converters/convert-organization.d.ts +2 -0
- package/dist/converters/convert-organization.js +20 -3
- package/dist/converters/convert-procedure.d.ts +2 -0
- package/dist/converters/convert-procedure.js +21 -0
- package/dist/converters/convert-regulated-authorization.d.ts +3 -0
- package/dist/converters/convert-regulated-authorization.js +34 -0
- package/dist/converters/convert-schedule-slot.d.ts +9 -0
- package/dist/converters/convert-schedule-slot.js +96 -0
- package/dist/converters/convert-shared.d.ts +10 -0
- package/dist/converters/convert-shared.js +19 -0
- package/dist/converters/index.d.ts +7 -0
- package/dist/converters/index.js +7 -0
- package/dist/converters/materialize-claims-first-resource.d.ts +16 -0
- package/dist/converters/materialize-claims-first-resource.js +65 -0
- package/dist/encounter-transfer-test-data.d.ts +40 -0
- package/dist/encounter-transfer-test-data.js +37 -0
- package/dist/fhir-bundle.d.ts +21 -0
- package/dist/fhir-bundle.js +74 -0
- package/dist/group-r5.d.ts +12 -0
- package/dist/group-r5.js +20 -0
- package/dist/healthcare-service-specialty-map.d.ts +32 -0
- package/dist/healthcare-service-specialty-map.js +151 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/docs/CLINICAL_TYPED_ACCESSOR_BOUNDARY.md +44 -0
- package/docs/COMMUNICATION_BUNDLE_CONTRACT.md +61 -0
- package/docs/HEALTHCARE_SERVICE_DEPARTMENT_CATALOG.md +190 -0
- package/docs/UHC_FHIR_UTILS_MIGRATION.md +20 -1
- package/package.json +5 -1
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
export type ScheduleSlotGraphResource = Readonly<{
|
|
2
|
+
resourceType: 'Schedule' | 'Slot';
|
|
3
|
+
id: string;
|
|
4
|
+
meta: Readonly<{
|
|
5
|
+
claims: Readonly<Record<string, string | readonly string[]>>;
|
|
6
|
+
}>;
|
|
7
|
+
}>;
|
|
8
|
+
export type ServiceScheduleFlatGraphInput = Readonly<{
|
|
9
|
+
scheduleId: string;
|
|
10
|
+
scheduleIdentifier: string;
|
|
11
|
+
name: string;
|
|
12
|
+
healthcareServiceReference: string;
|
|
13
|
+
resourceActorReferences: readonly string[];
|
|
14
|
+
serviceType: string;
|
|
15
|
+
planningHorizon: Readonly<{
|
|
16
|
+
start: string;
|
|
17
|
+
end: string;
|
|
18
|
+
}>;
|
|
19
|
+
slots: readonly Readonly<{
|
|
20
|
+
slotId: string;
|
|
21
|
+
slotIdentifier: string;
|
|
22
|
+
status: 'busy' | 'free' | 'busy-unavailable' | 'busy-tentative' | 'entered-in-error';
|
|
23
|
+
start: string;
|
|
24
|
+
end: string;
|
|
25
|
+
overbooked?: boolean;
|
|
26
|
+
comment?: string;
|
|
27
|
+
}>[];
|
|
28
|
+
}>;
|
|
29
|
+
export type SchedulableLocationFlatResource = Readonly<{
|
|
30
|
+
resourceType: 'Location';
|
|
31
|
+
id: string;
|
|
32
|
+
meta: Readonly<{
|
|
33
|
+
claims: Readonly<Record<string, string>>;
|
|
34
|
+
}>;
|
|
35
|
+
}>;
|
|
36
|
+
/** Builds one claims-first Schedule and its independent Slot resources. */
|
|
37
|
+
export declare function buildServiceScheduleFlatGraph(input: ServiceScheduleFlatGraphInput): readonly ScheduleSlotGraphResource[];
|
|
38
|
+
/**
|
|
39
|
+
* Builds one reservable child place such as a room, booth, chair or bed.
|
|
40
|
+
*
|
|
41
|
+
* R4 projects `Location.physicalType`; R5 projects the same governed coding as
|
|
42
|
+
* `Location.form`. Equipment such as an apheresis machine remains a Device and
|
|
43
|
+
* is added independently to the Schedule actor list.
|
|
44
|
+
*/
|
|
45
|
+
export declare function buildSchedulableLocationFlatResource(input: Readonly<{
|
|
46
|
+
locationId: string;
|
|
47
|
+
locationIdentifier: string;
|
|
48
|
+
name: string;
|
|
49
|
+
status?: 'active' | 'suspended' | 'inactive';
|
|
50
|
+
form: string;
|
|
51
|
+
managingOrganizationReference: string;
|
|
52
|
+
parentLocationReference: string;
|
|
53
|
+
position?: Readonly<{
|
|
54
|
+
longitude: number;
|
|
55
|
+
latitude: number;
|
|
56
|
+
altitude?: number;
|
|
57
|
+
}>;
|
|
58
|
+
}>): SchedulableLocationFlatResource;
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { ScheduleClaim, SlotClaim } from '../claims/schedule-slot-claims.js';
|
|
2
|
+
import { LocationClaim } from '../claims/location-claims.js';
|
|
3
|
+
const required = (value, error) => {
|
|
4
|
+
const normalized = String(value || '').trim();
|
|
5
|
+
if (!normalized)
|
|
6
|
+
throw new TypeError(error);
|
|
7
|
+
return normalized;
|
|
8
|
+
};
|
|
9
|
+
const id = (value) => {
|
|
10
|
+
const normalized = required(value, 'schedule_slot_id_required');
|
|
11
|
+
if (!/^[A-Za-z0-9.-]{1,64}$/.test(normalized))
|
|
12
|
+
throw new TypeError('schedule_slot_id_invalid');
|
|
13
|
+
return normalized;
|
|
14
|
+
};
|
|
15
|
+
const reference = (value, resourceType, error) => {
|
|
16
|
+
const normalized = required(value, error);
|
|
17
|
+
if (!normalized.startsWith(`${resourceType}/`) || normalized.length === resourceType.length + 1)
|
|
18
|
+
throw new TypeError(error);
|
|
19
|
+
return normalized;
|
|
20
|
+
};
|
|
21
|
+
const scheduleActorReference = (value) => {
|
|
22
|
+
const normalized = required(value, 'schedule_actor_reference_invalid');
|
|
23
|
+
if (!/^(?:Patient|Practitioner|PractitionerRole|CareTeam|RelatedPerson|Device|Location)\/[A-Za-z0-9.-]+$/.test(normalized)) {
|
|
24
|
+
throw new TypeError('schedule_actor_reference_invalid');
|
|
25
|
+
}
|
|
26
|
+
return normalized;
|
|
27
|
+
};
|
|
28
|
+
const token = (value) => {
|
|
29
|
+
const normalized = required(value, 'schedule_service_type_invalid');
|
|
30
|
+
const separator = normalized.lastIndexOf('|');
|
|
31
|
+
if (separator < 1 || separator === normalized.length - 1)
|
|
32
|
+
throw new TypeError('schedule_service_type_invalid');
|
|
33
|
+
return normalized;
|
|
34
|
+
};
|
|
35
|
+
const instant = (value, error) => {
|
|
36
|
+
const normalized = required(value, error);
|
|
37
|
+
if (!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/.test(normalized))
|
|
38
|
+
throw new TypeError(error);
|
|
39
|
+
return normalized;
|
|
40
|
+
};
|
|
41
|
+
const periodBoundary = (value, end) => {
|
|
42
|
+
const normalized = required(value, 'schedule_planning_horizon_invalid');
|
|
43
|
+
const timestamp = Date.parse(/^\d{4}-\d{2}-\d{2}$/.test(normalized)
|
|
44
|
+
? `${normalized}T${end ? '23:59:59.999' : '00:00:00.000'}Z`
|
|
45
|
+
: normalized);
|
|
46
|
+
if (!Number.isFinite(timestamp))
|
|
47
|
+
throw new TypeError('schedule_planning_horizon_invalid');
|
|
48
|
+
return timestamp;
|
|
49
|
+
};
|
|
50
|
+
/** Builds one claims-first Schedule and its independent Slot resources. */
|
|
51
|
+
export function buildServiceScheduleFlatGraph(input) {
|
|
52
|
+
const scheduleId = id(input.scheduleId);
|
|
53
|
+
const healthcareServiceReference = reference(input.healthcareServiceReference, 'HealthcareService', 'schedule_healthcare_service_reference_invalid');
|
|
54
|
+
const resourceActorReferences = [...new Set(input.resourceActorReferences.map(scheduleActorReference))];
|
|
55
|
+
if (!resourceActorReferences.length)
|
|
56
|
+
throw new TypeError('schedule_resource_actor_required');
|
|
57
|
+
const serviceType = token(input.serviceType);
|
|
58
|
+
const horizonStart = periodBoundary(input.planningHorizon.start, false);
|
|
59
|
+
const horizonEnd = periodBoundary(input.planningHorizon.end, true);
|
|
60
|
+
if (horizonEnd < horizonStart)
|
|
61
|
+
throw new TypeError('schedule_planning_horizon_invalid');
|
|
62
|
+
const scheduleReference = `Schedule/${scheduleId}`;
|
|
63
|
+
const seenSlotIds = new Set();
|
|
64
|
+
const slots = input.slots.map(slot => {
|
|
65
|
+
const slotId = id(slot.slotId);
|
|
66
|
+
if (seenSlotIds.has(slotId))
|
|
67
|
+
throw new TypeError('schedule_slot_id_duplicate');
|
|
68
|
+
seenSlotIds.add(slotId);
|
|
69
|
+
const start = instant(slot.start, 'slot_start_invalid');
|
|
70
|
+
const end = instant(slot.end, 'slot_end_invalid');
|
|
71
|
+
const startTime = Date.parse(start);
|
|
72
|
+
const endTime = Date.parse(end);
|
|
73
|
+
if (endTime <= startTime)
|
|
74
|
+
throw new TypeError('slot_interval_invalid');
|
|
75
|
+
if (startTime < horizonStart || endTime > horizonEnd)
|
|
76
|
+
throw new TypeError('slot_outside_planning_horizon');
|
|
77
|
+
return Object.freeze({
|
|
78
|
+
resourceType: 'Slot',
|
|
79
|
+
id: slotId,
|
|
80
|
+
meta: Object.freeze({ claims: Object.freeze({
|
|
81
|
+
[SlotClaim.Identifier]: required(slot.slotIdentifier, 'slot_identifier_required'),
|
|
82
|
+
[SlotClaim.Schedule]: scheduleReference,
|
|
83
|
+
[SlotClaim.ServiceType]: serviceType,
|
|
84
|
+
[SlotClaim.ServiceTypeReference]: healthcareServiceReference,
|
|
85
|
+
[SlotClaim.Status]: slot.status,
|
|
86
|
+
[SlotClaim.Start]: start,
|
|
87
|
+
[SlotClaim.End]: end,
|
|
88
|
+
...(slot.overbooked === undefined ? {} : { [SlotClaim.Overbooked]: String(slot.overbooked) }),
|
|
89
|
+
...(slot.comment?.trim() ? { [SlotClaim.Comment]: slot.comment.trim() } : {}),
|
|
90
|
+
}) }),
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
return Object.freeze([
|
|
94
|
+
Object.freeze({
|
|
95
|
+
resourceType: 'Schedule',
|
|
96
|
+
id: scheduleId,
|
|
97
|
+
meta: Object.freeze({ claims: Object.freeze({
|
|
98
|
+
[ScheduleClaim.Identifier]: required(input.scheduleIdentifier, 'schedule_identifier_required'),
|
|
99
|
+
[ScheduleClaim.Active]: 'true',
|
|
100
|
+
[ScheduleClaim.Name]: required(input.name, 'schedule_name_required'),
|
|
101
|
+
[ScheduleClaim.ServiceType]: serviceType,
|
|
102
|
+
[ScheduleClaim.ServiceTypeReference]: healthcareServiceReference,
|
|
103
|
+
[ScheduleClaim.Actor]: Object.freeze([healthcareServiceReference, ...resourceActorReferences]),
|
|
104
|
+
[ScheduleClaim.PlanningHorizonStart]: input.planningHorizon.start,
|
|
105
|
+
[ScheduleClaim.PlanningHorizonEnd]: input.planningHorizon.end,
|
|
106
|
+
}) }),
|
|
107
|
+
}),
|
|
108
|
+
...slots,
|
|
109
|
+
]);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Builds one reservable child place such as a room, booth, chair or bed.
|
|
113
|
+
*
|
|
114
|
+
* R4 projects `Location.physicalType`; R5 projects the same governed coding as
|
|
115
|
+
* `Location.form`. Equipment such as an apheresis machine remains a Device and
|
|
116
|
+
* is added independently to the Schedule actor list.
|
|
117
|
+
*/
|
|
118
|
+
export function buildSchedulableLocationFlatResource(input) {
|
|
119
|
+
const locationId = id(input.locationId);
|
|
120
|
+
const form = token(input.form);
|
|
121
|
+
const managingOrganizationReference = reference(input.managingOrganizationReference, 'Organization', 'schedulable_location_managing_organization_invalid');
|
|
122
|
+
const parentLocationReference = reference(input.parentLocationReference, 'Location', 'schedulable_location_parent_invalid');
|
|
123
|
+
if (parentLocationReference === `Location/${locationId}`)
|
|
124
|
+
throw new TypeError('schedulable_location_parent_invalid');
|
|
125
|
+
const position = input.position;
|
|
126
|
+
if (position && (!Number.isFinite(position.longitude) || position.longitude < -180 || position.longitude > 180
|
|
127
|
+
|| !Number.isFinite(position.latitude) || position.latitude < -90 || position.latitude > 90
|
|
128
|
+
|| (position.altitude !== undefined && !Number.isFinite(position.altitude)))) {
|
|
129
|
+
throw new TypeError('schedulable_location_position_invalid');
|
|
130
|
+
}
|
|
131
|
+
return Object.freeze({
|
|
132
|
+
resourceType: 'Location',
|
|
133
|
+
id: locationId,
|
|
134
|
+
meta: Object.freeze({ claims: Object.freeze({
|
|
135
|
+
[LocationClaim.Identifier]: required(input.locationIdentifier, 'schedulable_location_identifier_required'),
|
|
136
|
+
[LocationClaim.Status]: input.status ?? 'active',
|
|
137
|
+
[LocationClaim.Mode]: 'instance',
|
|
138
|
+
[LocationClaim.Name]: required(input.name, 'schedulable_location_name_required'),
|
|
139
|
+
[LocationClaim.PhysicalType]: form,
|
|
140
|
+
[LocationClaim.ManagingOrganization]: managingOrganizationReference,
|
|
141
|
+
[LocationClaim.PartOf]: parentLocationReference,
|
|
142
|
+
...(position ? {
|
|
143
|
+
[LocationClaim.PositionLongitude]: String(position.longitude),
|
|
144
|
+
[LocationClaim.PositionLatitude]: String(position.latitude),
|
|
145
|
+
...(position.altitude === undefined ? {} : { [LocationClaim.PositionAltitude]: String(position.altitude) }),
|
|
146
|
+
} : {}),
|
|
147
|
+
}) }),
|
|
148
|
+
});
|
|
149
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { EncounterStatusR5 } from './claims/index.js';
|
|
1
2
|
import { type FlatClaimResourceEntry } from './flat-claim-resource-graph.js';
|
|
2
3
|
export type ClinicalCoding = Readonly<{
|
|
3
4
|
system: string;
|
|
@@ -14,6 +15,23 @@ export type EncounterJourneyNode = Readonly<{
|
|
|
14
15
|
locationReference: string;
|
|
15
16
|
type?: ClinicalCoding;
|
|
16
17
|
}>;
|
|
18
|
+
/** Builds one FHIR R5 EncounterHistory milestone from canonical flat claims. */
|
|
19
|
+
export declare function buildEncounterHistoryR5FlatEntry(input: Readonly<{
|
|
20
|
+
entryId: string;
|
|
21
|
+
identifier: string;
|
|
22
|
+
encounterReference: string;
|
|
23
|
+
status: EncounterStatusR5;
|
|
24
|
+
class: ClinicalCoding;
|
|
25
|
+
serviceReference?: string;
|
|
26
|
+
subjectReference?: string;
|
|
27
|
+
subjectStatus?: ClinicalCoding;
|
|
28
|
+
actualPeriodStart?: string;
|
|
29
|
+
actualPeriodEnd?: string;
|
|
30
|
+
plannedStartDate?: string;
|
|
31
|
+
plannedEndDate?: string;
|
|
32
|
+
locationReference?: string;
|
|
33
|
+
locationForm?: ClinicalCoding;
|
|
34
|
+
}>): FlatClaimResourceEntry;
|
|
17
35
|
/**
|
|
18
36
|
* Builds one actual-care Encounter graph from an originating Appointment.
|
|
19
37
|
* Child service/location encounters inherit subject and provider and reference
|
|
@@ -1,5 +1,33 @@
|
|
|
1
|
-
import { CommunicationRequestClaim, EncounterClaim, ServiceRequestClaim, TaskClaim, } from './claims/index.js';
|
|
1
|
+
import { CommunicationRequestClaim, EncounterClaim, EncounterHistoryClaim, ServiceRequestClaim, TaskClaim, } from './claims/index.js';
|
|
2
2
|
import { buildFlatClaimResourceEntry } from './flat-claim-resource-graph.js';
|
|
3
|
+
/** Builds one FHIR R5 EncounterHistory milestone from canonical flat claims. */
|
|
4
|
+
export function buildEncounterHistoryR5FlatEntry(input) {
|
|
5
|
+
const claims = {
|
|
6
|
+
[EncounterHistoryClaim.Identifier]: required(input.identifier, 'encounter_history_identifier_required'),
|
|
7
|
+
[EncounterHistoryClaim.Encounter]: reference(input.encounterReference, 'encounter_history_encounter_invalid'),
|
|
8
|
+
[EncounterHistoryClaim.Status]: input.status,
|
|
9
|
+
[EncounterHistoryClaim.Class]: coding(input.class, 'encounter_history_class_invalid'),
|
|
10
|
+
};
|
|
11
|
+
if (input.serviceReference)
|
|
12
|
+
claims[EncounterHistoryClaim.ServiceType] = reference(input.serviceReference, 'encounter_history_service_invalid');
|
|
13
|
+
if (input.subjectReference)
|
|
14
|
+
claims[EncounterHistoryClaim.Subject] = reference(input.subjectReference, 'encounter_history_subject_invalid');
|
|
15
|
+
if (input.subjectStatus)
|
|
16
|
+
claims[EncounterHistoryClaim.SubjectStatus] = coding(input.subjectStatus, 'encounter_history_subject_status_invalid');
|
|
17
|
+
if (input.actualPeriodStart)
|
|
18
|
+
claims[EncounterHistoryClaim.ActualPeriodStart] = dateTime(input.actualPeriodStart, 'encounter_history_actual_start_invalid');
|
|
19
|
+
if (input.actualPeriodEnd)
|
|
20
|
+
claims[EncounterHistoryClaim.ActualPeriodEnd] = dateTime(input.actualPeriodEnd, 'encounter_history_actual_end_invalid');
|
|
21
|
+
if (input.plannedStartDate)
|
|
22
|
+
claims[EncounterHistoryClaim.PlannedStartDate] = dateTime(input.plannedStartDate, 'encounter_history_planned_start_invalid');
|
|
23
|
+
if (input.plannedEndDate)
|
|
24
|
+
claims[EncounterHistoryClaim.PlannedEndDate] = dateTime(input.plannedEndDate, 'encounter_history_planned_end_invalid');
|
|
25
|
+
if (input.locationReference)
|
|
26
|
+
claims[EncounterHistoryClaim.Location] = reference(input.locationReference, 'encounter_history_location_invalid');
|
|
27
|
+
if (input.locationForm)
|
|
28
|
+
claims[EncounterHistoryClaim.LocationForm] = coding(input.locationForm, 'encounter_history_location_form_invalid');
|
|
29
|
+
return buildFlatClaimResourceEntry({ entryId: input.entryId, resourceType: 'EncounterHistory', claims });
|
|
30
|
+
}
|
|
3
31
|
/**
|
|
4
32
|
* Builds one actual-care Encounter graph from an originating Appointment.
|
|
5
33
|
* Child service/location encounters inherit subject and provider and reference
|
|
@@ -184,6 +184,12 @@ export declare const AppointmentClaim: {
|
|
|
184
184
|
readonly ParticipantActor: "Appointment.actor";
|
|
185
185
|
readonly ParticipantStatus: "Appointment.part-status";
|
|
186
186
|
readonly ParticipantType: "Appointment.participant-type";
|
|
187
|
+
readonly Date: "Appointment.date";
|
|
188
|
+
readonly Location: "Appointment.location";
|
|
189
|
+
readonly Patient: "Appointment.patient";
|
|
190
|
+
readonly Practitioner: "Appointment.practitioner";
|
|
191
|
+
readonly Slot: "Appointment.slot";
|
|
192
|
+
readonly SupportingInfo: "Appointment.supporting-info";
|
|
187
193
|
};
|
|
188
194
|
export type AppointmentClaimKey = typeof AppointmentClaim[keyof typeof AppointmentClaim];
|
|
189
195
|
/**
|
|
@@ -173,6 +173,12 @@ export const AppointmentClaim = {
|
|
|
173
173
|
ParticipantActor: 'Appointment.actor',
|
|
174
174
|
ParticipantStatus: 'Appointment.part-status',
|
|
175
175
|
ParticipantType: 'Appointment.participant-type',
|
|
176
|
+
Date: 'Appointment.date',
|
|
177
|
+
Location: 'Appointment.location',
|
|
178
|
+
Patient: 'Appointment.patient',
|
|
179
|
+
Practitioner: 'Appointment.practitioner',
|
|
180
|
+
Slot: 'Appointment.slot',
|
|
181
|
+
SupportingInfo: 'Appointment.supporting-info',
|
|
176
182
|
};
|
|
177
183
|
// src/models/fhir/Appointment.values.ts
|
|
178
184
|
/**
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ClaimSpec } from './claim-types.js';
|
|
2
|
+
/** Canonical flat claims for FHIR R5 DeviceMetric, including its calibration backbone. */
|
|
3
|
+
export declare const DeviceMetricClaim: {
|
|
4
|
+
readonly Identifier: "DeviceMetric.identifier";
|
|
5
|
+
readonly Type: "DeviceMetric.type";
|
|
6
|
+
readonly Unit: "DeviceMetric.unit";
|
|
7
|
+
readonly Device: "DeviceMetric.device";
|
|
8
|
+
readonly OperationalStatus: "DeviceMetric.operational-status";
|
|
9
|
+
readonly Category: "DeviceMetric.category";
|
|
10
|
+
readonly MeasurementFrequency: "DeviceMetric.measurement-frequency";
|
|
11
|
+
readonly CalibrationType: "DeviceMetric.calibration-type";
|
|
12
|
+
readonly CalibrationState: "DeviceMetric.calibration-state";
|
|
13
|
+
readonly CalibrationTime: "DeviceMetric.calibration-time";
|
|
14
|
+
};
|
|
15
|
+
export type DeviceMetricClaimKey = typeof DeviceMetricClaim[keyof typeof DeviceMetricClaim];
|
|
16
|
+
export declare const DeviceMetricClaimSpecs: readonly ClaimSpec[];
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/** Canonical flat claims for FHIR R5 DeviceMetric, including its calibration backbone. */
|
|
2
|
+
export const DeviceMetricClaim = {
|
|
3
|
+
Identifier: 'DeviceMetric.identifier',
|
|
4
|
+
Type: 'DeviceMetric.type',
|
|
5
|
+
Unit: 'DeviceMetric.unit',
|
|
6
|
+
Device: 'DeviceMetric.device',
|
|
7
|
+
OperationalStatus: 'DeviceMetric.operational-status',
|
|
8
|
+
Category: 'DeviceMetric.category',
|
|
9
|
+
MeasurementFrequency: 'DeviceMetric.measurement-frequency',
|
|
10
|
+
CalibrationType: 'DeviceMetric.calibration-type',
|
|
11
|
+
CalibrationState: 'DeviceMetric.calibration-state',
|
|
12
|
+
CalibrationTime: 'DeviceMetric.calibration-time',
|
|
13
|
+
};
|
|
14
|
+
export const DeviceMetricClaimSpecs = Object.freeze([
|
|
15
|
+
{ key: DeviceMetricClaim.Identifier, meaning: 'Business identifier for the metric.', example: 'metric-1' },
|
|
16
|
+
{ key: DeviceMetricClaim.Type, meaning: 'Metric type coding token.', example: 'http://loinc.org|11850-8' },
|
|
17
|
+
{ key: DeviceMetricClaim.Unit, meaning: 'Metric unit coding token.', example: 'http://unitsofmeasure.org|mL/min' },
|
|
18
|
+
{ key: DeviceMetricClaim.Device, meaning: 'Parent Device reference.', example: 'Device/device-1' },
|
|
19
|
+
{ key: DeviceMetricClaim.OperationalStatus, meaning: 'Current operational status.', example: 'on' },
|
|
20
|
+
{ key: DeviceMetricClaim.Category, meaning: 'Metric category.', example: 'measurement' },
|
|
21
|
+
{ key: DeviceMetricClaim.MeasurementFrequency, meaning: 'Measurement frequency quantity token.', example: '1|Hz' },
|
|
22
|
+
{ key: DeviceMetricClaim.CalibrationType, meaning: 'FHIR calibration method.', example: 'two-point' },
|
|
23
|
+
{ key: DeviceMetricClaim.CalibrationState, meaning: 'FHIR calibration state.', example: 'calibrated' },
|
|
24
|
+
{ key: DeviceMetricClaim.CalibrationTime, meaning: 'Time of the calibration represented by this row.', example: '2026-09-29T15:00:00Z' },
|
|
25
|
+
]);
|
|
@@ -8,9 +8,12 @@ export declare const EncounterClaim: {
|
|
|
8
8
|
readonly Subject: "Encounter.subject";
|
|
9
9
|
readonly Patient: "Encounter.patient";
|
|
10
10
|
readonly Participant: "Encounter.participant";
|
|
11
|
+
readonly ServiceType: "Encounter.service-type";
|
|
11
12
|
readonly ServiceProvider: "Encounter.service-provider";
|
|
12
13
|
readonly PeriodStart: "Encounter.period-start";
|
|
13
14
|
readonly PeriodEnd: "Encounter.period-end";
|
|
15
|
+
readonly ActualPeriodStart: "Encounter.actual-period-start";
|
|
16
|
+
readonly ActualPeriodEnd: "Encounter.actual-period-end";
|
|
14
17
|
readonly ReasonCode: "Encounter.reason-code";
|
|
15
18
|
readonly Diagnosis: "Encounter.diagnosis";
|
|
16
19
|
readonly Location: "Encounter.location";
|
|
@@ -28,5 +31,17 @@ export declare enum EncounterStatus {
|
|
|
28
31
|
EnteredInError = "entered-in-error",
|
|
29
32
|
Unknown = "unknown"
|
|
30
33
|
}
|
|
34
|
+
/** Canonical FHIR R5 Encounter lifecycle codes. */
|
|
35
|
+
export declare enum EncounterStatusR5 {
|
|
36
|
+
Planned = "planned",
|
|
37
|
+
InProgress = "in-progress",
|
|
38
|
+
OnHold = "on-hold",
|
|
39
|
+
Discharged = "discharged",
|
|
40
|
+
Completed = "completed",
|
|
41
|
+
Cancelled = "cancelled",
|
|
42
|
+
Discontinued = "discontinued",
|
|
43
|
+
EnteredInError = "entered-in-error",
|
|
44
|
+
Unknown = "unknown"
|
|
45
|
+
}
|
|
31
46
|
export type EncounterClaimKey = typeof EncounterClaim[keyof typeof EncounterClaim];
|
|
32
47
|
export declare const EncounterClaimSpecs: ClaimSpec[];
|
|
@@ -9,9 +9,12 @@ export const EncounterClaim = {
|
|
|
9
9
|
Subject: 'Encounter.subject',
|
|
10
10
|
Patient: 'Encounter.patient',
|
|
11
11
|
Participant: 'Encounter.participant',
|
|
12
|
+
ServiceType: 'Encounter.service-type',
|
|
12
13
|
ServiceProvider: 'Encounter.service-provider',
|
|
13
14
|
PeriodStart: 'Encounter.period-start',
|
|
14
15
|
PeriodEnd: 'Encounter.period-end',
|
|
16
|
+
ActualPeriodStart: 'Encounter.actual-period-start',
|
|
17
|
+
ActualPeriodEnd: 'Encounter.actual-period-end',
|
|
15
18
|
ReasonCode: 'Encounter.reason-code',
|
|
16
19
|
Diagnosis: 'Encounter.diagnosis',
|
|
17
20
|
Location: 'Encounter.location',
|
|
@@ -30,6 +33,19 @@ export var EncounterStatus;
|
|
|
30
33
|
EncounterStatus["EnteredInError"] = "entered-in-error";
|
|
31
34
|
EncounterStatus["Unknown"] = "unknown";
|
|
32
35
|
})(EncounterStatus || (EncounterStatus = {}));
|
|
36
|
+
/** Canonical FHIR R5 Encounter lifecycle codes. */
|
|
37
|
+
export var EncounterStatusR5;
|
|
38
|
+
(function (EncounterStatusR5) {
|
|
39
|
+
EncounterStatusR5["Planned"] = "planned";
|
|
40
|
+
EncounterStatusR5["InProgress"] = "in-progress";
|
|
41
|
+
EncounterStatusR5["OnHold"] = "on-hold";
|
|
42
|
+
EncounterStatusR5["Discharged"] = "discharged";
|
|
43
|
+
EncounterStatusR5["Completed"] = "completed";
|
|
44
|
+
EncounterStatusR5["Cancelled"] = "cancelled";
|
|
45
|
+
EncounterStatusR5["Discontinued"] = "discontinued";
|
|
46
|
+
EncounterStatusR5["EnteredInError"] = "entered-in-error";
|
|
47
|
+
EncounterStatusR5["Unknown"] = "unknown";
|
|
48
|
+
})(EncounterStatusR5 || (EncounterStatusR5 = {}));
|
|
33
49
|
export const EncounterClaimSpecs = [
|
|
34
50
|
{ key: EncounterClaim.Identifier, meaning: 'Business identifier.', example: 'enc-001' },
|
|
35
51
|
{ key: EncounterClaim.Appointment, meaning: 'Originating appointment references (CSV).', example: 'Appointment/appointment-1' },
|
|
@@ -39,9 +55,12 @@ export const EncounterClaimSpecs = [
|
|
|
39
55
|
{ key: EncounterClaim.Subject, meaning: 'Canonical subject reference.', example: 'did:web:patient.example.org' },
|
|
40
56
|
{ key: EncounterClaim.Patient, meaning: 'Patient alias reference.', example: 'did:web:patient.example.org' },
|
|
41
57
|
{ key: EncounterClaim.Participant, meaning: 'Participant references (CSV).', example: 'Practitioner/prac-1' },
|
|
58
|
+
{ key: EncounterClaim.ServiceType, meaning: 'HealthcareService references (CSV in R5).', example: 'HealthcareService/emergency-department-1' },
|
|
42
59
|
{ key: EncounterClaim.ServiceProvider, meaning: 'Service provider reference.', example: 'Organization/org-1' },
|
|
43
60
|
{ key: EncounterClaim.PeriodStart, meaning: 'Encounter start.', example: '2026-06-01T10:00:00Z' },
|
|
44
61
|
{ key: EncounterClaim.PeriodEnd, meaning: 'Encounter end.', example: '2026-06-01T10:30:00Z' },
|
|
62
|
+
{ key: EncounterClaim.ActualPeriodStart, meaning: 'R5 actual encounter start.', example: '2026-06-01T10:00:00Z' },
|
|
63
|
+
{ key: EncounterClaim.ActualPeriodEnd, meaning: 'R5 actual encounter end.', example: '2026-06-01T10:30:00Z' },
|
|
45
64
|
{ key: EncounterClaim.ReasonCode, meaning: 'Reason code token.', example: 'http://snomed.info/sct|65363002' },
|
|
46
65
|
{ key: EncounterClaim.Diagnosis, meaning: 'Diagnosis references (CSV).', example: 'Condition/cond-1' },
|
|
47
66
|
{ key: EncounterClaim.Location, meaning: 'Location references (CSV).', example: 'Location/loc-1' },
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ClaimSpec } from './claim-types.js';
|
|
2
|
+
/** Canonical flat claims for the FHIR R5 EncounterHistory resource. */
|
|
3
|
+
export declare const EncounterHistoryClaim: {
|
|
4
|
+
readonly Identifier: "EncounterHistory.identifier";
|
|
5
|
+
readonly Encounter: "EncounterHistory.encounter";
|
|
6
|
+
readonly Status: "EncounterHistory.status";
|
|
7
|
+
readonly Class: "EncounterHistory.class";
|
|
8
|
+
readonly Type: "EncounterHistory.type";
|
|
9
|
+
readonly ServiceType: "EncounterHistory.service-type";
|
|
10
|
+
readonly Subject: "EncounterHistory.subject";
|
|
11
|
+
readonly SubjectStatus: "EncounterHistory.subject-status";
|
|
12
|
+
readonly ActualPeriodStart: "EncounterHistory.actual-period-start";
|
|
13
|
+
readonly ActualPeriodEnd: "EncounterHistory.actual-period-end";
|
|
14
|
+
readonly PlannedStartDate: "EncounterHistory.planned-start-date";
|
|
15
|
+
readonly PlannedEndDate: "EncounterHistory.planned-end-date";
|
|
16
|
+
readonly Location: "EncounterHistory.location";
|
|
17
|
+
readonly LocationForm: "EncounterHistory.location-form";
|
|
18
|
+
};
|
|
19
|
+
export type EncounterHistoryClaimKey = typeof EncounterHistoryClaim[keyof typeof EncounterHistoryClaim];
|
|
20
|
+
export declare const EncounterHistoryClaimSpecs: ClaimSpec[];
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// Copyright 2026 Conéctate Soluciones y Aplicaciones SL under the Apache License, Version 2.0.
|
|
2
|
+
/** Canonical flat claims for the FHIR R5 EncounterHistory resource. */
|
|
3
|
+
export const EncounterHistoryClaim = {
|
|
4
|
+
Identifier: 'EncounterHistory.identifier',
|
|
5
|
+
Encounter: 'EncounterHistory.encounter',
|
|
6
|
+
Status: 'EncounterHistory.status',
|
|
7
|
+
Class: 'EncounterHistory.class',
|
|
8
|
+
Type: 'EncounterHistory.type',
|
|
9
|
+
ServiceType: 'EncounterHistory.service-type',
|
|
10
|
+
Subject: 'EncounterHistory.subject',
|
|
11
|
+
SubjectStatus: 'EncounterHistory.subject-status',
|
|
12
|
+
ActualPeriodStart: 'EncounterHistory.actual-period-start',
|
|
13
|
+
ActualPeriodEnd: 'EncounterHistory.actual-period-end',
|
|
14
|
+
PlannedStartDate: 'EncounterHistory.planned-start-date',
|
|
15
|
+
PlannedEndDate: 'EncounterHistory.planned-end-date',
|
|
16
|
+
Location: 'EncounterHistory.location',
|
|
17
|
+
LocationForm: 'EncounterHistory.location-form',
|
|
18
|
+
};
|
|
19
|
+
export const EncounterHistoryClaimSpecs = [
|
|
20
|
+
{ key: EncounterHistoryClaim.Identifier, meaning: 'Business identifier.', example: 'urn:uuid:encounter-history-1' },
|
|
21
|
+
{ key: EncounterHistoryClaim.Encounter, meaning: 'Encounter whose milestone is recorded.', example: 'Encounter/encounter-1' },
|
|
22
|
+
{ key: EncounterHistoryClaim.Status, meaning: 'FHIR R5 Encounter status at this milestone.', example: 'on-hold' },
|
|
23
|
+
{ key: EncounterHistoryClaim.Class, meaning: 'Encounter class token.', example: 'http://terminology.hl7.org/CodeSystem/v3-ActCode|EMER' },
|
|
24
|
+
{ key: EncounterHistoryClaim.Type, meaning: 'Encounter type tokens (CSV).', example: 'http://snomed.info/sct|50849002' },
|
|
25
|
+
{ key: EncounterHistoryClaim.ServiceType, meaning: 'HealthcareService references (CSV).', example: 'HealthcareService/emergency-1' },
|
|
26
|
+
{ key: EncounterHistoryClaim.Subject, meaning: 'Patient or Group reference.', example: 'Patient/patient-1' },
|
|
27
|
+
{ key: EncounterHistoryClaim.SubjectStatus, meaning: 'Subject status token.', example: 'departed' },
|
|
28
|
+
{ key: EncounterHistoryClaim.ActualPeriodStart, meaning: 'Milestone period start.', example: '2026-09-29T08:00:00Z' },
|
|
29
|
+
{ key: EncounterHistoryClaim.ActualPeriodEnd, meaning: 'Milestone period end.', example: '2026-09-29T08:30:00Z' },
|
|
30
|
+
{ key: EncounterHistoryClaim.PlannedStartDate, meaning: 'Planned start.', example: '2026-09-29T08:00:00Z' },
|
|
31
|
+
{ key: EncounterHistoryClaim.PlannedEndDate, meaning: 'Planned end.', example: '2026-09-29T08:30:00Z' },
|
|
32
|
+
{ key: EncounterHistoryClaim.Location, meaning: 'Location references (CSV).', example: 'Location/emergency-box-1' },
|
|
33
|
+
{ key: EncounterHistoryClaim.LocationForm, meaning: 'Location form token.', example: 'http://terminology.hl7.org/CodeSystem/location-physical-type|ro' },
|
|
34
|
+
];
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ClaimSpec } from './claim-types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Canonical flat claims for the official FHIR R4 HealthcareService search
|
|
4
|
+
* surface. The providing Organization may be a department/suborganization;
|
|
5
|
+
* it is not the service itself.
|
|
6
|
+
*
|
|
7
|
+
* @see https://hl7.org/fhir/R4/healthcareservice.html#search
|
|
8
|
+
*/
|
|
9
|
+
export declare const HealthcareServiceClaim: Readonly<{
|
|
10
|
+
readonly Active: "HealthcareService.active";
|
|
11
|
+
readonly Characteristic: "HealthcareService.characteristic";
|
|
12
|
+
readonly CoverageArea: "HealthcareService.coverage-area";
|
|
13
|
+
readonly Endpoint: "HealthcareService.endpoint";
|
|
14
|
+
readonly Identifier: "HealthcareService.identifier";
|
|
15
|
+
readonly Location: "HealthcareService.location";
|
|
16
|
+
readonly Name: "HealthcareService.name";
|
|
17
|
+
readonly Comment: "HealthcareService.comment";
|
|
18
|
+
readonly Organization: "HealthcareService.organization";
|
|
19
|
+
readonly Program: "HealthcareService.program";
|
|
20
|
+
readonly ServiceCategory: "HealthcareService.service-category";
|
|
21
|
+
readonly ServiceType: "HealthcareService.service-type";
|
|
22
|
+
readonly Specialty: "HealthcareService.specialty";
|
|
23
|
+
}>;
|
|
24
|
+
export type HealthcareServiceClaimKey = typeof HealthcareServiceClaim[keyof typeof HealthcareServiceClaim];
|
|
25
|
+
/** Exact resource-specific SearchParameters published by FHIR R4 4.0.1. */
|
|
26
|
+
export declare const HealthcareServiceR4SearchParameterCatalog: readonly Readonly<{
|
|
27
|
+
claim: `${string}.${string}`;
|
|
28
|
+
resourceType: string;
|
|
29
|
+
elementPath: string;
|
|
30
|
+
type: import("../search-parameters.js").FlatSearchParameterType;
|
|
31
|
+
}>[];
|
|
32
|
+
export declare const HealthcareServiceClaimSpecs: readonly ClaimSpec[];
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// Copyright 2026 Conéctate Soluciones y Aplicaciones SL under the Apache License, Version 2.0.
|
|
2
|
+
import { defineFlatSearchParameter } from '../search-parameters.js';
|
|
3
|
+
/**
|
|
4
|
+
* Canonical flat claims for the official FHIR R4 HealthcareService search
|
|
5
|
+
* surface. The providing Organization may be a department/suborganization;
|
|
6
|
+
* it is not the service itself.
|
|
7
|
+
*
|
|
8
|
+
* @see https://hl7.org/fhir/R4/healthcareservice.html#search
|
|
9
|
+
*/
|
|
10
|
+
export const HealthcareServiceClaim = Object.freeze({
|
|
11
|
+
Active: 'HealthcareService.active',
|
|
12
|
+
Characteristic: 'HealthcareService.characteristic',
|
|
13
|
+
CoverageArea: 'HealthcareService.coverage-area',
|
|
14
|
+
Endpoint: 'HealthcareService.endpoint',
|
|
15
|
+
Identifier: 'HealthcareService.identifier',
|
|
16
|
+
Location: 'HealthcareService.location',
|
|
17
|
+
Name: 'HealthcareService.name',
|
|
18
|
+
Comment: 'HealthcareService.comment',
|
|
19
|
+
Organization: 'HealthcareService.organization',
|
|
20
|
+
Program: 'HealthcareService.program',
|
|
21
|
+
ServiceCategory: 'HealthcareService.service-category',
|
|
22
|
+
ServiceType: 'HealthcareService.service-type',
|
|
23
|
+
Specialty: 'HealthcareService.specialty',
|
|
24
|
+
});
|
|
25
|
+
/** Exact resource-specific SearchParameters published by FHIR R4 4.0.1. */
|
|
26
|
+
export const HealthcareServiceR4SearchParameterCatalog = Object.freeze([
|
|
27
|
+
defineFlatSearchParameter({ claim: HealthcareServiceClaim.Active, resourceType: 'HealthcareService', elementPath: 'HealthcareService.active', type: 'token' }),
|
|
28
|
+
defineFlatSearchParameter({ claim: HealthcareServiceClaim.Characteristic, resourceType: 'HealthcareService', elementPath: 'HealthcareService.characteristic', type: 'token' }),
|
|
29
|
+
defineFlatSearchParameter({ claim: HealthcareServiceClaim.CoverageArea, resourceType: 'HealthcareService', elementPath: 'HealthcareService.coverageArea', type: 'reference' }),
|
|
30
|
+
defineFlatSearchParameter({ claim: HealthcareServiceClaim.Endpoint, resourceType: 'HealthcareService', elementPath: 'HealthcareService.endpoint', type: 'reference' }),
|
|
31
|
+
defineFlatSearchParameter({ claim: HealthcareServiceClaim.Identifier, resourceType: 'HealthcareService', elementPath: 'HealthcareService.identifier', type: 'token' }),
|
|
32
|
+
defineFlatSearchParameter({ claim: HealthcareServiceClaim.Location, resourceType: 'HealthcareService', elementPath: 'HealthcareService.location', type: 'reference' }),
|
|
33
|
+
defineFlatSearchParameter({ claim: HealthcareServiceClaim.Name, resourceType: 'HealthcareService', elementPath: 'HealthcareService.name', type: 'string' }),
|
|
34
|
+
defineFlatSearchParameter({ claim: HealthcareServiceClaim.Organization, resourceType: 'HealthcareService', elementPath: 'HealthcareService.providedBy', type: 'reference' }),
|
|
35
|
+
defineFlatSearchParameter({ claim: HealthcareServiceClaim.Program, resourceType: 'HealthcareService', elementPath: 'HealthcareService.program', type: 'token' }),
|
|
36
|
+
defineFlatSearchParameter({ claim: HealthcareServiceClaim.ServiceCategory, resourceType: 'HealthcareService', elementPath: 'HealthcareService.category', type: 'token' }),
|
|
37
|
+
defineFlatSearchParameter({ claim: HealthcareServiceClaim.ServiceType, resourceType: 'HealthcareService', elementPath: 'HealthcareService.type', type: 'token' }),
|
|
38
|
+
defineFlatSearchParameter({ claim: HealthcareServiceClaim.Specialty, resourceType: 'HealthcareService', elementPath: 'HealthcareService.specialty', type: 'token' }),
|
|
39
|
+
]);
|
|
40
|
+
export const HealthcareServiceClaimSpecs = Object.freeze([
|
|
41
|
+
{ key: HealthcareServiceClaim.Active, meaning: 'Whether the service is active.', example: 'true' },
|
|
42
|
+
{ key: HealthcareServiceClaim.Characteristic, meaning: 'Repeatable service characteristic tokens as CSV.', example: 'https://example.org/CodeSystem/service-characteristic|24-hours' },
|
|
43
|
+
{ key: HealthcareServiceClaim.CoverageArea, meaning: 'Repeatable intended coverage Location references as CSV.', example: 'Location/british-columbia' },
|
|
44
|
+
{ key: HealthcareServiceClaim.Endpoint, meaning: 'Repeatable technical Endpoint references as CSV.', example: 'Endpoint/emergency-group-inbox' },
|
|
45
|
+
{ key: HealthcareServiceClaim.Identifier, meaning: 'Logical service identifier.', example: 'urn:uuid:healthcare-service-1' },
|
|
46
|
+
{ key: HealthcareServiceClaim.Location, meaning: 'Repeatable Places where the service is provided as Location references.', example: 'Location/emergency-room-1' },
|
|
47
|
+
{ key: HealthcareServiceClaim.Name, meaning: 'Consumer-facing service name.', example: 'Veterinary emergency care' },
|
|
48
|
+
{ key: HealthcareServiceClaim.Comment, meaning: 'Consumer-facing service description; this is a materialized field, not a SearchParameter.', example: 'Emergency assessment and stabilization.' },
|
|
49
|
+
{ key: HealthcareServiceClaim.Organization, meaning: 'Organization or department that provides the service.', example: 'Organization/emergency-department-1' },
|
|
50
|
+
{ key: HealthcareServiceClaim.Program, meaning: 'Repeatable program tokens as CSV.', example: 'https://example.org/CodeSystem/program|lost-animal-emergency' },
|
|
51
|
+
{ key: HealthcareServiceClaim.ServiceCategory, meaning: 'Repeatable broad service category tokens as CSV.', example: 'http://terminology.hl7.org/CodeSystem/service-category|1' },
|
|
52
|
+
{ key: HealthcareServiceClaim.ServiceType, meaning: 'Repeatable service type tokens as CSV.', example: 'http://terminology.hl7.org/CodeSystem/service-type|117' },
|
|
53
|
+
{ key: HealthcareServiceClaim.Specialty, meaning: 'Repeatable clinical specialty tokens as CSV.', example: 'http://loinc.org|LP172940-1' },
|
|
54
|
+
]);
|
package/dist/claims/index.d.ts
CHANGED
|
@@ -11,16 +11,19 @@ export * from './consent-claims.js';
|
|
|
11
11
|
export * from './condition-claims.js';
|
|
12
12
|
export * from './coverage-claims.js';
|
|
13
13
|
export * from './device-claims.js';
|
|
14
|
+
export * from './device-metric-claims.js';
|
|
14
15
|
export * from './device-use-statement-claims.js';
|
|
15
16
|
export * from './diagnostic-report-claims.js';
|
|
16
17
|
export * from './document-reference-claims.js';
|
|
17
18
|
export * from './encounter-claims.js';
|
|
19
|
+
export * from './encounter-history-claims.js';
|
|
18
20
|
export * from './flag-claims.js';
|
|
19
21
|
export * from './immunization-claims.js';
|
|
20
22
|
export * from './immunization-recommendation-claims.js';
|
|
21
23
|
export * from './imaging-study-claims.js';
|
|
22
24
|
export * from './invoice-claims.js';
|
|
23
25
|
export * from './location-claims.js';
|
|
26
|
+
export * from './healthcare-service-claims.js';
|
|
24
27
|
export * from './medication-statement-claims.js';
|
|
25
28
|
export * from './medication-claims.js';
|
|
26
29
|
export * from './organization-claims.js';
|
|
@@ -28,5 +31,7 @@ export * from './practitioner-role-claims.js';
|
|
|
28
31
|
export * from './procedure-claims.js';
|
|
29
32
|
export * from './related-person-claims.js';
|
|
30
33
|
export * from './research-subject-claims.js';
|
|
34
|
+
export * from './regulated-authorization-claims.js';
|
|
31
35
|
export * from './service-request-claims.js';
|
|
36
|
+
export * from './schedule-slot-claims.js';
|
|
32
37
|
export * from './task-claims.js';
|
package/dist/claims/index.js
CHANGED
|
@@ -11,16 +11,19 @@ export * from './consent-claims.js';
|
|
|
11
11
|
export * from './condition-claims.js';
|
|
12
12
|
export * from './coverage-claims.js';
|
|
13
13
|
export * from './device-claims.js';
|
|
14
|
+
export * from './device-metric-claims.js';
|
|
14
15
|
export * from './device-use-statement-claims.js';
|
|
15
16
|
export * from './diagnostic-report-claims.js';
|
|
16
17
|
export * from './document-reference-claims.js';
|
|
17
18
|
export * from './encounter-claims.js';
|
|
19
|
+
export * from './encounter-history-claims.js';
|
|
18
20
|
export * from './flag-claims.js';
|
|
19
21
|
export * from './immunization-claims.js';
|
|
20
22
|
export * from './immunization-recommendation-claims.js';
|
|
21
23
|
export * from './imaging-study-claims.js';
|
|
22
24
|
export * from './invoice-claims.js';
|
|
23
25
|
export * from './location-claims.js';
|
|
26
|
+
export * from './healthcare-service-claims.js';
|
|
24
27
|
export * from './medication-statement-claims.js';
|
|
25
28
|
export * from './medication-claims.js';
|
|
26
29
|
export * from './organization-claims.js';
|
|
@@ -28,5 +31,7 @@ export * from './practitioner-role-claims.js';
|
|
|
28
31
|
export * from './procedure-claims.js';
|
|
29
32
|
export * from './related-person-claims.js';
|
|
30
33
|
export * from './research-subject-claims.js';
|
|
34
|
+
export * from './regulated-authorization-claims.js';
|
|
31
35
|
export * from './service-request-claims.js';
|
|
36
|
+
export * from './schedule-slot-claims.js';
|
|
32
37
|
export * from './task-claims.js';
|
|
@@ -17,6 +17,9 @@ export declare const LocationClaim: {
|
|
|
17
17
|
readonly PhysicalType: "Location.physical-type";
|
|
18
18
|
readonly ManagingOrganization: "Location.managing-organization";
|
|
19
19
|
readonly PartOf: "Location.part-of";
|
|
20
|
+
readonly PositionLongitude: "Location.position-longitude";
|
|
21
|
+
readonly PositionLatitude: "Location.position-latitude";
|
|
22
|
+
readonly PositionAltitude: "Location.position-altitude";
|
|
20
23
|
};
|
|
21
24
|
export type LocationClaimKey = typeof LocationClaim[keyof typeof LocationClaim];
|
|
22
25
|
export declare const LocationClaimSpecs: ClaimSpec[];
|