gdc-common-utils-ts 1.14.2 → 1.14.4

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 (42) hide show
  1. package/README.md +4 -0
  2. package/dist/constants/healthcare.d.ts +240 -0
  3. package/dist/constants/healthcare.js +10 -8
  4. package/dist/examples/communication-bundle-session.js +12 -13
  5. package/dist/examples/index.d.ts +1 -0
  6. package/dist/examples/index.js +1 -0
  7. package/dist/examples/ips-bundle.d.ts +25 -0
  8. package/dist/examples/ips-bundle.js +106 -0
  9. package/dist/examples/shared.d.ts +6 -0
  10. package/dist/examples/shared.js +7 -1
  11. package/dist/models/consent-rule.d.ts +7 -0
  12. package/dist/models/consent-rule.js +5 -0
  13. package/dist/models/dataspace-discovery-defaults.d.ts +2 -1
  14. package/dist/models/interoperable-claims/allergy-intolerance-claims.d.ts +43 -0
  15. package/dist/models/interoperable-claims/allergy-intolerance-claims.js +54 -0
  16. package/dist/models/interoperable-claims/condition-claims.d.ts +40 -0
  17. package/dist/models/interoperable-claims/condition-claims.js +50 -0
  18. package/dist/models/interoperable-claims/diagnostic-report-claims.d.ts +96 -0
  19. package/dist/models/interoperable-claims/diagnostic-report-claims.js +105 -0
  20. package/dist/models/interoperable-claims/index.d.ts +1 -0
  21. package/dist/models/interoperable-claims/index.js +1 -0
  22. package/dist/models/interoperable-claims/medication-statement-claims.d.ts +102 -0
  23. package/dist/models/interoperable-claims/medication-statement-claims.js +172 -0
  24. package/dist/utils/allergy-intolerance-claim-helpers.d.ts +10 -0
  25. package/dist/utils/allergy-intolerance-claim-helpers.js +47 -0
  26. package/dist/utils/claim-list-helpers.d.ts +21 -0
  27. package/dist/utils/claim-list-helpers.js +50 -0
  28. package/dist/utils/clinical-resource-view.d.ts +19 -7
  29. package/dist/utils/clinical-resource-view.js +142 -17
  30. package/dist/utils/communication-bundle-session.d.ts +65 -0
  31. package/dist/utils/communication-bundle-session.js +194 -0
  32. package/dist/utils/condition-claim-helpers.d.ts +10 -0
  33. package/dist/utils/condition-claim-helpers.js +47 -0
  34. package/dist/utils/consent-claim-helpers.d.ts +19 -13
  35. package/dist/utils/consent-claim-helpers.js +72 -49
  36. package/dist/utils/dataspace-discovery-defaults.d.ts +64 -0
  37. package/dist/utils/dataspace-discovery-defaults.js +135 -0
  38. package/dist/utils/index.d.ts +3 -0
  39. package/dist/utils/index.js +3 -0
  40. package/dist/utils/medication-claim-helpers.d.ts +20 -1
  41. package/dist/utils/medication-claim-helpers.js +62 -23
  42. package/package.json +1 -1
