gdc-common-utils-ts 1.20.2 → 1.23.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.
Files changed (86) hide show
  1. package/README.md +2 -2
  2. package/dist/claims/claims-helpers-related-person.d.ts +14 -0
  3. package/dist/claims/claims-helpers-related-person.js +28 -0
  4. package/dist/constants/Schemas.d.ts +3 -0
  5. package/dist/constants/Schemas.js +3 -0
  6. package/dist/constants/fhir-code-systems.d.ts +1 -0
  7. package/dist/constants/fhir-code-systems.js +1 -0
  8. package/dist/constants/fhir-resource-types.d.ts +2 -0
  9. package/dist/constants/fhir-resource-types.js +1 -0
  10. package/dist/constants/index.d.ts +3 -0
  11. package/dist/constants/index.js +3 -0
  12. package/dist/constants/individual-sections.d.ts +210 -0
  13. package/dist/constants/individual-sections.js +35 -0
  14. package/dist/constants/lifecycle.d.ts +17 -0
  15. package/dist/constants/lifecycle.js +18 -0
  16. package/dist/constants/observation-category.d.ts +72 -0
  17. package/dist/constants/observation-category.js +30 -0
  18. package/dist/constants/schemaorg.d.ts +4 -0
  19. package/dist/constants/schemaorg.js +4 -0
  20. package/dist/constants/vital-signs.d.ts +2 -17
  21. package/dist/constants/vital-signs.js +1 -6
  22. package/dist/convert/convert-observation.d.ts +20 -2
  23. package/dist/convert/convert-observation.js +80 -9
  24. package/dist/examples/index.d.ts +2 -0
  25. package/dist/examples/index.js +2 -0
  26. package/dist/examples/invoice.d.ts +37 -0
  27. package/dist/examples/invoice.js +72 -0
  28. package/dist/examples/license.d.ts +161 -0
  29. package/dist/examples/license.js +136 -7
  30. package/dist/examples/lifecycle.d.ts +44 -0
  31. package/dist/examples/lifecycle.js +25 -0
  32. package/dist/examples/related-person.d.ts +348 -0
  33. package/dist/examples/related-person.js +184 -2
  34. package/dist/examples/shared.d.ts +110 -8
  35. package/dist/examples/shared.js +129 -17
  36. package/dist/examples/vital-signs.d.ts +56 -0
  37. package/dist/examples/vital-signs.js +159 -0
  38. package/dist/models/fhir-documents.d.ts +35 -0
  39. package/dist/models/indexing.d.ts +68 -6
  40. package/dist/models/indexing.js +294 -11
  41. package/dist/models/interoperable-claims/index.d.ts +1 -0
  42. package/dist/models/interoperable-claims/index.js +1 -0
  43. package/dist/models/interoperable-claims/invoice-claims.d.ts +277 -0
  44. package/dist/models/interoperable-claims/invoice-claims.js +353 -0
  45. package/dist/models/interoperable-claims/observation-claims.d.ts +253 -1
  46. package/dist/models/interoperable-claims/observation-claims.js +249 -3
  47. package/dist/models/interoperable-claims.d.ts +1 -1
  48. package/dist/models/interoperable-claims.js +1 -1
  49. package/dist/models/urlPath.d.ts +3 -1
  50. package/dist/models/urlPath.js +2 -0
  51. package/dist/utils/bundle-document-builder.js +22 -4
  52. package/dist/utils/bundle-editor.d.ts +105 -2
  53. package/dist/utils/bundle-editor.js +282 -2
  54. package/dist/utils/clinical-resource-converters.d.ts +4 -4
  55. package/dist/utils/clinical-resource-converters.js +5 -5
  56. package/dist/utils/communication-attached-bundle-session.d.ts +11 -0
  57. package/dist/utils/communication-attached-bundle-session.js +29 -0
  58. package/dist/utils/consent-lifecycle-result-reader.d.ts +24 -0
  59. package/dist/utils/consent-lifecycle-result-reader.js +27 -0
  60. package/dist/utils/employee.d.ts +25 -0
  61. package/dist/utils/employee.js +57 -0
  62. package/dist/utils/gw-core-path.d.ts +24 -0
  63. package/dist/utils/gw-core-path.js +21 -0
  64. package/dist/utils/index.d.ts +11 -0
  65. package/dist/utils/index.js +11 -0
  66. package/dist/utils/individual-bundle-vault.d.ts +144 -0
  67. package/dist/utils/individual-bundle-vault.js +455 -0
  68. package/dist/utils/individual-organization-lifecycle.d.ts +104 -0
  69. package/dist/utils/individual-organization-lifecycle.js +179 -0
  70. package/dist/utils/interoperable-resource-operation.d.ts +158 -0
  71. package/dist/utils/interoperable-resource-operation.js +244 -0
  72. package/dist/utils/invoice-bundle.d.ts +82 -0
  73. package/dist/utils/invoice-bundle.js +240 -0
  74. package/dist/utils/license-commercial-search.d.ts +118 -0
  75. package/dist/utils/license-commercial-search.js +228 -0
  76. package/dist/utils/license-list-search.d.ts +105 -0
  77. package/dist/utils/license-list-search.js +209 -0
  78. package/dist/utils/license-offer-order.d.ts +107 -0
  79. package/dist/utils/license-offer-order.js +262 -0
  80. package/dist/utils/license.d.ts +6 -0
  81. package/dist/utils/license.js +6 -0
  82. package/dist/utils/lifecycle-result-reader.d.ts +33 -0
  83. package/dist/utils/lifecycle-result-reader.js +99 -0
  84. package/dist/utils/related-person-list.d.ts +20 -0
  85. package/dist/utils/related-person-list.js +54 -0
  86. package/package.json +2 -1
@@ -18,6 +18,7 @@ export declare const EXAMPLE_ROUTE_VERSION: "v1";
18
18
  export declare const EXAMPLE_SECTOR: "health-care";
19
19
  export declare const EXAMPLE_EMAIL_CONTROLLER_ORG: "controller@acme.org";
20
20
  export declare const EXAMPLE_EMAIL_CONTROLLER_INDIVIDUAL: "ana.parent@example.org";
21
+ export declare const EXAMPLE_INTEROPERABLE_CONTEXT_FHIR_API: "org.hl7.fhir.api";
21
22
  export declare const EXAMPLE_SELF_REGISTERED_INDIVIDUAL_ALTERNATE_NAME: "Jane";
22
23
  export declare const EXAMPLE_SELF_REGISTERED_INDIVIDUAL_EMAIL: "Jane.Doe@example.com";
23
24
  export declare const EXAMPLE_SELF_REGISTERED_INDIVIDUAL_EMAIL_NORMALIZED: "jane.doe@example.com";
@@ -95,6 +96,10 @@ export declare const EXAMPLE_CONTROLLER_SAME_AS: "mailto:controller@acme.org";
95
96
  export declare const EXAMPLE_API_ORGANIZATION_DID: "did:web:api.acme.org";
96
97
  export declare const EXAMPLE_SERVICE_PUBLIC_DID: "did:web:public.acme.org";
