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
@@ -0,0 +1,24 @@
1
+ import { createLifecycleResultReader, LifecycleResultAnalysis, LifecycleResultEntrySummary, LifecycleResultReader } from './lifecycle-result-reader.js';
2
+ export type ConsentLifecycleResultEntrySummary = LifecycleResultEntrySummary;
3
+ export type ConsentLifecycleResultAnalysis = LifecycleResultAnalysis;
4
+ /**
5
+ * Consent-named alias over the neutral lifecycle result reader.
6
+ *
7
+ * Intent:
8
+ * - keep one explicit frontend-facing entry point for consent lifecycle
9
+ * responses
10
+ * - avoid duplicating parser logic already shared by `LifecycleResultReader`
11
+ * - make docs/tests easier to follow for teams integrating consent first
12
+ */
13
+ export declare class ConsentLifecycleResultReader extends LifecycleResultReader {
14
+ }
15
+ /**
16
+ * Creates one consent-named lifecycle result reader while preserving the same
17
+ * neutral output contract as `createLifecycleResultReader(...)`.
18
+ */
19
+ export declare function createConsentLifecycleResultReader(result: Record<string, unknown>): ConsentLifecycleResultReader;
20
+ /**
21
+ * Short alias for teams that prefer an explicit read verb in code examples.
22
+ */
23
+ export declare function readConsentLifecycleResult(result: Record<string, unknown>): ConsentLifecycleResultReader;
24
+ export { createLifecycleResultReader, };
@@ -0,0 +1,27 @@
1
+ // Copyright 2026 Antifraud Services Inc. under the Apache License, Version 2.0.
2
+ import { createLifecycleResultReader, LifecycleResultReader, } from './lifecycle-result-reader.js';
3
+ /**
4
+ * Consent-named alias over the neutral lifecycle result reader.
5
+ *
6
+ * Intent:
7
+ * - keep one explicit frontend-facing entry point for consent lifecycle
8
+ * responses
9
+ * - avoid duplicating parser logic already shared by `LifecycleResultReader`
10
+ * - make docs/tests easier to follow for teams integrating consent first
11
+ */
12
+ export class ConsentLifecycleResultReader extends LifecycleResultReader {
13
+ }
14
+ /**
15
+ * Creates one consent-named lifecycle result reader while preserving the same
16
+ * neutral output contract as `createLifecycleResultReader(...)`.
17
+ */
18
+ export function createConsentLifecycleResultReader(result) {
19
+ return new ConsentLifecycleResultReader(result);
20
+ }
21
+ /**
22
+ * Short alias for teams that prefer an explicit read verb in code examples.
23
+ */
24
+ export function readConsentLifecycleResult(result) {
25
+ return createConsentLifecycleResultReader(result);
26
+ }
27
+ export { createLifecycleResultReader, };
@@ -33,6 +33,17 @@ export type EmployeeSearchBundleInput = Readonly<{
33
33
  encoding?: SearchRequestEncoding;
34
34
  resourceType?: 'Employee';
35
35
  }>;
36
+ export type EmployeeSearchResultRecord = Readonly<{
37
+ identifier?: string;
38
+ email?: string;
39
+ role?: string;
40
+ worksFor?: string;
41
+ memberOf?: string;
42
+ memberOfOrgTaxId?: string;
43
+ resourceId?: string;
44
+ status?: string;
45
+ claims: Record<string, unknown>;
46
+ }>;
36
47
  export declare const EmployeeBundleOperations: Readonly<{
37
48
  readonly create: "create";
38
49
  readonly search: "search";
@@ -131,3 +142,17 @@ export declare function buildEmployeeSearchBundle(input?: EmployeeSearchBundleIn
131
142
  };
132
143
  }>;
133
144
  };