@@ -0,0 +1,106 @@
1
+ // Copyright 2026 Conectate Soluciones y Aplicaciones SL under the Apache License, Version 2.0.
2
+ import { HealthcareBasicSections } from '../constants/healthcare.js';
3
+ import { CommunicationCategoryCodes } from '../constants/communication.js';
4
+ import { ResourceTypesFhirR4 } from '../constants/fhir-resource-types.js';
5
+ import { AllergyIntoleranceClaim } from '../models/interoperable-claims/allergy-intolerance-claims.js';
6
+ import { CommunicationClaim } from '../models/interoperable-claims/communication-claims.js';
7
+ import { ConditionClaim } from '../models/interoperable-claims/condition-claims.js';
8
+ import { MedicationStatementClaim } from '../models/interoperable-claims/medication-statement-claims.js';
9
+ import { EXAMPLE_COMMUNICATION_IDENTIFIER, EXAMPLE_DOCUMENT_REFERENCE_CONTENT_TYPE_PDF, EXAMPLE_DOCUMENT_REFERENCE_DATE, EXAMPLE_DOCUMENT_REFERENCE_DESCRIPTION, EXAMPLE_DOCUMENT_REFERENCE_IDENTIFIER, EXAMPLE_DOCUMENT_REFERENCE_URL, EXAMPLE_IPS_BUNDLE_NOTE_TEXT, EXAMPLE_MEDICATION_STATEMENT_IDENTIFIER, EXAMPLE_MEDICATION_STATEMENT_STATUS, EXAMPLE_MEDICATION_STATEMENT_TEXT, EXAMPLE_SUBJECT_DID, } from './shared.js';
10
+ import { toClinicalResourceCardViews, toClinicalResourceCommonViews, } from '../utils/clinical-resource-view.js';
11
+ import { CommunicationBundleSession } from '../utils/communication-bundle-session.js';
12
+ /**
13
+ * Builds a minimal IPS-like history bundle with common clinical resource types
14
+ * authored as `resource.meta.claims`.
15
+ */
16
+ export function buildIpsClinicalHistoryBundleExample() {
17
+ const bundleEditor = new CommunicationBundleSession({
18
+ communicationClaims: {
19
+ '@context': 'org.hl7.fhir.r4',
20
+ [CommunicationClaim.Identifier]: EXAMPLE_COMMUNICATION_IDENTIFIER,
21
+ [CommunicationClaim.Subject]: EXAMPLE_SUBJECT_DID,
22
+ [CommunicationClaim.Category]: CommunicationCategoryCodes.Notification.claim,
23
+ [CommunicationClaim.Text]: EXAMPLE_IPS_BUNDLE_NOTE_TEXT,
24
+ },
25
+ });
26
+ bundleEditor.upsertActiveAllergyIntoleranceEntry({
27
+ claims: {
28
+ '@context': 'org.hl7.fhir.api',
29
+ [AllergyIntoleranceClaim.Identifier]: 'allergy-1',
30
+ [AllergyIntoleranceClaim.Subject]: EXAMPLE_SUBJECT_DID,
31
+ [AllergyIntoleranceClaim.Code]: 'http://snomed.info/sct|227493005',
32
+ [AllergyIntoleranceClaim.Category]: HealthcareBasicSections.AllergiesAndIntolerances.attributeValue,
33
+ [AllergyIntoleranceClaim.ClinicalStatus]: 'active',
34
+ [AllergyIntoleranceClaim.VerificationStatus]: 'confirmed',
35
+ [AllergyIntoleranceClaim.OnsetDateTime]: '2026-05-01T08:30:00Z',
36
+ [AllergyIntoleranceClaim.Recorder]: 'did:web:clinic.example.org:member:allergist-1',
37
+ },
38
+ fullUrl: 'urn:uuid:allergy-1',
39
+ });
40
+ bundleEditor.upsertActiveConditionEntry({
41
+ claims: {
42
+ '@context': 'org.hl7.fhir.api',
43
+ [ConditionClaim.Identifier]: 'condition-1',
44
+ [ConditionClaim.Subject]: EXAMPLE_SUBJECT_DID,
45
+ [ConditionClaim.Code]: 'http://snomed.info/sct|44054006',
46
+ [ConditionClaim.Category]: HealthcareBasicSections.ProblemList.attributeValue,
47
+ [ConditionClaim.ClinicalStatus]: 'active',
48
+ [ConditionClaim.VerificationStatus]: 'confirmed',
49
+ [ConditionClaim.OnsetDateTime]: '2026-05-03T09:00:00Z',
50
+ [ConditionClaim.Recorder]: 'did:web:clinic.example.org:member:physician-1',
51
+ },
52
+ fullUrl: 'urn:uuid:condition-1',
53
+ });
54
+ bundleEditor.upsertActiveMedicationStatementEntry({
55
+ claims: {
56
+ '@context': 'org.hl7.fhir.api',
57
+ [MedicationStatementClaim.Identifier]: EXAMPLE_MEDICATION_STATEMENT_IDENTIFIER,
58
+ [MedicationStatementClaim.Subject]: EXAMPLE_SUBJECT_DID,
59
+ [MedicationStatementClaim.Status]: EXAMPLE_MEDICATION_STATEMENT_STATUS,
60
+ [MedicationStatementClaim.MedicationText]: EXAMPLE_MEDICATION_STATEMENT_TEXT,
61
+ [MedicationStatementClaim.Effective]: '2026-05-05',
62
+ },
63
+ fullUrl: `urn:uuid:${EXAMPLE_MEDICATION_STATEMENT_IDENTIFIER}`,
64
+ });
65
+ bundleEditor.addContainedDocumentToActiveEntry({
66
+ identifier: EXAMPLE_DOCUMENT_REFERENCE_IDENTIFIER,
67
+ attachmentContentType: EXAMPLE_DOCUMENT_REFERENCE_CONTENT_TYPE_PDF,
68
+ attachmentUrl: EXAMPLE_DOCUMENT_REFERENCE_URL,
69
+ description: EXAMPLE_DOCUMENT_REFERENCE_DESCRIPTION,
70
+ date: EXAMPLE_DOCUMENT_REFERENCE_DATE,
71
+ });
72
+ bundleEditor.saveAndReleaseActiveEntry();
73
+ return {
74
+ communicationClaims: bundleEditor.getCommunicationClaims(),
75
+ bundleInMemory: bundleEditor.getBundleInMemory(),
76
+ };
77
+ }
78
+ /**
79
+ * Builds the bundle plus section-level ids and UI-friendly card/common views
80
+ * for frontend resource cards.
81
+ */
82
+ export function buildIpsBundleFrontCardsExample() {
83
+ const { communicationClaims, bundleInMemory } = buildIpsClinicalHistoryBundleExample();
84
+ const bundleEditor = new CommunicationBundleSession({
85
+ communicationClaims,
86
+ initialBundle: bundleInMemory,
87
+ });
88
+ return {
89
+ communicationClaims,
90
+ bundleInMemory,
91
+ medicationEntryIds: bundleEditor.getResourceIds({
92
+ sections: [HealthcareBasicSections.HistoryOfMedicationUse.attributeValue],
93
+ resourceTypes: [ResourceTypesFhirR4.MedicationStatement],
94
+ }),
95
+ allergyEntryIds: bundleEditor.getResourceIds({
96
+ sections: [HealthcareBasicSections.AllergiesAndIntolerances.attributeValue],
97
+ resourceTypes: [ResourceTypesFhirR4.AllergyIntolerance],
98
+ }),
99
+ conditionEntryIds: bundleEditor.getResourceIds({
100
+ sections: [HealthcareBasicSections.ProblemList.attributeValue],
101
+ resourceTypes: [ResourceTypesFhirR4.Condition],
102
+ }),
103
+ cardViews: toClinicalResourceCardViews(bundleInMemory),
104
+ commonViews: toClinicalResourceCommonViews(bundleInMemory),
105
+ };
106
+ }
@@ -82,6 +82,12 @@ export declare const EXAMPLE_MEDICATION_STATEMENT_IDENTIFIER: "urn:uuid:medicati
82
82
  export declare const EXAMPLE_MEDICATION_STATEMENT_STATUS: "active";
83
83
  export declare const EXAMPLE_MEDICATION_STATEMENT_CODE: "http://www.nlm.nih.gov/research/umls/rxnorm|313782";
84
84
  export declare const EXAMPLE_MEDICATION_STATEMENT_TEXT: "atorvastatin 20 mg oral tablet";
85
+ export declare const EXAMPLE_DOCUMENT_REFERENCE_IDENTIFIER: "docref-example-001";
86
+ export declare const EXAMPLE_DOCUMENT_REFERENCE_IDENTIFIER_SECONDARY: "docref-example-002";
87
+ export declare const EXAMPLE_DOCUMENT_REFERENCE_CONTENT_TYPE_PDF: "application/pdf";
88
+ export declare const EXAMPLE_DOCUMENT_REFERENCE_URL: "https://example.org/prescription.pdf";
89
+ export declare const EXAMPLE_DOCUMENT_REFERENCE_DESCRIPTION: "Prescription PDF";
90
+ export declare const EXAMPLE_DOCUMENT_REFERENCE_DATE: "2026-06-12T10:00:00Z";
85
91
  export declare const EXAMPLE_EMPLOYEE_ACTIVATION_CODE: "ACT-001";
86
92
  export declare const EXAMPLE_DEVICE_CLIENT_ID: "did:web:device-001";