97
98
  export declare const EXAMPLE_SUBJECT_DID: "did:web:api.acme.org:individual:123";
99
+ export declare const EXAMPLE_SUBJECT_DID_SECONDARY: "did:web:api.acme.org:individual:456";
100
+ export declare const EXAMPLE_SUBJECT_DID_TERTIARY: "did:web:api.acme.org:individual:789";
101
+ export declare const EXAMPLE_SUBJECT_DID_CONDITION: "did:web:api.acme.org:individual:cond";
102
+ export declare const EXAMPLE_SUBJECT_DID_IPS: "did:web:api.acme.org:individual:ips";
98
103
  export declare const EXAMPLE_PROFESSIONAL_DID: "did:web:api.acme.org:professional:1";
99
104
  export declare const EXAMPLE_PROVIDER_ORGANIZATION_DID: "did:web:hospital.acme.org";
100
105
  export declare const EXAMPLE_PROVIDER_ORGANIZATION_URL: "https://hospital.acme.org";
@@ -126,6 +131,11 @@ export declare const EXAMPLE_PRACTITIONER_DID: "did:web:practitioner.example";
126
131
  export declare const EXAMPLE_GENERIC_SUBJECT_DID: "did:web:subject.example";
127
132
  export declare const EXAMPLE_EMAIL_PROFESSIONAL: "doctor.oncall@example.org";
128
133
  export declare const EXAMPLE_EMAIL_RELATED_PERSON: "parent.guardian@example.org";
134
+ export declare const EXAMPLE_RELATED_PERSON_ACTIVE_NAME: "Jose Example";
135
+ export declare const EXAMPLE_RELATED_PERSON_INACTIVE_IDENTIFIER: "urn:uuid:related-person-002";
136
+ export declare const EXAMPLE_RELATED_PERSON_INACTIVE_EMAIL: "caregiver.two@example.org";
137
+ export declare const EXAMPLE_RELATED_PERSON_INACTIVE_NAME: "Maria Example";
138
+ export declare const EXAMPLE_RELATED_PERSON_INACTIVE_RELATIONSHIP: "http://terminology.hl7.org/CodeSystem/v3-RoleCode|NMTH";
129
139
  export declare const EXAMPLE_HEALTHCARE_JURISDICTION: "ES";
130
140
  export declare const EXAMPLE_SECONDARY_HEALTHCARE_JURISDICTION: "PT";
131
141
  export declare const EXAMPLE_ORGANIZATION_CONTROLLER_ROLE: "RESPRSN";
@@ -147,12 +157,18 @@ export declare const EXAMPLE_CONSENT_PURPOSE_TREATMENT: "TREAT";
147
157
  export declare const EXAMPLE_CONSENT_PURPOSE_EMERGENCY_TREATMENT: "ETREAT";
148
158
  export declare const EXAMPLE_CONSENT_UUID: "urn:uuid:consent-example-001";
149
159
  export declare const EXAMPLE_CONSENT_IDENTIFIER: "urn:uuid:consent-example-001";
160
+ export declare const EXAMPLE_CONSENT_IDENTIFIER_SECONDARY: "urn:uuid:consent-example-002";
150
161
  export declare const EXAMPLE_CONSENT_OPERATION_IDENTIFIER: "consent-operation-example-001";
151
162
  export declare const EXAMPLE_CONSENT_OPERATION_THREAD_ID: "thread-consent-example-001";
152
163
  export declare const EXAMPLE_CONSENT_PERIOD_START: "2026-05-20T00:00:00Z";
153
164
  export declare const EXAMPLE_COMMUNICATION_UUID: "urn:uuid:communication-example-001";
154
165
  export declare const EXAMPLE_COMMUNICATION_IDENTIFIER: "urn:uuid:communication-example-001";
155
166
  export declare const EXAMPLE_IPS_BUNDLE_NOTE_TEXT: "IPS ingestion request";
167
+ export declare const EXAMPLE_CONTENT_TYPE_APPLICATION_JSON: "application/json";
168
+ export declare const EXAMPLE_CONTENT_TYPE_FHIR_JSON: "application/fhir+json";
169
+ export declare const EXAMPLE_IPS_BUNDLE_ATTACHMENT_TITLE: "IPS Document Bundle";
170
+ export declare const EXAMPLE_BUNDLE_RESOURCE_TYPE: "Bundle";
171
+ export declare const EXAMPLE_BUNDLE_TYPE_BATCH: "batch";
156
172
  export declare const EXAMPLE_MEDICATION_STATEMENT_UUID: "urn:uuid:medication-statement-example-001";
157
173
  export declare const EXAMPLE_MEDICATION_STATEMENT_IDENTIFIER: "urn:uuid:medication-statement-example-001";
158
174
  export declare const EXAMPLE_MEDICATION_STATEMENT_STATUS: "active";
@@ -164,6 +180,15 @@ export declare const EXAMPLE_DOCUMENT_REFERENCE_CONTENT_TYPE_PDF: "application/p
164
180
  export declare const EXAMPLE_DOCUMENT_REFERENCE_URL: "https://example.org/prescription.pdf";
165
181
  export declare const EXAMPLE_DOCUMENT_REFERENCE_DESCRIPTION: "Prescription PDF";
166
182
  export declare const EXAMPLE_DOCUMENT_REFERENCE_DATE: "2026-06-12T10:00:00Z";
183
+ export declare const EXAMPLE_CLINICAL_EVENT_DATE_TIME: "2026-06-01T10:00:00Z";
184
+ export declare const EXAMPLE_VITAL_SIGNS_EFFECTIVE_DATE_TIME: "2026-06-11T08:30:00Z";
185
+ export declare const EXAMPLE_VITAL_SIGNS_PANEL_DATE_TIME: "2026-06-11T09:00:00Z";
186
+ export declare const EXAMPLE_VAULT_PRIMARY_DATE_TIME: "2026-06-11T10:00:00Z";
187
+ export declare const EXAMPLE_VAULT_SECONDARY_DATE_TIME: "2026-06-11T10:05:00Z";
188
+ export declare const EXAMPLE_VAULT_IPS_DATE_TIME: "2026-06-11T11:00:00Z";
189
+ export declare const EXAMPLE_VAULT_TERTIARY_DATE_TIME: "2026-06-11T12:00:00Z";
190
+ export declare const EXAMPLE_VAULT_QUATERNARY_DATE_TIME: "2026-06-11T13:00:00Z";
191
+ export declare const EXAMPLE_VAULT_CONDITION_DATE_TIME: "2026-06-11T14:00:00Z";
167
192
  export declare const EXAMPLE_DOCUMENT_REFERENCE_CONTENT_HASH: "z-document-reference-example-hash";
168
193
  export declare const EXAMPLE_DOCUMENT_REFERENCE_LANGUAGE: "en";
169
194
  export declare const EXAMPLE_CONSENT_ATTACHMENT_CONTENT_TYPE: "application/pdf";
