@openhi/types 0.0.24 → 0.0.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.d.ts CHANGED
@@ -14,3 +14,4 @@
14
14
  export * from "./data";
15
15
  export * from "./control";
16
16
  export * from "./summary";
17
+ export * from "./sort-key";
package/lib/index.js CHANGED
@@ -30,4 +30,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
30
30
  __exportStar(require("./data"), exports);
31
31
  __exportStar(require("./control"), exports);
32
32
  __exportStar(require("./summary"), exports);
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILHlDQUF1QjtBQUN2Qiw0Q0FBMEI7QUFDMUIsNENBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAb3BlbmhpL3R5cGVzIOKAlCBGSElSIGFuZCBPcGVuSEkgdHlwZXMgYnkgZG9tYWluLlxuICpcbiAqIERhdGEgcGxhbmUgaXMgZ2VuZXJhdG9yIG91dHB1dCAoYHNyYy9kYXRhL2AsIG9uZSBtb2R1bGUgcGVyIEZISVIgUjRcbiAqIFN0cnVjdHVyZURlZmluaXRpb24sIGJhcnJlbCBpbiBgLi9kYXRhL2luZGV4LnRzYCkuIEJhc2UgcmVzb3VyY2VzXG4gKiAoUmVzb3VyY2UsIERvbWFpblJlc291cmNlLCBFbGVtZW50LCBCYWNrYm9uZUVsZW1lbnQsIEV4dGVuc2lvbiwgZXRjLilcbiAqIGxpdmUgaW4gdGhhdCBzYW1lIHRyZWUg4oCUIHRoZSBnZW5lcmF0b3IgdHJlYXRzIHRoZW0gbGlrZSBhbnkgb3RoZXIgU0QuXG4gKlxuICogQ29udHJvbCBwbGFuZSBpcyBnZW5lcmF0b3Igb3V0cHV0IChgc3JjL2NvbnRyb2wvYCk6IFVzZXIsIFRlbmFudCxcbiAqIFdvcmtzcGFjZSwgTWVtYmVyc2hpcCwgUm9sZUFzc2lnbm1lbnQsIFJvbGUsIHBsdXMgdGhlXG4gKiBgQ29udHJvbFBsYW5lUm9sZUNvZGVgIHRlcm1pbm9sb2d5LiBBdXRob3JlZCBpbiBGU0ggdW5kZXJcbiAqIGBmc2gvaW5wdXQvZnNoL2NvbnRyb2wtcGxhbmUvYCBhbmQgZW1pdHRlZCBieSB0aGUgc2FtZSBwaXBlbGluZS5cbiAqL1xuZXhwb3J0ICogZnJvbSBcIi4vZGF0YVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY29udHJvbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3VtbWFyeVwiO1xuIl19
33
+ __exportStar(require("./sort-key"), exports);
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILHlDQUF1QjtBQUN2Qiw0Q0FBMEI7QUFDMUIsNENBQTBCO0FBQzFCLDZDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG9wZW5oaS90eXBlcyDigJQgRkhJUiBhbmQgT3BlbkhJIHR5cGVzIGJ5IGRvbWFpbi5cbiAqXG4gKiBEYXRhIHBsYW5lIGlzIGdlbmVyYXRvciBvdXRwdXQgKGBzcmMvZGF0YS9gLCBvbmUgbW9kdWxlIHBlciBGSElSIFI0XG4gKiBTdHJ1Y3R1cmVEZWZpbml0aW9uLCBiYXJyZWwgaW4gYC4vZGF0YS9pbmRleC50c2ApLiBCYXNlIHJlc291cmNlc1xuICogKFJlc291cmNlLCBEb21haW5SZXNvdXJjZSwgRWxlbWVudCwgQmFja2JvbmVFbGVtZW50LCBFeHRlbnNpb24sIGV0Yy4pXG4gKiBsaXZlIGluIHRoYXQgc2FtZSB0cmVlIOKAlCB0aGUgZ2VuZXJhdG9yIHRyZWF0cyB0aGVtIGxpa2UgYW55IG90aGVyIFNELlxuICpcbiAqIENvbnRyb2wgcGxhbmUgaXMgZ2VuZXJhdG9yIG91dHB1dCAoYHNyYy9jb250cm9sL2ApOiBVc2VyLCBUZW5hbnQsXG4gKiBXb3Jrc3BhY2UsIE1lbWJlcnNoaXAsIFJvbGVBc3NpZ25tZW50LCBSb2xlLCBwbHVzIHRoZVxuICogYENvbnRyb2xQbGFuZVJvbGVDb2RlYCB0ZXJtaW5vbG9neS4gQXV0aG9yZWQgaW4gRlNIIHVuZGVyXG4gKiBgZnNoL2lucHV0L2ZzaC9jb250cm9sLXBsYW5lL2AgYW5kIGVtaXR0ZWQgYnkgdGhlIHNhbWUgcGlwZWxpbmUuXG4gKi9cbmV4cG9ydCAqIGZyb20gXCIuL2RhdGFcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbnRyb2xcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3N1bW1hcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3NvcnQta2V5XCI7XG4iXX0=
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Pure projection of a FHIR R4 resource into its GSI1 sort key per DR-004.
3
+ *
4
+ * - Labeled types (entries in `LABEL_PATHS`): `<normalizedLabel>#<id>`
5
+ * so list endpoints sort alphabetically and `BEGINS_WITH` serves
6
+ * prefix queries like `?name=Sm`.
7
+ * - Unlabeled types: `<ISO-8601 lastUpdated>#<id>` so list endpoints
8
+ * serve reverse-chronological with `ScanIndexForward=false`.
9
+ *
10
+ * Pure: no I/O, no DynamoDB access, deterministic over the resource and
11
+ * the committed `LABEL_PATHS` table. Consumed by the data-plane writer
12
+ * before each `PutItem` / `UpdateItem`.
13
+ */
14
+ import type { FhirResourceLike } from "../summary/extract-summary";
15
+ /**
16
+ * Returns the GSI1 sort-key value for `resource`. The id is the
17
+ * tie-breaker suffix; callers must pass a resource that carries an `id`
18
+ * for an `<id>` segment to be present, but `extractSortKey` returns
19
+ * `<label>#` (or `<lastUpdated>#`) with an empty trailing segment when id
20
+ * is missing rather than throwing — the caller validates id at the
21
+ * write-path entry.
22
+ *
23
+ * Resolution order:
24
+ * 1. `LABEL_PATHS[resourceType]` — the curated, type-aware extraction.
25
+ * 2. Introspection fallback per ADR-011 / DR-004: try `resource.name`
26
+ * (when it's a non-empty string), then `resource.title` (same), so
27
+ * spec types with a string `name`/`title` participate in alphabetical
28
+ * sort and `BEGINS_WITH` even if they aren't in `LABEL_PATHS` yet.
29
+ * 3. Unlabeled fallback — `<ISO-8601 lastUpdated>#<id>`.
30
+ */
31
+ export declare function extractSortKey(resource: FhirResourceLike): string;
32
+ /**
33
+ * Normalize a natural-language label per DR-004:
34
+ * 1. ASCII-fold common Latin diacritics (ñ→n, é→e, ø→o, …).
35
+ * 2. Lowercase (DynamoDB byte-order sort).
36
+ * 3. Strip apostrophes and periods (so `O'Connor` → `oconnor`).
37
+ * 4. Replace hyphens with spaces (so `García-López` → `garcia lopez`).
38
+ * 5. Strip other punctuation, collapse runs of whitespace, trim.
39
+ *
40
+ * Non-Latin scripts pass through unchanged after ASCII-fold so same-script
41
+ * items sort together. Locale-aware collation is a downstream client
42
+ * concern.
43
+ */
44
+ export declare function normalizeLabel(input: string): string;
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ /**
3
+ * Pure projection of a FHIR R4 resource into its GSI1 sort key per DR-004.
4
+ *
5
+ * - Labeled types (entries in `LABEL_PATHS`): `<normalizedLabel>#<id>`
6
+ * so list endpoints sort alphabetically and `BEGINS_WITH` serves
7
+ * prefix queries like `?name=Sm`.
8
+ * - Unlabeled types: `<ISO-8601 lastUpdated>#<id>` so list endpoints
9
+ * serve reverse-chronological with `ScanIndexForward=false`.
10
+ *
11
+ * Pure: no I/O, no DynamoDB access, deterministic over the resource and
12
+ * the committed `LABEL_PATHS` table. Consumed by the data-plane writer
13
+ * before each `PutItem` / `UpdateItem`.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.extractSortKey = extractSortKey;
17
+ exports.normalizeLabel = normalizeLabel;
18
+ const label_paths_1 = require("./label-paths");
19
+ /**
20
+ * Returns the GSI1 sort-key value for `resource`. The id is the
21
+ * tie-breaker suffix; callers must pass a resource that carries an `id`
22
+ * for an `<id>` segment to be present, but `extractSortKey` returns
23
+ * `<label>#` (or `<lastUpdated>#`) with an empty trailing segment when id
24
+ * is missing rather than throwing — the caller validates id at the
25
+ * write-path entry.
26
+ *
27
+ * Resolution order:
28
+ * 1. `LABEL_PATHS[resourceType]` — the curated, type-aware extraction.
29
+ * 2. Introspection fallback per ADR-011 / DR-004: try `resource.name`
30
+ * (when it's a non-empty string), then `resource.title` (same), so
31
+ * spec types with a string `name`/`title` participate in alphabetical
32
+ * sort and `BEGINS_WITH` even if they aren't in `LABEL_PATHS` yet.
33
+ * 3. Unlabeled fallback — `<ISO-8601 lastUpdated>#<id>`.
34
+ */
35
+ function extractSortKey(resource) {
36
+ const id = typeof resource.id === "string" ? resource.id : "";
37
+ const source = label_paths_1.LABEL_PATHS[resource.resourceType];
38
+ if (source) {
39
+ const label = extractLabel(resource, source);
40
+ if (label.length > 0) {
41
+ return `${normalizeLabel(label)}#${id}`;
42
+ }
43
+ }
44
+ const introspected = introspectStringField(resource, "name") ??
45
+ introspectStringField(resource, "title");
46
+ if (introspected !== undefined) {
47
+ return `${normalizeLabel(introspected)}#${id}`;
48
+ }
49
+ const lastUpdated = typeof resource.meta?.lastUpdated === "string"
50
+ ? resource.meta.lastUpdated
51
+ : "";
52
+ return `${lastUpdated}#${id}`;
53
+ }
54
+ /**
55
+ * Returns the value of `field` on `resource` only if it's a non-empty string.
56
+ * Guards against HumanName arrays (Patient.name) and other non-string shapes
57
+ * so the introspection fallback never produces a key from a typed field it
58
+ * doesn't understand — that case stays on the lastUpdated fallback.
59
+ */
60
+ function introspectStringField(resource, field) {
61
+ const value = resource[field];
62
+ if (typeof value === "string" && value.length > 0)
63
+ return value;
64
+ return undefined;
65
+ }
66
+ function extractLabel(resource, source) {
67
+ if (source.kind === "humanName") {
68
+ const names = resource[source.path];
69
+ if (!Array.isArray(names))
70
+ return "";
71
+ const first = names[0];
72
+ if (!first || typeof first !== "object")
73
+ return "";
74
+ const name = first;
75
+ const family = typeof name.family === "string" ? name.family : "";
76
+ const given = Array.isArray(name.given) && typeof name.given[0] === "string"
77
+ ? name.given[0]
78
+ : "";
79
+ if (family.length === 0 && given.length === 0)
80
+ return "";
81
+ return `${family},${given}`;
82
+ }
83
+ if (source.kind === "string") {
84
+ const value = resource[source.path];
85
+ return typeof value === "string" ? value : "";
86
+ }
87
+ if (source.kind === "codeDisplay") {
88
+ const code = resource[source.path];
89
+ if (!code || typeof code !== "object")
90
+ return "";
91
+ const cc = code;
92
+ if (Array.isArray(cc.coding)) {
93
+ const first = cc.coding[0];
94
+ if (first && typeof first === "object") {
95
+ const display = first.display;
96
+ if (typeof display === "string" && display.length > 0)
97
+ return display;
98
+ }
99
+ }
100
+ return typeof cc.text === "string" ? cc.text : "";
101
+ }
102
+ return "";
103
+ }
104
+ /**
105
+ * Normalize a natural-language label per DR-004:
106
+ * 1. ASCII-fold common Latin diacritics (ñ→n, é→e, ø→o, …).
107
+ * 2. Lowercase (DynamoDB byte-order sort).
108
+ * 3. Strip apostrophes and periods (so `O'Connor` → `oconnor`).
109
+ * 4. Replace hyphens with spaces (so `García-López` → `garcia lopez`).
110
+ * 5. Strip other punctuation, collapse runs of whitespace, trim.
111
+ *
112
+ * Non-Latin scripts pass through unchanged after ASCII-fold so same-script
113
+ * items sort together. Locale-aware collation is a downstream client
114
+ * concern.
115
+ */
116
+ function normalizeLabel(input) {
117
+ return asciiFold(input)
118
+ .toLowerCase()
119
+ .replace(/['’.]/g, "")
120
+ .replace(/-/g, " ")
121
+ .replace(/[^\p{L}\p{N},\s]/gu, " ")
122
+ .replace(/\s+/g, " ")
123
+ .trim();
124
+ }
125
+ function asciiFold(input) {
126
+ // Decompose accents and strip combining marks; covers the common Latin
127
+ // diacritics (é, ñ, ü, …). Non-Latin scripts are unaffected.
128
+ return input.normalize("NFKD").replace(/\p{M}+/gu, "");
129
+ }
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdC1zb3J0LWtleS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zb3J0LWtleS9leHRyYWN0LXNvcnQta2V5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7O0dBWUc7O0FBcUJILHdDQXVCQztBQXNFRCx3Q0FRQztBQXhIRCwrQ0FBOEQ7QUFHOUQ7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsU0FBZ0IsY0FBYyxDQUFDLFFBQTBCO0lBQ3ZELE1BQU0sRUFBRSxHQUFHLE9BQU8sUUFBUSxDQUFDLEVBQUUsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUU5RCxNQUFNLE1BQU0sR0FBRyx5QkFBVyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNsRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1gsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM3QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckIsT0FBTyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sWUFBWSxHQUNoQixxQkFBcUIsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDO1FBQ3ZDLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzQyxJQUFJLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUMvQixPQUFPLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRCxNQUFNLFdBQVcsR0FDZixPQUFPLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxLQUFLLFFBQVE7UUFDNUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJ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QyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQztBQUVEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsU0FBZ0IsY0FBYyxDQUFDLEtBQWE7SUFDMUMsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDO1NBQ3BCLFdBQVcsRUFBRTtTQUNiLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1NBQ3JCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO1NBQ2xCLE9BQU8sQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLENBQUM7U0FDbEMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUM7U0FDcEIsSUFBSSxFQUFFLENBQUM7QUFDWixDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsS0FBYTtJQUM5Qix1RUFBdUU7SUFDdkUsNkRBQTZEO0lBQzdELE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFB1cmUgcHJvamVjdGlvbiBvZiBhIEZISVIgUjQgcmVzb3VyY2UgaW50byBpdHMgR1NJMSBzb3J0IGtleSBwZXIgRFItMDA0LlxuICpcbiAqIC0gTGFiZWxlZCB0eXBlcyAoZW50cmllcyBpbiBgTEFCRUxfUEFUSFNgKTogYDxub3JtYWxpemVkTGFiZWw+IzxpZD5gXG4gKiAgIHNvIGxpc3QgZW5kcG9pbnRzIHNvcnQgYWxwaGFiZXRpY2FsbHkgYW5kIGBCRUdJTlNfV0lUSGAgc2VydmVzXG4gKiAgIHByZWZpeCBxdWVyaWVzIGxpa2UgYD9uYW1lPVNtYC5cbiAqIC0gVW5sYWJlbGVkIHR5cGVzOiBgPElTTy04NjAxIGxhc3RVcGRhdGVkPiM8aWQ+YCBzbyBsaXN0IGVuZHBvaW50c1xuICogICBzZXJ2ZSByZXZlcnNlLWNocm9ub2xvZ2ljYWwgd2l0aCBgU2NhbkluZGV4Rm9yd2FyZD1mYWxzZWAuXG4gKlxuICogUHVyZTogbm8gSS9PLCBubyBEeW5hbW9EQiBhY2Nlc3MsIGRldGVybWluaXN0aWMgb3ZlciB0aGUgcmVzb3VyY2UgYW5kXG4gKiB0aGUgY29tbWl0dGVkIGBMQUJFTF9QQVRIU2AgdGFibGUuIENvbnN1bWVkIGJ5IHRoZSBkYXRhLXBsYW5lIHdyaXRlclxuICogYmVmb3JlIGVhY2ggYFB1dEl0ZW1gIC8gYFVwZGF0ZUl0ZW1gLlxuICovXG5cbmltcG9ydCB7IExBQkVMX1BBVEhTLCB0eXBlIExhYmVsU291cmNlIH0gZnJvbSBcIi4vbGFiZWwtcGF0aHNcIjtcbmltcG9ydCB0eXBlIHsgRmhpclJlc291cmNlTGlrZSB9IGZyb20gXCIuLi9zdW1tYXJ5L2V4dHJhY3Qtc3VtbWFyeVwiO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIEdTSTEgc29ydC1rZXkgdmFsdWUgZm9yIGByZXNvdXJjZWAuIFRoZSBpZCBpcyB0aGVcbiAqIHRpZS1icmVha2VyIHN1ZmZpeDsgY2FsbGVycyBtdXN0IHBhc3MgYSByZXNvdXJjZSB0aGF0IGNhcnJpZXMgYW4gYGlkYFxuICogZm9yIGFuIGA8aWQ+YCBzZWdtZW50IHRvIGJlIHByZXNlbnQsIGJ1dCBgZXh0cmFjdFNvcnRLZXlgIHJldHVybnNcbiAqIGA8bGFiZWw+I2AgKG9yIGA8bGFzdFVwZGF0ZWQ+I2ApIHdpdGggYW4gZW1wdHkgdHJhaWxpbmcgc2VnbWVudCB3aGVuIGlkXG4gKiBpcyBtaXNzaW5nIHJhdGhlciB0aGFuIHRocm93aW5nIOKAlCB0aGUgY2FsbGVyIHZhbGlkYXRlcyBpZCBhdCB0aGVcbiAqIHdyaXRlLXBhdGggZW50cnkuXG4gKlxuICogUmVzb2x1dGlvbiBvcmRlcjpcbiAqIDEuIGBMQUJFTF9QQVRIU1tyZXNvdXJjZVR5cGVdYCDigJQgdGhlIGN1cmF0ZWQsIHR5cGUtYXdhcmUgZXh0cmFjdGlvbi5cbiAqIDIuIEludHJvc3BlY3Rpb24gZmFsbGJhY2sgcGVyIEFEUi0wMTEgLyBEUi0wMDQ6IHRyeSBgcmVzb3VyY2UubmFtZWBcbiAqICAgICh3aGVuIGl0J3MgYSBub24tZW1wdHkgc3RyaW5nKSwgdGhlbiBgcmVzb3VyY2UudGl0bGVgIChzYW1lKSwgc29cbiAqICAgIHNwZWMgdHlwZXMgd2l0aCBhIHN0cmluZyBgbmFtZWAvYHRpdGxlYCBwYXJ0aWNpcGF0ZSBpbiBhbHBoYWJldGljYWxcbiAqICAgIHNvcnQgYW5kIGBCRUdJTlNfV0lUSGAgZXZlbiBpZiB0aGV5IGFyZW4ndCBpbiBgTEFCRUxfUEFUSFNgIHlldC5cbiAqIDMuIFVubGFiZWxlZCBmYWxsYmFjayDigJQgYDxJU08tODYwMSBsYXN0VXBkYXRlZD4jPGlkPmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0U29ydEtleShyZXNvdXJjZTogRmhpclJlc291cmNlTGlrZSk6IHN0cmluZyB7XG4gIGNvbnN0IGlkID0gdHlwZW9mIHJlc291cmNlLmlkID09PSBcInN0cmluZ1wiID8gcmVzb3VyY2UuaWQgOiBcIlwiO1xuXG4gIGNvbnN0IHNvdXJjZSA9IExBQkVMX1BBVEhTW3Jlc291cmNlLnJlc291cmNlVHlwZV07XG4gIGlmIChzb3VyY2UpIHtcbiAgICBjb25zdCBsYWJlbCA9IGV4dHJhY3RMYWJlbChyZXNvdXJjZSwgc291cmNlKTtcbiAgICBpZiAobGFiZWwubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIGAke25vcm1hbGl6ZUxhYmVsKGxhYmVsKX0jJHtpZH1gO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGludHJvc3BlY3RlZCA9XG4gICAgaW50cm9zcGVjdFN0cmluZ0ZpZWxkKHJlc291cmNlLCBcIm5hbWVcIikgPz9cbiAgICBpbnRyb3NwZWN0U3RyaW5nRmllbGQocmVzb3VyY2UsIFwidGl0bGVcIik7XG4gIGlmIChpbnRyb3NwZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBgJHtub3JtYWxpemVMYWJlbChpbnRyb3NwZWN0ZWQpfSMke2lkfWA7XG4gIH1cblxuICBjb25zdCBsYXN0VXBkYXRlZCA9XG4gICAgdHlwZW9mIHJlc291cmNlLm1ldGE/Lmxhc3RVcGRhdGVkID09PSBcInN0cmluZ1wiXG4gICAgICA/IHJlc291cmNlLm1ldGEubGFzdFVwZGF0ZWRcbiAgICAgIDogXCJcIjtcbiAgcmV0dXJuIGAke2xhc3RVcGRhdGVkfSMke2lkfWA7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgdmFsdWUgb2YgYGZpZWxkYCBvbiBgcmVzb3VyY2VgIG9ubHkgaWYgaXQncyBhIG5vbi1lbXB0eSBzdHJpbmcuXG4gKiBHdWFyZHMgYWdhaW5zdCBIdW1hbk5hbWUgYXJyYXlzIChQYXRpZW50Lm5hbWUpIGFuZCBvdGhlciBub24tc3RyaW5nIHNoYXBlc1xuICogc28gdGhlIGludHJvc3BlY3Rpb24gZmFsbGJhY2sgbmV2ZXIgcHJvZHVjZXMgYSBrZXkgZnJvbSBhIHR5cGVkIGZpZWxkIGl0XG4gKiBkb2Vzbid0IHVuZGVyc3RhbmQg4oCUIHRoYXQgY2FzZSBzdGF5cyBvbiB0aGUgbGFzdFVwZGF0ZWQgZmFsbGJhY2suXG4gKi9cbmZ1bmN0aW9uIGludHJvc3BlY3RTdHJpbmdGaWVsZChcbiAgcmVzb3VyY2U6IEZoaXJSZXNvdXJjZUxpa2UsXG4gIGZpZWxkOiBzdHJpbmcsXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCB2YWx1ZSA9IHJlc291cmNlW2ZpZWxkXTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZS5sZW5ndGggPiAwKSByZXR1cm4gdmFsdWU7XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RMYWJlbChyZXNvdXJjZTogRmhpclJlc291cmNlTGlrZSwgc291cmNlOiBMYWJlbFNvdXJjZSk6IHN0cmluZyB7XG4gIGlmIChzb3VyY2Uua2luZCA9PT0gXCJodW1hbk5hbWVcIikge1xuICAgIGNvbnN0IG5hbWVzID0gcmVzb3VyY2Vbc291cmNlLnBhdGhdO1xuICAgIGlmICghQXJyYXkuaXNBcnJheShuYW1lcykpIHJldHVybiBcIlwiO1xuICAgIGNvbnN0IGZpcnN0ID0gbmFtZXNbMF07XG4gICAgaWYgKCFmaXJzdCB8fCB0eXBlb2YgZmlyc3QgIT09IFwib2JqZWN0XCIpIHJldHVybiBcIlwiO1xuICAgIGNvbnN0IG5hbWUgPSBmaXJzdCBhcyB7IGZhbWlseT86IHVua25vd247IGdpdmVuPzogdW5rbm93biB9O1xuICAgIGNvbnN0IGZhbWlseSA9IHR5cGVvZiBuYW1lLmZhbWlseSA9PT0gXCJzdHJpbmdcIiA/IG5hbWUuZmFtaWx5IDogXCJcIjtcbiAgICBjb25zdCBnaXZlbiA9XG4gICAgICBBcnJheS5pc0FycmF5KG5hbWUuZ2l2ZW4pICYmIHR5cGVvZiBuYW1lLmdpdmVuWzBdID09PSBcInN0cmluZ1wiXG4gICAgICAgID8gbmFtZS5naXZlblswXVxuICAgICAgICA6IFwiXCI7XG4gICAgaWYgKGZhbWlseS5sZW5ndGggPT09IDAgJiYgZ2l2ZW4ubGVuZ3RoID09PSAwKSByZXR1cm4gXCJcIjtcbiAgICByZXR1cm4gYCR7ZmFtaWx5fSwke2dpdmVufWA7XG4gIH1cblxuICBpZiAoc291cmNlLmtpbmQgPT09IFwic3RyaW5nXCIpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHJlc291cmNlW3NvdXJjZS5wYXRoXTtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiID8gdmFsdWUgOiBcIlwiO1xuICB9XG5cbiAgaWYgKHNvdXJjZS5raW5kID09PSBcImNvZGVEaXNwbGF5XCIpIHtcbiAgICBjb25zdCBjb2RlID0gcmVzb3VyY2Vbc291cmNlLnBhdGhdO1xuICAgIGlmICghY29kZSB8fCB0eXBlb2YgY29kZSAhPT0gXCJvYmplY3RcIikgcmV0dXJuIFwiXCI7XG4gICAgY29uc3QgY2MgPSBjb2RlIGFzIHtcbiAgICAgIGNvZGluZz86IHVua25vd247XG4gICAgICB0ZXh0PzogdW5rbm93bjtcbiAgICB9O1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNjLmNvZGluZykpIHtcbiAgICAgIGNvbnN0IGZpcnN0ID0gY2MuY29kaW5nWzBdO1xuICAgICAgaWYgKGZpcnN0ICYmIHR5cGVvZiBmaXJzdCA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBjb25zdCBkaXNwbGF5ID0gKGZpcnN0IGFzIHsgZGlzcGxheT86IHVua25vd24gfSkuZGlzcGxheTtcbiAgICAgICAgaWYgKHR5cGVvZiBkaXNwbGF5ID09PSBcInN0cmluZ1wiICYmIGRpc3BsYXkubGVuZ3RoID4gMCkgcmV0dXJuIGRpc3BsYXk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0eXBlb2YgY2MudGV4dCA9PT0gXCJzdHJpbmdcIiA/IGNjLnRleHQgOiBcIlwiO1xuICB9XG5cbiAgcmV0dXJuIFwiXCI7XG59XG5cbi8qKlxuICogTm9ybWFsaXplIGEgbmF0dXJhbC1sYW5ndWFnZSBsYWJlbCBwZXIgRFItMDA0OlxuICogMS4gQVNDSUktZm9sZCBjb21tb24gTGF0aW4gZGlhY3JpdGljcyAow7HihpJuLCDDqeKGkmUsIMO44oaSbywg4oCmKS5cbiAqIDIuIExvd2VyY2FzZSAoRHluYW1vREIgYnl0ZS1vcmRlciBzb3J0KS5cbiAqIDMuIFN0cmlwIGFwb3N0cm9waGVzIGFuZCBwZXJpb2RzIChzbyBgTydDb25ub3JgIOKGkiBgb2Nvbm5vcmApLlxuICogNC4gUmVwbGFjZSBoeXBoZW5zIHdpdGggc3BhY2VzIChzbyBgR2FyY8OtYS1Mw7NwZXpgIOKGkiBgZ2FyY2lhIGxvcGV6YCkuXG4gKiA1LiBTdHJpcCBvdGhlciBwdW5jdHVhdGlvbiwgY29sbGFwc2UgcnVucyBvZiB3aGl0ZXNwYWNlLCB0cmltLlxuICpcbiAqIE5vbi1MYXRpbiBzY3JpcHRzIHBhc3MgdGhyb3VnaCB1bmNoYW5nZWQgYWZ0ZXIgQVNDSUktZm9sZCBzbyBzYW1lLXNjcmlwdFxuICogaXRlbXMgc29ydCB0b2dldGhlci4gTG9jYWxlLWF3YXJlIGNvbGxhdGlvbiBpcyBhIGRvd25zdHJlYW0gY2xpZW50XG4gKiBjb25jZXJuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplTGFiZWwoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBhc2NpaUZvbGQoaW5wdXQpXG4gICAgLnRvTG93ZXJDYXNlKClcbiAgICAucmVwbGFjZSgvWyfigJkuXS9nLCBcIlwiKVxuICAgIC5yZXBsYWNlKC8tL2csIFwiIFwiKVxuICAgIC5yZXBsYWNlKC9bXlxccHtMfVxccHtOfSxcXHNdL2d1LCBcIiBcIilcbiAgICAucmVwbGFjZSgvXFxzKy9nLCBcIiBcIilcbiAgICAudHJpbSgpO1xufVxuXG5mdW5jdGlvbiBhc2NpaUZvbGQoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIERlY29tcG9zZSBhY2NlbnRzIGFuZCBzdHJpcCBjb21iaW5pbmcgbWFya3M7IGNvdmVycyB0aGUgY29tbW9uIExhdGluXG4gIC8vIGRpYWNyaXRpY3MgKMOpLCDDsSwgw7wsIOKApikuIE5vbi1MYXRpbiBzY3JpcHRzIGFyZSB1bmFmZmVjdGVkLlxuICByZXR1cm4gaW5wdXQubm9ybWFsaXplKFwiTkZLRFwiKS5yZXBsYWNlKC9cXHB7TX0rL2d1LCBcIlwiKTtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from "./label-paths";
2
+ export * from "./extract-sort-key";
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./label-paths"), exports);
18
+ __exportStar(require("./extract-sort-key"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc29ydC1rZXkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdEQUE4QjtBQUM5QixxREFBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9sYWJlbC1wYXRoc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZXh0cmFjdC1zb3J0LWtleVwiO1xuIl19
@@ -0,0 +1,29 @@
1
+ /**
2
+ * `LABEL_PATHS` — per-resource-type label-extraction rule for `extractSortKey`.
3
+ * Hand-curated platform-tier table per DR-004.
4
+ *
5
+ * Resource types listed here emit GSI1 sort keys of the form
6
+ * `<normalizedLabel>#<id>` so list endpoints return alphabetically sorted by
7
+ * natural label and `BEGINS_WITH` queries serve prefix searches like
8
+ * `?name=Sm`. Resource types absent from this map fall back to
9
+ * `<ISO-8601 lastUpdated>#<id>`.
10
+ *
11
+ * The minimum platform-curated set per DR-004 is Patient, Practitioner,
12
+ * Organization, Location, Medication. New entries here are one-line additions
13
+ * reviewed at PR time — no engine change required.
14
+ *
15
+ * @see openhi-planning DR-004 — FHIR Summary-Attribute and Sort-Key Projection Strategy
16
+ */
17
+ /** Source of the natural label for a labeled resource type. */
18
+ export type LabelSource = {
19
+ kind: "humanName";
20
+ path: "name";
21
+ } | {
22
+ kind: "string";
23
+ path: "name";
24
+ } | {
25
+ kind: "codeDisplay";
26
+ path: "code";
27
+ };
28
+ /** Resource types with curated natural labels (DR-004 Tier 1). */
29
+ export declare const LABEL_PATHS: Record<string, LabelSource>;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /**
3
+ * `LABEL_PATHS` — per-resource-type label-extraction rule for `extractSortKey`.
4
+ * Hand-curated platform-tier table per DR-004.
5
+ *
6
+ * Resource types listed here emit GSI1 sort keys of the form
7
+ * `<normalizedLabel>#<id>` so list endpoints return alphabetically sorted by
8
+ * natural label and `BEGINS_WITH` queries serve prefix searches like
9
+ * `?name=Sm`. Resource types absent from this map fall back to
10
+ * `<ISO-8601 lastUpdated>#<id>`.
11
+ *
12
+ * The minimum platform-curated set per DR-004 is Patient, Practitioner,
13
+ * Organization, Location, Medication. New entries here are one-line additions
14
+ * reviewed at PR time — no engine change required.
15
+ *
16
+ * @see openhi-planning DR-004 — FHIR Summary-Attribute and Sort-Key Projection Strategy
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.LABEL_PATHS = void 0;
20
+ /** Resource types with curated natural labels (DR-004 Tier 1). */
21
+ exports.LABEL_PATHS = {
22
+ Patient: { kind: "humanName", path: "name" },
23
+ Practitioner: { kind: "humanName", path: "name" },
24
+ Organization: { kind: "string", path: "name" },
25
+ Location: { kind: "string", path: "name" },
26
+ Medication: { kind: "codeDisplay", path: "code" },
27
+ };
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWwtcGF0aHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc29ydC1rZXkvbGFiZWwtcGF0aHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRzs7O0FBUUgsa0VBQWtFO0FBQ3JELFFBQUEsV0FBVyxHQUFnQztJQUN0RCxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7SUFDNUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQ2pELFlBQVksRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtJQUM5QyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7SUFDMUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0NBQ2xELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGBMQUJFTF9QQVRIU2Ag4oCUIHBlci1yZXNvdXJjZS10eXBlIGxhYmVsLWV4dHJhY3Rpb24gcnVsZSBmb3IgYGV4dHJhY3RTb3J0S2V5YC5cbiAqIEhhbmQtY3VyYXRlZCBwbGF0Zm9ybS10aWVyIHRhYmxlIHBlciBEUi0wMDQuXG4gKlxuICogUmVzb3VyY2UgdHlwZXMgbGlzdGVkIGhlcmUgZW1pdCBHU0kxIHNvcnQga2V5cyBvZiB0aGUgZm9ybVxuICogYDxub3JtYWxpemVkTGFiZWw+IzxpZD5gIHNvIGxpc3QgZW5kcG9pbnRzIHJldHVybiBhbHBoYWJldGljYWxseSBzb3J0ZWQgYnlcbiAqIG5hdHVyYWwgbGFiZWwgYW5kIGBCRUdJTlNfV0lUSGAgcXVlcmllcyBzZXJ2ZSBwcmVmaXggc2VhcmNoZXMgbGlrZVxuICogYD9uYW1lPVNtYC4gUmVzb3VyY2UgdHlwZXMgYWJzZW50IGZyb20gdGhpcyBtYXAgZmFsbCBiYWNrIHRvXG4gKiBgPElTTy04NjAxIGxhc3RVcGRhdGVkPiM8aWQ+YC5cbiAqXG4gKiBUaGUgbWluaW11bSBwbGF0Zm9ybS1jdXJhdGVkIHNldCBwZXIgRFItMDA0IGlzIFBhdGllbnQsIFByYWN0aXRpb25lcixcbiAqIE9yZ2FuaXphdGlvbiwgTG9jYXRpb24sIE1lZGljYXRpb24uIE5ldyBlbnRyaWVzIGhlcmUgYXJlIG9uZS1saW5lIGFkZGl0aW9uc1xuICogcmV2aWV3ZWQgYXQgUFIgdGltZSDigJQgbm8gZW5naW5lIGNoYW5nZSByZXF1aXJlZC5cbiAqXG4gKiBAc2VlIG9wZW5oaS1wbGFubmluZyBEUi0wMDQg4oCUIEZISVIgU3VtbWFyeS1BdHRyaWJ1dGUgYW5kIFNvcnQtS2V5IFByb2plY3Rpb24gU3RyYXRlZ3lcbiAqL1xuXG4vKiogU291cmNlIG9mIHRoZSBuYXR1cmFsIGxhYmVsIGZvciBhIGxhYmVsZWQgcmVzb3VyY2UgdHlwZS4gKi9cbmV4cG9ydCB0eXBlIExhYmVsU291cmNlID1cbiAgfCB7IGtpbmQ6IFwiaHVtYW5OYW1lXCI7IHBhdGg6IFwibmFtZVwiIH1cbiAgfCB7IGtpbmQ6IFwic3RyaW5nXCI7IHBhdGg6IFwibmFtZVwiIH1cbiAgfCB7IGtpbmQ6IFwiY29kZURpc3BsYXlcIjsgcGF0aDogXCJjb2RlXCIgfTtcblxuLyoqIFJlc291cmNlIHR5cGVzIHdpdGggY3VyYXRlZCBuYXR1cmFsIGxhYmVscyAoRFItMDA0IFRpZXIgMSkuICovXG5leHBvcnQgY29uc3QgTEFCRUxfUEFUSFM6IFJlY29yZDxzdHJpbmcsIExhYmVsU291cmNlPiA9IHtcbiAgUGF0aWVudDogeyBraW5kOiBcImh1bWFuTmFtZVwiLCBwYXRoOiBcIm5hbWVcIiB9LFxuICBQcmFjdGl0aW9uZXI6IHsga2luZDogXCJodW1hbk5hbWVcIiwgcGF0aDogXCJuYW1lXCIgfSxcbiAgT3JnYW5pemF0aW9uOiB7IGtpbmQ6IFwic3RyaW5nXCIsIHBhdGg6IFwibmFtZVwiIH0sXG4gIExvY2F0aW9uOiB7IGtpbmQ6IFwic3RyaW5nXCIsIHBhdGg6IFwibmFtZVwiIH0sXG4gIE1lZGljYXRpb246IHsga2luZDogXCJjb2RlRGlzcGxheVwiLCBwYXRoOiBcImNvZGVcIiB9LFxufTtcbiJdfQ==
package/package.json CHANGED
@@ -36,7 +36,7 @@
36
36
  "publishConfig": {
37
37
  "access": "public"
38
38
  },
39
- "version": "0.0.24",
39
+ "version": "0.0.25",
40
40
  "types": "lib/index.d.ts",
41
41
  "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"pnpm exec projen\".",
42
42
  "scripts": {