145
+ /**
146
+ * Reads employee-like search/list records from one current GW-style result body
147
+ * without forcing frontend callers to inspect `meta.claims` manually.
148
+ *
149
+ * Accepted inputs:
150
+ * - direct bundle-like payloads with `entry[]` or `data[]`
151
+ * - wrapper objects with `body.entry[]` or `body.data[]`
152
+ */
153
+ export declare function readEmployeeSearchResults(body: unknown): EmployeeSearchResultRecord[];
154
+ /**
155
+ * Returns one employee result by canonical identifier from current search/list
156
+ * results.
157
+ */
158
+ export declare function findEmployeeSearchResult(body: unknown, identifier: string): EmployeeSearchResultRecord | undefined;
@@ -39,6 +39,18 @@ function normalizeEmployeeSearchClaims(claims) {
39
39
  }
40
40
  return normalized;
41
41
  }
42
+ function normalizeText(value) {
43
+ const normalized = String(value ?? '').trim();
44
+ return normalized || undefined;
45
+ }
46
+ function extractEntryClaims(entry) {
47
+ const meta = entry.meta && typeof entry.meta === 'object' ? entry.meta : {};
48
+ const resource = entry.resource && typeof entry.resource === 'object' ? entry.resource : {};
49
+ const resourceMeta = resource.meta && typeof resource.meta === 'object' ? resource.meta : {};
50
+ const metaClaims = meta.claims && typeof meta.claims === 'object' ? meta.claims : undefined;
51
+ const resourceClaims = resourceMeta.claims && typeof resourceMeta.claims === 'object' ? resourceMeta.claims : undefined;
52
+ return { ...(resourceClaims || {}), ...(metaClaims || {}) };
53
+ }
42
54
  function inferEmployeeEntryType(method) {
43
55
  switch (method) {
44
56
  case 'DELETE':
@@ -181,3 +193,48 @@ export function buildEmployeeSearchBundle(input = {}) {
181
193
  ],
182
194
  };
183
195
  }