@@ -172,10 +197,87 @@ export declare const EXAMPLE_CONTENT_ADDRESSED_CONSENT_IDENTIFIER: "zQmYwAPJzv5C
172
197
  export declare const EXAMPLE_CONTENT_ADDRESSED_SOURCE_REFERENCE: "zQmWvM9dQmWvM9dQmWvM9dQmWvM9dQmWvM9dQmWvM9dQmWv";
173
198
  export declare const EXAMPLE_CONTENT_ADDRESSED_EVIDENCE_RECORD_IDENTIFIER: "zQmXh8Y3mJQ4d7MmX7o9nP5sQ2uT1vW6xY8zA3bC4dE5fG";
174
199
  export declare const EXAMPLE_EMPLOYEE_ACTIVATION_CODE: "ACT-001";
200
+ export declare const EXAMPLE_LICENSE_OFFER_ID: "urn:offer:family-003";
201
+ export declare const EXAMPLE_LICENSE_INVALID_OFFER_ID: "urn:offer:invalid-001";
202
+ export declare const EXAMPLE_LICENSE_ACCEPTED_OFFER_ID: "urn:offer:family-003";
203
+ export declare const EXAMPLE_LICENSE_AMOUNT: "9.99";
204
+ export declare const EXAMPLE_LICENSE_CURRENCY: "EUR";
205
+ export declare const EXAMPLE_LICENSE_PLAN_NAME: "Family starter";
206
+ export declare const EXAMPLE_LICENSE_SKU: "FAM-START";
207
+ export declare const EXAMPLE_LICENSE_PAYMENT_METHOD_INVOICE: "invoice";
208
+ export declare const EXAMPLE_LICENSE_CHECKOUT_URL: "https://pay.example/offer-001";
209
+ export declare const EXAMPLE_LICENSE_PAYMENT_URL: "https://pay.example/invoice-001";
210
+ export declare const EXAMPLE_LICENSE_INVOICE_ID: "invoice-001";
211
+ export declare const EXAMPLE_INVOICE_DATE: "2026-06-11T10:00:00Z";
212
+ export declare const EXAMPLE_INVOICE_CHARGEITEM_PRODUCT_CODE: "08412345678903";
213
+ export declare const EXAMPLE_INVOICE_CHARGEITEM_PRODUCT_NAME: "Sterile saline bottle 500 mL";
214
+ export declare const EXAMPLE_INVOICE_CHARGEITEM_CATEGORY: "medical-supplies";
215
+ export declare const EXAMPLE_INVOICE_CHARGEITEM_SUPPLIER_PRODUCT_CODE: "IMP-SAL-500";
216
+ export declare const EXAMPLE_INVOICE_CHARGEITEM_IDENTIFIER: "chargeitem-001";
217
+ export declare const EXAMPLE_INVOICE_CHARGEITEM_STATUS: "billable";
218
+ export declare const EXAMPLE_INVOICE_CHARGEITEM_PART_OF: "invoice-001";
219
+ export declare const EXAMPLE_INVOICE_CHARGEITEM_QUANTITY: "3|bottle";
220
+ export declare const EXAMPLE_INVOICE_CHARGEITEM_QUANTITY_NUMBER: "3";
221
+ export declare const EXAMPLE_INVOICE_CHARGEITEM_QUANTITY_UNIT: "bottle";
222
+ export declare const EXAMPLE_INVOICE_CHARGEITEM_CODE_TEXT: "Botella de suero salino est\u00E9ril 500 mL";
223
+ export declare const EXAMPLE_INVOICE_CHARGEITEM_ITEMS_PER_UNIT: "24";
224
+ export declare const EXAMPLE_INVOICE_CHARGEITEM_ITEMS_QUANTITY: "500|mL";
225
+ export declare const EXAMPLE_INVOICE_CHARGEITEM_ITEMS_QUANTITY_NUMBER: "500";
226
+ export declare const EXAMPLE_INVOICE_CHARGEITEM_ITEMS_QUANTITY_UNIT: "mL";
227
+ export declare const EXAMPLE_LICENSE_PLAN_DEFAULT: "default";
228
+ export declare const EXAMPLE_LICENSE_RENEWAL_CYCLE_YEARLY: "12m";
229
+ export declare const EXAMPLE_LICENSE_SUBJECT_ID_ACTIVE: "urn:uuid:employee-controller-active-001";
230
+ export declare const EXAMPLE_LICENSE_SUBJECT_ID_AVAILABLE: "urn:uuid:subject-license-available-001";
231
+ export declare const EXAMPLE_LICENSE_SEAT_UUID_ACTIVE: "8a8a5e1b-0d8e-4a7c-8c39-3b8034440001";
232
+ export declare const EXAMPLE_LICENSE_SEAT_UUID_SECONDARY: "8a8a5e1b-0d8e-4a7c-8c39-3b8034440002";
233
+ export declare const EXAMPLE_LICENSE_SEAT_UUID_AVAILABLE: "8a8a5e1b-0d8e-4a7c-8c39-3b8034440009";
234
+ export declare const EXAMPLE_JOB_IDENTIFIER_LICENSE_SEARCH: "job-license-search-001";
235
+ export declare const EXAMPLE_THREAD_IDENTIFIER_LICENSE_SEARCH: "thid-license-search-001";
236
+ export declare const EXAMPLE_RELATED_PERSON_IDENTIFIER: "rel-001";
175
237
  export declare const EXAMPLE_DEVICE_CLIENT_ID: "did:web:device-001";
176
238
  export declare const EXAMPLE_LIVE_GW_BASE_URL_LOCAL: "http://127.0.0.1:3000";
177
239
  export declare const EXAMPLE_LIVE_GW_BASE_URL_DOCKER: "http://127.0.0.1:8000";
178
240
  export declare const EXAMPLE_MEDICATION_DOSE_UNIT_MG: "mg";