87
93
  export type ExampleDateRange = Readonly<{
@@ -75,7 +75,7 @@ export const EXAMPLE_RELATED_PERSON_ROLE = 'v3-RoleCode|RESPRSN';
75
75
  export const EXAMPLE_CLINICAL_SECTION_RESULTS = 'LOINC|30954-2';
76
76
  export const EXAMPLE_CLINICAL_SECTION_PATIENT_SUMMARY = 'LOINC|60591-5';
77
77
  export const EXAMPLE_CLINICAL_SECTION_HISTORY_MEDICATION = 'LOINC|10160-0';
78
- export const EXAMPLE_CLINICAL_SECTION_ALLERGIES = HealthcareBasicSections.AllergiesAndIntolerances.claim;
78
+ export const EXAMPLE_CLINICAL_SECTION_ALLERGIES = HealthcareBasicSections.AllergiesAndIntolerances.attributeValue;
79
79
  export const EXAMPLE_CLINICAL_CODE_PROBLEM = 'LOINC|11450-4';
80
80
  export const EXAMPLE_CONSENT_DATE = '2026-05-20';
81
81
  export const EXAMPLE_CONSENT_PERIOD_END = '2026-05-01T00:00:00Z';
@@ -88,6 +88,12 @@ export const EXAMPLE_MEDICATION_STATEMENT_IDENTIFIER = 'urn:uuid:medication-stat
88
88
  export const EXAMPLE_MEDICATION_STATEMENT_STATUS = 'active';
89
89
  export const EXAMPLE_MEDICATION_STATEMENT_CODE = 'http://www.nlm.nih.gov/research/umls/rxnorm|313782';
90
90
  export const EXAMPLE_MEDICATION_STATEMENT_TEXT = 'atorvastatin 20 mg oral tablet';
91
+ export const EXAMPLE_DOCUMENT_REFERENCE_IDENTIFIER = 'docref-example-001';
92
+ export const EXAMPLE_DOCUMENT_REFERENCE_IDENTIFIER_SECONDARY = 'docref-example-002';
93
+ export const EXAMPLE_DOCUMENT_REFERENCE_CONTENT_TYPE_PDF = 'application/pdf';
94
+ export const EXAMPLE_DOCUMENT_REFERENCE_URL = 'https://example.org/prescription.pdf';
95
+ export const EXAMPLE_DOCUMENT_REFERENCE_DESCRIPTION = 'Prescription PDF';
96
+ export const EXAMPLE_DOCUMENT_REFERENCE_DATE = '2026-06-12T10:00:00Z';
91
97
  export const EXAMPLE_EMPLOYEE_ACTIVATION_CODE = 'ACT-001';
92
98
  export const EXAMPLE_DEVICE_CLIENT_ID = 'did:web:device-001';
93
99
  export const EXAMPLE_CLINICAL_DATE_RANGE = {
@@ -14,6 +14,11 @@ export declare enum ClaimConsent {
14
14
  'verifiedDate' = "Consent.verified-date",
15
15
  'purpose' = "Consent.purpose",
16
16
  'identifier' = "Consent.identifier",
17
+ 'containedDocuments' = "Consent.contained-documents",
18
+ /**
19
+ * @deprecated Use `containedDocuments`.
20
+ */
21
+ 'attachmentContentIds' = "Consent.attachment-content-ids",
17
22
  'attachmentContentType' = "Consent.attachment-contentType",
18
23
  'attachmentData' = "Consent.attachment-data",
19
24
  'attachmentId' = "Consent.attachment-id"
@@ -116,6 +121,8 @@ export interface ConsentRule {
116
121
  * Derived from the `org.hl7.fhir.api.Consent.identifier` claim.
117
122
  */
118
123
  'Consent.identifier': string;
124
+ 'Consent.contained-documents'?: string;
125
+ 'Consent.attachment-content-ids'?: string;
119
126
  'Consent.attachment-contentType'?: string;
120
127
  'Consent.attachment-data'?: string;
121
128
  'Consent.attachment-id'?: string;
@@ -16,6 +16,11 @@ export var ClaimConsent;
16
16
  ClaimConsent["verifiedDate"] = "Consent.verified-date";
17
17
  ClaimConsent["purpose"] = "Consent.purpose";
18
18
  ClaimConsent["identifier"] = "Consent.identifier";
19
+ ClaimConsent["containedDocuments"] = "Consent.contained-documents";
20
+ /**
21
+ * @deprecated Use `containedDocuments`.
22
+ */
23
+ ClaimConsent["attachmentContentIds"] = "Consent.attachment-content-ids";
19
24
  ClaimConsent["attachmentContentType"] = "Consent.attachment-contentType";
20
25
  ClaimConsent["attachmentData"] = "Consent.attachment-data";
21
26
  ClaimConsent["attachmentId"] = "Consent.attachment-id";
@@ -1,5 +1,5 @@
1
1
  import type { DataspaceDiscoverySourceModeValue } from '../constants/dataspace-discovery';
2
- import type { HostingOperatorSemanticRecord } from './dataspace-discovery';
2
+ import type { HostingOperatorSemanticRecord, PublishedProviderCatalogRecord } from './dataspace-discovery';
3
3
  /**
4
4
  * Shared host/ICA context used to select dataspace discovery defaults.
5
5
  *
@@ -29,6 +29,7 @@ export type DefaultHostingOperatorRegistration = DataspaceDiscoveryNetworkContex
29
29
  discoveryUrl?: string;
30
30
  catalogUrl?: string;
31
31
  record: HostingOperatorSemanticRecord;
32
+ publishedProviders?: readonly PublishedProviderCatalogRecord[];
32
33
  title?: string;
33
34
  }>;
34
35
  /**
@@ -11,11 +11,54 @@ export declare const AllergyIntoleranceClaim: {
11
11
  readonly ClinicalStatus: "AllergyIntolerance.clinical-status";
12
12
  readonly VerificationStatus: "AllergyIntolerance.verification-status";
13
13
  readonly Category: "AllergyIntolerance.category";
14
+ readonly ContainedDocuments: "AllergyIntolerance.contained-documents";
15
+ /**
16
+ * @deprecated Use `ContainedDocuments`.
17
+ */
18
+ readonly AttachmentContentIds: "AllergyIntolerance.attachment-content-ids";
14
19
  readonly Criticality: "AllergyIntolerance.criticality";
15
20
  readonly OnsetDateTime: "AllergyIntolerance.onset-datetime";
16
21
  readonly Recorder: "AllergyIntolerance.recorder";
17
22
  };
18
23
  export type AllergyIntoleranceClaimKey = typeof AllergyIntoleranceClaim[keyof typeof AllergyIntoleranceClaim];
24
+ export declare enum AllergyIntoleranceClaimsFhirApi {
25
+ Identifier = "org.hl7.fhir.api.AllergyIntolerance.identifier",
26
+ Subject = "org.hl7.fhir.api.AllergyIntolerance.subject",
27
+ Patient = "org.hl7.fhir.api.AllergyIntolerance.patient",
28
+ Code = "org.hl7.fhir.api.AllergyIntolerance.code",
29
+ ClinicalStatus = "org.hl7.fhir.api.AllergyIntolerance.clinical-status",
30
+ VerificationStatus = "org.hl7.fhir.api.AllergyIntolerance.verification-status",
31
+ Category = "org.hl7.fhir.api.AllergyIntolerance.category",
32
+ Criticality = "org.hl7.fhir.api.AllergyIntolerance.criticality",
33
+ OnsetDateTime = "org.hl7.fhir.api.AllergyIntolerance.onset-datetime",
34
+ Recorder = "org.hl7.fhir.api.AllergyIntolerance.recorder"
35
+ }
36
+ export declare const AllergyIntoleranceSearchParamNames: {
37
+ readonly Identifier: "identifier";
38
+ readonly Subject: "subject";
39
+ readonly Patient: "patient";
40
+ readonly Code: "code";
41
+ readonly ClinicalStatus: "clinical-status";
42
+ readonly VerificationStatus: "verification-status";
43
+ readonly Category: "category";
44
+ readonly Criticality: "criticality";
45
+ readonly OnsetDateTime: "onset-datetime";
46
+ readonly Recorder: "recorder";
47
+ };
48
+ export type AllergyIntoleranceSearchParamName = typeof AllergyIntoleranceSearchParamNames[keyof typeof AllergyIntoleranceSearchParamNames];
49
+ export declare const AllergyIntoleranceSearchParamToClaimKey: Record<AllergyIntoleranceSearchParamName, AllergyIntoleranceClaimsFhirApi>;
50
+ export declare const AllergyIntoleranceClaimsFhirApiMap: {
51
+ "org.hl7.fhir.api.AllergyIntolerance.identifier": StringConstructor;
52
+ "org.hl7.fhir.api.AllergyIntolerance.subject": StringConstructor;
53
+ "org.hl7.fhir.api.AllergyIntolerance.patient": StringConstructor;
54
+ "org.hl7.fhir.api.AllergyIntolerance.code": StringConstructor;
55
+ "org.hl7.fhir.api.AllergyIntolerance.clinical-status": StringConstructor;
56
+ "org.hl7.fhir.api.AllergyIntolerance.verification-status": StringConstructor;
57
+ "org.hl7.fhir.api.AllergyIntolerance.category": StringConstructor;
58
+ "org.hl7.fhir.api.AllergyIntolerance.criticality": StringConstructor;
59
+ "org.hl7.fhir.api.AllergyIntolerance.onset-datetime": StringConstructor;
60
+ "org.hl7.fhir.api.AllergyIntolerance.recorder": StringConstructor;
61
+ };
19
62
  /**
20
63
  * http://hl7.org/fhir/uv/ips/ValueSet/allergies-intolerances-uv-ips
21
64
  * Snomed IPS codes for allergy and intolerance categories: food, medication, environment, biologic.
@@ -13,10 +13,64 @@ export const AllergyIntoleranceClaim = {
13
13
  ClinicalStatus: 'AllergyIntolerance.clinical-status',
14
14
  VerificationStatus: 'AllergyIntolerance.verification-status',
15
15
  Category: 'AllergyIntolerance.category',
16
+ ContainedDocuments: 'AllergyIntolerance.contained-documents',
17
+ /**
18
+ * @deprecated Use `ContainedDocuments`.
19
+ */
20
+ AttachmentContentIds: 'AllergyIntolerance.attachment-content-ids',
16
21
  Criticality: 'AllergyIntolerance.criticality',
17
22
  OnsetDateTime: 'AllergyIntolerance.onset-datetime',
18
23
  Recorder: 'AllergyIntolerance.recorder',
19
24
  };
25
+ export var AllergyIntoleranceClaimsFhirApi;
26
+ (function (AllergyIntoleranceClaimsFhirApi) {
27
+ AllergyIntoleranceClaimsFhirApi["Identifier"] = "org.hl7.fhir.api.AllergyIntolerance.identifier";
28
+ AllergyIntoleranceClaimsFhirApi["Subject"] = "org.hl7.fhir.api.AllergyIntolerance.subject";
29
+ AllergyIntoleranceClaimsFhirApi["Patient"] = "org.hl7.fhir.api.AllergyIntolerance.patient";
30
+ AllergyIntoleranceClaimsFhirApi["Code"] = "org.hl7.fhir.api.AllergyIntolerance.code";
31
+ AllergyIntoleranceClaimsFhirApi["ClinicalStatus"] = "org.hl7.fhir.api.AllergyIntolerance.clinical-status";
32
+ AllergyIntoleranceClaimsFhirApi["VerificationStatus"] = "org.hl7.fhir.api.AllergyIntolerance.verification-status";
33
+ AllergyIntoleranceClaimsFhirApi["Category"] = "org.hl7.fhir.api.AllergyIntolerance.category";
34
+ AllergyIntoleranceClaimsFhirApi["Criticality"] = "org.hl7.fhir.api.AllergyIntolerance.criticality";
35
+ AllergyIntoleranceClaimsFhirApi["OnsetDateTime"] = "org.hl7.fhir.api.AllergyIntolerance.onset-datetime";
36
+ AllergyIntoleranceClaimsFhirApi["Recorder"] = "org.hl7.fhir.api.AllergyIntolerance.recorder";
37
+ })(AllergyIntoleranceClaimsFhirApi || (AllergyIntoleranceClaimsFhirApi = {}));
38
+ export const AllergyIntoleranceSearchParamNames = {
39
+ Identifier: 'identifier',
40
+ Subject: 'subject',
41
+ Patient: 'patient',
42
+ Code: 'code',
43
+ ClinicalStatus: 'clinical-status',
44
+ VerificationStatus: 'verification-status',
45
+ Category: 'category',
46
+ Criticality: 'criticality',
47
+ OnsetDateTime: 'onset-datetime',
48
+ Recorder: 'recorder',
49
+ };
50
+ export const AllergyIntoleranceSearchParamToClaimKey = {
51
+ [AllergyIntoleranceSearchParamNames.Identifier]: AllergyIntoleranceClaimsFhirApi.Identifier,
52
+ [AllergyIntoleranceSearchParamNames.Subject]: AllergyIntoleranceClaimsFhirApi.Subject,
53
+ [AllergyIntoleranceSearchParamNames.Patient]: AllergyIntoleranceClaimsFhirApi.Patient,
54
+ [AllergyIntoleranceSearchParamNames.Code]: AllergyIntoleranceClaimsFhirApi.Code,
55
+ [AllergyIntoleranceSearchParamNames.ClinicalStatus]: AllergyIntoleranceClaimsFhirApi.ClinicalStatus,
56
+ [AllergyIntoleranceSearchParamNames.VerificationStatus]: AllergyIntoleranceClaimsFhirApi.VerificationStatus,
57
+ [AllergyIntoleranceSearchParamNames.Category]: AllergyIntoleranceClaimsFhirApi.Category,
58
+ [AllergyIntoleranceSearchParamNames.Criticality]: AllergyIntoleranceClaimsFhirApi.Criticality,
59
+ [AllergyIntoleranceSearchParamNames.OnsetDateTime]: AllergyIntoleranceClaimsFhirApi.OnsetDateTime,
60
+ [AllergyIntoleranceSearchParamNames.Recorder]: AllergyIntoleranceClaimsFhirApi.Recorder,
61
+ };
62
+ export const AllergyIntoleranceClaimsFhirApiMap = {
63
+ [AllergyIntoleranceClaimsFhirApi.Identifier]: String,
64
+ [AllergyIntoleranceClaimsFhirApi.Subject]: String,
65
+ [AllergyIntoleranceClaimsFhirApi.Patient]: String,
66
+ [AllergyIntoleranceClaimsFhirApi.Code]: String,
67
+ [AllergyIntoleranceClaimsFhirApi.ClinicalStatus]: String,
68
+ [AllergyIntoleranceClaimsFhirApi.VerificationStatus]: String,
69
+ [AllergyIntoleranceClaimsFhirApi.Category]: String,
70
+ [AllergyIntoleranceClaimsFhirApi.Criticality]: String,
71
+ [AllergyIntoleranceClaimsFhirApi.OnsetDateTime]: String,
72
+ [AllergyIntoleranceClaimsFhirApi.Recorder]: String,
73
+ };
20
74
  /**
21
75
  * http://hl7.org/fhir/uv/ips/ValueSet/allergies-intolerances-uv-ips
22
76
  * Snomed IPS codes for allergy and intolerance categories: food, medication, environment, biologic.
@@ -6,9 +6,49 @@ export declare const ConditionClaim: {
6
6
  readonly VerificationStatus: "Condition.verification-status";
7
7
  readonly Category: "Condition.category";
8
8
  readonly Code: "Condition.code";
9
+ readonly ContainedDocuments: "Condition.contained-documents";
10
+ /**
11
+ * @deprecated Use `ContainedDocuments`.
12
+ */
13
+ readonly AttachmentContentIds: "Condition.attachment-content-ids";
9
14
  readonly Severity: "Condition.severity";
10
15
  readonly OnsetDateTime: "Condition.onset-datetime";
11
16
  readonly Recorder: "Condition.recorder";
12
17
  };
13
18
  export type ConditionClaimKey = typeof ConditionClaim[keyof typeof ConditionClaim];
19
+ export declare enum ConditionClaimsFhirApi {
20
+ Identifier = "org.hl7.fhir.api.Condition.identifier",
21
+ Subject = "org.hl7.fhir.api.Condition.subject",
22
+ ClinicalStatus = "org.hl7.fhir.api.Condition.clinical-status",
23
+ VerificationStatus = "org.hl7.fhir.api.Condition.verification-status",
24
+ Category = "org.hl7.fhir.api.Condition.category",
25
+ Code = "org.hl7.fhir.api.Condition.code",
26
+ Severity = "org.hl7.fhir.api.Condition.severity",
27
+ OnsetDateTime = "org.hl7.fhir.api.Condition.onset-datetime",
28
+ Recorder = "org.hl7.fhir.api.Condition.recorder"
29
+ }
30
+ export declare const ConditionSearchParamNames: {
31
+ readonly Identifier: "identifier";
32
+ readonly Subject: "subject";
33
+ readonly ClinicalStatus: "clinical-status";
34
+ readonly VerificationStatus: "verification-status";
35
+ readonly Category: "category";
36
+ readonly Code: "code";
37
+ readonly Severity: "severity";
38
+ readonly OnsetDateTime: "onset-datetime";
39
+ readonly Recorder: "recorder";
40
+ };
41
+ export type ConditionSearchParamName = typeof ConditionSearchParamNames[keyof typeof ConditionSearchParamNames];
42
+ export declare const ConditionSearchParamToClaimKey: Record<ConditionSearchParamName, ConditionClaimsFhirApi>;
43
+ export declare const ConditionClaimsFhirApiMap: {
44
+ "org.hl7.fhir.api.Condition.identifier": StringConstructor;
45
+ "org.hl7.fhir.api.Condition.subject": StringConstructor;
46
+ "org.hl7.fhir.api.Condition.clinical-status": StringConstructor;
47
+ "org.hl7.fhir.api.Condition.verification-status": StringConstructor;
48
+ "org.hl7.fhir.api.Condition.category": StringConstructor;
49
+ "org.hl7.fhir.api.Condition.code": StringConstructor;
50
+ "org.hl7.fhir.api.Condition.severity": StringConstructor;
51
+ "org.hl7.fhir.api.Condition.onset-datetime": StringConstructor;
52
+ "org.hl7.fhir.api.Condition.recorder": StringConstructor;
53
+ };
14
54
  export declare const ConditionClaimSpecs: ClaimSpec[];
@@ -8,10 +8,60 @@ export const ConditionClaim = {
8
8
  VerificationStatus: 'Condition.verification-status',
9
9
  Category: 'Condition.category',
10
10
  Code: 'Condition.code',
11
+ ContainedDocuments: 'Condition.contained-documents',
12
+ /**
13
+ * @deprecated Use `ContainedDocuments`.
14
+ */
15
+ AttachmentContentIds: 'Condition.attachment-content-ids',
11
16
  Severity: 'Condition.severity',
12
17
  OnsetDateTime: 'Condition.onset-datetime',
13
18
  Recorder: 'Condition.recorder',
14
19
  };
20
+ export var ConditionClaimsFhirApi;
21
+ (function (ConditionClaimsFhirApi) {
22
+ ConditionClaimsFhirApi["Identifier"] = "org.hl7.fhir.api.Condition.identifier";
23
+ ConditionClaimsFhirApi["Subject"] = "org.hl7.fhir.api.Condition.subject";
24
+ ConditionClaimsFhirApi["ClinicalStatus"] = "org.hl7.fhir.api.Condition.clinical-status";
25
+ ConditionClaimsFhirApi["VerificationStatus"] = "org.hl7.fhir.api.Condition.verification-status";
26
+ ConditionClaimsFhirApi["Category"] = "org.hl7.fhir.api.Condition.category";
27
+ ConditionClaimsFhirApi["Code"] = "org.hl7.fhir.api.Condition.code";
28
+ ConditionClaimsFhirApi["Severity"] = "org.hl7.fhir.api.Condition.severity";
29
+ ConditionClaimsFhirApi["OnsetDateTime"] = "org.hl7.fhir.api.Condition.onset-datetime";
30
+ ConditionClaimsFhirApi["Recorder"] = "org.hl7.fhir.api.Condition.recorder";
31
+ })(ConditionClaimsFhirApi || (ConditionClaimsFhirApi = {}));
32
+ export const ConditionSearchParamNames = {
33
+ Identifier: 'identifier',
34
+ Subject: 'subject',
35
+ ClinicalStatus: 'clinical-status',
36
+ VerificationStatus: 'verification-status',
37
+ Category: 'category',
38
+ Code: 'code',
39
+ Severity: 'severity',
40
+ OnsetDateTime: 'onset-datetime',
41
+ Recorder: 'recorder',
42
+ };
43
+ export const ConditionSearchParamToClaimKey = {
44
+ [ConditionSearchParamNames.Identifier]: ConditionClaimsFhirApi.Identifier,
45
+ [ConditionSearchParamNames.Subject]: ConditionClaimsFhirApi.Subject,
46
+ [ConditionSearchParamNames.ClinicalStatus]: ConditionClaimsFhirApi.ClinicalStatus,
47
+ [ConditionSearchParamNames.VerificationStatus]: ConditionClaimsFhirApi.VerificationStatus,
48
+ [ConditionSearchParamNames.Category]: ConditionClaimsFhirApi.Category,
49
+ [ConditionSearchParamNames.Code]: ConditionClaimsFhirApi.Code,
50
+ [ConditionSearchParamNames.Severity]: ConditionClaimsFhirApi.Severity,
51
+ [ConditionSearchParamNames.OnsetDateTime]: ConditionClaimsFhirApi.OnsetDateTime,
52
+ [ConditionSearchParamNames.Recorder]: ConditionClaimsFhirApi.Recorder,
53
+ };
54
+ export const ConditionClaimsFhirApiMap = {
55
+ [ConditionClaimsFhirApi.Identifier]: String,
56
+ [ConditionClaimsFhirApi.Subject]: String,
57
+ [ConditionClaimsFhirApi.ClinicalStatus]: String,
58
+ [ConditionClaimsFhirApi.VerificationStatus]: String,
59
+ [ConditionClaimsFhirApi.Category]: String,
60
+ [ConditionClaimsFhirApi.Code]: String,
61
+ [ConditionClaimsFhirApi.Severity]: String,
62
+ [ConditionClaimsFhirApi.OnsetDateTime]: String,
63
+ [ConditionClaimsFhirApi.Recorder]: String,
64
+ };
15
65
  export const ConditionClaimSpecs = [
16
66
  { key: ConditionClaim.Identifier, meaning: 'Business identifier for condition record.', example: 'COND-0001' },
17
67
  { key: ConditionClaim.Subject, meaning: 'Patient subject reference.', example: 'Patient/pat-123' },
@@ -0,0 +1,96 @@
1
+ import type { ClaimSpec } from './types';
2
+ export declare const DiagnosticReportClaim: {
3
+ readonly BasedOn: "DiagnosticReport.based-on";
4
+ readonly Category: "DiagnosticReport.category";
5
+ readonly Code: "DiagnosticReport.code";
6
+ readonly Date: "DiagnosticReport.date";
7
+ readonly Encounter: "DiagnosticReport.encounter";
8
+ readonly Identifier: "DiagnosticReport.identifier";
9
+ readonly Media: "DiagnosticReport.media";
10
+ readonly Patient: "DiagnosticReport.patient";
11
+ readonly Performer: "DiagnosticReport.performer";
12
+ readonly Result: "DiagnosticReport.result";
13
+ readonly ResultsInterpreter: "DiagnosticReport.results-interpreter";
14
+ readonly Specimen: "DiagnosticReport.specimen";
15
+ readonly Status: "DiagnosticReport.status";
16
+ readonly Subject: "DiagnosticReport.subject";
17
+ readonly PresentedFormContentType: "DiagnosticReport.presented-form-contenttype";
18
+ readonly PresentedFormData: "DiagnosticReport.presented-form-data";
19
+ readonly PresentedFormUrl: "DiagnosticReport.presented-form-url";
20
+ readonly ContainedDocuments: "DiagnosticReport.contained-documents";
21
+ };
22
+ /**
23
+ * TODO(ips-next):
24
+ * Add resource-level claim helpers in `src/utils/diagnostic-report-claim-helpers.ts`
25
+ * following the same contract already used by Consent/Medication/Condition/Allergy:
26
+ * - `getDiagnosticReportClaimList(...)`
27
+ * - `setDiagnosticReportClaimList(...)`
28
+ * - `addDiagnosticReportClaimList(...)`
29
+ * - `removeDiagnosticReportClaimList(...)`
30
+ * - focused helpers for:
31
+ * - `get/set/add/removeDiagnosticReportResultList`
32
+ * - `get/set/add/removeDiagnosticReportPerformerList`
33
+ * - `get/set/add/removeDiagnosticReportSpecimenList`
34
+ * - `get/set/add/removeDiagnosticReportContainedDocuments`
35
+ * - `get/setDiagnosticReportPresentedFormContentType`
36
+ * - `get/setDiagnosticReportPresentedFormData`
37
+ * - `get/setDiagnosticReportPresentedFormUrl`
38
+ *
39
+ * Keep naming aligned with canonical FHIR search parameter names
40
+ * (lowercase with `-`) and reuse the existing `SearchParamNames` + contextualized
41
+ * claim-key mapping pattern.
42
+ *
43
+ * This file is intentionally type-first only for now so GW Core and
44
+ * `common-utils` can already exercise the rest of the bundle workflow without
45
+ * committing to the DiagnosticReport editing surface yet.
46
+ */
47
+ export type DiagnosticReportClaimKey = typeof DiagnosticReportClaim[keyof typeof DiagnosticReportClaim];
48
+ export declare const DiagnosticReportClaimSpecs: ClaimSpec[];
49
+ export declare const DiagnosticReportSearchParamNames: {
50
+ readonly BasedOn: "based-on";
51
+ readonly Category: "category";
52
+ readonly Code: "code";
53
+ readonly Date: "date";
54
+ readonly Encounter: "encounter";
55
+ readonly Identifier: "identifier";
56
+ readonly Media: "media";
57
+ readonly Patient: "patient";
58
+ readonly Performer: "performer";
59
+ readonly Result: "result";
60
+ readonly ResultsInterpreter: "results-interpreter";
61
+ readonly Specimen: "specimen";
62
+ readonly Status: "status";
63
+ readonly Subject: "subject";
64
+ };
65
+ export type DiagnosticReportSearchParamName = typeof DiagnosticReportSearchParamNames[keyof typeof DiagnosticReportSearchParamNames];
66
+ export declare enum DiagnosticReportClaimsFhirApi {
67
+ BasedOn = "org.hl7.fhir.api.DiagnosticReport.based-on",
68
+ Category = "org.hl7.fhir.api.DiagnosticReport.category",
69
+ Code = "org.hl7.fhir.api.DiagnosticReport.code",
70
+ Date = "org.hl7.fhir.api.DiagnosticReport.date",
71
+ Encounter = "org.hl7.fhir.api.DiagnosticReport.encounter",
72
+ Identifier = "org.hl7.fhir.api.DiagnosticReport.identifier",
73
+ Media = "org.hl7.fhir.api.DiagnosticReport.media",
74
+ Patient = "org.hl7.fhir.api.DiagnosticReport.patient",
75
+ Performer = "org.hl7.fhir.api.DiagnosticReport.performer",
76
+ Result = "org.hl7.fhir.api.DiagnosticReport.result",
77
+ ResultsInterpreter = "org.hl7.fhir.api.DiagnosticReport.results-interpreter",
78
+ Specimen = "org.hl7.fhir.api.DiagnosticReport.specimen",
79
+ Status = "org.hl7.fhir.api.DiagnosticReport.status",
80
+ Subject = "org.hl7.fhir.api.DiagnosticReport.subject"
81
+ }
82
+ export declare const DiagnosticReportSearchParamToClaimKey: Record<DiagnosticReportSearchParamName, DiagnosticReportClaimsFhirApi>;
83
+ /**
84
+ * TODO(ips-next):
85
+ * Add `DiagnosticReportClaimsFhirApiExtended` only if/when the bundle editor
86
+ * needs operational flat fields beyond the official search parameter surface.
87
+ *
88
+ * Do not invent camelCase names. Prefer official FHIR search parameter names
89
+ * or explicit attachment aliases such as `presented-form-*` and
90
+ * `contained-documents`.
91
+ *
92
+ * Keep `DiagnosticReport` paused at the typing/mapping layer until:
93
+ * 1. `diagnostic-report-claim-helpers.ts` exists
94
+ * 2. `CommunicationBundleSession.upsertActiveDiagnosticReportEntry(...)` exists
95
+ * 3. GW Core readers/tests consume the same shared claim keys
96
+ */
@@ -0,0 +1,105 @@
1
+ // Copyright 2026 Conéctate Soluciones y Aplicaciones SL under the Apache License, Version 2.0.
2
+ // File: src/models/interoperable-claims/diagnostic-report-claims.ts
3
+ export const DiagnosticReportClaim = {
4
+ BasedOn: 'DiagnosticReport.based-on',
5
+ Category: 'DiagnosticReport.category',
6
+ Code: 'DiagnosticReport.code',
7
+ Date: 'DiagnosticReport.date',
8
+ Encounter: 'DiagnosticReport.encounter',
9
+ Identifier: 'DiagnosticReport.identifier',
10
+ Media: 'DiagnosticReport.media',
11
+ Patient: 'DiagnosticReport.patient',
12
+ Performer: 'DiagnosticReport.performer',
13
+ Result: 'DiagnosticReport.result',
14
+ ResultsInterpreter: 'DiagnosticReport.results-interpreter',
15
+ Specimen: 'DiagnosticReport.specimen',
16
+ Status: 'DiagnosticReport.status',
17
+ Subject: 'DiagnosticReport.subject',
18
+ PresentedFormContentType: 'DiagnosticReport.presented-form-contenttype',
19
+ PresentedFormData: 'DiagnosticReport.presented-form-data',
20
+ PresentedFormUrl: 'DiagnosticReport.presented-form-url',
21
+ ContainedDocuments: 'DiagnosticReport.contained-documents',
22
+ };
23
+ export const DiagnosticReportClaimSpecs = [
24
+ { key: DiagnosticReportClaim.BasedOn, meaning: 'Request or order that originated the report.', example: 'ServiceRequest/sr-1' },
25
+ { key: DiagnosticReportClaim.Category, meaning: 'Diagnostic service section/category.', example: 'http://terminology.hl7.org/CodeSystem/v2-0074|LAB' },
26
+ { key: DiagnosticReportClaim.Code, meaning: 'Main diagnostic report code.', example: 'http://loinc.org|58410-2' },
27
+ { key: DiagnosticReportClaim.Date, meaning: 'Report issuance date/time.', example: '2026-06-12T10:00:00Z' },
28
+ { key: DiagnosticReportClaim.Encounter, meaning: 'Encounter reference.', example: 'Encounter/enc-1' },
29
+ { key: DiagnosticReportClaim.Identifier, meaning: 'Business identifier for the report.', example: 'diag-report-001' },
30
+ { key: DiagnosticReportClaim.Media, meaning: 'Linked media reference list (comma-separeted).', example: 'Media/media-1' },
31
+ { key: DiagnosticReportClaim.Patient, meaning: 'Patient reference.', example: 'did:web:patient.example.org' },
32
+ { key: DiagnosticReportClaim.Performer, meaning: 'Performer reference.', example: 'did:web:lab.example.org:system:lisin' },
33
+ { key: DiagnosticReportClaim.Result, meaning: 'Observation/result reference.', example: 'Observation/obs-1' },
34
+ { key: DiagnosticReportClaim.ResultsInterpreter, meaning: 'Results interpreter reference.', example: 'Practitioner/prac-1' },
35
+ { key: DiagnosticReportClaim.Specimen, meaning: 'Specimen reference list (comma-separared).', example: 'Specimen/spec-1' },
36
+ { key: DiagnosticReportClaim.Status, meaning: 'Diagnostic report status.', example: 'final' },
37
+ { key: DiagnosticReportClaim.Subject, meaning: 'Canonical subject reference.', example: 'did:web:patient.example.org' },
38
+ { key: DiagnosticReportClaim.PresentedFormContentType, meaning: 'FHIR presentedForm attachment content type.', example: 'application/pdf' },
39
+ { key: DiagnosticReportClaim.PresentedFormData, meaning: 'FHIR presentedForm inline base64 payload.', example: 'JVBERi0xLjc...' },
40
+ { key: DiagnosticReportClaim.PresentedFormUrl, meaning: 'FHIR presentedForm external URL.', example: 'https://example.org/report.pdf' },
41
+ { key: DiagnosticReportClaim.ContainedDocuments, meaning: 'CSV of linked DocumentReference identifiers stored in the same bundle.', example: 'docref-example-001,docref-example-002' },
42
+ ];
43
+ export const DiagnosticReportSearchParamNames = {
44
+ BasedOn: 'based-on',
45
+ Category: 'category',
46
+ Code: 'code',
47
+ Date: 'date',
48
+ Encounter: 'encounter',
49
+ Identifier: 'identifier',
50
+ Media: 'media',
51
+ Patient: 'patient',
52
+ Performer: 'performer',
53
+ Result: 'result',
54
+ ResultsInterpreter: 'results-interpreter',
55
+ Specimen: 'specimen',
56
+ Status: 'status',
57
+ Subject: 'subject',
58
+ };
59
+ export var DiagnosticReportClaimsFhirApi;
60
+ (function (DiagnosticReportClaimsFhirApi) {
61
+ DiagnosticReportClaimsFhirApi["BasedOn"] = "org.hl7.fhir.api.DiagnosticReport.based-on";
62
+ DiagnosticReportClaimsFhirApi["Category"] = "org.hl7.fhir.api.DiagnosticReport.category";
63
+ DiagnosticReportClaimsFhirApi["Code"] = "org.hl7.fhir.api.DiagnosticReport.code";
64
+ DiagnosticReportClaimsFhirApi["Date"] = "org.hl7.fhir.api.DiagnosticReport.date";
65
+ DiagnosticReportClaimsFhirApi["Encounter"] = "org.hl7.fhir.api.DiagnosticReport.encounter";
66
+ DiagnosticReportClaimsFhirApi["Identifier"] = "org.hl7.fhir.api.DiagnosticReport.identifier";
67
+ DiagnosticReportClaimsFhirApi["Media"] = "org.hl7.fhir.api.DiagnosticReport.media";
68
+ DiagnosticReportClaimsFhirApi["Patient"] = "org.hl7.fhir.api.DiagnosticReport.patient";
69
+ DiagnosticReportClaimsFhirApi["Performer"] = "org.hl7.fhir.api.DiagnosticReport.performer";
70
+ DiagnosticReportClaimsFhirApi["Result"] = "org.hl7.fhir.api.DiagnosticReport.result";
71
+ DiagnosticReportClaimsFhirApi["ResultsInterpreter"] = "org.hl7.fhir.api.DiagnosticReport.results-interpreter";
72
+ DiagnosticReportClaimsFhirApi["Specimen"] = "org.hl7.fhir.api.DiagnosticReport.specimen";
73
+ DiagnosticReportClaimsFhirApi["Status"] = "org.hl7.fhir.api.DiagnosticReport.status";
74
+ DiagnosticReportClaimsFhirApi["Subject"] = "org.hl7.fhir.api.DiagnosticReport.subject";
75
+ })(DiagnosticReportClaimsFhirApi || (DiagnosticReportClaimsFhirApi = {}));
76
+ export const DiagnosticReportSearchParamToClaimKey = {
77
+ [DiagnosticReportSearchParamNames.BasedOn]: DiagnosticReportClaimsFhirApi.BasedOn,
78
+ [DiagnosticReportSearchParamNames.Category]: DiagnosticReportClaimsFhirApi.Category,
79
+ [DiagnosticReportSearchParamNames.Code]: DiagnosticReportClaimsFhirApi.Code,
80
+ [DiagnosticReportSearchParamNames.Date]: DiagnosticReportClaimsFhirApi.Date,
81
+ [DiagnosticReportSearchParamNames.Encounter]: DiagnosticReportClaimsFhirApi.Encounter,
82
+ [DiagnosticReportSearchParamNames.Identifier]: DiagnosticReportClaimsFhirApi.Identifier,
83
+ [DiagnosticReportSearchParamNames.Media]: DiagnosticReportClaimsFhirApi.Media,
84
+ [DiagnosticReportSearchParamNames.Patient]: DiagnosticReportClaimsFhirApi.Patient,
85
+ [DiagnosticReportSearchParamNames.Performer]: DiagnosticReportClaimsFhirApi.Performer,
86
+ [DiagnosticReportSearchParamNames.Result]: DiagnosticReportClaimsFhirApi.Result,
87
+ [DiagnosticReportSearchParamNames.ResultsInterpreter]: DiagnosticReportClaimsFhirApi.ResultsInterpreter,
88
+ [DiagnosticReportSearchParamNames.Specimen]: DiagnosticReportClaimsFhirApi.Specimen,
89
+ [DiagnosticReportSearchParamNames.Status]: DiagnosticReportClaimsFhirApi.Status,
90
+ [DiagnosticReportSearchParamNames.Subject]: DiagnosticReportClaimsFhirApi.Subject,
91
+ };
92
+ /**
93
+ * TODO(ips-next):
94
+ * Add `DiagnosticReportClaimsFhirApiExtended` only if/when the bundle editor
95
+ * needs operational flat fields beyond the official search parameter surface.
96
+ *
97
+ * Do not invent camelCase names. Prefer official FHIR search parameter names
98
+ * or explicit attachment aliases such as `presented-form-*` and
99
+ * `contained-documents`.
100
+ *
101
+ * Keep `DiagnosticReport` paused at the typing/mapping layer until:
102
+ * 1. `diagnostic-report-claim-helpers.ts` exists
103
+ * 2. `CommunicationBundleSession.upsertActiveDiagnosticReportEntry(...)` exists
104
+ * 3. GW Core readers/tests consume the same shared claim keys
105
+ */
@@ -2,6 +2,7 @@ export * from './types';
2
2
  export * from './composition-claims';
3
3
  export * from './communication-claims';
4
4
  export * from './document-reference-claims';
5
+ export * from './diagnostic-report-claims';
5
6
  export * from './medication-statement-claims';
6
7
  export * from './allergy-intolerance-claims';
7
8
  export * from './condition-claims';