196
+ /**
197
+ * Reads employee-like search/list records from one current GW-style result body
198
+ * without forcing frontend callers to inspect `meta.claims` manually.
199
+ *
200
+ * Accepted inputs:
201
+ * - direct bundle-like payloads with `entry[]` or `data[]`
202
+ * - wrapper objects with `body.entry[]` or `body.data[]`
203
+ */
204
+ export function readEmployeeSearchResults(body) {
205
+ const root = body && typeof body === 'object' ? body : {};
206
+ const bodyNode = root.body && typeof root.body === 'object' ? root.body : root;
207
+ const rawEntries = Array.isArray(bodyNode.entry)
208
+ ? bodyNode.entry
209
+ : (Array.isArray(bodyNode.data) ? bodyNode.data : []);
210
+ return rawEntries
211
+ .filter((entry) => !!entry && typeof entry === 'object')
212
+ .map((entry) => {
213
+ const claims = extractEntryClaims(entry);
214
+ const meta = entry.meta && typeof entry.meta === 'object' ? entry.meta : {};
215
+ const resource = entry.resource && typeof entry.resource === 'object' ? entry.resource : {};
216
+ return {
217
+ identifier: normalizeText(claims[ClaimsPersonSchemaorg.identifier]),
218
+ email: normalizeText(claims[ClaimsPersonSchemaorg.email]),
219
+ role: normalizeText(claims[ClaimsPersonSchemaorg.hasOccupationalRoleValue]),
220
+ worksFor: normalizeText(claims[ClaimsPersonSchemaorg.worksFor]),
221
+ memberOf: normalizeText(claims[ClaimsPersonSchemaorg.memberOf]),
222
+ memberOfOrgTaxId: normalizeText(claims[ClaimsPersonSchemaorg.memberOfOrgTaxId]),
223
+ resourceId: normalizeText(resource.id || entry.id),
224
+ status: normalizeText(meta.status),
225
+ claims,
226
+ };
227
+ });
228
+ }
229
+ /**
230
+ * Returns one employee result by canonical identifier from current search/list
231
+ * results.
232
+ */
233
+ export function findEmployeeSearchResult(body, identifier) {
234
+ const normalizedIdentifier = normalizeText(identifier);
235
+ if (!normalizedIdentifier) {
236
+ return undefined;
237
+ }
238
+ return readEmployeeSearchResults(body)
239
+ .find((record) => record.identifier === normalizedIdentifier);
240
+ }
@@ -0,0 +1,24 @@
1
+ import type { ServiceEndpointSelector } from '../models/did';
2
+ /**
3
+ * Minimal tenant-scoped route context required to describe one concrete GW CORE
4
+ * resource action endpoint.
5
+ *
6
+ * This helper intentionally models the stable HTTP path shape instead of the
7
+ * transport envelope. Frontend and SDK layers can use it to keep route
8
+ * semantics explicit without handcrafting string paths inline.
9
+ */
10
+ export type GwCoreTenantResourceActionSelector = Readonly<{
11
+ tenantId: string;
12
+ jurisdiction: string;
13
+ version: string;
14
+ sector: string;
15
+ } & Pick<ServiceEndpointSelector, 'section' | 'format' | 'resourceType' | 'action'>>;
16
+ /**
17
+ * Builds the canonical tenant-scoped GW CORE route path:
18
+ * `/{tenantId}/cds-{jurisdiction}/{version}/{sector}/{section}/{format}/{resourceType}/{action}`
19
+ *
20
+ * Use this helper when tests, docs, or SDK adapters need to express the real
21
+ * GW endpoint structure instead of ad hoc relative targets such as
22
+ * `License/_search`.
23
+ */
24
+ export declare function buildGwCoreTenantResourceActionPath(input: GwCoreTenantResourceActionSelector): string;
@@ -0,0 +1,21 @@
1
+ function normalizePathSegment(value) {
2
+ return String(value || '').trim().replace(/^\/+|\/+$/g, '');
3
+ }
4
+ /**
5
+ * Builds the canonical tenant-scoped GW CORE route path:
6
+ * `/{tenantId}/cds-{jurisdiction}/{version}/{sector}/{section}/{format}/{resourceType}/{action}`
7
+ *
8
+ * Use this helper when tests, docs, or SDK adapters need to express the real
9
+ * GW endpoint structure instead of ad hoc relative targets such as
10
+ * `License/_search`.
11
+ */
12
+ export function buildGwCoreTenantResourceActionPath(input) {
13
+ return `/${normalizePathSegment(input.tenantId)}`
14
+ + `/cds-${normalizePathSegment(input.jurisdiction)}`
15
+ + `/${normalizePathSegment(input.version)}`
16
+ + `/${normalizePathSegment(input.sector)}`
17
+ + `/${normalizePathSegment(input.section)}`
18
+ + `/${normalizePathSegment(input.format)}`
19
+ + `/${normalizePathSegment(input.resourceType)}`
20
+ + `/${normalizePathSegment(input.action)}`;
21
+ }
@@ -11,6 +11,7 @@ export * from './content';
11
11
  export * from '../convert';
12
12
  export * from './bundle-document-builder';
13
13
  export * from './consent';
14
+ export * from './consent-lifecycle-result-reader';
14
15
  export * from './consent-blockchain-rules';
15
16
  export * from './consent-duplicate-rules';
16
17
  export * from './did';
@@ -27,23 +28,33 @@ export * from './discovery-normalization';
27
28
  export * from './format-converter';
28
29
  export * from './fhir-cid';
29
30
  export * from './fhir-search';
31
+ export * from './gw-core-path';
30
32
  export * from './communication-fhir-r4';
31
33
  export * from './communication-document-reference';
32
34
  export * from './communication-bundle-document-request';
33
35
  export * from './communication-identity';
34
36
  export * from './communication-attached-bundle-session';
35
37
  export * from './permission-templates';
38
+ export * from './related-person-list';
36
39
  export * from './clinical-resource-converters';
37
40
  export * from './clinical-resource-view';
38
41
  export * from './fhir-validator';
39
42
  export * from './individual-form-pdf';
40
43
  export * from './individual-organization-claims';
44
+ export * from './individual-organization-lifecycle';
41
45
  export * from './individual-onboarding-editor';
42
46
  export * from './individual-onboarding-document-reference';
43
47
  export * from './individual-organization-kyc';
