fhir-data-utils-ts 0.3.7 → 0.6.0
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/.codex/skills/govern-fhir-observation-components/SKILL.md +11 -0
- package/CHANGELOG.md +63 -0
- package/README.md +44 -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/claims/appointment-claims.d.ts +6 -0
- package/dist/claims/appointment-claims.js +6 -0
- package/dist/claims/composition-claims.d.ts +1 -0
- package/dist/claims/composition-claims.js +1 -0
- package/dist/claims/device-metric-claims.d.ts +16 -0
- package/dist/claims/device-metric-claims.js +25 -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 +4 -0
- package/dist/claims/index.js +4 -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 +9 -0
- package/dist/constants/fhir-resource-types.js +3 -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-composition.js +12 -2
- 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-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 +6 -0
- package/dist/converters/index.js +6 -0
- package/dist/converters/materialize-claims-first-resource.d.ts +16 -0
- package/dist/converters/materialize-claims-first-resource.js +61 -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 +2 -0
- package/dist/index.js +2 -0
- package/dist/observation-claims.d.ts +3 -0
- package/dist/observation-claims.js +3 -0
- package/dist/vital-sign-observations.d.ts +75 -1
- package/dist/vital-sign-observations.js +225 -9
- 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/docs/VITAL_SIGN_DAILY_DOCUMENT.md +79 -0
- package/package.json +5 -1
package/dist/builders/index.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
export * from './diagnostic-report-graph.js';
|
|
2
|
+
export * from './department-service-graph.js';
|
|
3
|
+
export * from './service-schedule-graph.js';
|
|
4
|
+
export * from './device-compliance-graph.js';
|
|
2
5
|
export * from './immunization-graph.js';
|
|
3
6
|
export * from './immunization-reminders.js';
|
|
@@ -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
|
+
}
|
|
@@ -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
|
/**
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// Copyright 2026 Conéctate Soluciones y Aplicaciones SL under the Apache License, Version 2.0.
|
|
2
2
|
// File: src/models/interoperable-claims/composition-claims.ts
|
|
3
3
|
export const CompositionClaim = {
|
|
4
|
+
Status: 'Composition.status',
|
|
4
5
|
Subject: 'Composition.subject',
|
|
5
6
|
Section: 'Composition.section',
|
|
6
7
|
Author: 'Composition.author',
|
|
@@ -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
|
+
]);
|
|
@@ -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,6 +11,7 @@ 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';
|
|
@@ -21,6 +22,7 @@ export * from './immunization-recommendation-claims.js';
|
|
|
21
22
|
export * from './imaging-study-claims.js';
|
|
22
23
|
export * from './invoice-claims.js';
|
|
23
24
|
export * from './location-claims.js';
|
|
25
|
+
export * from './healthcare-service-claims.js';
|
|
24
26
|
export * from './medication-statement-claims.js';
|
|
25
27
|
export * from './medication-claims.js';
|
|
26
28
|
export * from './organization-claims.js';
|
|
@@ -28,5 +30,7 @@ export * from './practitioner-role-claims.js';
|
|
|
28
30
|
export * from './procedure-claims.js';
|
|
29
31
|
export * from './related-person-claims.js';
|
|
30
32
|
export * from './research-subject-claims.js';
|
|
33
|
+
export * from './regulated-authorization-claims.js';
|
|
31
34
|
export * from './service-request-claims.js';
|
|
35
|
+
export * from './schedule-slot-claims.js';
|
|
32
36
|
export * from './task-claims.js';
|
package/dist/claims/index.js
CHANGED
|
@@ -11,6 +11,7 @@ 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';
|
|
@@ -21,6 +22,7 @@ export * from './immunization-recommendation-claims.js';
|
|
|
21
22
|
export * from './imaging-study-claims.js';
|
|
22
23
|
export * from './invoice-claims.js';
|
|
23
24
|
export * from './location-claims.js';
|
|
25
|
+
export * from './healthcare-service-claims.js';
|
|
24
26
|
export * from './medication-statement-claims.js';
|
|
25
27
|
export * from './medication-claims.js';
|
|
26
28
|
export * from './organization-claims.js';
|
|
@@ -28,5 +30,7 @@ export * from './practitioner-role-claims.js';
|
|
|
28
30
|
export * from './procedure-claims.js';
|
|
29
31
|
export * from './related-person-claims.js';
|
|
30
32
|
export * from './research-subject-claims.js';
|
|
33
|
+
export * from './regulated-authorization-claims.js';
|
|
31
34
|
export * from './service-request-claims.js';
|
|
35
|
+
export * from './schedule-slot-claims.js';
|
|
32
36
|
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[];
|
|
@@ -18,6 +18,9 @@ export const LocationClaim = {
|
|
|
18
18
|
PhysicalType: 'Location.physical-type',
|
|
19
19
|
ManagingOrganization: 'Location.managing-organization',
|
|
20
20
|
PartOf: 'Location.part-of',
|
|
21
|
+
PositionLongitude: 'Location.position-longitude',
|
|
22
|
+
PositionLatitude: 'Location.position-latitude',
|
|
23
|
+
PositionAltitude: 'Location.position-altitude',
|
|
21
24
|
};
|
|
22
25
|
export const LocationClaimSpecs = [
|
|
23
26
|
{ key: LocationClaim.Identifier, meaning: 'Business identifier.', example: 'room-201' },
|
|
@@ -31,4 +34,7 @@ export const LocationClaimSpecs = [
|
|
|
31
34
|
{ key: LocationClaim.PhysicalType, meaning: 'Physical type token.', example: 'http://terminology.hl7.org/CodeSystem/location-physical-type|ro' },
|
|
32
35
|
{ key: LocationClaim.ManagingOrganization, meaning: 'Managing organization reference.', example: 'Organization/dept-cardiology-001' },
|
|
33
36
|
{ key: LocationClaim.PartOf, meaning: 'Parent location reference.', example: 'Location/building-a' },
|
|
37
|
+
{ key: LocationClaim.PositionLongitude, meaning: 'WGS84 longitude in decimal degrees.', example: '-123.1207' },
|
|
38
|
+
{ key: LocationClaim.PositionLatitude, meaning: 'WGS84 latitude in decimal degrees.', example: '49.2827' },
|
|
39
|
+
{ key: LocationClaim.PositionAltitude, meaning: 'Altitude in metres.', example: '12.5' },
|
|
34
40
|
];
|
|
@@ -2,13 +2,15 @@ import type { ClaimSpec } from './claim-types.js';
|
|
|
2
2
|
/**
|
|
3
3
|
* Flat claim keys for `Organization`.
|
|
4
4
|
*
|
|
5
|
-
* Use this resource for
|
|
5
|
+
* Use this resource for legal entities, suborganizations and departments.
|
|
6
|
+
* A service offered by one of them is a separate `HealthcareService`.
|
|
6
7
|
*/
|
|
7
8
|
export declare const OrganizationClaim: {
|
|
8
9
|
readonly Identifier: "Organization.identifier";
|
|
9
10
|
readonly Active: "Organization.active";
|
|
10
11
|
readonly Type: "Organization.type";
|
|
11
12
|
readonly Name: "Organization.name";
|
|
13
|
+
readonly Description: "Organization.description";
|
|
12
14
|
readonly Alias: "Organization.alias";
|
|
13
15
|
readonly PartOf: "Organization.part-of";
|
|
14
16
|
readonly Telecom: "Organization.telecom";
|
|
@@ -3,13 +3,15 @@
|
|
|
3
3
|
/**
|
|
4
4
|
* Flat claim keys for `Organization`.
|
|
5
5
|
*
|
|
6
|
-
* Use this resource for
|
|
6
|
+
* Use this resource for legal entities, suborganizations and departments.
|
|
7
|
+
* A service offered by one of them is a separate `HealthcareService`.
|
|
7
8
|
*/
|
|
8
9
|
export const OrganizationClaim = {
|
|
9
10
|
Identifier: 'Organization.identifier',
|
|
10
11
|
Active: 'Organization.active',
|
|
11
12
|
Type: 'Organization.type',
|
|
12
13
|
Name: 'Organization.name',
|
|
14
|
+
Description: 'Organization.description',
|
|
13
15
|
Alias: 'Organization.alias',
|
|
14
16
|
PartOf: 'Organization.part-of',
|
|
15
17
|
Telecom: 'Organization.telecom',
|
|
@@ -20,6 +22,7 @@ export const OrganizationClaimSpecs = [
|
|
|
20
22
|
{ key: OrganizationClaim.Active, meaning: 'Active flag.', example: 'true' },
|
|
21
23
|
{ key: OrganizationClaim.Type, meaning: 'Organization type token.', example: 'http://terminology.hl7.org/CodeSystem/organization-type|dept' },
|
|
22
24
|
{ key: OrganizationClaim.Name, meaning: 'Display name.', example: 'Cardiology Department' },
|
|
25
|
+
{ key: OrganizationClaim.Description, meaning: 'Consumer-facing department description materialized in FHIR R5.', example: 'Specialist cardiovascular care.' },
|
|
23
26
|
{ key: OrganizationClaim.Alias, meaning: 'Alternate names as CSV.', example: 'Cardiology,Heart Clinic' },
|
|
24
27
|
{ key: OrganizationClaim.PartOf, meaning: 'Parent organization reference.', example: 'Organization/hospital-1' },
|
|
25
28
|
{ key: OrganizationClaim.Telecom, meaning: 'Contact values as CSV.', example: 'tel:+16045550101,mailto:cardiology@example.org' },
|
|
@@ -7,6 +7,7 @@ export declare const ProcedureClaim: {
|
|
|
7
7
|
readonly CodeDisplay: "Procedure.code-display";
|
|
8
8
|
readonly Date: "Procedure.date";
|
|
9
9
|
readonly Encounter: "Procedure.encounter";
|
|
10
|
+
readonly FocalDevice: "Procedure.focal-device";
|
|
10
11
|
readonly Identifier: "Procedure.identifier";
|
|
11
12
|
readonly InstantiatesCanonical: "Procedure.instantiates-canonical";
|
|
12
13
|
readonly InstantiatesUri: "Procedure.instantiates-uri";
|
|
@@ -16,6 +17,7 @@ export declare const ProcedureClaim: {
|
|
|
16
17
|
readonly Performer: "Procedure.performer";
|
|
17
18
|
readonly ReasonCode: "Procedure.reason-code";
|
|
18
19
|
readonly ReasonReference: "Procedure.reason-reference";
|
|
20
|
+
readonly Report: "Procedure.report";
|
|
19
21
|
readonly Status: "Procedure.status";
|
|
20
22
|
readonly Subject: "Procedure.subject";
|
|
21
23
|
readonly Note: "Procedure.note";
|
|
@@ -8,6 +8,7 @@ export const ProcedureClaim = {
|
|
|
8
8
|
CodeDisplay: 'Procedure.code-display',
|
|
9
9
|
Date: 'Procedure.date',
|
|
10
10
|
Encounter: 'Procedure.encounter',
|
|
11
|
+
FocalDevice: 'Procedure.focal-device',
|
|
11
12
|
Identifier: 'Procedure.identifier',
|
|
12
13
|
InstantiatesCanonical: 'Procedure.instantiates-canonical',
|
|
13
14
|
InstantiatesUri: 'Procedure.instantiates-uri',
|
|
@@ -17,6 +18,7 @@ export const ProcedureClaim = {
|
|
|
17
18
|
Performer: 'Procedure.performer',
|
|
18
19
|
ReasonCode: 'Procedure.reason-code',
|
|
19
20
|
ReasonReference: 'Procedure.reason-reference',
|
|
21
|
+
Report: 'Procedure.report',
|
|
20
22
|
Status: 'Procedure.status',
|
|
21
23
|
Subject: 'Procedure.subject',
|
|
22
24
|
Note: 'Procedure.note',
|
|
@@ -29,6 +31,7 @@ export const ProcedureClaimSpecs = [
|
|
|
29
31
|
{ key: ProcedureClaim.CodeDisplay, meaning: 'Canonical/international procedure display label.', example: 'Appendectomy' },
|
|
30
32
|
{ key: ProcedureClaim.Date, meaning: 'Performed date/time.', example: '2026-06-01T10:00:00Z' },
|
|
31
33
|
{ key: ProcedureClaim.Encounter, meaning: 'Encounter reference.', example: 'Encounter/enc-1' },
|
|
34
|
+
{ key: ProcedureClaim.FocalDevice, meaning: 'Device manipulated, calibrated, installed or otherwise changed by the procedure.', example: 'Device/device-1' },
|
|
32
35
|
{ key: ProcedureClaim.Identifier, meaning: 'Business identifier.', example: 'procedure-001' },
|
|
33
36
|
{ key: ProcedureClaim.InstantiatesCanonical, meaning: 'Instantiated canonical plan/protocol.', example: 'http://example.org/PlanDefinition/appendectomy' },
|
|
34
37
|
{ key: ProcedureClaim.InstantiatesUri, meaning: 'Instantiated URI.', example: 'urn:procedure-protocol:appendectomy' },
|
|
@@ -38,6 +41,7 @@ export const ProcedureClaimSpecs = [
|
|
|
38
41
|
{ key: ProcedureClaim.Performer, meaning: 'Performer references (CSV).', example: 'Practitioner/prac-1' },
|
|
39
42
|
{ key: ProcedureClaim.ReasonCode, meaning: 'Reason code token.', example: 'http://snomed.info/sct|233604007' },
|
|
40
43
|
{ key: ProcedureClaim.ReasonReference, meaning: 'Reason reference.', example: 'Condition/cond-1' },
|
|
44
|
+
{ key: ProcedureClaim.Report, meaning: 'Resulting report or evidence references.', example: 'DocumentReference/report-1' },
|
|
41
45
|
{ key: ProcedureClaim.Status, meaning: 'Procedure status.', example: 'completed' },
|
|
42
46
|
{ key: ProcedureClaim.Subject, meaning: 'Canonical subject reference.', example: 'did:web:patient.example.org' },
|
|
43
47
|
{ key: ProcedureClaim.Note, meaning: 'Clinical note text.', example: 'Procedure tolerated well.' },
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ClaimSpec } from './claim-types.js';
|
|
2
|
+
/** Canonical flat claims for the FHIR R5 RegulatedAuthorization resource. */
|
|
3
|
+
export declare const RegulatedAuthorizationClaim: {
|
|
4
|
+
readonly Identifier: "RegulatedAuthorization.identifier";
|
|
5
|
+
readonly Subject: "RegulatedAuthorization.subject";
|
|
6
|
+
readonly Type: "RegulatedAuthorization.type";
|
|
7
|
+
readonly Region: "RegulatedAuthorization.region";
|
|
8
|
+
readonly Status: "RegulatedAuthorization.status";
|
|
9
|
+
readonly StatusDate: "RegulatedAuthorization.status-date";
|
|
10
|
+
readonly ValidityStart: "RegulatedAuthorization.validity-start";
|
|
11
|
+
readonly ValidityEnd: "RegulatedAuthorization.validity-end";
|
|
12
|
+
readonly Basis: "RegulatedAuthorization.basis";
|
|
13
|
+
readonly Holder: "RegulatedAuthorization.holder";
|
|
14
|
+
readonly Regulator: "RegulatedAuthorization.regulator";
|
|
15
|
+
};
|
|
16
|
+
export type RegulatedAuthorizationClaimKey = typeof RegulatedAuthorizationClaim[keyof typeof RegulatedAuthorizationClaim];
|
|
17
|
+
export declare const RegulatedAuthorizationClaimSpecs: readonly ClaimSpec[];
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** Canonical flat claims for the FHIR R5 RegulatedAuthorization resource. */
|
|
2
|
+
export const RegulatedAuthorizationClaim = {
|
|
3
|
+
Identifier: 'RegulatedAuthorization.identifier',
|
|
4
|
+
Subject: 'RegulatedAuthorization.subject',
|
|
5
|
+
Type: 'RegulatedAuthorization.type',
|
|
6
|
+
Region: 'RegulatedAuthorization.region',
|
|
7
|
+
Status: 'RegulatedAuthorization.status',
|
|
8
|
+
StatusDate: 'RegulatedAuthorization.status-date',
|
|
9
|
+
ValidityStart: 'RegulatedAuthorization.validity-start',
|
|
10
|
+
ValidityEnd: 'RegulatedAuthorization.validity-end',
|
|
11
|
+
Basis: 'RegulatedAuthorization.basis',
|
|
12
|
+
Holder: 'RegulatedAuthorization.holder',
|
|
13
|
+
Regulator: 'RegulatedAuthorization.regulator',
|
|
14
|
+
};
|
|
15
|
+
export const RegulatedAuthorizationClaimSpecs = Object.freeze([
|
|
16
|
+
{ key: RegulatedAuthorizationClaim.Identifier, meaning: 'Identifier assigned by the authorizing body.', example: 'authorization-1' },
|
|
17
|
+
{ key: RegulatedAuthorizationClaim.Subject, meaning: 'Authorized product type, facility or activity reference.', example: 'Location/location-1' },
|
|
18
|
+
{ key: RegulatedAuthorizationClaim.Type, meaning: 'Authorization type coding token.', example: 'https://example.invalid/codes|operation' },
|
|
19
|
+
{ key: RegulatedAuthorizationClaim.Region, meaning: 'Jurisdiction coding token.', example: 'urn:iso:std:iso:3166|CA' },
|
|
20
|
+
{ key: RegulatedAuthorizationClaim.Status, meaning: 'Authorization publication status.', example: 'active' },
|
|
21
|
+
{ key: RegulatedAuthorizationClaim.StatusDate, meaning: 'Date the status was assigned.', example: '2026-09-29T16:00:00Z' },
|
|
22
|
+
{ key: RegulatedAuthorizationClaim.ValidityStart, meaning: 'Authorization validity start.', example: '2026-09-29' },
|
|
23
|
+
{ key: RegulatedAuthorizationClaim.ValidityEnd, meaning: 'Authorization validity end.', example: '2027-09-29' },
|
|
24
|
+
{ key: RegulatedAuthorizationClaim.Basis, meaning: 'Regulatory basis coding token.', example: 'https://example.invalid/codes|installed-device' },
|
|
25
|
+
{ key: RegulatedAuthorizationClaim.Holder, meaning: 'Organization granted the authorization.', example: 'Organization/holder-1' },
|
|
26
|
+
{ key: RegulatedAuthorizationClaim.Regulator, meaning: 'Regulatory authority granting the authorization.', example: 'Organization/regulator-1' },
|
|
27
|
+
]);
|