241
+ export declare const EXAMPLE_OBSERVATION_IDENTIFIER: "urn:uuid:observation-example-001";
242
+ export declare const EXAMPLE_OBSERVATION_IDENTIFIER_IPS: "vs-1";
243
+ export declare const EXAMPLE_OBSERVATION_PANEL_IDENTIFIER: "urn:uuid:observation-panel-example-001";
244
+ export declare const EXAMPLE_OBSERVATION_COMPONENT_IDENTIFIER: "urn:uuid:observation-component-example-001";
245
+ export declare const EXAMPLE_OBSERVATION_COMPONENT_IDENTIFIER_SECONDARY: "urn:uuid:observation-component-example-002";
246
+ export declare const EXAMPLE_IPS_COMPOSITION_IDENTIFIER: "ips-composition";
247
+ export declare const EXAMPLE_CONDITION_IDENTIFIER: "condition-example-001";
248
+ export declare const EXAMPLE_VITAL_SIGNS_NOTE: "Measured after rest.";
249
+ export declare const EXAMPLE_FHIR_STATUS_FINAL: "final";
250
+ export declare const EXAMPLE_FHIR_STATUS_ACTIVE: "active";
251
+ export declare const EXAMPLE_FHIR_VERIFICATION_STATUS_CONFIRMED: "confirmed";
252
+ export declare const EXAMPLE_VITAL_SIGN_VALUE_HEART_RATE: 68;
253
+ export declare const EXAMPLE_VITAL_SIGN_VALUE_SYSTOLIC: 120;
254
+ export declare const EXAMPLE_VITAL_SIGN_VALUE_DIASTOLIC: 78;
255
+ export declare const EXAMPLE_VITAL_SIGN_VALUE_BODY_TEMPERATURE: 37.1;
256
+ export declare const EXAMPLE_VITAL_SIGN_UNIT_BEATS_PER_MINUTE: "/min";
257
+ export declare const EXAMPLE_OBSERVATION_CATEGORY_VITAL_SIGNS: "http://terminology.hl7.org/CodeSystem/observation-category|vital-signs";
258
+ export declare const EXAMPLE_VITAL_SIGN_CODE_HEART_RATE: "8867-4";
259
+ export declare const EXAMPLE_VITAL_SIGN_CODE_BODY_TEMPERATURE: "8310-5";
260
+ export declare const EXAMPLE_VITAL_SIGN_CODE_BLOOD_PRESSURE_PANEL: "85354-9";
261
+ export declare const EXAMPLE_VITAL_SIGN_CODE_SYSTOLIC_BLOOD_PRESSURE: "8480-6";
262
+ export declare const EXAMPLE_VITAL_SIGN_CODE_DIASTOLIC_BLOOD_PRESSURE: "8462-4";
263
+ export declare const EXAMPLE_VITAL_SIGN_DISPLAY_HEART_RATE: "Heart rate";
264
+ export declare const EXAMPLE_VITAL_SIGN_DISPLAY_BODY_TEMPERATURE: "Body temperature";
265
+ export declare const EXAMPLE_VITAL_SIGN_DISPLAY_VITAL_SIGNS: "Vital Signs";
266
+ export declare const EXAMPLE_VITAL_SIGN_DISPLAY_BLOOD_PRESSURE_PANEL: "Blood pressure panel";
267
+ /** Shared composite tag summary used by blood-pressure parent observation indexing examples. */
268
+ export declare const EXAMPLE_OBSERVATION_COMPONENT_TAGS_BLOOD_PRESSURE: "bp-systolic,bp-diastolic";
269
+ /** Shared component code summary used by blood-pressure parent observation indexing examples. */
270
+ export declare const EXAMPLE_OBSERVATION_COMPONENT_CODE_VALUES_BLOOD_PRESSURE: "8480-6,8462-4";
271
+ /** Shared human-readable component-name summary used by blood-pressure parent observation indexing examples. */
272
+ export declare const EXAMPLE_OBSERVATION_COMPONENT_NAMES_BLOOD_PRESSURE: "Systolic blood pressure,Diastolic blood pressure";
273
+ export declare const EXAMPLE_SOCIAL_HISTORY_CATEGORY: "http://terminology.hl7.org/CodeSystem/observation-category|social-history";
274
+ export declare const EXAMPLE_OBSERVATION_CODE_TOBACCO_SMOKING_STATUS: "72166-2";
275
+ export declare const EXAMPLE_OBSERVATION_DISPLAY_TOBACCO_SMOKING_STATUS: "Tobacco smoking status";
276
+ export declare const EXAMPLE_OBSERVATION_VALUE_CONCEPT_NEVER_SMOKER_CODE: "266919005";
277
+ export declare const EXAMPLE_OBSERVATION_VALUE_CONCEPT_NEVER_SMOKER_DISPLAY: "Never smoker";
278
+ export declare const EXAMPLE_OBSERVATION_VALUE_CONCEPT_NEVER_SMOKER: "http://snomed.info/sct|266919005";
279
+ export declare const EXAMPLE_CONDITION_CODE: "http://snomed.info/sct|44054006";
280
+ export declare const EXAMPLE_MEDICATION_CODE_RXNORM: "http://www.nlm.nih.gov/research/umls/rxnorm|860975";
179
281
  export declare const EXAMPLE_MEDICATION_TIMING_PERIOD_UNIT_HOURS: "h";
180
282
  export declare const EXAMPLE_MEDICATION_IBUPROFEN_TEXT: "Ibuprofen 400 mg";
181
283
  export declare const EXAMPLE_MEDICATION_IBUPROFEN_IDENTIFIER_PREFIX: "urn:uuid:med-ibuprofen";