48
+ export * from './individual-bundle-vault';
49
+ export * from './invoice-bundle';
44
50
  export * from './ips-bundle-claims';
51
+ export * from './interoperable-resource-operation';
45
52
  export * from './jwt';
46
53
  export * from './license';
54
+ export * from './license-commercial-search';
55
+ export * from './license-list-search';
56
+ export * from './license-offer-order';
57
+ export * from './lifecycle-result-reader';
47
58
  export * from './manager-error';
48
59
  export * from './multibase58';
49
60
  export * from './multibasehash';
@@ -11,6 +11,7 @@ export * from './content.js';
11
11
  export * from '../convert/index.js';
12
12
  export * from './bundle-document-builder.js';
13
13
  export * from './consent.js';
14
+ export * from './consent-lifecycle-result-reader.js';
14
15
  export * from './consent-blockchain-rules.js';
15
16
  export * from './consent-duplicate-rules.js';
16
17
  export * from './did.js';
@@ -27,23 +28,33 @@ export * from './discovery-normalization.js';
27
28
  export * from './format-converter.js';
28
29
  export * from './fhir-cid.js';
29
30
  export * from './fhir-search.js';
31
+ export * from './gw-core-path.js';
30
32
  export * from './communication-fhir-r4.js';
31
33
  export * from './communication-document-reference.js';
32
34
  export * from './communication-bundle-document-request.js';
33
35
  export * from './communication-identity.js';
34
36
  export * from './communication-attached-bundle-session.js';
35
37
  export * from './permission-templates.js';
38
+ export * from './related-person-list.js';
36
39
  export * from './clinical-resource-converters.js';
37
40
  export * from './clinical-resource-view.js';
38
41
  export * from './fhir-validator.js';
39
42
  export * from './individual-form-pdf.js';
40
43
  export * from './individual-organization-claims.js';
44
+ export * from './individual-organization-lifecycle.js';
41
45
  export * from './individual-onboarding-editor.js';
42
46
  export * from './individual-onboarding-document-reference.js';
43
47
  export * from './individual-organization-kyc.js';
48
+ export * from './individual-bundle-vault.js';
49
+ export * from './invoice-bundle.js';
44
50
  export * from './ips-bundle-claims.js';
51
+ export * from './interoperable-resource-operation.js';
45
52
  export * from './jwt.js';
46
53
  export * from './license.js';
54
+ export * from './license-commercial-search.js';
55
+ export * from './license-list-search.js';
56
+ export * from './license-offer-order.js';
57
+ export * from './lifecycle-result-reader.js';
47
58
  export * from './manager-error.js';
48
59
  export * from './multibase58.js';
49
60
  export * from './multibasehash.js';
