@medplum/core 2.0.23 → 2.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/dist/cjs/index.cjs +6 -13364
- package/dist/cjs/index.cjs.map +7 -1
- package/dist/esm/index.mjs +31 -26
- package/dist/esm/index.mjs.map +7 -1
- package/dist/types/access.d.ts +48 -0
- package/dist/types/client.d.ts +15 -20
- package/dist/types/fhirlexer/parse.d.ts +5 -4
- package/dist/types/fhirpath/functions.d.ts +1 -3
- package/dist/types/index.d.ts +3 -0
- package/dist/types/outcomes.d.ts +3 -1
- package/dist/types/search/search.d.ts +7 -0
- package/dist/types/typeschema/types.d.ts +5 -2
- package/dist/types/typeschema/validation.d.ts +2 -0
- package/dist/types/utils.d.ts +14 -0
- package/package.json +2 -2
- package/dist/cjs/index.min.cjs +0 -1
- package/dist/esm/base-schema.json.mjs +0 -4408
- package/dist/esm/base-schema.json.mjs.map +0 -1
- package/dist/esm/base64.mjs +0 -33
- package/dist/esm/base64.mjs.map +0 -1
- package/dist/esm/bundle.mjs +0 -36
- package/dist/esm/bundle.mjs.map +0 -1
- package/dist/esm/cache.mjs +0 -64
- package/dist/esm/cache.mjs.map +0 -1
- package/dist/esm/client.mjs +0 -2144
- package/dist/esm/client.mjs.map +0 -1
- package/dist/esm/crypto.mjs +0 -22
- package/dist/esm/crypto.mjs.map +0 -1
- package/dist/esm/eventtarget.mjs +0 -36
- package/dist/esm/eventtarget.mjs.map +0 -1
- package/dist/esm/fhirlexer/parse.mjs +0 -122
- package/dist/esm/fhirlexer/parse.mjs.map +0 -1
- package/dist/esm/fhirlexer/tokenize.mjs +0 -231
- package/dist/esm/fhirlexer/tokenize.mjs.map +0 -1
- package/dist/esm/fhirmapper/parse.mjs +0 -329
- package/dist/esm/fhirmapper/parse.mjs.map +0 -1
- package/dist/esm/fhirmapper/tokenize.mjs +0 -13
- package/dist/esm/fhirmapper/tokenize.mjs.map +0 -1
- package/dist/esm/fhirpath/atoms.mjs +0 -347
- package/dist/esm/fhirpath/atoms.mjs.map +0 -1
- package/dist/esm/fhirpath/date.mjs +0 -24
- package/dist/esm/fhirpath/date.mjs.map +0 -1
- package/dist/esm/fhirpath/functions.mjs +0 -1626
- package/dist/esm/fhirpath/functions.mjs.map +0 -1
- package/dist/esm/fhirpath/parse.mjs +0 -144
- package/dist/esm/fhirpath/parse.mjs.map +0 -1
- package/dist/esm/fhirpath/tokenize.mjs +0 -10
- package/dist/esm/fhirpath/tokenize.mjs.map +0 -1
- package/dist/esm/fhirpath/utils.mjs +0 -378
- package/dist/esm/fhirpath/utils.mjs.map +0 -1
- package/dist/esm/filter/parse.mjs +0 -101
- package/dist/esm/filter/parse.mjs.map +0 -1
- package/dist/esm/filter/tokenize.mjs +0 -16
- package/dist/esm/filter/tokenize.mjs.map +0 -1
- package/dist/esm/filter/types.mjs +0 -34
- package/dist/esm/filter/types.mjs.map +0 -1
- package/dist/esm/format.mjs +0 -390
- package/dist/esm/format.mjs.map +0 -1
- package/dist/esm/hl7.mjs +0 -242
- package/dist/esm/hl7.mjs.map +0 -1
- package/dist/esm/index.min.mjs +0 -1
- package/dist/esm/jwt.mjs +0 -30
- package/dist/esm/jwt.mjs.map +0 -1
- package/dist/esm/node_modules/tslib/package.json +0 -1
- package/dist/esm/outcomes.mjs +0 -271
- package/dist/esm/outcomes.mjs.map +0 -1
- package/dist/esm/readablepromise.mjs +0 -82
- package/dist/esm/readablepromise.mjs.map +0 -1
- package/dist/esm/schema.mjs +0 -417
- package/dist/esm/schema.mjs.map +0 -1
- package/dist/esm/search/details.mjs +0 -164
- package/dist/esm/search/details.mjs.map +0 -1
- package/dist/esm/search/match.mjs +0 -164
- package/dist/esm/search/match.mjs.map +0 -1
- package/dist/esm/search/search.mjs +0 -369
- package/dist/esm/search/search.mjs.map +0 -1
- package/dist/esm/sftp.mjs +0 -24
- package/dist/esm/sftp.mjs.map +0 -1
- package/dist/esm/storage.mjs +0 -95
- package/dist/esm/storage.mjs.map +0 -1
- package/dist/esm/types.mjs +0 -370
- package/dist/esm/types.mjs.map +0 -1
- package/dist/esm/utils.mjs +0 -632
- package/dist/esm/utils.mjs.map +0 -1
package/dist/esm/hl7.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hl7.mjs","sources":["../../src/hl7.ts"],"sourcesContent":["import { isStringArray } from './utils';\n\n/**\n * The Hl7Context class represents the parsing context for an HL7 message.\n *\n * MSH-1:\n * https://hl7-definition.caristix.com/v2/HL7v2.6/Fields/MSH.1\n *\n * MSH-2:\n * https://hl7-definition.caristix.com/v2/HL7v2.6/Fields/MSH.2\n *\n * See this tutorial on MSH, and why it's a bad idea to use anything other than the default values:\n * https://www.hl7soup.com/HL7TutorialMSH.html\n */\nexport class Hl7Context {\n constructor(\n public readonly segmentSeparator = '\\r',\n public readonly fieldSeparator = '|',\n public readonly componentSeparator = '^',\n public readonly repetitionSeparator = '~',\n public readonly escapeCharacter = '\\\\',\n public readonly subcomponentSeparator = '&'\n ) {}\n\n /**\n * Returns the MSH-2 field value based on the configured separators.\n * @returns The HL7 MSH-2 field value.\n */\n getMsh2(): string {\n return (\n this.fieldSeparator +\n this.componentSeparator +\n this.repetitionSeparator +\n this.escapeCharacter +\n this.subcomponentSeparator\n );\n }\n}\n\n/**\n * The Hl7Message class represents one HL7 message.\n * A message is a collection of segments.\n */\nexport class Hl7Message {\n readonly context: Hl7Context;\n readonly segments: Hl7Segment[];\n\n /**\n * Creates a new HL7 message.\n * @param segments The HL7 segments.\n * @param context Optional HL7 parsing context.\n */\n constructor(segments: Hl7Segment[], context = new Hl7Context()) {\n this.context = context;\n this.segments = segments;\n }\n\n /**\n * Returns an HL7 segment by index or by name.\n * @param index The HL7 segment index or name.\n * @returns The HL7 segment if found; otherwise, undefined.\n */\n get(index: number | string): Hl7Segment | undefined {\n if (typeof index === 'number') {\n return this.segments[index];\n }\n return this.segments.find((s) => s.name === index);\n }\n\n /**\n * Returns all HL7 segments of a given name.\n * @param name The HL7 segment name.\n * @returns An array of HL7 segments with the specified name.\n */\n getAll(name: string): Hl7Segment[] {\n return this.segments.filter((s) => s.name === name);\n }\n\n /**\n * Returns the HL7 message as a string.\n * @returns The HL7 message as a string.\n */\n toString(): string {\n return this.segments.map((s) => s.toString()).join(this.context.segmentSeparator);\n }\n\n /**\n * Returns an HL7 \"ACK\" (acknowledgement) message for this message.\n * @returns The HL7 \"ACK\" message.\n */\n buildAck(): Hl7Message {\n const now = new Date();\n const msh = this.get('MSH');\n const sendingApp = msh?.get(2)?.toString() || '';\n const sendingFacility = msh?.get(3)?.toString() || '';\n const receivingApp = msh?.get(4)?.toString() || '';\n const receivingFacility = msh?.get(5)?.toString() || '';\n const controlId = msh?.get(9)?.toString() || '';\n const versionId = msh?.get(12)?.toString() || '2.5.1';\n\n return new Hl7Message([\n new Hl7Segment(\n [\n 'MSH',\n this.context.getMsh2(),\n receivingApp,\n receivingFacility,\n sendingApp,\n sendingFacility,\n now.toISOString(),\n '',\n 'ACK',\n now.getTime().toString(),\n 'P',\n versionId,\n ],\n this.context\n ),\n new Hl7Segment(['MSA', 'AA', controlId, 'OK'], this.context),\n ]);\n }\n\n /**\n * Parses an HL7 message string into an Hl7Message object.\n * @param text The HL7 message text.\n * @returns The parsed HL7 message.\n */\n static parse(text: string): Hl7Message {\n if (!text.startsWith('MSH')) {\n const err = new Error('Invalid HL7 message');\n (err as any).type = 'entity.parse.failed';\n throw err;\n }\n const context = new Hl7Context(\n '\\r',\n text.charAt(3), // Field separator, recommended \"|\"\n text.charAt(4), // Component separator, recommended \"^\"\n text.charAt(5), // Repetition separator, recommended \"~\"\n text.charAt(6), // Escape character, recommended \"\\\"\n text.charAt(7) // Subcomponent separator, recommended \"&\"\n );\n return new Hl7Message(\n text.split(/[\\r\\n]+/).map((line) => Hl7Segment.parse(line, context)),\n context\n );\n }\n}\n\n/**\n * The Hl7Segment class represents one HL7 segment.\n * A segment is a collection of fields.\n * The name field is the first field.\n */\nexport class Hl7Segment {\n readonly context: Hl7Context;\n readonly name: string;\n readonly fields: Hl7Field[];\n\n /**\n * Creates a new HL7 segment.\n * @param fields The HL7 fields.\n * @param context Optional HL7 parsing context.\n */\n constructor(fields: Hl7Field[] | string[], context = new Hl7Context()) {\n this.context = context;\n if (isStringArray(fields)) {\n this.fields = fields.map((f) => Hl7Field.parse(f));\n } else {\n this.fields = fields;\n }\n this.name = this.fields[0].components[0][0];\n }\n\n /**\n * Returns an HL7 field by index.\n * @param index The HL7 field index.\n * @returns The HL7 field.\n */\n get(index: number): Hl7Field {\n return this.fields[index];\n }\n\n /**\n * Returns the HL7 segment as a string.\n * @returns The HL7 segment as a string.\n */\n toString(): string {\n return this.fields.map((f) => f.toString()).join(this.context.fieldSeparator);\n }\n\n /**\n * Parses an HL7 segment string into an Hl7Segment object.\n * @param text The HL7 segment text.\n * @param context Optional HL7 parsing context.\n * @returns The parsed HL7 segment.\n */\n static parse(text: string, context = new Hl7Context()): Hl7Segment {\n return new Hl7Segment(\n text.split(context.fieldSeparator).map((f) => Hl7Field.parse(f, context)),\n context\n );\n }\n}\n\n/**\n * The Hl7Field class represents one HL7 field.\n * A field is a collection of components.\n */\nexport class Hl7Field {\n readonly context: Hl7Context;\n readonly components: string[][];\n\n /**\n * Creates a new HL7 field.\n * @param components The HL7 components.\n * @param context Optional HL7 parsing context.\n */\n constructor(components: string[][], context = new Hl7Context()) {\n this.context = context;\n this.components = components;\n }\n\n /**\n * Returns an HL7 component by index.\n * @param component The component index.\n * @param subcomponent Optional subcomponent index.\n * @param repetition Optional repetition index.\n * @returns The string value of the specified component.\n */\n get(component: number, subcomponent?: number, repetition = 0): string {\n let value = this.components[repetition][component] || '';\n\n if (subcomponent !== undefined) {\n value = value.split(this.context.subcomponentSeparator)[subcomponent] || '';\n }\n\n return value;\n }\n\n /**\n * Returns the HL7 field as a string.\n * @returns The HL7 field as a string.\n */\n toString(): string {\n return this.components.map((r) => r.join(this.context.componentSeparator)).join(this.context.repetitionSeparator);\n }\n\n /**\n * Parses an HL7 field string into an Hl7Field object.\n * @param text The HL7 field text.\n * @param context Optional HL7 parsing context.\n * @returns The parsed HL7 field.\n */\n static parse(text: string, context = new Hl7Context()): Hl7Field {\n return new Hl7Field(\n text.split(context.repetitionSeparator).map((r) => r.split(context.componentSeparator)),\n context\n );\n }\n}\n\ninterface Hl7DateParseOptions {\n seconds?: boolean;\n tzOffset?: string;\n}\n\n/**\n * Returns a formatted string representing the date in ISO-8601 format.\n * @param hl7Date Date string.\n * @param options Optional configuration Object\n * @returns The date in ISO-8601 format.\n */\nexport function parseHl7Date(hl7Date: string | undefined, options?: Hl7DateParseOptions): string | undefined {\n if (!hl7Date) {\n return undefined;\n }\n\n options = { ...{ seconds: true, tzOffset: 'Z' }, ...options };\n\n const year = Number.parseInt(hl7Date.substring(0, 4));\n const month = Number.parseInt(hl7Date.substring(4, 6));\n const date = Number.parseInt(hl7Date.substring(6, 8));\n const hours = Number.parseInt(hl7Date.substring(8, 10));\n const minutes = Number.parseInt(hl7Date.substring(10, 12));\n\n const seconds = options.seconds ? Number.parseInt(hl7Date.substring(12, 14)) : 0;\n\n return `${pad2(year)}-${pad2(month)}-${pad2(date)}T${pad2(hours)}:${pad2(minutes)}:${pad2(seconds)}.000${\n options.tzOffset\n }`;\n}\n\nfunction pad2(n: number): string {\n return n.toString().padStart(2, '0');\n}\n"],"names":[],"mappings":"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"}
|
package/dist/esm/index.min.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
function e(e){if("undefined"!=typeof window)return window.atob(e);if("undefined"!=typeof Buffer)return Buffer.from(e,"base64").toString("binary");throw new Error("Unable to decode base64")}function t(e){if("undefined"!=typeof window)return window.btoa(e);if("undefined"!=typeof Buffer)return Buffer.from(e,"binary").toString("base64");throw new Error("Unable to encode base64")}function r(e){for(const t of e.entry||[])delete t?.resource?.meta,t.fullUrl="urn:uuid:"+t?.resource?.id,delete t?.resource?.id;const t=e.entry,r=JSON.stringify({resourceType:"Bundle",type:"transaction",entry:t?.map((e=>({fullUrl:e.fullUrl,request:{method:"POST",url:e.resource.resourceType},resource:e.resource})))},n,2);return JSON.parse(r)}function n(e,t){return"reference"===e&&"string"==typeof t&&t.includes("/")?"urn:uuid:"+t.split("/")[1]:t}class i{constructor(e=10){this.max=e,this.cache=new Map}clear(){this.cache.clear()}get(e){const t=this.cache.get(e);return t&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size>=this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}delete(e){this.cache.delete(e)}keys(){return this.cache.keys()}first(){return this.cache.keys().next().value}}function o(e,t){const r=[];if(e.line&&r.push(...e.line),e.city||e.state||e.postalCode){const t=[];e.city&&t.push(e.city),e.state&&t.push(e.state),e.postalCode&&t.push(e.postalCode),r.push(t.join(", "))}return e.use&&(t?.all||t?.use)&&r.push("["+e.use+"]"),r.join(t?.lineSeparator||", ").trim()}function s(e,t){const r=[];return e.prefix&&!1!==t?.prefix&&r.push(...e.prefix),e.given&&r.push(...e.given),e.family&&r.push(e.family),e.suffix&&!1!==t?.suffix&&r.push(...e.suffix),e.use&&(t?.all||t?.use)&&r.push("["+e.use+"]"),r.join(" ").trim()}function a(e){const t=[];return e.given&&t.push(...e.given),t.join(" ").trim()}function c(e){return e.family||""}function u(e){return e instanceof Date&&!isNaN(e.getTime())}function d(e,t,r){if(!e)return"";const n=new Date(e);return u(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(t,{timeZone:"UTC",...r})):""}function p(e,t,r){if(!e)return"";const n=new Date("2000-01-01T"+e+"Z");return u(n)?n.toLocaleTimeString(t,r):""}function l(e,t,r){if(!e)return"";const n=new Date(e);return u(n)?n.toLocaleString(t,r):""}function h(e,t,r){return e&&(e.start||e.end)?l(e.start,t,r)+" - "+l(e.end,t,r):""}const f={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},m={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},y={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function g(e){if(!e)return"";const t=[];if(e.repeat?.periodUnit){const r=e.repeat.frequency||1,n=e.repeat.period||1,i=e.repeat.periodUnit;1===r&&1===n?t.push(f[i]):(1===r?t.push("once"):t.push(r+" times"),1===n?t.push("per "+m[i]):t.push("per "+n+" "+y[i])),e.repeat.dayOfWeek&&t.push("on "+e.repeat.dayOfWeek.map(Y).join(", ")),e.repeat.timeOfDay&&t.push("at "+e.repeat.timeOfDay.map((e=>p(e))).join(", "))}return e.event&&t.push(e.event.map((e=>l(e))).join(", ")),Y(t.join(" ").trim())}function v(e,t,r=!1){if(r&&void 0===t)throw new Error("Precision must be specified for exclusive ranges");const n=e?.low&&{...e.low,comparator:void 0},i=e?.high&&{...e.high,comparator:void 0};return void 0===n?.value&&void 0===i?.value?"":void 0!==n?.value&&void 0===i?.value?r&&void 0!==t?(n.value=function(e,t,r=1){return(E(e,t)-r)*Math.pow(10,-t)}(n.value,t),`> ${x(n,t)}`):`>= ${x(n,t)}`:void 0===n?.value&&void 0!==i?.value?r&&void 0!==t?(i.value=function(e,t,r=1){return(E(e,t)+r)*Math.pow(10,-t)}(i.value,t),`< ${x(i,t)}`):`<= ${x(i,t)}`:(n?.unit===i?.unit&&delete n?.unit,`${x(n,t)} - ${x(i,t)}`)}function x(e,t){if(!e)return"";const r=[];return e.comparator&&(r.push(e.comparator),r.push(" ")),void 0!==e.value&&(void 0!==t?r.push(e.value.toFixed(t)):r.push(e.value)),e.unit&&("%"!==e.unit&&" "!==r[r.length-1]&&r.push(" "),r.push(e.unit)),r.join("").trim()}function S(e){return void 0===e?.value?"":e.value.toLocaleString(void 0,{style:"currency",currency:e.currency||"USD",currencyDisplay:"narrowSymbol"})}function b(e){return e?e.text?e.text:e.coding?e.coding.map((e=>w(e))).join(", "):"":""}function w(e){return e?.display||e?.code||""}function T(e){return e?"component"in e?e.component.map((e=>T(e))).join(" / "):e?.valueQuantity?x(e.valueQuantity):e.valueCodeableConcept?b(e.valueCodeableConcept):e.valueString?e.valueString:"":""}function E(e,t){return void 0===t?e:Math.round(e*Math.pow(10,t))}function k(e){const t=C(e),r=R(e);return r===t?{reference:t}:{reference:t,display:r}}function C(e){return e.resourceType+"/"+e.id}function P(e){return e?.reference?.split("/")[1]}function D(e){return"Patient"===e.resourceType||"Practitioner"===e.resourceType||"RelatedPerson"===e.resourceType}function R(e){if(D(e)){const t=function(e){const t=e.name;if(t&&t.length>0)return s(t[0]);return}(e);if(t)return t}if("Device"===e.resourceType){const t=function(e){const t=e.deviceName;if(t&&t.length>0)return t[0].name;return}(e);if(t)return t}return"Observation"===e.resourceType&&"code"in e&&e.code?.text?e.code.text:"User"===e.resourceType&&e.email?e.email:"name"in e&&e.name&&"string"==typeof e.name?e.name:C(e)}function A(e){if(!("photo"in e))return;const t=e.photo;if(t){if(!Array.isArray(t))return I(t);for(const e of t){const t=I(e);if(t)return t}}}function I(e){if(e.url&&e.contentType&&e.contentType.startsWith("image/"))return e.url}function U(e){return e?new Date(e):void 0}function O(e,t){const r=new Date(e);r.setUTCHours(0,0,0,0);const n=t?new Date(t):new Date;n.setUTCHours(0,0,0,0);const i=r.getUTCFullYear(),o=r.getUTCMonth(),s=r.getUTCDate(),a=n.getUTCFullYear(),c=n.getUTCMonth(),u=n.getUTCDate();let d=a-i;(c<o||c===o&&u<s)&&d--;let p=12*a+c-(12*i+o);u<s&&p--;return{years:d,months:p,days:Math.floor((n.getTime()-r.getTime())/864e5)}}function L(e,t){const{years:r,months:n,days:i}=O(e,t);return r>=2?r.toString().padStart(3,"0")+"Y":n>=1?n.toString().padStart(3,"0")+"M":i.toString().padStart(3,"0")+"D"}function M(e){const t={};return N(e.item,t),t}function N(e,t){if(e)for(const r of e)r.linkId&&r.answer&&r.answer.length>0&&(t[r.linkId]=r.answer[0]),N(r.item,t)}function _(e,t){const r=e.identifier;if(!r)return;const n=Array.isArray(r)?r:[r];for(const e of n)if(e.system===t)return e.value}function B(e,...t){let r=e;for(let e=0;e<t.length&&r;e++)r=r?.extension?.find((r=>r.url===t[e]));return r?.valueString}function j(e,...t){let r=e;for(let e=0;e<t.length&&r;e++)r=r?.extension?.find((r=>r.url===t[e]));return r}function $(e,t){return JSON.stringify(e,q,t?2:void 0)}function q(e,t){return!function(e){return!!e.match(/\d+$/)}(e)&&Q(t)?void 0:t}function Q(e){if(null==e)return!0;const t=typeof e;return"string"===t&&""===e||"object"===t&&0===Object.keys(e).length}function F(e,t,r){return e===t||(!(!Q(e)||!Q(t))||!Q(e)&&!Q(t)&&(Array.isArray(e)&&Array.isArray(t)?function(e,t){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(!F(e[r],t[r]))return!1;return!0}(e,t):!Array.isArray(e)&&!Array.isArray(t)&&(z(e)&&z(t)?function(e,t,r){const n=new Set;Object.keys(e).forEach((e=>n.add(e))),Object.keys(t).forEach((e=>n.add(e))),"meta"===r&&(n.delete("versionId"),n.delete("lastUpdated"),n.delete("author"));for(const r of n){if(!F(e[r],t[r],r))return!1}return!0}(e,t,r):(z(e)||z(t),!1))))}function W(e){return JSON.parse(JSON.stringify(e))}function H(e){return!!e.match(/^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/i)}function z(e){return null!==e&&"object"==typeof e}function G(e){return e.every((e=>"string"==typeof e))}const V=[];for(let e=0;e<256;e++)V.push(e.toString(16).padStart(2,"0"));function X(e){const t=new Uint8Array(e),r=new Array(t.length);for(let e=0;e<t.length;e++)r[e]=V[t[e]];return r.join("")}function J(e){const t=new Uint8Array(e),r=[];for(let e=0;e<t.length;e++)r[e]=String.fromCharCode(t[e]);return window.btoa(r.join(""))}function Y(e){return e.charAt(0).toUpperCase()+e.substring(1)}function Z(e){return e===e.toLowerCase()&&e!==e.toUpperCase()}function K(e,t){return e?.coding?.find((e=>e.system===t))?.code}function ee(e,t,r){e.coding||(e.coding=[]);const n=e.coding?.find((e=>e.system===t));n?n.code=r:e.coding?.push({system:t,code:r})}function te(e,t,r,n){return e.qualifiedInterval?.find((i=>ne(i,t)&&function(e,t,r){return!!e.range&&ie(t,e.range,r)}(i,r,e.quantitativeDetails?.decimalPrecision)&&(void 0===n||i.category===n)))}function re(e,t,r){return e.qualifiedInterval?.find((e=>ne(e,t)&&r.includes(e.condition)))}function ne(e,t){return function(e,t){return!e.gender||e.gender===t.gender}(e,t)&&function(e,t){return!e.age||ie(O(t.birthDate).years,e.age)}(e,t)}function ie(e,t,r){return(void 0===t.low?.value||de(e,t.low.value,r))&&(void 0===t.high?.value||ue(e,t.high.value,r))}function oe(e,t){return parseFloat(e.toFixed(t))}function se(e,t,r){return pe(e,r)===pe(t,r)}function ae(e,t,r){return pe(e,r)<pe(t,r)}function ce(e,t,r){return pe(e,r)>pe(t,r)}function ue(e,t,r){return pe(e,r)<=pe(t,r)}function de(e,t,r){return pe(e,r)>=pe(t,r)}function pe(e,t){return void 0===t?e:Math.round(e*Math.pow(10,t))}function le(e,t,r){return e.find((e=>"string"==typeof t?K(e.code||{},r)===t:K(e.code||{},r)===K(t,r)))}function he(){const e=new Uint32Array(28);return crypto.getRandomValues(e),X(e.buffer)}class fe{constructor(){this.listeners={}}addEventListener(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)}removeEventListeneer(e,t){const r=this.listeners[e];if(r)for(let e=0;e<r.length;e++)if(r[e]===t)return void r.splice(e,1)}dispatchEvent(e){const t=this.listeners[e.type];return t&&t.forEach((t=>t.call(this,e))),!e.defaultPrevented}}function me(t){const[r,n,i]=t.split(".");return function(t){const r=e(t.replace(/-/g,"+").replace(/_/g,"/")),n=Array.from(r).reduce(((e,t)=>`${e}%${("00"+t.charCodeAt(0).toString(16)).slice(-2)}`),""),i=decodeURIComponent(n);return JSON.parse(i)}(n)}const ye="ok",ge="created",ve="gone",xe="not-modified",Se="not-found",be="unauthorized",we="forbidden",Te="too-many-requests",Ee={resourceType:"OperationOutcome",id:ye,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},ke={resourceType:"OperationOutcome",id:ge,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},Ce={resourceType:"OperationOutcome",id:xe,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},Pe={resourceType:"OperationOutcome",id:Se,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},De={resourceType:"OperationOutcome",id:be,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},Re={resourceType:"OperationOutcome",id:we,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},Ae={resourceType:"OperationOutcome",id:ve,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},Ie={resourceType:"OperationOutcome",id:Te,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]},Ue={resourceType:"OperationOutcome",id:"accepted",issue:[{severity:"information",code:"informational",details:{text:"Accepted"}}]};function Oe(e,t){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:e},expression:t?[t]:void 0}]}}function Le(e){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"structure",details:{text:e}}]}}function Me(e){return"object"==typeof e&&null!==e&&"OperationOutcome"===e.resourceType}function Ne(e){return e.id===ye||e.id===ge||e.id===xe}function _e(e){return e.id===Se}function Be(e){return e.id===ve}function je(e){return e.id===ye?200:e.id===ge?201:e.id===xe?304:e.id===be?401:e.id===we?403:e.id===Se?404:e.id===ve?410:e.id===Te?429:400}function $e(e,t){if(!Ne(e)||void 0===t)throw new qe(e)}class qe extends Error{constructor(e,t){super(We(e)),this.outcome=e,this.cause=t}}function Qe(e){return e instanceof qe?e.outcome:Me(e)?e:Oe(Fe(e))}function Fe(e){return e?"string"==typeof e?e:e instanceof Error?e.message:Me(e)?We(e):JSON.stringify(e):"Unknown error"}function We(e){const t=e.issue?.map(He)??[];return t.length>0?t.join("; "):"Unknown error"}function He(e){let t=e.details?.text??e.diagnostics??"Unknown error";return e.expression?.length&&(t+=` (${e.expression.join(", ")})`),t}var ze;class Ge{constructor(e){this[ze]="ReadablePromise",this.status="pending",this.suspender=e.then((e=>(this.status="success",this.response=e,e)),(e=>{throw this.status="error",this.error=e,e}))}isPending(){return"pending"===this.status}isOk(){return"success"===this.status}read(){switch(this.status){case"pending":throw this.suspender;case"error":throw this.error;default:return this.response}}then(e,t){return this.suspender.then(e,t)}catch(e){return this.suspender.catch(e)}finally(e){return this.suspender.finally(e)}}ze=Symbol.toStringTag;class Ve{constructor(){this.storage="undefined"!=typeof localStorage?localStorage:new Xe}clear(){this.storage.clear()}getString(e){return this.storage.getItem(e)||void 0}setString(e,t){t?this.storage.setItem(e,t):this.storage.removeItem(e)}getObject(e){const t=this.getString(e);return t?JSON.parse(t):void 0}setObject(e,t){this.setString(e,t?$(t):void 0)}}class Xe{constructor(){this.data=new Map}get length(){return this.data.size}clear(){this.data.clear()}getItem(e){return this.data.get(e)??null}setItem(e,t){t?this.data.set(e,t):this.data.delete(e)}removeItem(e){this.data.delete(e)}key(e){return Array.from(this.data.keys())[e]}}var Je,Ye={types:{Element:{display:"Element",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]}}},BackboneElement:{display:"BackboneElement",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",type:[{code:"Extension"}]}}},Address:{display:"Address",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"code"}]},text:{type:[{code:"string"}]},line:{max:"*",type:[{code:"string"}]},city:{type:[{code:"string"}]},district:{type:[{code:"string"}]},state:{type:[{code:"string"}]},postalCode:{type:[{code:"string"}]},country:{type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Age:{display:"Age",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Annotation:{display:"Annotation",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},"author[x]":{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Organization"]},{code:"string"}]},time:{type:[{code:"dateTime"}]},text:{min:1,type:[{code:"markdown"}]}}},Attachment:{display:"Attachment",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},contentType:{type:[{code:"code"}]},language:{type:[{code:"code"}]},data:{type:[{code:"base64Binary"}]},url:{type:[{code:"url"}]},size:{type:[{code:"unsignedInt"}]},hash:{type:[{code:"base64Binary"}]},title:{type:[{code:"string"}]},creation:{type:[{code:"dateTime"}]}}},CodeableConcept:{display:"CodeableConcept",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},coding:{max:"*",type:[{code:"Coding"}]},text:{type:[{code:"string"}]}}},Coding:{display:"Coding",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},system:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},code:{type:[{code:"code"}]},display:{type:[{code:"string"}]},userSelected:{type:[{code:"boolean"}]}}},ContactDetail:{display:"ContactDetail",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},name:{type:[{code:"string"}]},telecom:{max:"*",type:[{code:"ContactPoint"}]}}},ContactPoint:{display:"ContactPoint",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},system:{type:[{code:"code"}]},value:{type:[{code:"string"}]},use:{type:[{code:"code"}]},rank:{type:[{code:"positiveInt"}]},period:{type:[{code:"Period"}]}}},Contributor:{display:"Contributor",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{min:1,type:[{code:"string"}]},contact:{max:"*",type:[{code:"ContactDetail"}]}}},Count:{display:"Count",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},DataRequirement:{display:"DataRequirement",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},profile:{max:"*",type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},"subject[x]":{type:[{code:"CodeableConcept"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Group"]}]},mustSupport:{max:"*",type:[{code:"string"}]},codeFilter:{max:"*",type:[{code:"Element"}]},dateFilter:{max:"*",type:[{code:"Element"}]},limit:{type:[{code:"positiveInt"}]},sort:{max:"*",type:[{code:"Element"}]}}},DataRequirementCodeFilter:{display:"DataRequirementCodeFilter",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},path:{type:[{code:"string"}]},searchParam:{type:[{code:"string"}]},valueSet:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/ValueSet"]}]},code:{max:"*",type:[{code:"Coding"}]}}},DataRequirementDateFilter:{display:"DataRequirementDateFilter",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},path:{type:[{code:"string"}]},searchParam:{type:[{code:"string"}]},"value[x]":{type:[{code:"dateTime"},{code:"Period"},{code:"Duration"}]}}},DataRequirementSort:{display:"DataRequirementSort",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},direction:{min:1,type:[{code:"code"}]}}},Distance:{display:"Distance",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Dosage:{display:"Dosage",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",type:[{code:"Extension"}]},sequence:{type:[{code:"integer"}]},text:{type:[{code:"string"}]},additionalInstruction:{max:"*",type:[{code:"CodeableConcept"}]},patientInstruction:{type:[{code:"string"}]},timing:{type:[{code:"Timing"}]},"asNeeded[x]":{type:[{code:"boolean"},{code:"CodeableConcept"}]},site:{type:[{code:"CodeableConcept"}]},route:{type:[{code:"CodeableConcept"}]},method:{type:[{code:"CodeableConcept"}]},doseAndRate:{max:"*",type:[{code:"Element"}]},maxDosePerPeriod:{type:[{code:"Ratio"}]},maxDosePerAdministration:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},maxDosePerLifetime:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},DosageDoseAndRate:{display:"DosageDoseAndRate",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},type:{type:[{code:"CodeableConcept"}]},"dose[x]":{type:[{code:"Range"},{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},"rate[x]":{type:[{code:"Ratio"},{code:"Range"},{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},Duration:{display:"Duration",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},ElementDefinition:{display:"ElementDefinition",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},representation:{max:"*",type:[{code:"code"}]},sliceName:{type:[{code:"string"}]},sliceIsConstraining:{type:[{code:"boolean"}]},label:{type:[{code:"string"}]},code:{max:"*",type:[{code:"Coding"}]},slicing:{type:[{code:"Element"}]},short:{type:[{code:"string"}]},definition:{type:[{code:"markdown"}]},comment:{type:[{code:"markdown"}]},requirements:{type:[{code:"markdown"}]},alias:{max:"*",type:[{code:"string"}]},min:{type:[{code:"unsignedInt"}]},max:{type:[{code:"string"}]},base:{type:[{code:"Element"}]},contentReference:{type:[{code:"uri"}]},type:{max:"*",type:[{code:"Element"}]},"defaultValue[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},meaningWhenMissing:{type:[{code:"markdown"}]},orderMeaning:{type:[{code:"string"}]},"fixed[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},"pattern[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},example:{max:"*",type:[{code:"Element"}]},"minValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},"maxValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},maxLength:{type:[{code:"integer"}]},condition:{max:"*",type:[{code:"id"}]},constraint:{max:"*",type:[{code:"Element"}]},mustSupport:{type:[{code:"boolean"}]},isModifier:{type:[{code:"boolean"}]},isModifierReason:{type:[{code:"string"}]},isSummary:{type:[{code:"boolean"}]},binding:{type:[{code:"Element"}]},mapping:{max:"*",type:[{code:"Element"}]}}},ElementDefinitionSlicing:{display:"ElementDefinitionSlicing",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},discriminator:{max:"*",type:[{code:"Element"}]},description:{type:[{code:"string"}]},ordered:{type:[{code:"boolean"}]},rules:{min:1,type:[{code:"code"}]}}},ElementDefinitionSlicingDiscriminator:{display:"ElementDefinitionSlicingDiscriminator",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},path:{min:1,type:[{code:"string"}]}}},ElementDefinitionBase:{display:"ElementDefinitionBase",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},min:{min:1,type:[{code:"unsignedInt"}]},max:{min:1,type:[{code:"string"}]}}},ElementDefinitionType:{display:"ElementDefinitionType",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},code:{min:1,type:[{code:"uri"}]},profile:{max:"*",type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition","http://hl7.org/fhir/StructureDefinition/ImplementationGuide"]}]},targetProfile:{max:"*",type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition","http://hl7.org/fhir/StructureDefinition/ImplementationGuide"]}]},aggregation:{max:"*",type:[{code:"code"}]},versioning:{type:[{code:"code"}]}}},ElementDefinitionExample:{display:"ElementDefinitionExample",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},label:{min:1,type:[{code:"string"}]},"value[x]":{min:1,type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]}}},ElementDefinitionConstraint:{display:"ElementDefinitionConstraint",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},key:{min:1,type:[{code:"id"}]},requirements:{type:[{code:"string"}]},severity:{min:1,type:[{code:"code"}]},human:{min:1,type:[{code:"string"}]},expression:{type:[{code:"string"}]},xpath:{type:[{code:"string"}]},source:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]}}},ElementDefinitionBinding:{display:"ElementDefinitionBinding",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},strength:{min:1,type:[{code:"code"}]},description:{type:[{code:"string"}]},valueSet:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/ValueSet"]}]}}},ElementDefinitionMapping:{display:"ElementDefinitionMapping",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},identity:{min:1,type:[{code:"id"}]},language:{type:[{code:"code"}]},map:{min:1,type:[{code:"string"}]},comment:{type:[{code:"string"}]}}},Expression:{display:"Expression",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},description:{type:[{code:"string"}]},name:{type:[{code:"id"}]},language:{min:1,type:[{code:"code"}]},expression:{type:[{code:"string"}]},reference:{type:[{code:"uri"}]}}},Extension:{display:"Extension",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},url:{min:1,type:[{code:"string"}]},"value[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]}}},HumanName:{display:"HumanName",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},use:{type:[{code:"code"}]},text:{type:[{code:"string"}]},family:{type:[{code:"string"}]},given:{max:"*",type:[{code:"string"}]},prefix:{max:"*",type:[{code:"string"}]},suffix:{max:"*",type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Identifier:{display:"Identifier",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"CodeableConcept"}]},system:{type:[{code:"uri"}]},value:{type:[{code:"string"}]},period:{type:[{code:"Period"}]},assigner:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Organization"]}]}}},MarketingStatus:{display:"MarketingStatus",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",type:[{code:"Extension"}]},country:{min:1,type:[{code:"CodeableConcept"}]},jurisdiction:{type:[{code:"CodeableConcept"}]},status:{min:1,type:[{code:"CodeableConcept"}]},dateRange:{min:1,type:[{code:"Period"}]},restoreDate:{type:[{code:"dateTime"}]}}},Meta:{display:"Meta",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},versionId:{type:[{code:"id"}]},lastUpdated:{type:[{code:"instant"}]},source:{type:[{code:"uri"}]},profile:{max:"*",type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},security:{max:"*",type:[{code:"Coding"}]},tag:{max:"*",type:[{code:"Coding"}]},project:{type:[{code:"uri"}]},author:{type:[{code:"Reference"}]},account:{type:[{code:"Reference"}]},compartment:{max:"*",type:[{code:"Reference"}]}}},Money:{display:"Money",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},currency:{type:[{code:"code"}]}}},Narrative:{display:"Narrative",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},status:{min:1,type:[{code:"code"}]},div:{min:1,type:[{code:"xhtml"}]}}},ParameterDefinition:{display:"ParameterDefinition",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},name:{type:[{code:"code"}]},use:{min:1,type:[{code:"code"}]},min:{type:[{code:"integer"}]},max:{type:[{code:"string"}]},documentation:{type:[{code:"string"}]},type:{min:1,type:[{code:"code"}]},profile:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]}}},Period:{display:"Period",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},start:{type:[{code:"dateTime"}]},end:{type:[{code:"dateTime"}]}}},Population:{display:"Population",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",type:[{code:"Extension"}]},"age[x]":{type:[{code:"Range"},{code:"CodeableConcept"}]},gender:{type:[{code:"CodeableConcept"}]},race:{type:[{code:"CodeableConcept"}]},physiologicalCondition:{type:[{code:"CodeableConcept"}]}}},ProdCharacteristic:{display:"ProdCharacteristic",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",type:[{code:"Extension"}]},height:{type:[{code:"Quantity"}]},width:{type:[{code:"Quantity"}]},depth:{type:[{code:"Quantity"}]},weight:{type:[{code:"Quantity"}]},nominalVolume:{type:[{code:"Quantity"}]},externalDiameter:{type:[{code:"Quantity"}]},shape:{type:[{code:"string"}]},color:{max:"*",type:[{code:"string"}]},imprint:{max:"*",type:[{code:"string"}]},image:{max:"*",type:[{code:"Attachment"}]},scoring:{type:[{code:"CodeableConcept"}]}}},ProductShelfLife:{display:"ProductShelfLife",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",type:[{code:"Extension"}]},identifier:{type:[{code:"Identifier"}]},type:{min:1,type:[{code:"CodeableConcept"}]},period:{min:1,type:[{code:"Quantity"}]},specialPrecautionsForStorage:{max:"*",type:[{code:"CodeableConcept"}]}}},Quantity:{display:"Quantity",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{max:"0",type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Range:{display:"Range",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},low:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},high:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},Ratio:{display:"Ratio",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},numerator:{type:[{code:"Quantity"}]},denominator:{type:[{code:"Quantity"}]}}},Reference:{display:"Reference",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},reference:{type:[{code:"string"}]},type:{type:[{code:"uri"}]},identifier:{type:[{code:"Identifier"}]},display:{type:[{code:"string"}]}}},RelatedArtifact:{display:"RelatedArtifact",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},label:{type:[{code:"string"}]},display:{type:[{code:"string"}]},citation:{type:[{code:"markdown"}]},url:{type:[{code:"url"}]},document:{type:[{code:"Attachment"}]},resource:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/Resource"]}]}}},SampledData:{display:"SampledData",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},origin:{min:1,type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},period:{min:1,type:[{code:"decimal"}]},factor:{type:[{code:"decimal"}]},lowerLimit:{type:[{code:"decimal"}]},upperLimit:{type:[{code:"decimal"}]},dimensions:{min:1,type:[{code:"positiveInt"}]},data:{type:[{code:"string"}]}}},Signature:{display:"Signature",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},type:{min:1,max:"*",type:[{code:"Coding"}]},when:{min:1,type:[{code:"instant"}]},who:{min:1,type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},onBehalfOf:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},targetFormat:{type:[{code:"code"}]},sigFormat:{type:[{code:"code"}]},data:{type:[{code:"base64Binary"}]}}},SubstanceAmount:{display:"SubstanceAmount",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",type:[{code:"Extension"}]},"amount[x]":{type:[{code:"Quantity"},{code:"Range"},{code:"string"}]},amountType:{type:[{code:"CodeableConcept"}]},amountText:{type:[{code:"string"}]},referenceRange:{type:[{code:"Element"}]}}},SubstanceAmountReferenceRange:{display:"SubstanceAmountReferenceRange",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},lowLimit:{type:[{code:"Quantity"}]},highLimit:{type:[{code:"Quantity"}]}}},Timing:{display:"Timing",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",type:[{code:"Extension"}]},event:{max:"*",type:[{code:"dateTime"}]},repeat:{type:[{code:"Element"}]},code:{type:[{code:"CodeableConcept"}]}}},TimingRepeat:{display:"TimingRepeat",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},"bounds[x]":{type:[{code:"Duration"},{code:"Range"},{code:"Period"}]},count:{type:[{code:"positiveInt"}]},countMax:{type:[{code:"positiveInt"}]},duration:{type:[{code:"decimal"}]},durationMax:{type:[{code:"decimal"}]},durationUnit:{type:[{code:"code"}]},frequency:{type:[{code:"positiveInt"}]},frequencyMax:{type:[{code:"positiveInt"}]},period:{type:[{code:"decimal"}]},periodMax:{type:[{code:"decimal"}]},periodUnit:{type:[{code:"code"}]},dayOfWeek:{max:"*",type:[{code:"code"}]},timeOfDay:{max:"*",type:[{code:"time"}]},when:{max:"*",type:[{code:"code"}]},offset:{type:[{code:"unsignedInt"}]}}},TriggerDefinition:{display:"TriggerDefinition",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{type:[{code:"string"}]},"timing[x]":{type:[{code:"Timing"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Schedule"]},{code:"date"},{code:"dateTime"}]},data:{max:"*",type:[{code:"DataRequirement"}]},condition:{type:[{code:"Expression"}]}}},UsageContext:{display:"UsageContext",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},code:{min:1,type:[{code:"Coding"}]},"value[x]":{min:1,type:[{code:"CodeableConcept"},{code:"Quantity"},{code:"Range"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/PlanDefinition","http://hl7.org/fhir/StructureDefinition/ResearchStudy","http://hl7.org/fhir/StructureDefinition/InsurancePlan","http://hl7.org/fhir/StructureDefinition/HealthcareService","http://hl7.org/fhir/StructureDefinition/Group","http://hl7.org/fhir/StructureDefinition/Location","http://hl7.org/fhir/StructureDefinition/Organization"]}]}}},MetadataResource:{display:"MetadataResource",properties:{id:{type:[{code:"string"}]},meta:{type:[{code:"Meta"}]},implicitRules:{type:[{code:"uri"}]},language:{type:[{code:"code"}]},text:{type:[{code:"Narrative"}]},contained:{max:"*",type:[{code:"Resource"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",type:[{code:"Extension"}]},url:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},name:{type:[{code:"string"}]},title:{type:[{code:"string"}]},status:{min:1,type:[{code:"code"}]},experimental:{type:[{code:"boolean"}]},date:{type:[{code:"dateTime"}]},publisher:{type:[{code:"string"}]},contact:{max:"*",type:[{code:"ContactDetail"}]},description:{type:[{code:"markdown"}]},useContext:{max:"*",type:[{code:"UsageContext"}]},jurisdiction:{max:"*",type:[{code:"CodeableConcept"}]}}},IdentityProvider:{display:"IdentityProvider",properties:{authorizeUrl:{min:1,type:[{code:"string"}]},tokenUrl:{min:1,type:[{code:"string"}]},userInfoUrl:{min:1,type:[{code:"string"}]},clientId:{min:1,type:[{code:"string"}]},clientSecret:{min:1,type:[{code:"string"}]},useSubject:{type:[{code:"boolean"}]}}}}};function Ze(e){for(const t of e.entry){const e=t.resource;"StructureDefinition"===e.resourceType&&Ke(e)}}function Ke(e){if(!e.name)return;const t=e.snapshot?.element;t&&(t.forEach((t=>function(e,t){const r=t.path,n=t.type?.[0]?.code;if(void 0!==n&&"Element"!==n&&"BackboneElement"!==n)return;const i=r.split(".");i[0]=e.name;const o=nt(i);let s=ft.types[o];s||(ft.types[o]=s={});s.parentType=s.parentType||nt(i.slice(0,i.length-1)),s.display=s.display||o,s.structureDefinition=s.structureDefinition||e,s.elementDefinition=s.elementDefinition||t,s.description=s.description||t.definition,s.properties=s.properties||{}}(e,t))),t.forEach((t=>function(e,t){const r=t.path,n=r.split(".");if(1===n.length)return;n[0]=e.name;const i=nt(n.slice(0,n.length-1)),o=ft.types[i];if(!o)return;const s=n[n.length-1];o.properties[s]=t}(e,t))))}function et(e){for(const t of e.entry){const e=t.resource;"SearchParameter"===e.resourceType&&tt(e)}}function tt(e){if(e.base)for(const t of e.base){const r=ft.types[t];r&&(r.searchParams||(r.searchParams={_id:{base:[t],code:"_id",type:"token",expression:t+".id"},_lastUpdated:{base:[t],code:"_lastUpdated",type:"date",expression:t+".meta.lastUpdated"},_compartment:{base:[t],code:"_compartment",type:"reference",expression:t+".meta.compartment"},_profile:{base:[t],code:"_profile",type:"uri",expression:t+".meta.profile"},_security:{base:[t],code:"_security",type:"token",expression:t+".meta.security"},_source:{base:[t],code:"_source",type:"uri",expression:t+".meta.source"},_tag:{base:[t],code:"_tag",type:"token",expression:t+".meta.tag"}}),r.searchParams[e.code]=e)}}function rt(e){const t=e.type?.[0]?.code;return"BackboneElement"===t||"Element"===t?nt(e.path?.split(".")):t}function nt(e){return 1===e.length?e[0]:e.map(Y).join("")}function it(e){const t=e.structureDefinition;return t&&t.name===e.elementDefinition?.path&&"resource"===t.kind&&!t.abstract}function ot(){const e=[];for(const[t,r]of Object.entries(ft.types))it(r)&&e.push(t);return e}function st(e){return ft.types[e]}function at(e){return ft.types[e].searchParams}function ct(e){return e.replaceAll("[x]","").split(".").pop().split(/(?=[A-Z])/).map(dt).join(" ").replace("_"," ").replace(/\s+/g," ")}!function(e){e.Address="Address",e.Age="Age",e.Annotation="Annotation",e.Attachment="Attachment",e.BackboneElement="BackboneElement",e.CodeableConcept="CodeableConcept",e.Coding="Coding",e.ContactDetail="ContactDetail",e.ContactPoint="ContactPoint",e.Contributor="Contributor",e.Count="Count",e.DataRequirement="DataRequirement",e.Distance="Distance",e.Dosage="Dosage",e.Duration="Duration",e.Expression="Expression",e.Extension="Extension",e.HumanName="HumanName",e.Identifier="Identifier",e.MarketingStatus="MarketingStatus",e.Meta="Meta",e.Money="Money",e.Narrative="Narrative",e.ParameterDefinition="ParameterDefinition",e.Period="Period",e.Population="Population",e.ProdCharacteristic="ProdCharacteristic",e.ProductShelfLife="ProductShelfLife",e.Quantity="Quantity",e.Range="Range",e.Ratio="Ratio",e.Reference="Reference",e.RelatedArtifact="RelatedArtifact",e.SampledData="SampledData",e.Signature="Signature",e.SubstanceAmount="SubstanceAmount",e.SystemString="http://hl7.org/fhirpath/System.String",e.Timing="Timing",e.TriggerDefinition="TriggerDefinition",e.UsageContext="UsageContext",e.base64Binary="base64Binary",e.boolean="boolean",e.canonical="canonical",e.code="code",e.date="date",e.dateTime="dateTime",e.decimal="decimal",e.id="id",e.instant="instant",e.integer="integer",e.markdown="markdown",e.oid="oid",e.positiveInt="positiveInt",e.string="string",e.time="time",e.unsignedInt="unsignedInt",e.uri="uri",e.url="url",e.uuid="uuid"}(Je||(Je={}));const ut=new Set(["ID","IP","PKCE","JWKS","URI","URL"]);function dt(e){const t=e.toUpperCase();return ut.has(t)?t:t.charAt(0)+e.slice(1)}function pt(e,t){const r=ft.types[e];if(!r)return;const n=r.properties[t]??r.properties[t+"[x]"];if(n){if(n.contentReference){const e=n.contentReference.substring(1).split("."),t=e.pop();return pt(nt(e),t)}return n}}function lt(e){return!(!e||"object"!=typeof e||!("resourceType"in e))}function ht(e){return!(!e||"object"!=typeof e||!("reference"in e))}const ft=Ye,mt="2.0.23-b244eeae",yt="application/fhir+json",gt={resourceType:"Device",id:"system",deviceName:[{name:"System"}]};var vt,xt;!function(e){e.ClientCredentials="client_credentials",e.AuthorizationCode="authorization_code",e.RefreshToken="refresh_token",e.TokenExchange="urn:ietf:params:oauth:grant-type:token-exchange"}(vt||(vt={})),function(e){e.AccessToken="urn:ietf:params:oauth:token-type:access_token",e.RefreshToken="urn:ietf:params:oauth:token-type:refresh_token",e.IdToken="urn:ietf:params:oauth:token-type:id_token",e.Saml1Token="urn:ietf:params:oauth:token-type:saml1",e.Saml2Token="urn:ietf:params:oauth:token-type:saml2"}(xt||(xt={}));class St extends fe{constructor(e){if(super(),e?.baseUrl&&!e.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");this.fetch=e?.fetch||function(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}(),this.storage=e?.storage||new Ve,this.createPdfImpl=e?.createPdf,this.baseUrl=wt(e?.baseUrl)||"https://api.medplum.com/",this.fhirBaseUrl=this.baseUrl+(wt(e?.fhirUrlPath)||"fhir/R4/"),this.clientId=e?.clientId||"",this.authorizeUrl=e?.authorizeUrl||this.baseUrl+"oauth2/authorize",this.tokenUrl=e?.tokenUrl||this.baseUrl+"oauth2/token",this.logoutUrl=e?.logoutUrl||this.baseUrl+"oauth2/logout",this.onUnauthenticated=e?.onUnauthenticated,this.cacheTime=e?.cacheTime??6e4,this.cacheTime>0?this.requestCache=new i(e?.resourceCacheSize??1e3):this.requestCache=void 0,e?.autoBatchTime?(this.autoBatchTime=e?.autoBatchTime??0,this.autoBatchQueue=[]):(this.autoBatchTime=0,this.autoBatchQueue=void 0);const t=this.getActiveLogin();t&&(this.accessToken=t.accessToken,this.refreshToken=t.refreshToken,this.refreshProfile().catch(console.log)),this.setupStorageListener()}getBaseUrl(){return this.baseUrl}getAuthorizeUrl(){return this.authorizeUrl}clear(){this.storage.clear(),this.clearActiveLogin()}clearActiveLogin(){this.basicAuth||(this.storage.setString("activeLogin",void 0),this.requestCache?.clear(),this.accessToken=void 0,this.refreshToken=void 0,this.sessionDetails=void 0,this.dispatchEvent({type:"change"}))}invalidateUrl(e){e=e.toString(),this.requestCache?.delete(e)}invalidateAll(){this.requestCache?.clear()}invalidateSearches(e){const t=this.fhirBaseUrl+e;if(this.requestCache)for(const e of this.requestCache.keys())(e.endsWith(t)||e.includes(t+"?"))&&this.requestCache.delete(e)}get(e,t={}){e=e.toString();const r=this.getCacheEntry(e,t);if(r)return r.value;let n;n=e.startsWith(this.fhirBaseUrl)&&this.autoBatchQueue?new Promise(((r,n)=>{this.autoBatchQueue.push({method:"GET",url:e.replace(this.fhirBaseUrl,""),options:t,resolve:r,reject:n}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout((()=>this.executeAutoBatch()),this.autoBatchTime))})):this.request("GET",e,t);const i=new Ge(n);return this.setCacheEntry(e,i),i}post(e,t,r,n={}){return e=e.toString(),t&&this.setRequestBody(n,t),r&&this.setRequestContentType(n,r),this.invalidateUrl(e),this.request("POST",e,n)}put(e,t,r,n={}){return e=e.toString(),t&&this.setRequestBody(n,t),r&&this.setRequestContentType(n,r),this.invalidateUrl(e),this.request("PUT",e,n)}patch(e,t,r={}){return e=e.toString(),this.setRequestBody(r,t),this.setRequestContentType(r,"application/json-patch+json"),this.invalidateUrl(e),this.request("PATCH",e,r)}delete(e,t){return e=e.toString(),this.invalidateUrl(e),this.request("DELETE",e,t)}async startNewUser(e,t){const{codeChallengeMethod:r,codeChallenge:n}=await this.startPkce();return this.post("auth/newuser",{...e,codeChallengeMethod:r,codeChallenge:n},void 0,t)}async startNewProject(e,t){return this.post("auth/newproject",e,void 0,t)}async startNewPatient(e,t){return this.post("auth/newpatient",e,void 0,t)}async startLogin(e,t){return this.post("auth/login",{...await this.ensureCodeChallenge(e),clientId:e.clientId??this.clientId,scope:e.scope},void 0,t)}async startGoogleLogin(e,t){return this.post("auth/google",{...await this.ensureCodeChallenge(e),clientId:e.clientId??this.clientId,scope:e.scope},void 0,t)}async ensureCodeChallenge(e){return e.codeChallenge?e:{...e,...await this.startPkce()}}async signOut(){await this.post(this.logoutUrl,{}),this.clear()}async signInWithRedirect(e){const t=new URLSearchParams(window.location.search).get("code");return t?this.processCode(t):void await this.requestAuthorization(e)}signOutWithRedirect(){window.location.assign(this.logoutUrl)}async signInWithExternalAuth(e,t,r,n){const i=await this.ensureCodeChallenge(n);window.location.assign(this.getExternalAuthRedirectUri(e,t,r,i))}async exchangeExternalAccessToken(e,t){if(!(t=t||this.clientId))throw new Error("MedplumClient is missing clientId");const r=new URLSearchParams;return r.set("grant_type",vt.TokenExchange),r.set("subject_token_type",xt.AccessToken),r.set("client_id",t),r.set("subject_token",e),this.fetchTokens(r)}getExternalAuthRedirectUri(e,t,r,n){const i=new URL(e);return i.searchParams.set("response_type","code"),i.searchParams.set("client_id",t),i.searchParams.set("redirect_uri",r),i.searchParams.set("scope","openid profile email"),i.searchParams.set("state",JSON.stringify(n)),i.toString()}fhirUrl(...e){return new URL(this.fhirBaseUrl+e.join("/"))}fhirSearchUrl(e,t){const r=this.fhirUrl(e);return t&&(r.search=new URLSearchParams(t).toString()),r}search(e,t,r){const n=this.fhirSearchUrl(e,t),i=n.toString()+"-search",o=this.getCacheEntry(i,r);if(o)return o.value;const s=new Ge((async()=>{const e=await this.get(n,r);if(e.entry)for(const t of e.entry)this.cacheResource(t.resource);return e})());return this.setCacheEntry(i,s),s}searchOne(e,t,r){const n=this.fhirSearchUrl(e,t);n.searchParams.set("_count","1"),n.searchParams.sort();const i=n.toString()+"-searchOne",o=this.getCacheEntry(i,r);if(o)return o.value;const s=new Ge(this.search(e,n.searchParams,r).then((e=>e.entry?.[0]?.resource)));return this.setCacheEntry(i,s),s}searchResources(e,t,r){const n=this.fhirSearchUrl(e,t).toString()+"-searchResources",i=this.getCacheEntry(n,r);if(i)return i.value;const o=new Ge(this.search(e,t,r).then((e=>e.entry?.map((e=>e.resource))??[])));return this.setCacheEntry(n,o),o}async*searchResourcePages(e,t,r){let n=this.fhirSearchUrl(e,t);for(;n;){const t=new URL(n).searchParams,i=await this.search(e,t,r),o=i?.link?.find((e=>"next"===e.relation));if(!i?.entry?.length&&!o)break;yield i?.entry?.map((e=>e.resource))??[],n=o?.url?new URL(o?.url):void 0}}searchValueSet(e,t,r){const n=this.fhirUrl("ValueSet","$expand");return n.searchParams.set("url",e),n.searchParams.set("filter",t),this.get(n.toString(),r)}getCached(e,t){const r=this.requestCache?.get(this.fhirUrl(e,t).toString())?.value;return r&&r.isOk()?r.read():void 0}getCachedReference(e){const t=e.reference;if(!t)return;if("system"===t)return gt;const[r,n]=t.split("/");return r&&n?this.getCached(r,n):void 0}readResource(e,t,r){return this.get(this.fhirUrl(e,t),r)}readReference(e,t){const r=e?.reference;if(!r)return new Ge(Promise.reject(new Error("Missing reference")));if("system"===r)return new Ge(Promise.resolve(gt));const[n,i]=r.split("/");return n&&i?this.readResource(n,i,t):new Ge(Promise.reject(new Error("Invalid reference")))}getSchema(){return ft}requestSchema(e){if(e in ft.types)return Promise.resolve(ft);const t=e+"-requestSchema",r=this.getCacheEntry(t,void 0);if(r)return r.value;const n=new Ge((async()=>{const t=`{\n StructureDefinitionList(name: "${e}") {\n name,\n description,\n snapshot {\n element {\n id,\n path,\n min,\n max,\n type {\n code,\n targetProfile\n },\n binding {\n valueSet\n },\n definition\n }\n }\n }\n SearchParameterList(base: "${e}", _count: 100) {\n base,\n code,\n type,\n expression,\n target\n }\n }`.replace(/\s+/g," "),r=await this.graphql(t);for(const e of r.data.StructureDefinitionList)Ke(e);for(const e of r.data.SearchParameterList)tt(e);return ft})());return this.setCacheEntry(t,n),n}readHistory(e,t,r){return this.get(this.fhirUrl(e,t,"_history"),r)}readVersion(e,t,r,n){return this.get(this.fhirUrl(e,t,"_history",r),n)}readPatientEverything(e,t){return this.get(this.fhirUrl("Patient",e,"$everything"),t)}createResource(e,t){if(!e.resourceType)throw new Error("Missing resourceType");return this.invalidateSearches(e.resourceType),this.post(this.fhirUrl(e.resourceType),e,void 0,t)}async createResourceIfNoneExist(e,t,r){return await this.searchOne(e.resourceType,t,r)??this.createResource(e,r)}createBinary(e,t,r,n){const i=this.fhirUrl("Binary");return t&&i.searchParams.set("_filename",t),n?this.uploadwithProgress(i,e,r,n):this.post(i,e,r)}uploadwithProgress(e,t,r,n){return new Promise(((i,o)=>{const s=new XMLHttpRequest;s.responseType="json",s.onabort=()=>o(new Error("Request aborted")),s.onerror=()=>o(new Error("Request error")),n&&(s.upload.onprogress=e=>n(e),s.upload.onload=e=>n(e)),s.onload=()=>{s.status>=200&&s.status<300?i(s.response):o(new Error(s.statusText))},s.open("POST",e),s.withCredentials=!0,s.setRequestHeader("Authorization","Bearer "+this.accessToken),s.setRequestHeader("Cache-Control","no-cache, no-store, max-age=0"),s.setRequestHeader("Content-Type",r),s.setRequestHeader("X-Medplum","extended"),s.send(t)}))}async createPdf(e,t,r,n){if(!this.createPdfImpl)throw new Error("PDF creation not enabled");const i=await this.createPdfImpl(e,r,n);return this.createBinary(i,t,"application/pdf")}createComment(e,t,r){const n=this.getProfile();let i,o;return"Encounter"===e.resourceType&&(i=k(e),o=e.subject),"ServiceRequest"===e.resourceType&&(i=e.encounter,o=e.subject),"Patient"===e.resourceType&&(o=k(e)),this.createResource({resourceType:"Communication",basedOn:[k(e)],encounter:i,subject:o,sender:n?k(n):void 0,sent:(new Date).toISOString(),payload:[{contentString:t}]},r)}async updateResource(e,t){if(!e.resourceType)throw new Error("Missing resourceType");if(!e.id)throw new Error("Missing id");this.invalidateSearches(e.resourceType);let r=await this.put(this.fhirUrl(e.resourceType,e.id),e,void 0,t);return r||(r=e),this.cacheResource(r),r}patchResource(e,t,r,n){return this.invalidateSearches(e),this.patch(this.fhirUrl(e,t),r,n)}deleteResource(e,t,r){return this.deleteCacheEntry(this.fhirUrl(e,t).toString()),this.invalidateSearches(e),this.delete(this.fhirUrl(e,t),r)}validateResource(e,t){return this.post(this.fhirUrl(e.resourceType,"$validate"),e,void 0,t)}executeBot(e,t,r,n){let i;if("string"==typeof e){const t=e;i=this.fhirUrl("Bot",t,"$execute")}else{const t=e;i=this.fhirUrl("Bot","$execute")+`?identifier=${t.system}|${t.value}`}return this.post(i,t,r,n)}executeBatch(e,t){return this.post(this.fhirBaseUrl.slice(0,-1),e,void 0,t)}sendEmail(e,t){return this.post("email/v1/send",e,"application/json",t)}graphql(e,t,r,n){return this.post(this.fhirUrl("$graphql"),{query:e,operationName:t,variables:r},"application/json",n)}readResourceGraph(e,t,r,n){return this.get(`${this.fhirUrl(e,t)}/$graph?graph=${r}`,n)}getActiveLogin(){return this.storage.getObject("activeLogin")}async setActiveLogin(e){this.clearActiveLogin(),this.accessToken=e.accessToken,this.basicAuth||(this.refreshToken=e.refreshToken,this.storage.setObject("activeLogin",e),this.addLogin(e),this.refreshPromise=void 0,await this.refreshProfile())}getAccessToken(){return this.accessToken}setAccessToken(e){this.accessToken=e,this.refreshToken=void 0,this.sessionDetails=void 0}getLogins(){return this.storage.getObject("logins")??[]}addLogin(e){const t=this.getLogins().filter((t=>t.profile?.reference!==e.profile?.reference));t.push(e),this.storage.setObject("logins",t)}async refreshProfile(){return this.profilePromise=new Promise(((e,t)=>{this.basicAuth||this.get("auth/me").then((t=>{this.profilePromise=void 0,this.sessionDetails=t,this.dispatchEvent({type:"change"}),e(t.profile)})).catch(t)})),this.profilePromise}isLoading(){return!!this.profilePromise}isSuperAdmin(){return!!this.sessionDetails?.project?.superAdmin}isProjectAdmin(){return!!this.sessionDetails?.membership?.admin}getProject(){return this.sessionDetails?.project}getProjectMembership(){return this.sessionDetails?.membership}getProfile(){return this.sessionDetails?.profile}async getProfileAsync(){return this.profilePromise&&await this.profilePromise,this.getProfile()}getUserConfiguration(){return this.sessionDetails?.config}getAccessPolicy(){return this.sessionDetails?.accessPolicy}async download(e,t={}){this.refreshPromise&&await this.refreshPromise,this.addFetchOptionsDefaults(t);return(await this.fetch(e.toString(),t)).blob()}async uploadMedia(e,t,r,n,i){const o=await this.createBinary(e,r,t);return this.createResource({...n,resourceType:"Media",content:{contentType:t,url:"Binary/"+o.id,title:r}},i)}async bulkExport(e="",t,r,n={}){const i=e?`${e}/`:e,o=this.fhirUrl(`${i}$export`);t&&o.searchParams.set("_type",t),r&&o.searchParams.set("_since",r),this.addFetchOptionsDefaults(n);n.headers.Prefer="respond-async";const s=await this.fetchWithRetry(o.toString(),n);if(202===s.status){const e=s.headers.get("content-location");if(e)return await this.pollStatus(e)}return await this.parseResponse(s,"POST",o.toString())}getCacheEntry(e,t){if(!this.requestCache||"no-cache"===t?.cache||"reload"===t?.cache)return;const r=this.requestCache.get(e);return!r||r.requestTime+this.cacheTime<Date.now()?void 0:r}setCacheEntry(e,t){this.requestCache&&this.requestCache.set(e,{requestTime:Date.now(),value:t})}cacheResource(e){e?.id&&this.setCacheEntry(this.fhirUrl(e.resourceType,e.id).toString(),new Ge(Promise.resolve(e)))}deleteCacheEntry(e){this.requestCache&&this.requestCache.delete(e)}async request(e,t,r={}){this.refreshPromise&&await this.refreshPromise,t.startsWith("http")||(t=this.baseUrl+t),r.method=e,this.addFetchOptionsDefaults(r);const n=await this.fetchWithRetry(t,r);return await this.parseResponse(n,e,t,r)}async parseResponse(e,t,r,n={}){if(401===e.status)return this.handleUnauthenticated(t,r,n);if(204===e.status||304===e.status)return;if(404===e.status){const t=e.headers.get("content-type");if(!t?.includes("application/fhir+json"))throw new qe(Pe)}let i;try{i=await e.json()}catch(t){throw console.error("Error parsing response",e.status,t),t}if(e.status>=400)throw new qe(Qe(i));return i}async fetchWithRetry(e,t){let r;for(let n=0;n<3;n++){try{if(r=await this.fetch(e,t),r.status<500)return r}catch(e){this.retryCatch(n,3,e)}await new Promise((e=>setTimeout(e,200)))}return r}async pollStatus(e){let t,r=!0;for(;r;){const n={};this.addFetchOptionsDefaults(n);const i=await this.fetchWithRetry(e,n);202!==i.status&&(r=!1,t=i),await new Promise((e=>setTimeout(e,200)))}return await this.parseResponse(t,"POST",e)}async executeAutoBatch(){const e=[...this.autoBatchQueue];if(this.autoBatchQueue.length=0,this.autoBatchTimerId=void 0,1===e.length){const t=e[0];try{t.resolve(await this.request(t.method,this.fhirBaseUrl+t.url,t.options))}catch(e){t.reject(new qe(Qe(e)))}return}const t={resourceType:"Bundle",type:"batch",entry:e.map((e=>({request:{method:e.method,url:e.url},resource:e.options.body?JSON.parse(e.options.body):void 0})))},r=await this.post(this.fhirBaseUrl.slice(0,-1),t);for(let t=0;t<e.length;t++){const n=e[t],i=r.entry?.[t];i?.response?.outcome&&!Ne(i.response.outcome)?n.reject(new qe(i.response.outcome)):n.resolve(i?.resource)}}addFetchOptionsDefaults(e){let t=e.headers;t||(t={},e.headers=t),t.Accept=yt,t["X-Medplum"]="extended",e.body&&!t["Content-Type"]&&(t["Content-Type"]=yt),this.accessToken?t.Authorization="Bearer "+this.accessToken:this.basicAuth&&(t.Authorization="Basic "+this.basicAuth),e.cache||(e.cache="no-cache"),e.credentials||(e.credentials="include")}setRequestContentType(e,t){e.headers||(e.headers={});e.headers["Content-Type"]=t}setRequestBody(e,t){"string"==typeof t||"undefined"!=typeof Blob&&t instanceof Blob||"undefined"!=typeof File&&t instanceof File||"undefined"!=typeof Uint8Array&&t instanceof Uint8Array?e.body=t:t&&(e.body=JSON.stringify(t))}handleUnauthenticated(e,t,r){return this.refresh()?this.request(e,t,r):(this.clearActiveLogin(),this.onUnauthenticated&&this.onUnauthenticated(),Promise.reject(new Error("Unauthenticated")))}async startPkce(){const e=he();sessionStorage.setItem("pkceState",e);const t=he();sessionStorage.setItem("codeVerifier",t);const r=J(await async function(e){return crypto.subtle.digest("SHA-256",(new TextEncoder).encode(e))}(t)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"");return sessionStorage.setItem("codeChallenge",r),{codeChallengeMethod:"S256",codeChallenge:r}}async requestAuthorization(e){const t=await this.ensureCodeChallenge(e||{}),r=new URL(this.authorizeUrl);r.searchParams.set("response_type","code"),r.searchParams.set("state",sessionStorage.getItem("pkceState")),r.searchParams.set("client_id",t.clientId||this.clientId),r.searchParams.set("redirect_uri",t.redirectUri||bt()),r.searchParams.set("code_challenge_method",t.codeChallengeMethod),r.searchParams.set("code_challenge",t.codeChallenge),r.searchParams.set("scope",t.scope||"openid profile"),window.location.assign(r.toString())}processCode(e,t){const r=new URLSearchParams;if(r.set("grant_type",vt.AuthorizationCode),r.set("code",e),r.set("client_id",t?.clientId||this.clientId),r.set("redirect_uri",t?.redirectUri||bt()),"undefined"!=typeof sessionStorage){const e=sessionStorage.getItem("codeVerifier");e&&r.set("code_verifier",e)}return this.fetchTokens(r)}refresh(){if(this.refreshPromise)return this.refreshPromise;if(this.refreshToken){const e=new URLSearchParams;return e.set("grant_type",vt.RefreshToken),e.set("client_id",this.clientId),e.set("refresh_token",this.refreshToken),this.refreshPromise=this.fetchTokens(e),this.refreshPromise}return this.clientId&&this.clientSecret?(this.refreshPromise=this.startClientLogin(this.clientId,this.clientSecret),this.refreshPromise):void 0}async startClientLogin(e,t){this.clientId=e,this.clientSecret=t;const r=new URLSearchParams;return r.set("grant_type",vt.ClientCredentials),r.set("client_id",e),r.set("client_secret",t),this.fetchTokens(r)}setBasicAuth(e,r){this.clientId=e,this.clientSecret=r,this.basicAuth=t(e+":"+r)}async invite(e,t){return this.post("admin/projects/"+e+"/invite",t)}async fetchTokens(e){const t={method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e,credentials:"include"},r=t.headers;this.basicAuth&&(r.Authorization=`Basic ${this.basicAuth}`);const n=await this.fetch(this.tokenUrl,t);if(!n.ok){this.clearActiveLogin();try{const e=await n.json();throw new qe(Oe(e.error_description))}catch(e){throw new qe(Oe("Failed to fetch tokens"),e)}}const i=await n.json();return await this.verifyTokens(i),this.getProfile()}async verifyTokens(e){const t=e.access_token,r=me(t);if(Date.now()>=1e3*r.exp)throw this.clearActiveLogin(),new Error("Token expired");if(r.cid){if(r.cid!==this.clientId)throw this.clearActiveLogin(),new Error("Token was not issued for this audience")}else if(this.clientId&&r.client_id!==this.clientId)throw this.clearActiveLogin(),new Error("Token was not issued for this audience");return this.setActiveLogin({accessToken:t,refreshToken:e.refresh_token,project:e.project,profile:e.profile})}setupStorageListener(){try{window.addEventListener("storage",(e=>{null!==e.key&&"activeLogin"!==e.key||window.location.reload()}))}catch(e){}}retryCatch(e,t,r){if("Failed to fetch"===r.message&&1===e&&this.dispatchEvent({type:"offline"}),e>=t-1)throw r}}function bt(){return"undefined"==typeof window?"":window.location.protocol+"//"+window.location.host+"/"}function wt(e){return e?e.endsWith("/")?e:e+"/":e}class Tt{constructor(e,t){this.operator=e,this.child=t}toString(){return`${this.operator}(${this.child.toString()})`}}class Et{constructor(e,t,r){this.operator=e,this.left=t,this.right=r}toString(){return`${this.left.toString()} ${this.operator} ${this.right.toString()}`}}class kt{constructor(){this.prefixParselets={},this.infixParselets={}}registerInfix(e,t){return this.infixParselets[e]=t,this}registerPrefix(e,t){return this.prefixParselets[e]=t,this}prefix(e,t,r){return this.registerPrefix(e,{parse(e,n){const i=e.consumeAndParse(t);return r(n,i)}})}infixLeft(e,t,r){return this.registerInfix(e,{parse(e,n,i){const o=e.consumeAndParse(t);return r(n,i,o)},precedence:t})}construct(e){return new Ct(e,this.prefixParselets,this.infixParselets)}}class Ct{constructor(e,t,r){this.tokens=e,this.prefixParselets=t,this.infixParselets=r}hasMore(){return this.tokens.length>0}match(e){const t=this.peek();return t?.id===e&&(this.consume(),!0)}consumeAndParse(e=1/0){const t=this.consume(),r=this.prefixParselets[t.id];if(!r)throw Error(`Parse error at "${t.value}" (line ${t.line}, column ${t.column}). No matching prefix parselet.`);let n=r.parse(this,t);for(;e>this.getPrecedence();){const e=this.consume();n=this.getInfixParselet(e).parse(this,n,e)}return n}getPrecedence(){const e=this.peek();if(!e)return 1/0;const t=this.getInfixParselet(e);return t?t.precedence:1/0}consume(e,t){if(!this.tokens.length)throw Error("Cant consume unknown more tokens.");if(e&&this.peek()?.id!==e){const t=this.peek();throw Error(`Expected ${e} but got "${t.id}" at line ${t.line} column ${t.column}.`)}if(t&&this.peek()?.value!==t){const e=this.peek();throw Error(`Expected "${t}" but got "${e.value}" at line ${e.line} column ${e.column}.`)}return this.tokens.shift()}peek(){return this.tokens.length>0?this.tokens[0]:void 0}removeComments(){this.tokens=this.tokens.filter((e=>"Comment"!==e.id))}getInfixParselet(e){return this.infixParselets["Symbol"===e.id?e.value:e.id]}}const Pt=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"];class Dt{constructor(e,t,r,n){this.result=[],this.pos={index:0,line:1,column:0},this.markStack=[],this.str=e,this.keywords=t,this.operators=r,this.dateTimeLiterals=!!n?.dateTimeLiterals,this.symbolRegex=n?.symbolRegex??/[$\w%]/}tokenize(){for(;this.pos.index<this.str.length;){const e=this.consumeToken();e&&this.result.push(e)}return this.result}prevToken(){return this.result.slice(-1)[0]}peekToken(){this.mark();const e=this.consumeToken();return this.reset(),e}consumeToken(){this.consumeWhitespace();const e=this.curr();if(!e)return;this.mark();const t=this.peek();return"/"===e&&"*"===t?this.consumeMultiLineComment():"/"===e&&"/"===t?this.consumeSingleLineComment():"'"===e||'"'===e?this.consumeString(e):"`"===e?this.consumeBacktickSymbol():"@"===e?this.consumeDateTime():e.match(/\d/)?this.consumeNumber():e.match(/\w/)?this.consumeSymbol():"$"!==e&&"%"!==e||!t.match(/\w/)?this.consumeOperator():this.consumeSymbol()}consumeWhitespace(){this.consumeWhile((()=>this.curr().match(/\s/)))}consumeMultiLineComment(){const e=this.pos.index;return this.consumeWhile((()=>"*"!==this.curr()||"/"!==this.peek())),this.advance(),this.advance(),this.buildToken("Comment",this.str.substring(e,this.pos.index))}consumeSingleLineComment(){return this.buildToken("Comment",this.consumeWhile((()=>"\n"!==this.curr())))}consumeString(e){this.advance();const t=this.buildToken("String",this.consumeWhile((()=>"\\"===this.prev()||this.curr()!==e)));return this.advance(),t}consumeBacktickSymbol(){this.advance();const e=this.buildToken("Symbol",this.consumeWhile((()=>"`"!==this.curr())));return this.advance(),e}consumeDateTime(){this.advance();const e=this.pos.index;return this.consumeWhile((()=>this.curr().match(/[\d-]/))),"T"===this.curr()&&(this.advance(),this.consumeWhile((()=>this.curr().match(/[\d:]/))),"."===this.curr()&&this.peek().match(/\d/)&&(this.advance(),this.consumeWhile((()=>this.curr().match(/\d/)))),"Z"===this.curr()?this.advance():"+"!==this.curr()&&"-"!==this.curr()||(this.advance(),this.consumeWhile((()=>this.curr().match(/[\d:]/))))),this.buildToken("DateTime",this.str.substring(e,this.pos.index))}consumeNumber(){const e=this.pos.index;let t="Number";return this.consumeWhile((()=>this.curr().match(/\d/))),"."===this.curr()&&this.peek().match(/\d/)&&(this.advance(),this.consumeWhile((()=>this.curr().match(/\d/)))),"-"===this.curr()&&this.dateTimeLiterals?(this.pos.index=e-1,this.consumeDateTime()):(" "===this.curr()&&function(e){if(e){if("String"===e.id)return!0;if("Symbol"===e.id&&Pt.includes(e.value))return!0}return!1}(this.peekToken())&&(t="Quantity",this.consumeToken()),this.buildToken(t,this.str.substring(e,this.pos.index)))}consumeSymbol(){const e=this.consumeWhile((()=>this.curr().match(this.symbolRegex)));return"."!==this.prevToken()?.value&&this.keywords.includes(e)?this.buildToken(e,e):this.buildToken("Symbol",e)}consumeOperator(){const e=this.curr(),t=e+this.peek();return this.operators.includes(t)?(this.advance(),this.advance(),this.buildToken(t,t)):(this.advance(),this.buildToken(e,e))}consumeWhile(e){const t=this.pos.index;for(;this.pos.index<this.str.length&&e();)this.advance();return this.str.substring(t,this.pos.index)}curr(){return this.str[this.pos.index]}prev(){return this.str[this.pos.index-1]??""}peek(){return this.str[this.pos.index+1]??""}mark(){this.markStack.push({...this.pos})}reset(){const e=this.markStack.pop();if(!e)throw new Error("No mark to reset to");this.pos.index=e.index,this.pos.line=e.line,this.pos.column=e.column}advance(){this.pos.index++,"\n"===this.curr()?(this.pos.line++,this.pos.column=0):this.pos.column++}buildToken(e,t){const r=this.markStack.pop();if(!r)throw new Error("No mark for token");return{id:e,value:t,...r}}}function Rt(e){if(e.startsWith("T"))return e+"T00:00:00.000Z".substring(e.length);if(e.length<=10)return e;try{return new Date(e).toISOString()}catch(t){return e}}function At(e){return[{type:Je.boolean,value:e}]}function It(e){return null==e?{type:"undefined",value:void 0}:Number.isSafeInteger(e)?{type:Je.integer,value:e}:"number"==typeof e?{type:Je.decimal,value:e}:"boolean"==typeof e?{type:Je.boolean,value:e}:"string"==typeof e?{type:Je.string,value:e}:Wt(e)?{type:Je.Quantity,value:e}:lt(e)?{type:e.resourceType,value:e}:{type:Je.BackboneElement,value:e}}function Ut(e){return 0!==e.length&&!!e[0].value}function Ot(e,t){if(!e?.value)return;const r=pt(e.type,t);if(r){const n=function(e,t,r){const n=r.type;if(!n||0===n.length)return;let i,o="undefined";if(1===n.length)i=e.value[t],o=n[0].code;else for(const r of n){const n=t.replace("[x]","")+Y(r.code);if(n in e.value){i=e.value[n],o=r.code;break}}if(Q(i))return;"Element"!==o&&"BackboneElement"!==o||(o=nt(r.path?.split(".")));return Array.isArray(i)?i.map((e=>Lt(e,o))):Lt(i,o)}(e,t,r);if(n)return n}return function(e,t){const r=e.value;if(!r||"object"!=typeof r)return;let n;if(t in r)n=r[t];else for(const e in Je){const i=t+Y(e);if(i in r){n=r[i];break}}if(Q(n))return;return Array.isArray(n)?n.map(It):It(n)}(e,t)}function Lt(e,t){return"Resource"===t&<(e)&&(t=e.resourceType),{type:t,value:e}}function Mt(e){const t=[];for(const r of e){let e=!1;for(const n of t)if(Ut(Bt(r,n))){e=!0;break}e||t.push(r)}return t}function Nt(e){return At(!Ut(e))}function _t(e,t){return 0===e.length||0===t.length?[]:e.length!==t.length?At(!1):At(e.every(((e,r)=>Ut(Bt(e,t[r])))))}function Bt(e,t){const r=e.value,n=t.value;return"number"==typeof r&&"number"==typeof n?At(Math.abs(r-n)<1e-8):Wt(r)&&Wt(n)?At(Ht(r,n)):At("object"==typeof r&&"object"==typeof n?zt(e,t):r===n)}function jt(e,t){return 0===e.length&&0===t.length?At(!0):e.length!==t.length?At(!1):(e.sort(qt),t.sort(qt),At(e.every(((e,r)=>Ut($t(e,t[r]))))))}function $t(e,t){const r=e.value,n=t.value;return"number"==typeof r&&"number"==typeof n?At(Math.abs(r-n)<.01):Wt(r)&&Wt(n)?At(Ht(r,n)):At("object"==typeof r&&"object"==typeof n?zt(r,n):"string"==typeof r&&"string"==typeof n?r.toLowerCase()===n.toLowerCase():r===n)}function qt(e,t){const r=e.value,n=t.value;return"number"==typeof r&&"number"==typeof n?r-n:"string"==typeof r&&"string"==typeof n?r.localeCompare(n):0}function Qt(e,t){const{value:r}=e;if(null==r)return!1;switch(t){case"Boolean":return"boolean"==typeof r;case"Decimal":case"Integer":return"number"==typeof r;case"Date":return"string"==typeof r&&!!r.match(/^\d{4}(-\d{2}(-\d{2})?)?/);case"DateTime":return"string"==typeof r&&!!r.match(/^\d{4}(-\d{2}(-\d{2})?)?T/);case"Time":return"string"==typeof r&&!!r.match(/^T\d/);case"Period":return Ft(r);case"Quantity":return Wt(r);default:return"object"==typeof r&&r?.resourceType===t}}function Ft(e){return!(!e||"object"!=typeof e||!("start"in e))}function Wt(e){return!(!e||"object"!=typeof e||!("value"in e)||"number"!=typeof e.value)}function Ht(e,t){return Math.abs(e.value-t.value)<.01&&(e.unit===t.unit||e.code===t.code||e.unit===t.code||e.code===t.unit)}function zt(e,t){const r=Object.keys(e),n=Object.keys(t);if(r.length!==n.length)return!1;for(const n of r){const r=e[n],i=t[n];if(Gt(r)&&Gt(i)){if(!zt(r,i))return!1}else if(r!==i)return!1}return!0}function Gt(e){return null!==e&&"object"==typeof e}const Vt=()=>[],Xt={empty:(e,t)=>At(0===t.length),exists:(e,t,r)=>At(r?t.filter((t=>Ut(r.eval(e,[t])))).length>0:t.length>0),all:(e,t,r)=>At(t.every((t=>Ut(r.eval(e,[t]))))),allTrue:(e,t)=>{for(const e of t)if(!e.value)return At(!1);return At(!0)},anyTrue:(e,t)=>{for(const e of t)if(e.value)return At(!0);return At(!1)},allFalse:(e,t)=>{for(const e of t)if(e.value)return At(!1);return At(!0)},anyFalse:(e,t)=>{for(const e of t)if(!e.value)return At(!0);return At(!1)},subsetOf:Vt,supersetOf:Vt,count:(e,t)=>[{type:Je.integer,value:t.length}],distinct:(e,t)=>{const r=[];for(const e of t)r.some((t=>t.value===e.value))||r.push(e);return r},isDistinct:(e,t)=>At(t.length===Xt.distinct(e,t).length),where:(e,t,r)=>t.filter((t=>Ut(r.eval(e,[t])))),select:(e,t,r)=>t.map((t=>r.eval(e,[t]))).flat(),repeat:Vt,ofType:(e,t,r)=>t.filter((e=>e.type===r.name)),single:(e,t)=>{if(t.length>1)throw new Error("Expected input length one for single()");return 0===t.length?[]:t.slice(0,1)},first:(e,t)=>0===t.length?[]:t.slice(0,1),last:(e,t)=>0===t.length?[]:t.slice(t.length-1,t.length),tail:(e,t)=>0===t.length?[]:t.slice(1,t.length),skip:(e,t,r)=>{const n=r.eval(e,t)[0]?.value;if("number"!=typeof n)throw new Error("Expected a number for skip(num)");return n>=t.length?[]:n<=0?t:t.slice(n,t.length)},take:(e,t,r)=>{const n=r.eval(e,t)[0]?.value;if("number"!=typeof n)throw new Error("Expected a number for take(num)");return n>=t.length?t:n<=0?[]:t.slice(0,n)},intersect:(e,t,r)=>{if(!r)return t;const n=r.eval(e,t),i=[];for(const e of t)!i.some((t=>t.value===e.value))&&n.some((t=>t.value===e.value))&&i.push(e);return i},exclude:(e,t,r)=>{if(!r)return t;const n=r.eval(e,t),i=[];for(const e of t)n.some((t=>t.value===e.value))||i.push(e);return i},union:(e,t,r)=>{if(!r)return t;const n=r.eval(e,t);return Mt([...t,...n])},combine:(e,t,r)=>{if(!r)return t;const n=r.eval(e,t);return[...t,...n]},iif:(e,t,r,n,i)=>{const o=r.eval(e,t);if(o.length>1||1===o.length&&"boolean"!=typeof o[0].value)throw new Error("Expected criterion to evaluate to a Boolean");return Ut(o)?n.eval(e,t):i?i.eval(e,t):[]},toBoolean:(e,t)=>{if(0===t.length)return[];const[{value:r}]=Zt(t,1);if("boolean"==typeof r)return[{type:Je.boolean,value:r}];if("number"==typeof r&&(0===r||1===r))return At(!!r);if("string"==typeof r){const e=r.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(e))return At(!0);if(["false","f","no","n","0","0.0"].includes(e))return At(!1)}return[]},convertsToBoolean:(e,t)=>0===t.length?[]:At(1===Xt.toBoolean(e,t).length),toInteger:(e,t)=>{if(0===t.length)return[];const[{value:r}]=Zt(t,1);return"number"==typeof r?[{type:Je.integer,value:r}]:"string"==typeof r&&r.match(/^[+-]?\d+$/)?[{type:Je.integer,value:parseInt(r,10)}]:"boolean"==typeof r?[{type:Je.integer,value:r?1:0}]:[]},convertsToInteger:(e,t)=>0===t.length?[]:At(1===Xt.toInteger(e,t).length),toDate:(e,t)=>{if(0===t.length)return[];const[{value:r}]=Zt(t,1);return"string"==typeof r&&r.match(/^\d{4}(-\d{2}(-\d{2})?)?/)?[{type:Je.date,value:Rt(r)}]:[]},convertsToDate:(e,t)=>0===t.length?[]:At(1===Xt.toDate(e,t).length),toDateTime:(e,t)=>{if(0===t.length)return[];const[{value:r}]=Zt(t,1);return"string"==typeof r&&r.match(/^\d{4}(-\d{2}(-\d{2})?)?/)?[{type:Je.dateTime,value:Rt(r)}]:[]},convertsToDateTime:(e,t)=>0===t.length?[]:At(1===Xt.toDateTime(e,t).length),toDecimal:(e,t)=>{if(0===t.length)return[];const[{value:r}]=Zt(t,1);return"number"==typeof r?[{type:Je.decimal,value:r}]:"string"==typeof r&&r.match(/^-?\d{1,9}(\.\d{1,9})?$/)?[{type:Je.decimal,value:parseFloat(r)}]:"boolean"==typeof r?[{type:Je.decimal,value:r?1:0}]:[]},convertsToDecimal:(e,t)=>0===t.length?[]:At(1===Xt.toDecimal(e,t).length),toQuantity:(e,t)=>{if(0===t.length)return[];const[{value:r}]=Zt(t,1);return Wt(r)?[{type:Je.Quantity,value:r}]:"number"==typeof r?[{type:Je.Quantity,value:{value:r,unit:"1"}}]:"string"==typeof r&&r.match(/^-?\d{1,9}(\.\d{1,9})?/)?[{type:Je.Quantity,value:{value:parseFloat(r),unit:"1"}}]:"boolean"==typeof r?[{type:Je.Quantity,value:{value:r?1:0,unit:"1"}}]:[]},convertsToQuantity:(e,t)=>0===t.length?[]:At(1===Xt.toQuantity(e,t).length),toString:(e,t)=>{if(0===t.length)return[];const[{value:r}]=Zt(t,1);return null==r?[]:Wt(r)?[{type:Je.string,value:`${r.value} '${r.unit}'`}]:[{type:Je.string,value:r.toString()}]},convertsToString:(e,t)=>0===t.length?[]:At(1===Xt.toString(e,t).length),toTime:(e,t)=>{if(0===t.length)return[];const[{value:r}]=Zt(t,1);if("string"==typeof r){const e=r.match(/^T?(\d{2}(:\d{2}(:\d{2})?)?)/);if(e)return[{type:Je.time,value:Rt("T"+e[1])}]}return[]},convertsToTime:(e,t)=>0===t.length?[]:At(1===Xt.toTime(e,t).length),indexOf:(e,t,r)=>Jt(((e,t)=>e.indexOf(t)),e,t,r),substring:(e,t,r,n)=>Jt(((e,t,r)=>{const n=t,i=r?n+r:e.length;return n<0||n>=e.length?void 0:e.substring(n,i)}),e,t,r,n),startsWith:(e,t,r)=>Jt(((e,t)=>e.startsWith(t)),e,t,r),endsWith:(e,t,r)=>Jt(((e,t)=>e.endsWith(t)),e,t,r),contains:(e,t,r)=>Jt(((e,t)=>e.includes(t)),e,t,r),upper:(e,t)=>Jt((e=>e.toUpperCase()),e,t),lower:(e,t)=>Jt((e=>e.toLowerCase()),e,t),replace:(e,t,r,n)=>Jt(((e,t,r)=>e.replaceAll(t,r)),e,t,r,n),matches:(e,t,r)=>Jt(((e,t)=>!!e.match(t)),e,t,r),replaceMatches:(e,t,r,n)=>Jt(((e,t,r)=>e.replaceAll(t,r)),e,t,r,n),length:(e,t)=>Jt((e=>e.length),e,t),toChars:(e,t)=>Jt((e=>e?e.split(""):void 0),e,t),abs:(e,t)=>Yt(Math.abs,e,t),ceiling:(e,t)=>Yt(Math.ceil,e,t),exp:(e,t)=>Yt(Math.exp,e,t),floor:(e,t)=>Yt(Math.floor,e,t),ln:(e,t)=>Yt(Math.log,e,t),log:(e,t,r)=>Yt(((e,t)=>Math.log(e)/Math.log(t)),e,t,r),power:(e,t,r)=>Yt(Math.pow,e,t,r),round:(e,t)=>Yt(Math.round,e,t),sqrt:(e,t)=>Yt(Math.sqrt,e,t),truncate:(e,t)=>Yt((e=>0|e),e,t),children:Vt,descendants:Vt,trace:(e,t,r)=>(console.log("trace",t,r),t),now:()=>[{type:Je.dateTime,value:(new Date).toISOString()}],timeOfDay:()=>[{type:Je.time,value:(new Date).toISOString().substring(11)}],today:()=>[{type:Je.date,value:(new Date).toISOString().substring(0,10)}],between:(e,t,r,n,i)=>{const o=Xt.toDateTime(e,r.eval(e,t));if(0===o.length)throw new Error("Invalid start date");const s=Xt.toDateTime(e,n.eval(e,t));if(0===s.length)throw new Error("Invalid end date");const a=i.eval(e,t)[0]?.value;if("years"!==a&&"months"!==a&&"days"!==a)throw new Error("Invalid units");const c=O(o[0].value,s[0].value);return[{type:Je.Quantity,value:{value:c[a],unit:a}}]},is:(e,t,r)=>{let n="";return r instanceof tr?n=r.name:r instanceof ur&&(n=r.left.name+"."+r.right.name),n?t.map((e=>({type:Je.boolean,value:Qt(e,n)}))):[]},not:(e,t)=>Xt.toBoolean(e,t).map((e=>({type:Je.boolean,value:!e.value}))),resolve:(e,t)=>t.map((e=>{const t=e.value;let r;if("string"==typeof t)r=t;else if("object"==typeof t){const e=t;if(e.resource)return It(e.resource);e.reference?r=e.reference:e.type&&e.identifier&&(r=`${e.type}?identifier=${e.identifier.system}|${e.identifier.value}`)}if(r?.includes("?")){const[e]=r.split("?");return{type:e,value:{resourceType:e}}}if(r?.includes("/")){const[e,t]=r.split("/");return{type:e,value:{resourceType:e,id:t}}}return{type:Je.BackboneElement,value:void 0}})).filter((e=>!!e.value)),as:(e,t)=>t,type:(e,t)=>t.map((({value:e})=>"boolean"==typeof e?{type:Je.BackboneElement,value:{namespace:"System",name:"Boolean"}}:"number"==typeof e?{type:Je.BackboneElement,value:{namespace:"System",name:"Integer"}}:lt(e)?{type:Je.BackboneElement,value:{namespace:"FHIR",name:e.resourceType}}:{type:Je.BackboneElement,value:null})),conformsTo:(e,t,r)=>{const n=r.eval(e,t)[0].value;if(!n.startsWith("http://hl7.org/fhir/StructureDefinition/"))throw new Error("Expected a StructureDefinition URL");const i=n.replace("http://hl7.org/fhir/StructureDefinition/","");return t.map((e=>({type:Je.boolean,value:e.value?.resourceType===i})))}};function Jt(e,t,r,...n){if(0===r.length)return[];const[{value:i}]=Zt(r,1);if("string"!=typeof i)throw new Error("String function cannot be called with non-string");const o=e(i,...n.map((e=>e&&e.eval(t,r)?.[0]?.value)));return void 0===o?[]:Array.isArray(o)?o.map(It):[It(o)]}function Yt(e,t,r,...n){if(0===r.length)return[];const[{value:i}]=Zt(r,1),o=Wt(i),s=o?i.value:i;if("number"!=typeof s)throw new Error("Math function cannot be called with non-number");const a=e(s,...n.map((e=>e.eval(t,r)?.[0]?.value)));return[{type:o?Je.Quantity:r[0].type,value:o?{...i,value:a}:a}]}function Zt(e,t){if(e.length!==t)throw new Error(`Expected ${t} arguments`);for(const t of e)if(null==t)throw new Error("Expected non-null argument");return e}class Kt{constructor(e,t){this.original=e,this.child=t}eval(e,t){try{return t.length>0?t.map((t=>this.child.eval(e,[t]))).flat():this.child.eval(e,[])}catch(e){throw new Error(`FhirPathError on "${this.original}": ${e}`)}}toString(){return this.child.toString()}}class er{constructor(e){this.value=e}eval(){return[this.value]}toString(){const e=this.value.value;return"string"==typeof e?`'${e}'`:e.toString()}}class tr{constructor(e){this.name=e}eval(e,t){if("$this"===this.name)return t;if(this.name.startsWith("%")){const t=e.variables[this.name.slice(1)];if(!t)throw new Error(`Undefined variable ${this.name}`);return[t]}return t.flatMap((e=>this.evalValue(e))).filter((e=>void 0!==e?.value))}evalValue(e){const t=e.value;if(t&&"object"==typeof t)return lt(t)&&t.resourceType===this.name?e:Ot(e,this.name)}toString(){return this.name}}class rr{eval(){return[]}toString(){return"{}"}}class nr extends Tt{constructor(e,t,r){super(e,t),this.impl=r}eval(e,t){return this.impl(this.child.eval(e,t))}toString(){return this.child.toString()}}class ir extends Et{constructor(e,t){super("as",e,t)}eval(e,t){return Xt.ofType(e,this.left.eval(e,t),this.right)}}class or extends Et{constructor(e,t,r,n){super(e,t,r),this.impl=n}eval(e,t){const r=this.left.eval(e,t);if(1!==r.length)return[];const n=this.right.eval(e,t);if(1!==n.length)return[];const i=r[0].value,o=n[0].value,s=Wt(i)?i.value:i,a=Wt(o)?o.value:o,c=this.impl(s,a);return"boolean"==typeof c?At(c):Wt(i)?[{type:Je.Quantity,value:{...i,value:c}}]:[It(c)]}}class sr extends Et{constructor(e,t){super("&",e,t)}eval(e,t){const r=[...this.left.eval(e,t),...this.right.eval(e,t)];return r.length>0&&r.every((e=>"string"==typeof e.value))?[{type:Je.string,value:r.map((e=>e.value)).join("")}]:r}}class ar extends Et{constructor(e,t){super("contains",e,t)}eval(e,t){const r=this.left.eval(e,t),n=this.right.eval(e,t);return At(r.some((e=>e.value===n[0].value)))}}class cr extends Et{constructor(e,t){super("in",e,t)}eval(e,t){const r=this.left.eval(e,t);return At(this.right.eval(e,t).some((e=>e.value===r[0].value)))}}class ur extends Et{constructor(e,t){super(".",e,t)}eval(e,t){return this.right.eval(e,this.left.eval(e,t))}toString(){return`${this.left.toString()}.${this.right.toString()}`}}class dr extends Et{constructor(e,t){super("|",e,t)}eval(e,t){return Mt([...this.left.eval(e,t),...this.right.eval(e,t)])}}class pr extends Et{constructor(e,t){super("=",e,t)}eval(e,t){return _t(this.left.eval(e,t),this.right.eval(e,t))}}class lr extends Et{constructor(e,t){super("!=",e,t)}eval(e,t){return Nt(_t(this.left.eval(e,t),this.right.eval(e,t)))}}class hr extends Et{constructor(e,t){super("~",e,t)}eval(e,t){return jt(this.left.eval(e,t),this.right.eval(e,t))}}class fr extends Et{constructor(e,t){super("!~",e,t)}eval(e,t){return Nt(jt(this.left.eval(e,t),this.right.eval(e,t)))}}class mr extends Et{constructor(e,t){super("is",e,t)}eval(e,t){const r=this.left.eval(e,t);if(1!==r.length)return[];const n=this.right.name;return At(Qt(r[0],n))}}class yr extends Et{constructor(e,t){super("and",e,t)}eval(e,t){const r=this.left.eval(e,t),n=this.right.eval(e,t);return!0===r[0]?.value&&!0===n[0]?.value?At(!0):!1===r[0]?.value||!1===n[0]?.value?At(!1):[]}}class gr extends Et{constructor(e,t){super("or",e,t)}eval(e,t){const r=this.left.eval(e,t);if(Ut(r))return r;const n=this.right.eval(e,t);return Ut(n)?n:[]}}class vr extends Et{constructor(e,t){super("xor",e,t)}eval(e,t){const r=this.left.eval(e,t),n=this.right.eval(e,t);if(0===r.length&&0===n.length)return[];const i=0===r.length?null:r[0].value,o=0===n.length?null:n[0].value;return!0===i&&!0!==o||!0!==i&&!0===o?At(!0):!0===i&&!0===o||!1===i&&!1===o?At(!1):[]}}class xr{constructor(e,t){this.name=e,this.args=t}eval(e,t){const r=Xt[this.name];if(!r)throw new Error("Unrecognized function: "+this.name);return r(e,t,...this.args)}toString(){return`${this.name}(${this.args.map((e=>e.toString())).join(", ")})`}}class Sr{constructor(e,t){this.left=e,this.expr=t}eval(e,t){const r=this.expr.eval(e,t);if(1!==r.length)return[];const n=r[0].value;if("number"!=typeof n)throw new Error("Invalid indexer expression: should return integer}");const i=this.left.eval(e,t);return n in i?[i[n]]:[]}toString(){return`${this.left.toString()}[${this.expr.toString()}]`}}const br=["true","false"],wr=["!=","!~","<=",">=","{}","->"];function Tr(e){return new Dt(e,br,wr).tokenize()}const Er={parse(e){const t=e.consumeAndParse();if(!e.match(")"))throw new Error("Parse error: expected `)` got `"+e.peek()?.value+"`");return t}},kr={parse(e,t){const r=e.consumeAndParse();if(!e.match("]"))throw new Error("Parse error: expected `]`");return new Sr(t,r)},precedence:2},Cr={parse(e,t){if(!(t instanceof tr))throw new Error("Unexpected parentheses");const r=[];for(;!e.match(")");)r.push(e.consumeAndParse()),e.match(",");return new xr(t.name,r)},precedence:0};function Pr(e){const t=e.split(" "),r=parseFloat(t[0]);let n=t[1];return n=n&&n.startsWith("'")&&n.endsWith("'")?n.substring(1,n.length-1):"{"+n+"}",{value:r,unit:n}}function Dr(){return(new kt).registerPrefix("String",{parse:(e,t)=>new er({type:Je.string,value:t.value})}).registerPrefix("DateTime",{parse:(e,t)=>new er({type:Je.dateTime,value:Rt(t.value)})}).registerPrefix("Quantity",{parse:(e,t)=>new er({type:Je.Quantity,value:Pr(t.value)})}).registerPrefix("Number",{parse:(e,t)=>new er({type:Je.decimal,value:parseFloat(t.value)})}).registerPrefix("true",{parse:()=>new er({type:Je.boolean,value:!0})}).registerPrefix("false",{parse:()=>new er({type:Je.boolean,value:!1})}).registerPrefix("Symbol",{parse:(e,t)=>new tr(t.value)}).registerPrefix("{}",{parse:()=>new rr}).registerPrefix("(",Er).registerInfix("[",kr).registerInfix("(",Cr).prefix("+",3,((e,t)=>new nr("+",t,(e=>e)))).prefix("-",3,((e,t)=>new or("-",t,t,((e,t)=>-t)))).infixLeft(".",1,((e,t,r)=>new ur(e,r))).infixLeft("/",4,((e,t,r)=>new or("/",e,r,((e,t)=>e/t)))).infixLeft("*",4,((e,t,r)=>new or("*",e,r,((e,t)=>e*t)))).infixLeft("+",5,((e,t,r)=>new or("+",e,r,((e,t)=>e+t)))).infixLeft("-",5,((e,t,r)=>new or("-",e,r,((e,t)=>e-t)))).infixLeft("|",7,((e,t,r)=>new dr(e,r))).infixLeft("=",9,((e,t,r)=>new pr(e,r))).infixLeft("!=",9,((e,t,r)=>new lr(e,r))).infixLeft("~",9,((e,t,r)=>new hr(e,r))).infixLeft("!~",9,((e,t,r)=>new fr(e,r))).infixLeft("<",8,((e,t,r)=>new or("<",e,r,((e,t)=>e<t)))).infixLeft("<=",8,((e,t,r)=>new or("<=",e,r,((e,t)=>e<=t)))).infixLeft(">",8,((e,t,r)=>new or(">",e,r,((e,t)=>e>t)))).infixLeft(">=",8,((e,t,r)=>new or(">=",e,r,((e,t)=>e>=t)))).infixLeft("&",5,((e,t,r)=>new sr(e,r))).infixLeft("and",6,((e,t,r)=>new yr(e,r))).infixLeft("as",6,((e,t,r)=>new ir(e,r))).infixLeft("contains",6,((e,t,r)=>new ar(e,r))).infixLeft("div",6,((e,t,r)=>new or("div",e,r,((e,t)=>e/t|0)))).infixLeft("in",6,((e,t,r)=>new cr(e,r))).infixLeft("is",6,((e,t,r)=>new mr(e,r))).infixLeft("mod",6,((e,t,r)=>new or("mod",e,r,((e,t)=>e%t)))).infixLeft("or",6,((e,t,r)=>new gr(e,r))).infixLeft("xor",6,((e,t,r)=>new vr(e,r)))}const Rr=Dr();function Ar(e){return new Kt(e,Rr.construct(Tr(e)).consumeAndParse())}function Ir(e,t){const r=Array.isArray(t)?t:[t];for(let e=0;e<r.length;e++){const t=r[e];"object"==typeof t&&"type"in t&&"value"in t||(r[e]=It(r[e]))}return Ur(e,r).map((e=>e.value))}function Ur(e,t,r){const n=r||{};return Ar(e).eval({variables:n},t)}const Or=[...wr,"->","<<",">>"];class Lr{constructor(e){this.parser=e,this.structureMap={resourceType:"StructureMap"}}parse(){for(this.parser.consume("Symbol","map"),this.structureMap.url=this.parser.consume("String").value,this.parser.consume("="),this.structureMap.name=this.parser.consume().value;this.parser.hasMore();){const e=this.parser.peek()?.value;switch(e){case"uses":this.parseUses();break;case"imports":this.parseImport();break;case"group":this.parseGroup();break;case"conceptmap":this.parseConceptMap();break;default:throw new Error(`Unexpected token: ${e}`)}}return this.structureMap}parseUses(){this.parser.consume("Symbol","uses");const e={};e.url=this.parser.consume("String").value,"alias"===this.parser.peek()?.value&&(this.parser.consume("Symbol","alias"),e.alias=this.parser.consume("Symbol").value),this.parser.consume("Symbol","as"),e.mode=this.parser.consume().value,this.structureMap.structure||(this.structureMap.structure=[]),this.structureMap.structure.push(e)}parseImport(){this.parser.consume("Symbol","imports"),this.structureMap.import||(this.structureMap.import=[]),this.structureMap.import.push(this.parser.consume("String").value)}parseGroup(){const e={};this.parser.consume("Symbol","group"),e.name=this.parser.consume("Symbol").value,e.input=this.parseParameters(),"extends"===this.parser.peek()?.value&&(this.parser.consume("Symbol","extends"),e.extends=this.parser.consume("Symbol").value),"<<"===this.parser.peek()?.value?(this.parser.consume("<<"),e.typeMode=this.parser.consume().value,"+"===this.parser.peek()?.value&&(this.parser.consume("+"),e.typeMode="type-and-types"),this.parser.consume(">>")):e.typeMode="none",e.rule=this.parseRules(),this.structureMap.group||(this.structureMap.group=[]),this.structureMap.group.push(e)}parseParameters(){const e=[];for(this.parser.consume("(");this.parser.hasMore()&&")"!==this.parser.peek()?.value;)e.push(this.parseParameter()),","===this.parser.peek()?.value&&this.parser.consume(",");return this.parser.consume(")"),e}parseParameter(){const e={};return e.mode=this.parser.consume().value,e.name=this.parser.consume("Symbol").value,":"===this.parser.peek()?.value&&(this.parser.consume(":"),e.type=this.parser.consume("Symbol").value),e}parseRules(){const e=[];for(this.parser.consume("{");this.parser.hasMore()&&"}"!==this.parser.peek()?.value;)e.push(this.parseRule());return this.parser.consume("}"),e}parseRule(){const e={source:this.parseRuleSources()};return"->"===this.parser.peek()?.value&&(this.parser.consume("->"),e.target=this.parseRuleTargets()),"then"===this.parser.peek()?.value&&(this.parser.consume("Symbol","then"),"{"===this.parser.peek()?.id?e.rule=this.parseRules():e.dependent=this.parseRuleDependents()),"String"===this.parser.peek()?.id?e.name=this.parser.consume().value:e.name=e.source?.[0]?.element,this.parser.consume(";"),e}parseRuleSources(){const e=[this.parseRuleSource()];for(;this.parser.hasMore()&&","===this.parser.peek()?.value;)this.parser.consume(","),e.push(this.parseRuleSource());return e}parseRuleSource(){const e={},t=this.parseRuleContext();if(t.includes(".")){const r=t.split(".");e.context=r[0],e.element=r[1]}else e.context=t;if(this.parser.hasMore()&&":"===this.parser.peek()?.value&&(this.parser.consume(":"),e.type=this.parser.consume().value),this.parser.hasMore()&&"default"===this.parser.peek()?.value&&(this.parser.consume("default"),this.parser.consumeAndParse()),"first"!==this.parser.peek()?.value&&"not_first"!==this.parser.peek()?.value&&"last"!==this.parser.peek()?.value&&"not_last"!==this.parser.peek()?.value&&"only_one"!==this.parser.peek()?.value||(e.listMode=this.parser.consume().value),"as"===this.parser.peek()?.value&&(this.parser.consume("Symbol","as"),e.variable=this.parser.consume().value),"where"===this.parser.peek()?.value){this.parser.consume("Symbol","where");const t=this.parser.consumeAndParse(100);e.condition=t.toString()}if("check"===this.parser.peek()?.value){this.parser.consume("Symbol","check");const t=this.parser.consumeAndParse(100);e.check=t.toString()}return e}parseRuleTargets(){const e=[this.parseRuleTarget()];for(;this.parser.hasMore()&&","===this.parser.peek()?.value;)this.parser.consume(","),e.push(this.parseRuleTarget());return e}parseRuleTarget(){const e={},t=this.parseRuleContext();if(t.includes(".")){const r=t.split(".");e.contextType="variable",e.context=r[0],e.element=r[1]}else e.context=t;return"="===this.parser.peek()?.value&&(this.parser.consume("="),this.parseRuleTargetTransform(e)),"as"===this.parser.peek()?.value&&(this.parser.consume("Symbol","as"),e.variable=this.parser.consume().value),"first"!==this.parser.peek()?.value&&"share"!==this.parser.peek()?.value&&"last"!==this.parser.peek()?.value&&"collate"!==this.parser.peek()?.value||(e.listMode=[this.parser.consume().value]),e}parseRuleTargetTransform(e){e.transform="copy";const t=this.parser.consumeAndParse(6);if(t instanceof tr)this.parseRuleTargetSymbol(e,t);else if(t instanceof xr)this.parseRuleTargetFunction(e,t);else{if(!(t instanceof er))throw new Error(`Unexpected FHIRPath: ${t}`);this.parseRuleTargetLiteral(e,t)}}parseRuleTargetSymbol(e,t){e.parameter=[{valueId:t.name}]}parseRuleTargetFunction(e,t){const r=t.name;switch(r){case"create":e.parameter=[{valueString:(t.args?.[0]).value.value}];break;case"translate":e.parameter=[{}];break;default:throw new Error("Unknown target function: "+r)}}parseRuleTargetLiteral(e,t){switch(t.value.type){case"boolean":e.parameter=[{valueBoolean:t.value.value}];break;case"decimal":e.parameter=[{valueDecimal:t.value.value}];break;case"string":e.parameter=[{valueString:t.value.value}];break;default:throw new Error("Unknown target literal type: "+t.value.type)}}parseRuleContext(){let e=this.parser.consume().value;for(;"."===this.parser.peek()?.value;)this.parser.consume("."),e+="."+this.parser.consume().value;return e}parseRuleDependents(){const e=this.parser.consumeAndParse(100);return[{name:e.name,variable:e.args.map((e=>e.name))}]}parseConceptMap(){for(;"}"!==this.parser.peek()?.value;)this.parser.consume();this.parser.consume("}")}}const Mr=Dr().registerInfix("->",{precedence:100}).registerInfix(";",{precedence:200});function Nr(e){const t=Mr.construct(new Dt(e,br,Or).tokenize());return t.removeComments(),new Lr(t).parse()}const _r=20;var Br;!function(e){e.EQUALS="eq",e.NOT_EQUALS="ne",e.GREATER_THAN="gt",e.LESS_THAN="lt",e.GREATER_THAN_OR_EQUALS="ge",e.LESS_THAN_OR_EQUALS="le",e.STARTS_AFTER="sa",e.ENDS_BEFORE="eb",e.APPROXIMATELY="ap",e.CONTAINS="contains",e.EXACT="exact",e.TEXT="text",e.NOT="not",e.ABOVE="above",e.BELOW="below",e.IN="in",e.NOT_IN="not-in",e.OF_TYPE="of-type",e.MISSING="missing",e.IDENTIFIER="identifier",e.ITERATE="iterate"}(Br||(Br={}));const jr={contains:Br.CONTAINS,exact:Br.EXACT,above:Br.ABOVE,below:Br.BELOW,text:Br.TEXT,not:Br.NOT,in:Br.IN,"not-in":Br.NOT_IN,"of-type":Br.OF_TYPE,missing:Br.MISSING,identifier:Br.IDENTIFIER,iterate:Br.ITERATE},$r={eq:Br.EQUALS,ne:Br.NOT_EQUALS,lt:Br.LESS_THAN,le:Br.LESS_THAN_OR_EQUALS,gt:Br.GREATER_THAN,ge:Br.GREATER_THAN_OR_EQUALS,sa:Br.STARTS_AFTER,eb:Br.ENDS_BEFORE,ap:Br.APPROXIMATELY};function qr(e,t){const r=[];for(const[e,n]of Object.entries(t))if(Array.isArray(n))for(let t=0;t<n.length;t++)r.push([e,n[t]]);else r.push([e,n||""]);return Wr(e,r)}function Qr(e){return Wr(e.pathname.split("/").filter(Boolean).pop(),e.searchParams.entries())}function Fr(e){return Qr(new URL(e,"https://example.com/"))}function Wr(e,t){const r={resourceType:e};for(const[e,n]of t)Hr(r,e,n);return r}function Hr(e,t,r){let n,i;const o=t.indexOf(":");switch(o>=0?(n=t.substring(0,o),i=t.substring(o+1)):(n=t,i=""),n){case"_sort":!function(e,t){for(const r of t.split(",")){let t,n=!1;r.startsWith("-")?(t=r.substring(1),n=!0):t=r,e.sortRules||(e.sortRules=[]),e.sortRules.push({code:t,descending:n})}}(e,r);break;case"_count":e.count=parseInt(r);break;case"_offset":e.offset=parseInt(r);break;case"_total":e.total=r;break;case"_summary":e.total="accurate",e.count=0;break;case"_include":{const t=Vr(r);"iterate"===i&&(t.modifier=Br.ITERATE),e.include?e.include.push(t):e.include=[t];break}case"_revinclude":{const t=Vr(r);"iterate"===i&&(t.modifier=Br.ITERATE),e.revInclude?e.revInclude.push(t):e.revInclude=[t];break}case"_fields":e.fields=r.split(",");break;default:{const t=ft.types[e.resourceType]?.searchParams?.[n];t?function(e,t,r,n){if("missing"===r)return void Xr(e,{code:t.code,operator:Br.MISSING,value:n});switch(t.type){case"number":case"date":!function(e,t,r){const{operator:n,value:i}=zr(r);Xr(e,{code:t.code,operator:n,value:i})}(e,t,n);break;case"reference":case"string":case"token":case"uri":!function(e,t,r,n){Xr(e,{code:t.code,operator:Gr(r),value:n})}(e,t,r,n);break;case"quantity":!function(e,t,r){const[n,i,o]=r.split("|"),{operator:s,value:a}=zr(n);Xr(e,{code:t.code,operator:s,value:a,unitSystem:i,unitCode:o})}(e,t,n)}}(e,t,i,r):function(e,t,r,n){let i=Br.EQUALS;if(r)i=r;else if(n.length>=2){const e=n.substring(0,2);e in $r&&(2===n.length||n.at(2)?.match(/\d/))&&(i=e,n=n.substring(e.length))}Xr(e,{code:t,operator:i,value:n})}(e,n,i,r)}}}function zr(e){const t=e.substring(0,2),r=$r[t];return r?{operator:r,value:e.substring(2)}:{operator:Br.EQUALS,value:e}}function Gr(e){return jr[e]||Br.EQUALS}function Vr(e){const t=e.split(":");if(t.forEach((e=>{if("*"===e)throw new qe(Oe("'*' is not supported as a value for search inclusion parameters"))})),1===t.length)throw new qe(Oe(`Invalid include value '${e}': must be of the form ResourceType:search-parameter`));if(2===t.length)return{resourceType:t[0],searchParam:t[1]};if(3===t.length)return{resourceType:t[0],searchParam:t[1],targetType:t[2]};throw new qe(Oe(`Invalid include value '${e}'`))}function Xr(e,t){e.filters?e.filters.push(t):e.filters=[t]}function Jr(e){const t=[];return e.fields&&t.push("_fields="+e.fields.join(",")),e.filters&&e.filters.forEach((e=>t.push(function(e){const t=e.operator in jr?":"+e.operator:"",r=e.operator!==Br.EQUALS&&e.operator in $r?e.operator:"";return`${e.code}${t}=${r}${encodeURIComponent(e.value)}`}(e)))),e.sortRules&&e.sortRules.length>0&&t.push("_sort="+e.sortRules.map((e=>e.descending?"-"+e.code:e.code)).join(",")),void 0!==e.offset&&t.push("_offset="+e.offset),void 0!==e.count&&t.push("_count="+e.count),void 0!==e.total&&t.push("_total="+e.total),0===t.length?"":(t.sort(),"?"+t.join("&"))}const Yr=[...wr,"eq","ne","co"];class Zr{constructor(e,t,r){this.path=e,this.operator=t,this.value=r}}class Kr{constructor(e){this.child=e}}class en{constructor(e,t,r){this.keyword=e,this.left=t,this.right=r}}const tn={eq:Br.EQUALS,ne:Br.NOT_EQUALS,co:Br.CONTAINS,sw:void 0,ew:void 0,gt:Br.GREATER_THAN,lt:Br.LESS_THAN,ge:Br.GREATER_THAN_OR_EQUALS,le:Br.LESS_THAN_OR_EQUALS,ap:Br.APPROXIMATELY,sa:Br.STARTS_AFTER,eb:Br.ENDS_BEFORE,pr:Br.MISSING,po:void 0,ss:void 0,sb:void 0,in:Br.IN,ni:Br.NOT_IN,re:void 0,identifier:Br.IDENTIFIER};class rn{constructor(e){this.parser=e}parse(){let e;"("===this.parser.peek()?.value?(this.parser.consume("("),e=this.parse(),this.parser.consume(")")):"not"===this.parser.peek()?.value?(this.parser.consume("Symbol","not"),this.parser.consume("("),e=new Kr(this.parse()),this.parser.consume(")")):e=new Zr(this.parser.consume("Symbol").value,function(e){const t=tn[e];if(!t)throw new qe(Oe("Invalid operator: "+e));return t}(this.parser.consume("Symbol").value),this.parser.consume().value);const t=this.parser.peek()?.value;return"and"===t||"or"===t?(this.parser.consume("Symbol",t),new en(t,e,this.parse())):e}}const nn=Dr();function on(e){const t=nn.construct(new Dt(e,br,Yr,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize());return t.removeComments(),new rn(t).parse()}class sn{constructor(e="\r",t="|",r="^",n="~",i="\\",o="&"){this.segmentSeparator=e,this.fieldSeparator=t,this.componentSeparator=r,this.repetitionSeparator=n,this.escapeCharacter=i,this.subcomponentSeparator=o}getMsh2(){return this.fieldSeparator+this.componentSeparator+this.repetitionSeparator+this.escapeCharacter+this.subcomponentSeparator}}class an{constructor(e,t=new sn){this.context=t,this.segments=e}get(e){return"number"==typeof e?this.segments[e]:this.segments.find((t=>t.name===e))}getAll(e){return this.segments.filter((t=>t.name===e))}toString(){return this.segments.map((e=>e.toString())).join(this.context.segmentSeparator)}buildAck(){const e=new Date,t=this.get("MSH"),r=t?.get(2)?.toString()||"",n=t?.get(3)?.toString()||"",i=t?.get(4)?.toString()||"",o=t?.get(5)?.toString()||"",s=t?.get(9)?.toString()||"",a=t?.get(12)?.toString()||"2.5.1";return new an([new cn(["MSH",this.context.getMsh2(),i,o,r,n,e.toISOString(),"","ACK",e.getTime().toString(),"P",a],this.context),new cn(["MSA","AA",s,"OK"],this.context)])}static parse(e){if(!e.startsWith("MSH")){const e=new Error("Invalid HL7 message");throw e.type="entity.parse.failed",e}const t=new sn("\r",e.charAt(3),e.charAt(4),e.charAt(5),e.charAt(6),e.charAt(7));return new an(e.split(/[\r\n]+/).map((e=>cn.parse(e,t))),t)}}class cn{constructor(e,t=new sn){this.context=t,G(e)?this.fields=e.map((e=>un.parse(e))):this.fields=e,this.name=this.fields[0].components[0][0]}get(e){return this.fields[e]}toString(){return this.fields.map((e=>e.toString())).join(this.context.fieldSeparator)}static parse(e,t=new sn){return new cn(e.split(t.fieldSeparator).map((e=>un.parse(e,t))),t)}}class un{constructor(e,t=new sn){this.context=t,this.components=e}get(e,t,r=0){let n=this.components[r][e]||"";return void 0!==t&&(n=n.split(this.context.subcomponentSeparator)[t]||""),n}toString(){return this.components.map((e=>e.join(this.context.componentSeparator))).join(this.context.repetitionSeparator)}static parse(e,t=new sn){return new un(e.split(t.repetitionSeparator).map((e=>e.split(t.componentSeparator))),t)}}function dn(e,t){if(!e)return;t={seconds:!0,tzOffset:"Z",...t};const r=Number.parseInt(e.substring(0,4)),n=Number.parseInt(e.substring(4,6)),i=Number.parseInt(e.substring(6,8)),o=Number.parseInt(e.substring(8,10)),s=Number.parseInt(e.substring(10,12)),a=t.seconds?Number.parseInt(e.substring(12,14)):0;return`${pn(r)}-${pn(n)}-${pn(i)}T${pn(o)}:${pn(s)}:${pn(a)}.000${t.tzOffset}`}function pn(e){return e.toString().padStart(2,"0")}const ln={base64Binary:"string",boolean:"boolean",canonical:"string",code:"string",date:"string",dateTime:"string",decimal:"number",id:"string",instant:"string",integer:"number",markdown:"string",oid:"string",positiveInt:"number",string:"string",time:"string",unsignedInt:"number",uri:"string",url:"string",uuid:"string",xhtml:"string","http://hl7.org/fhirpath/System.String":"string"},hn=new Set(["resourceType","id","meta","implicitRules","language","text","contained","extension","modifierExtension"]);function fn(e){const t=ft.types[e];return t&&t.structureDefinition.id===e&&"resource"===t.structureDefinition.kind}function mn(e){if(!e)throw new qe(Le("Resource type is null"));if(!fn(e))throw new qe(Le("Unknown resource type"))}function yn(e){new gn(e).validate()}class gn{constructor(e){this.issues=[],this.root=e}validate(){const e=this.root;if(!e)throw new qe(Le("Resource is null"));const t=e.resourceType;if(!t)throw new qe(Le("Missing resource type"));if(vn(e,"",this.issues),this.validateObject(It(e),t),this.issues.length>0)throw new qe({resourceType:"OperationOutcome",issue:this.issues})}validateObject(e,t){const r=ft.types[e.type];if(!r)throw new qe(Le("Unknown type: "+e.type));const n=r.properties;this.checkProperties(t,n,e),this.checkAdditionalProperties(t,e,n)}checkProperties(e,t,r){for(const[n,i]of Object.entries(t))this.checkProperty(e+"."+n,i,r)}checkProperty(e,t,r){const n=Ot(r,e.split(".").pop());if(Q(n))void 0!==t.min&&t.min>0&&this.issues.push(xn(e,"Missing required property"));else if("*"===t.max){if(!Array.isArray(n))return void this.issues.push(xn(e,"Expected array for property"));for(const r of n)this.checkPropertyValue(e,t,r)}else{if(Array.isArray(n))return void this.issues.push(xn(e,"Expected single value for property"));this.checkPropertyValue(e,t,n)}}checkPropertyValue(e,t,r){null!==r.value&&(Z(r.type.charAt(0))?this.validatePrimitiveType(t,r):this.validateObject(r,e))}validatePrimitiveType(e,t){const{type:r,value:n}=t;if(null===n)return;const i=ln[t.type];typeof n===i?"string"===i?this.validateString(e,r,n):"number"===i&&this.validateNumber(e,r,n):this.createIssue(e,"Invalid type for "+r)}validateString(e,t,r){if(!r.trim())return void this.createIssue(e,"Invalid empty string");const n=ft.types[t]?.properties?.value;if(n?.type){const i=B(n.type[0],"http://hl7.org/fhir/StructureDefinition/regex");i&&(r.match(new RegExp(i))||this.createIssue(e,"Invalid "+t+" format"))}}validateNumber(e,t,r){var n;!isNaN(r)&&isFinite(r)?((n=t)!==Je.integer&&n!==Je.positiveInt&&n!==Je.unsignedInt||Number.isInteger(r)||this.createIssue(e,"Number is not an integer"),t===Je.positiveInt&&r<=0&&this.createIssue(e,"Number is less than or equal to zero"),t===Je.unsignedInt&&r<0&&this.createIssue(e,"Number is negative")):this.createIssue(e,"Invalid "+t+" value")}checkAdditionalProperties(e,t,r){const n=t.value;for(const i of Object.keys(n))this.checkAdditionalProperty(e,i,t,r)}checkAdditionalProperty(e,t,r,n){if(!(hn.has(t)||t in n||function(e,t,r){for(const n of Object.keys(r)){if(!n.endsWith("[x]"))continue;const r=n.replace("[x]","");if(!e.startsWith(r))continue;let i=Ot(t,n);if(i&&(Array.isArray(i)&&(i=i[0]),i&&e===r+Y(i.type)))return!0}return!1}(t,r,n)||this.checkPrimitiveElement(e,t,r))){const r=`${e}.${t}`;this.issues.push(xn(r,`Invalid additional property "${r}"`))}}checkPrimitiveElement(e,t,r){if(!t.startsWith("_"))return!1;return t.slice(1)in r.value&&(this.validateObject({type:"Element",value:r.value[t]},e),!0)}createIssue(e,t){this.issues.push(xn(e.path,t))}}function vn(e,t,r){null===e?r.push(xn(t,"Invalid null value")):Array.isArray(e)?function(e,t,r){for(let n=0;n<e.length;n++)void 0===e[n]?r.push(xn(`${t}[${n}]`,"Invalid undefined value")):vn(e[n],`${t}[${n}]`,r)}(e,t,r):"object"==typeof e&&function(e,t,r){for(const[n,i]of Object.entries(e))vn(i,`${t}${t?".":""}${n}`,r)}(e,t,r)}function xn(e,t){return{severity:"error",code:"structure",details:{text:t},expression:[e]}}var Sn;function bn(e,t){let r=ft.types[e]?.searchParamsDetails?.[t.code];return r||(r=function(e,t){const r=t.code,n=function(e){return e.split("-").reduce(((e,t,r)=>e+(r?Y(t):t)),"")}(r),i=Tn(e,t.expression)?.split(".");if(!i)return{columnName:n,type:Sn.TEXT};let o,s,a=e,c=!1;for(let r=1;r<i.length;r++){let n=i[r],u=!1;const d=/\[\d+\]$/.exec(n);if(d&&(n=n.substring(0,n.length-d[0].length),u=!0),o=pt(a,n),!o)throw new Error(`Element definition not found for ${e} ${t.code}`);"0"===o.max||"1"===o.max||u||(c=!0),s=o.type?.[0].code,r<i.length-1&&(a=wn(s)?nt(o.path?.split(".")):s)}const u=function(e,t){let r=Sn.TEXT;switch(e.type){case"date":r=t===Je.date?Sn.DATE:Sn.DATETIME;break;case"number":r=Sn.NUMBER;break;case"quantity":r=Sn.QUANTITY;break;case"reference":r=t===Je.canonical?Sn.CANONICAL:Sn.REFERENCE;break;case"token":"boolean"===t&&(r=Sn.BOOLEAN)}return r}(t,s),d={columnName:n,type:u,elementDefinition:o,array:c};return function(e,t,r){const n=ft.types[e];n.searchParamsDetails||(n.searchParamsDetails={});n.searchParamsDetails[t]=r}(e,r,d),d}(e,t)),r}function wn(e){return"Element"===e||"BackboneElement"===e}function Tn(e,t){const r=t.split(" | ");for(const t of r){if((n=t).includes(" as Period")||n.includes(" as SampledDate"))continue;const r=En(t);if(r.startsWith(e+"."))return r}var n}function En(e){let t=e.trim();t.startsWith("(")&&t.endsWith(")")&&(t=t.substring(1,t.length-1));const r=[" != "," as ",".as(",".exists(",".resolve(",".where("];for(const e of r)t.includes(e)&&(t=t.substring(0,t.indexOf(e)));return t}function kn(e,t){if(t.resourceType!==e.resourceType)return!1;if(t.filters)for(const r of t.filters)if(!Cn(e,t,r))return!1;return!0}function Cn(e,t,r){const n=ft.types[t.resourceType]?.searchParams?.[r.code];switch(n?.type){case"reference":return function(e,t,r){const n=Ir(r.expression,e),i=An(t.operator);if(""===t.value&&0===n.length)return t.operator===Br.EQUALS;const o=n.map((e=>"string"==typeof e?e:e.reference));for(const e of t.value.split(",")){let r=o.includes(e);if(r||"_compartment"!==t.code||(r=o.some((t=>t?.endsWith("/"+e)))),r)return!i}return i}(e,r,n);case"string":case"uri":return Pn(e,r,n);case"token":return function(e,t,r){const n=bn(e.resourceType,r);return n.type===Sn.BOOLEAN?function(e,t,r){const n=Ir(r.expression,e),i="true"===t.value,o=n.includes(i);return An(t.operator)?!o:o}(e,t,r):Pn(e,t,r,!0)}(e,r,n);case"date":return function(e,t,r){const n=Ir(r.expression,e),i=t.value.split(","),o=An(t.operator);for(const e of n)for(const r of i){if(Rn(e,t.operator,r))return!o}return o}(e,r,n)}return!1}function Pn(e,t,r,n){const i=Ir(r.expression,e),o=t.value.split(","),s=An(t.operator);for(const e of i)for(const r of o){if(Dn(e,t.operator,r,n))return!s}return s}function Dn(e,t,r,n){if(n&&r.includes("|")){const[n,i]=r.split("|");return Dn(e,t,n,!1)&&(!i||Dn(e,t,i,!1))}let i="";return e&&("string"==typeof e?i=e:"object"==typeof e&&(i=JSON.stringify(e))),i.toLowerCase().includes(r.toLowerCase())}function Rn(e,t,r){switch(t){case Br.STARTS_AFTER:case Br.GREATER_THAN:return e>r;case Br.GREATER_THAN_OR_EQUALS:return e>=r;case Br.ENDS_BEFORE:case Br.LESS_THAN:return e<r;case Br.LESS_THAN_OR_EQUALS:return e<=r;case Br.EQUALS:case Br.NOT_EQUALS:return e===r}return!1}function An(e){return e===Br.NOT_EQUALS||e===Br.NOT}function In(e){const t=[];return new Promise(((r,n)=>{e.on("data",(e=>t.push(Buffer.from(e)))),e.on("error",(t=>{e.destroy(),n(t)})),e.on("end",(()=>{r(Buffer.concat(t))})),e.on("close",(()=>{e.destroy()}))}))}!function(e){e.BOOLEAN="BOOLEAN",e.NUMBER="NUMBER",e.QUANTITY="QUANTITY",e.TEXT="TEXT",e.REFERENCE="REFERENCE",e.CANONICAL="CANONICAL",e.DATE="DATE",e.DATETIME="DATETIME",e.PERIOD="PERIOD",e.UUID="UUID"}(Sn||(Sn={}));export{yr as AndAtom,or as ArithemticOperatorAtom,ir as AsAtom,Ve as ClientStorage,sr as ConcatAtom,ar as ContainsAtom,_r as DEFAULT_SEARCH_COUNT,ur as DotAtom,rr as EmptySetAtom,pr as EqualsAtom,hr as EquivalentAtom,br as FHIRPATH_KEYWORDS,wr as FHIRPATH_OPERATORS,Zr as FhirFilterComparison,en as FhirFilterConnective,Kr as FhirFilterNegation,Kt as FhirPathAtom,gn as FhirSchemaValidator,xr as FunctionAtom,sn as Hl7Context,un as Hl7Field,an as Hl7Message,cn as Hl7Segment,cr as InAtom,Sr as IndexerAtom,Et as InfixOperatorAtom,mr as IsAtom,i as LRUCache,er as LiteralAtom,mt as MEDPLUM_VERSION,St as MedplumClient,Xe as MemoryStorage,lr as NotEqualsAtom,fr as NotEquivalentAtom,vt as OAuthGrantType,xt as OAuthTokenType,qe as OperationOutcomeError,Br as Operator,gr as OrAtom,Ct as Parser,kt as ParserBuilder,Tt as PrefixOperatorAtom,Je as PropertyType,Ge as ReadablePromise,Sn as SearchParameterType,tr as SymbolAtom,Dt as Tokenizer,nr as UnaryOperatorAtom,dr as UnionAtom,vr as XorAtom,Ue as accepted,Ee as allOk,J as arrayBufferToBase64,X as arrayBufferToHex,$e as assertOk,Oe as badRequest,At as booleanToTypedValue,nt as buildTypeName,O as calculateAge,L as calculateAgeString,Y as capitalize,vn as checkForNull,r as convertToTransactionBundle,k as createReference,xn as createStructureIssue,ke as created,e as decodeBase64,W as deepClone,F as deepEquals,t as encodeBase64,Ir as evalFhirPath,Ur as evalFhirPathTyped,_t as fhirPathArrayEquals,jt as fhirPathArrayEquivalent,Bt as fhirPathEquals,$t as fhirPathEquivalent,Qt as fhirPathIs,Nt as fhirPathNot,te as findObservationInterval,re as findObservationReferenceRange,le as findResourceByCode,Re as forbidden,o as formatAddress,b as formatCodeableConcept,w as formatCoding,d as formatDate,l as formatDateTime,c as formatFamilyName,a as formatGivenName,s as formatHumanName,S as formatMoney,T as formatObservationValue,h as formatPeriod,x as formatQuantity,v as formatRange,Jr as formatSearchQuery,p as formatTime,g as formatTiming,K as getCodeBySystem,U as getDateProperty,R as getDisplayString,pt as getElementDefinition,rt as getElementDefinitionTypeName,Tn as getExpressionForResourceType,j as getExtension,B as getExtensionValue,_ as getIdentifier,A as getImageSrc,ct as getPropertyDisplayName,M as getQuestionnaireAnswers,C as getReferenceString,st as getResourceTypeSchema,ot as getResourceTypes,bn as getSearchParameterDetails,at as getSearchParameters,je as getStatus,Ot as getTypedPropertyValue,ft as globalSchema,Ae as gone,tt as indexSearchParameter,et as indexSearchParameterBundle,Ke as indexStructureDefinition,Ze as indexStructureDefinitionBundle,Dr as initFhirPathParserBuilder,Q as isEmpty,Be as isGone,Z as isLowerCase,_e as isNotFound,z as isObject,Ne as isOk,Me as isOperationOutcome,Ft as isPeriod,D as isProfileResource,Wt as isQuantity,Ht as isQuantityEquivalent,ht as isReference,lt as isResource,fn as isResourceType,it as isResourceTypeSchema,G as isStringArray,H as isUUID,u as isValidDate,ie as matchesRange,kn as matchesSearchRequest,Fe as normalizeErrorString,Qe as normalizeOperationOutcome,Pe as notFound,Ce as notModified,He as operationOutcomeIssueToString,We as operationOutcomeToString,Ar as parseFhirPath,on as parseFilterParameter,dn as parseHl7Date,me as parseJWTPayload,Nr as parseMappingLanguage,Fr as parseSearchDefinition,qr as parseSearchRequest,Qr as parseSearchUrl,se as preciseEquals,ce as preciseGreaterThan,de as preciseGreaterThanOrEquals,ae as preciseLessThan,ue as preciseLessThanOrEquals,oe as preciseRound,Mt as removeDuplicates,P as resolveId,ee as setCodeBySystem,In as streamToBuffer,$ as stringify,Ut as toJsBoolean,It as toTypedValue,Tr as tokenize,Ie as tooManyRequests,De as unauthorized,yn as validateResource,mn as validateResourceType,Le as validationError};
|
package/dist/esm/jwt.mjs
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { decodeBase64 } from './base64.mjs';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Decodes a section of a JWT.
|
|
5
|
-
* See: https://tools.ietf.org/html/rfc7519
|
|
6
|
-
* @param payload The JWT payload string.
|
|
7
|
-
* @returns Collection of key value claims in the JWT payload.
|
|
8
|
-
*/
|
|
9
|
-
function decodePayload(payload) {
|
|
10
|
-
const cleanedPayload = payload.replace(/-/g, '+').replace(/_/g, '/');
|
|
11
|
-
const decodedPayload = decodeBase64(cleanedPayload);
|
|
12
|
-
const uriEncodedPayload = Array.from(decodedPayload).reduce((acc, char) => {
|
|
13
|
-
const uriEncodedChar = ('00' + char.charCodeAt(0).toString(16)).slice(-2);
|
|
14
|
-
return `${acc}%${uriEncodedChar}`;
|
|
15
|
-
}, '');
|
|
16
|
-
const jsonPayload = decodeURIComponent(uriEncodedPayload);
|
|
17
|
-
return JSON.parse(jsonPayload);
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Parses the JWT payload.
|
|
21
|
-
* @param token JWT token.
|
|
22
|
-
* @returns Collection of key value claims in the JWT payload.
|
|
23
|
-
*/
|
|
24
|
-
function parseJWTPayload(token) {
|
|
25
|
-
const [_header, payload, _signature] = token.split('.');
|
|
26
|
-
return decodePayload(payload);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export { parseJWTPayload };
|
|
30
|
-
//# sourceMappingURL=jwt.mjs.map
|
package/dist/esm/jwt.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jwt.mjs","sources":["../../src/jwt.ts"],"sourcesContent":["import { decodeBase64 } from './base64';\n\n/**\n * Decodes a section of a JWT.\n * See: https://tools.ietf.org/html/rfc7519\n * @param payload The JWT payload string.\n * @returns Collection of key value claims in the JWT payload.\n */\nfunction decodePayload(payload: string): Record<string, number | string> {\n const cleanedPayload = payload.replace(/-/g, '+').replace(/_/g, '/');\n const decodedPayload = decodeBase64(cleanedPayload);\n const uriEncodedPayload = Array.from(decodedPayload).reduce((acc, char) => {\n const uriEncodedChar = ('00' + char.charCodeAt(0).toString(16)).slice(-2);\n return `${acc}%${uriEncodedChar}`;\n }, '');\n const jsonPayload = decodeURIComponent(uriEncodedPayload);\n return JSON.parse(jsonPayload);\n}\n\n/**\n * Parses the JWT payload.\n * @param token JWT token.\n * @returns Collection of key value claims in the JWT payload.\n */\nexport function parseJWTPayload(token: string): Record<string, number | string> {\n const [_header, payload, _signature] = token.split('.');\n return decodePayload(payload);\n}\n"],"names":[],"mappings":";;AAEA;;;;;AAKG;AACH,SAAS,aAAa,CAAC,OAAe,EAAA;AACpC,IAAA,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACrE,IAAA,MAAM,cAAc,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;AACpD,IAAA,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,KAAI;QACxE,MAAM,cAAc,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1E,QAAA,OAAO,CAAG,EAAA,GAAG,CAAI,CAAA,EAAA,cAAc,EAAE,CAAC;KACnC,EAAE,EAAE,CAAC,CAAC;AACP,IAAA,MAAM,WAAW,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;AAC1D,IAAA,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACjC,CAAC;AAED;;;;AAIG;AACG,SAAU,eAAe,CAAC,KAAa,EAAA;AAC3C,IAAA,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACxD,IAAA,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;AAChC;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"type": "module"}
|