@@ -289,35 +391,35 @@ export declare function buildExampleCommunicationIngestionPayload({ subjectDid,
289
391
  data: {
290
392
  type: string;
291
393
  resource: {
292
- resourceType: string;
394
+ resourceType: "Communication";
293
395
  status: string;
294
396
  subject: {
295
397
  reference: string;
296
398
  };
297
399
  category: {
298
400
  coding: {
299
- system: string;
401
+ system: "http://terminology.hl7.org/CodeSystem/communication-category";
300
402
  code: string;
301
403
  }[];
302
404
  }[];
303
405
  payload: {
304
406
  contentAttachment: {
305
- contentType: string;
306
- title: string;
407
+ contentType: "application/fhir+json";
408
+ title: "IPS Document Bundle";
307
409
  data: string;
308
410
  };
309
411
  }[];
310
412
  note: {
311
- text: string;
413
+ text: "IPS ingestion request";
312
414
  }[];
313
415
  meta: {
314
416
  claims: {
315
- '@context': string;
417
+ '@context': "org.hl7.fhir.r4";
316
418
  "Communication.category": string;
317
419
  "Communication.subject": "did:web:api.acme.org:individual:123";
318
420
  "Communication.sent": string;
319
- "Communication.content-attachment-type": string;
320
- "Communication.text": string;
421
+ "Communication.content-attachment-type": "application/fhir+json";
422
+ "Communication.text": "IPS ingestion request";
321
423
  };
322
424
  };
323
425
  };
@@ -2,9 +2,14 @@
2
2
  // Always create JSDoc, do not use strings inline in keys nor values, use types instead, and reuse the data test examples.
3
3
  import { DataspaceSectors } from '../constants/sectors.js';
4
4
  import { HostNetworkTypes } from '../constants/network.js';
5
+ import { FhirCodeSystems } from '../constants/fhir-code-systems.js';
6
+ import { Format } from '../constants/Schemas.js';
7
+ import { ResourceTypesFhirR4 } from '../constants/fhir-resource-types.js';
5
8
  import { BirthSex, GenderIdentity } from '../constants/identity-gender.js';
6
9
  import { IdKind } from '../constants/identity-identifiers.js';
7
- import { HealthcareActorRoles, HealthcareBasicSections, HealthcareConsentPurposes, } from '../constants/healthcare.js';
10
+ import { HealthcareActorRoles, HealthcareBasicSections, HealthcareConsentPurposes, HealthcareDocumentTypes, } from '../constants/healthcare.js';
11
+ import { CommunicationCategoryCodes } from '../constants/communication.js';
12
+ import { LOINC_SYSTEM_URL } from '../models/clinical-sections.js';
8
13
  import { CommunicationClaim } from '../models/interoperable-claims/communication-claims.js';
9
14
  import { MedicationStatementClaim, MedicationStatementClaimsFhirApiExtended, } from '../models/interoperable-claims/medication-statement-claims.js';
10
15
  import { medicationStatementFlatToFhirR4 } from '../utils/clinical-resource-converters.js';
@@ -26,6 +31,7 @@ export const EXAMPLE_ROUTE_VERSION = 'v1';
26
31
  export const EXAMPLE_SECTOR = DataspaceSectors.HealthCare;
27
32
  export const EXAMPLE_EMAIL_CONTROLLER_ORG = 'controller@acme.org';
28
33
  export const EXAMPLE_EMAIL_CONTROLLER_INDIVIDUAL = 'ana.parent@example.org';
34
+ export const EXAMPLE_INTEROPERABLE_CONTEXT_FHIR_API = Format.FHIR_API;
29
35
  export const EXAMPLE_SELF_REGISTERED_INDIVIDUAL_ALTERNATE_NAME = 'Jane';
30
36
  export const EXAMPLE_SELF_REGISTERED_INDIVIDUAL_EMAIL = 'Jane.Doe@example.com';
31
37
  export const EXAMPLE_SELF_REGISTERED_INDIVIDUAL_EMAIL_NORMALIZED = 'jane.doe@example.com';
@@ -103,6 +109,10 @@ export const EXAMPLE_CONTROLLER_SAME_AS = `mailto:${EXAMPLE_CONTROLLER_EMAIL}`;
103
109
  export const EXAMPLE_API_ORGANIZATION_DID = 'did:web:api.acme.org';
104
110
  export const EXAMPLE_SERVICE_PUBLIC_DID = 'did:web:public.acme.org';
105
111
  export const EXAMPLE_SUBJECT_DID = 'did:web:api.acme.org:individual:123';
112
+ export const EXAMPLE_SUBJECT_DID_SECONDARY = 'did:web:api.acme.org:individual:456';
113
+ export const EXAMPLE_SUBJECT_DID_TERTIARY = 'did:web:api.acme.org:individual:789';
114
+ export const EXAMPLE_SUBJECT_DID_CONDITION = 'did:web:api.acme.org:individual:cond';
115
+ export const EXAMPLE_SUBJECT_DID_IPS = 'did:web:api.acme.org:individual:ips';
106
116
  export const EXAMPLE_PROFESSIONAL_DID = 'did:web:api.acme.org:professional:1';
107
117
  export const EXAMPLE_PROVIDER_ORGANIZATION_DID = 'did:web:hospital.acme.org';
108
118
  export const EXAMPLE_PROVIDER_ORGANIZATION_URL = 'https://hospital.acme.org';
@@ -134,6 +144,11 @@ export const EXAMPLE_PRACTITIONER_DID = 'did:web:practitioner.example';
134
144
  export const EXAMPLE_GENERIC_SUBJECT_DID = 'did:web:subject.example';
135
145
  export const EXAMPLE_EMAIL_PROFESSIONAL = 'doctor.oncall@example.org';
136
146
  export const EXAMPLE_EMAIL_RELATED_PERSON = 'parent.guardian@example.org';
147
+ export const EXAMPLE_RELATED_PERSON_ACTIVE_NAME = 'Jose Example';
148
+ export const EXAMPLE_RELATED_PERSON_INACTIVE_IDENTIFIER = 'urn:uuid:related-person-002';
149
+ export const EXAMPLE_RELATED_PERSON_INACTIVE_EMAIL = 'caregiver.two@example.org';
150
+ export const EXAMPLE_RELATED_PERSON_INACTIVE_NAME = 'Maria Example';
151
+ export const EXAMPLE_RELATED_PERSON_INACTIVE_RELATIONSHIP = 'http://terminology.hl7.org/CodeSystem/v3-RoleCode|NMTH';
137
152
  export const EXAMPLE_HEALTHCARE_JURISDICTION = 'ES';
138
153
  export const EXAMPLE_SECONDARY_HEALTHCARE_JURISDICTION = EXAMPLE_SECONDARY_EU_COUNTRY;
139
154
  export const EXAMPLE_ORGANIZATION_CONTROLLER_ROLE = 'RESPRSN';
@@ -155,12 +170,18 @@ export const EXAMPLE_CONSENT_PURPOSE_TREATMENT = HealthcareConsentPurposes.Treat
155
170
  export const EXAMPLE_CONSENT_PURPOSE_EMERGENCY_TREATMENT = HealthcareConsentPurposes.EmergencyTreatment;
156
171
  export const EXAMPLE_CONSENT_UUID = 'urn:uuid:consent-example-001';
157
172
  export const EXAMPLE_CONSENT_IDENTIFIER = EXAMPLE_CONSENT_UUID;
173
+ export const EXAMPLE_CONSENT_IDENTIFIER_SECONDARY = 'urn:uuid:consent-example-002';
158
174
  export const EXAMPLE_CONSENT_OPERATION_IDENTIFIER = 'consent-operation-example-001';
159
175
  export const EXAMPLE_CONSENT_OPERATION_THREAD_ID = 'thread-consent-example-001';
160
176
  export const EXAMPLE_CONSENT_PERIOD_START = '2026-05-20T00:00:00Z';
161
177
  export const EXAMPLE_COMMUNICATION_UUID = 'urn:uuid:communication-example-001';
162
178
  export const EXAMPLE_COMMUNICATION_IDENTIFIER = EXAMPLE_COMMUNICATION_UUID;
163
179
  export const EXAMPLE_IPS_BUNDLE_NOTE_TEXT = 'IPS ingestion request';
180
+ export const EXAMPLE_CONTENT_TYPE_APPLICATION_JSON = 'application/json';
181
+ export const EXAMPLE_CONTENT_TYPE_FHIR_JSON = 'application/fhir+json';
182
+ export const EXAMPLE_IPS_BUNDLE_ATTACHMENT_TITLE = 'IPS Document Bundle';
183
+ export const EXAMPLE_BUNDLE_RESOURCE_TYPE = 'Bundle';
184
+ export const EXAMPLE_BUNDLE_TYPE_BATCH = 'batch';
164
185
  export const EXAMPLE_MEDICATION_STATEMENT_UUID = 'urn:uuid:medication-statement-example-001';
165
186
  export const EXAMPLE_MEDICATION_STATEMENT_IDENTIFIER = EXAMPLE_MEDICATION_STATEMENT_UUID;
166
187
  export const EXAMPLE_MEDICATION_STATEMENT_STATUS = 'active';
@@ -172,6 +193,15 @@ export const EXAMPLE_DOCUMENT_REFERENCE_CONTENT_TYPE_PDF = 'application/pdf';
172
193
  export const EXAMPLE_DOCUMENT_REFERENCE_URL = 'https://example.org/prescription.pdf';
173
194
  export const EXAMPLE_DOCUMENT_REFERENCE_DESCRIPTION = 'Prescription PDF';
174
195
  export const EXAMPLE_DOCUMENT_REFERENCE_DATE = '2026-06-12T10:00:00Z';
196
+ export const EXAMPLE_CLINICAL_EVENT_DATE_TIME = '2026-06-01T10:00:00Z';
197
+ export const EXAMPLE_VITAL_SIGNS_EFFECTIVE_DATE_TIME = '2026-06-11T08:30:00Z';
198
+ export const EXAMPLE_VITAL_SIGNS_PANEL_DATE_TIME = '2026-06-11T09:00:00Z';
199
+ export const EXAMPLE_VAULT_PRIMARY_DATE_TIME = '2026-06-11T10:00:00Z';
200
+ export const EXAMPLE_VAULT_SECONDARY_DATE_TIME = '2026-06-11T10:05:00Z';
201
+ export const EXAMPLE_VAULT_IPS_DATE_TIME = '2026-06-11T11:00:00Z';
202
+ export const EXAMPLE_VAULT_TERTIARY_DATE_TIME = '2026-06-11T12:00:00Z';
203
+ export const EXAMPLE_VAULT_QUATERNARY_DATE_TIME = '2026-06-11T13:00:00Z';
204
+ export const EXAMPLE_VAULT_CONDITION_DATE_TIME = '2026-06-11T14:00:00Z';
175
205
  export const EXAMPLE_DOCUMENT_REFERENCE_CONTENT_HASH = 'z-document-reference-example-hash';
176
206
  export const EXAMPLE_DOCUMENT_REFERENCE_LANGUAGE = 'en';
177
207
  export const EXAMPLE_CONSENT_ATTACHMENT_CONTENT_TYPE = EXAMPLE_DOCUMENT_REFERENCE_CONTENT_TYPE_PDF;
@@ -180,10 +210,87 @@ export const EXAMPLE_CONTENT_ADDRESSED_CONSENT_IDENTIFIER = 'zQmYwAPJzv5CZsnAzt8
180
210
  export const EXAMPLE_CONTENT_ADDRESSED_SOURCE_REFERENCE = 'zQmWvM9dQmWvM9dQmWvM9dQmWvM9dQmWvM9dQmWvM9dQmWv';
181
211
  export const EXAMPLE_CONTENT_ADDRESSED_EVIDENCE_RECORD_IDENTIFIER = 'zQmXh8Y3mJQ4d7MmX7o9nP5sQ2uT1vW6xY8zA3bC4dE5fG';
182
212
  export const EXAMPLE_EMPLOYEE_ACTIVATION_CODE = 'ACT-001';
213
+ export const EXAMPLE_LICENSE_OFFER_ID = 'urn:offer:family-003';
214
+ export const EXAMPLE_LICENSE_INVALID_OFFER_ID = 'urn:offer:invalid-001';
215
+ export const EXAMPLE_LICENSE_ACCEPTED_OFFER_ID = EXAMPLE_LICENSE_OFFER_ID;
216
+ export const EXAMPLE_LICENSE_AMOUNT = '9.99';
217
+ export const EXAMPLE_LICENSE_CURRENCY = 'EUR';
218
+ export const EXAMPLE_LICENSE_PLAN_NAME = 'Family starter';
219
+ export const EXAMPLE_LICENSE_SKU = 'FAM-START';
220
+ export const EXAMPLE_LICENSE_PAYMENT_METHOD_INVOICE = 'invoice';
221
+ export const EXAMPLE_LICENSE_CHECKOUT_URL = 'https://pay.example/offer-001';
222
+ export const EXAMPLE_LICENSE_PAYMENT_URL = 'https://pay.example/invoice-001';
223
+ export const EXAMPLE_LICENSE_INVOICE_ID = 'invoice-001';
224
+ export const EXAMPLE_INVOICE_DATE = '2026-06-11T10:00:00Z';
225
+ export const EXAMPLE_INVOICE_CHARGEITEM_PRODUCT_CODE = '08412345678903';
226
+ export const EXAMPLE_INVOICE_CHARGEITEM_PRODUCT_NAME = 'Sterile saline bottle 500 mL';
227
+ export const EXAMPLE_INVOICE_CHARGEITEM_CATEGORY = 'medical-supplies';
228
+ export const EXAMPLE_INVOICE_CHARGEITEM_SUPPLIER_PRODUCT_CODE = 'IMP-SAL-500';
229
+ export const EXAMPLE_INVOICE_CHARGEITEM_IDENTIFIER = 'chargeitem-001';
230
+ export const EXAMPLE_INVOICE_CHARGEITEM_STATUS = 'billable';
231
+ export const EXAMPLE_INVOICE_CHARGEITEM_PART_OF = EXAMPLE_LICENSE_INVOICE_ID;
232
+ export const EXAMPLE_INVOICE_CHARGEITEM_QUANTITY = '3|bottle';
233
+ export const EXAMPLE_INVOICE_CHARGEITEM_QUANTITY_NUMBER = '3';
234
+ export const EXAMPLE_INVOICE_CHARGEITEM_QUANTITY_UNIT = 'bottle';
235
+ export const EXAMPLE_INVOICE_CHARGEITEM_CODE_TEXT = 'Botella de suero salino estéril 500 mL';
236
+ export const EXAMPLE_INVOICE_CHARGEITEM_ITEMS_PER_UNIT = '24';
237
+ export const EXAMPLE_INVOICE_CHARGEITEM_ITEMS_QUANTITY = '500|mL';
238
+ export const EXAMPLE_INVOICE_CHARGEITEM_ITEMS_QUANTITY_NUMBER = '500';
239
+ export const EXAMPLE_INVOICE_CHARGEITEM_ITEMS_QUANTITY_UNIT = 'mL';
240
+ export const EXAMPLE_LICENSE_PLAN_DEFAULT = 'default';
241
+ export const EXAMPLE_LICENSE_RENEWAL_CYCLE_YEARLY = '12m';
242
+ export const EXAMPLE_LICENSE_SUBJECT_ID_ACTIVE = 'urn:uuid:employee-controller-active-001';
243
+ export const EXAMPLE_LICENSE_SUBJECT_ID_AVAILABLE = 'urn:uuid:subject-license-available-001';
244
+ export const EXAMPLE_LICENSE_SEAT_UUID_ACTIVE = '8a8a5e1b-0d8e-4a7c-8c39-3b8034440001';
245
+ export const EXAMPLE_LICENSE_SEAT_UUID_SECONDARY = '8a8a5e1b-0d8e-4a7c-8c39-3b8034440002';
246
+ export const EXAMPLE_LICENSE_SEAT_UUID_AVAILABLE = '8a8a5e1b-0d8e-4a7c-8c39-3b8034440009';
247
+ export const EXAMPLE_JOB_IDENTIFIER_LICENSE_SEARCH = 'job-license-search-001';
248
+ export const EXAMPLE_THREAD_IDENTIFIER_LICENSE_SEARCH = 'thid-license-search-001';
249
+ export const EXAMPLE_RELATED_PERSON_IDENTIFIER = 'rel-001';
183
250
  export const EXAMPLE_DEVICE_CLIENT_ID = 'did:web:device-001';
184
251
  export const EXAMPLE_LIVE_GW_BASE_URL_LOCAL = 'http://127.0.0.1:3000';
185
252
  export const EXAMPLE_LIVE_GW_BASE_URL_DOCKER = 'http://127.0.0.1:8000';
186
253
  export const EXAMPLE_MEDICATION_DOSE_UNIT_MG = 'mg';
254
+ export const EXAMPLE_OBSERVATION_IDENTIFIER = 'urn:uuid:observation-example-001';
255
+ export const EXAMPLE_OBSERVATION_IDENTIFIER_IPS = 'vs-1';
256
+ export const EXAMPLE_OBSERVATION_PANEL_IDENTIFIER = 'urn:uuid:observation-panel-example-001';
257
+ export const EXAMPLE_OBSERVATION_COMPONENT_IDENTIFIER = 'urn:uuid:observation-component-example-001';
258
+ export const EXAMPLE_OBSERVATION_COMPONENT_IDENTIFIER_SECONDARY = 'urn:uuid:observation-component-example-002';
259
+ export const EXAMPLE_IPS_COMPOSITION_IDENTIFIER = 'ips-composition';
260
+ export const EXAMPLE_CONDITION_IDENTIFIER = 'condition-example-001';
261
+ export const EXAMPLE_VITAL_SIGNS_NOTE = 'Measured after rest.';
262
+ export const EXAMPLE_FHIR_STATUS_FINAL = 'final';
263
+ export const EXAMPLE_FHIR_STATUS_ACTIVE = 'active';
264
+ export const EXAMPLE_FHIR_VERIFICATION_STATUS_CONFIRMED = 'confirmed';
265
+ export const EXAMPLE_VITAL_SIGN_VALUE_HEART_RATE = 68;
266
+ export const EXAMPLE_VITAL_SIGN_VALUE_SYSTOLIC = 120;
267
+ export const EXAMPLE_VITAL_SIGN_VALUE_DIASTOLIC = 78;
268
+ export const EXAMPLE_VITAL_SIGN_VALUE_BODY_TEMPERATURE = 37.1;
269
+ export const EXAMPLE_VITAL_SIGN_UNIT_BEATS_PER_MINUTE = '/min';
270
+ export const EXAMPLE_OBSERVATION_CATEGORY_VITAL_SIGNS = 'http://terminology.hl7.org/CodeSystem/observation-category|vital-signs';
271
+ export const EXAMPLE_VITAL_SIGN_CODE_HEART_RATE = '8867-4';
272
+ export const EXAMPLE_VITAL_SIGN_CODE_BODY_TEMPERATURE = '8310-5';
273
+ export const EXAMPLE_VITAL_SIGN_CODE_BLOOD_PRESSURE_PANEL = '85354-9';
274
+ export const EXAMPLE_VITAL_SIGN_CODE_SYSTOLIC_BLOOD_PRESSURE = '8480-6';
275
+ export const EXAMPLE_VITAL_SIGN_CODE_DIASTOLIC_BLOOD_PRESSURE = '8462-4';
276
+ export const EXAMPLE_VITAL_SIGN_DISPLAY_HEART_RATE = 'Heart rate';
277
+ export const EXAMPLE_VITAL_SIGN_DISPLAY_BODY_TEMPERATURE = 'Body temperature';
278
+ export const EXAMPLE_VITAL_SIGN_DISPLAY_VITAL_SIGNS = 'Vital Signs';
279
+ export const EXAMPLE_VITAL_SIGN_DISPLAY_BLOOD_PRESSURE_PANEL = 'Blood pressure panel';
280
+ /** Shared composite tag summary used by blood-pressure parent observation indexing examples. */
281
+ export const EXAMPLE_OBSERVATION_COMPONENT_TAGS_BLOOD_PRESSURE = 'bp-systolic,bp-diastolic';
282
+ /** Shared component code summary used by blood-pressure parent observation indexing examples. */
283
+ export const EXAMPLE_OBSERVATION_COMPONENT_CODE_VALUES_BLOOD_PRESSURE = `${EXAMPLE_VITAL_SIGN_CODE_SYSTOLIC_BLOOD_PRESSURE},${EXAMPLE_VITAL_SIGN_CODE_DIASTOLIC_BLOOD_PRESSURE}`;
284
+ /** Shared human-readable component-name summary used by blood-pressure parent observation indexing examples. */
285
+ export const EXAMPLE_OBSERVATION_COMPONENT_NAMES_BLOOD_PRESSURE = 'Systolic blood pressure,Diastolic blood pressure';
286
+ export const EXAMPLE_SOCIAL_HISTORY_CATEGORY = 'http://terminology.hl7.org/CodeSystem/observation-category|social-history';
287
+ export const EXAMPLE_OBSERVATION_CODE_TOBACCO_SMOKING_STATUS = '72166-2';
288
+ export const EXAMPLE_OBSERVATION_DISPLAY_TOBACCO_SMOKING_STATUS = 'Tobacco smoking status';
289
+ export const EXAMPLE_OBSERVATION_VALUE_CONCEPT_NEVER_SMOKER_CODE = '266919005';
290
+ export const EXAMPLE_OBSERVATION_VALUE_CONCEPT_NEVER_SMOKER_DISPLAY = 'Never smoker';
291
+ export const EXAMPLE_OBSERVATION_VALUE_CONCEPT_NEVER_SMOKER = `${FhirCodeSystems.SnomedCt}|${EXAMPLE_OBSERVATION_VALUE_CONCEPT_NEVER_SMOKER_CODE}`;
292
+ export const EXAMPLE_CONDITION_CODE = 'http://snomed.info/sct|44054006';
293
+ export const EXAMPLE_MEDICATION_CODE_RXNORM = 'http://www.nlm.nih.gov/research/umls/rxnorm|860975';
187
294
  export const EXAMPLE_MEDICATION_TIMING_PERIOD_UNIT_HOURS = 'h';
188
295
  export const EXAMPLE_MEDICATION_IBUPROFEN_TEXT = 'Ibuprofen 400 mg';
189
296
  export const EXAMPLE_MEDICATION_IBUPROFEN_IDENTIFIER_PREFIX = 'urn:uuid:med-ibuprofen';
@@ -236,33 +343,33 @@ export function buildExampleCommunicationIngestionPayload({ subjectDid = EXAMPLE
236
343
  {
237
344
  type: 'Communication-ingestion-request-v1.0',
238
345
  resource: {
239
- resourceType: 'Communication',
346
+ resourceType: ResourceTypesFhirR4.Communication,
240
347
  status: 'completed',
241
348
  subject: { reference: `Patient/${subjectDid}` },
242
349
  category: [{
243
350
  coding: [{
244
- system: 'http://terminology.hl7.org/CodeSystem/communication-category',
245
- code: 'notification',
351
+ system: CommunicationCategoryCodes.Notification.system,
352
+ code: CommunicationCategoryCodes.Notification.code,
246
353
  }],
247
354
  }],
248
355
  payload: [
249
356
  {
250
357
  contentAttachment: {
251
- contentType: 'application/fhir+json',
252
- title: 'IPS Document Bundle',
358
+ contentType: EXAMPLE_CONTENT_TYPE_FHIR_JSON,
359
+ title: EXAMPLE_IPS_BUNDLE_ATTACHMENT_TITLE,
253
360
  data: ipsBundleBase64,
254
361
  },
255
362
  },
256
363
  ],
257
- note: [{ text: 'IPS ingestion request' }],
364
+ note: [{ text: EXAMPLE_IPS_BUNDLE_NOTE_TEXT }],
258
365
  meta: {
259
366
  claims: {
260
- '@context': 'org.hl7.fhir.r4',
261
- [CommunicationClaim.Category]: 'http://terminology.hl7.org/CodeSystem/communication-category|notification',
367
+ '@context': Format.FHIR_R4,
368
+ [CommunicationClaim.Category]: CommunicationCategoryCodes.Notification.claim,
262
369
  [CommunicationClaim.Subject]: subjectDid,
263
370
  [CommunicationClaim.Sent]: sent,
264
- [CommunicationClaim.ContentAttachmentType]: 'application/fhir+json',
265
- [CommunicationClaim.Text]: 'IPS ingestion request',
371
+ [CommunicationClaim.ContentAttachmentType]: EXAMPLE_CONTENT_TYPE_FHIR_JSON,
372
+ [CommunicationClaim.Text]: EXAMPLE_IPS_BUNDLE_NOTE_TEXT,
266
373
  },
267
374
  },
268
375
  },
@@ -331,7 +438,7 @@ export function buildExampleLiveMedicationCases(seed = Date.now()) {
331
438
  export function buildExampleMedicationIpsDocumentBundle(input) {
332
439
  const subjectDid = input.subjectDid || EXAMPLE_SUBJECT_DID;
333
440
  const medicationClaims = {
334
- '@context': 'org.hl7.fhir.api',
441
+ '@context': Format.FHIR_API,
335
442
  [MedicationStatementClaim.Identifier]: input.medication.identifier,
336
443
  [MedicationStatementClaim.Subject]: subjectDid,
337
444
  [MedicationStatementClaim.Status]: EXAMPLE_MEDICATION_STATEMENT_STATUS,
@@ -353,22 +460,27 @@ export function buildExampleMedicationIpsDocumentBundle(input) {
353
460
  claims: medicationClaims,
354
461
  };
355
462
  return {
356
- resourceType: 'Bundle',
463
+ resourceType: ResourceTypesFhirR4.Bundle,
357
464
  type: 'document',
358
465
  entry: [
359
466
  {
360
467
  resource: {
361
- resourceType: 'Composition',
468
+ resourceType: ResourceTypesFhirR4.Composition,
362
469
  id: `composition-${input.medication.identifier}`,
363
470
  status: 'final',
364
471
  subject: { reference: subjectDid },
365
- type: { coding: [{ system: 'http://loinc.org', code: '60591-5' }] },
472
+ type: {
473
+ coding: [{
474
+ system: HealthcareDocumentTypes.IPS.system,
475
+ code: HealthcareDocumentTypes.IPS.code,
476
+ }],
477
+ },
366
478
  section: [
367
479
  {
368
480
  code: {
369
481
  coding: [{
370
- system: 'http://loinc.org',
371
- code: '10160-0',
482
+ system: LOINC_SYSTEM_URL,
483
+ code: HealthcareBasicSections.HistoryOfMedicationUse.code,
372
484
  }],
373
485
  },
374
486
  entry: [
@@ -0,0 +1,56 @@
1
+ import type { BundleEntry, BundleJsonApi } from '../models/bundle';
2
+ import type { BuildVitalSignObservationClaimsInput } from '../utils/individual-bundle-vault';
3
+ /**
4
+ * Shared example inputs for authoring vital-sign Observations in claims-first
5
+ * flows.
6
+ *
7
+ * Reference:
8
+ * - HL7 CIMI Vital Signs with Qualifying Elements IG
9
+ * https://build.fhir.org/ig/HL7/cimi-vital-signs/
10
+ *
11
+ * These examples intentionally cover only direct vital-sign authoring inputs
12
+ * that a person or simple frontend form would create:
13
+ * - heart rate
14
+ * - body temperature
15
+ * - systolic blood pressure
16
+ * - diastolic blood pressure
17
+ *
18
+ * Panel/group authoring is excluded on purpose because panels are typically
19
+ * imported from external FHIR systems or composed by professional workflows.
20
+ */
21
+ /** Example claims-first input for one heart rate Observation (LOINC 8867-4, UCUM /min). */
22
+ export declare const EXAMPLE_VITAL_SIGN_HEART_RATE_INPUT: BuildVitalSignObservationClaimsInput;
23
+ /** Example claims-first input for one body temperature Observation (LOINC 8310-5, UCUM Cel). */
24
+ export declare const EXAMPLE_VITAL_SIGN_BODY_TEMPERATURE_INPUT: BuildVitalSignObservationClaimsInput;
25
+ /** Example claims-first input for one systolic blood pressure Observation (LOINC 8480-6, UCUM mm[Hg]). */
26
+ export declare const EXAMPLE_VITAL_SIGN_SYSTOLIC_BLOOD_PRESSURE_INPUT: BuildVitalSignObservationClaimsInput;
27
+ /** Example claims-first input for one diastolic blood pressure Observation (LOINC 8462-4, UCUM mm[Hg]). */
28
+ export declare const EXAMPLE_VITAL_SIGN_DIASTOLIC_BLOOD_PRESSURE_INPUT: BuildVitalSignObservationClaimsInput;
29
+ /**
30
+ * Builds one high-level bundle entry for a vital-sign Observation.
31
+ *
32
+ * This is the preferred copy-paste pattern for frontend flows:
33
+ * 1. author flat claims with `buildVitalSignObservationClaims(...)`
34
+ * 2. convert them to one FHIR R4 `Observation`
35
+ * 3. keep the claims in `resource.meta.claims`
36
+ * 4. append the entry to a `Bundle.data` array
37
+ */
38
+ export declare function buildVitalSignObservationEntry(input: BuildVitalSignObservationClaimsInput): BundleEntry;
39
+ /**
40
+ * Builds a high-level bundle with one entry per directly authored vital sign.
41
+ *
42
+ * Included examples:
43
+ * - heart rate
44
+ * - body temperature
45
+ * - systolic blood pressure
46
+ * - diastolic blood pressure
47
+ *
48
+ * Panels are intentionally excluded because the app user normally authors
49
+ * simple observations, not professional/imported panel structures.
50
+ */
51
+ export declare function buildExampleVitalSignsObservationBundle(): BundleJsonApi<BundleEntry>;
52
+ /**
53
+ * Builds the same vital-sign bundle through `CommunicationAttachedBundleSession`
54
+ * for flows that already use the in-memory bundle editor/session abstraction.
55
+ */
56
+ export declare function buildExampleVitalSignsObservationBundleSession(): BundleJsonApi<BundleEntry>;