@@ -0,0 +1,144 @@
1
+ import { type IndividualSectionDescriptor } from '../constants/individual-sections';
2
+ import { type CodingDescriptor } from '../constants/vital-signs';
3
+ import type { IVaultRepository } from '../storage/IVaultRepository';
4
+ import { CommunicationAttachedBundleSession } from './communication-attached-bundle-session';
5
+ export type IndividualSectionManifest = Readonly<{
6
+ section: string;
7
+ collectionName: string;
8
+ containerIds: readonly string[];
9
+ resourceTypes: readonly string[];
10
+ updatedAt: string;
11
+ }>;
12
+ type SectionSelector = string | Pick<IndividualSectionDescriptor, 'attributeValue'> | {
13
+ attributeValue: string;
14
+ };
15
+ export type BuildVitalSignObservationClaimsInput = Readonly<{
16
+ identifier: string;
17
+ subject: string;
18
+ code: CodingDescriptor;
19
+ effectiveDateTime?: string;
20
+ issued?: string;
21
+ status?: string;
22
+ note?: string;
23
+ unit?: CodingDescriptor;
24
+ valueQuantity?: number;
25
+ valueString?: string;
26
+ }>;
27
+ export type IndividualBundleVaultOptions = Readonly<{
28
+ vaultRepository: IVaultRepository;
29
+ individualId: string;
30
+ compositionIdentifier?: string;
31
+ compositionType?: string;
32
+ compositionTitle?: string;
33
+ now?: () => string;
34
+ }>;
35
+ export declare function buildVitalSignObservationClaims(input: BuildVitalSignObservationClaimsInput): Record<string, unknown>;
36
+ export declare class IndividualBundleVault {
37
+ private readonly vaultRepository;
38
+ private readonly individualId;
39
+ private readonly now;
40
+ private compositionClaims;
41
+ private readonly sectionEditors;
42
+ private manifest;
43
+ constructor(options: IndividualBundleVaultOptions);
44
+ initialize(): Promise<this>;
45
+ getCompositionClaims(): Record<string, unknown>;
46
+ getSectionEditor(section: SectionSelector): Promise<CommunicationAttachedBundleSession>;
47
+ listSections(): IndividualSectionManifest[];
48
+ getSectionContainerIds(section: SectionSelector): string[];
49
+ /**
50
+ * Returns only visible/searchable Vital Signs rows for the individual.
51
+ *
52
+ * Reduced indexed component rows derived from FHIR `component` are kept in
53
+ * local storage for reconstruction/export but excluded here because they do
54
+ * not carry `Observation.status`.
55
+ */
56
+ getDisplayableVitalSignResourceIds(): Promise<string[]>;
57
+ saveSection(section: SectionSelector): Promise<this>;
58
+ upsertSectionEntry(section: SectionSelector, input: Readonly<{
59
+ resourceType: string;
60
+ claims: Record<string, unknown>;
61
+ fullUrl?: string;
62
+ type?: string;
63
+ }>): Promise<this>;
64
+ upsertVitalSign(input: BuildVitalSignObservationClaimsInput): Promise<this>;
65
+ importBundleDocument(bundle: Record<string, any>): Promise<this>;
66
+ private resolveSectionsForClaims;
67
+ private buildDefaultFullUrl;
68
+ private resolveClaimsIdentifier;
69
+ private buildBundleDocumentSectionMap;
70
+ private resolveBundleSectionsForResource;
71
+ private entryToStoredSectionRecord;
72
+ private buildIndexedData;
73
+ private resolveAllowedIndexableClaims;
74
+ private resolveEntryRecordId;
75
+ private updateCompositionFromManifest;
76
+ private persistComposition;
77
+ private resolveSectionValue;
78
+ private getCollectionName;
79
+ private getCompositionRecordId;
80
+ static decodeCollectionSectionKey(encodedSection: string): string;
81
+ static getDefaultVitalSignInputs(): {
82
+ heartRate: {
83
+ code: Readonly<{
84
+ system: string;
85
+ code: string;
86
+ display?: string;
87
+ claim: string;
88
+ }>;
89
+ unit: Readonly<{
90
+ system: string;
91
+ code: string;
92
+ display?: string;
93
+ claim: string;
94
+ }>;
95
+ section: string;
96
+ };
97
+ bodyTemperature: {
98
+ code: Readonly<{
99
+ system: string;
100
+ code: string;
101
+ display?: string;
102
+ claim: string;
103
+ }>;
104
+ unit: Readonly<{
105
+ system: string;
106
+ code: string;
107
+ display?: string;
108
+ claim: string;
109
+ }>;
110
+ section: string;
111
+ };
112
+ systolicBloodPressure: {
113
+ code: Readonly<{
114
+ system: string;
115
+ code: string;
116
+ display?: string;
117
+ claim: string;
118
+ }>;
119
+ unit: Readonly<{
120
+ system: string;
121
+ code: string;
122
+ display?: string;
123
+ claim: string;
124
+ }>;
125
+ section: string;
126
+ };
127
+ diastolicBloodPressure: {
128
+ code: Readonly<{
129
+ system: string;
130
+ code: string;
131
+ display?: string;
132
+ claim: string;
133
+ }>;
134
+ unit: Readonly<{
135
+ system: string;
136
+ code: string;
137
+ display?: string;
138
+ claim: string;
139
+ }>;
140
+ section: string;
141
+ };
142
+ };
143
+ }
144
+ export {};