@medplum/core 5.1.39 → 5.1.40
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 +8 -8
- package/dist/cjs/index.cjs.map +3 -3
- package/dist/cjs/index.d.ts +237 -23
- package/dist/esm/index.d.ts +237 -23
- package/dist/esm/index.mjs +8 -8
- package/dist/esm/index.mjs.map +3 -3
- package/package.json +4 -4
package/dist/esm/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
var ws=Object.defineProperty;var As=(t,e,r)=>e in t?ws(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var c=(t,e,r)=>As(t,typeof e!="symbol"?e+"":e,r);var ee=class{constructor(e=10){c(this,"max");c(this,"cache");this.max=e,this.cache=new Map}clear(){this.cache.clear()}get(e){let r=this.cache.get(e);return r&&(this.cache.delete(e),this.cache.set(e,r)),r}set(e,r){this.cache.has(e)?this.cache.delete(e):this.cache.size>=this.max&&this.cache.delete(this.first()),this.cache.set(e,r)}delete(e){this.cache.delete(e)}keys(){return this.cache.keys()}first(){return this.cache.keys().next().value}};var Ot=class{constructor(e,r){c(this,"operator");c(this,"child");this.operator=e,this.child=r}toString(){return`${this.operator}(${this.child.toString()})`}},w=class{constructor(e,r,n){c(this,"operator");c(this,"left");c(this,"right");this.operator=e,this.left=r,this.right=n}toString(){return`(${this.left.toString()} ${this.operator} ${this.right.toString()})`}},It=class{constructor(){c(this,"prefixParselets",{});c(this,"infixParselets",{})}registerInfix(e,r){return this.infixParselets[e]=r,this}registerPrefix(e,r){return this.prefixParselets[e]=r,this}prefix(e,r,n){return this.registerPrefix(e,{parse(i,o){let s=i.consumeAndParse(r);return n(o,s)}})}infixLeft(e,r,n){return this.registerInfix(e,{parse(i,o,s){let a=i.consumeAndParse(r);return n(o,s,a)},precedence:r})}construct(e){return new _r(e,this.prefixParselets,this.infixParselets)}},_r=class{constructor(e,r,n){c(this,"tokens");c(this,"prefixParselets");c(this,"infixParselets");this.tokens=e,this.prefixParselets=r,this.infixParselets=n}hasMore(){return this.tokens.length>0}match(e){return this.peek()?.id!==e?!1:(this.consume(),!0)}consumeAndParse(e=1/0){let r=this.consume(),n=this.prefixParselets[r.id];if(!n)throw new Error(`Parse error at "${r.value}" (line ${r.line}, column ${r.column}). No matching prefix parselet.`);let i=n.parse(this,r);for(;e>this.getPrecedence();){let o=this.consume();i=this.getInfixParselet(o).parse(this,i,o)}return i}getPrecedence(){let e=this.peek();if(!e)return 1/0;let r=this.getInfixParselet(e);return r?r.precedence:1/0}consume(e,r){if(!this.tokens.length)throw new Error("Cant consume unknown more tokens.");if(e&&this.peek()?.id!==e){let n=this.peek();throw new Error(`Expected ${e} but got "${n.id}" (${n.value}) at line ${n.line} column ${n.column}.`)}if(r&&this.peek()?.value!==r){let n=this.peek();throw new Error(`Expected "${r}" but got "${n.value}" at line ${n.line} column ${n.column}.`)}return this.tokens.shift()}peek(){return this.tokens.length>0?this.tokens[0]:void 0}removeComments(){this.tokens=this.tokens.filter(e=>e.id!=="Comment")}getInfixParselet(e){return this.infixParselets[e.id==="Symbol"?e.value:e.id]}};function te(t){if(t!==void 0)return Array.isArray(t)?t:[t]}var ai="http://unitsofmeasure.org",ul="http://loinc.org",dl="http://snomed.info/sct",ll="http://www.nlm.nih.gov/research/umls/rxnorm",pl="http://www.ama-assn.org/go/cpt",fl="http://hl7.org/fhir/sid/icd-10",ml="http://hl7.org/fhir/sid/ndc",kt="http://hl7.org",Os="http://terminology.hl7.org",ci=`${Os}/CodeSystem/v2-0203`;var Mt="ok",Dt="created",Lr="gone",Fr="not-modified",Ur="found",Br="not-found",qr="conflict",Wr="unauthorized",ui="forbidden",di="precondition-failed",li="content-too-large",pi="unsupported-media-type",fi="multiple-matches",mi="too-many-requests",Nr="https://medplum.com/fhir/StructureDefinition/rate-limit-reset",Vt="accepted",hi="server-timeout",gi="business-rule",xl={resourceType:"OperationOutcome",id:Mt,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},vl={resourceType:"OperationOutcome",id:Dt,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},Tl={resourceType:"OperationOutcome",id:Fr,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},yi={resourceType:"OperationOutcome",id:Br,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},Je={resourceType:"OperationOutcome",id:Wr,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},xi={...Je,issue:[...Je.issue,{severity:"error",code:"expired",details:{text:"Token expired"}}]},$r={...Je,issue:[...Je.issue,{severity:"error",code:"invalid",details:{text:"Token not issued for this audience"}}]},Sl={resourceType:"OperationOutcome",id:ui,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},bl={resourceType:"OperationOutcome",id:Lr,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},El={resourceType:"OperationOutcome",id:di,issue:[{severity:"error",code:"processing",details:{text:"Precondition Failed"}}]};function Rl(t){return{resourceType:"OperationOutcome",id:li,issue:[{severity:"error",code:"too-long",details:{text:t}}]}}var Cl={resourceType:"OperationOutcome",id:pi,issue:[{severity:"error",code:"not-supported",details:{text:"Unsupported media type"}}]},Pl={resourceType:"OperationOutcome",id:fi,issue:[{severity:"error",code:"multiple-matches",details:{text:"Multiple resources found matching condition"}}]},wl={resourceType:"OperationOutcome",id:mi,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function Al(t,e){t.extension=[...(t.extension??v).filter(r=>r.url!==Nr),{url:Nr,valueUnsignedInt:Math.ceil(e/1e3)}]}function Ol(t){let e=t.extension?.find(r=>r.url===Nr)?.valueUnsignedInt;if(e!==void 0)return e*1e3;for(let r of t.issue)try{let n=JSON.parse(r.diagnostics??"");if(typeof n.msBeforeNext=="number")return n.msBeforeNext}catch{}}function Il(t){return{resourceType:"OperationOutcome",id:Vt,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:t}]}}function A(t,e){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:t},...e?{expression:te(e)}:void 0}]}}function kl(t,e){return{resourceType:"OperationOutcome",id:qr,issue:[{severity:"error",code:"conflict",details:{coding:e?[{code:e}]:void 0,text:t}}]}}function T(t,e,r,n){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:r??"structure",details:{text:t},...e?{expression:e}:void 0,...n?{diagnostics:n}:void 0}]}}function Ml(t){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:t.toString()}]}}function Dl(t){return{resourceType:"OperationOutcome",id:hi,issue:[{severity:"error",code:"timeout",details:{text:t??"Server timeout"}}]}}function Is(t){let e=t.toString();return{resourceType:"OperationOutcome",id:Ur,issue:[{severity:"information",code:"informational",details:{coding:[{system:"urn:ietf:rfc:3986",code:e}],text:"Redirect to "+e}}]}}function Vl(t){return{...Is(t),id:Mt}}function _l(t){return t?.issue?.[0]?.details?.coding?.find(e=>e.system==="urn:ietf:rfc:3986")?.code}function Nl(t,e){return{resourceType:"OperationOutcome",id:gi,issue:[{severity:"error",code:"business-rule",details:{id:t,text:e}}]}}function jr(t){return!t||typeof t!="object"?!1:t instanceof Error||typeof DOMException<"u"&&t instanceof DOMException?!0:Object.prototype.toString.call(t)==="[object Error]"}function ut(t){return typeof t=="object"&&t!==null&&t.resourceType==="OperationOutcome"}function Hr(t){return t.id===Mt||t.id===Dt||t.id===Fr||t.id===Vt}function Ll(t){return t.id===Dt}function Fl(t){return t.id===Vt}function Ul(t){return t.id===Ur}function Bl(t){return t.id===Br}function ql(t){return t.id===qr}function Wl(t){return t.id===Lr}function $l(t){return t.id===Wr}function jl(t){switch(t.id){case Mt:return 200;case Dt:return 201;case Vt:return 202;case Ur:return 302;case Fr:return 304;case Wr:return 401;case ui:return 403;case Br:return 404;case qr:return 409;case Lr:return 410;case di:case fi:return 412;case li:return 413;case pi:return 415;case gi:return 422;case mi:return 429;case hi:return 504;default:return t.issue?.[0]?.code==="exception"?500:400}}function Hl(t,e){if(!Hr(t)||e===void 0)throw new m(t)}var m=class extends Error{constructor(r,n){super(vi(r),n);c(this,"outcome");this.name="OperationOutcomeError",this.outcome=r}};function _t(t){return t instanceof m?t.outcome:ut(t)?t:A(Ve(t))}function Ve(t){return t?typeof t=="string"?t:jr(t)?t.message:ut(t)?vi(t):typeof t=="object"&&"code"in t&&typeof t.code=="string"?t.code:JSON.stringify(t):"Unknown error"}function vi(t){let e=t.issue?.map(ks)??[];return e.length>0?e.join("; "):"Unknown error"}function ks(t){let e;return t.details?.text?t.diagnostics?e=`${t.details.text} (${t.diagnostics})`:e=t.details.text:t.diagnostics?e=t.diagnostics:e="Unknown error",t.expression?.length&&(e+=` (${t.expression.join(", ")})`),e}function _e(t,e,r,n,i){let o={severity:t,code:e,details:{text:r},expression:[n]};return i&&(o.diagnostics=JSON.stringify(i)),o}function R(t,e){return _e("error","structure",e,t)}function Ti(t,e){return _e("error","invariant",`Constraint ${e.key} not met: ${e.description}`,t,{fhirpath:e.expression})}function Si(t,e,r,n){return _e("error","processing",e,t,{...n,error:r})}var Ms={"http://hl7.org/fhirpath/System.String":"string"};function zl(t){let e={};return t.min!==0&&(e.min=t.min),t.max!==1&&Number.isFinite(t.max)?e.max=t.max:t.max===Number.POSITIVE_INFINITY&&(e.max=Number.MAX_SAFE_INTEGER),e.type=t.type?.map(r=>({...r,extension:void 0,code:Ms[r.code]??r.code})),e}function Ds(t,e){let r=e.max&&e.max===Number.MAX_SAFE_INTEGER?Number.POSITIVE_INFINITY:e.max;return{path:t,description:"",type:e.type??[],min:e.min??0,max:r??1,isArray:!!r&&r>1,constraints:[]}}function bi(t){let e=Object.create(null);for(let[r,n]of Object.entries(t))e[r]={name:r,type:r,path:r,elements:Object.fromEntries(Object.entries(n.elements).map(([i,o])=>[i,Ds(i,o)])),constraints:[],innerTypes:[]};return e}var Ei={Element:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]}}},BackboneElement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]}}},Address:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"code"}]},text:{type:[{code:"string"}]},line:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Annotation:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},coding:{max:9007199254740991,type:[{code:"Coding"}]},text:{type:[{code:"string"}]}}},Coding:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},code:{type:[{code:"code"}]},display:{type:[{code:"string"}]},userSelected:{type:[{code:"boolean"}]}}},ContactDetail:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},name:{type:[{code:"string"}]},telecom:{max:9007199254740991,type:[{code:"ContactPoint"}]}}},ContactPoint:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"code"}]},value:{type:[{code:"string"}]},use:{type:[{code:"code"}]},rank:{type:[{code:"positiveInt"}]},period:{type:[{code:"Period"}]}}},Contributor:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{min:1,type:[{code:"string"}]},contact:{max:9007199254740991,type:[{code:"ContactDetail"}]}}},Count:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},DataRequirement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},profile:{max:9007199254740991,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:9007199254740991,type:[{code:"string"}]},codeFilter:{max:9007199254740991,type:[{code:"DataRequirementCodeFilter"}]},dateFilter:{max:9007199254740991,type:[{code:"DataRequirementDateFilter"}]},limit:{type:[{code:"positiveInt"}]},sort:{max:9007199254740991,type:[{code:"DataRequirementSort"}]}}},DataRequirementCodeFilter:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},path:{type:[{code:"string"}]},searchParam:{type:[{code:"string"}]},valueSet:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/ValueSet"]}]},code:{max:9007199254740991,type:[{code:"Coding"}]}}},DataRequirementDateFilter:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},path:{type:[{code:"string"}]},searchParam:{type:[{code:"string"}]},"value[x]":{type:[{code:"dateTime"},{code:"Period"},{code:"Duration"}]}}},DataRequirementSort:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},direction:{min:1,type:[{code:"code"}]}}},Distance:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Dosage:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},sequence:{type:[{code:"integer"}]},text:{type:[{code:"string"}]},additionalInstruction:{max:9007199254740991,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:9007199254740991,type:[{code:"DosageDoseAndRate"}]},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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},ElementDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},representation:{max:9007199254740991,type:[{code:"code"}]},sliceName:{type:[{code:"string"}]},sliceIsConstraining:{type:[{code:"boolean"}]},label:{type:[{code:"string"}]},code:{max:9007199254740991,type:[{code:"Coding"}]},slicing:{type:[{code:"ElementDefinitionSlicing"}]},short:{type:[{code:"string"}]},definition:{type:[{code:"markdown"}]},comment:{type:[{code:"markdown"}]},requirements:{type:[{code:"markdown"}]},alias:{max:9007199254740991,type:[{code:"string"}]},min:{type:[{code:"unsignedInt"}]},max:{type:[{code:"string"}]},base:{type:[{code:"ElementDefinitionBase"}]},contentReference:{type:[{code:"uri"}]},type:{max:9007199254740991,type:[{code:"ElementDefinitionType"}]},"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:9007199254740991,type:[{code:"ElementDefinitionExample"}]},"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:9007199254740991,type:[{code:"id"}]},constraint:{max:9007199254740991,type:[{code:"ElementDefinitionConstraint"}]},mustSupport:{type:[{code:"boolean"}]},isModifier:{type:[{code:"boolean"}]},isModifierReason:{type:[{code:"string"}]},isSummary:{type:[{code:"boolean"}]},binding:{type:[{code:"ElementDefinitionBinding"}]},mapping:{max:9007199254740991,type:[{code:"ElementDefinitionMapping"}]}}},ElementDefinitionSlicingDiscriminator:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},path:{min:1,type:[{code:"string"}]}}},ElementDefinitionSlicing:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},discriminator:{max:9007199254740991,type:[{code:"ElementDefinitionSlicingDiscriminator"}]},description:{type:[{code:"string"}]},ordered:{type:[{code:"boolean"}]},rules:{min:1,type:[{code:"code"}]}}},ElementDefinitionBase:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},min:{min:1,type:[{code:"unsignedInt"}]},max:{min:1,type:[{code:"string"}]}}},ElementDefinitionType:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},code:{min:1,type:[{code:"uri"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition","http://hl7.org/fhir/StructureDefinition/ImplementationGuide"]}]},targetProfile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition","http://hl7.org/fhir/StructureDefinition/ImplementationGuide"]}]},aggregation:{max:9007199254740991,type:[{code:"code"}]},versioning:{type:[{code:"code"}]}}},ElementDefinitionExample:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},identity:{min:1,type:[{code:"id"}]},language:{type:[{code:"code"}]},map:{min:1,type:[{code:"string"}]},comment:{type:[{code:"string"}]}}},Expression:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},url:{min:1,type:[{code:"uri"}]},"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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},text:{type:[{code:"string"}]},family:{type:[{code:"string"}]},given:{max:9007199254740991,type:[{code:"string"}]},prefix:{max:9007199254740991,type:[{code:"string"}]},suffix:{max:9007199254740991,type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Identifier:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},versionId:{type:[{code:"id"}]},lastUpdated:{type:[{code:"instant"}]},source:{type:[{code:"uri"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},security:{max:9007199254740991,type:[{code:"Coding"}]},tag:{max:9007199254740991,type:[{code:"Coding"}]},project:{type:[{code:"uri"}]},author:{type:[{code:"Reference"}]},onBehalfOf:{type:[{code:"Reference"}]},account:{type:[{code:"Reference"}]},accounts:{max:9007199254740991,type:[{code:"Reference"}]},compartment:{max:9007199254740991,type:[{code:"Reference"}]},deleted:{type:[{code:"boolean"}]}}},Money:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},currency:{type:[{code:"code"}]}}},Narrative:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},status:{min:1,type:[{code:"code"}]},div:{min:1,type:[{code:"xhtml"}]}}},ParameterDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},start:{type:[{code:"dateTime"}]},end:{type:[{code:"dateTime"}]}}},Population:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"age[x]":{type:[{code:"Range"},{code:"CodeableConcept"}]},gender:{type:[{code:"CodeableConcept"}]},race:{type:[{code:"CodeableConcept"}]},physiologicalCondition:{type:[{code:"CodeableConcept"}]}}},ProdCharacteristic:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,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:9007199254740991,type:[{code:"string"}]},imprint:{max:9007199254740991,type:[{code:"string"}]},image:{max:9007199254740991,type:[{code:"Attachment"}]},scoring:{type:[{code:"CodeableConcept"}]}}},ProductShelfLife:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},identifier:{type:[{code:"Identifier"}]},type:{min:1,type:[{code:"CodeableConcept"}]},period:{min:1,type:[{code:"Quantity"}]},specialPrecautionsForStorage:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},Quantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Range:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},numerator:{type:[{code:"Quantity"}]},denominator:{type:[{code:"Quantity"}]}}},Reference:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},reference:{type:[{code:"string"}]},type:{type:[{code:"uri"}]},identifier:{type:[{code:"Identifier"}]},display:{type:[{code:"string"}]}}},RelatedArtifact:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"amount[x]":{type:[{code:"Quantity"},{code:"Range"},{code:"string"}]},amountType:{type:[{code:"CodeableConcept"}]},amountText:{type:[{code:"string"}]},referenceRange:{type:[{code:"SubstanceAmountReferenceRange"}]}}},SubstanceAmountReferenceRange:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},lowLimit:{type:[{code:"Quantity"}]},highLimit:{type:[{code:"Quantity"}]}}},Timing:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},event:{max:9007199254740991,type:[{code:"dateTime"}]},repeat:{type:[{code:"TimingRepeat"}]},code:{type:[{code:"CodeableConcept"}]}}},TimingRepeat:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:9007199254740991,type:[{code:"code"}]},timeOfDay:{max:9007199254740991,type:[{code:"time"}]},when:{max:9007199254740991,type:[{code:"code"}]},offset:{type:[{code:"unsignedInt"}]}}},TriggerDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:9007199254740991,type:[{code:"DataRequirement"}]},condition:{type:[{code:"Expression"}]}}},UsageContext:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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"]}]}}},MoneyQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},SimpleQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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"}]}}},IdentityProvider:{elements:{issuer:{type:[{code:"string"}]},audience:{type:[{code:"string"}]},jwksUrl:{type:[{code:"string"}]},authorizeUrl:{type:[{code:"string"}]},tokenUrl:{type:[{code:"string"}]},tokenAuthMethod:{type:[{code:"code"}]},userInfoUrl:{type:[{code:"string"}]},userInfoMode:{type:[{code:"code"}]},userInfoApiKey:{type:[{code:"string"}]},clientId:{type:[{code:"string"}]},clientSecret:{type:[{code:"string"}]},usePkce:{type:[{code:"boolean"}]},useSubject:{type:[{code:"boolean"}]},identitySource:{type:[{code:"code"}]},identityMappingMode:{type:[{code:"code"}]}}}};function Jr(t){return new Qr(t).parse()}var Ne=bi(Ei),Kr=Object.create(null),Ri=Object.create(null),_s={"http://hl7.org/fhir/StructureDefinition/MoneyQuantity":"MoneyQuantity","http://hl7.org/fhir/StructureDefinition/SimpleQuantity":"SimpleQuantity","http://hl7.org/fhir/uv/sql-on-fhir/StructureDefinition/ViewDefinition":"ViewDefinition"};function Ai(t){let e;return e=Ri[t],e||(e=Ri[t]=Object.create(null)),e}function Yr(t){let r=(Array.isArray(t)?t:t.entry?.map(n=>n.resource)??[]).filter(n=>n?.resourceType==="StructureDefinition");Di(r);for(let n of r)Xr(n)}function Xr(t){if(!t?.name)throw new Error("Failed loading StructureDefinition from bundle");if(t.resourceType!=="StructureDefinition")return;let e=Jr(t),r=_s[t.url],n,i;r?(n=Ne,i=r):t.url===`http://hl7.org/fhir/StructureDefinition/${t.type}`||t.url===`https://medplum.com/fhir/StructureDefinition/${t.type}`||t.type?.startsWith("http://")||t.type?.startsWith("https://")?(n=Ne,i=t.type):(n=Ai(t.url),i=t.type),n[i]=e;for(let o of e.innerTypes)o.parentType=e,n[o.name]=o;Kr[t.url]=e}function Oi(){return Ne}function Ii(t){return!!Ne[t]}function Le(t,e){if(e){let r=Ai(e)[t];if(r)return r}return Ne[t]}function ve(t,e){let r=Le(t,e);if(!r)throw new m(A("Unknown data type: "+t));return r}function Nt(t){let e=Ne[t];return e&&Zr(e)}function ki(t){return!!Kr[t]}function Mi(t){return Kr[t]}var Qr=class{constructor(e){c(this,"root");c(this,"elements");c(this,"elementIndex");c(this,"index");c(this,"resourceSchema");c(this,"slicingContext");c(this,"innerTypes");c(this,"backboneContext");if(!e.snapshot?.element||e.snapshot.element.length===0)throw new Error(`No snapshot defined for StructureDefinition '${e.name}'`);this.root=e.snapshot.element[0],this.elements=e.snapshot.element.slice(1),this.elementIndex=Object.create(null),this.index=0,this.resourceSchema={name:e.name,path:this.root.path,title:e.title,type:e.type,url:e.url,version:e.version,kind:e.kind,description:Us(e),elements:{},constraints:this.parseElementDefinition(this.root).constraints,innerTypes:[],summaryProperties:new Set,mandatoryProperties:new Set},this.innerTypes=[]}parse(){let e=this.next();for(;e;){if(e.sliceName)this.parseSliceStart(e);else if(e.id?.includes(":")){if(this.slicingContext?.current){let r=Gr(e,this.slicingContext.path);this.slicingContext.current.elements[r]=this.parseElementDefinition(e)}}else{let r=this.parseElementDefinition(e);this.checkFieldEnter(e,r);let n=this.backboneContext;for(;n;){if(e.path?.startsWith(n.path+".")){n.type.elements[Gr(e,n.path)]=r;break}n=n.parent}if(!n){let i=Gr(e,this.root.path);e.isSummary&&this.resourceSchema.summaryProperties?.add(i.replace("[x]","")),r.min>0&&this.resourceSchema.mandatoryProperties?.add(i.replace("[x]","")),this.resourceSchema.elements[i]=r}this.checkFieldExit(e)}e=this.next()}return this.checkFieldExit(),this.innerTypes.length>0&&(this.resourceSchema.innerTypes=this.innerTypes),this.resourceSchema}checkFieldEnter(e,r){this.isInnerType(e)&&this.enterInnerType(e),this.slicingContext&&!Ke(this.slicingContext.path,e?.path)&&(this.slicingContext=void 0),e.slicing&&!this.slicingContext&&this.enterSlice(e,r)}enterInnerType(e){for(;this.backboneContext&&!Ke(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;let r=zr(e);this.backboneContext={type:{name:r,type:r,path:e.path,title:e.label,description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path,parent:Ke(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,r){Fs(e)&&!this.peek()?.sliceName||(r.slicing={discriminator:(e.slicing?.discriminator??[]).map(n=>{if(n.type!=="value"&&n.type!=="pattern"&&n.type!=="type")throw new Error(`Unsupported slicing discriminator type: ${n.type}`);return{path:n.path,type:n.type}}),slices:[],ordered:e.slicing?.ordered??!1,rule:e.slicing?.rules},this.slicingContext={field:r.slicing,path:e.path??""})}checkFieldExit(e=void 0){if(this.backboneContext&&!Ke(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!Ke(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),this.backboneContext=void 0}next(){let e=this.peek();if(e)return this.index++,e}peek(){let e=this.elements[this.index];if(e){if(this.elementIndex[e.path??""]=e,e.contentReference){let r=e.contentReference.slice(e.contentReference.indexOf("#")+1),n=this.elementIndex[r];return n?{...n,id:e.id,path:e.path,min:e.min??n.min,max:e.max??n.max,base:{path:n.base?.path??r,min:e.base?.min??n.base?.min??n.min,max:e.base?.max??n.base?.max??n.max},contentReference:e.contentReference,definition:e.definition}:void 0}return e}}isInnerType(e){let r=this.peek();return!!(Ke(e?.path,r?.path)&&e.type?.some(n=>["BackboneElement","Element"].includes(n.code)))}parseSliceStart(e){if(!this.slicingContext)throw new Error(`Invalid slice start before discriminator: ${e.sliceName} (${e.id})`);this.slicingContext.current={...this.parseElementDefinition(e),name:e.sliceName??"",definition:e.definition,elements:{}},this.slicingContext.field.slices.push(this.slicingContext.current)}parseElementDefinitionType(e){return(e.type??[]).map(r=>{let n;return(r.code==="BackboneElement"||r.code==="Element")&&(n=zr(e)),n||(n=de(r,"http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type")?.valueUrl),n||(n=r.code??""),{code:n,targetProfile:r.targetProfile,profile:r.profile}})}parseElementDefinition(e){let r=Pi(e.max),n=e.base?.max?Pi(e.base.max):r,i={type:"ElementDefinition",value:e};return{description:e.definition||"",path:e.path||e.base?.path||"",min:e.min??0,max:r,isArray:n>1,constraints:(e.constraint??[]).map(o=>({key:o.key??"",severity:o.severity??"error",expression:o.expression??"",description:o.human??""})),type:this.parseElementDefinitionType(e),fixed:wi(_(i,"fixed[x]")),pattern:wi(_(i,"pattern[x]")),binding:e.binding}}};function np(t,e){if(!t)return;let r=[];for(let n of e){r.push("_"+n);let i=Ne[t.resourceType].elements[n+"[x]"];i&&r.push(...i.type.map(o=>n+B(o.code)))}for(let n of Object.getOwnPropertyNames(t))!e.includes(n)&&!r.includes(n)&&!Ns.includes(n)&&Object.defineProperty(t,n,{enumerable:!1,writable:!1,value:void 0});return t.meta={...t.meta,tag:t.meta?.tag?t.meta.tag.concat(Ci):[Ci]},t}var Ci={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},Ns=["resourceType","id","meta"];function Pi(t){return t==="*"?Number.POSITIVE_INFINITY:Number.parseInt(t,10)}function Gr(t,e=""){return Ls(t.path,e)}function Ls(t,e){return t?e&&t.startsWith(e)?t.substring(e.length+1):t:""}function Ke(t,e){return!t||!e?!1:e.startsWith(t+".")||e===t}function wi(t){return Array.isArray(t)&&t.length>0?t[0]:O(t)?void 0:t}function Fs(t){let e=t.slicing?.discriminator;return!!(t.type?.some(r=>r.code==="Extension")&&e?.length===1&&e[0].type==="value"&&e[0].path==="url")}function Us(t){let e=t.description;return e?.startsWith(`Base StructureDefinition for ${t.name} Type: `)&&(e=e.substring(`Base StructureDefinition for ${t.name} Type: `.length)),e}function rn(t,e,r){new en(t,e,r).crawl()}function lp(t,e,r){return new tn(t,e,r).crawl()}var en=class{constructor(e,r,n){c(this,"root");c(this,"visitor");c(this,"schema");c(this,"initialPath");c(this,"excludeMissingProperties");this.root=e,this.visitor=r,this.schema=n?.schema??ve(e.type),this.initialPath=n?.initialPath??this.schema.path,this.excludeMissingProperties=n?.skipMissingProperties}crawl(){this.crawlObject({...this.root,path:this.initialPath},this.schema,this.initialPath)}crawlObject(e,r,n){let i=D(e.value);if(i&&this.visitor.onEnterResource&&this.visitor.onEnterResource(n,e,r),this.visitor.onEnterObject&&this.visitor.onEnterObject(n,e,r),this.excludeMissingProperties)for(let o of Object.keys(e.value))this.crawlProperty(e,o,r,`${n}.${o}`);else for(let o of Object.keys(r.elements))this.crawlProperty(e,o,r,`${n}.${o}`);this.visitor.onExitObject&&this.visitor.onExitObject(n,e,r),i&&this.visitor.onExitResource&&this.visitor.onExitResource(n,e,r)}crawlProperty(e,r,n,i){let o=Ye(e,r,{withPath:!0});this.visitor.visitProperty&&this.visitor.visitProperty(e,r,i,o,n);for(let s of o)for(let a of te(s))this.crawlPropertyValue(a,i,n)}crawlPropertyValue(e,r,n){if(!Lt(e.type)){let i=n.innerTypes?.find(o=>o.name===e.type)??ve(e.type);this.crawlObject(e,i,r)}}},tn=class{constructor(e,r,n){c(this,"root");c(this,"visitor");c(this,"schema");c(this,"initialPath");c(this,"excludeMissingProperties");this.root=e,this.visitor=r,this.schema=n?.schema??ve(e.type),this.initialPath=n?.initialPath??this.schema.path,this.excludeMissingProperties=n?.skipMissingProperties}async crawl(){return this.crawlObject({...this.root,path:this.initialPath},this.schema,this.initialPath)}async crawlObject(e,r,n){let i=D(e.value);if(i&&this.visitor.onEnterResource&&await this.visitor.onEnterResource(n,e,r),this.visitor.onEnterObject&&await this.visitor.onEnterObject(n,e,r),this.excludeMissingProperties&&e.value)for(let o of Object.keys(e.value))await this.crawlProperty(e,o,r,`${n}.${o}`);else for(let o of Object.keys(r.elements))await this.crawlProperty(e,o,r,`${n}.${o}`);this.visitor.onExitObject&&await this.visitor.onExitObject(n,e,r),i&&this.visitor.onExitResource&&await this.visitor.onExitResource(n,e,r)}async crawlProperty(e,r,n,i){let o=Ye(e,r,{withPath:!0});if(this.visitor.visitPropertyAsync)for(let s of o)await this.visitor.visitPropertyAsync(e,r,i,s,n);for(let s of o)for(let a of te(s))await this.crawlPropertyValue(a,i,n)}async crawlPropertyValue(e,r,n){if(!Lt(e.type)){let i=n.innerTypes?.find(o=>o.name===e.type)??ve(e.type);await this.crawlObject(e,i,r)}}};function Ye(t,e,r){if(t===void 0)return[void 0];if(e==="$this")return[t];let n=r?.withPath?nn:_,[i,...o]=e.split("."),s=[n(t,i,r)];for(let a of o){let u=[];for(let d of s)if(Array.isArray(d))for(let l of d)u.push(n(l,a,r));else(r?.withPath&&d?.value!==void 0||!r?.withPath&&d!==void 0)&&u.push(n(d,a,r));s=u}return s}function nn(t,e,r){let n=t.path;return Bs(_(t,e,r),n,e)}function Bs(t,e,r){let n=e?e+".":"";return t===void 0?{type:"undefined",value:void 0,path:`${n}${r}`}:Array.isArray(t)?t.map((i,o)=>({...i,path:`${n}${r}[${o}]`})):{...t,path:`${n}${r}`}}function Xe(t){if(t[0]===t[0].toUpperCase()){let e=t.indexOf(".");if(e===-1)return"";t=t.slice(e+1)}return`.${t}`.replaceAll(".","/").replaceAll(/\[(\d+)]/g,(e,r)=>`/${r}`)}var on={base64Binary:"string",boolean:"boolean",canonical:"string",code:"string",date:"string",dateTime:"string",decimal:"number",id:"string",instant:"string",integer:"number",integer64:"string",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"},qs=new ee(1e3);function Lt(t){return t==="undefined"||t in on}var Ft={canonical:/^\S*$/,code:/^[^\s]+( [^\s]+)*$/,date:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2]\d|3[0-1]))?)?$/,dateTime:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2]\d|3[0-1])(T([01]\d|2[0-3])(:[0-5]\d:([0-5]\d|60)(\.\d{1,9})?)?)?)?(Z|[+-]((0\d|1[0-3]):[0-5]\d|14:00)?)?)?$/,id:/^[A-Za-z0-9\-.]{1,64}$/,instant:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\d|3[0-1])T([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?(Z|[+-]((0\d|1[0-3]):[0-5]\d|14:00))$/,markdown:/^[\r\n\t\u0020-\uFFFF]+$/,oid:/^urn:oid:[0-2](\.(0|[1-9]\d*))+$/,string:/^[\r\n\t\u0020-\uFFFF]+$/,time:/^([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?$/,uri:/^\S*$/,url:/^\S*$/,uuid:/^urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,xhtml:/.*/},Ws={"ele-1":!0,"dom-3":!0,"org-1":!0,"sdf-19":!0};function Rp(t,e){if(!Nt(t.resourceType))throw new m(T("Invalid resource type"));return $s(E(t),e)}function $s(t,e){return new sn(t,e).validate()}var sn=class{constructor(e,r){c(this,"issues");c(this,"root");c(this,"resourceStack");c(this,"schema");c(this,"base64BinaryMaxBytes");c(this,"collect");this.issues=[],this.root=e,this.resourceStack=[],D(e.value)&&this.resourceStack.push(e.value),r?.profile?this.schema=Jr(r.profile):this.schema=ve(e.type),this.base64BinaryMaxBytes=r?.base64BinaryMaxBytes??1*1024*1024,this.collect=r?.collect}currentResource(){return this.resourceStack.at(-1)}validate(){an(this.root.value,this.schema.path,this.issues),this.constraintsCheck({...this.root,path:this.schema.path},this.schema),rn(this.root,this,{schema:this.schema,initialPath:this.schema.path});for(let e of this.issues)if(e.severity==="error")throw new m({resourceType:"OperationOutcome",issue:this.issues});return this.issues}onExitObject(e,r,n){this.checkAdditionalProperties(r,n.elements,r.path)}onEnterResource(e,r){this.resourceStack.push(r.value)}onExitResource(){this.resourceStack.pop()}visitProperty(e,r,n,i,o){let s=o.elements[r];if(!s)throw new Error(`Missing element validation schema for ${r}`);for(let a of i){if(!this.checkPresence(a,s,n))return;let u;if(s.isArray){if(!Array.isArray(a)){this.issues.push(R(n,"Expected array of values for property"));return}u=a}else{if(Array.isArray(a)){this.issues.push(R(n,"Expected single value for property"));return}u=[a]}(u.length<s.min||u.length>s.max)&&this.issues.push(R(s.path,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${u.length}`)),Gs(a,s)||this.issues.push(R(n,"Value did not match expected pattern"));let d=s.slicing?Object.fromEntries(s.slicing.slices.map(l=>[l.name,0])):void 0;for(let l of u){this.constraintsCheck(l,s),this.referenceTypeCheck(l,s),this.checkPropertyValue(l),this.collectValue(l,s);let f=Qs(l,s.slicing);f&&d&&(d[f]+=1)}this.validateSlices(s.slicing?.slices,d,n)}}checkPresence(e,r,n){return!Array.isArray(e)&&e.value===void 0?(r.min>0&&this.issues.push(R(e.path,"Missing required property")),!1):O(e)?(this.issues.push(R(n,"Invalid empty value")),!1):!0}checkPropertyValue(e){Lt(e.type)?this.validatePrimitiveType(e):O(e.value)&&this.issues.push(R(e.path,"Invalid empty non-primitive value"))}validateSlices(e,r,n){if(!(!e||!r))for(let i of e){let o=r[i.name];(o<i.min||o>i.max)&&this.issues.push(R(n,`Incorrect number of values provided for slice '${i.name}': expected ${i.min}..${Number.isFinite(i.max)?i.max:"*"}, but found ${o}`))}}checkAdditionalProperties(e,r,n){let i=e.value;if(!i)return;let o={};for(let s of Object.keys(i)){if(s==="resourceType")continue;let a=Hs(e,s,r);if(a){let u,d;a.startsWith("_")?(u=a.slice(1),d=s.slice(1)):(u="_"+a,d="_"+s),u in o&&o[u]!==d&&this.issues.push(_e("warning","structure",`Type of primitive extension does not match the type of property "${a.startsWith("_")?a.slice(1):a}"`,a)),o[a]&&this.issues.push(_e("warning","structure",`Conflicting choice of type properties: "${s}", "${o[a]}"`,s)),o[a]=s;continue}!(s in r)&&!(s.startsWith("_")&&s.slice(1)in r)&&i[s]!==void 0&&this.issues.push(R(`${n}.${s}`,`Invalid additional property "${s}"`))}}constraintsCheck(e,r){let n=r.constraints;for(let i of n??v)if(i.severity==="error"&&!(i.key in Ws)&&!this.isExpressionTrue(i,e)){this.issues.push(Ti(e.path,i));return}}referenceTypeCheck(e,r){if(e.type!=="Reference")return;let n=e.value;if(!Y(n)||n.reference.startsWith("#"))return;let i=n.reference.includes("?")?n.reference.split("?")[0]:n.reference.split("/")[0];if(!i)return;let o=r.type.find(f=>f.code==="Reference")?.targetProfile;if(!o)return;let s=kt+"/fhir/StructureDefinition/",a=s+"Resource",u=s+i,d="https://medplum.com/fhir/StructureDefinition/",l=d+i;for(let f of o)if(f===a||f===u||f===l||!f.startsWith(s)&&!f.startsWith(d))return;this.issues.push(_e("warning","structure",`Invalid reference: got "${i}", expected "${o.join('", "')}"`,e.path))}collectValue(e,r){r.binding?.valueSet&&r.binding.strength==="required"&&Js(e.type)&&this.appendToken(r.binding.valueSet,e)}appendToken(e,r){if(!this.collect?.tokens)return;let n=this.collect.tokens[e];if(!n){let i=Object.keys(this.collect.tokens);for(let o of i)o.startsWith(e+"|")&&(n=this.collect.tokens[o])}for(let i of n??v)if(i.path===r.path)return;this.collect.tokens[e]=Se(n,r)}isExpressionTrue(e,r){let n={"%context":r,"%ucum":E(ai)},i=this.currentResource();i&&(n["%resource"]=E(i)),D(this.root.value)&&(n["%rootResource"]=this.root);try{let o=k(e.expression,[r],n,qs);return o.length===1&&o[0].value===!0}catch(o){return this.issues.push(Si(r.path,"Error evaluating invariant expression",o,{fhirpath:e.expression})),!1}}validatePrimitiveType(e){let[r,n]=zs(e),i=e.path;if(r){let{type:o,value:s}=r;if(!(o in on)){this.issues.push(R(i,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=on[o];if(typeof s!==a){s!==null&&this.issues.push(R(i,`Invalid JSON type: expected ${a}, but got ${typeof s}`));return}o==="base64Binary"?this.validateBase64Binary(s,i):a==="string"?this.validateString(s,o,i):a==="number"&&this.validateNumber(s,o,i)}n&&rn(n,this,{schema:ve("Element"),initialPath:i})}validateBase64Binary(e,r){if(!Ks(e)){this.issues.push(R(r,"Invalid base64Binary format"));return}let n=0;e.endsWith("==")?n=2:e.endsWith("=")&&(n=1),Math.max(0,Math.floor(e.length*3/4)-n)>this.base64BinaryMaxBytes&&this.issues.push(R(r,`base64Binary exceeds ${this.base64BinaryMaxBytes} bytes`))}validateString(e,r,n){if(!e.trim()){this.issues.push(R(n,"String must contain non-whitespace content"));return}if(e.length>1024*1024){this.issues.push(R(n,"String cannot be larger than 1 MB"));return}let i=Ft[r];i&&!i.exec(e)&&this.issues.push(R(n,"Invalid "+r+" format"))}validateNumber(e,r,n){Number.isNaN(e)||!Number.isFinite(e)?this.issues.push(R(n,"Invalid numeric value")):js(r)&&!Number.isInteger(e)?this.issues.push(R(n,"Expected number to be an integer")):r===p.positiveInt&&e<=0?this.issues.push(R(n,"Expected number to be positive")):r===p.unsignedInt&&e<0&&this.issues.push(R(n,"Expected number to be non-negative"))}};function js(t){return t===p.integer||t===p.positiveInt||t===p.unsignedInt}function Hs(t,e,r){let n="";e.startsWith("_")&&(e=e.slice(1),n="_");let i=e.split(/(?=[A-Z])/g),o="";for(let s of i){o+=s;let a=o+"[x]";if(r[a])return _(t,o)?n+a:void 0}}function an(t,e,r){for(let[n,i]of Object.entries(t)){let o=`${e}.${n}`,s=n.startsWith("_")?n.slice(1):`_${n}`;if(i===null)r.push(R(o,"Invalid null value"));else if(Array.isArray(i))for(let a=0;a<i.length;a++)i[a]===void 0?r.push(R(`${o}[${a}]`,"Invalid undefined value")):i[a]===null&&!t[s]?.[a]?r.push(R(`${o}[${a}]`,"Invalid null value")):i[a]&&an(i[a],`${o}[${a}]`,r);else typeof i=="object"&&an(i,o,r)}}function Gs(t,e){let r=Array.isArray(t)?t.map(n=>({type:n.type,value:n.value})):{type:t.type,value:t.value};return!(e.pattern&&!dt(r,e.pattern)||e.fixed&&!Te(r,e.fixed))}function cn(t,e,r,n){if(Array.isArray(t))return!1;let i;e.path==="$this"?i=r:i=(n??r.elements)[e.path];let o=r.type;switch(e.type){case"value":case"pattern":if(!t||!i)return!1;if(i.pattern)return dt(t,i.pattern);if(i.fixed)return Te(t,i.fixed);if(i.binding?.strength==="required"&&i.binding.valueSet)return!0;break;case"type":return!t||!o?.length?!1:o.some(s=>s.code===t.type)}return!1}function Qs(t,e){for(let r of e?.slices??v)if(e?.discriminator?.every(n=>te(Ye(t,n.path))?.some(i=>cn(i,n,r))))return r.name}function zs(t){if(typeof t.value!="object"||!t.value)return[t,void 0];let e=t.value.valueOf();if(e===t.value)return[void 0,{type:"Element",value:t.value}];let r=new Set(Object.keys(e)),n=Object.entries(t.value).filter(([o,s])=>!r.has(o)),i=n.length>0?Object.fromEntries(n):void 0;return[{type:t.type,value:e},{type:"Element",value:i}]}function Js(t){switch(t){case"CodeableConcept":case"Coding":case"code":case"Quantity":case"string":case"uri":return!0;default:return!1}}function Ks(t){if(t.length===0)return!1;let e=0;t.endsWith("==")?e=2:t.endsWith("=")&&(e=1);let r=t.length-e;if(r<0||(e+r)%4!==0)return!1;let n=e>0?t.slice(0,-e):t;return/^[A-Za-z\d+/]+$/.test(n)}function y(t){return[{type:p.boolean,value:t}]}function E(t){return t==null?{type:"undefined",value:void 0}:Number.isSafeInteger(t)?{type:p.integer,value:t}:typeof t=="number"?{type:p.decimal,value:t}:typeof t=="boolean"?{type:p.boolean,value:t}:typeof t=="string"?{type:p.string,value:t}:N(t)?{type:p.Quantity,value:t}:D(t)?{type:t.resourceType,value:t}:pn(t)?{type:p.CodeableConcept,value:t}:Wt(t)?{type:p.Coding,value:t}:{type:p.BackboneElement,value:t}}function H(t){return t.length===0?!1:!!t[0].value}function L(t,e){if(t.length!==0){if(t.length===1&&(!e||t[0].type===e))return t[0];{let r=e?` of type ${e}`:"";throw new Error(`Expected singleton${r}, but found ${JSON.stringify(t)}`)}}}function _(t,e,r){if(!t.value)return;let n=$t(t.type,e,r?.profileUrl);return n?Ys(t,e,n):Xs(t,e)}function Ys(t,e,r){let n=t.value,i=r.type;if(!i||i.length===0)return;let o,s="undefined",a,u=r.path.lastIndexOf("."),d=r.path.substring(u+1),l=d,f=!1;d.endsWith("[x]")&&(l=d.substring(0,d.length-3),f=!0);for(let h of i){let b=l;if(f&&(b+=B(h.code)),o=n[b],a=n["_"+b],o!==void 0||a!==void 0){s=h.code;break}}if(a)if(Array.isArray(o)){o=o.slice();for(let h=0;h<Math.max(o.length,a.length);h++)o[h]=un(o[h],a[h])}else if(!o&&Array.isArray(a)){o=a.slice();for(let h=0;h<a.length;h++)o[h]=un(void 0,a[h])}else o=un(o,a);if(!O(o))return(s==="Element"||s==="BackboneElement")&&(s=r.type[0].code),Array.isArray(o)?o.map(h=>Vi(h,s)):Vi(o,s)}function Vi(t,e){return e==="Resource"&&D(t)&&(e=t.resourceType),{type:e,value:t}}function Xs(t,e){let r=t.value;if(!r||typeof r!="object")return;let n;if(e in r){let i=r[e];Array.isArray(i)?n=i.map(E):n=E(i)}else{let i=e.endsWith("[x]")?e.substring(0,e.length-3):e;for(let o of Object.values(p)){let s=i+B(o);if(s in r){let a=r[s];Array.isArray(a)?n=a.map(u=>({type:o,value:u})):n={type:o,value:a};break}}}if(Array.isArray(n)){if(n.length===0||O(n[0]))return}else if(O(n))return;return n}function Bt(t){let e=[];for(let r of t){let n=!1;for(let i of e)if(H(lt(r,i))){n=!0;break}n||e.push(r)}return e}function Li(t){return y(!H(t))}function Fi(t,e){return t.length===0||e.length===0?[]:t.length!==e.length?y(!1):y(t.every((r,n)=>H(lt(r,e[n]))))}function Ui(t,e){return t.length===0||e.length===0?[]:t.length!==e.length?y(!0):y(t.some((r,n)=>!H(lt(r,e[n]))))}function lt(t,e){let r=t.value?.valueOf(),n=e.value?.valueOf();return typeof r=="number"&&typeof n=="number"?y(Math.abs(r-n)<1e-8):N(r)&&N(n)?y(Wi(r,n)):y(typeof r=="object"&&typeof n=="object"?ln(t,e):r===n)}function dn(t,e){return t.length===0&&e.length===0?y(!0):t.length!==e.length?y(!1):(t.sort(_i),e.sort(_i),y(t.every((r,n)=>H(Zs(r,e[n])))))}function Zs(t,e){let{type:r,value:n}=t,{type:i,value:o}=e,s=n?.valueOf(),a=o?.valueOf();return typeof s=="number"&&typeof a=="number"?y(Math.abs(s-a)<.01):N(s)&&N(a)?y(Wi(s,a)):y(r==="Coding"&&i==="Coding"?typeof s!="object"||typeof a!="object"?!1:s.code===a.code&&s.system===a.system:typeof s=="object"&&typeof a=="object"?ln({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function _i(t,e){let r=t.value?.valueOf(),n=e.value?.valueOf();return typeof r=="number"&&typeof n=="number"?r-n:typeof r=="string"&&typeof n=="string"?r.localeCompare(n):0}function et(t,e){let{value:r}=t;if(r==null)return!1;let n=e;switch(n.startsWith("System.")&&(n=n.substring(7)),n.startsWith("FHIR.")&&(n=n.substring(5)),n){case"Boolean":return typeof r=="boolean";case"Decimal":case"Integer":return typeof r=="number";case"Date":return Bi(r);case"DateTime":return Ze(r);case"Time":return typeof r=="string"&&!!/^T\d/.exec(r);case"Period":return qi(r);case"Quantity":return N(r);default:return t.type===n||typeof r=="object"&&r?.resourceType===n}}function Bi(t){return typeof t=="string"&&!!Ft.date.exec(t)}function Ze(t){return typeof t=="string"&&!!Ft.dateTime.exec(t)}function qi(t){return!!(t&&typeof t=="object"&&("start"in t&&Ze(t.start)||"end"in t&&Ze(t.end)))}function qt(t){if(Bi(t)||Ze(t))return{start:Ut(t,"0000-01-01T00:00:00.000"),end:Ut(t,"xxxx-12-31T23:59:59.999")};if(qi(t))return{start:t.start?Ut(t.start,"0000-01-01T00:00:00.000"):void 0,end:t.end?Ut(t.end,"xxxx-12-31T23:59:59.999"):void 0}}function Ut(t,e){let r="Z",n=Math.max(t.indexOf("+",10),t.indexOf("-",10));n>-1?(r=t.substring(n),t=t.substring(0,n)):t.endsWith("Z")&&(t=t.substring(0,t.length-1));let i=t+e.substring(t.length)+r;return new Date(i).toISOString()}function N(t){return!!(t&&typeof t=="object"&&"value"in t&&typeof t.value=="number")}function Wi(t,e){return Math.abs(t.value-e.value)<.01&&(t.unit===e.unit||t.code===e.code||t.unit===e.code||t.code===e.unit)}function ln(t,e){let r=Object.keys(t),n=Object.keys(e);if(r.length!==n.length)return!1;for(let i of r){let o=t[i],s=e[i];if(Ni(o)&&Ni(s)){if(!ln(o,s))return!1}else if(o!==s)return!1}return!0}function Ni(t){return t!==null&&typeof t=="object"}function un(t,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return ea(t??{},e)}return t}function ea(t,e){return delete e.__proto__,delete e.constructor,Object.assign(t,e)}function pt(t,e){return D(t,e)&&"id"in t&&typeof t.id=="string"}function ne(t){let e=I(t)??"undefined/undefined",r=ra(t);return r===e?{reference:e}:{reference:e,display:r}}function I(t){if(Y(t))return t.reference;if(pt(t))return`${t.resourceType}/${t.id}`}function X(t){if(t)return Y(t)?t.reference.split("/")[1]:t.id}function Lp(t){if(t?.reference===void 0)throw new m(T("Reference missing reference property."));let[e,r]=t.reference.split("/");if(e===""||r===""||r===void 0)throw new m(T("Unable to parse reference string."));return[e,r]}function mn(t){if(t)if(t.accounts&&t.account){let e=t.accounts;return e.some(r=>r.reference===t.account?.reference)?e:[t.account,...e]}else return te(t.accounts??t.account)}function ta(t){return t.resourceType==="Patient"||t.resourceType==="Practitioner"||t.resourceType==="RelatedPerson"}function ra(t){if(ta(t)){let e=na(t);if(e)return e}if(t.resourceType==="Appointment"&&t.serviceType?.[0])return be(t.serviceType[0]);if(t.resourceType==="Device"){let e=ia(t);if(e)return e}if(t.resourceType==="DocumentReference"){if(t.description)return t.description;if(t.type)return be(t.type)}if(t.resourceType==="MedicationRequest"&&t.medicationCodeableConcept)return be(t.medicationCodeableConcept);if(t.resourceType==="MedicationStatement"&&t.medicationCodeableConcept)return be(t.medicationCodeableConcept);if(t.resourceType==="Slot"&&(t.start||t.end))return`${tt(t.start)} - ${tt(t.end)}`;if(t.resourceType==="Subscription"&&t.criteria)return t.criteria;if(t.resourceType==="User"&&t.email)return t.email;if("name"in t&&t.name&&typeof t.name=="string")return t.name;if("code"in t&&t.code){let e=t.code;if(Array.isArray(e)&&(e=e[0]),pn(e))return be(e);if(pa(e))return e.text}return I(t)??""}function na(t){let e=t.name;if(e&&e.length>0)return mt(e[0])}function ia(t){let e=t.deviceName;if(e&&e.length>0)return e[0].name}function Fp(t){if(!("photo"in t))return;let e=t.photo;if(e)if(Array.isArray(e))for(let r of e){let n=$i(r);if(n)return n}else return $i(e)}function $i(t){if(t.url&&t.contentType?.startsWith("image/"))return t.url}function Up(t){return t?new Date(t):void 0}function jt(t,e){let r=new Date(t);r.setUTCHours(0,0,0,0);let n=e?new Date(e):new Date;n.setUTCHours(0,0,0,0);let i=r.getUTCFullYear(),o=r.getUTCMonth(),s=r.getUTCDate(),a=n.getUTCFullYear(),u=n.getUTCMonth(),d=n.getUTCDate(),l=a-i;(u<o||u===o&&d<s)&&l--;let f=a*12+u-(i*12+o);d<s&&f--;let h=Math.floor((n.getTime()-r.getTime())/(1e3*60*60*24));return{years:l,months:f,days:h}}function Bp(t,e){let{years:r,months:n,days:i}=jt(t,e);return r>=2?r.toString().padStart(3,"0")+"Y":n>=1?n.toString().padStart(3,"0")+"M":i.toString().padStart(3,"0")+"D"}function qp(t){let e={};return ji(t.item,e),e}function ji(t,e){for(let r of t??v)r.linkId&&r.answer&&r.answer.length>0&&(e[r.linkId]=r.answer[0]),ji(r.item,e)}function Wp(t){let e={};return Hi(t.item,e),e}function Hi(t,e){for(let r of t??v)r.linkId&&r.answer&&r.answer.length>0&&(e[r.linkId]?e[r.linkId]=[...e[r.linkId],...r.answer]:e[r.linkId]=r.answer),Hi(r.item,e)}function hn(t,e){let r=t.identifier;if(!r)return;let n=Array.isArray(r)?r:[r];for(let i of n)if(i.system===e)return i.value}var $p={system:ci,code:"MR"};function jp(t,e){let r=t.identifier;return!r||!Wt(e)||!e.system?void 0:(Array.isArray(r)?r:[r]).find(i=>i.type?.coding?.some(o=>o.system===e.system&&o.code===e.code))?.value}function Hp(t,e,r,n){let i={system:e,value:r};n?.use&&(i.use=n.use);let o=t.identifier;if(!o){t.identifier=[i];return}for(let s of o)if(s.system===e){Object.assign(s,i);return}o.push(i)}function Fe(t,...e){let r=de(t,...e);if(!r)return;let n=_({type:"Extension",value:r},"value[x]");if(n)return Array.isArray(n)?n[0].value:n.value}function de(t,...e){let r=t;for(let n=0;n<e.length&&r;n++)r=r?.extension?.find(i=>i.url===e[n]);return r}function Ht(t,e){let[r,...n]=te(e);if(!r)return[];let i=t?.extension?.filter(o=>o.url===r)??[];return n.length>0?i.flatMap(o=>Ht(o,n)):i}function Gt(t,e){let r=gn(t);return JSON.stringify(r,null,e?2:void 0)??""}function gn(t){if(!(t==null||t===""))return typeof t=="object"?Array.isArray(t)?oa(t):sa(t):t}function oa(t){let e=t.length;if(e===0)return;let r,n=0;for(let i=0;i<e;i++){let o=t[i],s=gn(o);s!==o&&!r&&(r=Array.from(t)),s===void 0?r&&(r[i]=null):(r&&(r[i]=s),n++)}if(n!==0)return r??t}function sa(t){let e,r=0;for(let n in t){let i=t[n],o=gn(i);o!==i&&!e&&(e={...t}),o===void 0?e&&delete e[n]:(e&&(e[n]=o),r++)}if(r!==0)return e??t}function O(t){if(t==null)return!0;let e=typeof t;return e==="string"||e==="object"?!le(t):!1}function le(t){if(t==null)return!1;let e=typeof t;return e==="string"&&t!==""||e==="object"&&("length"in t&&t.length>0||Object.keys(t).length>0)}function Gp(t){if(!t)return;let e=t.length-1;for(;e>=0&&O(t[e]);)e--;return e>=0?t.slice(0,e+1):void 0}function Te(t,e,r){return t===e||O(t)&&O(e)?!0:O(t)||O(e)?!1:Array.isArray(t)&&Array.isArray(e)?aa(t,e):Array.isArray(t)||Array.isArray(e)?!1:C(t)&&C(e)?ca(t,e,r):(C(t)||C(e),!1)}function aa(t,e){if(t.length!==e.length)return!1;for(let r=0;r<t.length;r++)if(!Te(t[r],e[r]))return!1;return!0}function ca(t,e,r){let n=new Set;for(let i of Object.keys(t))n.add(i);for(let i of Object.keys(e))n.add(i);r==="meta"&&(n.delete("versionId"),n.delete("lastUpdated"),n.delete("author"));for(let i of n){let o=t[i],s=e[i];if(!Te(o,s,i))return!1}return!0}function dt(t,e){return O(t)?!0:O(e)?!1:Array.isArray(t)&&Array.isArray(e)?ua(t,e):Array.isArray(t)||Array.isArray(e)?!1:C(t)&&C(e)?da(t,e):C(t)||C(e)?!1:t===e}function ua(t,e){return e.every(r=>t.some(n=>dt(n,r)))}function da(t,e){return Object.entries(e).every(([r,n])=>r in t&&dt(t[r],n))}function pe(t){return t===void 0?t:JSON.parse(JSON.stringify(t))}function Qp(t){return/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i.test(t)}function C(t){return t!==null&&typeof t=="object"}function zp(t){return t.every(fe)}function fe(t){return typeof t=="string"}function Wt(t){return C(t)&&"code"in t&&typeof t.code=="string"}function pn(t){return C(t)&&"coding"in t&&Array.isArray(t.coding)&&t.coding.every(Wt)}function Jp(t,e){for(let r of t??v)for(let n of r.coding??v)if(n.system===e)return n.code}function la(t,e){let[r,n]=rt(e,"|",2);return n===void 0?t.code===e:r===""?t.system===void 0&&t.code===n:n===""?t.system===r:t.system===r&&t.code===n}function Kp(t,e){return(t.coding??v).some(r=>la(r,e))}function pa(t){return C(t)&&"text"in t&&typeof t.text=="string"}var Gi=[];for(let t=0;t<256;t++)Gi.push(t.toString(16).padStart(2,"0"));function Qi(t){let e=Ji(t),r=new Uint8Array(e),n=new Array(r.length);for(let i=0;i<r.length;i++)n[i]=Gi[r[i]];return n.join("")}function zi(t){let e=Ji(t),r=new Uint8Array(e),n=new Array(r.length);for(let i=0;i<r.length;i++)n[i]=String.fromCodePoint(r[i]);return window.btoa(n.join(""))}function Ji(t){return ArrayBuffer.isView(t)?t.buffer:t}function B(t){return t?t.charAt(0).toUpperCase()+t.substring(1):""}function Yp(t){return t===t.toLowerCase()&&t!==t.toUpperCase()}function yn(t){return t.length>0&&t.startsWith(t[0].toUpperCase())}function Ee(t,e){let r=t+".";if(e.startsWith(r))return e.slice(r.length)}function fn(t,e){return t.coding?.find(r=>r.system===e)?.code}function Xp(t,e,r){t.coding??=[];let n=t.coding.find(i=>i.system===e);n?n.code=r:t.coding.push({system:e,code:r})}function Zp(t,e,r,n){return t.qualifiedInterval?.find(i=>Ki(i,e)&&ga(i,r,t.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function ef(t,e,r){return fa(t,e,r)[0]}function fa(t,e,r){return t.qualifiedInterval?.filter(n=>Ki(n,e)&&(!r||r.includes(n.condition)))??[]}function Ki(t,e){return ma(t,e)&&ha(t,e)}function ma(t,e){return!t.gender||t.gender===e.gender}function ha(t,e){return!t.age||Yi(jt(e.birthDate).years,t.age)}function ga(t,e,r){return!!t.range&&Yi(e,t.range,r)}function Yi(t,e,r){return(e.low?.value===void 0||xa(t,e.low.value,r))&&(e.high?.value===void 0||ya(t,e.high.value,r))}function tf(t,e){return Number.parseFloat(t.toFixed(e))}function rf(t,e,r){return re(t,r)===re(e,r)}function nf(t,e,r){return re(t,r)<re(e,r)}function of(t,e,r){return re(t,r)>re(e,r)}function ya(t,e,r){return re(t,r)<=re(e,r)}function xa(t,e,r){return re(t,r)>=re(e,r)}function re(t,e){return e===void 0?t:Math.round(t*Math.pow(10,e))}function sf(t,e,r){return t.find(n=>typeof e=="string"?fn(n.code||{},r)===e:fn(n.code||{},r)===fn(e,r))}function af(t){return Array.isArray(t)?t[0]:t}var xn=(t,e)=>new Promise((r,n)=>{e?.signal?.throwIfAborted();let i=setTimeout(r,t);e?.signal?.addEventListener("abort",()=>{clearTimeout(i),n(e.signal?.reason)},{once:!0})});function rt(t,e,r){let n=[];for(let i=0;i<r-1;i++){let o=t.indexOf(e);if(o<0)break;n.push(t.slice(0,o)),t=t.slice(o+e.length)}return n.push(t),n}function Xi(t){let e,r=!1;return function(){return r||(e=t(),r=!0),e}}function Se(t,e){return t?(t.push(e),t):[e]}function Qt(t){return t.sort((e,r)=>e.localeCompare(r))}function ft(t){return t.endsWith("/")?t:t+"/"}function va(t){return t.startsWith("/")?t.slice(1):t}function W(t,e){return new URL(va(e),ft(t.toString())).toString()}function Zi(t,e){return W(t,e).toString().replace("http://","ws://").replace("https://","wss://")}function eo(t){return typeof t=="object"&&!Array.isArray(t)&&!(t instanceof URLSearchParams)&&(t=Object.fromEntries(Object.entries(t).filter(e=>e[1]!==void 0))),new URLSearchParams(t).toString()}var Ta=/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-_]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-_]*[A-Za-z0-9])$/;function cf(t){return Ta.test(t)}function uf(t,e){return t?.meta?.profile?.includes(e)||(t.meta=t.meta??{},t.meta.profile=t.meta.profile??[],t.meta.profile.push(e)),t}function df(t,e){return new Map(t.entry?.filter(n=>!!n.resource).map(n=>[hn(n.resource,e),n.resource]).filter(([n])=>n!==void 0))}function lf(t,e){if(t?.meta?.profile?.includes(e)){let r=t.meta.profile.indexOf(e);t.meta.profile.splice(r,1)}return t}function pf(t,e){let r=[];if(!t)return r;for(let n=0;n<t.length;n++){let i=e(t[n],n);Array.isArray(i)?r.push(...i):i!==void 0&&r.push(i)}return r}function ff(t,e){let r=0;for(let n of t)r+=e(n);return r}function mf(t,e){let r=0;for(let n of t)e(n)&&r++;return r}function hf(t,e){let r={};for(let n of t){let i=e(n);r[i]=(r[i]??0)+1}return r}function gf(t){return t.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""").replaceAll("\u201C","“").replaceAll("\u201D","”").replaceAll("\u2018","‘").replaceAll("\u2019","’").replaceAll("\u2026","…")}function zt(t){return t!=null}function yf(t){throw new Error(`Unexpected value: ${JSON.stringify(t)}`)}var v=Object.freeze([]),xf=()=>{};function to(t){if(!t)return"";switch(t.type){case"Address":return ba(t.value);case"CodeableConcept":return be(t.value);case"Coding":return ro(t.value);case"ContactPoint":return t.value.value;case"HumanName":return mt(t.value);case"Quantity":return Re(t.value);case"Reference":return Sa(t.value);default:return t.value?.toString()??""}}function Sa(t){return t?t.display??t.reference??Gt(t):""}function ba(t,e){if(!t)return"";let r=[];if(t.line&&r.push(...t.line),t.city||t.state||t.postalCode){let n=[];t.city&&n.push(t.city),t.state&&n.push(t.state),t.postalCode&&n.push(t.postalCode),r.push(n.join(", "))}return t.use&&(e?.all||e?.use)&&r.push("["+t.use+"]"),r.join(e?.lineSeparator??", ").trim()}function mt(t,e){if(!t)return"";let r=[];if(t.prefix&&e?.prefix!==!1&&r.push(...t.prefix),t.given&&r.push(...t.given),t.family&&r.push(t.family),t.suffix&&e?.suffix!==!1&&r.push(...t.suffix),t.use&&(e?.all||e?.use)&&r.push("["+t.use+"]"),r.length===0){let n=Ue(t.text);if(n)return n}return r.join(" ").trim()}function Sf(t){let e=[];return t.given&&e.push(...t.given),e.join(" ").trim()}function bf(t){return Ue(t.family)??""}function Jt(t){return t instanceof Date&&!Number.isNaN(t.getTime())}function Ef(t,e,r){if(!t)return"";let n=new Date(t);return Jt(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...r})):""}function Rf(t,e,r){if(!t)return"";let n=new Date("2000-01-01T"+t+"Z");return Jt(n)?n.toLocaleTimeString(e,r):""}function Ea(t,e,r){if(!t)return"";let[n=0,i=0,o=0]=t.split(":").map(Number),s=new Date(Date.UTC(1970,0,1,n,i,o));return Jt(s)?new Intl.DateTimeFormat(e,{hour:"numeric",minute:"2-digit",second:o===0?void 0:"numeric",...r,timeZone:"UTC"}).format(s):""}function tt(t,e,r){if(!t)return"";let n=new Date(t);return Jt(n)?n.toLocaleString(e,r):""}function Cf(t,e,r){return!t||!t.start&&!t.end?"":tt(t.start,e,r)+" - "+tt(t.end,e,r)}var Ra={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},Ca={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},Pa={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function Pf(t){if(!t)return"";let e=[];return wa(e,t.repeat),t.event&&e.push(t.event.map(r=>tt(r)).join(", ")),B(e.join(" ").trim())}function wa(t,e){if(!e?.periodUnit)return;let r=e.frequency??1,n=e.period??1,i=e.periodUnit;r===1&&n===1?t.push(Ra[i]):(r===1?t.push("once"):t.push(r+" times"),n===1?t.push("per "+Ca[i]):t.push("per "+n+" "+Pa[i])),e.dayOfWeek&&t.push("on "+e.dayOfWeek.map(B).join(", ")),e.timeOfDay&&t.push("at "+e.timeOfDay.map(o=>Ea(o)).join(", "))}function wf(t,e,r=!1){if(r&&e===void 0)throw new Error("Precision must be specified for exclusive ranges");let n=t?.low&&{...t.low,comparator:void 0},i=t?.high&&{...t.high,comparator:void 0};return n?.value===void 0&&i?.value===void 0?"":n?.value!==void 0&&i?.value===void 0?r&&e!==void 0?(n.value=Ia(n.value,e),`> ${Re(n,e)}`):`>= ${Re(n,e)}`:n?.value===void 0&&i?.value!==void 0?r&&e!==void 0?(i.value=Oa(i.value,e),`< ${Re(i,e)}`):`<= ${Re(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${Re(n,e)} - ${Re(i,e)}`)}function Re(t,e){if(!t)return"";let r=[];return t.comparator&&(r.push(t.comparator),r.push(" ")),t.value!==void 0&&(e!==void 0?r.push(t.value.toFixed(e)):r.push(t.value)),t.unit&&(t.unit!=="%"&&r.at(-1)!==" "&&r.push(" "),r.push(t.unit)),r.join("").trim()}function Af(t){return t?.value===void 0?"":t.value.toLocaleString(void 0,{style:"currency",currency:t.currency??"USD",currencyDisplay:"narrowSymbol"})}function be(t){if(!t)return"";let e=Ue(t.text);return e||(t.coding?t.coding.map(r=>ro(r)).join(", "):"")}function ro(t,e){let r=Ue(t?.display);if(r){let n=e?Ue(t?.code):void 0;return`${r}${n?" ("+n+")":""}`}return Ue(t?.code)??""}function Aa(t){if(!t)return"";let e=[];if(t.valueQuantity)e.push(Re(t.valueQuantity));else if(t.valueCodeableConcept)e.push(be(t.valueCodeableConcept));else{let r=Ue(t.valueString);r&&e.push(r)}return"component"in t&&e.push(t.component.map(r=>Aa(r)).join(" / ")),e.join(" / ").trim()}function Ue(t){return typeof t=="string"?t:void 0}function Oa(t,e,r=1){return(no(t,e)+r)*Math.pow(10,-e)}function Ia(t,e,r=1){return(no(t,e)-r)*Math.pow(10,-e)}function no(t,e){return e===void 0?t:Math.round(t*Math.pow(10,e))}var p={Address:"Address",Age:"Age",Annotation:"Annotation",Attachment:"Attachment",BackboneElement:"BackboneElement",CodeableConcept:"CodeableConcept",Coding:"Coding",ContactDetail:"ContactDetail",ContactPoint:"ContactPoint",Contributor:"Contributor",Count:"Count",DataRequirement:"DataRequirement",Distance:"Distance",Dosage:"Dosage",Duration:"Duration",Element:"Element",ElementDefinition:"ElementDefinition",Expression:"Expression",Extension:"Extension",HumanName:"HumanName",Identifier:"Identifier",MarketingStatus:"MarketingStatus",Meta:"Meta",Money:"Money",MoneyQuantity:"MoneyQuantity",Narrative:"Narrative",ParameterDefinition:"ParameterDefinition",Period:"Period",Population:"Population",ProdCharacteristic:"ProdCharacteristic",ProductShelfLife:"ProductShelfLife",Quantity:"Quantity",Range:"Range",Ratio:"Ratio",Reference:"Reference",RelatedArtifact:"RelatedArtifact",SampledData:"SampledData",Signature:"Signature",SimpleQuantity:"SimpleQuantity",SubstanceAmount:"SubstanceAmount",SystemString:"http://hl7.org/fhirpath/System.String",Timing:"Timing",TriggerDefinition:"TriggerDefinition",UsageContext:"UsageContext",base64Binary:"base64Binary",boolean:"boolean",canonical:"canonical",code:"code",date:"date",dateTime:"dateTime",decimal:"decimal",id:"id",instant:"instant",integer:"integer",markdown:"markdown",oid:"oid",positiveInt:"positiveInt",string:"string",time:"time",unsignedInt:"unsignedInt",uri:"uri",url:"url",uuid:"uuid",xhtml:"xhtml"};function Df(t){for(let e of t.entry??v){let r=e.resource;r.resourceType==="SearchParameter"&&vn(r)}}function Di(t){let e=Array.isArray(t)?t:t.entry?.map(r=>r.resource)??[];for(let r of e)r?.resourceType==="StructureDefinition"&&r.kind==="resource"&&oo(r.type)}function oo(t){let e=G.types[t];e||(e={searchParamsDetails:{}},G.types[t]=e);let r;return!e.searchParams&&t!=="Binary"&&(e.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",get target(){return r??=Ma(),r}},_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"},_project:{base:[t],code:"_project",type:"token",expression:t+".meta.project"}}),e}function vn(t){for(let e of t.base??v){let r=oo(e);r.searchParams||(r.searchParams={}),r.searchParams[t.code]=t}}function zr(t){let e=t.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?ka((t.base?.path??t.path)?.split(".")):e}function ka(t){return t.length===1?t[0]:t.map(B).join("")}function Zr(t){return t.kind==="resource"&&t.name!=="Resource"&&t.name!=="DomainResource"}function Ma(){return Object.values(Oi()).filter(Zr).map(t=>t.name)}function Vf(t){return G.types[t]?.searchParams}function _f(t,e){return G.types[t]?.searchParams?.[e]}function Nf(t){let e=t.replaceAll("[x]","").split(".").pop();return Da(e)}function Da(t){let e;return t.length<100?e=t.match(/[A-Z]+(?![a-z])|[A-Z]?[a-z]+|\d+/g)??[]:e=t.split(/(?=[A-Z])/),e.map(_a).join(" ").replace("_"," ").replaceAll(/\s+/g," ")}var Va=new Set(["CDS","ID","IP","JWKS","PKCE","OMB","OID","SOP","UDI","UID","URI","URL"]);function _a(t){let e=t.toUpperCase();return t===e?t:Va.has(e)?e:e.charAt(0)+t.slice(1)}function $t(t,e,r){let n=Le(t,r);if(n)return so(n.elements,e)}function so(t,e){let r=t[e]??t[e+"[x]"];if(r)return r;for(let n=0;n<e.length;n++){let i=e[n];if(i>="A"&&i<="Z"){let o=e.slice(0,n)+"[x]",s=t[o];if(s)return s}}}function ao(t,e,r){let n=e.split(/[.[\]]/g),i=Le(t,r);if(!i)return;let o=i,s;for(let a of n){let u;if(a.match(/^[a-z]/)){let d=so(o.elements,a);if(!d)return;if(d.type.length>1)throw new Error("Multiple matching types in path "+e);u=Le(d.type[0].code),s=d}u&&(o=u)}return s}function Lf(t){return!!(t&&typeof t=="object"&&"type"in t&&"value"in t)}function D(t,e){return!(!t||typeof t!="object"||!("resourceType"in t)||e&&t.resourceType!==e)}function Y(t,e){return t&&typeof t=="object"&&"reference"in t&&typeof t.reference=="string"?e?t.reference.match(new RegExp(`^${e}(/|\\?)`))!==null:!0:!1}var G={types:{}};function co(t){switch(t.type){case p.uuid:case p.uri:case p.url:case p.string:case p.oid:case p.markdown:case p.id:case p.code:case p.canonical:case p.base64Binary:case p.SystemString:case p.date:case p.dateTime:case p.instant:return t.value;case p.Identifier:return`${t.value.system??""}|${t.value.value}`;case p.Coding:return io(t.value);case p.CodeableConcept:return t.value.coding?.map(io).join(",")??t.value.text;case p.HumanName:return t.value.text?t.value.text:mt(t.value);case p.unsignedInt:case p.positiveInt:case p.integer:case p.decimal:return t.value.toString();case p.boolean:return t.value?"true":"false";case p.Extension:return t.value.url;case p.ContactPoint:return t.value.value;case p.Quantity:case p.Age:case p.Count:case p.Duration:return`${t.value.value}|${t.value.system??""}|${t.value.code??t.value.unit??""}`;case p.Reference:return t.value.reference;default:return pt(t.value)?I(t.value):JSON.stringify(t)}}function io(t){return t?`${t.system??""}|${t.code}`:""}function nt(t){if(t.startsWith("T"))return t+"T00:00:00.000Z".substring(t.length);if(t.length<=10)return t;try{return new Date(t).toISOString()}catch{return t}}var me=()=>[];function ht(t){return t instanceof U?t.name:t instanceof se&&t.left instanceof U&&t.right instanceof U?t.left.name+"."+t.right.name:""}var F={empty:(t,e)=>y(e.every(r=>O(r.value))),hasValue:(t,e)=>y(e.length!==0),exists:(t,e,r)=>r?y(e.some(n=>H(r.eval(t,[n])))):y(e.length>0&&e.every(n=>!O(n.value))),all:(t,e,r)=>y(e.every(n=>H(r.eval(t,[n])))),allTrue:(t,e)=>{for(let r of e)if(!r.value)return y(!1);return y(!0)},anyTrue:(t,e)=>{for(let r of e)if(r.value)return y(!0);return y(!1)},allFalse:(t,e)=>{for(let r of e)if(r.value)return y(!1);return y(!0)},anyFalse:(t,e)=>{for(let r of e)if(!r.value)return y(!0);return y(!1)},subsetOf:(t,e,r)=>{if(e.length===0)return y(!0);let n=r.eval(t,Be(t));return n.length===0?y(!1):y(e.every(i=>n.some(o=>o.value===i.value)))},supersetOf:(t,e,r)=>{let n=r.eval(t,Be(t));return n.length===0?y(!0):e.length===0?y(!1):y(n.every(i=>e.some(o=>o.value===i.value)))},count:(t,e)=>[{type:p.integer,value:e.length}],distinct:(t,e)=>{let r=[];for(let n of e)r.some(i=>i.value===n.value)||r.push(n);return r},isDistinct:(t,e)=>y(e.length===F.distinct(t,e).length),where:(t,e,r)=>e.filter(n=>H(r.eval(t,[n]))),select:(t,e,r)=>e.flatMap(n=>r.eval({parent:t,variables:{$this:n}},[n])),repeat:me,ofType:(t,e,r)=>{let n=ht(r);return n?e.filter(i=>et(i,n)):[]},single:(t,e)=>{if(e.length>1)throw new Error("Expected input length one for single()");return e.length===0?[]:e.slice(0,1)},first:(t,e)=>e.length===0?[]:e.slice(0,1),last:(t,e)=>e.length===0?[]:e.slice(-1,e.length),tail:(t,e)=>e.length===0?[]:e.slice(1,e.length),skip:(t,e,r)=>{let n=r.eval(t,e)[0]?.value;if(typeof n!="number")throw new TypeError("Expected a number for skip(num)");return n>=e.length?[]:n<=0?e:e.slice(n,e.length)},take:(t,e,r)=>{let n=r.eval(t,e)[0]?.value;if(typeof n!="number")throw new TypeError("Expected a number for take(num)");return n<=0?[]:e.slice(0,n)},intersect:(t,e,r)=>{if(!r)return e;let n=r.eval(t,Be(t)),i=[];for(let o of e)!i.some(s=>s.value===o.value)&&n.some(s=>s.value===o.value)&&i.push(o);return i},exclude:(t,e,r)=>{if(!r)return e;let n=r.eval(t,Be(t)),i=[];for(let o of e)n.some(s=>s.value===o.value)||i.push(o);return i},union:(t,e,r)=>{if(!r)return e;let n=r.eval(t,Be(t));return Bt([...e,...n])},combine:(t,e,r)=>{if(!r)return e;let n=r.eval(t,Be(t));return[...e,...n]},htmlChecks:(t,e,r)=>[E(!0)],iif:(t,e,r,n,i)=>{let o=r.eval(t,e);if(o.length>1||o.length===1&&typeof o[0].value!="boolean")throw new Error("Expected criterion to evaluate to a Boolean");return H(o)?n.eval(t,e):i?i.eval(t,e):[]},toBoolean:(t,e)=>{if(e.length===0)return[];let[{value:r}]=oe(e,1);if(typeof r=="boolean")return[{type:p.boolean,value:r}];if(typeof r=="number"&&(r===0||r===1))return y(!!r);if(typeof r=="string"){let n=r.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return y(!0);if(["false","f","no","n","0","0.0"].includes(n))return y(!1)}return[]},convertsToBoolean:(t,e)=>e.length===0?[]:y(F.toBoolean(t,e).length===1),toInteger:(t,e)=>{if(e.length===0)return[];let[{value:r}]=oe(e,1);return typeof r=="number"?[{type:p.integer,value:r}]:typeof r=="string"&&/^[+-]?\d+$/.exec(r)?[{type:p.integer,value:Number.parseInt(r,10)}]:typeof r=="boolean"?[{type:p.integer,value:r?1:0}]:[]},convertsToInteger:(t,e)=>e.length===0?[]:y(F.toInteger(t,e).length===1),toDate:(t,e)=>{if(e.length===0)return[];let[{value:r}]=oe(e,1);return typeof r=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(r)?[{type:p.date,value:nt(r)}]:[]},convertsToDate:(t,e)=>e.length===0?[]:y(F.toDate(t,e).length===1),toDateTime:(t,e)=>{if(e.length===0)return[];let[{value:r}]=oe(e,1);return typeof r=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(r)?[{type:p.dateTime,value:nt(r)}]:[]},convertsToDateTime:(t,e)=>e.length===0?[]:y(F.toDateTime(t,e).length===1),toDecimal:(t,e)=>{if(e.length===0)return[];let[{value:r}]=oe(e,1);return typeof r=="number"?[{type:p.decimal,value:r}]:typeof r=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(r)?[{type:p.decimal,value:Number.parseFloat(r)}]:typeof r=="boolean"?[{type:p.decimal,value:r?1:0}]:[]},convertsToDecimal:(t,e)=>e.length===0?[]:y(F.toDecimal(t,e).length===1),toQuantity:(t,e)=>{if(e.length===0)return[];let[{value:r}]=oe(e,1);return N(r)?[{type:p.Quantity,value:r}]:typeof r=="number"?[{type:p.Quantity,value:{value:r,unit:"1"}}]:typeof r=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(r)?[{type:p.Quantity,value:{value:Number.parseFloat(r),unit:"1"}}]:typeof r=="boolean"?[{type:p.Quantity,value:{value:r?1:0,unit:"1"}}]:[]},convertsToQuantity:(t,e)=>e.length===0?[]:y(F.toQuantity(t,e).length===1),toString:(t,e)=>{if(e.length===0)return[];let[{value:r}]=oe(e,1);return r==null?[]:N(r)?[{type:p.string,value:`${r.value} '${r.unit}'`}]:[{type:p.string,value:r.toString()}]},convertsToString:(t,e)=>e.length===0?[]:y(F.toString(t,e).length===1),toTime:(t,e)=>{if(e.length===0)return[];let[{value:r}]=oe(e,1);if(typeof r=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(r);if(n)return[{type:p.time,value:nt("T"+n[1])}]}return[]},convertsToTime:(t,e)=>e.length===0?[]:y(F.toTime(t,e).length===1),indexOf:(t,e,r)=>Q((n,i)=>n.indexOf(i),t,e,r),substring:(t,e,r,n)=>Q((i,o,s)=>{let a=o,u=s?a+s:i.length;return a<0||a>=i.length?void 0:i.substring(a,u)},t,e,r,n),startsWith:(t,e,r)=>Q((n,i)=>n.startsWith(i),t,e,r),endsWith:(t,e,r)=>Q((n,i)=>n.endsWith(i),t,e,r),contains:(t,e,r)=>Q((n,i)=>n.includes(i),t,e,r),upper:(t,e)=>Q(r=>r.toUpperCase(),t,e),lower:(t,e)=>Q(r=>r.toLowerCase(),t,e),replace:(t,e,r,n)=>Q((i,o,s)=>i.replaceAll(o,s),t,e,r,n),matches:(t,e,r)=>Q((n,i)=>!!new RegExp(i).exec(n),t,e,r),replaceMatches:(t,e,r,n)=>Q((i,o,s)=>i.replaceAll(new RegExp(o,"g"),s.replaceAll(/\$\{(\w+)\}/g,"$<$1>")),t,e,r,n),length:(t,e)=>Q(r=>r.length,t,e),toChars:(t,e)=>Q(r=>r?r.split(""):void 0,t,e),encode:me,decode:me,escape:me,unescape:me,trim:me,split:me,join:(t,e,r)=>{let n=r?.eval(t,Be(t))[0]?.value??"";if(typeof n!="string")throw new TypeError("Separator must be a string.");return[{type:p.string,value:e.map(i=>i.value?.toString()??"").join(n)}]},abs:(t,e)=>ie(Math.abs,t,e),ceiling:(t,e)=>ie(Math.ceil,t,e),exp:(t,e)=>ie(Math.exp,t,e),floor:(t,e)=>ie(Math.floor,t,e),ln:(t,e)=>ie(Math.log,t,e),log:(t,e,r)=>ie((n,i)=>Math.log(n)/Math.log(i),t,e,r),power:(t,e,r)=>ie(Math.pow,t,e,r),round:(t,e,...r)=>ie((n,i=0)=>{if(typeof i!="number"||i<0)throw new Error("Invalid precision provided to round()");let o=Math.pow(10,i);return Math.round(n*o)/o},t,e,...r),sqrt:(t,e)=>ie(Math.sqrt,t,e),truncate:(t,e)=>ie(r=>Math.trunc(r),t,e),children:me,descendants:me,trace:(t,e,r)=>e,now:()=>[{type:p.dateTime,value:new Date().toISOString()}],timeOfDay:()=>[{type:p.time,value:new Date().toISOString().substring(11)}],today:()=>[{type:p.date,value:new Date().toISOString().substring(0,10)}],between:(t,e,r,n,i)=>{let o=F.toDateTime(t,r.eval(t,e));if(o.length===0)throw new Error("Invalid start date");let s=F.toDateTime(t,n.eval(t,e));if(s.length===0)throw new Error("Invalid end date");let a=i.eval(t,e)[0]?.value;if(a!=="years"&&a!=="months"&&a!=="days")throw new Error("Invalid units");let u=jt(o[0].value,s[0].value);return[{type:p.Quantity,value:{value:u[a],unit:a}}]},is:(t,e,r)=>{let n=ht(r);return n?e.map(i=>({type:p.boolean,value:et(i,n)})):[]},not:(t,e)=>F.toBoolean(t,e).map(r=>({type:p.boolean,value:!r.value})),resolve:(t,e)=>e.map(r=>{let n=r.value,i;if(typeof n=="string")i=n;else if(typeof n=="object"){let o=n;if(o.resource)return E(o.resource);o.reference?i=o.reference:o.type&&o.identifier&&(i=`${o.type}?identifier=${o.identifier.system}|${o.identifier.value}`)}if(i?.includes("?")){let[o]=i.split("?");return{type:o,value:{resourceType:o}}}if(i?.includes("/")){let[o,s]=i.split("/");return{type:o,value:{resourceType:o,id:s}}}return{type:p.BackboneElement,value:void 0}}).filter(r=>!!r.value),as:(t,e,r)=>{let n=ht(r);if(!n)throw new Error(`Expected a valid type identifier as the right operand of 'as', but found ${r.toString()}`);let i=L(e);return i&&et(i,n)?[i]:[]},type:(t,e)=>e.map(({value:r})=>typeof r=="boolean"?{type:p.BackboneElement,value:{namespace:"System",name:"Boolean"}}:typeof r=="number"?{type:p.BackboneElement,value:{namespace:"System",name:"Integer"}}:D(r)?{type:p.BackboneElement,value:{namespace:"FHIR",name:r.resourceType}}:{type:p.BackboneElement,value:null}),conformsTo:(t,e,r)=>{let n=r.eval(t,e)[0].value;if(!n.startsWith("http://hl7.org/fhir/StructureDefinition/"))throw new Error("Expected a StructureDefinition URL");let i=n.replace("http://hl7.org/fhir/StructureDefinition/","");return e.map(o=>({type:p.boolean,value:o.value?.resourceType===i}))},getResourceKey:(t,e)=>{let r=e[0]?.value;return r?.id?[{type:p.id,value:r.id}]:[]},getReferenceKey:(t,e,r)=>{let n=e[0]?.value;if(!n?.reference)return[];let i="";return r instanceof U&&(i=r.name),i&&!n.reference.startsWith(i+"/")?[]:[{type:p.id,value:X(n)}]},extension:(t,e,r)=>{let n=r.eval(t,e)[0].value,i=e?.[0]?.value;if(i){let o=de(i,n);if(o)return[{type:p.Extension,value:o}]}return[]}};function Q(t,e,r,...n){if(r.length===0)return[];let[{value:i}]=oe(r,1);if(typeof i!="string")throw new TypeError("String function cannot be called with non-string");let o=n.map(a=>a?.eval(e,r)[0]?.value),s=t(i,...o);return s===void 0?[]:Array.isArray(s)?s.map(E):[E(s)]}function ie(t,e,r,...n){if(r.length===0)return[];let[{value:i}]=oe(r,1),o=N(i),s=o?i.value:i;if(typeof s!="number")throw new TypeError("Math function cannot be called with non-number");let a=t(s,...n.map(l=>l.eval(e,r)[0]?.value)),u=o?p.Quantity:r[0].type,d=o?{...i,value:a}:a;return[{type:u,value:d}]}function oe(t,e){if(t.length!==e)throw new Error(`Expected ${e} arguments`);for(let r of t)if(r==null)throw new Error("Expected non-null argument");return t}function Be(t){let e=t;for(;e.parent?.variables.$this;)e=e.parent;return[e.variables.$this]}var Ce=class{constructor(e,r){c(this,"original");c(this,"child");this.original=e,this.child=r}eval(e,r){try{if(r.length>0){let n=[];for(let i of r)n.push(this.child.eval({parent:e,variables:{$this:i}},[i]));return n.flat()}else return this.child.eval(e,[])}catch(n){throw new Error(`FhirPathError on "${this.original}": ${n}`,{cause:n})}}toString(){return this.child.toString()}},z=class{constructor(e){c(this,"value");this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},U=class{constructor(e){c(this,"name");this.name=e}eval(e,r){if(this.name==="$this")return r;let n=this.getVariable(e);if(n)return[n];if(this.name.startsWith("%"))throw new Error(`Undefined variable ${this.name}`);return r.flatMap(i=>this.evalValue(i)).filter(i=>i?.value!==void 0)}getVariable(e){let r=e.variables[this.name];if(r!==void 0)return r;if(e.parent)return this.getVariable(e.parent)}evalValue(e){let r=e.value;if(!(!r||typeof r!="object"))return D(r,this.name)?("path"in e||(e.path=r.resourceType),e):nn(e,this.name)}toString(){return this.name}},Kt=class{eval(){return[]}toString(){return"{}"}},Yt=class extends Ot{constructor(r,n,i){super(r,n);c(this,"impl");this.impl=i}eval(r,n){return this.impl(this.child.eval(r,n))}toString(){return this.operator+this.child.toString()}},Pe=class extends w{constructor(e,r){super("as",e,r)}eval(e,r){return F.as(e,this.left.eval(e,r),this.right)}},q=class extends w{constructor(r,n,i,o){super(r,n,i);c(this,"impl");this.impl=o}eval(r,n){let i=this.left.eval(r,n),o=this.right.eval(r,n);if(i.length<1||o.length<1)return[];let s=L(i)?.value,a=L(o)?.value,u=N(s)?s.value:s,d=N(a)?a.value:a,l=this.impl(u,d);return typeof l=="boolean"?y(l):N(s)?[{type:p.Quantity,value:{...s,value:l}}]:[E(l)]}},uo=Object.freeze({type:"string",value:""}),Xt=class extends w{constructor(e,r){super("&",e,r)}eval(e,r){let n=L(this.left.eval(e,r))??uo,i=L(this.right.eval(e,r))??uo;if(typeof n.value!="string")throw new Error(`Expected string operand for &, but got ${n.type}`);if(typeof i.value!="string")throw new Error(`Expected string operand for &, but got ${i.type}`);return[{type:p.string,value:n.value+i.value}]}},Zt=class extends w{constructor(e,r){super("contains",e,r)}eval(e,r){let n=this.left.eval(e,r),i=this.right.eval(e,r);return y(n.some(o=>o.value===i[0].value))}},er=class extends w{constructor(e,r){super("in",e,r)}eval(e,r){let n=L(this.left.eval(e,r)),i=this.right.eval(e,r);return n?y(i.some(o=>lt(n,o)[0].value)):[]}},se=class extends w{constructor(e,r){super(".",e,r)}eval(e,r){return this.right.eval(e,this.left.eval(e,r))}toString(){return`${this.left.toString()}.${this.right.toString()}`}},qe=class extends w{constructor(e,r){super("|",e,r)}eval(e,r){let n=this.left.eval(e,r),i=this.right.eval(e,r);return Bt([...n,...i])}},tr=class extends w{constructor(e,r){super("=",e,r)}eval(e,r){let n=this.left.eval(e,r),i=this.right.eval(e,r);return Fi(n,i)}},rr=class extends w{constructor(e,r){super("!=",e,r)}eval(e,r){let n=this.left.eval(e,r),i=this.right.eval(e,r);return Ui(n,i)}},nr=class extends w{constructor(e,r){super("~",e,r)}eval(e,r){let n=this.left.eval(e,r),i=this.right.eval(e,r);return dn(n,i)}},ir=class extends w{constructor(e,r){super("!~",e,r)}eval(e,r){let n=this.left.eval(e,r),i=this.right.eval(e,r);return Li(dn(n,i))}},We=class extends w{constructor(e,r){super("is",e,r)}eval(e,r){let n=this.left.eval(e,r);if(n.length!==1)return[];let i=ht(this.right);return i?y(et(n[0],i)):[]}},or=class extends w{constructor(e,r){super("and",e,r)}eval(e,r){let n=L(this.left.eval(e,r),"boolean"),i=L(this.right.eval(e,r),"boolean");return n?.value===!0&&i?.value===!0?y(!0):n?.value===!1||i?.value===!1?y(!1):[]}},sr=class extends w{constructor(e,r){super("or",e,r)}eval(e,r){let n=L(this.left.eval(e,r),"boolean"),i=L(this.right.eval(e,r),"boolean");return n?.value===!1&&i?.value===!1?y(!1):n?.value||i?.value?y(!0):[]}},ar=class extends w{constructor(e,r){super("xor",e,r)}eval(e,r){let n=L(this.left.eval(e,r),"boolean"),i=L(this.right.eval(e,r),"boolean");return!n||!i?[]:y(n.value!==i.value)}},cr=class extends w{constructor(e,r){super("implies",e,r)}eval(e,r){let n=L(this.left.eval(e,r),"boolean"),i=L(this.right.eval(e,r),"boolean");return i?.value===!0||n?.value===!1?y(!0):!n||!i?[]:y(!1)}},ae=class{constructor(e,r){c(this,"name");c(this,"args");this.name=e,this.args=r}eval(e,r){let n=F[this.name];if(!n)throw new Error("Unrecognized function: "+this.name);return n(e,r,...this.args)}toString(){return`${this.name}(${this.args.map(e=>e.toString()).join(", ")})`}},$e=class{constructor(e,r){c(this,"left");c(this,"expr");this.left=e,this.expr=r}eval(e,r){let n=this.expr.eval(e,r);if(n.length!==1)return[];let i=n[0].value;if(typeof i!="number")throw new Error("Invalid indexer expression: should return integer}");let o=this.left.eval(e,r);return i in o?[o[i]]:[]}toString(){return`${this.left.toString()}[${this.expr.toString()}]`}};var Na=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],La=/^\d{4}-\d{2}[\dT:.+\-Z]*(?=[\s)\]]|$)/,Fa={"'":"'",'"':'"',"`":"`",r:"\r",n:`
|
|
2
|
-
`,t:" ",f:"\f","\\":"\\"},
|
|
3
|
-
`))}consumeString(e){this.advance();let r="",n;for(;n=this.consumeChar(e);)r+=n;let i=this.buildToken(e==="`"?"Symbol":"String",r);return this.advance(),i}consumeChar(e){let r=this.curr();if(r==="\\"){this.advance();let n=this.curr(),i=
|
|
4
|
-
`?(this.pos.line++,this.pos.column=0):this.pos.column++}buildToken(e,r){let n=this.markStack.pop();if(!n)throw new Error("No mark for token");return{id:e,value:r,...n}}};function Ua(t){return!!(t&&(t.id==="String"||t.id==="Symbol"&&Na.includes(t.value)))}var gt=["true","false"],yt=["!=","!~","<=",">=","{}","->"];function lo(t){return new we(t,gt,yt).tokenize()}var S={FunctionCall:0,Dot:1,Indexer:2,UnaryAdd:3,UnarySubtract:3,Multiply:4,Divide:4,IntegerDivide:4,Modulo:4,Add:5,Subtract:5,Ampersand:5,Is:6,As:6,Union:7,GreaterThan:8,GreaterThanOrEquals:8,LessThan:8,LessThanOrEquals:8,Equals:9,Equivalent:9,NotEquals:9,NotEquivalent:9,In:10,Contains:10,And:11,Xor:12,Or:12,Implies:13,Arrow:100,Semicolon:200},Ba={parse(t){let e=t.consumeAndParse();if(!t.match(")"))throw new Error("Parse error: expected `)` got `"+t.peek()?.value+"`");return e}},qa={parse(t,e){let r=t.consumeAndParse();if(!t.match("]"))throw new Error("Parse error: expected `]`");return new $e(e,r)},precedence:S.Indexer},Wa={parse(t,e){if(!(e instanceof U))throw new Error("Unexpected parentheses");let r=[];for(;!t.match(")");)r.push(t.consumeAndParse()),t.match(",");return new ae(e.name,r)},precedence:S.FunctionCall};function $a(t){let e=t.split(" "),r=Number.parseFloat(e[0]),n=e[1];return n?.startsWith("'")&&n.endsWith("'")?n=n.substring(1,n.length-1):n="{"+n+"}",{value:r,unit:n}}function xt(){return new It().registerPrefix("String",{parse:(t,e)=>new z({type:p.string,value:e.value})}).registerPrefix("DateTime",{parse:(t,e)=>new z({type:p.dateTime,value:nt(e.value)})}).registerPrefix("Quantity",{parse:(t,e)=>new z({type:p.Quantity,value:$a(e.value)})}).registerPrefix("Number",{parse:(t,e)=>new z({type:e.value.includes(".")?p.decimal:p.integer,value:Number.parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new z({type:p.boolean,value:!0})}).registerPrefix("false",{parse:()=>new z({type:p.boolean,value:!1})}).registerPrefix("Symbol",{parse:(t,e)=>new U(e.value)}).registerPrefix("{}",{parse:()=>new Kt}).registerPrefix("(",Ba).registerInfix("[",qa).registerInfix("(",Wa).prefix("+",S.UnaryAdd,(t,e)=>new Yt("+",e,r=>r)).prefix("-",S.UnarySubtract,(t,e)=>new q("-",e,e,(r,n)=>-n)).infixLeft(".",S.Dot,(t,e,r)=>new se(t,r)).infixLeft("/",S.Divide,(t,e,r)=>new q("/",t,r,(n,i)=>n/i)).infixLeft("*",S.Multiply,(t,e,r)=>new q("*",t,r,(n,i)=>n*i)).infixLeft("+",S.Add,(t,e,r)=>new q("+",t,r,(n,i)=>n+i)).infixLeft("-",S.Subtract,(t,e,r)=>new q("-",t,r,(n,i)=>n-i)).infixLeft("|",S.Union,(t,e,r)=>new qe(t,r)).infixLeft("=",S.Equals,(t,e,r)=>new tr(t,r)).infixLeft("!=",S.NotEquals,(t,e,r)=>new rr(t,r)).infixLeft("~",S.Equivalent,(t,e,r)=>new nr(t,r)).infixLeft("!~",S.NotEquivalent,(t,e,r)=>new ir(t,r)).infixLeft("<",S.LessThan,(t,e,r)=>new q("<",t,r,(n,i)=>n<i)).infixLeft("<=",S.LessThanOrEquals,(t,e,r)=>new q("<=",t,r,(n,i)=>n<=i)).infixLeft(">",S.GreaterThan,(t,e,r)=>new q(">",t,r,(n,i)=>n>i)).infixLeft(">=",S.GreaterThanOrEquals,(t,e,r)=>new q(">=",t,r,(n,i)=>n>=i)).infixLeft("&",S.Ampersand,(t,e,r)=>new Xt(t,r)).infixLeft("and",S.And,(t,e,r)=>new or(t,r)).infixLeft("as",S.As,(t,e,r)=>new Pe(t,r)).infixLeft("contains",S.Contains,(t,e,r)=>new Zt(t,r)).infixLeft("div",S.Divide,(t,e,r)=>new q("div",t,r,(n,i)=>Math.trunc(n/i))).infixLeft("in",S.In,(t,e,r)=>new er(t,r)).infixLeft("is",S.Is,(t,e,r)=>new We(t,r)).infixLeft("mod",S.Modulo,(t,e,r)=>new q("mod",t,r,(n,i)=>n%i)).infixLeft("or",S.Or,(t,e,r)=>new sr(t,r)).infixLeft("xor",S.Xor,(t,e,r)=>new ar(t,r)).infixLeft("implies",S.Implies,(t,e,r)=>new cr(t,r))}var ja=xt();function ur(t){return new Ce(t,ja.construct(lo(t)).consumeAndParse())}function um(t,e,r={},n=void 0){let i=Array.isArray(e)?e:[e];for(let o=0;o<i.length;o++){let s=i[o];typeof s=="object"&&"type"in s&&"value"in s||(i[o]=E(i[o]))}return k(t,i,r,n).map(o=>o.value)}function k(t,e,r={},n=void 0){let i;if(typeof t=="string"){let o=n?.get(t);i=o??ur(t),n&&!o&&n.set(t,i)}else i=t;return i.eval({variables:r},e).map(o=>{let s={type:o.type,value:o.value?.valueOf()};return"path"in o&&(s.path=o.path),s})}function hm(t){let e=[];for(let r of t)r.type===p.Range?e.push([r.value?.low?.value,r.value?.high?.value]):typeof r.value=="number"&&e.push([r.value,r.value]);return e}function po(t){let e=[];for(let r of t){let n=qt(r.value);n&&e.push(n)}return e}function fo(t){let e=new Set;for(let r of t){let n=to(r);n&&e.add(n)}return Array.from(e)}function mo(t){let e=new Set;for(let r of t){let{value:n}=r;n&&(fe(n)?e.add(n):Y(n)?e.add(n.reference):pt(n)?e.add(I(n)):typeof n.identifier=="object"&&e.add(`identifier:${n.identifier.system}|${n.identifier.value}`))}return Array.from(e)}function gm(t){let e=[];for(let r of t){let{value:n}=r;typeof n=="number"?e.push({value:n}):N(n)&&e.push(n)}return e}function ym(t){let e=new Set;for(let r of t)fe(r.value)&&e.add(r.value);return Array.from(e)}function ho(t,e={}){let r=[];for(let n of t)Ha(e,r,n);return r}function Ha(t,e,r){let{type:n,value:i}=r;switch(n){case p.Identifier:Ga(e,t,i);break;case p.CodeableConcept:Qa(e,t,i);break;case p.Coding:go(e,t,i);break;case p.ContactPoint:za(e,t,i);break;default:je(e,t,void 0,i?.toString())}}function Ga(t,e,r){r?.type?.text&&je(t,e,e.textSearchSystem,r.type.text),je(t,e,r?.system,r?.value)}function Qa(t,e,r){r?.text&&je(t,e,e.textSearchSystem,r.text);for(let n of r?.coding??v)go(t,e,n)}function go(t,e,r){r&&(r.display&&je(t,e,e.textSearchSystem,r.display),je(t,e,r.system,r.code))}function za(t,e,r){r&&je(t,e,r.system,r.value?.toLocaleLowerCase())}function je(t,e,r,n){(r||n)&&!t.some(i=>i.system===r&&i.value===n)&&t.push({system:r,value:n&&e.caseInsensitive?n.toLocaleLowerCase():n})}var Rm=20,Cm=1e3,g={EQUALS:"eq",NOT_EQUALS:"ne",GREATER_THAN:"gt",LESS_THAN:"lt",GREATER_THAN_OR_EQUALS:"ge",LESS_THAN_OR_EQUALS:"le",STARTS_AFTER:"sa",ENDS_BEFORE:"eb",APPROXIMATELY:"ap",CONTAINS:"contains",STARTS_WITH:"sw",EXACT:"exact",TEXT:"text",NOT:"not",ABOVE:"above",BELOW:"below",IN:"in",NOT_IN:"not-in",OF_TYPE:"of-type",MISSING:"missing",PRESENT:"present",IDENTIFIER:"identifier",ITERATE:"iterate"},Sn={contains:g.CONTAINS,exact:g.EXACT,above:g.ABOVE,below:g.BELOW,text:g.TEXT,not:g.NOT,in:g.IN,"not-in":g.NOT_IN,"of-type":g.OF_TYPE,missing:g.MISSING,identifier:g.IDENTIFIER,iterate:g.ITERATE},bn={eq:g.EQUALS,ne:g.NOT_EQUALS,lt:g.LESS_THAN,le:g.LESS_THAN_OR_EQUALS,gt:g.GREATER_THAN,ge:g.GREATER_THAN_OR_EQUALS,sa:g.STARTS_AFTER,eb:g.ENDS_BEFORE,ap:g.APPROXIMATELY,sw:g.STARTS_WITH};function vt(t,e){if(!t)throw new Error("Invalid search URL");let r="",n;if(typeof t=="string")if(t.includes("?")){let[s,a]=t.split("?");r=s,n=new URLSearchParams(a)}else r=t;else typeof t=="object"&&(r=t.pathname,n=t.searchParams);let i;r.includes("/")?i=r.split("/").filter(Boolean).pop():i=r;let o=[];if(n)for(let s of n)o.push(s);if(e)for(let[s,a]of Object.entries(e))if(Array.isArray(a))for(let u of a)o.push([s,u]);else o.push([s,a??""]);return Ja(i,o)}function Ja(t,e){let r={resourceType:t},n=new Set;for(let[i,o]of e)Ka(r,n,i,o);return r}function Tn(t,e,r){let n=`${r.code}\0${r.operator}\0${r.value}`;e.has(n)||(e.add(n),t.filters=Se(t.filters,r))}function Ka(t,e,r,n){let i,o,s=r.indexOf(":");if(s>=0?(i=r.substring(0,s),o=r.substring(s+1)):(i=r,o=""),i!=="_"){if(i==="_has"||r.includes(".")){Tn(t,e,{code:r,operator:g.EQUALS,value:n});return}switch(i){case"_sort":Ya(t,n);break;case"_cursor":t.cursor=n;break;case"_count":t.count=Number.parseInt(n,10);break;case"_offset":t.offset=Number.parseInt(n,10);break;case"_total":t.total=n;break;case"_summary":n==="count"?(t.total="accurate",t.count=0):(n==="true"||n==="data"||n==="text")&&(t.summary=n);break;case"_include":{let a=yo(n);o==="iterate"&&(a.modifier=g.ITERATE),t.include=Se(t.include,a);break}case"_revinclude":{let a=yo(n);o==="iterate"&&(a.modifier=g.ITERATE),t.revInclude=Se(t.revInclude,a);break}case"_fields":case"_elements":t.fields=n.split(",");break;case"_type":t.types=n.split(",");break;case"_format":t.format=n;break;case"_pretty":t.pretty=n==="true";break;default:{let a=G.types[t.resourceType]?.searchParams?.[i];a?Tn(t,e,Za(a,g.EQUALS,o,n)):Tn(t,e,ec(i,o,n))}}}}function Ya(t,e){for(let r of e.split(",")){let n,i=!1;r.startsWith("-")?(n=r.substring(1),i=!0):n=r,t.sortRules||(t.sortRules=[]),t.sortRules.push({code:n,descending:i})}}var Xa=[g.MISSING,g.PRESENT];function Za(t,e,r,n){if(Xa.includes(r||e))return{code:t.code,operator:r||e,value:n};switch(t.type){case"number":case"date":case"quantity":{let{operator:i,value:o}=tc(n,r||g.EQUALS);if(!xo(t,o))throw new m(A(`Invalid format for ${t.type} search parameter: ${o}`));return{code:t.code,operator:i,value:o}}case"reference":case"string":case"token":case"uri":{if(!xo(t,n))throw new m(A(`Invalid format for ${t.type} search parameter: ${n}`));return{code:t.code,operator:rc(r)??e,value:n}}default:throw new Error("Unrecognized search parameter type: "+t.type)}}function ec(t,e,r){let n=g.EQUALS;if(e)n=e;else if(r.length>=2){let i=r.substring(0,2);i in bn&&(r.length===2||r.at(2)?.match(/\d/))&&(n=i,r=r.substring(i.length))}return{code:t,operator:n,value:r}}function tc(t,e){let r=t.substring(0,2),n=bn[r];return n?{operator:n,value:t.substring(2)}:{operator:e,value:t}}function rc(t){return Sn[t]}function yo(t){let e=t.split(":");if(e.includes("*"))throw new m(A("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new m(A(`Invalid include value '${t}': must be of the form ResourceType:search-parameter`));if(e.length===2)return{resourceType:e[0],searchParam:e[1]};if(e.length===3)return{resourceType:e[0],searchParam:e[1],targetType:e[2]};throw new m(A(`Invalid include value '${t}'`))}function xo(t,e){return t.type==="date"?Ze(e):!0}var nc=/{{([^{}]+)}}/g;function Pm(t,e,r=[]){return t=t.replaceAll(nc,(n,i)=>{let o=k(i,r,e);return o.length!==1?"":co(o[0])}),vt(t)}function wm(t){let e=[];t.fields&&e.push("_fields="+t.fields.join(","));for(let r of t.filters??v)e.push(ic(r));t.sortRules&&t.sortRules.length>0&&e.push(oc(t.sortRules)),t.cursor!==void 0&&e.push("_cursor="+encodeURIComponent(t.cursor)),t.offset!==void 0&&t.offset!==0&&e.push("_offset="+t.offset),t.count!==void 0&&e.push("_count="+t.count),t.total!==void 0&&e.push("_total="+t.total),t.types&&t.types.length>0&&e.push("_type="+t.types.join(","));for(let r of t.include??v)e.push(vo("_include",r));for(let r of t.revInclude??v)e.push(vo("_revinclude",r));return e.length===0?"":(Qt(e),"?"+e.join("&"))}function ic(t){let e=t.operator in Sn?":"+t.operator:"",r=t.operator!==g.EQUALS&&t.operator in bn?t.operator:"";return`${t.code}${e}=${r}${encodeURIComponent(t.value)}`}function oc(t){return"_sort="+t.map(e=>e.descending?"-"+e.code:e.code).join(",")}function vo(t,e){return t+(e.modifier?":"+e.modifier:"")+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function Tt(t){let e=[],r="",n=!1;for(let i of t)n?(r+=i,n=!1):i==="\\"?n=!0:i===","?(e.push(r),r=""):r+=i;return e.push(r),e}function sc(t,e){return A(`Invalid modifier :${t} for ${e}`)}function Am(t,e){return t in Sn?sc(t,e):A(`Invalid operator ${t} for ${e}`)}function Om(t){return t.types??[t.resourceType]}function dr(t,e){if(e.resourceType!==t.resourceType)return!1;for(let r of e.filters??v)if(!cc(t,e,r))return!1;return!0}var ac=new ee(1e3);function cc(t,e,r){let n=G.types[e.resourceType]?.searchParams?.[r.code];if(!n)return!1;let i=k(n.expression,[E(t)],void 0,ac);if(r.operator===g.MISSING||r.operator===g.PRESENT)return uc(i,r);switch(n.type){case"reference":return dc(n,i,r);case"string":case"uri":return fc(i,r);case"token":return lc(i,r);case"date":return hc(i,r);default:return!1}}function uc(t,e){let r=t.length>0;return(e.operator===g.MISSING&&e.value==="false"||e.operator===g.PRESENT&&e.value==="true")===r}function dc(t,e,r){let n=lr(r.operator);if(r.value===""&&e.length===0)return r.operator===g.EQUALS;let i=mo(e);for(let o of Tt(r.value)){let s=!1;if(o.includes("/")?s=i.includes(o):(t.target?.length===1||r.code==="_compartment")&&(s=i.some(a=>a?.endsWith("/"+o))),s)return!n}return n}function lc(t,e){let r=ho(t),n=Tt(e.value),i=lr(e.operator);for(let o of r)for(let s of n)if(pc(o,s))return!i;return i}function pc(t,e){if(e.includes("|")){let[r,n]=e.split("|").map(i=>i.toLowerCase());return!r&&!n?!1:r?t.system?.toLowerCase()===r&&(!n||t.value?.toLowerCase()===n):!t.system&&t.value?.toLowerCase()===n}return t.value?.toLowerCase()===e.toLowerCase()}function fc(t,e){let r=fo(t),n=Tt(e.value),i=lr(e.operator);for(let o of r)for(let s of n)if(mc(o,s))return!i;return i}function mc(t,e){return t.toLowerCase().includes(e.toLowerCase())}function hc(t,e){let r=po(t),n=Tt(e.value),i=lr(e.operator);for(let o of r)for(let s of n)if(gc(o,e.operator,s))return!i;return i}function gc(t,e,r){if(!t)return!1;let n=qt(r);if(!n)return!1;let i=t.start??"0000",o=t.end??"9999",s=n.start,a=n.end;switch(e){case g.APPROXIMATELY:case g.EQUALS:case g.NOT_EQUALS:return i<a&&o>s;case g.LESS_THAN:return i<s;case g.GREATER_THAN:return o>a;case g.LESS_THAN_OR_EQUALS:return i<=a;case g.GREATER_THAN_OR_EQUALS:return o>=s;case g.STARTS_AFTER:return i>a;case g.ENDS_BEFORE:return o<s;default:return!1}}function lr(t){return t===g.NOT_EQUALS||t===g.NOT}var yc={resourceType:"*"},xc=["DomainConfiguration","Enterprise","JsonWebKey","Login"],vc=["Cron","Package","PackageRelease","PackageInstallation","Project","ProjectMembership","User","UserSecurityRequest"],He={READ:"read",VREAD:"vread",UPDATE:"update",DELETE:"delete",HISTORY:"history",CREATE:"create",SEARCH:"search"},Tc=[He.READ,He.VREAD,He.HISTORY,He.SEARCH];function qm(t,e){return To(t,He.SEARCH,e)}function Wm(t,e){return xc.includes(e)?!1:To(t,He.UPDATE,e)}function To(t,e,r){return!!t.resource?.some(n=>So(n,r,e))}function $m(t,e){return!!Sc(e,He.UPDATE,t)}function Sc(t,e,r){return r?r.resource?.find(n=>bc(t,e,n)):yc}function bc(t,e,r){let n=t.resourceType;return So(r,n,e)?n==="Binary"?!0:!(r.compartment&&!t.meta?.compartment?.some(i=>i.reference===r.compartment?.reference)||r.criteria&&!dr(t,vt(r.criteria))):!1}function So(t,e,r){return t.resourceType!==e&&(t.resourceType!=="*"||vc.includes(e))?!1:t.interaction?t.interaction.includes(r):!t.readonly||Tc.includes(r)}var Hm={FIRST:"first",APPLICATION:"application"};function Z(){return typeof window<"u"}function Qm(){return typeof Buffer<"u"}function zm(){return typeof window<"u"?window:void 0}function En(){return typeof Buffer<"u"?Buffer:void 0}var he={assign(t){Z()&&globalThis.location.assign(t)},reload(){Z()&&globalThis.location.reload()},getSearch(){return Z()?globalThis.location.search:""},getPathname(){return Z()?globalThis.location.pathname:""},getLocation(){return Z()?globalThis.location.toString():""},getOrigin(){return Z()?globalThis.location.protocol+"//"+globalThis.location.host+"/":""}};function Ec(t){if(Z()){let r=window.atob(t),n=Uint8Array.from(r,i=>i.codePointAt(0));return new window.TextDecoder().decode(n)}let e=En();if(e)return e.from(t,"base64").toString("utf-8");throw new Error("Unable to decode base64")}function pr(t){if(Z()){let r=new window.TextEncoder().encode(t),n=String.fromCodePoint.apply(null,r);return window.btoa(n)}let e=En();if(e)return e.from(t,"utf8").toString("base64");throw new Error("Unable to encode base64")}function bo(t){return pr(t).replaceAll("+","-").replaceAll("/","_").replace(/[=]{1,2}$/,"")}function fr(t){t=t.padEnd(t.length+(4-t.length%4)%4,"=");let e=t.replaceAll("-","+").replaceAll("_","/");return Ec(e)}function Rn(){let t=new Uint32Array(28);return crypto.getRandomValues(t),Qi(t.buffer)}async function Eo(t){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(t))}function ce(){return typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replaceAll(/[xy]/g,t=>{let e=Math.trunc(Math.random()*16);return(t==="x"?e:e&3|8).toString(16)})}function Rc(t){let e={};t=pe(t);for(let i of t.entry??v){let o=i.resource;if(!o)continue;o.meta!==void 0&&(delete o.meta.author,delete o.meta.compartment,delete o.meta.lastUpdated,delete o.meta.project,delete o.meta.versionId,Object.keys(o.meta).length===0&&delete o.meta);let s=o?.id;if(s)e[s]=ce(),i.fullUrl="urn:uuid:"+e[s],delete i.resource?.id;else if(i.fullUrl?.startsWith("resource:")){let a=i.fullUrl.slice(9);e[a]=ce(),i.fullUrl="urn:uuid:"+e[a]}}let r=t.entry,n=JSON.stringify({resourceType:"Bundle",type:"transaction",entry:r?.map(i=>({fullUrl:i.fullUrl,request:{method:"POST",url:i.resource?.resourceType},resource:i.resource}))},(i,o)=>Cc(i,o,e),2);return Pc(JSON.parse(n))}function Cc(t,e,r){if((t==="reference"||t==="url")&&typeof e=="string"){let n;if(e.includes("/")?n=e.split("/")[1]:e.startsWith("urn:uuid:")||e.startsWith("resource:")?n=e.slice(9):e.startsWith("#")&&(n=e.slice(1)),n){let i=r[n];if(i)return"urn:uuid:"+i}}return e}function Pc(t){let e=Ac(t),{sorted:r,cycles:n}=wc(e),i={},o=[];for(let a of t.entry??v)a.fullUrl?i[a.fullUrl]=a:o.push(a);let s=r.map(a=>i[a]);for(let a of n)for(let u of a){let d=i[u],l={...d,request:{...d.request,method:"PUT"}};s.push(l)}return s.push(...o),{...t,entry:s}}var it={NotVisited:"NotVisited",Visiting:"Visiting",Visited:"Visited"};function wc(t){let e=[],r={},n=[];for(let o of Object.keys(t))r[o]=it.NotVisited;function i(o,s){if(r[o]===it.Visited)return!0;if(r[o]===it.Visiting){let u=s.lastIndexOf(o);return u!==-1&&n.push(s.slice(u)),!0}r[o]=it.Visiting,s.push(o);let a=!1;for(let u of t[o]??v)i(u,s)||(a=!0);return r[o]=it.Visited,s.pop(),e.unshift(o),!a}for(let o in t)r[o]===it.NotVisited&&i(o,[]);return{sorted:e,cycles:n}}function Ro(t,e){for(let r in t)if(t[r]&&typeof t[r]=="object"){let n=t[r];if(Y(n)){let i=n.reference;(i.startsWith("urn:uuid:")||i.startsWith("resource:"))&&e(i)}else Ro(n,e)}}function Ac(t){let e={};for(let r of t.entry??v)r.fullUrl&&(e[r.fullUrl]=[]);for(let r of t.entry??v){let n=r.fullUrl;n&&r.resource&&Ro(r.resource,i=>{i!==n&&e[i]&&e[i].push(n)})}return e}function nh(t){t=pe(t);let e={resourceType:"Bundle",type:"transaction",entry:[{resource:t}]};if(t.contained){for(let r of t.contained)e.entry.push({resource:r});t.contained=void 0}for(let r of e.entry)r.resource&&!r.resource.id&&(r.resource.id=ce());return Rc(e)}function ih(t,e,r){return t.entry?.find(({resource:n})=>n?.resourceType===e&&n?.id===r)?.resource}async function ch(t,e,r,n){return{hook:r.hook,hookInstance:ce(),context:n,prefetch:await Oc(t,e,r,n)}}async function Oc(t,e,r,n){if(!r.prefetch)return{};let i={};for(let[o,s]of Object.entries(r.prefetch)){let a=await Ic(t,e,n,s);i[o]=a??null}return i}function Ic(t,e,r,n){if(n=Mc(e,r,n),n.includes("{{"))return Promise.resolve(null);let i=/^(\w+)\/([0-9a-zA-Z-_]+)$/.exec(n);if(i){let[a,u]=i.slice(1);return t.readResource(a,u)}let[o,s]=rt(n,"?",2);return t.search(o,s)}var kc=new Set(["userPractitionerId","userPractitionerRoleId","userPatientId","userRelatedPersonId"]);function Mc(t,e,r){return r.replaceAll(/\{\{([^}]+)\}\}/g,(n,i)=>{if(i=i.trim(),kc.has(i))return t.id;if(i.startsWith("context.")){let o=i.substring(8),s=Dc(e,o);if(fe(s))return s;if(typeof s=="number"||typeof s=="boolean")return String(s)}return n})}function Dc(t,e){let r=e.split("."),n=t;for(let i of r)if(n&&C(n)&&i in n)n=n[i];else return;return n}var V={CSS:"text/css",DICOM:"application/dicom",DICOM_JSON:"application/dicom+json",EVENT_STREAM:"text/event-stream",FAVICON:"image/vnd.microsoft.icon",FHIR_JSON:"application/fhir+json",FORM_URL_ENCODED:"application/x-www-form-urlencoded",HL7_V2:"x-application/hl7-v2+er7",HTML:"text/html",JAVASCRIPT:"text/javascript",JOSE:"application/jose",JSON:"application/json",JSON_PATCH:"application/json-patch+json",JWT:"application/jwt",LINKSET_JSON:"application/linkset+json",MULTIPART_FORM_DATA:"multipart/form-data",PNG:"image/png",SCIM_JSON:"application/scim+json",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript",PING:"x-application/ping",XML:"text/xml",CDA_XML:"application/cda+xml",OCTET_STREAM:"application/octet-stream"};var Cn=class{constructor(){c(this,"listeners");this.listeners={}}addEventListener(e,r){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(r)}removeEventListener(e,r){let n=this.listeners[e];if(n){for(let i=0;i<n.length;i++)if(n[i]===r){n.splice(i,1);return}}}dispatchEvent(e){let r=this.listeners[e.type];for(let n of r??v)try{n.call(this,e)}catch(i){console.error(`Unhandled error in "${e.type}" event listener`,i)}return!e.defaultPrevented}removeAllListeners(){this.listeners={}}listenerCount(e){return this.listeners[e]?.length??0}},ue=class{constructor(){c(this,"emitter",new Cn)}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,r){this.emitter.addEventListener(e,r)}removeEventListener(e,r){this.emitter.removeEventListener(e,r)}removeAllListeners(){this.emitter.removeAllListeners()}listenerCount(e){return this.emitter.listenerCount(e)}};var J={Event:typeof globalThis.Event<"u"?globalThis.Event:void 0,ErrorEvent:void 0,CloseEvent:void 0},Co=!1;function Vc(){if(typeof globalThis.Event>"u")throw new Error("Unable to lazy init events for ReconnectingWebSocket. globalThis.Event is not defined yet");J.Event=globalThis.Event,J.ErrorEvent=class extends Event{constructor(r,n){super("error",n);c(this,"message");c(this,"error");this.message=r.message,this.error=r}},J.CloseEvent=class extends Event{constructor(r=1e3,n="",i){super("close",i);c(this,"code");c(this,"reason");c(this,"wasClean",!0);this.code=r,this.reason=n}}}function _c(t,e){if(!t)throw new Error(e)}function Nc(){}function mr(t){if(t instanceof J.CloseEvent){let e=t;return new J.CloseEvent(e.code,e.reason,void 0)}if(t instanceof J.ErrorEvent){let e=t;return new J.ErrorEvent(e.error??new Error(e.message),void 0)}return new t.constructor(t.type,t)}function Lc(t,e){let r=t;return r.error instanceof Error?new J.ErrorEvent(r.error,e):new J.ErrorEvent(new Error(r.message||"WebSocket error"),e)}var Ge={maxReconnectionDelay:1e4,minReconnectionDelay:1e3+Math.random()*4e3,minUptime:5e3,reconnectionDelayGrowFactor:1.3,connectionTimeout:4e3,maxRetries:1/0,maxEnqueuedMessages:1/0,startClosed:!1,debug:!1},Po=!1,ot=class t extends ue{constructor(r,n,i={}){Co||(Vc(),Co=!0);super();c(this,"_ws");c(this,"_retryCount",-1);c(this,"_uptimeTimeout");c(this,"_connectTimeout");c(this,"_shouldReconnect",!0);c(this,"_connectLock",!1);c(this,"_binaryType");c(this,"_closeCalled",!1);c(this,"_messageQueue",[]);c(this,"_debugLogger",console.log.bind(console));c(this,"_url");c(this,"_protocols");c(this,"_options");c(this,"onclose",null);c(this,"onerror",null);c(this,"onmessage",null);c(this,"onopen",null);c(this,"_handleOpen",r=>{this._debug("open event");let{minUptime:n=Ge.minUptime}=this._options;clearTimeout(this._connectTimeout),this._uptimeTimeout=setTimeout(()=>this._acceptOpen(),n),_c(this._ws,"WebSocket is not defined"),this._ws.binaryType=this._binaryType,this._messageQueue.forEach(i=>this._ws?.send(i)),this._messageQueue=[],this.onopen&&this.onopen(r),this.dispatchEvent(mr(r))});c(this,"_handleMessage",r=>{this._debug("message event"),this.onmessage&&this.onmessage(r),this.dispatchEvent(mr(r))});c(this,"_handleError",r=>{let n=Lc(r,this);this._debug("error event",n.message),this._disconnect(void 0,n.message==="TIMEOUT"?"timeout":void 0),this.onerror&&this.onerror(n),this._debug("exec error listeners"),this.dispatchEvent(mr(n)),this._connect()});c(this,"_handleClose",r=>{this._debug("close event"),this._clearTimeouts(),this._shouldReconnect&&this._connect(),this.onclose&&this.onclose(r),this.dispatchEvent(mr(r))});this._url=r,this._protocols=n,this._options=i,this._options.startClosed&&(this._shouldReconnect=!1),this._options.binaryType?this._binaryType=this._options.binaryType:this._binaryType="blob",this._options.debugLogger&&(this._debugLogger=this._options.debugLogger),this._connect()}static get CONNECTING(){return 0}static get OPEN(){return 1}static get CLOSING(){return 2}static get CLOSED(){return 3}get CONNECTING(){return t.CONNECTING}get OPEN(){return t.OPEN}get CLOSING(){return t.CLOSING}get CLOSED(){return t.CLOSED}get binaryType(){return this._ws?this._ws.binaryType:this._binaryType}set binaryType(r){this._binaryType=r,this._ws&&(this._ws.binaryType=r)}get retryCount(){return Math.max(this._retryCount,0)}get bufferedAmount(){return this._messageQueue.reduce((n,i)=>(typeof i=="string"?n+=i.length:i instanceof Blob?n+=i.size:n+=i.byteLength,n),0)+(this._ws?.bufferedAmount??0)}get extensions(){return this._ws?.extensions??""}get protocol(){return this._ws?.protocol??""}get readyState(){return this._ws?this._ws.readyState:this._options.startClosed?t.CLOSED:t.CONNECTING}get url(){return this._ws?this._ws.url:""}get shouldReconnect(){return this._shouldReconnect}close(r=1e3,n){if(this._closeCalled=!0,this._shouldReconnect=!1,this._clearTimeouts(),!this._ws){this._debug("close enqueued: no ws instance");return}if(this._ws.readyState===this.CLOSED){this._debug("close: already closed");return}this._ws.close(r,n)}reconnect(r,n){this._shouldReconnect=!0,this._closeCalled=!1,this._retryCount=-1,!this._ws||this._ws.readyState===this.CLOSED?this._connect():(this._disconnect(r,n),this._connect())}send(r){if(this._ws?.readyState===this.OPEN)this._debug("send",r),this._ws.send(r);else{let{maxEnqueuedMessages:n=Ge.maxEnqueuedMessages}=this._options;this._messageQueue.length<n&&(this._debug("enqueue",r),this._messageQueue.push(r))}}_debug(...r){this._options.debug&&this._debugLogger("RWS>",...r)}_getNextDelay(){let{reconnectionDelayGrowFactor:r=Ge.reconnectionDelayGrowFactor,minReconnectionDelay:n=Ge.minReconnectionDelay,maxReconnectionDelay:i=Ge.maxReconnectionDelay}=this._options,o=0;return this._retryCount>0&&(o=n*Math.pow(r,this._retryCount-1),o>i&&(o=i)),this._debug("next delay",o),o}_wait(){return new Promise(r=>{setTimeout(r,this._getNextDelay())})}_connect(){if(this._connectLock||!this._shouldReconnect)return;this._connectLock=!0;let{maxRetries:r=Ge.maxRetries,connectionTimeout:n=Ge.connectionTimeout}=this._options;if(this._retryCount>=r){this._connectLock=!1,this._debug("max retries reached",this._retryCount,">=",r);return}this._retryCount++,this._debug("connect",this._retryCount),this._removeListeners(),this._wait().then(()=>{if(this._closeCalled){this._connectLock=!1;return}!this._options.WebSocket&&typeof WebSocket>"u"&&!Po&&(console.error("\u203C\uFE0F No WebSocket implementation available. You should define options.WebSocket."),Po=!0);let i=this._options.WebSocket||WebSocket;this._debug("connect",{url:this._url,protocols:this._protocols}),this._ws=this._protocols?new i(this._url,this._protocols):new i(this._url),this._ws.binaryType=this._binaryType,this._connectLock=!1,this._addListeners(),this._connectTimeout=setTimeout(()=>this._handleTimeout(),n)}).catch(i=>{this._connectLock=!1,this._handleError(new J.ErrorEvent(Error(i.message),this))})}_handleTimeout(){this._debug("timeout event"),this._handleError(new J.ErrorEvent(Error("TIMEOUT"),this))}_disconnect(r=1e3,n){if(this._clearTimeouts(),!this._ws)return;let i=this._ws;this._removeListeners(),i.addEventListener("error",Nc);try{i.close(r,n),this._handleClose(new J.CloseEvent(r,n,this))}catch{}}_acceptOpen(){this._debug("accept open"),this._retryCount=0}_removeListeners(){this._ws&&(this._debug("removeListeners"),this._ws.removeEventListener("open",this._handleOpen),this._ws.removeEventListener("close",this._handleClose),this._ws.removeEventListener("message",this._handleMessage),this._ws.removeEventListener("error",this._handleError))}_addListeners(){this._ws&&(this._debug("addListeners"),this._ws.addEventListener("open",this._handleOpen),this._ws.addEventListener("close",this._handleClose),this._ws.addEventListener("message",this._handleMessage),this._ws.addEventListener("error",this._handleError))}_clearTimeouts(){clearTimeout(this._connectTimeout),clearTimeout(this._uptimeTimeout)}};var Pn={"Patient-open":"Patient-open","Patient-close":"Patient-close","ImagingStudy-open":"ImagingStudy-open","ImagingStudy-close":"ImagingStudy-close","Encounter-open":"Encounter-open","Encounter-close":"Encounter-close","DiagnosticReport-open":"DiagnosticReport-open","DiagnosticReport-close":"DiagnosticReport-close","DiagnosticReport-select":"DiagnosticReport-select","DiagnosticReport-update":"DiagnosticReport-update",syncerror:"syncerror"},Fc=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],wn=["DiagnosticReport-update"];function wo(t){return wn.includes(t)}function Ao(t){if(wn.includes(t))throw new m(T(`'context.version' is required for '${t}'.`))}var Uc={"Patient-open":{patient:{resourceType:"Patient"},encounter:{resourceType:"Encounter",optional:!0}},"Patient-close":{patient:{resourceType:"Patient"},encounter:{resourceType:"Encounter",optional:!0}},"ImagingStudy-open":{study:{resourceType:"ImagingStudy"},encounter:{resourceType:"Encounter",optional:!0},patient:{resourceType:"Patient",optional:!0}},"ImagingStudy-close":{study:{resourceType:"ImagingStudy"},encounter:{resourceType:"Encounter",optional:!0},patient:{resourceType:"Patient",optional:!0}},"Encounter-open":{encounter:{resourceType:"Encounter"},patient:{resourceType:"Patient"}},"Encounter-close":{encounter:{resourceType:"Encounter"},patient:{resourceType:"Patient"}},"DiagnosticReport-open":{report:{resourceType:"DiagnosticReport"},encounter:{resourceType:"Encounter",optional:!0},study:{resourceType:"ImagingStudy",optional:!0,manyAllowed:!0},patient:{resourceType:"Patient"}},"DiagnosticReport-close":{report:{resourceType:"DiagnosticReport"},encounter:{resourceType:"Encounter",optional:!0},study:{resourceType:"ImagingStudy",optional:!0,manyAllowed:!0},patient:{resourceType:"Patient"}},"DiagnosticReport-select":{report:{resourceType:"DiagnosticReport",reference:!0},patient:{resourceType:"Patient",optional:!0,reference:!0},select:{resourceType:"*",reference:!0,manyAllowed:!0}},"DiagnosticReport-update":{report:{resourceType:"DiagnosticReport",reference:!0},patient:{resourceType:"Patient",optional:!0,reference:!0},updates:{resourceType:"Bundle"}},syncerror:{operationoutcome:{resourceType:"OperationOutcome"}}};function Bc(t){return Fc.includes(t)}function Oo(t){return!!t.endpoint}function An(t){if(!gr(t))throw new m(T("subscriptionRequest must be an object conforming to SubscriptionRequest type."));let{channelType:e,mode:r,topic:n,events:i}=t,o={"hub.channel.type":e,"hub.mode":r,"hub.topic":n};return r==="subscribe"&&(o["hub.events"]=i.join(",")),Oo(t)&&(o["hub.channel.endpoint"]=t.endpoint),new URLSearchParams(o).toString()}function gr(t){if(typeof t!="object")return!1;let{channelType:e,mode:r,topic:n,events:i}=t;if(!(e&&r&&n&&i)||typeof n!="string"||typeof i!="object"||!Array.isArray(i)||i.length<1||e!=="websocket"||r!=="subscribe"&&r!=="unsubscribe")return!1;for(let o of i)if(!Pn[o])return!1;return!(Oo(t)&&!(typeof t.endpoint=="string"&&t.endpoint.startsWith("ws")))}function qc(t,e,r,n){if(typeof e!="object")throw new m(T(`context[${r}] is invalid. Context must contain a single valid FHIR resource! Resource is not an object.`));if(!(e.id&&typeof e.id=="string"))throw new m(T(`context[${r}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new m(T(`context[${r}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!Bc(e.resourceType))throw new m(T(`context[${r}] is invalid. Resource must contain a valid FHIRcast resource type. Resource type is not a known resource type.`));if(i&&e.resourceType!==i)throw new m(T(`context[${r}] is invalid. context[${r}] for the '${t}' event should contain resource of type ${i}.`))}}function Wc(t,e,r,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),n.reference){if(!Y(e.reference))throw new m(T(`context[${r}] is invalid. Expected key '${e.key}' to be a reference.`))}else qc(t,e.resource,r,n)}function $c(t,e){let r=new Map,n=Uc[t];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new m(T(`Key '${o}' not found for event '${t}'. Make sure to add only valid keys.`));Wc(t,e[i],i,n[o],r)}for(let[i,o]of Object.entries(n)){if(!(o.optional||r.has(i)))throw new m(T(`Missing required key '${i}' on context for '${t}' event.`));if(!o.manyAllowed&&(r.get(i)??0)>1)throw new m(T(`${r.get(i)} context entries with key '${i}' found for the '${t}' event when schema only allows for 1.`))}}function On(t,e,r,n){if(!(t&&typeof t=="string"))throw new m(T("Must provide a topic."));if(!Pn[e])throw new m(T(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(Pn).join(", ")}`));if(typeof r!="object")throw new m(T("context must be a context object or array of context objects."));if(wn.includes(e)&&!n)throw new m(T(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(r)?r:[r];return $c(e,i),{timestamp:new Date().toISOString(),id:ce(),event:{"hub.topic":t,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var hr=class extends ue{constructor(r,n){super();c(this,"subRequest");c(this,"websocket");if(this.subRequest=r,!r.endpoint)throw new m(T("Subscription request should contain an endpoint."));if(!gr(r))throw new m(T("Subscription request failed validation."));let{ReconnectingWebSocket:i=ot,...o}=n??{},s=new i(r.endpoint,void 0,o);s.addEventListener("open",()=>{this.dispatchEvent({type:"connect"})}),s.addEventListener("message",a=>{let u=JSON.parse(a.data);if(!u.event){u["hub.mode"]==="denied"&&this.disconnect();return}let d=u;d.event["hub.event"]!=="heartbeat"&&(this.dispatchEvent({type:"message",payload:d}),s.send(JSON.stringify({id:u?.id,timestamp:new Date().toISOString()})))}),s.addEventListener("close",()=>{this.dispatchEvent({type:"disconnect"})}),this.websocket=s}disconnect(){this.websocket.close()}};function jc(t){return JSON.parse(fr(t))}function Io(t){return t.split(".").length===3}function yr(t){let[e,r,n]=t.split(".");return jc(r)}function ko(t){try{return typeof yr(t).login_id=="string"}catch{return!1}}function Mo(t){try{let r=yr(t).exp;return typeof r=="number"?r*1e3:void 0}catch{return}}var xr=class{constructor(e){c(this,"medplum");this.medplum=e}async get(e){return this.medplum.get(`keyvalue/v1/${e}`)}async set(e,r){await this.medplum.put(`keyvalue/v1/${e}`,r,V.TEXT)}async delete(e){await this.medplum.delete(`keyvalue/v1/${e}`)}};var Do;Do=Symbol.toStringTag;var $=class{constructor(e){c(this,Do,"ReadablePromise");c(this,"suspender");c(this,"status","pending");c(this,"response");c(this,"error");this.suspender=e.then(r=>(this.status="success",this.response=r,r),r=>{throw this.status="error",this.error=r,r})}isPending(){return this.status==="pending"}isOk(){return this.status==="success"}read(){switch(this.status){case"pending":throw this.suspender;case"error":throw this.error;default:return this.response}}then(e,r){return this.suspender.then(e,r)}catch(e){return this.suspender.catch(e)}finally(e){return this.suspender.finally(e)}};var St=class{constructor(e,r=""){c(this,"storage");c(this,"prefix","");this.storage=e??globalThis.localStorage??new In,this.prefix=r}makeKey(e){return this.prefix+e}clear(){if(this.storage===globalThis.localStorage&&this.prefix)for(let e=this.storage.length-1;e>=0;e--){let r=this.storage.key(e);r?.startsWith(this.prefix)&&this.storage.removeItem(r)}else this.storage.clear()}getString(e){return this.storage.getItem(this.makeKey(e))??void 0}setString(e,r){r?this.storage.setItem(this.makeKey(e),r):this.storage.removeItem(this.makeKey(e))}getObject(e){let r=this.getString(e);return r?JSON.parse(r):void 0}setObject(e,r){this.setString(e,r?Gt(r):void 0)}},In=class{constructor(){c(this,"data");this.data=new Map}get length(){return this.data.size}clear(){this.data.clear()}getItem(e){return this.data.get(e)??null}setItem(e,r){r?this.data.set(e,r):this.data.delete(e)}removeItem(e){this.data.delete(e)}key(e){return Array.from(this.data.keys())[e]}},Vo=class extends St{constructor(){super();c(this,"initialized");c(this,"initPromise");c(this,"initResolve",()=>{});this.initialized=!1,this.initPromise=new Promise(r=>{this.initResolve=r})}setInitialized(){this.initialized||(this.initResolve(),this.initialized=!0)}getInitPromise(){return this.initPromise}get isInitialized(){return this.initialized}};var Hc=[WebSocket.CLOSING,WebSocket.CLOSED],Et=class extends ue{constructor(...r){super();c(this,"criteria");this.criteria=new Set(r)}getCriteria(){return this.criteria}_addCriteria(r){this.criteria.add(r)}_removeCriteria(r){this.criteria.delete(r)}},kn=class{constructor(e,r){c(this,"criteria");c(this,"emitter");c(this,"refCount");c(this,"subscriptionProps");c(this,"subscriptionId");c(this,"token");c(this,"tokenExpiry");c(this,"state","idle");c(this,"generation",0);c(this,"lastUnrefTime");this.criteria=e,this.emitter=new Et(e),this.refCount=1,this.subscriptionProps=r?{...r}:void 0}nextGeneration(){return++this.generation}},vr=class{constructor(e,r,n){c(this,"medplum");c(this,"ws");c(this,"masterSubEmitter");c(this,"criteriaEntries");c(this,"criteriaEntriesBySubscriptionId");c(this,"wsClosed");c(this,"pingTimer");c(this,"tokenRefreshTimer");c(this,"pingIntervalMs");c(this,"waitingForPong",!1);c(this,"currentProfile");if(!(e instanceof Tr))throw new m(T("First arg of constructor should be a `MedplumClient`"));let i;try{i=new URL(r).toString()}catch{throw new m(T("Not a valid URL"))}let o=n?.ReconnectingWebSocket?new n.ReconnectingWebSocket(i,void 0,{debug:n?.debug,debugLogger:n?.debugLogger}):new ot(i,void 0,{debug:n?.debug,debugLogger:n?.debugLogger});this.medplum=e,this.ws=o,this.masterSubEmitter=new Et,this.criteriaEntries=new Map,this.criteriaEntriesBySubscriptionId=new Map,this.wsClosed=!1,this.pingIntervalMs=n?.pingIntervalMs??5e3,this.currentProfile=e.getProfile(),this.setupListeners()}setupListeners(){let e=this.ws;e.addEventListener("message",r=>{try{let n=JSON.parse(r.data);if(n.type==="pong"){this.waitingForPong=!1;return}let i=n,o=i?.entry?.[0]?.resource;if(!o){console.warn("Received WebSocket message without a SubscriptionStatus resource; ignoring",i);return}if(o.type==="heartbeat"){this.masterSubEmitter?.dispatchEvent({type:"heartbeat",payload:i});return}if(o.type==="handshake"){let a=X(o.subscription),u={type:"connect",payload:{subscriptionId:a}};this.masterSubEmitter?.dispatchEvent(u);let d=this.criteriaEntriesBySubscriptionId.get(a);if(!d){console.warn("Received handshake for criteria the SubscriptionManager is not listening for yet");return}(d.state==="connecting"||d.state==="refreshing")&&(d.state="active"),d.emitter.dispatchEvent({...u});return}this.masterSubEmitter?.dispatchEvent({type:"message",payload:i});let s=this.criteriaEntriesBySubscriptionId.get(X(o.subscription));if(!s){console.warn("Received notification for criteria the SubscriptionManager is not listening for");return}s.emitter.dispatchEvent({type:"message",payload:i})}catch(n){console.error(n);let i={type:"error",payload:n};this.masterSubEmitter?.dispatchEvent(i);for(let o of this.getAllCriteriaEmitters())o.dispatchEvent({...i})}}),e.addEventListener("error",r=>{let n={type:"error",payload:new m({resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"WebSocket connection closed due to an error"},diagnostics:r.error?Ve(r.error):r.message}]})};this.masterSubEmitter?.dispatchEvent(n);for(let i of this.getAllCriteriaEmitters())i.dispatchEvent({...n})}),e.addEventListener("close",()=>{let r={type:"close"};this.masterSubEmitter?.dispatchEvent(r);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent({...r});this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=void 0,this.waitingForPong=!1),this.tokenRefreshTimer&&(clearInterval(this.tokenRefreshTimer),this.tokenRefreshTimer=void 0),this.wsClosed&&(this.criteriaEntries.clear(),this.criteriaEntriesBySubscriptionId.clear(),this.masterSubEmitter?.removeAllListeners())}),e.addEventListener("open",()=>{let r={type:"open"};this.masterSubEmitter?.dispatchEvent(r);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent({...r});this.refreshAllSubscriptions().catch(console.error),this.pingTimer??=setInterval(()=>{this.waitingForPong?(this.waitingForPong=!1,e.reconnect()):(e.send(JSON.stringify({type:"ping"})),this.waitingForPong=!0),this.gcUnrefEntries()},this.pingIntervalMs),this.tokenRefreshTimer??=setInterval(()=>{this.checkTokenExpirations(),this.gcUnrefEntries()},6e4)}),this.medplum.addEventListener("change",()=>{let r=this.medplum.getProfile();this.currentProfile&&r===void 0?this.ws.close():r&&this.currentProfile?.id!==r.id&&this.ws.reconnect(),this.currentProfile=r})}sendBind(e){this.ws.send(JSON.stringify({type:"bind-with-token",payload:{token:e}}))}sendUnbind(e){this.ws.readyState===WebSocket.OPEN&&this.ws.send(JSON.stringify({type:"unbind-from-token",payload:{token:e}}))}emitError(e,r){let n={type:"error",payload:r};this.masterSubEmitter?.dispatchEvent(n),e.emitter.dispatchEvent({...n})}maybeEmitDisconnect(e){let{subscriptionId:r}=e;if(r){let n={type:"disconnect",payload:{subscriptionId:r}};this.masterSubEmitter?.dispatchEvent(n),e.emitter.dispatchEvent({...n})}else console.warn("Called disconnect for `CriteriaEntry` before `subscriptionId` was present.")}isStale(e,r){return this.isEntryGettingRemoved(e)||e.generation!==r}maybeGetCriteriaEntry(e,r){let n=this.criteriaEntries.get(e);if(n){if(!r)return n.bareCriteria;for(let i of n.criteriaWithProps)if(Te(r,i.subscriptionProps))return i}}getAllCriteriaEmitters(){let e=[];for(let r of this.criteriaEntries.values())for(let n of bt(r))n.refCount>0&&e.push(n.emitter);return e}addCriteriaEntry(e){let{criteria:r,subscriptionProps:n}=e,i;this.criteriaEntries.has(r)?i=this.criteriaEntries.get(r):(i={criteriaWithProps:[]},this.criteriaEntries.set(r,i)),n?i.criteriaWithProps.push(e):i.bareCriteria=e}removeCriteriaEntry(e){e.state="removed",e.generation++;let{criteria:r,subscriptionProps:n,subscriptionId:i,token:o}=e;if(!this.criteriaEntries.has(r))return;let s=this.criteriaEntries.get(r);n?s.criteriaWithProps=s.criteriaWithProps.filter(a=>{let u=a.subscriptionProps;return!Te(n,u)}):s.bareCriteria=void 0,!s.bareCriteria&&s.criteriaWithProps.length===0&&(this.criteriaEntries.delete(r),this.masterSubEmitter?._removeCriteria(r)),i&&this.criteriaEntriesBySubscriptionId.delete(i),o&&this.sendUnbind(o)}async subscribeToCriteria(e){this.wsClosed&&await this.reconnectIfNeeded(),this.ws.readyState===WebSocket.OPEN&&this.medplum.getProfile()&&e.state==="idle"&&(e.state="connecting",await this.rebindCriteriaEntry(e))}async refreshAllSubscriptions(){this.criteriaEntriesBySubscriptionId.clear();let e=[],r=[];for(let n of this.criteriaEntries.values())for(let i of bt(n))i.refCount===0?r.push(i):e.push(i);for(let n of r)this.removeCriteriaEntry(n);for(let n of e)n.token&&this.sendUnbind(n.token),n.token=void 0,n.tokenExpiry=void 0,n.subscriptionId=void 0,n.state="idle",n.generation++,await this.subscribeToCriteria(n)}async rebindCriteriaEntry(e){let r=e.nextGeneration();try{if(!e.subscriptionId){let a=await this.medplum.createResource({...e.subscriptionProps,resourceType:"Subscription",status:"active",reason:`WebSocket subscription for ${I(this.medplum.getProfile())}`,channel:{type:"websocket"},criteria:e.criteria});if(e.subscriptionId??=a.id,this.isStale(e,r))return}let{parameter:n}=await this.medplum.get(`fhir/R4/Subscription/${e.subscriptionId}/$get-ws-binding-token`,{cache:"no-cache"}),i=n?.find(a=>a.name==="token")?.valueString,o=n?.find(a=>a.name==="websocket-url")?.valueUrl,s=n?.find(a=>a.name==="expiration")?.valueDateTime;if(!i)throw new m(T("Failed to get token"));if(!o)throw new m(T("Failed to get URL from $get-ws-binding-token"));if(!s)throw new m(T("Failed to get expiration from $get-ws-binding-token"));if(this.isStale(e,r))return;e.token=i,e.tokenExpiry=new Date(s).getTime(),this.criteriaEntriesBySubscriptionId.set(e.subscriptionId,e),this.sendBind(i)}catch(n){console.error(Ve(n)),e.generation===r&&!this.isEntryGettingRemoved(e)&&(e.state=e.state==="refreshing"?"active":"idle"),this.emitError(e,n)}}checkTokenExpirations(){if(!this.medplum.getProfile())return;let e=Date.now();for(let r of this.criteriaEntries.values())for(let n of bt(r))n.refCount===0||!n.tokenExpiry||n.tokenExpiry-e<=3e5&&n.state==="active"&&this.ws.readyState===WebSocket.OPEN&&(n.state="refreshing",this.rebindCriteriaEntry(n).catch(i=>{this.masterSubEmitter?.dispatchEvent({type:"error",payload:i})}))}addCriteria(e,r){this.masterSubEmitter&&this.masterSubEmitter._addCriteria(e);let n=this.maybeGetCriteriaEntry(e,r);if(n)return n.refCount===0&&(n.lastUnrefTime=void 0,n.generation++,n.state!=="active"&&(n.state=n.token?"active":"idle")),n.refCount+=1,n.state==="idle"&&this.subscribeToCriteria(n).catch(console.error),n.emitter;let i=new kn(e,r);return this.addCriteriaEntry(i),this.subscribeToCriteria(i).catch(console.error),i.emitter}removeCriteria(e,r){let n=this.maybeGetCriteriaEntry(e,r);if(!n||this.isEntryGettingRemoved(n)){console.warn("Criteria not known to `SubscriptionManager`. Possibly called remove too many times.");return}n.refCount-=1,n.refCount===0&&(n.lastUnrefTime=Date.now(),n.generation++)}gcUnrefEntries(){let e=Date.now(),r=[];for(let n of this.criteriaEntries.values())for(let i of bt(n))i.refCount===0&&i.lastUnrefTime!==void 0&&e-i.lastUnrefTime>=1e4&&r.push(i);for(let n of r)this.maybeEmitDisconnect(n),this.removeCriteriaEntry(n);r.length>0&&this.criteriaEntries.size===0&&this.closeWebSocket()}isEntryGettingRemoved(e){return e.refCount===0||e.state==="removed"}getWebSocket(){return this.ws}closeWebSocket(){if(!this.wsClosed){if(this.ws.readyState===WebSocket.OPEN)for(let e of this.criteriaEntries.values())for(let r of bt(e))r.token&&this.sendUnbind(r.token);this.wsClosed=!0,this.ws.close()}}reconnectWebSocket(){this.ws.reconnect(),this.wsClosed=!1}getCriteriaCount(){return this.getAllCriteriaEmitters().length}getMasterEmitter(){return this.masterSubEmitter||(this.masterSubEmitter=new Et(...Array.from(this.criteriaEntries.keys()))),this.masterSubEmitter}async reconnectIfNeeded(){Hc.includes(this.getWebSocket().readyState)&&await new Promise(e=>{let r=()=>{this.getWebSocket().removeEventListener("open",r),e()};this.getWebSocket().addEventListener("open",r),this.reconnectWebSocket()})}};function bt(t){return t.bareCriteria?[t.bareCriteria,...t.criteriaWithProps]:t.criteriaWithProps}var Gc=new ee(1e3);async function Kh({resource:t,subscription:e,context:r,getPreviousResource:n,logger:i}){if(!Qc(e,i))return i?.debug("Ignore subscription without recognized channel type"),!1;let o=e.criteria;if(!o)return i?.debug("Ignore rest hook missing criteria"),!1;let s=vt(o);if(t.resourceType!==s.resourceType)return i?.debug(`Ignore rest hook for different resourceType (wanted "${s.resourceType}", received "${t.resourceType}")`),!1;if(!await zc(e,t,n))return i?.debug("Ignore rest hook for criteria returning false"),!1;let u=!1,d=!1;for(let h of e.extension??v)if(h.url==="https://medplum.com/fhir/StructureDefinition/subscription-supported-interaction"&&(u=!0,h.valueCode===r.interaction)){d=!0;break}if(u&&!d)return i?.debug("Ignored rest hook for unsupported interaction",{subscription:e.id,interaction:r.interaction}),!1;if(!dr(t,s))return!1;let l=mn(e.meta)??[],f=mn(t.meta)??[];return l.length&&!l.some(h=>f.some(b=>b.reference===h.reference))?(i?.debug("Subscription suppressed due to mismatched accounts",{subscriptionId:e.id,resource:I(t)}),!1):!0}function Qc(t,e){let r=t.channel?.type;return r==="rest-hook"?t.channel?.endpoint?!0:(e?.debug("Ignore rest-hook missing URL"),!1):r==="websocket"}async function zc(t,e,r){let n=de(t,"https://medplum.com/fhir/StructureDefinition/fhir-path-criteria-expression");if(!n?.valueString)return!0;let i=await r(e),o={"%current":E(e),"%previous":E(i??{})};return k(n.valueString,[E(e)],o,Gc)?.[0]?.value===!0}var Mn="5.1.39-a4523f7",hg="medplum-cli",Jc=V.FHIR_JSON+", */*; q=0.1",Kc="https://api.medplum.com/",Yc=1e3,Xc=6e4,Zc=0,eu=3e5,tu="Binary/",_o={resourceType:"Device",id:"system",deviceName:[{type:"model-name",name:"System"}]},ru=2,st={ClientCredentials:"client_credentials",AuthorizationCode:"authorization_code",RefreshToken:"refresh_token",JwtBearer:"urn:ietf:params:oauth:grant-type:jwt-bearer",TokenExchange:"urn:ietf:params:oauth:grant-type:token-exchange",PreAuthorizedCode:"urn:ietf:params:oauth:grant-type:pre-authorized_code"},nu={AccessToken:"urn:ietf:params:oauth:token-type:access_token",RefreshToken:"urn:ietf:params:oauth:token-type:refresh_token",IdToken:"urn:ietf:params:oauth:token-type:id_token",Saml1Token:"urn:ietf:params:oauth:token-type:saml1",Saml2Token:"urn:ietf:params:oauth:token-type:saml2"},gg={ClientSecretBasic:"client_secret_basic",ClientSecretPost:"client_secret_post",ClientSecretJwt:"client_secret_jwt",PrivateKeyJwt:"private_key_jwt",None:"none"},iu={JwtBearer:"urn:ietf:params:oauth:client-assertion-type:jwt-bearer"},yg={ES256:"ES256",ES384:"ES384",ES512:"ES512",HS256:"HS256",RS256:"RS256",RS384:"RS384",RS512:"RS512"},Tr=class extends ue{constructor(r){super();c(this,"options");c(this,"fetch");c(this,"createPdfImpl");c(this,"storage");c(this,"requestCache");c(this,"cacheTime");c(this,"baseUrl");c(this,"fhirBaseUrl");c(this,"authorizeUrl");c(this,"tokenUrl");c(this,"logoutUrl");c(this,"fhircastHubUrl");c(this,"cdsServicesUrl");c(this,"defaultHeaders");c(this,"onUnauthenticated");c(this,"autoBatchTime");c(this,"autoBatchQueue");c(this,"maxRetries");c(this,"maxRetryTime");c(this,"refreshGracePeriod");c(this,"subscriptionManager");c(this,"medplumServer");c(this,"clientId");c(this,"clientSecret");c(this,"credentialsInHeader");c(this,"autoBatchTimerId");c(this,"accessToken");c(this,"accessTokenExpires");c(this,"refreshToken");c(this,"refreshPromise");c(this,"profilePromise");c(this,"sessionDetails");c(this,"currentRateLimits");c(this,"basicAuth");c(this,"initPromise");c(this,"initComplete",!0);c(this,"keyValueClient");c(this,"logLevel");if(r?.baseUrl&&!r.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");this.options=r??{},this.fetch=r?.fetch??ou(),this.storage=r?.storage??new St(void 0,r?.storagePrefix),this.createPdfImpl=r?.createPdf,this.baseUrl=ft(r?.baseUrl??Kc),this.fhirBaseUrl=W(this.baseUrl,r?.fhirUrlPath??"fhir/R4"),this.authorizeUrl=W(this.baseUrl,r?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=W(this.baseUrl,r?.tokenUrl??"oauth2/token"),this.logoutUrl=W(this.baseUrl,r?.logoutUrl??"oauth2/logout"),this.fhircastHubUrl=W(this.baseUrl,r?.fhircastHubUrl??"fhircast/STU3"),this.cdsServicesUrl=W(this.baseUrl,r?.cdsServicesUrl??"cds-services"),this.clientId=r?.clientId??"",this.clientSecret=r?.clientSecret??"",this.credentialsInHeader=r?.authCredentialsMethod==="header",this.defaultHeaders=r?.defaultHeaders??{},this.onUnauthenticated=r?.onUnauthenticated,this.refreshGracePeriod=r?.refreshGracePeriod??eu,this.logLevel=this.initializeLogLevel(r),this.maxRetries=r?.maxRetries??2,this.maxRetryTime=r?.maxRetryTime??2e3,this.cacheTime=r?.cacheTime??(Z()?Xc:Zc),this.cacheTime>0?this.requestCache=new ee(r?.resourceCacheSize??Yc):this.requestCache=void 0,r?.autoBatchTime?(this.autoBatchTime=r.autoBatchTime,this.autoBatchQueue=[]):(this.autoBatchTime=0,this.autoBatchQueue=void 0),r?.accessToken&&this.setAccessToken(r.accessToken),this.storage.getInitPromise===void 0?(r?.accessToken||this.attemptResumeActiveLogin().catch(console.error),this.initPromise=Promise.resolve(),this.dispatchEvent({type:"storageInitialized"})):(this.initComplete=!1,this.initPromise=this.storage.getInitPromise(),this.initPromise.then(()=>{r?.accessToken||this.attemptResumeActiveLogin().catch(console.error),this.initComplete=!0,this.dispatchEvent({type:"storageInitialized"})}).catch(n=>{console.error(n),this.initComplete=!0,this.dispatchEvent({type:"storageInitFailed",payload:{error:n}})})),this.setupStorageListener()}get isInitialized(){return this.initComplete}getInitPromise(){return this.initPromise}initializeLogLevel(r){return r?.logLevel?r.logLevel:r?.verbose!==void 0&&r.verbose?"verbose":"none"}async attemptResumeActiveLogin(){let r=this.getActiveLogin();r&&(this.setAccessToken(r.accessToken,r.refreshToken),await this.refreshProfile())}getBaseUrl(){return this.baseUrl}getAuthorizeUrl(){return this.authorizeUrl}getTokenUrl(){return this.tokenUrl}getLogoutUrl(){return this.logoutUrl}getFhircastHubUrl(){return this.fhircastHubUrl}getCdsServicesUrl(){return this.cdsServicesUrl}getDefaultHeaders(){return this.defaultHeaders}clear(){this.storage.clear(),this.clearActiveLogin()}clearActiveLogin(){this.storage.setString("activeLogin",void 0),this.requestCache?.clear(),this.accessToken=void 0,this.refreshToken=void 0,this.refreshPromise=void 0,this.accessTokenExpires=void 0,this.sessionDetails=void 0,this.medplumServer=void 0,this.dispatchEvent({type:"change"})}invalidateUrl(r){r=r.toString(),this.requestCache?.delete(r)}invalidateAll(){this.requestCache?.clear()}invalidateSearches(r){let n=W(this.fhirBaseUrl,r);for(let i of this.requestCache?.keys()??v)(i.endsWith(n)||i.includes(n+"?"))&&this.requestCache?.delete(i)}notifyResourceModified(r){r.operation!=="delete"&&r.resource?this.cacheResource(r.resource,void 0):r.id&&this.deleteCacheEntry(this.fhirUrl(r.resourceType,r.id).toString()),this.invalidateSearches(r.resourceType),this.dispatchResourceModified(r)}get(r,n={}){r=r.toString();let i=this.getCacheEntry(r,n);if(i)return i.value;let o;r.startsWith(this.fhirBaseUrl)&&this.autoBatchQueue&&!n.disableAutoBatch?o=new Promise((a,u)=>{this.autoBatchQueue.push({method:"GET",url:r.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:u}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):(n.method="GET",o=this.request(r,n));let s=new $(o);return this.setCacheEntry(r,s,n),s}post(r,n,i,o={}){return r=r.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(r),o.method="POST",this.request(r,o)}put(r,n,i,o={}){return r=r.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(r),o.method="PUT",this.request(r,o)}patch(r,n,i={}){return r=r.toString(),this.setRequestBody(i,n),this.setRequestContentType(i,V.JSON_PATCH),this.invalidateUrl(r),i.method="PATCH",this.request(r,i)}delete(r,n={}){return r=r.toString(),this.invalidateUrl(r),n.method="DELETE",this.request(r,n)}async startNewUser(r,n){let{codeChallengeMethod:i,codeChallenge:o}=await this.startPkce();return this.post("auth/newuser",{...r,clientId:r.clientId??this.clientId,codeChallengeMethod:i,codeChallenge:o},void 0,n)}async startNewProject(r,n){return this.post("auth/newproject",r,void 0,n)}async startNewPatient(r,n){return this.post("auth/newpatient",r,void 0,n)}async startLogin(r,n){return this.post("auth/login",{...await this.ensureCodeChallenge(r),clientId:r.clientId??this.clientId,scope:r.scope},void 0,n)}async startGoogleLogin(r,n){return this.post("auth/google",{...await this.ensureCodeChallenge(r),clientId:r.clientId??this.clientId,scope:r.scope},void 0,n)}async ensureCodeChallenge(r){return r.codeChallenge?r:{...r,...await this.startPkce()}}async signOut(){await this.post(this.logoutUrl,{}),this.clear()}async signInWithRedirect(r){let i=new URLSearchParams(he.getSearch()).get("code");if(!i){await this.requestAuthorization(r);return}return this.processCode(i)}signOutWithRedirect(){he.assign(this.logoutUrl)}async signInWithExternalAuth(r,n,i,o,s=!0){let a=o;s&&(a=await this.ensureCodeChallenge(o)),he.assign(this.getExternalAuthRedirectUri(r,n,i,a,s))}async exchangeExternalAccessToken(r,n,i){if(n=n??this.clientId,!n)throw new Error("MedplumClient is missing clientId");let o={grant_type:st.TokenExchange,subject_token_type:nu.AccessToken,client_id:n,subject_token:r};return i&&(o.membership_id=i),this.fetchTokens(o)}getExternalAuthRedirectUri(r,n,i,o,s=!0){let a=new URL(r);if(a.searchParams.set("response_type","code"),a.searchParams.set("client_id",n),a.searchParams.set("redirect_uri",i),a.searchParams.set("scope",o.scope??"openid profile email"),a.searchParams.set("state",JSON.stringify(o)),s){let{codeChallenge:u,codeChallengeMethod:d}=o;if(!d)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!u)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");a.searchParams.set("code_challenge_method",d),a.searchParams.set("code_challenge",u)}return a.toString()}fhirUrl(...r){return new URL(W(this.fhirBaseUrl,r.join("/")))}fhirSearchUrl(r,n){let i=this.fhirUrl(r);return n&&(i.search=eo(n)),i}search(r,n,i){let o=this.fhirSearchUrl(r,n),s="search-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=this.getBundle(o,i);return this.setCacheEntry(s,u,i),u}searchOne(r,n,i){let o=this.fhirSearchUrl(r,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s="searchOne-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new $(this.search(r,o.searchParams,i).then(d=>d.entry?.[0]?.resource));return this.setCacheEntry(s,u,i),u}searchResources(r,n,i){let s="searchResources-"+this.fhirSearchUrl(r,n).toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new $(this.search(r,n,i).then(Lo));return this.setCacheEntry(s,u,i),u}async*searchResourcePages(r,n,i){let o=this.fhirSearchUrl(r,n);for(;o;){let s=new URL(o).searchParams;s.has("_count")||s.set("_count","1000");let a=await this.search(r,s,i),u=a.link?.find(d=>d.relation==="next");if(!a.entry?.length&&!u)break;yield Lo(a),o=u?.url?new URL(u.url):void 0}}valueSetExpand(r,n){let i=this.fhirUrl("ValueSet","$expand");return i.search=new URLSearchParams(r).toString(),this.get(i.toString(),n)}getCached(r,n){let i=this.requestCache?.get(this.fhirUrl(r,n).toString())?.value;return i?.isOk()?i.read():void 0}getCachedReference(r){let n=r.reference;if(!n)return;if(n==="system")return _o;let[i,o]=n.split("/");if(!(!i||!o))return this.getCached(i,o)}readResource(r,n,i){if(!n)throw new Error('The "id" parameter cannot be null, undefined, or an empty string.');return this.get(this.fhirUrl(r,n),i)}readReference(r,n){let i=r.reference;if(!i)return new $(Promise.reject(new Error("Missing reference")));if(i==="system")return new $(Promise.resolve(_o));let[o,s]=i.split("/");return!o||!s?new $(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}readCanonical(r,n,i){return Array.isArray(r)?this.searchOne("",{_type:r.join(","),url:n},i):this.searchOne(r,"url="+n,i)}requestSchema(r,n){if(Ii(r))return Promise.resolve();let i=r+"-requestSchema",o=this.getCacheEntry(i,void 0);if(o)return o.value;let s=new $((async()=>{let a=`{
|
|
1
|
+
var Ds=Object.defineProperty;var Vs=(t,e,r)=>e in t?Ds(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var c=(t,e,r)=>Vs(t,typeof e!="symbol"?e+"":e,r);var te=class{constructor(e=10){c(this,"max");c(this,"cache");this.max=e,this.cache=new Map}clear(){this.cache.clear()}get(e){let r=this.cache.get(e);return r&&(this.cache.delete(e),this.cache.set(e,r)),r}set(e,r){this.cache.has(e)?this.cache.delete(e):this.cache.size>=this.max&&this.cache.delete(this.first()),this.cache.set(e,r)}delete(e){this.cache.delete(e)}keys(){return this.cache.keys()}first(){return this.cache.keys().next().value}};var It=class{constructor(e,r){c(this,"operator");c(this,"child");this.operator=e,this.child=r}toString(){return`${this.operator}(${this.child.toString()})`}},A=class{constructor(e,r,n){c(this,"operator");c(this,"left");c(this,"right");this.operator=e,this.left=r,this.right=n}toString(){return`(${this.left.toString()} ${this.operator} ${this.right.toString()})`}},kt=class{constructor(){c(this,"prefixParselets",{});c(this,"infixParselets",{})}registerInfix(e,r){return this.infixParselets[e]=r,this}registerPrefix(e,r){return this.prefixParselets[e]=r,this}prefix(e,r,n){return this.registerPrefix(e,{parse(i,o){let s=i.consumeAndParse(r);return n(o,s)}})}infixLeft(e,r,n){return this.registerInfix(e,{parse(i,o,s){let a=i.consumeAndParse(r);return n(o,s,a)},precedence:r})}construct(e){return new Vr(e,this.prefixParselets,this.infixParselets)}},Vr=class{constructor(e,r,n){c(this,"tokens");c(this,"prefixParselets");c(this,"infixParselets");this.tokens=e,this.prefixParselets=r,this.infixParselets=n}hasMore(){return this.tokens.length>0}match(e){return this.peek()?.id!==e?!1:(this.consume(),!0)}consumeAndParse(e=1/0){let r=this.consume(),n=this.prefixParselets[r.id];if(!n)throw new Error(`Parse error at "${r.value}" (line ${r.line}, column ${r.column}). No matching prefix parselet.`);let i=n.parse(this,r);for(;e>this.getPrecedence();){let o=this.consume();i=this.getInfixParselet(o).parse(this,i,o)}return i}getPrecedence(){let e=this.peek();if(!e)return 1/0;let r=this.getInfixParselet(e);return r?r.precedence:1/0}consume(e,r){if(!this.tokens.length)throw new Error("Cant consume unknown more tokens.");if(e&&this.peek()?.id!==e){let n=this.peek();throw new Error(`Expected ${e} but got "${n.id}" (${n.value}) at line ${n.line} column ${n.column}.`)}if(r&&this.peek()?.value!==r){let n=this.peek();throw new Error(`Expected "${r}" but got "${n.value}" at line ${n.line} column ${n.column}.`)}return this.tokens.shift()}peek(){return this.tokens.length>0?this.tokens[0]:void 0}removeComments(){this.tokens=this.tokens.filter(e=>e.id!=="Comment")}getInfixParselet(e){return this.infixParselets[e.id==="Symbol"?e.value:e.id]}};function re(t){if(t!==void 0)return Array.isArray(t)?t:[t]}var li="http://unitsofmeasure.org",vl="http://loinc.org",Sl="http://snomed.info/sct",Tl="http://www.nlm.nih.gov/research/umls/rxnorm",bl="http://www.ama-assn.org/go/cpt",El="http://hl7.org/fhir/sid/icd-10",Rl="http://hl7.org/fhir/sid/ndc",Mt="http://hl7.org",_s="http://terminology.hl7.org",pi=`${_s}/CodeSystem/v2-0203`;var Dt="ok",Vt="created",Nr="gone",Lr="not-modified",Fr="found",Ur="not-found",Br="conflict",qr="unauthorized",fi="forbidden",mi="precondition-failed",hi="content-too-large",gi="unsupported-media-type",yi="multiple-matches",xi="too-many-requests",_r="https://medplum.com/fhir/StructureDefinition/rate-limit-reset",_t="accepted",vi="server-timeout",Si="business-rule",wl={resourceType:"OperationOutcome",id:Dt,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},Ol={resourceType:"OperationOutcome",id:Vt,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},Il={resourceType:"OperationOutcome",id:Lr,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},Ti={resourceType:"OperationOutcome",id:Ur,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},Je={resourceType:"OperationOutcome",id:qr,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},bi={...Je,issue:[...Je.issue,{severity:"error",code:"expired",details:{text:"Token expired"}}]},Wr={...Je,issue:[...Je.issue,{severity:"error",code:"invalid",details:{text:"Token not issued for this audience"}}]},kl={resourceType:"OperationOutcome",id:fi,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},Ml={resourceType:"OperationOutcome",id:Nr,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},Dl={resourceType:"OperationOutcome",id:mi,issue:[{severity:"error",code:"processing",details:{text:"Precondition Failed"}}]};function Vl(t){return{resourceType:"OperationOutcome",id:hi,issue:[{severity:"error",code:"too-long",details:{text:t}}]}}var _l={resourceType:"OperationOutcome",id:gi,issue:[{severity:"error",code:"not-supported",details:{text:"Unsupported media type"}}]},Nl={resourceType:"OperationOutcome",id:yi,issue:[{severity:"error",code:"multiple-matches",details:{text:"Multiple resources found matching condition"}}]},Ll={resourceType:"OperationOutcome",id:xi,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function Fl(t,e){t.extension=[...(t.extension??v).filter(r=>r.url!==_r),{url:_r,valueUnsignedInt:Math.ceil(e/1e3)}]}function Ul(t){let e=t.extension?.find(r=>r.url===_r)?.valueUnsignedInt;if(e!==void 0)return e*1e3;for(let r of t.issue)try{let n=JSON.parse(r.diagnostics??"");if(typeof n.msBeforeNext=="number")return n.msBeforeNext}catch{}}function Bl(t){return{resourceType:"OperationOutcome",id:_t,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:t}]}}function w(t,e){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:t},...e?{expression:re(e)}:void 0}]}}function ql(t,e){return{resourceType:"OperationOutcome",id:Br,issue:[{severity:"error",code:"conflict",details:{coding:e?[{code:e}]:void 0,text:t}}]}}function S(t,e,r,n){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:r??"structure",details:{text:t},...e?{expression:e}:void 0,...n?{diagnostics:n}:void 0}]}}function Wl(t){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:t.toString()}]}}function $l(t){return{resourceType:"OperationOutcome",id:vi,issue:[{severity:"error",code:"timeout",details:{text:t??"Server timeout"}}]}}function Ns(t){let e=t.toString();return{resourceType:"OperationOutcome",id:Fr,issue:[{severity:"information",code:"informational",details:{coding:[{system:"urn:ietf:rfc:3986",code:e}],text:"Redirect to "+e}}]}}function jl(t){return{...Ns(t),id:Dt}}function Hl(t){return t?.issue?.[0]?.details?.coding?.find(e=>e.system==="urn:ietf:rfc:3986")?.code}function Gl(t,e){return{resourceType:"OperationOutcome",id:Si,issue:[{severity:"error",code:"business-rule",details:{id:t,text:e}}]}}function $r(t){return!t||typeof t!="object"?!1:t instanceof Error||typeof DOMException<"u"&&t instanceof DOMException?!0:Object.prototype.toString.call(t)==="[object Error]"}function dt(t){return typeof t=="object"&&t!==null&&t.resourceType==="OperationOutcome"}function jr(t){return t.id===Dt||t.id===Vt||t.id===Lr||t.id===_t}function Ql(t){return t.id===Vt}function zl(t){return t.id===_t}function Jl(t){return t.id===Fr}function Kl(t){return t.id===Ur}function Yl(t){return t.id===Br}function Xl(t){return t.id===Nr}function Zl(t){return t.id===qr}function ep(t){switch(t.id){case Dt:return 200;case Vt:return 201;case _t:return 202;case Fr:return 302;case Lr:return 304;case qr:return 401;case fi:return 403;case Ur:return 404;case Br:return 409;case Nr:return 410;case mi:case yi:return 412;case hi:return 413;case gi:return 415;case Si:return 422;case xi:return 429;case vi:return 504;default:return t.issue?.[0]?.code==="exception"?500:400}}function tp(t,e){if(!jr(t)||e===void 0)throw new m(t)}var m=class extends Error{constructor(r,n){super(Ei(r),n);c(this,"outcome");this.name="OperationOutcomeError",this.outcome=r}};function Nt(t){return t instanceof m?t.outcome:dt(t)?t:w(_e(t))}function _e(t){return t?typeof t=="string"?t:$r(t)?t.message:dt(t)?Ei(t):typeof t=="object"&&"code"in t&&typeof t.code=="string"?t.code:JSON.stringify(t):"Unknown error"}function Ei(t){let e=t.issue?.map(Ls)??[];return e.length>0?e.join("; "):"Unknown error"}function Ls(t){let e;return t.details?.text?t.diagnostics?e=`${t.details.text} (${t.diagnostics})`:e=t.details.text:t.diagnostics?e=t.diagnostics:e="Unknown error",t.expression?.length&&(e+=` (${t.expression.join(", ")})`),e}function Ne(t,e,r,n,i){let o={severity:t,code:e,details:{text:r},expression:[n]};return i&&(o.diagnostics=JSON.stringify(i)),o}function R(t,e){return Ne("error","structure",e,t)}function Ri(t,e){return Ne("error","invariant",`Constraint ${e.key} not met: ${e.description}`,t,{fhirpath:e.expression})}function Ci(t,e,r,n){return Ne("error","processing",e,t,{...n,error:r})}var Fs={"http://hl7.org/fhirpath/System.String":"string"};function ip(t){let e={};return t.min!==0&&(e.min=t.min),t.max!==1&&Number.isFinite(t.max)?e.max=t.max:t.max===Number.POSITIVE_INFINITY&&(e.max=Number.MAX_SAFE_INTEGER),e.type=t.type?.map(r=>({...r,extension:void 0,code:Fs[r.code]??r.code})),e}function Us(t,e){let r=e.max&&e.max===Number.MAX_SAFE_INTEGER?Number.POSITIVE_INFINITY:e.max;return{path:t,description:"",type:e.type??[],min:e.min??0,max:r??1,isArray:!!r&&r>1,constraints:[]}}function Pi(t){let e=Object.create(null);for(let[r,n]of Object.entries(t))e[r]={name:r,type:r,path:r,elements:Object.fromEntries(Object.entries(n.elements).map(([i,o])=>[i,Us(i,o)])),constraints:[],innerTypes:[]};return e}var Ai={Element:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]}}},BackboneElement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]}}},Address:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"code"}]},text:{type:[{code:"string"}]},line:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Annotation:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},coding:{max:9007199254740991,type:[{code:"Coding"}]},text:{type:[{code:"string"}]}}},Coding:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},code:{type:[{code:"code"}]},display:{type:[{code:"string"}]},userSelected:{type:[{code:"boolean"}]}}},ContactDetail:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},name:{type:[{code:"string"}]},telecom:{max:9007199254740991,type:[{code:"ContactPoint"}]}}},ContactPoint:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"code"}]},value:{type:[{code:"string"}]},use:{type:[{code:"code"}]},rank:{type:[{code:"positiveInt"}]},period:{type:[{code:"Period"}]}}},Contributor:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{min:1,type:[{code:"string"}]},contact:{max:9007199254740991,type:[{code:"ContactDetail"}]}}},Count:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},DataRequirement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},profile:{max:9007199254740991,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:9007199254740991,type:[{code:"string"}]},codeFilter:{max:9007199254740991,type:[{code:"DataRequirementCodeFilter"}]},dateFilter:{max:9007199254740991,type:[{code:"DataRequirementDateFilter"}]},limit:{type:[{code:"positiveInt"}]},sort:{max:9007199254740991,type:[{code:"DataRequirementSort"}]}}},DataRequirementCodeFilter:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},path:{type:[{code:"string"}]},searchParam:{type:[{code:"string"}]},valueSet:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/ValueSet"]}]},code:{max:9007199254740991,type:[{code:"Coding"}]}}},DataRequirementDateFilter:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},path:{type:[{code:"string"}]},searchParam:{type:[{code:"string"}]},"value[x]":{type:[{code:"dateTime"},{code:"Period"},{code:"Duration"}]}}},DataRequirementSort:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},direction:{min:1,type:[{code:"code"}]}}},Distance:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Dosage:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},sequence:{type:[{code:"integer"}]},text:{type:[{code:"string"}]},additionalInstruction:{max:9007199254740991,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:9007199254740991,type:[{code:"DosageDoseAndRate"}]},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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},ElementDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},representation:{max:9007199254740991,type:[{code:"code"}]},sliceName:{type:[{code:"string"}]},sliceIsConstraining:{type:[{code:"boolean"}]},label:{type:[{code:"string"}]},code:{max:9007199254740991,type:[{code:"Coding"}]},slicing:{type:[{code:"ElementDefinitionSlicing"}]},short:{type:[{code:"string"}]},definition:{type:[{code:"markdown"}]},comment:{type:[{code:"markdown"}]},requirements:{type:[{code:"markdown"}]},alias:{max:9007199254740991,type:[{code:"string"}]},min:{type:[{code:"unsignedInt"}]},max:{type:[{code:"string"}]},base:{type:[{code:"ElementDefinitionBase"}]},contentReference:{type:[{code:"uri"}]},type:{max:9007199254740991,type:[{code:"ElementDefinitionType"}]},"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:9007199254740991,type:[{code:"ElementDefinitionExample"}]},"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:9007199254740991,type:[{code:"id"}]},constraint:{max:9007199254740991,type:[{code:"ElementDefinitionConstraint"}]},mustSupport:{type:[{code:"boolean"}]},isModifier:{type:[{code:"boolean"}]},isModifierReason:{type:[{code:"string"}]},isSummary:{type:[{code:"boolean"}]},binding:{type:[{code:"ElementDefinitionBinding"}]},mapping:{max:9007199254740991,type:[{code:"ElementDefinitionMapping"}]}}},ElementDefinitionSlicingDiscriminator:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},path:{min:1,type:[{code:"string"}]}}},ElementDefinitionSlicing:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},discriminator:{max:9007199254740991,type:[{code:"ElementDefinitionSlicingDiscriminator"}]},description:{type:[{code:"string"}]},ordered:{type:[{code:"boolean"}]},rules:{min:1,type:[{code:"code"}]}}},ElementDefinitionBase:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},min:{min:1,type:[{code:"unsignedInt"}]},max:{min:1,type:[{code:"string"}]}}},ElementDefinitionType:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},code:{min:1,type:[{code:"uri"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition","http://hl7.org/fhir/StructureDefinition/ImplementationGuide"]}]},targetProfile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition","http://hl7.org/fhir/StructureDefinition/ImplementationGuide"]}]},aggregation:{max:9007199254740991,type:[{code:"code"}]},versioning:{type:[{code:"code"}]}}},ElementDefinitionExample:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},identity:{min:1,type:[{code:"id"}]},language:{type:[{code:"code"}]},map:{min:1,type:[{code:"string"}]},comment:{type:[{code:"string"}]}}},Expression:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},url:{min:1,type:[{code:"uri"}]},"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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},text:{type:[{code:"string"}]},family:{type:[{code:"string"}]},given:{max:9007199254740991,type:[{code:"string"}]},prefix:{max:9007199254740991,type:[{code:"string"}]},suffix:{max:9007199254740991,type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Identifier:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},versionId:{type:[{code:"id"}]},lastUpdated:{type:[{code:"instant"}]},source:{type:[{code:"uri"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},security:{max:9007199254740991,type:[{code:"Coding"}]},tag:{max:9007199254740991,type:[{code:"Coding"}]},project:{type:[{code:"uri"}]},author:{type:[{code:"Reference"}]},onBehalfOf:{type:[{code:"Reference"}]},account:{type:[{code:"Reference"}]},accounts:{max:9007199254740991,type:[{code:"Reference"}]},compartment:{max:9007199254740991,type:[{code:"Reference"}]},deleted:{type:[{code:"boolean"}]}}},Money:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},currency:{type:[{code:"code"}]}}},Narrative:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},status:{min:1,type:[{code:"code"}]},div:{min:1,type:[{code:"xhtml"}]}}},ParameterDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},start:{type:[{code:"dateTime"}]},end:{type:[{code:"dateTime"}]}}},Population:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"age[x]":{type:[{code:"Range"},{code:"CodeableConcept"}]},gender:{type:[{code:"CodeableConcept"}]},race:{type:[{code:"CodeableConcept"}]},physiologicalCondition:{type:[{code:"CodeableConcept"}]}}},ProdCharacteristic:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,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:9007199254740991,type:[{code:"string"}]},imprint:{max:9007199254740991,type:[{code:"string"}]},image:{max:9007199254740991,type:[{code:"Attachment"}]},scoring:{type:[{code:"CodeableConcept"}]}}},ProductShelfLife:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},identifier:{type:[{code:"Identifier"}]},type:{min:1,type:[{code:"CodeableConcept"}]},period:{min:1,type:[{code:"Quantity"}]},specialPrecautionsForStorage:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},Quantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Range:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},numerator:{type:[{code:"Quantity"}]},denominator:{type:[{code:"Quantity"}]}}},Reference:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},reference:{type:[{code:"string"}]},type:{type:[{code:"uri"}]},identifier:{type:[{code:"Identifier"}]},display:{type:[{code:"string"}]}}},RelatedArtifact:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,max:9007199254740991,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:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"amount[x]":{type:[{code:"Quantity"},{code:"Range"},{code:"string"}]},amountType:{type:[{code:"CodeableConcept"}]},amountText:{type:[{code:"string"}]},referenceRange:{type:[{code:"SubstanceAmountReferenceRange"}]}}},SubstanceAmountReferenceRange:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},lowLimit:{type:[{code:"Quantity"}]},highLimit:{type:[{code:"Quantity"}]}}},Timing:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},event:{max:9007199254740991,type:[{code:"dateTime"}]},repeat:{type:[{code:"TimingRepeat"}]},code:{type:[{code:"CodeableConcept"}]}}},TimingRepeat:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:9007199254740991,type:[{code:"code"}]},timeOfDay:{max:9007199254740991,type:[{code:"time"}]},when:{max:9007199254740991,type:[{code:"code"}]},offset:{type:[{code:"unsignedInt"}]}}},TriggerDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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:9007199254740991,type:[{code:"DataRequirement"}]},condition:{type:[{code:"Expression"}]}}},UsageContext:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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"]}]}}},MoneyQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},SimpleQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,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"}]}}},IdentityProvider:{elements:{issuer:{type:[{code:"string"}]},audience:{type:[{code:"string"}]},jwksUrl:{type:[{code:"string"}]},authorizeUrl:{type:[{code:"string"}]},tokenUrl:{type:[{code:"string"}]},tokenAuthMethod:{type:[{code:"code"}]},userInfoUrl:{type:[{code:"string"}]},userInfoMode:{type:[{code:"code"}]},userInfoApiKey:{type:[{code:"string"}]},clientId:{type:[{code:"string"}]},clientSecret:{type:[{code:"string"}]},usePkce:{type:[{code:"boolean"}]},useSubject:{type:[{code:"boolean"}]},identitySource:{type:[{code:"code"}]},identityMappingMode:{type:[{code:"code"}]}}}};function zr(t){return new Gr(t).parse()}var Le=Pi(Ai),Jr=Object.create(null),wi=Object.create(null),qs={"http://hl7.org/fhir/StructureDefinition/MoneyQuantity":"MoneyQuantity","http://hl7.org/fhir/StructureDefinition/SimpleQuantity":"SimpleQuantity","http://hl7.org/fhir/uv/sql-on-fhir/StructureDefinition/ViewDefinition":"ViewDefinition"};function Mi(t){let e;return e=wi[t],e||(e=wi[t]=Object.create(null)),e}function Kr(t){let r=(Array.isArray(t)?t:t.entry?.map(n=>n.resource)??[]).filter(n=>n?.resourceType==="StructureDefinition");Li(r);for(let n of r)Yr(n)}function Yr(t){if(!t?.name)throw new Error("Failed loading StructureDefinition from bundle");if(t.resourceType!=="StructureDefinition")return;let e=zr(t),r=qs[t.url],n,i;r?(n=Le,i=r):t.url===`http://hl7.org/fhir/StructureDefinition/${t.type}`||t.url===`https://medplum.com/fhir/StructureDefinition/${t.type}`||t.type?.startsWith("http://")||t.type?.startsWith("https://")?(n=Le,i=t.type):(n=Mi(t.url),i=t.type),n[i]=e;for(let o of e.innerTypes)o.parentType=e,n[o.name]=o;Jr[t.url]=e}function Di(){return Le}function Vi(t){return!!Le[t]}function Fe(t,e){if(e){let r=Mi(e)[t];if(r)return r}return Le[t]}function Se(t,e){let r=Fe(t,e);if(!r)throw new m(w("Unknown data type: "+t));return r}function Lt(t){let e=Le[t];return e&&Xr(e)}function _i(t){return!!Jr[t]}function Ni(t){return Jr[t]}var Gr=class{constructor(e){c(this,"root");c(this,"elements");c(this,"elementIndex");c(this,"index");c(this,"resourceSchema");c(this,"slicingContext");c(this,"innerTypes");c(this,"backboneContext");if(!e.snapshot?.element||e.snapshot.element.length===0)throw new Error(`No snapshot defined for StructureDefinition '${e.name}'`);this.root=e.snapshot.element[0],this.elements=e.snapshot.element.slice(1),this.elementIndex=Object.create(null),this.index=0,this.resourceSchema={name:e.name,path:this.root.path,title:e.title,type:e.type,url:e.url,version:e.version,kind:e.kind,description:Hs(e),elements:{},constraints:this.parseElementDefinition(this.root).constraints,innerTypes:[],summaryProperties:new Set,mandatoryProperties:new Set},this.innerTypes=[]}parse(){let e=this.next();for(;e;){if(e.sliceName)this.parseSliceStart(e);else if(e.id?.includes(":")){if(this.slicingContext?.current){let r=Hr(e,this.slicingContext.path);this.slicingContext.current.elements[r]=this.parseElementDefinition(e)}}else{let r=this.parseElementDefinition(e);this.checkFieldEnter(e,r);let n=this.backboneContext;for(;n;){if(e.path?.startsWith(n.path+".")){n.type.elements[Hr(e,n.path)]=r;break}n=n.parent}if(!n){let i=Hr(e,this.root.path);e.isSummary&&this.resourceSchema.summaryProperties?.add(i.replace("[x]","")),r.min>0&&this.resourceSchema.mandatoryProperties?.add(i.replace("[x]","")),this.resourceSchema.elements[i]=r}this.checkFieldExit(e)}e=this.next()}return this.checkFieldExit(),this.innerTypes.length>0&&(this.resourceSchema.innerTypes=this.innerTypes),this.resourceSchema}checkFieldEnter(e,r){this.isInnerType(e)&&this.enterInnerType(e),this.slicingContext&&!Ke(this.slicingContext.path,e?.path)&&(this.slicingContext=void 0),e.slicing&&!this.slicingContext&&this.enterSlice(e,r)}enterInnerType(e){for(;this.backboneContext&&!Ke(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;let r=Qr(e);this.backboneContext={type:{name:r,type:r,path:e.path,title:e.label,description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path,parent:Ke(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,r){js(e)&&!this.peek()?.sliceName||(r.slicing={discriminator:(e.slicing?.discriminator??[]).map(n=>{if(n.type!=="value"&&n.type!=="pattern"&&n.type!=="type")throw new Error(`Unsupported slicing discriminator type: ${n.type}`);return{path:n.path,type:n.type}}),slices:[],ordered:e.slicing?.ordered??!1,rule:e.slicing?.rules},this.slicingContext={field:r.slicing,path:e.path??""})}checkFieldExit(e=void 0){if(this.backboneContext&&!Ke(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!Ke(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),this.backboneContext=void 0}next(){let e=this.peek();if(e)return this.index++,e}peek(){let e=this.elements[this.index];if(e){if(this.elementIndex[e.path??""]=e,e.contentReference){let r=e.contentReference.slice(e.contentReference.indexOf("#")+1),n=this.elementIndex[r];return n?{...n,id:e.id,path:e.path,min:e.min??n.min,max:e.max??n.max,base:{path:n.base?.path??r,min:e.base?.min??n.base?.min??n.min,max:e.base?.max??n.base?.max??n.max},contentReference:e.contentReference,definition:e.definition}:void 0}return e}}isInnerType(e){let r=this.peek();return!!(Ke(e?.path,r?.path)&&e.type?.some(n=>["BackboneElement","Element"].includes(n.code)))}parseSliceStart(e){if(!this.slicingContext)throw new Error(`Invalid slice start before discriminator: ${e.sliceName} (${e.id})`);this.slicingContext.current={...this.parseElementDefinition(e),name:e.sliceName??"",definition:e.definition,elements:{}},this.slicingContext.field.slices.push(this.slicingContext.current)}parseElementDefinitionType(e){return(e.type??[]).map(r=>{let n;return(r.code==="BackboneElement"||r.code==="Element")&&(n=Qr(e)),n||(n=le(r,"http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type")?.valueUrl),n||(n=r.code??""),{code:n,targetProfile:r.targetProfile,profile:r.profile}})}parseElementDefinition(e){let r=Ii(e.max),n=e.base?.max?Ii(e.base.max):r,i={type:"ElementDefinition",value:e};return{description:e.definition||"",path:e.path||e.base?.path||"",min:e.min??0,max:r,isArray:n>1,constraints:(e.constraint??[]).map(o=>({key:o.key??"",severity:o.severity??"error",expression:o.expression??"",description:o.human??""})),type:this.parseElementDefinitionType(e),fixed:ki(_(i,"fixed[x]")),pattern:ki(_(i,"pattern[x]")),binding:e.binding}}};function fp(t,e){if(!t)return;let r=[];for(let n of e){r.push("_"+n);let i=Le[t.resourceType].elements[n+"[x]"];i&&r.push(...i.type.map(o=>n+B(o.code)))}for(let n of Object.getOwnPropertyNames(t))!e.includes(n)&&!r.includes(n)&&!Ws.includes(n)&&Object.defineProperty(t,n,{enumerable:!1,writable:!1,value:void 0});return t.meta={...t.meta,tag:t.meta?.tag?t.meta.tag.concat(Oi):[Oi]},t}var Oi={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},Ws=["resourceType","id","meta"];function Ii(t){return t==="*"?Number.POSITIVE_INFINITY:Number.parseInt(t,10)}function Hr(t,e=""){return $s(t.path,e)}function $s(t,e){return t?e&&t.startsWith(e)?t.substring(e.length+1):t:""}function Ke(t,e){return!t||!e?!1:e.startsWith(t+".")||e===t}function ki(t){return Array.isArray(t)&&t.length>0?t[0]:O(t)?void 0:t}function js(t){let e=t.slicing?.discriminator;return!!(t.type?.some(r=>r.code==="Extension")&&e?.length===1&&e[0].type==="value"&&e[0].path==="url")}function Hs(t){let e=t.description;return e?.startsWith(`Base StructureDefinition for ${t.name} Type: `)&&(e=e.substring(`Base StructureDefinition for ${t.name} Type: `.length)),e}function tn(t,e,r){new Zr(t,e,r).crawl()}function Tp(t,e,r){return new en(t,e,r).crawl()}var Zr=class{constructor(e,r,n){c(this,"root");c(this,"visitor");c(this,"schema");c(this,"initialPath");c(this,"excludeMissingProperties");this.root=e,this.visitor=r,this.schema=n?.schema??Se(e.type),this.initialPath=n?.initialPath??this.schema.path,this.excludeMissingProperties=n?.skipMissingProperties}crawl(){this.crawlObject({...this.root,path:this.initialPath},this.schema,this.initialPath)}crawlObject(e,r,n){let i=D(e.value);if(i&&this.visitor.onEnterResource&&this.visitor.onEnterResource(n,e,r),this.visitor.onEnterObject&&this.visitor.onEnterObject(n,e,r),this.excludeMissingProperties)for(let o of Object.keys(e.value))this.crawlProperty(e,o,r,`${n}.${o}`);else for(let o of Object.keys(r.elements))this.crawlProperty(e,o,r,`${n}.${o}`);this.visitor.onExitObject&&this.visitor.onExitObject(n,e,r),i&&this.visitor.onExitResource&&this.visitor.onExitResource(n,e,r)}crawlProperty(e,r,n,i){let o=Ye(e,r,{withPath:!0});this.visitor.visitProperty&&this.visitor.visitProperty(e,r,i,o,n);for(let s of o)for(let a of re(s))this.crawlPropertyValue(a,i,n)}crawlPropertyValue(e,r,n){if(!Ft(e.type)){let i=n.innerTypes?.find(o=>o.name===e.type)??Se(e.type);this.crawlObject(e,i,r)}}},en=class{constructor(e,r,n){c(this,"root");c(this,"visitor");c(this,"schema");c(this,"initialPath");c(this,"excludeMissingProperties");this.root=e,this.visitor=r,this.schema=n?.schema??Se(e.type),this.initialPath=n?.initialPath??this.schema.path,this.excludeMissingProperties=n?.skipMissingProperties}async crawl(){return this.crawlObject({...this.root,path:this.initialPath},this.schema,this.initialPath)}async crawlObject(e,r,n){let i=D(e.value);if(i&&this.visitor.onEnterResource&&await this.visitor.onEnterResource(n,e,r),this.visitor.onEnterObject&&await this.visitor.onEnterObject(n,e,r),this.excludeMissingProperties&&e.value)for(let o of Object.keys(e.value))await this.crawlProperty(e,o,r,`${n}.${o}`);else for(let o of Object.keys(r.elements))await this.crawlProperty(e,o,r,`${n}.${o}`);this.visitor.onExitObject&&await this.visitor.onExitObject(n,e,r),i&&this.visitor.onExitResource&&await this.visitor.onExitResource(n,e,r)}async crawlProperty(e,r,n,i){let o=Ye(e,r,{withPath:!0});if(this.visitor.visitPropertyAsync)for(let s of o)await this.visitor.visitPropertyAsync(e,r,i,s,n);for(let s of o)for(let a of re(s))await this.crawlPropertyValue(a,i,n)}async crawlPropertyValue(e,r,n){if(!Ft(e.type)){let i=n.innerTypes?.find(o=>o.name===e.type)??Se(e.type);await this.crawlObject(e,i,r)}}};function Ye(t,e,r){if(t===void 0)return[void 0];if(e==="$this")return[t];let n=r?.withPath?rn:_,[i,...o]=e.split("."),s=[n(t,i,r)];for(let a of o){let u=[];for(let d of s)if(Array.isArray(d))for(let l of d)u.push(n(l,a,r));else(r?.withPath&&d?.value!==void 0||!r?.withPath&&d!==void 0)&&u.push(n(d,a,r));s=u}return s}function rn(t,e,r){let n=t.path;return Gs(_(t,e,r),n,e)}function Gs(t,e,r){let n=e?e+".":"";return t===void 0?{type:"undefined",value:void 0,path:`${n}${r}`}:Array.isArray(t)?t.map((i,o)=>({...i,path:`${n}${r}[${o}]`})):{...t,path:`${n}${r}`}}function Xe(t){if(t[0]===t[0].toUpperCase()){let e=t.indexOf(".");if(e===-1)return"";t=t.slice(e+1)}return`.${t}`.replaceAll(".","/").replaceAll(/\[(\d+)]/g,(e,r)=>`/${r}`)}var nn={base64Binary:"string",boolean:"boolean",canonical:"string",code:"string",date:"string",dateTime:"string",decimal:"number",id:"string",instant:"string",integer:"number",integer64:"string",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"},Qs=new te(1e3);function Ft(t){return t==="undefined"||t in nn}var Ut={canonical:/^\S*$/,code:/^[^\s]+( [^\s]+)*$/,date:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2]\d|3[0-1]))?)?$/,dateTime:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2]\d|3[0-1])(T([01]\d|2[0-3])(:[0-5]\d:([0-5]\d|60)(\.\d{1,9})?)?)?)?(Z|[+-]((0\d|1[0-3]):[0-5]\d|14:00)?)?)?$/,id:/^[A-Za-z0-9\-.]{1,64}$/,instant:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\d|3[0-1])T([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?(Z|[+-]((0\d|1[0-3]):[0-5]\d|14:00))$/,markdown:/^[\r\n\t\u0020-\uFFFF]+$/,oid:/^urn:oid:[0-2](\.(0|[1-9]\d*))+$/,string:/^[\r\n\t\u0020-\uFFFF]+$/,time:/^([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?$/,uri:/^\S*$/,url:/^\S*$/,uuid:/^urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,xhtml:/.*/},zs={"ele-1":!0,"dom-3":!0,"org-1":!0,"sdf-19":!0};function Vp(t,e){if(!Lt(t.resourceType))throw new m(S("Invalid resource type"));return Js(E(t),e)}function Js(t,e){return new on(t,e).validate()}var on=class{constructor(e,r){c(this,"issues");c(this,"root");c(this,"resourceStack");c(this,"schema");c(this,"base64BinaryMaxBytes");c(this,"collect");this.issues=[],this.root=e,this.resourceStack=[],D(e.value)&&this.resourceStack.push(e.value),r?.profile?this.schema=zr(r.profile):this.schema=Se(e.type),this.base64BinaryMaxBytes=r?.base64BinaryMaxBytes??1*1024*1024,this.collect=r?.collect}currentResource(){return this.resourceStack.at(-1)}validate(){sn(this.root.value,this.schema.path,this.issues),this.constraintsCheck({...this.root,path:this.schema.path},this.schema),tn(this.root,this,{schema:this.schema,initialPath:this.schema.path});for(let e of this.issues)if(e.severity==="error")throw new m({resourceType:"OperationOutcome",issue:this.issues});return this.issues}onExitObject(e,r,n){this.checkAdditionalProperties(r,n.elements,r.path)}onEnterResource(e,r){this.resourceStack.push(r.value)}onExitResource(){this.resourceStack.pop()}visitProperty(e,r,n,i,o){let s=o.elements[r];if(!s)throw new Error(`Missing element validation schema for ${r}`);for(let a of i){if(!this.checkPresence(a,s,n))return;let u;if(s.isArray){if(!Array.isArray(a)){this.issues.push(R(n,"Expected array of values for property"));return}u=a}else{if(Array.isArray(a)){this.issues.push(R(n,"Expected single value for property"));return}u=[a]}(u.length<s.min||u.length>s.max)&&this.issues.push(R(s.path,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${u.length}`)),Xs(a,s)||this.issues.push(R(n,"Value did not match expected pattern"));let d=s.slicing?Object.fromEntries(s.slicing.slices.map(l=>[l.name,0])):void 0;for(let l of u){this.constraintsCheck(l,s),this.referenceTypeCheck(l,s),this.checkPropertyValue(l),this.collectValue(l,s);let f=Zs(l,s.slicing);f&&d&&(d[f]+=1)}this.validateSlices(s.slicing?.slices,d,n)}}checkPresence(e,r,n){return!Array.isArray(e)&&e.value===void 0?(r.min>0&&this.issues.push(R(e.path,"Missing required property")),!1):O(e)?(this.issues.push(R(n,"Invalid empty value")),!1):!0}checkPropertyValue(e){Ft(e.type)?this.validatePrimitiveType(e):O(e.value)&&this.issues.push(R(e.path,"Invalid empty non-primitive value"))}validateSlices(e,r,n){if(!(!e||!r))for(let i of e){let o=r[i.name];(o<i.min||o>i.max)&&this.issues.push(R(n,`Incorrect number of values provided for slice '${i.name}': expected ${i.min}..${Number.isFinite(i.max)?i.max:"*"}, but found ${o}`))}}checkAdditionalProperties(e,r,n){let i=e.value;if(!i)return;let o={};for(let s of Object.keys(i)){if(s==="resourceType")continue;let a=Ys(e,s,r);if(a){let u,d;a.startsWith("_")?(u=a.slice(1),d=s.slice(1)):(u="_"+a,d="_"+s),u in o&&o[u]!==d&&this.issues.push(Ne("warning","structure",`Type of primitive extension does not match the type of property "${a.startsWith("_")?a.slice(1):a}"`,a)),o[a]&&this.issues.push(Ne("warning","structure",`Conflicting choice of type properties: "${s}", "${o[a]}"`,s)),o[a]=s;continue}!(s in r)&&!(s.startsWith("_")&&s.slice(1)in r)&&i[s]!==void 0&&this.issues.push(R(`${n}.${s}`,`Invalid additional property "${s}"`))}}constraintsCheck(e,r){let n=r.constraints;for(let i of n??v)if(i.severity==="error"&&!(i.key in zs)&&!this.isExpressionTrue(i,e)){this.issues.push(Ri(e.path,i));return}}referenceTypeCheck(e,r){if(e.type!=="Reference")return;let n=e.value;if(!W(n)||n.reference.startsWith("#"))return;let i=n.reference.includes("?")?n.reference.split("?")[0]:n.reference.split("/")[0];if(!i)return;let o=r.type.find(f=>f.code==="Reference")?.targetProfile;if(!o)return;let s=Mt+"/fhir/StructureDefinition/",a=s+"Resource",u=s+i,d="https://medplum.com/fhir/StructureDefinition/",l=d+i;for(let f of o)if(f===a||f===u||f===l||!f.startsWith(s)&&!f.startsWith(d))return;this.issues.push(Ne("warning","structure",`Invalid reference: got "${i}", expected "${o.join('", "')}"`,e.path))}collectValue(e,r){r.binding?.valueSet&&r.binding.strength==="required"&&ta(e.type)&&this.appendToken(r.binding.valueSet,e)}appendToken(e,r){if(!this.collect?.tokens)return;let n=this.collect.tokens[e];if(!n){let i=Object.keys(this.collect.tokens);for(let o of i)o.startsWith(e+"|")&&(n=this.collect.tokens[o])}for(let i of n??v)if(i.path===r.path)return;this.collect.tokens[e]=be(n,r)}isExpressionTrue(e,r){let n={"%context":r,"%ucum":E(li)},i=this.currentResource();i&&(n["%resource"]=E(i)),D(this.root.value)&&(n["%rootResource"]=this.root);try{let o=k(e.expression,[r],n,Qs);return o.length===1&&o[0].value===!0}catch(o){return this.issues.push(Ci(r.path,"Error evaluating invariant expression",o,{fhirpath:e.expression})),!1}}validatePrimitiveType(e){let[r,n]=ea(e),i=e.path;if(r){let{type:o,value:s}=r;if(!(o in nn)){this.issues.push(R(i,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=nn[o];if(typeof s!==a){s!==null&&this.issues.push(R(i,`Invalid JSON type: expected ${a}, but got ${typeof s}`));return}o==="base64Binary"?this.validateBase64Binary(s,i):a==="string"?this.validateString(s,o,i):a==="number"&&this.validateNumber(s,o,i)}n&&tn(n,this,{schema:Se("Element"),initialPath:i})}validateBase64Binary(e,r){if(!ra(e)){this.issues.push(R(r,"Invalid base64Binary format"));return}let n=0;e.endsWith("==")?n=2:e.endsWith("=")&&(n=1),Math.max(0,Math.floor(e.length*3/4)-n)>this.base64BinaryMaxBytes&&this.issues.push(R(r,`base64Binary exceeds ${this.base64BinaryMaxBytes} bytes`))}validateString(e,r,n){if(!e.trim()){this.issues.push(R(n,"String must contain non-whitespace content"));return}if(e.length>1024*1024){this.issues.push(R(n,"String cannot be larger than 1 MB"));return}let i=Ut[r];i&&!i.exec(e)&&this.issues.push(R(n,"Invalid "+r+" format"))}validateNumber(e,r,n){Number.isNaN(e)||!Number.isFinite(e)?this.issues.push(R(n,"Invalid numeric value")):Ks(r)&&!Number.isInteger(e)?this.issues.push(R(n,"Expected number to be an integer")):r===p.positiveInt&&e<=0?this.issues.push(R(n,"Expected number to be positive")):r===p.unsignedInt&&e<0&&this.issues.push(R(n,"Expected number to be non-negative"))}};function Ks(t){return t===p.integer||t===p.positiveInt||t===p.unsignedInt}function Ys(t,e,r){let n="";e.startsWith("_")&&(e=e.slice(1),n="_");let i=e.split(/(?=[A-Z])/g),o="";for(let s of i){o+=s;let a=o+"[x]";if(r[a])return _(t,o)?n+a:void 0}}function sn(t,e,r){for(let[n,i]of Object.entries(t)){let o=`${e}.${n}`,s=n.startsWith("_")?n.slice(1):`_${n}`;if(i===null)r.push(R(o,"Invalid null value"));else if(Array.isArray(i))for(let a=0;a<i.length;a++)i[a]===void 0?r.push(R(`${o}[${a}]`,"Invalid undefined value")):i[a]===null&&!t[s]?.[a]?r.push(R(`${o}[${a}]`,"Invalid null value")):i[a]&&sn(i[a],`${o}[${a}]`,r);else typeof i=="object"&&sn(i,o,r)}}function Xs(t,e){let r=Array.isArray(t)?t.map(n=>({type:n.type,value:n.value})):{type:t.type,value:t.value};return!(e.pattern&&!lt(r,e.pattern)||e.fixed&&!Te(r,e.fixed))}function an(t,e,r,n){if(Array.isArray(t))return!1;let i;e.path==="$this"?i=r:i=(n??r.elements)[e.path];let o=r.type;switch(e.type){case"value":case"pattern":if(!t||!i)return!1;if(i.pattern)return lt(t,i.pattern);if(i.fixed)return Te(t,i.fixed);if(i.binding?.strength==="required"&&i.binding.valueSet)return!0;break;case"type":return!t||!o?.length?!1:o.some(s=>s.code===t.type)}return!1}function Zs(t,e){for(let r of e?.slices??v)if(e?.discriminator?.every(n=>re(Ye(t,n.path))?.some(i=>an(i,n,r))))return r.name}function ea(t){if(typeof t.value!="object"||!t.value)return[t,void 0];let e=t.value.valueOf();if(e===t.value)return[void 0,{type:"Element",value:t.value}];let r=new Set(Object.keys(e)),n=Object.entries(t.value).filter(([o,s])=>!r.has(o)),i=n.length>0?Object.fromEntries(n):void 0;return[{type:t.type,value:e},{type:"Element",value:i}]}function ta(t){switch(t){case"CodeableConcept":case"Coding":case"code":case"Quantity":case"string":case"uri":return!0;default:return!1}}function ra(t){if(t.length===0)return!1;let e=0;t.endsWith("==")?e=2:t.endsWith("=")&&(e=1);let r=t.length-e;if(r<0||(e+r)%4!==0)return!1;let n=e>0?t.slice(0,-e):t;return/^[A-Za-z\d+/]+$/.test(n)}function y(t){return[{type:p.boolean,value:t}]}function E(t){return t==null?{type:"undefined",value:void 0}:Number.isSafeInteger(t)?{type:p.integer,value:t}:typeof t=="number"?{type:p.decimal,value:t}:typeof t=="boolean"?{type:p.boolean,value:t}:typeof t=="string"?{type:p.string,value:t}:N(t)?{type:p.Quantity,value:t}:D(t)?{type:t.resourceType,value:t}:ln(t)?{type:p.CodeableConcept,value:t}:$t(t)?{type:p.Coding,value:t}:{type:p.BackboneElement,value:t}}function G(t){return t.length===0?!1:!!t[0].value}function L(t,e){if(t.length!==0){if(t.length===1&&(!e||t[0].type===e))return t[0];{let r=e?` of type ${e}`:"";throw new Error(`Expected singleton${r}, but found ${JSON.stringify(t)}`)}}}function _(t,e,r){if(!t.value)return;let n=jt(t.type,e,r?.profileUrl);return n?na(t,e,n):ia(t,e)}function na(t,e,r){let n=t.value,i=r.type;if(!i||i.length===0)return;let o,s="undefined",a,u=r.path.lastIndexOf("."),d=r.path.substring(u+1),l=d,f=!1;d.endsWith("[x]")&&(l=d.substring(0,d.length-3),f=!0);for(let h of i){let b=l;if(f&&(b+=B(h.code)),o=n[b],a=n["_"+b],o!==void 0||a!==void 0){s=h.code;break}}if(a)if(Array.isArray(o)){o=o.slice();for(let h=0;h<Math.max(o.length,a.length);h++)o[h]=cn(o[h],a[h])}else if(!o&&Array.isArray(a)){o=a.slice();for(let h=0;h<a.length;h++)o[h]=cn(void 0,a[h])}else o=cn(o,a);if(!O(o))return(s==="Element"||s==="BackboneElement")&&(s=r.type[0].code),Array.isArray(o)?o.map(h=>Fi(h,s)):Fi(o,s)}function Fi(t,e){return e==="Resource"&&D(t)&&(e=t.resourceType),{type:e,value:t}}function ia(t,e){let r=t.value;if(!r||typeof r!="object")return;let n;if(e in r){let i=r[e];Array.isArray(i)?n=i.map(E):n=E(i)}else{let i=e.endsWith("[x]")?e.substring(0,e.length-3):e;for(let o of Object.values(p)){let s=i+B(o);if(s in r){let a=r[s];Array.isArray(a)?n=a.map(u=>({type:o,value:u})):n={type:o,value:a};break}}}if(Array.isArray(n)){if(n.length===0||O(n[0]))return}else if(O(n))return;return n}function qt(t){let e=[];for(let r of t){let n=!1;for(let i of e)if(G(pt(r,i))){n=!0;break}n||e.push(r)}return e}function qi(t){return y(!G(t))}function Wi(t,e){return t.length===0||e.length===0?[]:t.length!==e.length?y(!1):y(t.every((r,n)=>G(pt(r,e[n]))))}function $i(t,e){return t.length===0||e.length===0?[]:t.length!==e.length?y(!0):y(t.some((r,n)=>!G(pt(r,e[n]))))}function pt(t,e){let r=t.value?.valueOf(),n=e.value?.valueOf();return typeof r=="number"&&typeof n=="number"?y(Math.abs(r-n)<1e-8):N(r)&&N(n)?y(Gi(r,n)):y(typeof r=="object"&&typeof n=="object"?dn(t,e):r===n)}function un(t,e){return t.length===0&&e.length===0?y(!0):t.length!==e.length?y(!1):(t.sort(Ui),e.sort(Ui),y(t.every((r,n)=>G(oa(r,e[n])))))}function oa(t,e){let{type:r,value:n}=t,{type:i,value:o}=e,s=n?.valueOf(),a=o?.valueOf();return typeof s=="number"&&typeof a=="number"?y(Math.abs(s-a)<.01):N(s)&&N(a)?y(Gi(s,a)):y(r==="Coding"&&i==="Coding"?typeof s!="object"||typeof a!="object"?!1:s.code===a.code&&s.system===a.system:typeof s=="object"&&typeof a=="object"?dn({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function Ui(t,e){let r=t.value?.valueOf(),n=e.value?.valueOf();return typeof r=="number"&&typeof n=="number"?r-n:typeof r=="string"&&typeof n=="string"?r.localeCompare(n):0}function et(t,e){let{value:r}=t;if(r==null)return!1;let n=e;switch(n.startsWith("System.")&&(n=n.substring(7)),n.startsWith("FHIR.")&&(n=n.substring(5)),n){case"Boolean":return typeof r=="boolean";case"Decimal":case"Integer":return typeof r=="number";case"Date":return ji(r);case"DateTime":return Ze(r);case"Time":return typeof r=="string"&&!!/^T\d/.exec(r);case"Period":return Hi(r);case"Quantity":return N(r);default:return t.type===n||typeof r=="object"&&r?.resourceType===n}}function ji(t){return typeof t=="string"&&!!Ut.date.exec(t)}function Ze(t){return typeof t=="string"&&!!Ut.dateTime.exec(t)}function Hi(t){return!!(t&&typeof t=="object"&&("start"in t&&Ze(t.start)||"end"in t&&Ze(t.end)))}function Wt(t){if(ji(t)||Ze(t))return{start:Bt(t,"0000-01-01T00:00:00.000"),end:Bt(t,"xxxx-12-31T23:59:59.999")};if(Hi(t))return{start:t.start?Bt(t.start,"0000-01-01T00:00:00.000"):void 0,end:t.end?Bt(t.end,"xxxx-12-31T23:59:59.999"):void 0}}function Bt(t,e){let r="Z",n=Math.max(t.indexOf("+",10),t.indexOf("-",10));n>-1?(r=t.substring(n),t=t.substring(0,n)):t.endsWith("Z")&&(t=t.substring(0,t.length-1));let i=t+e.substring(t.length)+r;return new Date(i).toISOString()}function N(t){return!!(t&&typeof t=="object"&&"value"in t&&typeof t.value=="number")}function Gi(t,e){return Math.abs(t.value-e.value)<.01&&(t.unit===e.unit||t.code===e.code||t.unit===e.code||t.code===e.unit)}function dn(t,e){let r=Object.keys(t),n=Object.keys(e);if(r.length!==n.length)return!1;for(let i of r){let o=t[i],s=e[i];if(Bi(o)&&Bi(s)){if(!dn(o,s))return!1}else if(o!==s)return!1}return!0}function Bi(t){return t!==null&&typeof t=="object"}function cn(t,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return sa(t??{},e)}return t}function sa(t,e){return delete e.__proto__,delete e.constructor,Object.assign(t,e)}function ft(t,e){return D(t,e)&&"id"in t&&typeof t.id=="string"}function X(t){let e=I(t)??"undefined/undefined",r=ca(t);return r===e?{reference:e}:{reference:e,display:r}}function I(t){if(W(t))return t.reference;if(ft(t))return`${t.resourceType}/${t.id}`}function Z(t){if(t)return W(t)?t.reference.split("/")[1]:t.id}function Qp(t){if(t?.reference===void 0)throw new m(S("Reference missing reference property."));let[e,r]=t.reference.split("/");if(e===""||r===""||r===void 0)throw new m(S("Unable to parse reference string."));return[e,r]}function fn(t){if(t)if(t.accounts&&t.account){let e=t.accounts;return e.some(r=>r.reference===t.account?.reference)?e:[t.account,...e]}else return re(t.accounts??t.account)}function aa(t){return t.resourceType==="Patient"||t.resourceType==="Practitioner"||t.resourceType==="RelatedPerson"}function ca(t){if(aa(t)){let e=ua(t);if(e)return e}if(t.resourceType==="Appointment"&&t.serviceType?.[0])return Ee(t.serviceType[0]);if(t.resourceType==="Device"){let e=da(t);if(e)return e}if(t.resourceType==="DocumentReference"){if(t.description)return t.description;if(t.type)return Ee(t.type)}if(t.resourceType==="MedicationRequest"&&t.medicationCodeableConcept)return Ee(t.medicationCodeableConcept);if(t.resourceType==="MedicationStatement"&&t.medicationCodeableConcept)return Ee(t.medicationCodeableConcept);if(t.resourceType==="Slot"&&(t.start||t.end))return`${tt(t.start)} - ${tt(t.end)}`;if(t.resourceType==="Subscription"&&t.criteria)return t.criteria;if(t.resourceType==="User"&&t.email)return t.email;if("name"in t&&t.name&&typeof t.name=="string")return t.name;if("code"in t&&t.code){let e=t.code;if(Array.isArray(e)&&(e=e[0]),ln(e))return Ee(e);if(xa(e))return e.text}return I(t)??""}function ua(t){let e=t.name;if(e&&e.length>0)return ht(e[0])}function da(t){let e=t.deviceName;if(e&&e.length>0)return e[0].name}function zp(t){if(!("photo"in t))return;let e=t.photo;if(e)if(Array.isArray(e))for(let r of e){let n=Qi(r);if(n)return n}else return Qi(e)}function Qi(t){if(t.url&&t.contentType?.startsWith("image/"))return t.url}function Jp(t){return t?new Date(t):void 0}function Ht(t,e){let r=new Date(t);r.setUTCHours(0,0,0,0);let n=e?new Date(e):new Date;n.setUTCHours(0,0,0,0);let i=r.getUTCFullYear(),o=r.getUTCMonth(),s=r.getUTCDate(),a=n.getUTCFullYear(),u=n.getUTCMonth(),d=n.getUTCDate(),l=a-i;(u<o||u===o&&d<s)&&l--;let f=a*12+u-(i*12+o);d<s&&f--;let h=Math.floor((n.getTime()-r.getTime())/(1e3*60*60*24));return{years:l,months:f,days:h}}function Kp(t,e){let{years:r,months:n,days:i}=Ht(t,e);return r>=2?r.toString().padStart(3,"0")+"Y":n>=1?n.toString().padStart(3,"0")+"M":i.toString().padStart(3,"0")+"D"}function Yp(t){let e={};return zi(t.item,e),e}function zi(t,e){for(let r of t??v)r.linkId&&r.answer&&r.answer.length>0&&(e[r.linkId]=r.answer[0]),zi(r.item,e)}function Xp(t){let e={};return Ji(t.item,e),e}function Ji(t,e){for(let r of t??v)r.linkId&&r.answer&&r.answer.length>0&&(e[r.linkId]?e[r.linkId]=[...e[r.linkId],...r.answer]:e[r.linkId]=r.answer),Ji(r.item,e)}function mn(t,e){let r=t.identifier;if(!r)return;let n=Array.isArray(r)?r:[r];for(let i of n)if(i.system===e)return i.value}var Zp={system:pi,code:"MR"};function ef(t,e){let r=t.identifier;return!r||!$t(e)||!e.system?void 0:(Array.isArray(r)?r:[r]).find(i=>i.type?.coding?.some(o=>o.system===e.system&&o.code===e.code))?.value}function tf(t,e,r,n){let i={system:e,value:r};n?.use&&(i.use=n.use);let o=t.identifier;if(!o){t.identifier=[i];return}for(let s of o)if(s.system===e){Object.assign(s,i);return}o.push(i)}function Re(t,...e){let r=le(t,...e);if(!r)return;let n=_({type:"Extension",value:r},"value[x]");if(n)return Array.isArray(n)?n[0].value:n.value}function le(t,...e){let r=t;for(let n=0;n<e.length&&r;n++)r=r?.extension?.find(i=>i.url===e[n]);return r}function hn(t,e){let[r,...n]=re(e);if(!r)return[];let i=t?.extension?.filter(o=>o.url===r)??[];return n.length>0?i.flatMap(o=>hn(o,n)):i}function Gt(t,e){let r=gn(t);return JSON.stringify(r,null,e?2:void 0)??""}function gn(t){if(!(t==null||t===""))return typeof t=="object"?Array.isArray(t)?la(t):pa(t):t}function la(t){let e=t.length;if(e===0)return;let r,n=0;for(let i=0;i<e;i++){let o=t[i],s=gn(o);s!==o&&!r&&(r=Array.from(t)),s===void 0?r&&(r[i]=null):(r&&(r[i]=s),n++)}if(n!==0)return r??t}function pa(t){let e,r=0;for(let n in t){let i=t[n],o=gn(i);o!==i&&!e&&(e={...t}),o===void 0?e&&delete e[n]:(e&&(e[n]=o),r++)}if(r!==0)return e??t}function O(t){if(t==null)return!0;let e=typeof t;return e==="string"||e==="object"?!pe(t):!1}function pe(t){if(t==null)return!1;let e=typeof t;return e==="string"&&t!==""||e==="object"&&("length"in t&&t.length>0||Object.keys(t).length>0)}function rf(t){if(!t)return;let e=t.length-1;for(;e>=0&&O(t[e]);)e--;return e>=0?t.slice(0,e+1):void 0}function Te(t,e,r){return t===e||O(t)&&O(e)?!0:O(t)||O(e)?!1:Array.isArray(t)&&Array.isArray(e)?fa(t,e):Array.isArray(t)||Array.isArray(e)?!1:C(t)&&C(e)?ma(t,e,r):(C(t)||C(e),!1)}function fa(t,e){if(t.length!==e.length)return!1;for(let r=0;r<t.length;r++)if(!Te(t[r],e[r]))return!1;return!0}function ma(t,e,r){let n=new Set;for(let i of Object.keys(t))n.add(i);for(let i of Object.keys(e))n.add(i);r==="meta"&&(n.delete("versionId"),n.delete("lastUpdated"),n.delete("author"));for(let i of n){let o=t[i],s=e[i];if(!Te(o,s,i))return!1}return!0}function lt(t,e){return O(t)?!0:O(e)?!1:Array.isArray(t)&&Array.isArray(e)?ha(t,e):Array.isArray(t)||Array.isArray(e)?!1:C(t)&&C(e)?ga(t,e):C(t)||C(e)?!1:t===e}function ha(t,e){return e.every(r=>t.some(n=>lt(n,r)))}function ga(t,e){return Object.entries(e).every(([r,n])=>r in t&<(t[r],n))}function fe(t){return t===void 0?t:JSON.parse(JSON.stringify(t))}function nf(t){return/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i.test(t)}function C(t){return t!==null&&typeof t=="object"}function of(t){return t.every(me)}function me(t){return typeof t=="string"}function $t(t){return C(t)&&"code"in t&&typeof t.code=="string"}function ln(t){return C(t)&&"coding"in t&&Array.isArray(t.coding)&&t.coding.every($t)}function sf(t,e){for(let r of t??v)for(let n of r.coding??v)if(n.system===e)return n.code}function ya(t,e){let[r,n]=rt(e,"|",2);return n===void 0?t.code===e:r===""?t.system===void 0&&t.code===n:n===""?t.system===r:t.system===r&&t.code===n}function af(t,e){return(t.coding??v).some(r=>ya(r,e))}function xa(t){return C(t)&&"text"in t&&typeof t.text=="string"}var Ki=[];for(let t=0;t<256;t++)Ki.push(t.toString(16).padStart(2,"0"));function Yi(t){let e=Zi(t),r=new Uint8Array(e),n=new Array(r.length);for(let i=0;i<r.length;i++)n[i]=Ki[r[i]];return n.join("")}function Xi(t){let e=Zi(t),r=new Uint8Array(e),n=new Array(r.length);for(let i=0;i<r.length;i++)n[i]=String.fromCodePoint(r[i]);return window.btoa(n.join(""))}function Zi(t){return ArrayBuffer.isView(t)?t.buffer:t}function B(t){return t?t.charAt(0).toUpperCase()+t.substring(1):""}function cf(t){return t===t.toLowerCase()&&t!==t.toUpperCase()}function yn(t){return t.length>0&&t.startsWith(t[0].toUpperCase())}function Ce(t,e){let r=t+".";if(e.startsWith(r))return e.slice(r.length)}function pn(t,e){return t.coding?.find(r=>r.system===e)?.code}function uf(t,e,r){t.coding??=[];let n=t.coding.find(i=>i.system===e);n?n.code=r:t.coding.push({system:e,code:r})}function df(t,e,r,n){return t.qualifiedInterval?.find(i=>eo(i,e)&&ba(i,r,t.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function lf(t,e,r){return va(t,e,r)[0]}function va(t,e,r){return t.qualifiedInterval?.filter(n=>eo(n,e)&&(!r||r.includes(n.condition)))??[]}function eo(t,e){return Sa(t,e)&&Ta(t,e)}function Sa(t,e){return!t.gender||t.gender===e.gender}function Ta(t,e){return!t.age||to(Ht(e.birthDate).years,t.age)}function ba(t,e,r){return!!t.range&&to(e,t.range,r)}function to(t,e,r){return(e.low?.value===void 0||Ra(t,e.low.value,r))&&(e.high?.value===void 0||Ea(t,e.high.value,r))}function pf(t,e){return Number.parseFloat(t.toFixed(e))}function ff(t,e,r){return ne(t,r)===ne(e,r)}function mf(t,e,r){return ne(t,r)<ne(e,r)}function hf(t,e,r){return ne(t,r)>ne(e,r)}function Ea(t,e,r){return ne(t,r)<=ne(e,r)}function Ra(t,e,r){return ne(t,r)>=ne(e,r)}function ne(t,e){return e===void 0?t:Math.round(t*Math.pow(10,e))}function gf(t,e,r){return t.find(n=>typeof e=="string"?pn(n.code||{},r)===e:pn(n.code||{},r)===pn(e,r))}function yf(t){return Array.isArray(t)?t[0]:t}var xn=(t,e)=>new Promise((r,n)=>{e?.signal?.throwIfAborted();let i=setTimeout(r,t);e?.signal?.addEventListener("abort",()=>{clearTimeout(i),n(e.signal?.reason)},{once:!0})});function rt(t,e,r){let n=[];for(let i=0;i<r-1;i++){let o=t.indexOf(e);if(o<0)break;n.push(t.slice(0,o)),t=t.slice(o+e.length)}return n.push(t),n}function ro(t){let e,r=!1;return function(){return r||(e=t(),r=!0),e}}function be(t,e){return t?(t.push(e),t):[e]}function Qt(t){return t.sort((e,r)=>e.localeCompare(r))}function mt(t){return t.endsWith("/")?t:t+"/"}function Ca(t){return t.startsWith("/")?t.slice(1):t}function $(t,e){return new URL(Ca(e),mt(t.toString())).toString()}function no(t,e){return $(t,e).toString().replace("http://","ws://").replace("https://","wss://")}function io(t){return typeof t=="object"&&!Array.isArray(t)&&!(t instanceof URLSearchParams)&&(t=Object.fromEntries(Object.entries(t).filter(e=>e[1]!==void 0))),new URLSearchParams(t).toString()}var Pa=/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-_]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-_]*[A-Za-z0-9])$/;function xf(t){return Pa.test(t)}function vf(t,e){return t?.meta?.profile?.includes(e)||(t.meta=t.meta??{},t.meta.profile=t.meta.profile??[],t.meta.profile.push(e)),t}function Sf(t,e){return new Map(t.entry?.filter(n=>!!n.resource).map(n=>[mn(n.resource,e),n.resource]).filter(([n])=>n!==void 0))}function Tf(t,e){if(t?.meta?.profile?.includes(e)){let r=t.meta.profile.indexOf(e);t.meta.profile.splice(r,1)}return t}function oo(t,e){let r=[];if(!t)return r;for(let n=0;n<t.length;n++){let i=e(t[n],n);Array.isArray(i)?r.push(...i):i!==void 0&&r.push(i)}return r}function bf(t,e){let r=0;for(let n of t)r+=e(n);return r}function Ef(t,e){let r=0;for(let n of t)e(n)&&r++;return r}function Rf(t,e){let r={};for(let n of t){let i=e(n);r[i]=(r[i]??0)+1}return r}function Cf(t){return t.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""").replaceAll("\u201C","“").replaceAll("\u201D","”").replaceAll("\u2018","‘").replaceAll("\u2019","’").replaceAll("\u2026","…")}function vn(t){return t!=null}function Pf(t){throw new Error(`Unexpected value: ${JSON.stringify(t)}`)}var v=Object.freeze([]),Af=()=>{};function so(t){if(!t)return"";switch(t.type){case"Address":return wa(t.value);case"CodeableConcept":return Ee(t.value);case"Coding":return ao(t.value);case"ContactPoint":return t.value.value;case"HumanName":return ht(t.value);case"Quantity":return Pe(t.value);case"Reference":return Aa(t.value);default:return t.value?.toString()??""}}function Aa(t){return t?t.display??t.reference??Gt(t):""}function wa(t,e){if(!t)return"";let r=[];if(t.line&&r.push(...t.line),t.city||t.state||t.postalCode){let n=[];t.city&&n.push(t.city),t.state&&n.push(t.state),t.postalCode&&n.push(t.postalCode),r.push(n.join(", "))}return t.use&&(e?.all||e?.use)&&r.push("["+t.use+"]"),r.join(e?.lineSeparator??", ").trim()}function ht(t,e){if(!t)return"";let r=[];if(t.prefix&&e?.prefix!==!1&&r.push(...t.prefix),t.given&&r.push(...t.given),t.family&&r.push(t.family),t.suffix&&e?.suffix!==!1&&r.push(...t.suffix),t.use&&(e?.all||e?.use)&&r.push("["+t.use+"]"),r.length===0){let n=Ue(t.text);if(n)return n}return r.join(" ").trim()}function If(t){let e=[];return t.given&&e.push(...t.given),e.join(" ").trim()}function kf(t){return Ue(t.family)??""}function zt(t){return t instanceof Date&&!Number.isNaN(t.getTime())}function Mf(t,e,r){if(!t)return"";let n=new Date(t);return zt(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...r})):""}function Df(t,e,r){if(!t)return"";let n=new Date("2000-01-01T"+t+"Z");return zt(n)?n.toLocaleTimeString(e,r):""}function Oa(t,e,r){if(!t)return"";let[n=0,i=0,o=0]=t.split(":").map(Number),s=new Date(Date.UTC(1970,0,1,n,i,o));return zt(s)?new Intl.DateTimeFormat(e,{hour:"numeric",minute:"2-digit",second:o===0?void 0:"numeric",...r,timeZone:"UTC"}).format(s):""}function tt(t,e,r){if(!t)return"";let n=new Date(t);return zt(n)?n.toLocaleString(e,r):""}function Vf(t,e,r){return!t||!t.start&&!t.end?"":tt(t.start,e,r)+" - "+tt(t.end,e,r)}var Ia={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},ka={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},Ma={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function _f(t){if(!t)return"";let e=[];return Da(e,t.repeat),t.event&&e.push(t.event.map(r=>tt(r)).join(", ")),B(e.join(" ").trim())}function Da(t,e){if(!e?.periodUnit)return;let r=e.frequency??1,n=e.period??1,i=e.periodUnit;r===1&&n===1?t.push(Ia[i]):(r===1?t.push("once"):t.push(r+" times"),n===1?t.push("per "+ka[i]):t.push("per "+n+" "+Ma[i])),e.dayOfWeek&&t.push("on "+e.dayOfWeek.map(B).join(", ")),e.timeOfDay&&t.push("at "+e.timeOfDay.map(o=>Oa(o)).join(", "))}function Nf(t,e,r=!1){if(r&&e===void 0)throw new Error("Precision must be specified for exclusive ranges");let n=t?.low&&{...t.low,comparator:void 0},i=t?.high&&{...t.high,comparator:void 0};return n?.value===void 0&&i?.value===void 0?"":n?.value!==void 0&&i?.value===void 0?r&&e!==void 0?(n.value=Na(n.value,e),`> ${Pe(n,e)}`):`>= ${Pe(n,e)}`:n?.value===void 0&&i?.value!==void 0?r&&e!==void 0?(i.value=_a(i.value,e),`< ${Pe(i,e)}`):`<= ${Pe(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${Pe(n,e)} - ${Pe(i,e)}`)}function Pe(t,e){if(!t)return"";let r=[];return t.comparator&&(r.push(t.comparator),r.push(" ")),t.value!==void 0&&(e!==void 0?r.push(t.value.toFixed(e)):r.push(t.value)),t.unit&&(t.unit!=="%"&&r.at(-1)!==" "&&r.push(" "),r.push(t.unit)),r.join("").trim()}function Lf(t){return t?.value===void 0?"":t.value.toLocaleString(void 0,{style:"currency",currency:t.currency??"USD",currencyDisplay:"narrowSymbol"})}function Ee(t){if(!t)return"";let e=Ue(t.text);return e||(t.coding?t.coding.map(r=>ao(r)).join(", "):"")}function ao(t,e){let r=Ue(t?.display);if(r){let n=e?Ue(t?.code):void 0;return`${r}${n?" ("+n+")":""}`}return Ue(t?.code)??""}function Va(t){if(!t)return"";let e=[];if(t.valueQuantity)e.push(Pe(t.valueQuantity));else if(t.valueCodeableConcept)e.push(Ee(t.valueCodeableConcept));else{let r=Ue(t.valueString);r&&e.push(r)}return"component"in t&&e.push(t.component.map(r=>Va(r)).join(" / ")),e.join(" / ").trim()}function Ue(t){return typeof t=="string"?t:void 0}function _a(t,e,r=1){return(co(t,e)+r)*Math.pow(10,-e)}function Na(t,e,r=1){return(co(t,e)-r)*Math.pow(10,-e)}function co(t,e){return e===void 0?t:Math.round(t*Math.pow(10,e))}var p={Address:"Address",Age:"Age",Annotation:"Annotation",Attachment:"Attachment",BackboneElement:"BackboneElement",CodeableConcept:"CodeableConcept",Coding:"Coding",ContactDetail:"ContactDetail",ContactPoint:"ContactPoint",Contributor:"Contributor",Count:"Count",DataRequirement:"DataRequirement",Distance:"Distance",Dosage:"Dosage",Duration:"Duration",Element:"Element",ElementDefinition:"ElementDefinition",Expression:"Expression",Extension:"Extension",HumanName:"HumanName",Identifier:"Identifier",MarketingStatus:"MarketingStatus",Meta:"Meta",Money:"Money",MoneyQuantity:"MoneyQuantity",Narrative:"Narrative",ParameterDefinition:"ParameterDefinition",Period:"Period",Population:"Population",ProdCharacteristic:"ProdCharacteristic",ProductShelfLife:"ProductShelfLife",Quantity:"Quantity",Range:"Range",Ratio:"Ratio",Reference:"Reference",RelatedArtifact:"RelatedArtifact",SampledData:"SampledData",Signature:"Signature",SimpleQuantity:"SimpleQuantity",SubstanceAmount:"SubstanceAmount",SystemString:"http://hl7.org/fhirpath/System.String",Timing:"Timing",TriggerDefinition:"TriggerDefinition",UsageContext:"UsageContext",base64Binary:"base64Binary",boolean:"boolean",canonical:"canonical",code:"code",date:"date",dateTime:"dateTime",decimal:"decimal",id:"id",instant:"instant",integer:"integer",markdown:"markdown",oid:"oid",positiveInt:"positiveInt",string:"string",time:"time",unsignedInt:"unsignedInt",uri:"uri",url:"url",uuid:"uuid",xhtml:"xhtml"};function Wf(t){for(let e of t.entry??v){let r=e.resource;r.resourceType==="SearchParameter"&&Sn(r)}}function Li(t){let e=Array.isArray(t)?t:t.entry?.map(r=>r.resource)??[];for(let r of e)r?.resourceType==="StructureDefinition"&&r.kind==="resource"&&lo(r.type)}function lo(t){let e=Q.types[t];e||(e={searchParamsDetails:{}},Q.types[t]=e);let r;return!e.searchParams&&t!=="Binary"&&(e.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",get target(){return r??=Fa(),r}},_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"},_project:{base:[t],code:"_project",type:"token",expression:t+".meta.project"}}),e}function Sn(t){for(let e of t.base??v){let r=lo(e);r.searchParams||(r.searchParams={}),r.searchParams[t.code]=t}}function Qr(t){let e=t.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?La((t.base?.path??t.path)?.split(".")):e}function La(t){return t.length===1?t[0]:t.map(B).join("")}function Xr(t){return t.kind==="resource"&&t.name!=="Resource"&&t.name!=="DomainResource"}function Fa(){return Object.values(Di()).filter(Xr).map(t=>t.name)}function $f(t){return Q.types[t]?.searchParams}function jf(t,e){return Q.types[t]?.searchParams?.[e]}function Hf(t){let e=t.replaceAll("[x]","").split(".").pop();return Ua(e)}function Ua(t){let e;return t.length<100?e=t.match(/[A-Z]+(?![a-z])|[A-Z]?[a-z]+|\d+/g)??[]:e=t.split(/(?=[A-Z])/),e.map(qa).join(" ").replace("_"," ").replaceAll(/\s+/g," ")}var Ba=new Set(["CDS","ID","IP","JWKS","PKCE","OMB","OID","SOP","UDI","UID","URI","URL"]);function qa(t){let e=t.toUpperCase();return t===e?t:Ba.has(e)?e:e.charAt(0)+t.slice(1)}function jt(t,e,r){let n=Fe(t,r);if(n)return po(n.elements,e)}function po(t,e){let r=t[e]??t[e+"[x]"];if(r)return r;for(let n=0;n<e.length;n++){let i=e[n];if(i>="A"&&i<="Z"){let o=e.slice(0,n)+"[x]",s=t[o];if(s)return s}}}function fo(t,e,r){let n=e.split(/[.[\]]/g),i=Fe(t,r);if(!i)return;let o=i,s;for(let a of n){let u;if(a.match(/^[a-z]/)){let d=po(o.elements,a);if(!d)return;if(d.type.length>1)throw new Error("Multiple matching types in path "+e);u=Fe(d.type[0].code),s=d}u&&(o=u)}return s}function Gf(t){return!!(t&&typeof t=="object"&&"type"in t&&"value"in t)}function D(t,e){return!(!t||typeof t!="object"||!("resourceType"in t)||e&&t.resourceType!==e)}function W(t,e){return t&&typeof t=="object"&&"reference"in t&&typeof t.reference=="string"?e?t.reference.match(new RegExp(`^${e}(/|\\?)`))!==null:!0:!1}var Q={types:{}};function mo(t){switch(t.type){case p.uuid:case p.uri:case p.url:case p.string:case p.oid:case p.markdown:case p.id:case p.code:case p.canonical:case p.base64Binary:case p.SystemString:case p.date:case p.dateTime:case p.instant:return t.value;case p.Identifier:return`${t.value.system??""}|${t.value.value}`;case p.Coding:return uo(t.value);case p.CodeableConcept:return t.value.coding?.map(uo).join(",")??t.value.text;case p.HumanName:return t.value.text?t.value.text:ht(t.value);case p.unsignedInt:case p.positiveInt:case p.integer:case p.decimal:return t.value.toString();case p.boolean:return t.value?"true":"false";case p.Extension:return t.value.url;case p.ContactPoint:return t.value.value;case p.Quantity:case p.Age:case p.Count:case p.Duration:return`${t.value.value}|${t.value.system??""}|${t.value.code??t.value.unit??""}`;case p.Reference:return t.value.reference;default:return ft(t.value)?I(t.value):JSON.stringify(t)}}function uo(t){return t?`${t.system??""}|${t.code}`:""}function nt(t){if(t.startsWith("T"))return t+"T00:00:00.000Z".substring(t.length);if(t.length<=10)return t;try{return new Date(t).toISOString()}catch{return t}}var he=()=>[];function gt(t){return t instanceof U?t.name:t instanceof se&&t.left instanceof U&&t.right instanceof U?t.left.name+"."+t.right.name:""}var F={empty:(t,e)=>y(e.every(r=>O(r.value))),hasValue:(t,e)=>y(e.length!==0),exists:(t,e,r)=>r?y(e.some(n=>G(r.eval(t,[n])))):y(e.length>0&&e.every(n=>!O(n.value))),all:(t,e,r)=>y(e.every(n=>G(r.eval(t,[n])))),allTrue:(t,e)=>{for(let r of e)if(!r.value)return y(!1);return y(!0)},anyTrue:(t,e)=>{for(let r of e)if(r.value)return y(!0);return y(!1)},allFalse:(t,e)=>{for(let r of e)if(r.value)return y(!1);return y(!0)},anyFalse:(t,e)=>{for(let r of e)if(!r.value)return y(!0);return y(!1)},subsetOf:(t,e,r)=>{if(e.length===0)return y(!0);let n=r.eval(t,Be(t));return n.length===0?y(!1):y(e.every(i=>n.some(o=>o.value===i.value)))},supersetOf:(t,e,r)=>{let n=r.eval(t,Be(t));return n.length===0?y(!0):e.length===0?y(!1):y(n.every(i=>e.some(o=>o.value===i.value)))},count:(t,e)=>[{type:p.integer,value:e.length}],distinct:(t,e)=>{let r=[];for(let n of e)r.some(i=>i.value===n.value)||r.push(n);return r},isDistinct:(t,e)=>y(e.length===F.distinct(t,e).length),where:(t,e,r)=>e.filter(n=>G(r.eval(t,[n]))),select:(t,e,r)=>e.flatMap(n=>r.eval({parent:t,variables:{$this:n}},[n])),repeat:he,ofType:(t,e,r)=>{let n=gt(r);return n?e.filter(i=>et(i,n)):[]},single:(t,e)=>{if(e.length>1)throw new Error("Expected input length one for single()");return e.length===0?[]:e.slice(0,1)},first:(t,e)=>e.length===0?[]:e.slice(0,1),last:(t,e)=>e.length===0?[]:e.slice(-1,e.length),tail:(t,e)=>e.length===0?[]:e.slice(1,e.length),skip:(t,e,r)=>{let n=r.eval(t,e)[0]?.value;if(typeof n!="number")throw new TypeError("Expected a number for skip(num)");return n>=e.length?[]:n<=0?e:e.slice(n,e.length)},take:(t,e,r)=>{let n=r.eval(t,e)[0]?.value;if(typeof n!="number")throw new TypeError("Expected a number for take(num)");return n<=0?[]:e.slice(0,n)},intersect:(t,e,r)=>{if(!r)return e;let n=r.eval(t,Be(t)),i=[];for(let o of e)!i.some(s=>s.value===o.value)&&n.some(s=>s.value===o.value)&&i.push(o);return i},exclude:(t,e,r)=>{if(!r)return e;let n=r.eval(t,Be(t)),i=[];for(let o of e)n.some(s=>s.value===o.value)||i.push(o);return i},union:(t,e,r)=>{if(!r)return e;let n=r.eval(t,Be(t));return qt([...e,...n])},combine:(t,e,r)=>{if(!r)return e;let n=r.eval(t,Be(t));return[...e,...n]},htmlChecks:(t,e,r)=>[E(!0)],iif:(t,e,r,n,i)=>{let o=r.eval(t,e);if(o.length>1||o.length===1&&typeof o[0].value!="boolean")throw new Error("Expected criterion to evaluate to a Boolean");return G(o)?n.eval(t,e):i?i.eval(t,e):[]},toBoolean:(t,e)=>{if(e.length===0)return[];let[{value:r}]=oe(e,1);if(typeof r=="boolean")return[{type:p.boolean,value:r}];if(typeof r=="number"&&(r===0||r===1))return y(!!r);if(typeof r=="string"){let n=r.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return y(!0);if(["false","f","no","n","0","0.0"].includes(n))return y(!1)}return[]},convertsToBoolean:(t,e)=>e.length===0?[]:y(F.toBoolean(t,e).length===1),toInteger:(t,e)=>{if(e.length===0)return[];let[{value:r}]=oe(e,1);return typeof r=="number"?[{type:p.integer,value:r}]:typeof r=="string"&&/^[+-]?\d+$/.exec(r)?[{type:p.integer,value:Number.parseInt(r,10)}]:typeof r=="boolean"?[{type:p.integer,value:r?1:0}]:[]},convertsToInteger:(t,e)=>e.length===0?[]:y(F.toInteger(t,e).length===1),toDate:(t,e)=>{if(e.length===0)return[];let[{value:r}]=oe(e,1);return typeof r=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(r)?[{type:p.date,value:nt(r)}]:[]},convertsToDate:(t,e)=>e.length===0?[]:y(F.toDate(t,e).length===1),toDateTime:(t,e)=>{if(e.length===0)return[];let[{value:r}]=oe(e,1);return typeof r=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(r)?[{type:p.dateTime,value:nt(r)}]:[]},convertsToDateTime:(t,e)=>e.length===0?[]:y(F.toDateTime(t,e).length===1),toDecimal:(t,e)=>{if(e.length===0)return[];let[{value:r}]=oe(e,1);return typeof r=="number"?[{type:p.decimal,value:r}]:typeof r=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(r)?[{type:p.decimal,value:Number.parseFloat(r)}]:typeof r=="boolean"?[{type:p.decimal,value:r?1:0}]:[]},convertsToDecimal:(t,e)=>e.length===0?[]:y(F.toDecimal(t,e).length===1),toQuantity:(t,e)=>{if(e.length===0)return[];let[{value:r}]=oe(e,1);return N(r)?[{type:p.Quantity,value:r}]:typeof r=="number"?[{type:p.Quantity,value:{value:r,unit:"1"}}]:typeof r=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(r)?[{type:p.Quantity,value:{value:Number.parseFloat(r),unit:"1"}}]:typeof r=="boolean"?[{type:p.Quantity,value:{value:r?1:0,unit:"1"}}]:[]},convertsToQuantity:(t,e)=>e.length===0?[]:y(F.toQuantity(t,e).length===1),toString:(t,e)=>{if(e.length===0)return[];let[{value:r}]=oe(e,1);return r==null?[]:N(r)?[{type:p.string,value:`${r.value} '${r.unit}'`}]:[{type:p.string,value:r.toString()}]},convertsToString:(t,e)=>e.length===0?[]:y(F.toString(t,e).length===1),toTime:(t,e)=>{if(e.length===0)return[];let[{value:r}]=oe(e,1);if(typeof r=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(r);if(n)return[{type:p.time,value:nt("T"+n[1])}]}return[]},convertsToTime:(t,e)=>e.length===0?[]:y(F.toTime(t,e).length===1),indexOf:(t,e,r)=>z((n,i)=>n.indexOf(i),t,e,r),substring:(t,e,r,n)=>z((i,o,s)=>{let a=o,u=s?a+s:i.length;return a<0||a>=i.length?void 0:i.substring(a,u)},t,e,r,n),startsWith:(t,e,r)=>z((n,i)=>n.startsWith(i),t,e,r),endsWith:(t,e,r)=>z((n,i)=>n.endsWith(i),t,e,r),contains:(t,e,r)=>z((n,i)=>n.includes(i),t,e,r),upper:(t,e)=>z(r=>r.toUpperCase(),t,e),lower:(t,e)=>z(r=>r.toLowerCase(),t,e),replace:(t,e,r,n)=>z((i,o,s)=>i.replaceAll(o,s),t,e,r,n),matches:(t,e,r)=>z((n,i)=>!!new RegExp(i).exec(n),t,e,r),replaceMatches:(t,e,r,n)=>z((i,o,s)=>i.replaceAll(new RegExp(o,"g"),s.replaceAll(/\$\{(\w+)\}/g,"$<$1>")),t,e,r,n),length:(t,e)=>z(r=>r.length,t,e),toChars:(t,e)=>z(r=>r?r.split(""):void 0,t,e),encode:he,decode:he,escape:he,unescape:he,trim:he,split:he,join:(t,e,r)=>{let n=r?.eval(t,Be(t))[0]?.value??"";if(typeof n!="string")throw new TypeError("Separator must be a string.");return[{type:p.string,value:e.map(i=>i.value?.toString()??"").join(n)}]},abs:(t,e)=>ie(Math.abs,t,e),ceiling:(t,e)=>ie(Math.ceil,t,e),exp:(t,e)=>ie(Math.exp,t,e),floor:(t,e)=>ie(Math.floor,t,e),ln:(t,e)=>ie(Math.log,t,e),log:(t,e,r)=>ie((n,i)=>Math.log(n)/Math.log(i),t,e,r),power:(t,e,r)=>ie(Math.pow,t,e,r),round:(t,e,...r)=>ie((n,i=0)=>{if(typeof i!="number"||i<0)throw new Error("Invalid precision provided to round()");let o=Math.pow(10,i);return Math.round(n*o)/o},t,e,...r),sqrt:(t,e)=>ie(Math.sqrt,t,e),truncate:(t,e)=>ie(r=>Math.trunc(r),t,e),children:he,descendants:he,trace:(t,e,r)=>e,now:()=>[{type:p.dateTime,value:new Date().toISOString()}],timeOfDay:()=>[{type:p.time,value:new Date().toISOString().substring(11)}],today:()=>[{type:p.date,value:new Date().toISOString().substring(0,10)}],between:(t,e,r,n,i)=>{let o=F.toDateTime(t,r.eval(t,e));if(o.length===0)throw new Error("Invalid start date");let s=F.toDateTime(t,n.eval(t,e));if(s.length===0)throw new Error("Invalid end date");let a=i.eval(t,e)[0]?.value;if(a!=="years"&&a!=="months"&&a!=="days")throw new Error("Invalid units");let u=Ht(o[0].value,s[0].value);return[{type:p.Quantity,value:{value:u[a],unit:a}}]},is:(t,e,r)=>{let n=gt(r);return n?e.map(i=>({type:p.boolean,value:et(i,n)})):[]},not:(t,e)=>F.toBoolean(t,e).map(r=>({type:p.boolean,value:!r.value})),resolve:(t,e)=>e.map(r=>{let n=r.value,i;if(typeof n=="string")i=n;else if(typeof n=="object"){let o=n;if(o.resource)return E(o.resource);o.reference?i=o.reference:o.type&&o.identifier&&(i=`${o.type}?identifier=${o.identifier.system}|${o.identifier.value}`)}if(i?.includes("?")){let[o]=i.split("?");return{type:o,value:{resourceType:o}}}if(i?.includes("/")){let[o,s]=i.split("/");return{type:o,value:{resourceType:o,id:s}}}return{type:p.BackboneElement,value:void 0}}).filter(r=>!!r.value),as:(t,e,r)=>{let n=gt(r);if(!n)throw new Error(`Expected a valid type identifier as the right operand of 'as', but found ${r.toString()}`);let i=L(e);return i&&et(i,n)?[i]:[]},type:(t,e)=>e.map(({value:r})=>typeof r=="boolean"?{type:p.BackboneElement,value:{namespace:"System",name:"Boolean"}}:typeof r=="number"?{type:p.BackboneElement,value:{namespace:"System",name:"Integer"}}:D(r)?{type:p.BackboneElement,value:{namespace:"FHIR",name:r.resourceType}}:{type:p.BackboneElement,value:null}),conformsTo:(t,e,r)=>{let n=r.eval(t,e)[0].value;if(!n.startsWith("http://hl7.org/fhir/StructureDefinition/"))throw new Error("Expected a StructureDefinition URL");let i=n.replace("http://hl7.org/fhir/StructureDefinition/","");return e.map(o=>({type:p.boolean,value:o.value?.resourceType===i}))},getResourceKey:(t,e)=>{let r=e[0]?.value;return r?.id?[{type:p.id,value:r.id}]:[]},getReferenceKey:(t,e,r)=>{let n=e[0]?.value;if(!n?.reference)return[];let i="";return r instanceof U&&(i=r.name),i&&!n.reference.startsWith(i+"/")?[]:[{type:p.id,value:Z(n)}]},extension:(t,e,r)=>{let n=r.eval(t,e)[0].value,i=e?.[0]?.value;if(i){let o=le(i,n);if(o)return[{type:p.Extension,value:o}]}return[]}};function z(t,e,r,...n){if(r.length===0)return[];let[{value:i}]=oe(r,1);if(typeof i!="string")throw new TypeError("String function cannot be called with non-string");let o=n.map(a=>a?.eval(e,r)[0]?.value),s=t(i,...o);return s===void 0?[]:Array.isArray(s)?s.map(E):[E(s)]}function ie(t,e,r,...n){if(r.length===0)return[];let[{value:i}]=oe(r,1),o=N(i),s=o?i.value:i;if(typeof s!="number")throw new TypeError("Math function cannot be called with non-number");let a=t(s,...n.map(l=>l.eval(e,r)[0]?.value)),u=o?p.Quantity:r[0].type,d=o?{...i,value:a}:a;return[{type:u,value:d}]}function oe(t,e){if(t.length!==e)throw new Error(`Expected ${e} arguments`);for(let r of t)if(r==null)throw new Error("Expected non-null argument");return t}function Be(t){let e=t;for(;e.parent?.variables.$this;)e=e.parent;return[e.variables.$this]}var Ae=class{constructor(e,r){c(this,"original");c(this,"child");this.original=e,this.child=r}eval(e,r){try{if(r.length>0){let n=[];for(let i of r)n.push(this.child.eval({parent:e,variables:{$this:i}},[i]));return n.flat()}else return this.child.eval(e,[])}catch(n){throw new Error(`FhirPathError on "${this.original}": ${n}`,{cause:n})}}toString(){return this.child.toString()}},J=class{constructor(e){c(this,"value");this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},U=class{constructor(e){c(this,"name");this.name=e}eval(e,r){if(this.name==="$this")return r;let n=this.getVariable(e);if(n)return[n];if(this.name.startsWith("%"))throw new Error(`Undefined variable ${this.name}`);return r.flatMap(i=>this.evalValue(i)).filter(i=>i?.value!==void 0)}getVariable(e){let r=e.variables[this.name];if(r!==void 0)return r;if(e.parent)return this.getVariable(e.parent)}evalValue(e){let r=e.value;if(!(!r||typeof r!="object"))return D(r,this.name)?("path"in e||(e.path=r.resourceType),e):rn(e,this.name)}toString(){return this.name}},Jt=class{eval(){return[]}toString(){return"{}"}},Kt=class extends It{constructor(r,n,i){super(r,n);c(this,"impl");this.impl=i}eval(r,n){return this.impl(this.child.eval(r,n))}toString(){return this.operator+this.child.toString()}},we=class extends A{constructor(e,r){super("as",e,r)}eval(e,r){return F.as(e,this.left.eval(e,r),this.right)}},q=class extends A{constructor(r,n,i,o){super(r,n,i);c(this,"impl");this.impl=o}eval(r,n){let i=this.left.eval(r,n),o=this.right.eval(r,n);if(i.length<1||o.length<1)return[];let s=L(i)?.value,a=L(o)?.value,u=N(s)?s.value:s,d=N(a)?a.value:a,l=this.impl(u,d);return typeof l=="boolean"?y(l):N(s)?[{type:p.Quantity,value:{...s,value:l}}]:[E(l)]}},ho=Object.freeze({type:"string",value:""}),Yt=class extends A{constructor(e,r){super("&",e,r)}eval(e,r){let n=L(this.left.eval(e,r))??ho,i=L(this.right.eval(e,r))??ho;if(typeof n.value!="string")throw new Error(`Expected string operand for &, but got ${n.type}`);if(typeof i.value!="string")throw new Error(`Expected string operand for &, but got ${i.type}`);return[{type:p.string,value:n.value+i.value}]}},Xt=class extends A{constructor(e,r){super("contains",e,r)}eval(e,r){let n=this.left.eval(e,r),i=this.right.eval(e,r);return y(n.some(o=>o.value===i[0].value))}},Zt=class extends A{constructor(e,r){super("in",e,r)}eval(e,r){let n=L(this.left.eval(e,r)),i=this.right.eval(e,r);return n?y(i.some(o=>pt(n,o)[0].value)):[]}},se=class extends A{constructor(e,r){super(".",e,r)}eval(e,r){return this.right.eval(e,this.left.eval(e,r))}toString(){return`${this.left.toString()}.${this.right.toString()}`}},qe=class extends A{constructor(e,r){super("|",e,r)}eval(e,r){let n=this.left.eval(e,r),i=this.right.eval(e,r);return qt([...n,...i])}},er=class extends A{constructor(e,r){super("=",e,r)}eval(e,r){let n=this.left.eval(e,r),i=this.right.eval(e,r);return Wi(n,i)}},tr=class extends A{constructor(e,r){super("!=",e,r)}eval(e,r){let n=this.left.eval(e,r),i=this.right.eval(e,r);return $i(n,i)}},rr=class extends A{constructor(e,r){super("~",e,r)}eval(e,r){let n=this.left.eval(e,r),i=this.right.eval(e,r);return un(n,i)}},nr=class extends A{constructor(e,r){super("!~",e,r)}eval(e,r){let n=this.left.eval(e,r),i=this.right.eval(e,r);return qi(un(n,i))}},We=class extends A{constructor(e,r){super("is",e,r)}eval(e,r){let n=this.left.eval(e,r);if(n.length!==1)return[];let i=gt(this.right);return i?y(et(n[0],i)):[]}},ir=class extends A{constructor(e,r){super("and",e,r)}eval(e,r){let n=L(this.left.eval(e,r),"boolean"),i=L(this.right.eval(e,r),"boolean");return n?.value===!0&&i?.value===!0?y(!0):n?.value===!1||i?.value===!1?y(!1):[]}},or=class extends A{constructor(e,r){super("or",e,r)}eval(e,r){let n=L(this.left.eval(e,r),"boolean"),i=L(this.right.eval(e,r),"boolean");return n?.value===!1&&i?.value===!1?y(!1):n?.value||i?.value?y(!0):[]}},sr=class extends A{constructor(e,r){super("xor",e,r)}eval(e,r){let n=L(this.left.eval(e,r),"boolean"),i=L(this.right.eval(e,r),"boolean");return!n||!i?[]:y(n.value!==i.value)}},ar=class extends A{constructor(e,r){super("implies",e,r)}eval(e,r){let n=L(this.left.eval(e,r),"boolean"),i=L(this.right.eval(e,r),"boolean");return i?.value===!0||n?.value===!1?y(!0):!n||!i?[]:y(!1)}},ae=class{constructor(e,r){c(this,"name");c(this,"args");this.name=e,this.args=r}eval(e,r){let n=F[this.name];if(!n)throw new Error("Unrecognized function: "+this.name);return n(e,r,...this.args)}toString(){return`${this.name}(${this.args.map(e=>e.toString()).join(", ")})`}},$e=class{constructor(e,r){c(this,"left");c(this,"expr");this.left=e,this.expr=r}eval(e,r){let n=this.expr.eval(e,r);if(n.length!==1)return[];let i=n[0].value;if(typeof i!="number")throw new Error("Invalid indexer expression: should return integer}");let o=this.left.eval(e,r);return i in o?[o[i]]:[]}toString(){return`${this.left.toString()}[${this.expr.toString()}]`}};var Wa=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],$a=/^\d{4}-\d{2}[\dT:.+\-Z]*(?=[\s)\]]|$)/,ja={"'":"'",'"':'"',"`":"`",r:"\r",n:`
|
|
2
|
+
`,t:" ",f:"\f","\\":"\\"},Oe=class{constructor(e,r,n,i){c(this,"str");c(this,"keywords");c(this,"operators");c(this,"dateTimeLiterals");c(this,"symbolRegex");c(this,"result",[]);c(this,"pos",{index:0,line:1,column:0});c(this,"markStack",[]);this.str=e,this.keywords=r,this.operators=n,this.dateTimeLiterals=!!i?.dateTimeLiterals,this.symbolRegex=i?.symbolRegex??/[$\w%]/}tokenize(){for(;this.pos.index<this.str.length;){let e=this.consumeToken();e&&this.result.push(e)}return this.result}prevToken(){return this.result.slice(-1)[0]}peekToken(){this.mark();let e=this.consumeToken();return this.reset(),e}consumeToken(){this.consumeWhitespace();let e=this.curr();if(!e)return;this.mark();let r=this.peek();return e==="/"&&r==="*"?this.consumeMultiLineComment():e==="/"&&r==="/"?this.consumeSingleLineComment():e==="'"||e==='"'||e==="`"?this.consumeString(e):e==="@"?this.consumeDateTime():/\d/.exec(e)?this.consumeNumber():/\w/.exec(e)?this.consumeSymbol():(e==="$"||e==="%")&&/\w/.exec(r)?this.consumeSymbol():(e==="$"||e==="%")&&(r==="'"||r==='"'||r==="`")?this.consumeQuotedSymbol(r):this.consumeOperator()}consumeWhitespace(){this.consumeWhile(()=>/\s/.exec(this.curr()))}consumeMultiLineComment(){let 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(()=>this.curr()!==`
|
|
3
|
+
`))}consumeString(e){this.advance();let r="",n;for(;n=this.consumeChar(e);)r+=n;let i=this.buildToken(e==="`"?"Symbol":"String",r);return this.advance(),i}consumeChar(e){let r=this.curr();if(r==="\\"){this.advance();let n=this.curr(),i=ja[n];if(i!==void 0)return this.advance(),i;if(n==="u"){this.advance();let o=/^[0-9a-fA-F]{4}$/.exec(this.str.substring(this.pos.index,this.pos.index+4))?.[0];return o?(this.advance(),this.advance(),this.advance(),this.advance(),String.fromCodePoint(Number.parseInt(o,16))):"u"}return this.consumeChar(e)}return r===e||!r?"":(this.advance(),r)}consumeQuotedSymbol(e){this.mark();let r=this.pos.index;this.advance(),this.consumeString(e);let n=this.str.substring(r,this.pos.index);return this.buildToken("Symbol",n)}consumeDateTime(){this.advance();let e=this.pos.index;this.consumeWhile(()=>/[\d-]/.exec(this.curr()));let r=!1,n=!1;if(this.curr()==="T"&&(r=!0,this.advance(),this.consumeWhile(()=>/[\d:]/.exec(this.curr())),this.curr()==="."&&/\d/.exec(this.peek())&&(this.advance(),this.consumeWhile(()=>/\d/.exec(this.curr()))),this.curr()==="Z"?(n=!0,this.advance()):(this.curr()==="+"||this.curr()==="-")&&(n=!0,this.advance(),this.consumeWhile(()=>/[\d:]/.exec(this.curr())))),this.pos.index===e)throw new Error("Invalid DateTime literal");let i=this.str.substring(e,this.pos.index);return i.endsWith("T")?i=i.substring(0,i.length-1):!i.startsWith("T")&&r&&!n&&(i+="Z"),this.buildToken("DateTime",i)}consumeNumber(){let e=this.pos.index,r="Number";this.consumeWhile(()=>/\d/.exec(this.curr())),this.curr()==="."&&/\d/.exec(this.peek())&&(this.advance(),this.consumeWhile(()=>/\d/.exec(this.curr())));let n=this.curr();if(n==="-"&&this.dateTimeLiterals)return $a.test(this.str.substring(e))?(this.pos.index=e-1,this.consumeDateTime()):this.consumeUnquotedString(e);if(n===" ")Ha(this.peekToken())&&(r="Quantity",this.consumeToken());else if(n&&/[a-zA-Z_$]/.exec(n))return this.consumeUnquotedString(e);return this.buildToken(r,this.str.substring(e,this.pos.index))}consumeUnquotedString(e){return this.pos.index=e,this.buildToken("String",this.consumeWhile(()=>this.symbolRegex.exec(this.curr())))}consumeSymbol(){let e=this.consumeWhile(()=>this.symbolRegex.exec(this.curr()));return this.prevToken()?.value!=="."&&this.keywords.includes(e)?this.buildToken(e,e):this.buildToken("Symbol",e)}consumeOperator(){let e=this.curr(),r=this.peek(),n=e+r;return this.operators.includes(n)?(this.advance(),this.advance(),this.buildToken(n,n)):(this.advance(),this.buildToken(e,e))}consumeWhile(e){let r=this.pos.index;for(;this.pos.index<this.str.length&&e();)this.advance();return this.str.substring(r,this.pos.index)}curr(){return this.str[this.pos.index]}peek(){return this.str[this.pos.index+1]??""}mark(){this.markStack.push({...this.pos})}reset(){let 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++,this.curr()===`
|
|
4
|
+
`?(this.pos.line++,this.pos.column=0):this.pos.column++}buildToken(e,r){let n=this.markStack.pop();if(!n)throw new Error("No mark for token");return{id:e,value:r,...n}}};function Ha(t){return!!(t&&(t.id==="String"||t.id==="Symbol"&&Wa.includes(t.value)))}var yt=["true","false"],xt=["!=","!~","<=",">=","{}","->"];function go(t){return new Oe(t,yt,xt).tokenize()}var T={FunctionCall:0,Dot:1,Indexer:2,UnaryAdd:3,UnarySubtract:3,Multiply:4,Divide:4,IntegerDivide:4,Modulo:4,Add:5,Subtract:5,Ampersand:5,Is:6,As:6,Union:7,GreaterThan:8,GreaterThanOrEquals:8,LessThan:8,LessThanOrEquals:8,Equals:9,Equivalent:9,NotEquals:9,NotEquivalent:9,In:10,Contains:10,And:11,Xor:12,Or:12,Implies:13,Arrow:100,Semicolon:200},Ga={parse(t){let e=t.consumeAndParse();if(!t.match(")"))throw new Error("Parse error: expected `)` got `"+t.peek()?.value+"`");return e}},Qa={parse(t,e){let r=t.consumeAndParse();if(!t.match("]"))throw new Error("Parse error: expected `]`");return new $e(e,r)},precedence:T.Indexer},za={parse(t,e){if(!(e instanceof U))throw new Error("Unexpected parentheses");let r=[];for(;!t.match(")");)r.push(t.consumeAndParse()),t.match(",");return new ae(e.name,r)},precedence:T.FunctionCall};function Ja(t){let e=t.split(" "),r=Number.parseFloat(e[0]),n=e[1];return n?.startsWith("'")&&n.endsWith("'")?n=n.substring(1,n.length-1):n="{"+n+"}",{value:r,unit:n}}function vt(){return new kt().registerPrefix("String",{parse:(t,e)=>new J({type:p.string,value:e.value})}).registerPrefix("DateTime",{parse:(t,e)=>new J({type:p.dateTime,value:nt(e.value)})}).registerPrefix("Quantity",{parse:(t,e)=>new J({type:p.Quantity,value:Ja(e.value)})}).registerPrefix("Number",{parse:(t,e)=>new J({type:e.value.includes(".")?p.decimal:p.integer,value:Number.parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new J({type:p.boolean,value:!0})}).registerPrefix("false",{parse:()=>new J({type:p.boolean,value:!1})}).registerPrefix("Symbol",{parse:(t,e)=>new U(e.value)}).registerPrefix("{}",{parse:()=>new Jt}).registerPrefix("(",Ga).registerInfix("[",Qa).registerInfix("(",za).prefix("+",T.UnaryAdd,(t,e)=>new Kt("+",e,r=>r)).prefix("-",T.UnarySubtract,(t,e)=>new q("-",e,e,(r,n)=>-n)).infixLeft(".",T.Dot,(t,e,r)=>new se(t,r)).infixLeft("/",T.Divide,(t,e,r)=>new q("/",t,r,(n,i)=>n/i)).infixLeft("*",T.Multiply,(t,e,r)=>new q("*",t,r,(n,i)=>n*i)).infixLeft("+",T.Add,(t,e,r)=>new q("+",t,r,(n,i)=>n+i)).infixLeft("-",T.Subtract,(t,e,r)=>new q("-",t,r,(n,i)=>n-i)).infixLeft("|",T.Union,(t,e,r)=>new qe(t,r)).infixLeft("=",T.Equals,(t,e,r)=>new er(t,r)).infixLeft("!=",T.NotEquals,(t,e,r)=>new tr(t,r)).infixLeft("~",T.Equivalent,(t,e,r)=>new rr(t,r)).infixLeft("!~",T.NotEquivalent,(t,e,r)=>new nr(t,r)).infixLeft("<",T.LessThan,(t,e,r)=>new q("<",t,r,(n,i)=>n<i)).infixLeft("<=",T.LessThanOrEquals,(t,e,r)=>new q("<=",t,r,(n,i)=>n<=i)).infixLeft(">",T.GreaterThan,(t,e,r)=>new q(">",t,r,(n,i)=>n>i)).infixLeft(">=",T.GreaterThanOrEquals,(t,e,r)=>new q(">=",t,r,(n,i)=>n>=i)).infixLeft("&",T.Ampersand,(t,e,r)=>new Yt(t,r)).infixLeft("and",T.And,(t,e,r)=>new ir(t,r)).infixLeft("as",T.As,(t,e,r)=>new we(t,r)).infixLeft("contains",T.Contains,(t,e,r)=>new Xt(t,r)).infixLeft("div",T.Divide,(t,e,r)=>new q("div",t,r,(n,i)=>Math.trunc(n/i))).infixLeft("in",T.In,(t,e,r)=>new Zt(t,r)).infixLeft("is",T.Is,(t,e,r)=>new We(t,r)).infixLeft("mod",T.Modulo,(t,e,r)=>new q("mod",t,r,(n,i)=>n%i)).infixLeft("or",T.Or,(t,e,r)=>new or(t,r)).infixLeft("xor",T.Xor,(t,e,r)=>new sr(t,r)).infixLeft("implies",T.Implies,(t,e,r)=>new ar(t,r))}var Ka=vt();function cr(t){return new Ae(t,Ka.construct(go(t)).consumeAndParse())}function xm(t,e,r={},n=void 0){let i=Array.isArray(e)?e:[e];for(let o=0;o<i.length;o++){let s=i[o];typeof s=="object"&&"type"in s&&"value"in s||(i[o]=E(i[o]))}return k(t,i,r,n).map(o=>o.value)}function k(t,e,r={},n=void 0){let i;if(typeof t=="string"){let o=n?.get(t);i=o??cr(t),n&&!o&&n.set(t,i)}else i=t;return i.eval({variables:r},e).map(o=>{let s={type:o.type,value:o.value?.valueOf()};return"path"in o&&(s.path=o.path),s})}function Rm(t){let e=[];for(let r of t)r.type===p.Range?e.push([r.value?.low?.value,r.value?.high?.value]):typeof r.value=="number"&&e.push([r.value,r.value]);return e}function yo(t){let e=[];for(let r of t){let n=Wt(r.value);n&&e.push(n)}return e}function xo(t){let e=new Set;for(let r of t){let n=so(r);n&&e.add(n)}return Array.from(e)}function vo(t){let e=new Set;for(let r of t){let{value:n}=r;n&&(me(n)?e.add(n):W(n)?e.add(n.reference):ft(n)?e.add(I(n)):typeof n.identifier=="object"&&e.add(`identifier:${n.identifier.system}|${n.identifier.value}`))}return Array.from(e)}function Cm(t){let e=[];for(let r of t){let{value:n}=r;typeof n=="number"?e.push({value:n}):N(n)&&e.push(n)}return e}function Pm(t){let e=new Set;for(let r of t)me(r.value)&&e.add(r.value);return Array.from(e)}function So(t,e={}){let r=[];for(let n of t)Ya(e,r,n);return r}function Ya(t,e,r){let{type:n,value:i}=r;switch(n){case p.Identifier:Xa(e,t,i);break;case p.CodeableConcept:Za(e,t,i);break;case p.Coding:To(e,t,i);break;case p.ContactPoint:ec(e,t,i);break;default:je(e,t,void 0,i?.toString())}}function Xa(t,e,r){r?.type?.text&&je(t,e,e.textSearchSystem,r.type.text),je(t,e,r?.system,r?.value)}function Za(t,e,r){r?.text&&je(t,e,e.textSearchSystem,r.text);for(let n of r?.coding??v)To(t,e,n)}function To(t,e,r){r&&(r.display&&je(t,e,e.textSearchSystem,r.display),je(t,e,r.system,r.code))}function ec(t,e,r){r&&je(t,e,r.system,r.value?.toLocaleLowerCase())}function je(t,e,r,n){(r||n)&&!t.some(i=>i.system===r&&i.value===n)&&t.push({system:r,value:n&&e.caseInsensitive?n.toLocaleLowerCase():n})}var Dm=20,Vm=1e3,g={EQUALS:"eq",NOT_EQUALS:"ne",GREATER_THAN:"gt",LESS_THAN:"lt",GREATER_THAN_OR_EQUALS:"ge",LESS_THAN_OR_EQUALS:"le",STARTS_AFTER:"sa",ENDS_BEFORE:"eb",APPROXIMATELY:"ap",CONTAINS:"contains",STARTS_WITH:"sw",EXACT:"exact",TEXT:"text",NOT:"not",ABOVE:"above",BELOW:"below",IN:"in",NOT_IN:"not-in",OF_TYPE:"of-type",MISSING:"missing",PRESENT:"present",IDENTIFIER:"identifier",ITERATE:"iterate"},bn={contains:g.CONTAINS,exact:g.EXACT,above:g.ABOVE,below:g.BELOW,text:g.TEXT,not:g.NOT,in:g.IN,"not-in":g.NOT_IN,"of-type":g.OF_TYPE,missing:g.MISSING,identifier:g.IDENTIFIER,iterate:g.ITERATE},En={eq:g.EQUALS,ne:g.NOT_EQUALS,lt:g.LESS_THAN,le:g.LESS_THAN_OR_EQUALS,gt:g.GREATER_THAN,ge:g.GREATER_THAN_OR_EQUALS,sa:g.STARTS_AFTER,eb:g.ENDS_BEFORE,ap:g.APPROXIMATELY,sw:g.STARTS_WITH};function St(t,e){if(!t)throw new Error("Invalid search URL");let r="",n;if(typeof t=="string")if(t.includes("?")){let[s,a]=t.split("?");r=s,n=new URLSearchParams(a)}else r=t;else typeof t=="object"&&(r=t.pathname,n=t.searchParams);let i;r.includes("/")?i=r.split("/").filter(Boolean).pop():i=r;let o=[];if(n)for(let s of n)o.push(s);if(e)for(let[s,a]of Object.entries(e))if(Array.isArray(a))for(let u of a)o.push([s,u]);else o.push([s,a??""]);return tc(i,o)}function tc(t,e){let r={resourceType:t},n=new Set;for(let[i,o]of e)rc(r,n,i,o);return r}function Tn(t,e,r){let n=`${r.code}\0${r.operator}\0${r.value}`;e.has(n)||(e.add(n),t.filters=be(t.filters,r))}function rc(t,e,r,n){let i,o,s=r.indexOf(":");if(s>=0?(i=r.substring(0,s),o=r.substring(s+1)):(i=r,o=""),i!=="_"){if(i==="_has"||r.includes(".")){Tn(t,e,{code:r,operator:g.EQUALS,value:n});return}switch(i){case"_sort":nc(t,n);break;case"_cursor":t.cursor=n;break;case"_count":t.count=Number.parseInt(n,10);break;case"_offset":t.offset=Number.parseInt(n,10);break;case"_total":t.total=n;break;case"_summary":n==="count"?(t.total="accurate",t.count=0):(n==="true"||n==="data"||n==="text")&&(t.summary=n);break;case"_include":{let a=bo(n);o==="iterate"&&(a.modifier=g.ITERATE),t.include=be(t.include,a);break}case"_revinclude":{let a=bo(n);o==="iterate"&&(a.modifier=g.ITERATE),t.revInclude=be(t.revInclude,a);break}case"_fields":case"_elements":t.fields=n.split(",");break;case"_type":t.types=n.split(",");break;case"_format":t.format=n;break;case"_pretty":t.pretty=n==="true";break;default:{let a=Q.types[t.resourceType]?.searchParams?.[i];a?Tn(t,e,oc(a,g.EQUALS,o,n)):Tn(t,e,sc(i,o,n))}}}}function nc(t,e){for(let r of e.split(",")){let n,i=!1;r.startsWith("-")?(n=r.substring(1),i=!0):n=r,t.sortRules||(t.sortRules=[]),t.sortRules.push({code:n,descending:i})}}var ic=[g.MISSING,g.PRESENT];function oc(t,e,r,n){if(ic.includes(r||e))return{code:t.code,operator:r||e,value:n};switch(t.type){case"number":case"date":case"quantity":{let{operator:i,value:o}=ac(n,r||g.EQUALS);if(!Eo(t,o))throw new m(w(`Invalid format for ${t.type} search parameter: ${o}`));return{code:t.code,operator:i,value:o}}case"reference":case"string":case"token":case"uri":{if(!Eo(t,n))throw new m(w(`Invalid format for ${t.type} search parameter: ${n}`));return{code:t.code,operator:cc(r)??e,value:n}}default:throw new Error("Unrecognized search parameter type: "+t.type)}}function sc(t,e,r){let n=g.EQUALS;if(e)n=e;else if(r.length>=2){let i=r.substring(0,2);i in En&&(r.length===2||r.at(2)?.match(/\d/))&&(n=i,r=r.substring(i.length))}return{code:t,operator:n,value:r}}function ac(t,e){let r=t.substring(0,2),n=En[r];return n?{operator:n,value:t.substring(2)}:{operator:e,value:t}}function cc(t){return bn[t]}function bo(t){let e=t.split(":");if(e.includes("*"))throw new m(w("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new m(w(`Invalid include value '${t}': must be of the form ResourceType:search-parameter`));if(e.length===2)return{resourceType:e[0],searchParam:e[1]};if(e.length===3)return{resourceType:e[0],searchParam:e[1],targetType:e[2]};throw new m(w(`Invalid include value '${t}'`))}function Eo(t,e){return t.type==="date"?Ze(e):!0}var uc=/{{([^{}]+)}}/g;function _m(t,e,r=[]){return t=t.replaceAll(uc,(n,i)=>{let o=k(i,r,e);return o.length!==1?"":mo(o[0])}),St(t)}function Nm(t){let e=[];t.fields&&e.push("_fields="+t.fields.join(","));for(let r of t.filters??v)e.push(dc(r));t.sortRules&&t.sortRules.length>0&&e.push(lc(t.sortRules)),t.cursor!==void 0&&e.push("_cursor="+encodeURIComponent(t.cursor)),t.offset!==void 0&&t.offset!==0&&e.push("_offset="+t.offset),t.count!==void 0&&e.push("_count="+t.count),t.total!==void 0&&e.push("_total="+t.total),t.types&&t.types.length>0&&e.push("_type="+t.types.join(","));for(let r of t.include??v)e.push(Ro("_include",r));for(let r of t.revInclude??v)e.push(Ro("_revinclude",r));return e.length===0?"":(Qt(e),"?"+e.join("&"))}function dc(t){let e=t.operator in bn?":"+t.operator:"",r=t.operator!==g.EQUALS&&t.operator in En?t.operator:"";return`${t.code}${e}=${r}${encodeURIComponent(t.value)}`}function lc(t){return"_sort="+t.map(e=>e.descending?"-"+e.code:e.code).join(",")}function Ro(t,e){return t+(e.modifier?":"+e.modifier:"")+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function Tt(t){let e=[],r="",n=!1;for(let i of t)n?(r+=i,n=!1):i==="\\"?n=!0:i===","?(e.push(r),r=""):r+=i;return e.push(r),e}function pc(t,e){return w(`Invalid modifier :${t} for ${e}`)}function Lm(t,e){return t in bn?pc(t,e):w(`Invalid operator ${t} for ${e}`)}function Fm(t){return t.types??[t.resourceType]}function ur(t,e){if(e.resourceType!==t.resourceType)return!1;for(let r of e.filters??v)if(!mc(t,e,r))return!1;return!0}var fc=new te(1e3);function mc(t,e,r){let n=Q.types[e.resourceType]?.searchParams?.[r.code];if(!n)return!1;let i=k(n.expression,[E(t)],void 0,fc);if(r.operator===g.MISSING||r.operator===g.PRESENT)return hc(i,r);switch(n.type){case"reference":return gc(n,i,r);case"string":case"uri":return vc(i,r);case"token":return yc(i,r);case"date":return Tc(i,r);default:return!1}}function hc(t,e){let r=t.length>0;return(e.operator===g.MISSING&&e.value==="false"||e.operator===g.PRESENT&&e.value==="true")===r}function gc(t,e,r){let n=dr(r.operator);if(r.value===""&&e.length===0)return r.operator===g.EQUALS;let i=vo(e);for(let o of Tt(r.value)){let s=!1;if(o.includes("/")?s=i.includes(o):(t.target?.length===1||r.code==="_compartment")&&(s=i.some(a=>a?.endsWith("/"+o))),s)return!n}return n}function yc(t,e){let r=So(t),n=Tt(e.value),i=dr(e.operator);for(let o of r)for(let s of n)if(xc(o,s))return!i;return i}function xc(t,e){if(e.includes("|")){let[r,n]=e.split("|").map(i=>i.toLowerCase());return!r&&!n?!1:r?t.system?.toLowerCase()===r&&(!n||t.value?.toLowerCase()===n):!t.system&&t.value?.toLowerCase()===n}return t.value?.toLowerCase()===e.toLowerCase()}function vc(t,e){let r=xo(t),n=Tt(e.value),i=dr(e.operator);for(let o of r)for(let s of n)if(Sc(o,s))return!i;return i}function Sc(t,e){return t.toLowerCase().includes(e.toLowerCase())}function Tc(t,e){let r=yo(t),n=Tt(e.value),i=dr(e.operator);for(let o of r)for(let s of n)if(bc(o,e.operator,s))return!i;return i}function bc(t,e,r){if(!t)return!1;let n=Wt(r);if(!n)return!1;let i=t.start??"0000",o=t.end??"9999",s=n.start,a=n.end;switch(e){case g.APPROXIMATELY:case g.EQUALS:case g.NOT_EQUALS:return i<a&&o>s;case g.LESS_THAN:return i<s;case g.GREATER_THAN:return o>a;case g.LESS_THAN_OR_EQUALS:return i<=a;case g.GREATER_THAN_OR_EQUALS:return o>=s;case g.STARTS_AFTER:return i>a;case g.ENDS_BEFORE:return o<s;default:return!1}}function dr(t){return t===g.NOT_EQUALS||t===g.NOT}var Ec={resourceType:"*"},Rc=["DomainConfiguration","Enterprise","JsonWebKey","Login"],Cc=["Cron","Package","PackageRelease","PackageInstallation","Project","ProjectMembership","User","UserSecurityRequest"],He={READ:"read",VREAD:"vread",UPDATE:"update",DELETE:"delete",HISTORY:"history",CREATE:"create",SEARCH:"search"},Pc=[He.READ,He.VREAD,He.HISTORY,He.SEARCH];function Km(t,e){return Co(t,He.SEARCH,e)}function Ym(t,e){return Rc.includes(e)?!1:Co(t,He.UPDATE,e)}function Co(t,e,r){return!!t.resource?.some(n=>Po(n,r,e))}function Xm(t,e){return!!Ac(e,He.UPDATE,t)}function Ac(t,e,r){return r?r.resource?.find(n=>wc(t,e,n)):Ec}function wc(t,e,r){let n=t.resourceType;return Po(r,n,e)?n==="Binary"?!0:!(r.compartment&&!t.meta?.compartment?.some(i=>i.reference===r.compartment?.reference)||r.criteria&&!ur(t,St(r.criteria))):!1}function Po(t,e,r){return t.resourceType!==e&&(t.resourceType!=="*"||Cc.includes(e))?!1:t.interaction?t.interaction.includes(r):!t.readonly||Pc.includes(r)}var eh={FIRST:"first",APPLICATION:"application"};function ee(){return typeof window<"u"}function rh(){return typeof Buffer<"u"}function nh(){return typeof window<"u"?window:void 0}function Rn(){return typeof Buffer<"u"?Buffer:void 0}var ge={assign(t){ee()&&globalThis.location.assign(t)},reload(){ee()&&globalThis.location.reload()},getSearch(){return ee()?globalThis.location.search:""},getPathname(){return ee()?globalThis.location.pathname:""},getLocation(){return ee()?globalThis.location.toString():""},getOrigin(){return ee()?globalThis.location.protocol+"//"+globalThis.location.host+"/":""}};function Oc(t){if(ee()){let r=window.atob(t),n=Uint8Array.from(r,i=>i.codePointAt(0));return new window.TextDecoder().decode(n)}let e=Rn();if(e)return e.from(t,"base64").toString("utf-8");throw new Error("Unable to decode base64")}function lr(t){if(ee()){let r=new window.TextEncoder().encode(t),n=String.fromCodePoint.apply(null,r);return window.btoa(n)}let e=Rn();if(e)return e.from(t,"utf8").toString("base64");throw new Error("Unable to encode base64")}function Ao(t){return lr(t).replaceAll("+","-").replaceAll("/","_").replace(/[=]{1,2}$/,"")}function pr(t){t=t.padEnd(t.length+(4-t.length%4)%4,"=");let e=t.replaceAll("-","+").replaceAll("_","/");return Oc(e)}function Cn(){let t=new Uint32Array(28);return crypto.getRandomValues(t),Yi(t.buffer)}async function wo(t){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(t))}function ce(){return typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replaceAll(/[xy]/g,t=>{let e=Math.trunc(Math.random()*16);return(t==="x"?e:e&3|8).toString(16)})}function Ic(t){let e={};t=fe(t);for(let i of t.entry??v){let o=i.resource;if(!o)continue;o.meta!==void 0&&(delete o.meta.author,delete o.meta.compartment,delete o.meta.lastUpdated,delete o.meta.project,delete o.meta.versionId,Object.keys(o.meta).length===0&&delete o.meta);let s=o?.id;if(s)e[s]=ce(),i.fullUrl="urn:uuid:"+e[s],delete i.resource?.id;else if(i.fullUrl?.startsWith("resource:")){let a=i.fullUrl.slice(9);e[a]=ce(),i.fullUrl="urn:uuid:"+e[a]}}let r=t.entry,n=JSON.stringify({resourceType:"Bundle",type:"transaction",entry:r?.map(i=>({fullUrl:i.fullUrl,request:{method:"POST",url:i.resource?.resourceType},resource:i.resource}))},(i,o)=>kc(i,o,e),2);return Mc(JSON.parse(n))}function kc(t,e,r){if((t==="reference"||t==="url")&&typeof e=="string"){let n;if(e.includes("/")?n=e.split("/")[1]:e.startsWith("urn:uuid:")||e.startsWith("resource:")?n=e.slice(9):e.startsWith("#")&&(n=e.slice(1)),n){let i=r[n];if(i)return"urn:uuid:"+i}}return e}function Mc(t){let e=Vc(t),{sorted:r,cycles:n}=Dc(e),i={},o=[];for(let a of t.entry??v)a.fullUrl?i[a.fullUrl]=a:o.push(a);let s=r.map(a=>i[a]);for(let a of n)for(let u of a){let d=i[u],l={...d,request:{...d.request,method:"PUT"}};s.push(l)}return s.push(...o),{...t,entry:s}}var it={NotVisited:"NotVisited",Visiting:"Visiting",Visited:"Visited"};function Dc(t){let e=[],r={},n=[];for(let o of Object.keys(t))r[o]=it.NotVisited;function i(o,s){if(r[o]===it.Visited)return!0;if(r[o]===it.Visiting){let u=s.lastIndexOf(o);return u!==-1&&n.push(s.slice(u)),!0}r[o]=it.Visiting,s.push(o);let a=!1;for(let u of t[o]??v)i(u,s)||(a=!0);return r[o]=it.Visited,s.pop(),e.unshift(o),!a}for(let o in t)r[o]===it.NotVisited&&i(o,[]);return{sorted:e,cycles:n}}function Oo(t,e){for(let r in t)if(t[r]&&typeof t[r]=="object"){let n=t[r];if(W(n)){let i=n.reference;(i.startsWith("urn:uuid:")||i.startsWith("resource:"))&&e(i)}else Oo(n,e)}}function Vc(t){let e={};for(let r of t.entry??v)r.fullUrl&&(e[r.fullUrl]=[]);for(let r of t.entry??v){let n=r.fullUrl;n&&r.resource&&Oo(r.resource,i=>{i!==n&&e[i]&&e[i].push(n)})}return e}function ph(t){t=fe(t);let e={resourceType:"Bundle",type:"transaction",entry:[{resource:t}]};if(t.contained){for(let r of t.contained)e.entry.push({resource:r});t.contained=void 0}for(let r of e.entry)r.resource&&!r.resource.id&&(r.resource.id=ce());return Ic(e)}function fh(t,e,r){return t.entry?.find(({resource:n})=>n?.resourceType===e&&n?.id===r)?.resource}async function yh(t,e,r,n){return{hook:r.hook,hookInstance:ce(),context:n,prefetch:await _c(t,e,r,n)}}async function _c(t,e,r,n){if(!r.prefetch)return{};let i={};for(let[o,s]of Object.entries(r.prefetch)){let a=await Nc(t,e,n,s);i[o]=a??null}return i}function Nc(t,e,r,n){if(n=Fc(e,r,n),n.includes("{{"))return Promise.resolve(null);let i=/^(\w+)\/([0-9a-zA-Z-_]+)$/.exec(n);if(i){let[a,u]=i.slice(1);return t.readResource(a,u)}let[o,s]=rt(n,"?",2);return t.search(o,s)}var Lc=new Set(["userPractitionerId","userPractitionerRoleId","userPatientId","userRelatedPersonId"]);function Fc(t,e,r){return r.replaceAll(/\{\{([^}]+)\}\}/g,(n,i)=>{if(i=i.trim(),Lc.has(i))return t.id;if(i.startsWith("context.")){let o=i.substring(8),s=Uc(e,o);if(me(s))return s;if(typeof s=="number"||typeof s=="boolean")return String(s)}return n})}function Uc(t,e){let r=e.split("."),n=t;for(let i of r)if(n&&C(n)&&i in n)n=n[i];else return;return n}var V={CSS:"text/css",DICOM:"application/dicom",DICOM_JSON:"application/dicom+json",EVENT_STREAM:"text/event-stream",FAVICON:"image/vnd.microsoft.icon",FHIR_JSON:"application/fhir+json",FORM_URL_ENCODED:"application/x-www-form-urlencoded",HL7_V2:"x-application/hl7-v2+er7",HTML:"text/html",JAVASCRIPT:"text/javascript",JOSE:"application/jose",JSON:"application/json",JSON_PATCH:"application/json-patch+json",JWT:"application/jwt",LINKSET_JSON:"application/linkset+json",MULTIPART_FORM_DATA:"multipart/form-data",PNG:"image/png",SCIM_JSON:"application/scim+json",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript",PING:"x-application/ping",XML:"text/xml",CDA_XML:"application/cda+xml",OCTET_STREAM:"application/octet-stream"};var Pn=class{constructor(){c(this,"listeners");this.listeners={}}addEventListener(e,r){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(r)}removeEventListener(e,r){let n=this.listeners[e];if(n){for(let i=0;i<n.length;i++)if(n[i]===r){n.splice(i,1);return}}}dispatchEvent(e){let r=this.listeners[e.type];for(let n of r??v)try{n.call(this,e)}catch(i){console.error(`Unhandled error in "${e.type}" event listener`,i)}return!e.defaultPrevented}removeAllListeners(){this.listeners={}}listenerCount(e){return this.listeners[e]?.length??0}},ue=class{constructor(){c(this,"emitter",new Pn)}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,r){this.emitter.addEventListener(e,r)}removeEventListener(e,r){this.emitter.removeEventListener(e,r)}removeAllListeners(){this.emitter.removeAllListeners()}listenerCount(e){return this.emitter.listenerCount(e)}};var K={Event:typeof globalThis.Event<"u"?globalThis.Event:void 0,ErrorEvent:void 0,CloseEvent:void 0},Io=!1;function Bc(){if(typeof globalThis.Event>"u")throw new Error("Unable to lazy init events for ReconnectingWebSocket. globalThis.Event is not defined yet");K.Event=globalThis.Event,K.ErrorEvent=class extends Event{constructor(r,n){super("error",n);c(this,"message");c(this,"error");this.message=r.message,this.error=r}},K.CloseEvent=class extends Event{constructor(r=1e3,n="",i){super("close",i);c(this,"code");c(this,"reason");c(this,"wasClean",!0);this.code=r,this.reason=n}}}function qc(t,e){if(!t)throw new Error(e)}function Wc(){}function fr(t){if(t instanceof K.CloseEvent){let e=t;return new K.CloseEvent(e.code,e.reason,void 0)}if(t instanceof K.ErrorEvent){let e=t;return new K.ErrorEvent(e.error??new Error(e.message),void 0)}return new t.constructor(t.type,t)}function $c(t,e){let r=t;return r.error instanceof Error?new K.ErrorEvent(r.error,e):new K.ErrorEvent(new Error(r.message||"WebSocket error"),e)}var Ge={maxReconnectionDelay:1e4,minReconnectionDelay:1e3+Math.random()*4e3,minUptime:5e3,reconnectionDelayGrowFactor:1.3,connectionTimeout:4e3,maxRetries:1/0,maxEnqueuedMessages:1/0,startClosed:!1,debug:!1},ko=!1,ot=class t extends ue{constructor(r,n,i={}){Io||(Bc(),Io=!0);super();c(this,"_ws");c(this,"_retryCount",-1);c(this,"_uptimeTimeout");c(this,"_connectTimeout");c(this,"_shouldReconnect",!0);c(this,"_connectLock",!1);c(this,"_binaryType");c(this,"_closeCalled",!1);c(this,"_messageQueue",[]);c(this,"_debugLogger",console.log.bind(console));c(this,"_url");c(this,"_protocols");c(this,"_options");c(this,"onclose",null);c(this,"onerror",null);c(this,"onmessage",null);c(this,"onopen",null);c(this,"_handleOpen",r=>{this._debug("open event");let{minUptime:n=Ge.minUptime}=this._options;clearTimeout(this._connectTimeout),this._uptimeTimeout=setTimeout(()=>this._acceptOpen(),n),qc(this._ws,"WebSocket is not defined"),this._ws.binaryType=this._binaryType,this._messageQueue.forEach(i=>this._ws?.send(i)),this._messageQueue=[],this.onopen&&this.onopen(r),this.dispatchEvent(fr(r))});c(this,"_handleMessage",r=>{this._debug("message event"),this.onmessage&&this.onmessage(r),this.dispatchEvent(fr(r))});c(this,"_handleError",r=>{let n=$c(r,this);this._debug("error event",n.message),this._disconnect(void 0,n.message==="TIMEOUT"?"timeout":void 0),this.onerror&&this.onerror(n),this._debug("exec error listeners"),this.dispatchEvent(fr(n)),this._connect()});c(this,"_handleClose",r=>{this._debug("close event"),this._clearTimeouts(),this._shouldReconnect&&this._connect(),this.onclose&&this.onclose(r),this.dispatchEvent(fr(r))});this._url=r,this._protocols=n,this._options=i,this._options.startClosed&&(this._shouldReconnect=!1),this._options.binaryType?this._binaryType=this._options.binaryType:this._binaryType="blob",this._options.debugLogger&&(this._debugLogger=this._options.debugLogger),this._connect()}static get CONNECTING(){return 0}static get OPEN(){return 1}static get CLOSING(){return 2}static get CLOSED(){return 3}get CONNECTING(){return t.CONNECTING}get OPEN(){return t.OPEN}get CLOSING(){return t.CLOSING}get CLOSED(){return t.CLOSED}get binaryType(){return this._ws?this._ws.binaryType:this._binaryType}set binaryType(r){this._binaryType=r,this._ws&&(this._ws.binaryType=r)}get retryCount(){return Math.max(this._retryCount,0)}get bufferedAmount(){return this._messageQueue.reduce((n,i)=>(typeof i=="string"?n+=i.length:i instanceof Blob?n+=i.size:n+=i.byteLength,n),0)+(this._ws?.bufferedAmount??0)}get extensions(){return this._ws?.extensions??""}get protocol(){return this._ws?.protocol??""}get readyState(){return this._ws?this._ws.readyState:this._options.startClosed?t.CLOSED:t.CONNECTING}get url(){return this._ws?this._ws.url:""}get shouldReconnect(){return this._shouldReconnect}close(r=1e3,n){if(this._closeCalled=!0,this._shouldReconnect=!1,this._clearTimeouts(),!this._ws){this._debug("close enqueued: no ws instance");return}if(this._ws.readyState===this.CLOSED){this._debug("close: already closed");return}this._ws.close(r,n)}reconnect(r,n){this._shouldReconnect=!0,this._closeCalled=!1,this._retryCount=-1,!this._ws||this._ws.readyState===this.CLOSED?this._connect():(this._disconnect(r,n),this._connect())}send(r){if(this._ws?.readyState===this.OPEN)this._debug("send",r),this._ws.send(r);else{let{maxEnqueuedMessages:n=Ge.maxEnqueuedMessages}=this._options;this._messageQueue.length<n&&(this._debug("enqueue",r),this._messageQueue.push(r))}}_debug(...r){this._options.debug&&this._debugLogger("RWS>",...r)}_getNextDelay(){let{reconnectionDelayGrowFactor:r=Ge.reconnectionDelayGrowFactor,minReconnectionDelay:n=Ge.minReconnectionDelay,maxReconnectionDelay:i=Ge.maxReconnectionDelay}=this._options,o=0;return this._retryCount>0&&(o=n*Math.pow(r,this._retryCount-1),o>i&&(o=i)),this._debug("next delay",o),o}_wait(){return new Promise(r=>{setTimeout(r,this._getNextDelay())})}_connect(){if(this._connectLock||!this._shouldReconnect)return;this._connectLock=!0;let{maxRetries:r=Ge.maxRetries,connectionTimeout:n=Ge.connectionTimeout}=this._options;if(this._retryCount>=r){this._connectLock=!1,this._debug("max retries reached",this._retryCount,">=",r);return}this._retryCount++,this._debug("connect",this._retryCount),this._removeListeners(),this._wait().then(()=>{if(this._closeCalled){this._connectLock=!1;return}!this._options.WebSocket&&typeof WebSocket>"u"&&!ko&&(console.error("\u203C\uFE0F No WebSocket implementation available. You should define options.WebSocket."),ko=!0);let i=this._options.WebSocket||WebSocket;this._debug("connect",{url:this._url,protocols:this._protocols}),this._ws=this._protocols?new i(this._url,this._protocols):new i(this._url),this._ws.binaryType=this._binaryType,this._connectLock=!1,this._addListeners(),this._connectTimeout=setTimeout(()=>this._handleTimeout(),n)}).catch(i=>{this._connectLock=!1,this._handleError(new K.ErrorEvent(Error(i.message),this))})}_handleTimeout(){this._debug("timeout event"),this._handleError(new K.ErrorEvent(Error("TIMEOUT"),this))}_disconnect(r=1e3,n){if(this._clearTimeouts(),!this._ws)return;let i=this._ws;this._removeListeners(),i.addEventListener("error",Wc);try{i.close(r,n),this._handleClose(new K.CloseEvent(r,n,this))}catch{}}_acceptOpen(){this._debug("accept open"),this._retryCount=0}_removeListeners(){this._ws&&(this._debug("removeListeners"),this._ws.removeEventListener("open",this._handleOpen),this._ws.removeEventListener("close",this._handleClose),this._ws.removeEventListener("message",this._handleMessage),this._ws.removeEventListener("error",this._handleError))}_addListeners(){this._ws&&(this._debug("addListeners"),this._ws.addEventListener("open",this._handleOpen),this._ws.addEventListener("close",this._handleClose),this._ws.addEventListener("message",this._handleMessage),this._ws.addEventListener("error",this._handleError))}_clearTimeouts(){clearTimeout(this._connectTimeout),clearTimeout(this._uptimeTimeout)}};var An={"Patient-open":"Patient-open","Patient-close":"Patient-close","ImagingStudy-open":"ImagingStudy-open","ImagingStudy-close":"ImagingStudy-close","Encounter-open":"Encounter-open","Encounter-close":"Encounter-close","DiagnosticReport-open":"DiagnosticReport-open","DiagnosticReport-close":"DiagnosticReport-close","DiagnosticReport-select":"DiagnosticReport-select","DiagnosticReport-update":"DiagnosticReport-update",syncerror:"syncerror"},jc=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],wn=["DiagnosticReport-update"];function Mo(t){return wn.includes(t)}function Do(t){if(wn.includes(t))throw new m(S(`'context.version' is required for '${t}'.`))}var Hc={"Patient-open":{patient:{resourceType:"Patient"},encounter:{resourceType:"Encounter",optional:!0}},"Patient-close":{patient:{resourceType:"Patient"},encounter:{resourceType:"Encounter",optional:!0}},"ImagingStudy-open":{study:{resourceType:"ImagingStudy"},encounter:{resourceType:"Encounter",optional:!0},patient:{resourceType:"Patient",optional:!0}},"ImagingStudy-close":{study:{resourceType:"ImagingStudy"},encounter:{resourceType:"Encounter",optional:!0},patient:{resourceType:"Patient",optional:!0}},"Encounter-open":{encounter:{resourceType:"Encounter"},patient:{resourceType:"Patient"}},"Encounter-close":{encounter:{resourceType:"Encounter"},patient:{resourceType:"Patient"}},"DiagnosticReport-open":{report:{resourceType:"DiagnosticReport"},encounter:{resourceType:"Encounter",optional:!0},study:{resourceType:"ImagingStudy",optional:!0,manyAllowed:!0},patient:{resourceType:"Patient"}},"DiagnosticReport-close":{report:{resourceType:"DiagnosticReport"},encounter:{resourceType:"Encounter",optional:!0},study:{resourceType:"ImagingStudy",optional:!0,manyAllowed:!0},patient:{resourceType:"Patient"}},"DiagnosticReport-select":{report:{resourceType:"DiagnosticReport",reference:!0},patient:{resourceType:"Patient",optional:!0,reference:!0},select:{resourceType:"*",reference:!0,manyAllowed:!0}},"DiagnosticReport-update":{report:{resourceType:"DiagnosticReport",reference:!0},patient:{resourceType:"Patient",optional:!0,reference:!0},updates:{resourceType:"Bundle"}},syncerror:{operationoutcome:{resourceType:"OperationOutcome"}}};function Gc(t){return jc.includes(t)}function Vo(t){return!!t.endpoint}function On(t){if(!hr(t))throw new m(S("subscriptionRequest must be an object conforming to SubscriptionRequest type."));let{channelType:e,mode:r,topic:n,events:i}=t,o={"hub.channel.type":e,"hub.mode":r,"hub.topic":n};return r==="subscribe"&&(o["hub.events"]=i.join(",")),Vo(t)&&(o["hub.channel.endpoint"]=t.endpoint),new URLSearchParams(o).toString()}function hr(t){if(typeof t!="object")return!1;let{channelType:e,mode:r,topic:n,events:i}=t;if(!(e&&r&&n&&i)||typeof n!="string"||typeof i!="object"||!Array.isArray(i)||i.length<1||e!=="websocket"||r!=="subscribe"&&r!=="unsubscribe")return!1;for(let o of i)if(!An[o])return!1;return!(Vo(t)&&!(typeof t.endpoint=="string"&&t.endpoint.startsWith("ws")))}function Qc(t,e,r,n){if(typeof e!="object")throw new m(S(`context[${r}] is invalid. Context must contain a single valid FHIR resource! Resource is not an object.`));if(!(e.id&&typeof e.id=="string"))throw new m(S(`context[${r}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new m(S(`context[${r}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!Gc(e.resourceType))throw new m(S(`context[${r}] is invalid. Resource must contain a valid FHIRcast resource type. Resource type is not a known resource type.`));if(i&&e.resourceType!==i)throw new m(S(`context[${r}] is invalid. context[${r}] for the '${t}' event should contain resource of type ${i}.`))}}function zc(t,e,r,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),n.reference){if(!W(e.reference))throw new m(S(`context[${r}] is invalid. Expected key '${e.key}' to be a reference.`))}else Qc(t,e.resource,r,n)}function Jc(t,e){let r=new Map,n=Hc[t];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new m(S(`Key '${o}' not found for event '${t}'. Make sure to add only valid keys.`));zc(t,e[i],i,n[o],r)}for(let[i,o]of Object.entries(n)){if(!(o.optional||r.has(i)))throw new m(S(`Missing required key '${i}' on context for '${t}' event.`));if(!o.manyAllowed&&(r.get(i)??0)>1)throw new m(S(`${r.get(i)} context entries with key '${i}' found for the '${t}' event when schema only allows for 1.`))}}function In(t,e,r,n){if(!(t&&typeof t=="string"))throw new m(S("Must provide a topic."));if(!An[e])throw new m(S(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(An).join(", ")}`));if(typeof r!="object")throw new m(S("context must be a context object or array of context objects."));if(wn.includes(e)&&!n)throw new m(S(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(r)?r:[r];return Jc(e,i),{timestamp:new Date().toISOString(),id:ce(),event:{"hub.topic":t,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var mr=class extends ue{constructor(r,n){super();c(this,"subRequest");c(this,"websocket");if(this.subRequest=r,!r.endpoint)throw new m(S("Subscription request should contain an endpoint."));if(!hr(r))throw new m(S("Subscription request failed validation."));let{ReconnectingWebSocket:i=ot,...o}=n??{},s=new i(r.endpoint,void 0,o);s.addEventListener("open",()=>{this.dispatchEvent({type:"connect"})}),s.addEventListener("message",a=>{let u=JSON.parse(a.data);if(!u.event){u["hub.mode"]==="denied"&&this.disconnect();return}let d=u;d.event["hub.event"]!=="heartbeat"&&(this.dispatchEvent({type:"message",payload:d}),s.send(JSON.stringify({id:u?.id,timestamp:new Date().toISOString()})))}),s.addEventListener("close",()=>{this.dispatchEvent({type:"disconnect"})}),this.websocket=s}disconnect(){this.websocket.close()}};function Kc(t){return JSON.parse(pr(t))}function _o(t){return t.split(".").length===3}function gr(t){let[e,r,n]=t.split(".");return Kc(r)}function No(t){try{return typeof gr(t).login_id=="string"}catch{return!1}}function Lo(t){try{let r=gr(t).exp;return typeof r=="number"?r*1e3:void 0}catch{return}}var yr=class{constructor(e){c(this,"medplum");this.medplum=e}async get(e){return this.medplum.get(`keyvalue/v1/${e}`)}async set(e,r){await this.medplum.put(`keyvalue/v1/${e}`,r,V.TEXT)}async delete(e){await this.medplum.delete(`keyvalue/v1/${e}`)}};var Fo;Fo=Symbol.toStringTag;var j=class{constructor(e){c(this,Fo,"ReadablePromise");c(this,"suspender");c(this,"status","pending");c(this,"response");c(this,"error");this.suspender=e.then(r=>(this.status="success",this.response=r,r),r=>{throw this.status="error",this.error=r,r})}isPending(){return this.status==="pending"}isOk(){return this.status==="success"}read(){switch(this.status){case"pending":throw this.suspender;case"error":throw this.error;default:return this.response}}then(e,r){return this.suspender.then(e,r)}catch(e){return this.suspender.catch(e)}finally(e){return this.suspender.finally(e)}};var bt=class{constructor(e,r=""){c(this,"storage");c(this,"prefix","");this.storage=e??globalThis.localStorage??new kn,this.prefix=r}makeKey(e){return this.prefix+e}clear(){if(this.storage===globalThis.localStorage&&this.prefix)for(let e=this.storage.length-1;e>=0;e--){let r=this.storage.key(e);r?.startsWith(this.prefix)&&this.storage.removeItem(r)}else this.storage.clear()}getString(e){return this.storage.getItem(this.makeKey(e))??void 0}setString(e,r){r?this.storage.setItem(this.makeKey(e),r):this.storage.removeItem(this.makeKey(e))}getObject(e){let r=this.getString(e);return r?JSON.parse(r):void 0}setObject(e,r){this.setString(e,r?Gt(r):void 0)}},kn=class{constructor(){c(this,"data");this.data=new Map}get length(){return this.data.size}clear(){this.data.clear()}getItem(e){return this.data.get(e)??null}setItem(e,r){r?this.data.set(e,r):this.data.delete(e)}removeItem(e){this.data.delete(e)}key(e){return Array.from(this.data.keys())[e]}},Uo=class extends bt{constructor(){super();c(this,"initialized");c(this,"initPromise");c(this,"initResolve",()=>{});this.initialized=!1,this.initPromise=new Promise(r=>{this.initResolve=r})}setInitialized(){this.initialized||(this.initResolve(),this.initialized=!0)}getInitPromise(){return this.initPromise}get isInitialized(){return this.initialized}};var Yc=[WebSocket.CLOSING,WebSocket.CLOSED],Rt=class extends ue{constructor(...r){super();c(this,"criteria");this.criteria=new Set(r)}getCriteria(){return this.criteria}_addCriteria(r){this.criteria.add(r)}_removeCriteria(r){this.criteria.delete(r)}},Mn=class{constructor(e,r){c(this,"criteria");c(this,"emitter");c(this,"refCount");c(this,"subscriptionProps");c(this,"subscriptionId");c(this,"token");c(this,"tokenExpiry");c(this,"state","idle");c(this,"generation",0);c(this,"lastUnrefTime");this.criteria=e,this.emitter=new Rt(e),this.refCount=1,this.subscriptionProps=r?{...r}:void 0}nextGeneration(){return++this.generation}},xr=class{constructor(e,r,n){c(this,"medplum");c(this,"ws");c(this,"masterSubEmitter");c(this,"criteriaEntries");c(this,"criteriaEntriesBySubscriptionId");c(this,"wsClosed");c(this,"pingTimer");c(this,"tokenRefreshTimer");c(this,"pingIntervalMs");c(this,"waitingForPong",!1);c(this,"currentProfile");if(!(e instanceof vr))throw new m(S("First arg of constructor should be a `MedplumClient`"));let i;try{i=new URL(r).toString()}catch{throw new m(S("Not a valid URL"))}let o=n?.ReconnectingWebSocket?new n.ReconnectingWebSocket(i,void 0,{debug:n?.debug,debugLogger:n?.debugLogger}):new ot(i,void 0,{debug:n?.debug,debugLogger:n?.debugLogger});this.medplum=e,this.ws=o,this.masterSubEmitter=new Rt,this.criteriaEntries=new Map,this.criteriaEntriesBySubscriptionId=new Map,this.wsClosed=!1,this.pingIntervalMs=n?.pingIntervalMs??5e3,this.currentProfile=e.getProfile(),this.setupListeners()}setupListeners(){let e=this.ws;e.addEventListener("message",r=>{try{let n=JSON.parse(r.data);if(n.type==="pong"){this.waitingForPong=!1;return}let i=n,o=i?.entry?.[0]?.resource;if(!o){console.warn("Received WebSocket message without a SubscriptionStatus resource; ignoring",i);return}if(o.type==="heartbeat"){this.masterSubEmitter?.dispatchEvent({type:"heartbeat",payload:i});return}if(o.type==="handshake"){let a=Z(o.subscription),u={type:"connect",payload:{subscriptionId:a}};this.masterSubEmitter?.dispatchEvent(u);let d=this.criteriaEntriesBySubscriptionId.get(a);if(!d){console.warn("Received handshake for criteria the SubscriptionManager is not listening for yet");return}(d.state==="connecting"||d.state==="refreshing")&&(d.state="active"),d.emitter.dispatchEvent({...u});return}this.masterSubEmitter?.dispatchEvent({type:"message",payload:i});let s=this.criteriaEntriesBySubscriptionId.get(Z(o.subscription));if(!s){console.warn("Received notification for criteria the SubscriptionManager is not listening for");return}s.emitter.dispatchEvent({type:"message",payload:i})}catch(n){console.error(n);let i={type:"error",payload:n};this.masterSubEmitter?.dispatchEvent(i);for(let o of this.getAllCriteriaEmitters())o.dispatchEvent({...i})}}),e.addEventListener("error",r=>{let n={type:"error",payload:new m({resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"WebSocket connection closed due to an error"},diagnostics:r.error?_e(r.error):r.message}]})};this.masterSubEmitter?.dispatchEvent(n);for(let i of this.getAllCriteriaEmitters())i.dispatchEvent({...n})}),e.addEventListener("close",()=>{let r={type:"close"};this.masterSubEmitter?.dispatchEvent(r);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent({...r});this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=void 0,this.waitingForPong=!1),this.tokenRefreshTimer&&(clearInterval(this.tokenRefreshTimer),this.tokenRefreshTimer=void 0),this.wsClosed&&(this.criteriaEntries.clear(),this.criteriaEntriesBySubscriptionId.clear(),this.masterSubEmitter?.removeAllListeners())}),e.addEventListener("open",()=>{let r={type:"open"};this.masterSubEmitter?.dispatchEvent(r);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent({...r});this.refreshAllSubscriptions().catch(console.error),this.pingTimer??=setInterval(()=>{this.waitingForPong?(this.waitingForPong=!1,e.reconnect()):(e.send(JSON.stringify({type:"ping"})),this.waitingForPong=!0),this.gcUnrefEntries()},this.pingIntervalMs),this.tokenRefreshTimer??=setInterval(()=>{this.checkTokenExpirations(),this.gcUnrefEntries()},6e4)}),this.medplum.addEventListener("change",()=>{let r=this.medplum.getProfile();this.currentProfile&&r===void 0?this.ws.close():r&&this.currentProfile?.id!==r.id&&this.ws.reconnect(),this.currentProfile=r})}sendBind(e){this.ws.send(JSON.stringify({type:"bind-with-token",payload:{token:e}}))}sendUnbind(e){this.ws.readyState===WebSocket.OPEN&&this.ws.send(JSON.stringify({type:"unbind-from-token",payload:{token:e}}))}emitError(e,r){let n={type:"error",payload:r};this.masterSubEmitter?.dispatchEvent(n),e.emitter.dispatchEvent({...n})}maybeEmitDisconnect(e){let{subscriptionId:r}=e;if(r){let n={type:"disconnect",payload:{subscriptionId:r}};this.masterSubEmitter?.dispatchEvent(n),e.emitter.dispatchEvent({...n})}else console.warn("Called disconnect for `CriteriaEntry` before `subscriptionId` was present.")}isStale(e,r){return this.isEntryGettingRemoved(e)||e.generation!==r}maybeGetCriteriaEntry(e,r){let n=this.criteriaEntries.get(e);if(n){if(!r)return n.bareCriteria;for(let i of n.criteriaWithProps)if(Te(r,i.subscriptionProps))return i}}getAllCriteriaEmitters(){let e=[];for(let r of this.criteriaEntries.values())for(let n of Et(r))n.refCount>0&&e.push(n.emitter);return e}addCriteriaEntry(e){let{criteria:r,subscriptionProps:n}=e,i;this.criteriaEntries.has(r)?i=this.criteriaEntries.get(r):(i={criteriaWithProps:[]},this.criteriaEntries.set(r,i)),n?i.criteriaWithProps.push(e):i.bareCriteria=e}removeCriteriaEntry(e){e.state="removed",e.generation++;let{criteria:r,subscriptionProps:n,subscriptionId:i,token:o}=e;if(!this.criteriaEntries.has(r))return;let s=this.criteriaEntries.get(r);n?s.criteriaWithProps=s.criteriaWithProps.filter(a=>{let u=a.subscriptionProps;return!Te(n,u)}):s.bareCriteria=void 0,!s.bareCriteria&&s.criteriaWithProps.length===0&&(this.criteriaEntries.delete(r),this.masterSubEmitter?._removeCriteria(r)),i&&this.criteriaEntriesBySubscriptionId.delete(i),o&&this.sendUnbind(o)}async subscribeToCriteria(e){this.wsClosed&&await this.reconnectIfNeeded(),this.ws.readyState===WebSocket.OPEN&&this.medplum.getProfile()&&e.state==="idle"&&(e.state="connecting",await this.rebindCriteriaEntry(e))}async refreshAllSubscriptions(){this.criteriaEntriesBySubscriptionId.clear();let e=[],r=[];for(let n of this.criteriaEntries.values())for(let i of Et(n))i.refCount===0?r.push(i):e.push(i);for(let n of r)this.removeCriteriaEntry(n);for(let n of e)n.token&&this.sendUnbind(n.token),n.token=void 0,n.tokenExpiry=void 0,n.subscriptionId=void 0,n.state="idle",n.generation++,await this.subscribeToCriteria(n)}async rebindCriteriaEntry(e){let r=e.nextGeneration();try{if(!e.subscriptionId){let a=await this.medplum.createResource({...e.subscriptionProps,resourceType:"Subscription",status:"active",reason:`WebSocket subscription for ${I(this.medplum.getProfile())}`,channel:{type:"websocket"},criteria:e.criteria});if(e.subscriptionId??=a.id,this.isStale(e,r))return}let{parameter:n}=await this.medplum.get(`fhir/R4/Subscription/${e.subscriptionId}/$get-ws-binding-token`,{cache:"no-cache"}),i=n?.find(a=>a.name==="token")?.valueString,o=n?.find(a=>a.name==="websocket-url")?.valueUrl,s=n?.find(a=>a.name==="expiration")?.valueDateTime;if(!i)throw new m(S("Failed to get token"));if(!o)throw new m(S("Failed to get URL from $get-ws-binding-token"));if(!s)throw new m(S("Failed to get expiration from $get-ws-binding-token"));if(this.isStale(e,r))return;e.token=i,e.tokenExpiry=new Date(s).getTime(),this.criteriaEntriesBySubscriptionId.set(e.subscriptionId,e),this.sendBind(i)}catch(n){console.error(_e(n)),e.generation===r&&!this.isEntryGettingRemoved(e)&&(e.state=e.state==="refreshing"?"active":"idle"),this.emitError(e,n)}}checkTokenExpirations(){if(!this.medplum.getProfile())return;let e=Date.now();for(let r of this.criteriaEntries.values())for(let n of Et(r))n.refCount===0||!n.tokenExpiry||n.tokenExpiry-e<=3e5&&n.state==="active"&&this.ws.readyState===WebSocket.OPEN&&(n.state="refreshing",this.rebindCriteriaEntry(n).catch(i=>{this.masterSubEmitter?.dispatchEvent({type:"error",payload:i})}))}addCriteria(e,r){this.masterSubEmitter&&this.masterSubEmitter._addCriteria(e);let n=this.maybeGetCriteriaEntry(e,r);if(n)return n.refCount===0&&(n.lastUnrefTime=void 0,n.generation++,n.state!=="active"&&(n.state=n.token?"active":"idle")),n.refCount+=1,n.state==="idle"&&this.subscribeToCriteria(n).catch(console.error),n.emitter;let i=new Mn(e,r);return this.addCriteriaEntry(i),this.subscribeToCriteria(i).catch(console.error),i.emitter}removeCriteria(e,r){let n=this.maybeGetCriteriaEntry(e,r);if(!n||this.isEntryGettingRemoved(n)){console.warn("Criteria not known to `SubscriptionManager`. Possibly called remove too many times.");return}n.refCount-=1,n.refCount===0&&(n.lastUnrefTime=Date.now(),n.generation++)}gcUnrefEntries(){let e=Date.now(),r=[];for(let n of this.criteriaEntries.values())for(let i of Et(n))i.refCount===0&&i.lastUnrefTime!==void 0&&e-i.lastUnrefTime>=1e4&&r.push(i);for(let n of r)this.maybeEmitDisconnect(n),this.removeCriteriaEntry(n);r.length>0&&this.criteriaEntries.size===0&&this.closeWebSocket()}isEntryGettingRemoved(e){return e.refCount===0||e.state==="removed"}getWebSocket(){return this.ws}closeWebSocket(){if(!this.wsClosed){if(this.ws.readyState===WebSocket.OPEN)for(let e of this.criteriaEntries.values())for(let r of Et(e))r.token&&this.sendUnbind(r.token);this.wsClosed=!0,this.ws.close()}}reconnectWebSocket(){this.ws.reconnect(),this.wsClosed=!1}getCriteriaCount(){return this.getAllCriteriaEmitters().length}getMasterEmitter(){return this.masterSubEmitter||(this.masterSubEmitter=new Rt(...Array.from(this.criteriaEntries.keys()))),this.masterSubEmitter}async reconnectIfNeeded(){Yc.includes(this.getWebSocket().readyState)&&await new Promise(e=>{let r=()=>{this.getWebSocket().removeEventListener("open",r),e()};this.getWebSocket().addEventListener("open",r),this.reconnectWebSocket()})}};function Et(t){return t.bareCriteria?[t.bareCriteria,...t.criteriaWithProps]:t.criteriaWithProps}var Xc=new te(1e3);async function og({resource:t,subscription:e,context:r,getPreviousResource:n,logger:i}){if(!Zc(e,i))return i?.debug("Ignore subscription without recognized channel type"),!1;let o=e.criteria;if(!o)return i?.debug("Ignore rest hook missing criteria"),!1;let s=St(o);if(t.resourceType!==s.resourceType)return i?.debug(`Ignore rest hook for different resourceType (wanted "${s.resourceType}", received "${t.resourceType}")`),!1;if(!await eu(e,t,n))return i?.debug("Ignore rest hook for criteria returning false"),!1;let u=!1,d=!1;for(let h of e.extension??v)if(h.url==="https://medplum.com/fhir/StructureDefinition/subscription-supported-interaction"&&(u=!0,h.valueCode===r.interaction)){d=!0;break}if(u&&!d)return i?.debug("Ignored rest hook for unsupported interaction",{subscription:e.id,interaction:r.interaction}),!1;if(!ur(t,s))return!1;let l=fn(e.meta)??[],f=fn(t.meta)??[];return l.length&&!l.some(h=>f.some(b=>b.reference===h.reference))?(i?.debug("Subscription suppressed due to mismatched accounts",{subscriptionId:e.id,resource:I(t)}),!1):!0}function Zc(t,e){let r=t.channel?.type;return r==="rest-hook"?t.channel?.endpoint?!0:(e?.debug("Ignore rest-hook missing URL"),!1):r==="websocket"}async function eu(t,e,r){let n=le(t,"https://medplum.com/fhir/StructureDefinition/fhir-path-criteria-expression");if(!n?.valueString)return!0;let i=await r(e),o={"%current":E(e),"%previous":E(i??{})};return k(n.valueString,[E(e)],o,Xc)?.[0]?.value===!0}var Dn="5.1.40-dc6ba4c",Rg="medplum-cli",tu=V.FHIR_JSON+", */*; q=0.1",ru="https://api.medplum.com/",nu=1e3,iu=6e4,ou=0,su=3e5,au="Binary/",Bo={resourceType:"Device",id:"system",deviceName:[{type:"model-name",name:"System"}]},cu=2,st={ClientCredentials:"client_credentials",AuthorizationCode:"authorization_code",RefreshToken:"refresh_token",JwtBearer:"urn:ietf:params:oauth:grant-type:jwt-bearer",TokenExchange:"urn:ietf:params:oauth:grant-type:token-exchange",PreAuthorizedCode:"urn:ietf:params:oauth:grant-type:pre-authorized_code"},uu={AccessToken:"urn:ietf:params:oauth:token-type:access_token",RefreshToken:"urn:ietf:params:oauth:token-type:refresh_token",IdToken:"urn:ietf:params:oauth:token-type:id_token",Saml1Token:"urn:ietf:params:oauth:token-type:saml1",Saml2Token:"urn:ietf:params:oauth:token-type:saml2"},Cg={ClientSecretBasic:"client_secret_basic",ClientSecretPost:"client_secret_post",ClientSecretJwt:"client_secret_jwt",PrivateKeyJwt:"private_key_jwt",None:"none"},du={JwtBearer:"urn:ietf:params:oauth:client-assertion-type:jwt-bearer"},Pg={ES256:"ES256",ES384:"ES384",ES512:"ES512",HS256:"HS256",RS256:"RS256",RS384:"RS384",RS512:"RS512"},vr=class extends ue{constructor(r){super();c(this,"options");c(this,"fetch");c(this,"createPdfImpl");c(this,"storage");c(this,"requestCache");c(this,"cacheTime");c(this,"baseUrl");c(this,"fhirBaseUrl");c(this,"authorizeUrl");c(this,"tokenUrl");c(this,"logoutUrl");c(this,"fhircastHubUrl");c(this,"cdsServicesUrl");c(this,"defaultHeaders");c(this,"onUnauthenticated");c(this,"autoBatchTime");c(this,"autoBatchQueue");c(this,"maxRetries");c(this,"maxRetryTime");c(this,"refreshGracePeriod");c(this,"subscriptionManager");c(this,"medplumServer");c(this,"clientId");c(this,"clientSecret");c(this,"credentialsInHeader");c(this,"autoBatchTimerId");c(this,"accessToken");c(this,"accessTokenExpires");c(this,"refreshToken");c(this,"refreshPromise");c(this,"profilePromise");c(this,"sessionDetails");c(this,"currentRateLimits");c(this,"basicAuth");c(this,"initPromise");c(this,"initComplete",!0);c(this,"keyValueClient");c(this,"logLevel");if(r?.baseUrl&&!r.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");this.options=r??{},this.fetch=r?.fetch??lu(),this.storage=r?.storage??new bt(void 0,r?.storagePrefix),this.createPdfImpl=r?.createPdf,this.baseUrl=mt(r?.baseUrl??ru),this.fhirBaseUrl=$(this.baseUrl,r?.fhirUrlPath??"fhir/R4"),this.authorizeUrl=$(this.baseUrl,r?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=$(this.baseUrl,r?.tokenUrl??"oauth2/token"),this.logoutUrl=$(this.baseUrl,r?.logoutUrl??"oauth2/logout"),this.fhircastHubUrl=$(this.baseUrl,r?.fhircastHubUrl??"fhircast/STU3"),this.cdsServicesUrl=$(this.baseUrl,r?.cdsServicesUrl??"cds-services"),this.clientId=r?.clientId??"",this.clientSecret=r?.clientSecret??"",this.credentialsInHeader=r?.authCredentialsMethod==="header",this.defaultHeaders=r?.defaultHeaders??{},this.onUnauthenticated=r?.onUnauthenticated,this.refreshGracePeriod=r?.refreshGracePeriod??su,this.logLevel=this.initializeLogLevel(r),this.maxRetries=r?.maxRetries??2,this.maxRetryTime=r?.maxRetryTime??2e3,this.cacheTime=r?.cacheTime??(ee()?iu:ou),this.cacheTime>0?this.requestCache=new te(r?.resourceCacheSize??nu):this.requestCache=void 0,r?.autoBatchTime?(this.autoBatchTime=r.autoBatchTime,this.autoBatchQueue=[]):(this.autoBatchTime=0,this.autoBatchQueue=void 0),r?.accessToken&&this.setAccessToken(r.accessToken),this.storage.getInitPromise===void 0?(r?.accessToken||this.attemptResumeActiveLogin().catch(console.error),this.initPromise=Promise.resolve(),this.dispatchEvent({type:"storageInitialized"})):(this.initComplete=!1,this.initPromise=this.storage.getInitPromise(),this.initPromise.then(()=>{r?.accessToken||this.attemptResumeActiveLogin().catch(console.error),this.initComplete=!0,this.dispatchEvent({type:"storageInitialized"})}).catch(n=>{console.error(n),this.initComplete=!0,this.dispatchEvent({type:"storageInitFailed",payload:{error:n}})})),this.setupStorageListener()}get isInitialized(){return this.initComplete}getInitPromise(){return this.initPromise}initializeLogLevel(r){return r?.logLevel?r.logLevel:r?.verbose!==void 0&&r.verbose?"verbose":"none"}async attemptResumeActiveLogin(){let r=this.getActiveLogin();r&&(this.setAccessToken(r.accessToken,r.refreshToken),await this.refreshProfile())}getBaseUrl(){return this.baseUrl}getAuthorizeUrl(){return this.authorizeUrl}getTokenUrl(){return this.tokenUrl}getLogoutUrl(){return this.logoutUrl}getFhircastHubUrl(){return this.fhircastHubUrl}getCdsServicesUrl(){return this.cdsServicesUrl}getDefaultHeaders(){return this.defaultHeaders}clear(){this.storage.clear(),this.clearActiveLogin()}clearActiveLogin(){this.storage.setString("activeLogin",void 0),this.requestCache?.clear(),this.accessToken=void 0,this.refreshToken=void 0,this.refreshPromise=void 0,this.accessTokenExpires=void 0,this.sessionDetails=void 0,this.medplumServer=void 0,this.dispatchEvent({type:"change"})}invalidateUrl(r){r=r.toString(),this.requestCache?.delete(r)}invalidateAll(){this.requestCache?.clear()}invalidateSearches(r){let n=$(this.fhirBaseUrl,r);for(let i of this.requestCache?.keys()??v)(i.endsWith(n)||i.includes(n+"?"))&&this.requestCache?.delete(i)}notifyResourceModified(r){r.operation!=="delete"&&r.resource?this.cacheResource(r.resource,void 0):r.id&&this.deleteCacheEntry(this.fhirUrl(r.resourceType,r.id).toString()),this.invalidateSearches(r.resourceType),this.dispatchResourceModified(r)}get(r,n={}){r=r.toString();let i=this.getCacheEntry(r,n);if(i)return i.value;let o;r.startsWith(this.fhirBaseUrl)&&this.autoBatchQueue&&!n.disableAutoBatch?o=new Promise((a,u)=>{this.autoBatchQueue.push({method:"GET",url:r.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:u}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):(n.method="GET",o=this.request(r,n));let s=new j(o);return this.setCacheEntry(r,s,n),s}post(r,n,i,o={}){return r=r.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(r),o.method="POST",this.request(r,o)}put(r,n,i,o={}){return r=r.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(r),o.method="PUT",this.request(r,o)}patch(r,n,i={}){return r=r.toString(),this.setRequestBody(i,n),this.setRequestContentType(i,V.JSON_PATCH),this.invalidateUrl(r),i.method="PATCH",this.request(r,i)}delete(r,n={}){return r=r.toString(),this.invalidateUrl(r),n.method="DELETE",this.request(r,n)}async startNewUser(r,n){let{codeChallengeMethod:i,codeChallenge:o}=await this.startPkce();return this.post("auth/newuser",{...r,clientId:r.clientId??this.clientId,codeChallengeMethod:i,codeChallenge:o},void 0,n)}async startNewProject(r,n){return this.post("auth/newproject",r,void 0,n)}async startNewPatient(r,n){return this.post("auth/newpatient",r,void 0,n)}async startLogin(r,n){return this.post("auth/login",{...await this.ensureCodeChallenge(r),clientId:r.clientId??this.clientId,scope:r.scope},void 0,n)}async startGoogleLogin(r,n){return this.post("auth/google",{...await this.ensureCodeChallenge(r),clientId:r.clientId??this.clientId,scope:r.scope},void 0,n)}async ensureCodeChallenge(r){return r.codeChallenge?r:{...r,...await this.startPkce()}}async signOut(){await this.post(this.logoutUrl,{}),this.clear()}async signInWithRedirect(r){let i=new URLSearchParams(ge.getSearch()).get("code");if(!i){await this.requestAuthorization(r);return}return this.processCode(i)}signOutWithRedirect(){ge.assign(this.logoutUrl)}async signInWithExternalAuth(r,n,i,o,s=!0){let a=o;s&&(a=await this.ensureCodeChallenge(o)),ge.assign(this.getExternalAuthRedirectUri(r,n,i,a,s))}async exchangeExternalAccessToken(r,n,i){if(n=n??this.clientId,!n)throw new Error("MedplumClient is missing clientId");let o={grant_type:st.TokenExchange,subject_token_type:uu.AccessToken,client_id:n,subject_token:r};return i&&(o.membership_id=i),this.fetchTokens(o)}getExternalAuthRedirectUri(r,n,i,o,s=!0){let a=new URL(r);if(a.searchParams.set("response_type","code"),a.searchParams.set("client_id",n),a.searchParams.set("redirect_uri",i),a.searchParams.set("scope",o.scope??"openid profile email"),a.searchParams.set("state",JSON.stringify(o)),s){let{codeChallenge:u,codeChallengeMethod:d}=o;if(!d)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!u)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");a.searchParams.set("code_challenge_method",d),a.searchParams.set("code_challenge",u)}return a.toString()}fhirUrl(...r){return new URL($(this.fhirBaseUrl,r.join("/")))}fhirSearchUrl(r,n){let i=this.fhirUrl(r);return n&&(i.search=io(n)),i}search(r,n,i){let o=this.fhirSearchUrl(r,n),s="search-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=this.getBundle(o,i);return this.setCacheEntry(s,u,i),u}searchOne(r,n,i){let o=this.fhirSearchUrl(r,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s="searchOne-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new j(this.search(r,o.searchParams,i).then(d=>d.entry?.[0]?.resource));return this.setCacheEntry(s,u,i),u}searchResources(r,n,i){let s="searchResources-"+this.fhirSearchUrl(r,n).toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new j(this.search(r,n,i).then(Wo));return this.setCacheEntry(s,u,i),u}async*searchResourcePages(r,n,i){let o=this.fhirSearchUrl(r,n);for(;o;){let s=new URL(o).searchParams;s.has("_count")||s.set("_count","1000");let a=await this.search(r,s,i),u=a.link?.find(d=>d.relation==="next");if(!a.entry?.length&&!u)break;yield Wo(a),o=u?.url?new URL(u.url):void 0}}valueSetExpand(r,n){let i=this.fhirUrl("ValueSet","$expand");return i.search=new URLSearchParams(r).toString(),this.get(i.toString(),n)}getCached(r,n){let i=this.requestCache?.get(this.fhirUrl(r,n).toString())?.value;return i?.isOk()?i.read():void 0}getCachedReference(r){let n=r.reference;if(!n)return;if(n==="system")return Bo;let[i,o]=n.split("/");if(!(!i||!o))return this.getCached(i,o)}readResource(r,n,i){if(!n)throw new Error('The "id" parameter cannot be null, undefined, or an empty string.');return this.get(this.fhirUrl(r,n),i)}readReference(r,n){let i=r.reference;if(!i)return new j(Promise.reject(new Error("Missing reference")));if(i==="system")return new j(Promise.resolve(Bo));let[o,s]=i.split("/");return!o||!s?new j(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}readCanonical(r,n,i){return Array.isArray(r)?this.searchOne("",{_type:r.join(","),url:n},i):this.searchOne(r,"url="+n,i)}requestSchema(r,n){if(Vi(r))return Promise.resolve();let i=r+"-requestSchema",o=this.getCacheEntry(i,void 0);if(o)return o.value;let s=new j((async()=>{let a=`{
|
|
5
5
|
StructureDefinitionList(_filter: "name eq ${r}") {
|
|
6
6
|
resourceType,
|
|
7
7
|
name,
|
|
@@ -41,17 +41,17 @@ var ws=Object.defineProperty;var As=(t,e,r)=>e in t?ws(t,e,{enumerable:!0,config
|
|
|
41
41
|
expression,
|
|
42
42
|
target
|
|
43
43
|
}
|
|
44
|
-
}`.replaceAll(/\s+/g," "),u=await this.graphql(a);Yr(u.data.StructureDefinitionList);for(let d of u.data.SearchParameterList)vn(d)})());return this.setCacheEntry(i,s,n),s}requestProfileSchema(r,n){if(!n?.expandProfile&&ki(r))return Promise.resolve();let i=r+"-requestSchema"+(n?.expandProfile?"-nested":""),o=this.getCacheEntry(i,void 0);if(o)return o.value;let s=new $((async()=>{if(n?.expandProfile){let a=this.fhirUrl("StructureDefinition","$expand-profile");a.search=new URLSearchParams({url:r}).toString();let u=await this.post(a.toString(),{});Yr(u)}else{let a=await this.searchOne("StructureDefinition",{url:r,_sort:"-_lastUpdated"});if(!a){console.warn(`No StructureDefinition found for ${r}!`);return}Xr(a)}})());return this.setCacheEntry(i,s,n),s}readHistory(r,n,i,o){let s=this.fhirUrl(r,n,"_history");return i?.count&&s.searchParams.set("_count",i.count.toString()),i?.offset&&s.searchParams.set("_offset",i.offset.toString()),this.get(s.toString(),o)}readVersion(r,n,i,o){return this.get(this.fhirUrl(r,n,"_history",i),o)}readPatientEverything(r,n){return this.getBundle(this.fhirUrl("Patient",r,"$everything"),n)}readPatientSummary(r,n){return this.getBundle(this.fhirUrl("Patient",r,"$summary"),n)}async createResource(r,n){if(!r.resourceType)throw new Error("Missing resourceType");this.invalidateSearches(r.resourceType);let i=await this.post(this.fhirUrl(r.resourceType),r,void 0,n);return this.dispatchResourceModified({resourceType:r.resourceType,operation:"create",id:i?.id,resource:i}),i}async createResourceIfNoneExist(r,n,i={}){let o=this.fhirUrl(r.resourceType);this.setRequestHeader(i,"If-None-Exist",n);let s=await this.post(o,r,void 0,i);return this.cacheResource(s,i),this.invalidateUrl(this.fhirUrl(r.resourceType,r.id,"_history")),this.invalidateSearches(r.resourceType),this.dispatchResourceModified({resourceType:r.resourceType,operation:"create",id:s?.id,resource:s}),s}async upsertResource(r,n,i){let o=this.fhirSearchUrl(r.resourceType,n),s=await this.put(o,r,void 0,i),a=s!==void 0;return s||(s=r),this.cacheResource(s,i),this.invalidateUrl(this.fhirUrl(r.resourceType,r.id,"_history")),this.invalidateSearches(r.resourceType),a&&this.dispatchResourceModified({resourceType:r.resourceType,operation:"update",id:s.id,resource:s}),s}async createAttachment(r,n,i,o,s){let a=Fo(r,n,i,o);if(a.contentType===V.XML){let l=a.data,f;l instanceof Blob?f=await new Promise((h,b)=>{let P=new FileReader;P.onload=()=>{if(!P.result){b(new Error("Failed to load file"));return}h(P.result)},P.readAsText(l,"utf-8")}):ArrayBuffer.isView(l)?f=new TextDecoder().decode(l):f=l,f.includes("<ClinicalDocument")&&f.includes("urn:hl7-org:v3")&&(a={...a,contentType:V.CDA_XML})}let u=s??(typeof n=="object"?n:{}),d=await this.createBinary(a,u);return{contentType:a.contentType,url:d.url,title:a.filename}}createBinary(r,n,i,o,s){let a=Fo(r,n,i,o),u=s??(typeof n=="object"?n:{}),{data:d,contentType:l,filename:f,securityContext:h,onProgress:b}=a,P=this.fhirUrl("Binary");return f&&P.searchParams.set("_filename",f),h?.reference&&this.setRequestHeader(u,"X-Security-Context",h.reference),b?this.uploadwithProgress(P,d,l,b,u):this.post(P,d,l,u)}uploadwithProgress(r,n,i,o,s){return new Promise((a,u)=>{let d=new XMLHttpRequest,l=()=>d.abort();s?.signal?.addEventListener("abort",l);let f=h=>{s?.signal?.removeEventListener("abort",l),h instanceof Error?u(h):a(h)};if(d.responseType="json",d.onabort=()=>f(new DOMException("Request aborted","AbortError")),d.onerror=()=>f(new Error("Request error")),o&&(d.upload.onprogress=h=>o(h),d.upload.onload=h=>o(h)),d.onload=()=>{d.status>=200&&d.status<300?f(d.response):f(new m(_t(d.response||d.statusText)))},d.open("POST",r),d.withCredentials=!0,d.setRequestHeader("Authorization","Bearer "+this.accessToken),d.setRequestHeader("Cache-Control","no-cache, no-store, max-age=0"),d.setRequestHeader("Content-Type",i),this.options.extendedMode!==!1&&d.setRequestHeader("X-Medplum","extended"),s?.headers){let h=s.headers;for(let[b,P]of Object.entries(h))d.setRequestHeader(b,P)}d.send(n)})}async createPdf(r,n,i,o){if(!this.createPdfImpl)throw new Error("PDF creation not enabled");let s=cu(r,n,i,o),a=typeof n=="object"?n:{},{docDefinition:u,tableLayouts:d,fonts:l,...f}=s,h=await this.createPdfImpl(u,d,l),b={...f,data:h,contentType:"application/pdf"};return this.createBinary(b,a)}createComment(r,n,i){let o=this.getProfile(),s,a;return r.resourceType==="Encounter"&&(s=ne(r),a=r.subject),r.resourceType==="ServiceRequest"&&(s=r.encounter,a=r.subject),r.resourceType==="Patient"&&(a=ne(r)),this.createResource({resourceType:"Communication",status:"completed",basedOn:[ne(r)],encounter:s,subject:a,sender:o?ne(o):void 0,sent:new Date().toISOString(),payload:[{contentString:n}]},i)}async updateResource(r,n){if(!r.resourceType)throw new Error("Missing resourceType");if(!r.id)throw new Error("Missing id");let i=await this.put(this.fhirUrl(r.resourceType,r.id),r,void 0,n),o=i!==void 0;return i||(i=r),this.cacheResource(i,n),this.invalidateUrl(this.fhirUrl(r.resourceType,r.id,"_history")),this.invalidateSearches(r.resourceType),o&&this.dispatchResourceModified({resourceType:r.resourceType,operation:"update",id:i.id,resource:i}),i}async patchResource(r,n,i,o){let s=await this.patch(this.fhirUrl(r,n),i,o);return this.cacheResource(s,o),this.invalidateUrl(this.fhirUrl(r,n,"_history")),this.invalidateSearches(r),this.dispatchResourceModified({resourceType:r,operation:"patch",id:n,resource:s}),s}async deleteResource(r,n,i){this.deleteCacheEntry(this.fhirUrl(r,n).toString()),this.invalidateSearches(r);let o=await this.delete(this.fhirUrl(r,n),i);return this.dispatchResourceModified({resourceType:r,operation:"delete",id:n}),o}validateResource(r,n){return this.post(this.fhirUrl(r.resourceType,"$validate"),r,void 0,n)}executeBot(r,n,i,o){let s;if(typeof r=="string"){let a=r;s=this.fhirUrl("Bot",a,"$execute")}else{let a=r;s=this.fhirUrl("Bot","$execute"),s.searchParams.set("identifier",a.system+"|"+a.value)}return this.post(s,n,i,o)}executeBatch(r,n){return this.post(this.fhirBaseUrl,r,void 0,n)}sendEmail(r,n){return this.post("email/v1/send",r,V.JSON,n)}graphql(r,n,i,o){return this.post(this.fhirUrl("$graphql"),{query:r,operationName:n,variables:i},V.JSON,o)}readResourceGraph(r,n,i,o){return this.get(`${this.fhirUrl(r,n)}/$graph?graph=${i}`,o)}pushToAgent(r,n,i,o,s,a){let{waitTimeout:u,returnAck:d,...l}=a??{};return this.post(this.fhirUrl("Agent",X(r),"$push"),{destination:typeof n=="string"?n:I(n),body:i,contentType:o,waitForResponse:s,...u!==void 0?{waitTimeout:u}:void 0,...d!==void 0?{returnAck:d}:void 0},V.FHIR_JSON,l)}getCdsServices(r){return this.get(this.cdsServicesUrl,r)}callCdsService(r,n,i){return this.post(W(this.cdsServicesUrl,r),n,V.JSON,i)}getActiveLogin(){return this.storage.getObject("activeLogin")}async setActiveLogin(r){(!this.sessionDetails?.profile||I(this.sessionDetails.profile)!==r.profile?.reference)&&this.clearActiveLogin(),this.setAccessToken(r.accessToken,r.refreshToken),this.storage.setObject("activeLogin",r),this.addLogin(r),this.refreshPromise=void 0,await this.refreshProfile()}getAccessToken(){return this.accessToken}isAuthenticated(r){return this.accessTokenExpires!==void 0&&Date.now()<this.accessTokenExpires-(r??this.refreshGracePeriod)}setAccessToken(r,n){this.accessToken=r,this.refreshToken=n,this.accessTokenExpires=Mo(r),this.medplumServer=ko(r)}getLogins(){return this.storage.getObject("logins")??[]}addLogin(r){let n=this.getLogins().filter(i=>i.profile?.reference!==r.profile?.reference);n.push(r),this.storage.setObject("logins",n)}async refreshProfile(){if(this.medplumServer)return this.profilePromise=new Promise((r,n)=>{this.get("auth/me",{cache:"no-cache"}).then(i=>{this.profilePromise=void 0;let o=this.sessionDetails?.profile?.id!==i.profile.id;this.sessionDetails=i,this.syncStoredLoginProject(),o&&this.dispatchEvent({type:"change"}),r(i.profile),this.dispatchEvent({type:"profileRefreshed"})}).catch(n)}),this.dispatchEvent({type:"profileRefreshing"}),this.profilePromise}syncStoredLoginProject(){let r=this.getActiveLogin(),n=this.sessionDetails?.project?.name;if(!r||!n||r.project.display===n)return;let i={...r,project:{...r.project,display:n}};this.storage.setObject("activeLogin",i),this.addLogin(i)}isLoading(){return!this.isInitialized||!!this.profilePromise&&!this.sessionDetails?.profile}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?this.profilePromise:this.sessionDetails?this.sessionDetails.profile:this.refreshProfile()}getUserConfiguration(){return this.sessionDetails?.config}getAccessPolicy(){return this.sessionDetails?.accessPolicy}async download(r,n={}){return(await this.downloadResponse(r,n)).blob()}async downloadResponse(r,n={}){this.refreshPromise&&await this.refreshPromise;let i=r.toString();i.startsWith(tu)&&(r=this.fhirUrl(i));let o=n.headers;return o||(o={},n.headers=o),o.Accept||(o.Accept="*/*"),this.addFetchOptionsDefaults(n,r.toString()),this.fetchWithRetry(r.toString(),n)}async createMedia(r,n){let{additionalFields:i,...o}=r,s=await this.createResource({resourceType:"Media",status:"preparation",content:{contentType:r.contentType},...i});o.securityContext||(o.securityContext=ne(s));let a=await this.createAttachment(o,n);return this.updateResource({...s,status:"completed",content:a})}async uploadMedia(r,n,i,o,s){return this.createMedia({data:r,contentType:n,filename:i,additionalFields:o},s)}async createDocumentReference(r,n){let{additionalFields:i,...o}=r,s=await this.createResource({resourceType:"DocumentReference",status:"current",content:[{attachment:{contentType:r.contentType}}],...i});o.securityContext||(o.securityContext=ne(s));let a=await this.createAttachment(o,n);return this.updateResource({...s,content:[{attachment:a}]})}async bulkExport(r="",n,i,o){let s=r&&`${r}/`,a=this.fhirUrl(`${s}$export`);return n&&a.searchParams.set("_type",n),i&&a.searchParams.set("_since",i),this.startAsyncRequest(a.toString(),o)}async startAsyncRequest(r,n={}){this.addFetchOptionsDefaults(n,r);let i=n.headers;return i.Prefer="respond-async",n.method="POST",this.request(r,n)}async wrappedFetch(r,n){return await this.refreshIfExpired(),this.addFetchOptionsDefaults(n,r),this.fetchWithRetry(r,n)}get keyValue(){return this.keyValueClient||(this.keyValueClient=new xr(this)),this.keyValueClient}getBundle(r,n){return new $((async()=>{let i=await this.get(r,n);for(let o of i.entry??v)this.cacheResource(o.resource,n);return i})())}isCacheEnabled(r){return!!this.requestCache&&!this.getRequestHeader(r,"x-medplum-on-behalf-of")}getCacheEntry(r,n){if(!this.isCacheEnabled(n)||n?.cache==="no-cache"||n?.cache==="reload")return;let i=this.requestCache.get(r);if(!(!i||i.requestTime+this.cacheTime<Date.now()))return i}setCacheEntry(r,n,i){this.isCacheEnabled(i)&&(this.requestCache.set(r,{requestTime:Date.now(),value:n}),i?.signal&&i.signal.addEventListener("abort",()=>{this.requestCache.delete(r)}))}cacheResource(r,n){r?.id&&!r.meta?.tag?.some(i=>i.code==="SUBSETTED")&&this.setCacheEntry(this.fhirUrl(r.resourceType,r.id).toString(),new $(Promise.resolve(r)),n)}deleteCacheEntry(r){this.requestCache&&this.requestCache.delete(r)}dispatchResourceModified(r){this.listenerCount("resourceModified")>0&&this.dispatchEvent({type:"resourceModified",payload:r})}async request(r,n={},i={}){let o=await this.wrappedFetch(r,n);if(o.status===401)return this.handleUnauthenticated(r,n,i);if(o.status===204||o.status===304)return;let a=o.headers.get("content-type")?.includes("json");if(o.status===404&&!a)throw new m(yi);let u=await this.parseBody(o,a);if(o.status===200&&n.followRedirectOnOk||o.status===201&&n.followRedirectOnCreated){let d=await No(o,u);if(d)return this.request(d,{...n,method:"GET",body:void 0})}if(o.status===202&&n.pollStatusOnAccepted){let l=await No(o,u)??i.statusUrl;if(l)return this.pollStatus(l,n,i)}if(o.status>=400)throw new m(_t(u));return u}async parseBody(r,n){let i;if(r.headers.get("content-length")!=="0"){if(n)try{i=await r.json()}catch(o){throw console.error("Error parsing response",r.status,o),o}else i=await r.text();return i}}async fetchWithRetry(r,n){r.startsWith("http")||(r=W(this.baseUrl,r));let i=n?.maxRetries??this.maxRetries;for(let o=0;o<=i;o++)try{this.logLevel!=="none"&&this.logRequest(r,n);let s=await this.fetch(r,n);if(this.logLevel!=="none"&&this.logResponse(s),this.setCurrentRateLimit(s),o>=i||!uu(s))return s;let a=this.getRetryDelay(o),u=n.maxRetryTime??this.maxRetryTime;if(a>u)return s;await xn(a,{signal:n.signal})}catch(s){if(s.message==="Failed to fetch"&&o===0&&this.dispatchEvent({type:"offline"}),s.name==="AbortError"||o===i)throw s}throw new Error("Unreachable")}logRequest(r,n){if(console.log(`> ${n.method} ${r}`),this.logLevel==="verbose"&&n.headers){let i=n.headers;for(let o of Qt(Object.keys(i)))console.log(`> ${o}: ${i[o]}`)}}logResponse(r){console.log(`< ${r.status} ${r.statusText}`),this.logLevel==="verbose"&&r.headers&&r.headers.forEach((n,i)=>console.log(`< ${i}: ${n}`))}setCurrentRateLimit(r){if(!r?.headers||typeof r.headers.get!="function")return;let n=r.headers.get("ratelimit");n&&(this.currentRateLimits=n)}rateLimitStatus(){if(!this.currentRateLimits)return[];let r=this.currentRateLimits;return r.split(",").map(n=>{let i=n.split(";").map(l=>l.trim());if(i.length!==3)throw new Error("Could not parse RateLimit header: "+r);let o=i[0].substring(1,i[0].length-1),s=i.find(l=>l.startsWith("r="))?.substring(2),a=s?Number.parseInt(s,10):Number.NaN,u=i.find(l=>l.startsWith("t="))?.substring(2),d=u?Number.parseInt(u,10):Number.NaN;if(!o||Number.isNaN(a)||Number.isNaN(d))throw new Error("Could not parse RateLimit header: "+r);return{name:o,remainingUnits:a,secondsUntilReset:d,resetsAfter:Math.ceil((Date.now()+1e3*d)/1e3)}})}getRetryDelay(r){let n=this.rateLimitStatus(),i=500*Math.pow(1.5,r);for(let o of n)o.remainingUnits||(i=Math.max(i,o.secondsUntilReset*1e3));return i}async pollStatus(r,n,i){let o={...n,method:"GET",body:void 0,redirect:"follow"};if(i.pollCount===void 0)n.headers&&typeof n.headers=="object"&&"Prefer"in n.headers&&(o.headers={...n.headers},delete o.headers.Prefer),i.statusUrl=r,i.pollCount=1;else{let s=n.pollStatusPeriod??1e3;await xn(s,{signal:n.signal}),i.pollCount++}return this.request(r,o,i)}async executeAutoBatch(){if(this.autoBatchQueue===void 0)return;let r=[...this.autoBatchQueue];if(this.autoBatchQueue.length=0,this.autoBatchTimerId=void 0,r.length===1){let o=r[0];try{o.options.method=o.method,o.resolve(await this.request(W(this.fhirBaseUrl,o.url),o.options))}catch(s){o.reject(new m(_t(s)))}return}let n={resourceType:"Bundle",type:"batch",entry:r.map(o=>({request:{method:o.method,url:o.url},resource:o.options.body?JSON.parse(o.options.body):void 0}))},i=await this.post(this.fhirBaseUrl,n);for(let o=0;o<r.length;o++){let s=r[o],a=i.entry?.[o];a?.response?.outcome&&!Hr(a.response.outcome)?s.reject(new m(a.response.outcome)):s.resolve(a?.resource)}}isInternalUrl(r){if(!r.startsWith("http://")&&!r.startsWith("https://"))return!0;try{let n=new URL(r);return r.startsWith(this.baseUrl)||r.startsWith(this.fhirBaseUrl)||n.origin===new URL(this.baseUrl).origin&&ft(n.pathname).startsWith(ft(new URL(this.baseUrl).pathname))}catch{return!1}}addFetchOptionsDefaults(r,n){Object.entries(this.defaultHeaders).forEach(([i,o])=>{this.setRequestHeader(r,i,o)}),this.setRequestHeader(r,"Accept",Jc,!0),this.options.extendedMode!==!1&&this.setRequestHeader(r,"X-Medplum","extended"),r.body&&this.setRequestHeader(r,"Content-Type",V.FHIR_JSON,!0),this.isInternalUrl(n)&&(this.accessToken?this.setRequestHeader(r,"Authorization","Bearer "+this.accessToken):this.basicAuth&&this.setRequestHeader(r,"Authorization","Basic "+this.basicAuth),r.credentials||(r.credentials="include"))}setRequestContentType(r,n){this.setRequestHeader(r,"Content-Type",n)}getRequestHeader(r,n){let i=r?.headers;if(i)if(Array.isArray(i)){let o=i.find(([s])=>s.toLowerCase()===n.toLowerCase());return o?o[1]:void 0}else{if(i instanceof Headers)return i.get(n)??void 0;if(C(i))return i[n]??void 0}else return}setRequestHeader(r,n,i,o=!1){let s=r.headers;s?Array.isArray(s)?(!o||!s.some(([a])=>a.toLowerCase()===n.toLowerCase()))&&s.push([n,i]):s instanceof Headers?(!o||!s.has(n))&&s.set(n,i):C(s)&&(!o||!s[n])&&(s[n]=i):r.headers={[n]:i}}setRequestBody(r,n){typeof n=="string"||typeof Blob<"u"&&(n instanceof Blob||n?.constructor.name==="Blob")||typeof File<"u"&&(n instanceof File||n?.constructor.name==="File")||typeof Uint8Array<"u"&&(n instanceof Uint8Array||n?.constructor.name==="Uint8Array")?r.body=n:typeof n=="object"&&n!==null&&(typeof n.getReader=="function"||typeof n.pipe=="function"&&typeof n.on=="function")?(r.body=n,r.duplex="half"):n&&(r.body=JSON.stringify(n))}async handleUnauthenticated(r,n,i){let o=i.authAttempt??0,s=o+1<ru?this.refresh(void 0,!0):void 0;if(s)return await s,this.request(r,n,{...i,authAttempt:o+1});throw this.clear(),this.onUnauthenticated?.(),new m(Je)}async startPkce(){let r=Rn();this.storage.setString("pkceState",r);let n=Rn().slice(0,128);this.storage.setString("codeVerifier",n);try{let i=await Eo(n);return{codeChallengeMethod:"S256",codeChallenge:zi(i).replaceAll("+","-").replaceAll("/","_").replaceAll("=","")}}catch(i){return console.warn("Failed to hash code verifier. Falling back to 'plain' code challenge method",i),{codeChallengeMethod:"plain",codeChallenge:n}}}async requestAuthorization(r){let n=await this.ensureCodeChallenge(r??{}),i=new URL(this.authorizeUrl);i.searchParams.set("response_type","code"),i.searchParams.set("state",this.storage.getString("pkceState")),i.searchParams.set("client_id",n.clientId??this.clientId),i.searchParams.set("redirect_uri",n.redirectUri??he.getOrigin()),i.searchParams.set("code_challenge_method",n.codeChallengeMethod),i.searchParams.set("code_challenge",n.codeChallenge),i.searchParams.set("scope",n.scope??"openid profile"),he.assign(i.toString())}processCode(r,n){let i={grant_type:st.AuthorizationCode,code:r,client_id:n?.clientId??this.clientId??"",redirect_uri:n?.redirectUri??he.getOrigin()},o=this.storage.getString("codeVerifier");return o&&(i.code_verifier=o),this.fetchTokens(i)}refreshIfExpired(r){return!this.refreshPromise&&this.accessTokenExpires!==void 0&&!this.isAuthenticated(r)&&this.refresh(r),this.refreshPromise??Promise.resolve()}refresh(r,n=!1){if(this.refreshPromise)return this.refreshPromise;if(!(!this.refreshToken&&!(this.clientId&&this.clientSecret)))return this.refreshPromise=this.runRefreshWithLock(r,n),this.refreshPromise}async runRefreshWithLock(r,n=!1){let i=()=>{let a=this.accessToken,u=this.getActiveLogin();u?.accessToken&&u.accessToken!==this.accessToken&&this.setAccessToken(u.accessToken,u.refreshToken);let d=this.accessToken!==a;return this.isAuthenticated(r)&&(!n||d)?Promise.resolve(this.getProfile()):this.refreshToken?this.fetchTokens({grant_type:st.RefreshToken,client_id:this.clientId??"",refresh_token:this.refreshToken}):this.clientId&&this.clientSecret?this.startClientLogin(this.clientId,this.clientSecret):Promise.resolve(void 0)},o=typeof navigator<"u"?navigator.locks:void 0;if(!o?.request)return i();let s=`medplum-refresh:${this.storage.makeKey("activeLogin")}`;return o.request(s,i)}async startClientLogin(r,n){return this.clientId=r,this.clientSecret=n,this.fetchTokens({grant_type:st.ClientCredentials,client_id:r,client_secret:n})}async startJwtBearerLogin(r,n,i){return this.clientId=r,this.fetchTokens({grant_type:st.JwtBearer,client_id:r,assertion:n,scope:i})}async startJwtAssertionLogin(r){return this.fetchTokens({grant_type:st.ClientCredentials,client_assertion_type:iu.JwtBearer,client_assertion:r})}setBasicAuth(r,n){this.clientId=r,this.clientSecret=n,this.basicAuth=pr(r+":"+n)}setLogLevel(r){this.logLevel=r,this.options.verbose=r==="verbose"}getLogLevel(){return this.logLevel}setVerbose(r){this.logLevel=r?"verbose":"none",this.options.verbose=r}async fhircastSubscribe(r,n){if(!(typeof r=="string"&&r!==""))throw new m(T("Invalid topic provided. Topic must be a valid string."));if(!(typeof n=="object"&&Array.isArray(n)&&n.length>0))throw new m(T("Invalid events provided. Events must be an array of event names containing at least one event."));let i={channelType:"websocket",mode:"subscribe",topic:r,events:n},s=(await this.post(this.fhircastHubUrl,An(i),V.FORM_URL_ENCODED))["hub.channel.endpoint"];if(!s)throw new Error("Invalid response!");return i.endpoint=s,i}async fhircastUnsubscribe(r){if(!gr(r))throw new m(T("Invalid topic or subscriptionRequest. SubscriptionRequest must be an object."));if(!(r.endpoint&&typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))throw new m(T("Provided subscription request must have an endpoint in order to unsubscribe."));r.mode="unsubscribe",await this.post(this.fhircastHubUrl,An(r),V.FORM_URL_ENCODED)}fhircastConnect(r,n){return new hr(r,n)}async fhircastPublish(r,n,i,o){return wo(n)?this.post(this.fhircastHubUrl,On(r,n,i,o),V.JSON):(Ao(n),this.post(this.fhircastHubUrl,On(r,n,i),V.JSON))}async fhircastGetContext(r){return this.get(`${this.fhircastHubUrl}/${r}`,{cache:"no-cache"})}async invite(r,n){return this.post("admin/projects/"+r+"/invite",n)}async handleTokenError(r){try{let n=await r.json();throw ut(n)?new m(n):n.error_description?new m(A(n.error_description)):new Error(JSON.stringify(n))}catch(n){throw n instanceof m?(n.message=`Failed to fetch tokens: ${n.message}`,n):new m(A("Failed to fetch tokens"),{cause:n})}}async fetchTokens(r){let n=new URLSearchParams(r),i={...this.defaultHeaders,"Content-Type":V.FORM_URL_ENCODED};this.basicAuth&&(i.Authorization=`Basic ${this.basicAuth}`),this.credentialsInHeader&&(n.delete("client_id"),n.delete("client_secret"),!this.basicAuth&&r.client_id&&r.client_secret&&(i.Authorization=`Basic ${pr(r.client_id+":"+r.client_secret)}`));let o={method:"POST",headers:i,body:n.toString(),credentials:"include"},s;try{s=await this.fetchWithRetry(this.tokenUrl,o)}catch(u){throw this.refreshPromise=void 0,u}s.ok||(this.clearActiveLogin(),this.onUnauthenticated?.(),await this.handleTokenError(s));let a=await s.json();return await this.verifyTokens(a),this.getProfile()}async verifyTokens(r){let n=r.access_token;if(Io(n)){let i=yr(n);if(Date.now()>=i.exp*1e3)throw this.clearActiveLogin(),new m(xi);if(i.cid){if(i.cid!==this.clientId)throw this.clearActiveLogin(),new m($r)}else if(this.clientId&&i.client_id!==this.clientId)throw this.clearActiveLogin(),new m($r)}return this.setActiveLogin({accessToken:n,refreshToken:r.refresh_token,project:r.project,profile:r.profile})}checkSessionDetailsMatchLogin(r){return this.sessionDetails&&r?r.profile?.reference?.endsWith(this.sessionDetails.profile.id)??!1:!0}setupStorageListener(){try{window.addEventListener("storage",r=>{if(r.key===null)he.reload();else if(r.key===this.storage.makeKey("activeLogin")){let n=r.oldValue?JSON.parse(r.oldValue):void 0,i=r.newValue?JSON.parse(r.newValue):void 0;n?.profile.reference!==i?.profile.reference||!this.checkSessionDetailsMatchLogin(i)?he.reload():i?this.setAccessToken(i.accessToken,i.refreshToken):this.clear()}})}catch{}}getSubscriptionManager(){return this.subscriptionManager||(this.subscriptionManager=new vr(this,Zi(this.baseUrl,"/ws/subscriptions-r4"))),this.subscriptionManager}subscribeToCriteria(r,n){return this.getSubscriptionManager().addCriteria(r,n)}unsubscribeFromCriteria(r,n){this.subscriptionManager&&this.subscriptionManager.removeCriteria(r,n)}getMasterSubscriptionEmitter(){return this.getSubscriptionManager().getMasterEmitter()}};function ou(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}async function No(t,e){let r=t.headers.get("content-location");if(r)return r;let n=t.headers.get("location");if(n)return n;if(ut(e)&&e.issue?.[0]?.diagnostics)return e.issue[0].diagnostics}function Lo(t){let e=t.entry?.map(r=>r.resource)??[];return Object.assign(e,{bundle:t})}function su(t){return C(t)&&"data"in t&&"contentType"in t}function Fo(t,e,r,n){return su(t)?t:{data:t,filename:e,contentType:r,onProgress:n}}function au(t){return C(t)&&"docDefinition"in t}function cu(t,e,r,n){return au(t)?t:{docDefinition:t,filename:e,tableLayouts:r,fonts:n}}function uu(t){return t.status===429||t.status>=500}var Tg={aws_ssm_parameter_store:"aws_ssm_parameter_store"};function Eg(t,e,r){let n=new Dn;Array.isArray(t)||(t=t.entry?.map(i=>i.resource)??[]);for(let i of t)n.addObservation(i);return n.summarize(e,r)}var Dn=class{constructor(e){c(this,"code");c(this,"unit");c(this,"sampling");c(this,"dataPoints");this.dataPoints=[],this.code=e?.code,this.unit=e?.unit,this.sampling=e?.sampling}addObservation(e){if(!this.code)this.code=e.code;else if(!du(this.code,e.code))throw new Error("Observation does not match code of sampled data");e.valueQuantity?.value!==void 0?(this.checkUnit(e.valueQuantity),this.addData(e.valueQuantity.value)):e.valueInteger!==void 0?this.addData(e.valueInteger):e.valueSampledData?.data&&(this.checkUnit(e.valueSampledData.origin),this.addData(...Bo(e.valueSampledData)))}addData(...e){this.dataPoints.push(...e)}checkUnit(e){if(!this.unit)this.unit=e;else if(e.code&&e.system){if(this.unit.system!==e.system||this.unit.code!==e.code)throw new Error("Incorrect unit for Observation")}else if(e.unit&&this.unit.unit!==e.unit)throw new Error("Incorrect unit for Observation")}summarize(e,r){if(!this.code)throw new Error("Code is required for data points");let n=r(this.dataPoints);return{resourceType:"Observation",status:"final",code:e,valueQuantity:typeof n=="number"?{...this.unit,value:n}:n,component:[{code:this.code,valueSampledData:{origin:{...this.unit,value:0},dimensions:1,period:0,...this.sampling,data:lu(this.dataPoints,this.sampling)}}]}}};function du(t,e){return!!t.coding?.some(r=>e.coding?.some(n=>r.system===n.system&&r.code===n.code))}function Bo(t){return t.data?.split(" ").map(e=>Number.parseFloat(e)*(t.factor??1)+(t.origin.value??0))??[]}function lu(t,e){if(t.length)return t.map(r=>(r-(e?.origin.value??0))/(e?.factor??1)).join(" ")}function Rg(t){let e=[],r=t.effectiveInstant??t.effectiveDateTime??t.effectivePeriod?.start,n=r?Date.parse(r).valueOf():0;t.valueSampledData&&e.push(...Uo(t.valueSampledData,n,t));for(let i of t.component??v)i.valueSampledData&&e.push(...Uo(i.valueSampledData,n,{...t,...i}));return e}function Uo(t,e,r){let n=[],i=Bo(t),o=I(r);for(let s=0;s<i.length;s++){let a=i[s],u=e+Math.floor(s/t.dimensions)*t.period;n.push({...r,id:void 0,effectiveInstant:void 0,effectivePeriod:void 0,effectiveTiming:void 0,effectiveDateTime:u?new Date(u).toISOString():void 0,valueQuantity:{...t.origin,value:a},valueSampledData:void 0,component:void 0,derivedFrom:o?[...r.derivedFrom??[],{reference:o}]:r.derivedFrom})}return n}function Vn({parentContext:t,path:e,elements:r,profileUrl:n,debugMode:i,accessPolicyResource:o}){if(e===t?.path)return;i??=t?.debugMode??!1,o??=t?.accessPolicyResource;let s=pu(e,r,t,!!i),a=rt(e,".",2)[1];s=fu(s,o,a),s=mu(s,o,a);let u=Object.create(null);for(let[l,f]of Object.entries(s))u[e+"."+l]=f;let d;if(t&&!t.isDefaultContext)d=t.getExtendedProps;else{let l=Object.create(null);d=f=>{let h=rt(f,".",2)[1];if(h){if(!l[h]){let b=Sr(h,o?.hiddenFields);l[h]={hidden:b,readonly:b||Sr(h,o?.readonlyFields)}}return l[h]}}}return{path:e,elements:s,elementsByPath:u,profileUrl:n??t?.profileUrl,debugMode:i,getExtendedProps:d,accessPolicyResource:o}}function pu(t,e,r,n){let i=Object.create(null);if(r)for(let[s,a]of Object.entries(r.elementsByPath)){let u=Ee(t,s);u!==void 0&&(i[u]=a)}let o=!1;if(e)for(let[s,a]of Object.entries(e))s in i||(i[s]=a,o=!0);return n&&console.assert(o,"Unnecessary ElementsContext; not using any newly provided elements"),i}function fu(t,e,r){if(!e?.hiddenFields?.length)return t;let n=r?r+".":"";return Object.fromEntries(Object.entries(t).filter(([i])=>!Sr(n+i,e.hiddenFields)))}function mu(t,e,r){if(!e?.readonlyFields?.length)return t;let n=Object.create(null),i=r?r+".":"";for(let[o,s]of Object.entries(t))Sr(i+o,e.readonlyFields)?n[o]={...s,readonly:!0}:n[o]=s;return n}function Sr(t,e){if(!e?.length)return!1;let r=t.split(".");for(let n=1;n<=r.length;n++){let i=r.slice(0,n).join(".");if(e.includes(i))return!0}return!1}function qo(t){return t.type!==void 0&&t.type.length>0}function hu(t,e,r,n){let i=Ye(t,e.path,{profileUrl:n});if(i){let o=r.typeSchema?.elements??r.elements;return i.some(s=>cn(s,e,r,o))??!1}return console.assert(!1,"getNestedProperty[%s] in isDiscriminatorComponentMatch missed",e.path),!1}function Wo(t,e,r,n){if(t)for(let i of e){let o={value:t,type:i.typeSchema?.type??i.type?.[0].code};if(r.every(s=>hu(o,s,i,i.typeSchema?.url??n)))return i.name}}var Rt=class{constructor(e,r,n){c(this,"rootSchema");c(this,"visitor");c(this,"elementsContextStack");c(this,"sliceAllowList");if(e.type===void 0)throw new Error("schema must include a type");this.rootSchema=e;let i=Vn({parentContext:void 0,path:this.rootSchema.type,elements:n??this.rootSchema.elements,profileUrl:this.rootSchema.name===this.rootSchema.type?void 0:this.rootSchema.url});if(i===void 0)throw new Error("Could not create root elements context");this.elementsContextStack=[i],this.visitor=r}get elementsContext(){return this.elementsContextStack.at(-1)}crawlElement(e,r,n){this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema);let i=Object.fromEntries(Object.entries(this.elementsContext.elements).filter(([o])=>o.startsWith(r)));this.crawlElementsImpl(i,n),this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlSlice(e,r,n){let i=this.prepareSlices(n.slices,n);if(!le(i.slices))throw new Error(`cannot crawl slice ${r.name} since it has no type information`);this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema),this.sliceAllowList=[r],this.crawlSliceImpl(i.slices[0],r.path,i),this.sliceAllowList=void 0,this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlResource(){this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema),this.crawlElementsImpl(this.rootSchema.elements,this.rootSchema.type),this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlElementsImpl(e,r){let n=gu(e);for(let i of n)this.crawlElementNode(i,r)}crawlElementNode(e,r){let n=r+"."+e.key;this.visitor.onEnterElement&&this.visitor.onEnterElement(n,e.element,this.elementsContext);for(let i of e.children)this.crawlElementNode(i,r);le(e.element?.slicing?.slices)&&this.crawlSlicingImpl(e.element.slicing,n),this.visitor.onExitElement&&this.visitor.onExitElement(n,e.element,this.elementsContext)}prepareSlices(e,r){let n=[];for(let o of e){if(!qo(o))continue;let s=o.type.find(a=>le(a.profile))?.profile?.[0];if(le(s)){let a=Mi(s);a&&(o.typeSchema=a)}n.push(o)}return{...r,slices:n}}crawlSlicingImpl(e,r){let n=this.prepareSlices(e.slices,e);for(let i of n.slices)(this.sliceAllowList===void 0||this.sliceAllowList.includes(i))&&this.crawlSliceImpl(i,r,n)}crawlSliceImpl(e,r,n){let i=e.typeSchema;i&&this.visitor.onEnterSchema&&this.visitor.onEnterSchema(i),this.visitor.onEnterSlice&&this.visitor.onEnterSlice(r,e,n);let o,s=i?.elements??e.elements;le(s)&&(o=Vn({path:r,parentContext:this.elementsContext,elements:s})),o&&this.elementsContextStack.push(o),this.crawlElementsImpl(s,r),o&&this.elementsContextStack.pop(),this.visitor.onExitSlice&&this.visitor.onExitSlice(r,e,n),i&&this.visitor.onExitSchema&&this.visitor.onExitSchema(i)}};function gu(t){let e=[];function r(o,s){return s.startsWith(o+".")}function n(o,s){for(let a of o.children)if(r(a.key,s.key)){n(a,s);return}o.children.push(s)}let i=Object.entries(t);i.sort((o,s)=>o[0].localeCompare(s[0]));for(let[o,s]of i){let a={key:o,element:s,children:[]},u=!1;for(let d of e)if(r(d.key,o)){n(d,a),u=!0;break}u||e.push(a)}return e}var br="__sliceName";function qg(t,e){let r=new Er(t,t.resourceType,"resource");return new Rt(e,r).crawlResource(),r.getDefaultValue()}function Wg(t,e,r){for(let[n,i]of Object.entries(e)){if(r===void 0||r===n){Rr(t,n,i,e);continue}let o=Ee(r,n);o!==void 0&&Rr(t,o,i,e)}return t}function $g(t,e,r,n){let i=new Er([{[br]:e.name}],e.path,"element");return new Rt(n,i).crawlSlice(t,e,r),i.getDefaultValue()[0]}var Er=class{constructor(e,r,n){c(this,"rootValue");c(this,"schemaStack");c(this,"valueStack");this.schemaStack=[],this.valueStack=[],this.rootValue=pe(e),this.valueStack.splice(0,this.valueStack.length,{type:n,path:r,values:[this.rootValue]})}get schema(){return this.schemaStack.at(-1)}get value(){return this.valueStack.at(-1)}onEnterSchema(e){this.schemaStack.push(e)}onExitSchema(){this.schemaStack.pop()}onEnterElement(e,r,n){let i=this.value.values,o=this.value.path,s=Ee(o,e);if(s===void 0)throw new Error(`Expected ${e} to be prefixed by ${o}`);let a=[];for(let u of i){if(u===void 0)continue;let d=Ee(n.path,o),l=Array.isArray(u)?u:[u];for(let f of l){yu(f,s,r,n.elements,d),Rr(f,s,r,n.elements);let h=Nn(f,s,n.elements,d);h!==void 0&&a.push(h)}}this.valueStack.push({type:"element",path:e,values:a})}onExitElement(e,r,n){if(!this.valueStack.pop())throw new Error("Expected value context to exist when exiting element");let o=Ee(this.value.path,e);if(o===void 0)throw new Error(`Expected ${e} to be prefixed by ${this.value.path}`);let s=Ee(n.path,this.value.path);for(let a of this.value.values){let u=Nn(a,o,n.elements,s);if(Array.isArray(u))for(let d=u.length-1;d>=0;d--){let l=u[d];le(l)||u.splice(d,1)}O(u)&&_n(a,void 0,o,r)}}onEnterSlice(e,r,n){let i=this.value.values,o=[];for(let s of i)if(s!==void 0){let a=Array.isArray(s)?s:[s],u=this.getMatchingSliceValues(a,r,n);o.push(u)}this.valueStack.push({type:"slice",path:e,values:o})}getMatchingSliceValues(e,r,n){let i=[];for(let o of e)(o[br]??Wo(o,[r],n.discriminator,this.schema.url))===r.name&&i.push(o);for(let o=i.length;o<r.min;o++)if(yn(r.type[0].code)){let s=Object.create(null);i.push(s),e.push(s)}return i}onExitSlice(){let e=this.valueStack.pop();if(!e)throw new Error("Expected value context to exist in onExitSlice");for(let r of e.values)for(let n=r.length-1;n>=0;n--){let i=r[n];br in i&&delete i[br]}}getDefaultValue(){return this.rootValue}};function yu(t,e,r,n,i){let o=Nn(t,e,n,i);r.min>0&&o===void 0&&yn(r.type[0].code)&&(r.isArray?_n(t,[Object.create(null)],e,r):_n(t,Object.create(null),e,r))}function _n(t,e,r,n){if(r.includes("."))throw new Error("key cannot be nested");let i=r;if(r.includes("[x]")){let o=n.type[0].code;i=r.replace("[x]",B(o))}e===void 0?delete t[i]:t[i]=e}function Nn(t,e,r,n){let i=e.split("."),o=t,s;for(let a=0;a<i.length;a++){let u=i[a];if(u.includes("[x]")){let d=(n?n+".":"")+i.slice(0,a+1).join("."),f=r[d].type[0].code;u=u.replace("[x]",B(f))}if(a===i.length-1){Array.isArray(o)?s=o.map(d=>d[u]):s=o[u];continue}if(Array.isArray(o))o=o.map(d=>d[u]);else if(C(o)){if(o[u]===void 0)return;o=o[u]}else return}return s}function Rr(t,e,r,n){if(!(r.fixed||r.pattern))return t;if(Array.isArray(t))return t.map(a=>Rr(a,e,r,n));t==null&&(t=Object.create(null));let i=t,o=e.split("."),s=i;for(let a=0;a<o.length;a++){let u=o[a];if(u.includes("[x]")){let l=n[o.slice(0,a+1).join(".")].type[0].code;u=u.replace("[x]",B(l))}if(a===o.length-1){let d=Array.isArray(s)?s:[s];for(let l of d)r.fixed?l[u]??=r.fixed.value:r.pattern&&(l[u]=$o(l[u],r.pattern.value))}else{if(!(u in s)){let d=o.slice(0,a+1).join(".");s[u]=n[d].isArray?[Object.create(null)]:Object.create(null)}s=s[u]}}return i}function $o(t,e){if(Array.isArray(e)&&(Array.isArray(t)||t===void 0))return(t?.length??0)>0?t:pe(e);if(C(e)&&(C(t)&&!Array.isArray(t)||t===void 0)){let r=pe(t)??Object.create(null);for(let n of Object.keys(e))r[n]=$o(r[n],e[n]);return r}return t}function jo(t,e){if(!t.group)throw new m(A("ConceptMap does not specify a mapping group","ConceptMap.group"));let r=xu(e),n=vu(r,e.targetsystem?t.group.filter(o=>o.target===e.targetsystem):t.group),i=n.length>0;return{result:i,match:i?n:void 0}}function xu(t){let e=Object.create(null);if(t.code&&!t.coding&&!t.codeableConcept){if(!t.system)throw new m(A("System parameter must be provided with code"));e[t.system]=[t.code]}else if(t.coding&&!t.code&&!t.codeableConcept)t.coding.code&&(e[t.coding.system??""]=[t.coding.code]);else if(t.codeableConcept&&!t.code&&!t.coding)for(let{system:r,code:n}of t.codeableConcept.coding??v)n&&(e[r??""]=Se(e[r??""],n));else throw t.code||t.coding||t.codeableConcept?new m(A("Ambiguous input: multiple source codings provided")):new m(A("Source Coding (system + code) must be specified"));return e}function vu(t,e){let r=[];for(let[n,i]of Object.entries(t))for(let o of e.filter(s=>(s.source??"")===n)){let s=o.element?.filter(a=>i.includes(a.code)).flatMap(a=>a.target?.map(u=>({equivalence:u.equivalence,concept:{system:o.target,code:u.code,display:u.display}}))??[]);s?.length||(s=Tu(i,o)),s&&r.push(...s)}return r}function Tu(t,e){switch(e.unmapped?.mode){case"provided":return t.map(r=>({equivalence:"equal",concept:{system:e.target,code:r}}));case"fixed":return[{equivalence:"equivalent",concept:{system:e.target,code:e.unmapped.code,display:e.unmapped.display}}];default:return}}var Su=[...yt,"->","<<",">>","=="];function Ho(t){return new we(t,gt,Su).tokenize()}var bu={"-":"disjoint","==":"equal"},Ln=class{constructor(e){c(this,"parser");c(this,"structureMap",{resourceType:"StructureMap",status:"active"});this.parser=e}parse(){for(;this.parser.hasMore();){let e=this.parser.peek()?.value;switch(e){case"map":this.parseMap();break;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}parseMap(){this.parser.consume("Symbol","map"),this.structureMap.url=this.parser.consume("String").value,this.parser.consume("="),this.structureMap.name=this.parser.consume().value}parseUses(){this.parser.consume("Symbol","uses");let e={};e.url=this.parser.consume("String").value,this.parser.peek()?.value==="alias"&&(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(){let e={};this.parser.consume("Symbol","group"),e.name=this.parser.consume("Symbol").value,e.input=this.parseParameters(),this.parser.peek()?.value==="extends"&&(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(){let 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(){let 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(){let e=[];for(this.parser.consume("{");this.parser.hasMore()&&this.parser.peek()?.value!=="}";)e.push(this.parseRule());return this.parser.consume("}"),e}parseRule(){let e={source:this.parseRuleSources()};return this.parser.peek()?.value==="->"&&(this.parser.consume("->"),e.target=this.parseRuleTargets()),this.parser.peek()?.value==="then"&&(this.parser.consume("Symbol","then"),this.parser.peek()?.id==="{"?e.rule=this.parseRules():e.dependent=this.parseRuleDependents()),this.parser.peek()?.id==="String"?e.name=this.parser.consume().value:e.name=e.source?.[0]?.element,this.parser.consume(";"),e}parseRuleSources(){this.parser.hasMore()&&this.parser.peek()?.value==="for"&&this.parser.consume("Symbol","for");let e=[this.parseRuleSource()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleSource());return e}parseRuleSource(){let e={},n=this.parseRuleContext().split(".");if(e.context=n[0],e.element=n[1],this.parser.hasMore()&&this.parser.peek()?.value===":"&&(this.parser.consume(":"),e.type=this.parser.consume().value),this.parser.hasMore()&&this.parser.peek()?.value==="default"&&(this.parser.consume("Symbol","default"),e.defaultValueString=this.parser.consume("String").value),(this.parser.peek()?.value==="first"||this.parser.peek()?.value==="not_first"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="not_last"||this.parser.peek()?.value==="only_one")&&(e.listMode=this.parser.consume().value),this.parser.peek()?.value==="as"&&(this.parser.consume("Symbol","as"),e.variable=this.parser.consume().value),this.parser.peek()?.value==="log"&&(this.parser.consume("Symbol","log"),e.logMessage=this.parser.consume().value),this.parser.peek()?.value==="where"){this.parser.consume("Symbol","where");let i=this.parser.consumeAndParse(S.Arrow);e.condition=i.toString()}if(this.parser.peek()?.value==="check"){this.parser.consume("Symbol","check");let i=this.parser.consumeAndParse(S.Arrow);e.check=i.toString()}return e}parseRuleTargets(){let e=[this.parseRuleTarget()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleTarget());return e}parseRuleTarget(){let e={},n=this.parseRuleContext().split(".");return e.contextType="variable",e.context=n[0],e.element=n[1],this.parser.peek()?.value==="="&&(this.parser.consume("="),this.parseRuleTargetTransform(e)),this.parser.peek()?.value==="as"&&(this.parser.consume("Symbol","as"),e.variable=this.parser.consume().value),this.parser.peek()?.value==="share"&&(this.parser.consume("Symbol","share"),e.listMode=["share"],this.parser.consume("Symbol")),(this.parser.peek()?.value==="first"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="collate")&&(e.listMode=[this.parser.consume().value]),e}parseRuleTargetTransform(e){let r=this.parser.consumeAndParse(S.As);r instanceof ae?(e.transform=r.name,e.parameter=r.args?.map(Go)):r instanceof z||r instanceof U?(e.transform="copy",e.parameter=[Go(r)]):(e.transform="evaluate",e.parameter=[{valueString:r.toString()}])}parseRuleContext(){let e=this.parser.consume().value;for(;this.parser.peek()?.value===".";)this.parser.consume("."),e+="."+this.parser.consume().value;return e}parseRuleDependents(){let e=this.parser.consumeAndParse(S.Arrow);return[{name:e.name,variable:e.args.map(r=>r.name)}]}parseConceptMap(){this.parser.consume("Symbol","conceptmap");let e={resourceType:"ConceptMap",status:"active",url:"#"+this.parser.consume("String").value};this.parser.consume("{");let r={},n=this.parser.peek()?.value;for(;n!=="}";)n==="prefix"?this.parseConceptMapPrefix(r):this.parseConceptMapRule(e,r),n=this.parser.peek()?.value;this.parser.consume("}"),this.structureMap.contained||(this.structureMap.contained=[]),this.structureMap.contained.push(e)}parseConceptMapPrefix(e){this.parser.consume("Symbol","prefix");let r=this.parser.consume().value;this.parser.consume("=");let n=this.parser.consume().value;e[r]=n}parseConceptMapRule(e,r){let n=this.parser.consume().value,i=r[n];this.parser.consume(":");let o=this.parser.consume().value,s=bu[this.parser.consume().value],a=this.parser.consume().value,u=r[a];this.parser.consume(":");let d=this.parser.consume().value,l=e?.group?.find(f=>f.source===i&&f.target===u);l||(l={source:i,target:u,element:[]},e.group||(e.group=[]),e.group.push(l)),l.element||(l.element=[]),l.element.push({code:o,target:[{code:d,equivalence:s}]})}};function Go(t){if(t instanceof U)return{valueId:t.name};if(t instanceof z)return Eu(t);throw new Error(`Unknown parameter atom type: ${t.constructor.name} (${t.toString()})`)}function Eu(t){switch(t.value.type){case"boolean":return{valueBoolean:t.value.value};case"decimal":return{valueDecimal:t.value.value};case"integer":return{valueInteger:t.value.value};case"dateTime":case"string":return{valueString:t.value.value};default:throw new Error("Unknown target literal type: "+t.value.type)}}var Ru=xt().registerInfix("->",{precedence:S.Arrow}).registerInfix(";",{precedence:S.Semicolon});function ty(t){let e=Ru.construct(Ho(t));return e.removeComments(),new Ln(e).parse()}var Fn=class{constructor(e=[]){c(this,"resources");this.resources=e}get(e,r){let n=[];for(let i of this.resources)i.resourceType===e&&i.url&&this.matchesUrl(i.url,r)&&n.push(i);return n}matchesUrl(e,r){if(r.includes("*")){let n=r.split("*");return e.startsWith(n[0])&&e.endsWith(n[1])}else return e===r}};function dy(t,e,r=new Fn){return Cu({root:t,transformMaps:r},t,e)}function Cu(t,e,r){return Pu(t,e),zo(t,e),Bn(t,e.group[0],r)}function Pu(t,e){let r=Pr(t);if(r&&e.import)for(let n of e.import){let i=r.get("StructureMap",n);for(let o of i)zo(t,o)}}function zo(t,e){let r=Pr(t);if(r&&e.contained)for(let n of e.contained)(n.resourceType==="StructureMap"||n.resourceType==="ConceptMap")&&r.resources.push(n);for(let n of e.group??v)Cr(t,n.name,{type:"StructureMapGroup",value:n})}function Bn(t,e,r){let n=[],i=[];for(let d of e.input)d.mode==="source"&&n.push(d),d.mode==="target"&&i.push(d);if(n.length===0)throw new Error("Missing source definitions");if(i.length===0)throw new Error("Missing target definitions");if(r.length<n.length)throw new Error(`Not enough arguments (got ${r.length}, min ${n.length})`);if(r.length>n.length+i.length)throw new Error(`Too many arguments (got ${r.length}, max ${n.length+i.length})`);let o={},s=[],a=0;for(let d of n)Ct(o,d.name,r[a++]);for(let d of i){let l=r[a++]??{type:d.type??"BackboneElement",value:{}};Ct(o,d.name,l),s.push(l)}let u={root:t.root,parent:t,variables:o};for(let d of e.rule??v)Jo(u,d);return s}function Jo(t,e){e.source&&Ko(t,e,0)}function Ko(t,e,r){let n=e.source[r];for(let i of Iu(t,n))Cr(t,"_",i),n.variable&&Cr(t,n.variable,i),r<e.source.length-1?Ko(t,e,r+1):wu(t,e)}function wu(t,e){if(!Au(t,e)){for(let r of e.target??v)Yo(t,r);for(let r of e.rule??v)Jo(t,r);for(let r of e.dependent??v)Bu(t,r)}}function Au(t,e){if(e.target?.length!==1||e.target[0].transform||e.rule||e.dependent)return!1;let r=Ae(t,"_");if(Array.isArray(r)&&(r=r[0]),!r)return!1;let n=Ou(t,r);if(!n)return Yo(t,{...e.target[0],transform:"copy",parameter:[{valueId:"_"}]}),!0;let i=e.target[0],o=Ae(t,i.context),s=o.value[i.element],a=Zo(o,i.element)||Array.isArray(s),u={root:t.root,parent:t,variables:{}},d=Bn(u,n,[r]);return Xo(t,i,o,d,a,s),!0}function Ou(t,e){let r=t;for(;r;){if(r.variables){for(let n of Object.values(r.variables))for(let i of Un(n))if(i.type==="StructureMapGroup"){let o=i.value;if((o.typeMode==="types"||o.typeMode==="type-and-types")&&o.input.length===2&&o.input[0].mode==="source"&&o.input[0].type===e.type&&o.input[1].mode==="target")return o}}r=r.parent}}function Iu(t,e){let r=Ae(t,e.context);if(!r)return[];let n=e.element;if(!n)return[r];let i=k(n,[r]);if(!i||i.length===0)return[];if(e.condition&&!Qo(r,{[e.variable]:i[0]},e.condition))return[];if(e.check&&!Qo(r,{[e.variable]:i[0]},e.check))throw new Error("Check failed: "+e.check);return e.listMode&&(i=ku(e,i)),i}function Qo(t,e,r){return H(k(r,[t],e))}function ku(t,e){switch(t.listMode){case"first":return[e[0]];case"not_first":return e.slice(1);case"last":return[e.at(-1)];case"not_last":return e.slice(0,e.length-1);case"only_one":if(e.length!==1)throw new Error("Expected only one value");break}return e}function Yo(t,e){let r=Ae(t,e.context);if(!r)throw new Error("Target not found: "+e.context);let n=r.value[e.element],i,o=Zo(r,e.element)||Array.isArray(n);if(e.transform)switch(e.transform){case"append":i=Mu(t,e);break;case"cast":i=Du(t,e);break;case"cc":i=Vu(t,e);break;case"copy":i=_u(t,e);break;case"create":i=Nu(t,e);break;case"evaluate":i=Lu(t,e);break;case"translate":i=Fu(t,e);break;case"truncate":i=Uu(t,e);break;case"uuid":i=[{type:"string",value:ce()}];break;default:throw new Error(`Unsupported transform: ${e.transform}`)}else{let s=es(r,e.element)?.type,a=s?.length===1?s[0].code:void 0;o||n===void 0?i=[a?{type:a,value:{}}:E({})]:i=[a?{type:a,value:n}:E(n)]}Xo(t,e,r,i,o,n)}function Xo(t,e,r,n,i,o){if(n.length!==0){if(i){o||(o=[],Ct(r.value,e.element,o));for(let s of n)o.push(s.value)}else Ct(r.value,e.element,n[0].value);e.variable&&Cr(t,e.variable,qu(n))}}function Zo(t,e){return es(t,e)?.isArray}function es(t,e){return Le(t.type)?.elements?.[e]}function Mu(t,e){let r=j(t,e.parameter?.[0])?.[0]?.value,n=j(t,e.parameter?.[1])?.[0]?.value;return[{type:"string",value:(r??"").toString()+(n??"").toString()}]}function Du(t,e){let r=j(t,e.parameter?.[0])?.[0];return j(t,e.parameter?.[1])?.[0]?.value==="string"?[{type:"string",value:r?.value?.toString()}]:[r]}function Vu(t,e){let r=e.parameter;if(r.length===2){let n=j(t,r[0])?.[0]?.value,i=j(t,r[1])?.[0]?.value;return[{type:"CodeableConcept",value:{coding:[{system:n,code:i}]}}]}else return[{type:"CodeableConcept",value:{text:j(t,r[0])?.[0]?.value}}]}function _u(t,e){return e.parameter.flatMap(r=>j(t,r))}function Nu(t,e){let r={};return e.parameter&&e.parameter.length>0&&(r.resourceType=j(t,e.parameter?.[0])?.[0]?.value),[E(r)]}function Lu(t,e){let n=j(t,e.parameter?.[0])[0].value;return k(n,[],ts(t))}function Fu(t,e){let r=e.parameter.flatMap(u=>j(t,u)),n=r[0].value,i=r[1].value,s=Pr(t)?.get("ConceptMap",i)[0];if(!s)throw new Error("ConceptMap not found: "+i);let a=jo(s,{system:s.group?.[0]?.source,code:n});return[E(a.match?.[0]?.concept?.code)]}function Uu(t,e){let r=j(t,e.parameter?.[0])?.[0],n=j(t,e.parameter?.[1])?.[0]?.value;return r.type==="string"?[{type:"string",value:r.value.substring(0,n)}]:[r]}function Bu(t,e){let r=Ae(t,e.name);if(!r)throw new Error("Dependent group not found: "+e.name);let n=e.variable,i=[];for(let s of n){let a=Ae(t,s);if(!a)throw new Error("Dependent variable not found: "+s);i.push(a)}let o={root:t.root,parent:t,variables:{}};Bn(o,r.value,i)}function Pr(t){if(t.transformMaps)return t.transformMaps;if(t.parent)return Pr(t.parent)}function j(t,e){let n=_({type:"StructureMapGroupRuleTargetParameter",value:e},"value");if(!n)throw new Error("Missing target parameter: "+JSON.stringify(e));if(n=Un(n),n.length===1&&n[0].type==="id"){let i=Ae(t,n[0].value);if(!i)throw new Error("Variable not found: "+n[0].value);return Un(i)}return n}function Ae(t,e){let r=t.variables?.[e];if(r)return r;if(t.parent)return Ae(t.parent,e)}function ts(t,e={}){if(t.parent&&ts(t.parent,e),t.variables)for(let[r,n]of Object.entries(t.variables))e[r]=n,e["%"+r]=n;return e}function Cr(t,e,r){t.variables||(t.variables={}),Ct(t.variables,e,r)}function Ct(t,e,r){if(e==="__proto__"||e==="constructor"||e==="prototype")throw new Error("Invalid key: "+e);t[e]=r}function Un(t){return Array.isArray(t)?t:[t]}function qu(t){return t.length===1?t[0]:t}var Qe=Object.prototype.hasOwnProperty;function Pt(t){return t===void 0?"undefined":t===null?"null":Array.isArray(t)?"array":typeof t}function Wu(t){return t&&typeof t=="object"}function at(t){if(!Wu(t))return t;if(t.constructor===Array){let r=t.length,n=new Array(r);for(let i=0;i<r;i++)n[i]=at(t[i]);return n}if(t.constructor===Date)return new Date(+t);let e={};for(let r in t)Qe.call(t,r)&&(e[r]=at(t[r]));return e}function ns({op:t}){return t==="remove"||t==="replace"||t==="copy"||t==="move"}function rs(t,e){let r=[];for(let n in t)Qe.call(t,n)&&t[n]!==void 0&&!(Qe.call(e,n)&&e[n]!==void 0)&&r.push(n);return r}function hy(t){let e=t.length,r={};for(let n=0;n<e;n++){let i=t[n];for(let o in i)Qe.call(i,o)&&i[o]!==void 0&&(r[o]=(r[o]||0)+1)}for(let n in r)r[n]<e&&delete r[n];return Object.keys(r)}function $u(t,e){let r=[];for(let n in t)Qe.call(t,n)&&t[n]!==void 0&&Qe.call(e,n)&&e[n]!==void 0&&r.push(n);return r}function ju(t){return t.op==="add"}function Hu(t){return t.op==="remove"}function qn(t,e){return{operations:t.operations.concat(e),cost:t.cost+1}}function Gu(t,e,r,n=Oe){let i=Math.max(t.length,e.length),o=new Map([[0,{operations:[],cost:0}]]);function s(f,h){let b=f*i+h,P=o.get(b);if(P===void 0){if(f>0&&h>0&&!n(t[f-1],e[h-1],r.add(String(f-1))).length)P=s(f-1,h-1);else{let xe=[];if(f>0){let Me=s(f-1,h),De={op:"remove",index:f-1};xe.push(qn(Me,De))}if(h>0){let Me=s(f,h-1),De={op:"add",index:f-1,value:e[h-1]};xe.push(qn(Me,De))}if(f>0&&h>0){let Me=s(f-1,h-1),De={op:"replace",index:f-1,original:t[f-1],value:e[h-1]};xe.push(qn(Me,De))}P=xe.sort((Me,De)=>Me.cost-De.cost)[0]}o.set(b,P)}return P}let a=isNaN(t.length)||t.length<=0?0:t.length,u=isNaN(e.length)||e.length<=0?0:e.length,d=s(a,u).operations,[l]=d.reduce(([f,h],b)=>{if(ju(b)){let P=b.index+1+h,xe=P<a+h?String(P):"-",si={op:b.op,path:r.add(xe).toString(),value:b.value};return[f.concat(si),h+1]}else if(Hu(b)){let P={op:b.op,path:r.add(String(b.index+h)).toString()};return[f.concat(P),h-1]}else{let P=r.add(String(b.index+h)),xe=n(b.original,b.value,P);return[f.concat(...xe),h]}},[[],0]);return l}function Qu(t,e,r,n=Oe){let i=[];return rs(t,e).forEach(o=>{i.push({op:"remove",path:r.add(o).toString()})}),rs(e,t).forEach(o=>{i.push({op:"add",path:r.add(o).toString(),value:e[o]})}),$u(t,e).forEach(o=>{i.push(...n(t[o],e[o],r.add(o)))}),i}function Oe(t,e,r,n=Oe){if(t===e)return[];let i=Pt(t),o=Pt(e);return i==="array"&&o==="array"?Gu(t,e,r,n):i==="object"&&o==="object"?Qu(t,e,r,n):[{op:"replace",path:r.toString(),value:e}]}function zu(t){return t.replace(/~1/g,"/").replace(/~0/g,"~")}function Ju(t){return t.replace(/~/g,"~0").replace(/\//g,"~1")}var M=class t{constructor(e=[""]){c(this,"tokens");this.tokens=e}static fromJSON(e){let r=e.split("/").map(zu);if(r[0]!=="")throw new Error(`Invalid JSON Pointer: ${e}`);return new t(r)}toString(){return this.tokens.map(Ju).join("/")}evaluate(e){let r=null,n="",i=e;for(let o=1,s=this.tokens.length;o<s;o++){if(r=i,n=this.tokens[o],n==="__proto__"||n==="constructor"||n==="prototype")throw new Error("Invalid path: "+this.toString());if(r!=null&&(typeof r=="object"||typeof r=="function")&&!Object.hasOwn(r,n)&&n in r)throw new Error("Invalid inherited key: "+n);i=r?.[n]}return{parent:r,key:n,value:i}}get(e){return this.evaluate(e).value}set(e,r){let n=this.evaluate(e);n.parent&&(n.parent[n.key]=r)}push(e){this.tokens.push(e)}add(e){let r=this.tokens.concat(String(e));return new t(r)}parent(){let e=this.tokens.length>1?this.tokens.slice(0,-1):[""];return new t(e)}};var K=class extends Error{constructor(r){super(`Value required at path: ${r}`);c(this,"path");this.path=r,this.name="MissingError"}},Wn=class extends Error{constructor(r,n){super(`Test failed: ${r} != ${n}`);c(this,"actual");c(this,"expected");this.actual=r,this.expected=n,this.name="TestError"}};function jn(t,e,r){if(Array.isArray(t))if(e==="-")t.push(r);else{let n=parseInt(e,10);t.splice(n,0,r)}else t[e]=r}function is(t,e){if(Array.isArray(t)){let r=parseInt(e,10);t.splice(r,1)}else delete t[e]}function wr(t,e,r){let n=M.fromJSON(e.path);if(r?.implicitArrayCreation&&n.tokens[n.tokens.length-1]==="-"){let o=n.parent().evaluate(t);o.value===void 0&&Pt(o.parent)==="object"&&(o.parent[o.key]=[])}let i=n.evaluate(t);return i.parent===void 0?new K(e.path):r?.implicitArrayCreation&&i.key==="-"&&!Array.isArray(i.parent)?new K(e.path):(jn(i.parent,i.key,at(e.value)),null)}function Hn(t,e,r){let n=M.fromJSON(e.path).evaluate(t);return n.value===void 0?new K(e.path):(is(n.parent,n.key),null)}function Gn(t,e,r){let n=M.fromJSON(e.path).evaluate(t);if(n.parent===null)return new K(e.path);if(Array.isArray(n.parent)){if(parseInt(n.key,10)>=n.parent.length)return new K(e.path)}else if(n.value===void 0)return new K(e.path);return n.parent[n.key]=at(e.value),null}function Qn(t,e,r){let n=M.fromJSON(e.from).evaluate(t);if(n.value===void 0)return new K(e.from);let i=M.fromJSON(e.path).evaluate(t);return i.parent===void 0?new K(e.path):(is(n.parent,n.key),jn(i.parent,i.key,n.value),null)}function Ku(t,e,r){let n=M.fromJSON(e.from).evaluate(t);if(n.value===void 0)return new K(e.from);let i=M.fromJSON(e.path).evaluate(t);return i.parent===void 0?new K(e.path):(jn(i.parent,i.key,at(n.value)),null)}function Yu(t,e,r){let n=M.fromJSON(e.path).evaluate(t);return Oe(n.value,e.value,new M).length?new Wn(n.value,e.value):null}var $n=class extends Error{constructor(r){super(`Invalid operation: ${r.op}`);c(this,"operation");this.operation=r,this.name="InvalidOperationError"}};function os(t,e,r){switch(e.op){case"add":return wr(t,e,r);case"remove":return Hn(t,e,r);case"replace":return Gn(t,e,r);case"move":return Qn(t,e,r);case"copy":return Ku(t,e,r);case"test":return Yu(t,e,r);default:return new $n(e)}}function wy(t,e,r){return e.map(n=>os(t,n,r))}function Xu(t){function e(r,n,i){let o=t(r,n,i);return Array.isArray(o)?o:Oe(r,n,i,e)}return e}function Ay(t,e,r){let n=new M;return(r?Xu(r):Oe)(t,e,n)}function ss(t,e){let r=M.fromJSON(e).evaluate(t);if(r!==void 0)return{op:"test",path:e,value:r.value}}function Oy(t,e){let r=new Array;return e.filter(ns).forEach(n=>{let i=ss(t,n.path);if(i&&r.push(i),"from"in n){let o=ss(t,n.from);o&&r.push(o)}}),r}var Zu=Object.freeze({implicitArrayCreation:!0});function qy(t){let e=[];for(let r of t.parameter??[]){if(r.name!=="operation")continue;let n={};for(let i of r.part??[])switch(i.name){case"type":n.type=i.valueCode;break;case"path":n.path=i.valueString;break;case"name":n.name=i.valueString;break;case"index":n.index=i.valueInteger;break;case"source":n.source=i.valueInteger;break;case"destination":n.destination=i.valueInteger;break;case"value":n.value=_({type:"ParametersParameter",value:i},"value");break}e.push(n)}return e}function Wy(t,e){for(let r of e){let n=k(r.path,[t]);switch(r.type){case"add":{let i=zn(n,r);if(!C(i?.value))throw new Error(`Failed to resolve base object for add operation at path '${r.path}'`);if(wt(i,r),!r.name)throw new Error(`No name present for add operation at path '${r.path}'`);let o=M.fromJSON(Xe(i.path));o.push(r.name),ao(t.type,`${i.path}.${r.name}`)?.isArray&&o.push("-"),wr(t.value,{op:"add",path:o.toString(),value:r.value.value},Zu);break}case"replace":{let i=zn(n,r);if(!i)throw new Error(`Failed to resolve target value for replace operation at path '${r.path}'`);wt(i,r),Gn(t.value,{op:"replace",path:Xe(i.path),value:r.value.value});break}case"move":{let i=as(n,r),o=M.fromJSON(Xe(i));Qn(t.value,{op:"move",from:o.add(r.source.toString()).toString(),path:o.add(r.destination.toString()).toString()});break}case"insert":{if(typeof r.index!="number")throw new Error(`No index present for insert operation at path '${r.path}'`);let i=as(n,r),o=M.fromJSON(Xe(i));o.push(r.index.toString()),wr(t.value,{op:"add",path:o.toString(),value:r.value.value});break}case"delete":{let i=zn(n,r);i&&(wt(i,r),Hn(t.value,{op:"remove",path:Xe(i.path)}))}}}}function wt(t,e){if(!("path"in t))throw new Error(`Cannot resolve pointer for value at path '${e.path}'`)}function zn(t,e){if(t.length>1)throw new Error(`Resolved multiple base values for ${e.type} operation at path '${e.path}'`);return t[0]}var ed=/\[(?<index>\d+)\]$/;function Jn(t){let e=ed.exec(t)?.groups?.index;return e?Number.parseInt(e,10):-1}function as(t,e){if(Jn(e.path)!==-1)throw new Error(`Failed to resolve base collection for ${e.type} operation at path '${e.path}'`);if(!t.length)throw new Error(`Failed to resolve base for ${e.type} operation at path '${e.path}'`);wt(t[0],e);let r=t[0].path;if(Jn(r)!==0)throw new Error(`Failed to resolve base collection for ${e.type} operation at path '${e.path}'`);let n=r.slice(0,r.lastIndexOf("["));for(let i=1;i<t.length;i++){let o=t[i];if(wt(o,e),!o.path.startsWith(n))throw new Error(`Cannot patch heterogeneous collection for ${e.type} operation at path '${e.path}'`);if(Jn(o.path)!==i)throw new Error(`Cannot patch misordered collection for ${e.type} operation at path '${e.path}'`)}if("index"in e&&!Kn(e.index,t))throw new Error(`Index out of bounds for ${e.type} operation: ${e.index}`);if("source"in e&&!Kn(e.source,t))throw new Error(`Source index out of bounds for ${e.type} operation: ${e.source}`);if("destination"in e&&!Kn(e.destination,t))throw new Error(`Destination index out of bounds for ${e.type} operation: ${e.destination}`);return n}function Kn(t,e){return t>=0&&t<=e.length}var td=" ".repeat(2),cs=class{constructor(e=td,r=!0){c(this,"indent");c(this,"b");c(this,"indentCount");this.indent=e,this.b=[],this.indentCount=0,r&&(this.appendNoWrap("// SPDX-FileCopyrightText: Copyright Orangebot, Inc. and Medplum contributors"),this.appendNoWrap("// SPDX-License-Identifier: Apache-2.0"),this.appendNoWrap("/*"),this.appendNoWrap(" * This is a generated file"),this.appendNoWrap(" * Do not edit manually."),this.appendNoWrap(" */"),this.newLine())}newLine(){this.b.push(`
|
|
44
|
+
}`.replaceAll(/\s+/g," "),u=await this.graphql(a);Kr(u.data.StructureDefinitionList);for(let d of u.data.SearchParameterList)Sn(d)})());return this.setCacheEntry(i,s,n),s}requestProfileSchema(r,n){if(!n?.expandProfile&&_i(r))return Promise.resolve();let i=r+"-requestSchema"+(n?.expandProfile?"-nested":""),o=this.getCacheEntry(i,void 0);if(o)return o.value;let s=new j((async()=>{if(n?.expandProfile){let a=this.fhirUrl("StructureDefinition","$expand-profile");a.search=new URLSearchParams({url:r}).toString();let u=await this.post(a.toString(),{});Kr(u)}else{let a=await this.searchOne("StructureDefinition",{url:r,_sort:"-_lastUpdated"});if(!a){console.warn(`No StructureDefinition found for ${r}!`);return}Yr(a)}})());return this.setCacheEntry(i,s,n),s}readHistory(r,n,i,o){let s=this.fhirUrl(r,n,"_history");return i?.count&&s.searchParams.set("_count",i.count.toString()),i?.offset&&s.searchParams.set("_offset",i.offset.toString()),this.get(s.toString(),o)}readVersion(r,n,i,o){return this.get(this.fhirUrl(r,n,"_history",i),o)}readPatientEverything(r,n){return this.getBundle(this.fhirUrl("Patient",r,"$everything"),n)}readPatientSummary(r,n){return this.getBundle(this.fhirUrl("Patient",r,"$summary"),n)}async createResource(r,n){if(!r.resourceType)throw new Error("Missing resourceType");this.invalidateSearches(r.resourceType);let i=await this.post(this.fhirUrl(r.resourceType),r,void 0,n);return this.dispatchResourceModified({resourceType:r.resourceType,operation:"create",id:i?.id,resource:i}),i}async createResourceIfNoneExist(r,n,i={}){let o=this.fhirUrl(r.resourceType);this.setRequestHeader(i,"If-None-Exist",n);let s=await this.post(o,r,void 0,i);return this.cacheResource(s,i),this.invalidateUrl(this.fhirUrl(r.resourceType,r.id,"_history")),this.invalidateSearches(r.resourceType),this.dispatchResourceModified({resourceType:r.resourceType,operation:"create",id:s?.id,resource:s}),s}async upsertResource(r,n,i){let o=this.fhirSearchUrl(r.resourceType,n),s=await this.put(o,r,void 0,i),a=s!==void 0;return s||(s=r),this.cacheResource(s,i),this.invalidateUrl(this.fhirUrl(r.resourceType,r.id,"_history")),this.invalidateSearches(r.resourceType),a&&this.dispatchResourceModified({resourceType:r.resourceType,operation:"update",id:s.id,resource:s}),s}async createAttachment(r,n,i,o,s){let a=$o(r,n,i,o);if(a.contentType===V.XML){let l=a.data,f;l instanceof Blob?f=await new Promise((h,b)=>{let P=new FileReader;P.onload=()=>{if(!P.result){b(new Error("Failed to load file"));return}h(P.result)},P.readAsText(l,"utf-8")}):ArrayBuffer.isView(l)?f=new TextDecoder().decode(l):f=l,f.includes("<ClinicalDocument")&&f.includes("urn:hl7-org:v3")&&(a={...a,contentType:V.CDA_XML})}let u=s??(typeof n=="object"?n:{}),d=await this.createBinary(a,u);return{contentType:a.contentType,url:d.url,title:a.filename}}createBinary(r,n,i,o,s){let a=$o(r,n,i,o),u=s??(typeof n=="object"?n:{}),{data:d,contentType:l,filename:f,securityContext:h,onProgress:b}=a,P=this.fhirUrl("Binary");return f&&P.searchParams.set("_filename",f),h?.reference&&this.setRequestHeader(u,"X-Security-Context",h.reference),b?this.uploadwithProgress(P,d,l,b,u):this.post(P,d,l,u)}uploadwithProgress(r,n,i,o,s){return new Promise((a,u)=>{let d=new XMLHttpRequest,l=()=>d.abort();s?.signal?.addEventListener("abort",l);let f=h=>{s?.signal?.removeEventListener("abort",l),h instanceof Error?u(h):a(h)};if(d.responseType="json",d.onabort=()=>f(new DOMException("Request aborted","AbortError")),d.onerror=()=>f(new Error("Request error")),o&&(d.upload.onprogress=h=>o(h),d.upload.onload=h=>o(h)),d.onload=()=>{d.status>=200&&d.status<300?f(d.response):f(new m(Nt(d.response||d.statusText)))},d.open("POST",r),d.withCredentials=!0,d.setRequestHeader("Authorization","Bearer "+this.accessToken),d.setRequestHeader("Cache-Control","no-cache, no-store, max-age=0"),d.setRequestHeader("Content-Type",i),this.options.extendedMode!==!1&&d.setRequestHeader("X-Medplum","extended"),s?.headers){let h=s.headers;for(let[b,P]of Object.entries(h))d.setRequestHeader(b,P)}d.send(n)})}async createPdf(r,n,i,o){if(!this.createPdfImpl)throw new Error("PDF creation not enabled");let s=mu(r,n,i,o),a=typeof n=="object"?n:{},{docDefinition:u,tableLayouts:d,fonts:l,...f}=s,h=await this.createPdfImpl(u,d,l),b={...f,data:h,contentType:"application/pdf"};return this.createBinary(b,a)}createComment(r,n,i){let o=this.getProfile(),s,a;return r.resourceType==="Encounter"&&(s=X(r),a=r.subject),r.resourceType==="ServiceRequest"&&(s=r.encounter,a=r.subject),r.resourceType==="Patient"&&(a=X(r)),this.createResource({resourceType:"Communication",status:"completed",basedOn:[X(r)],encounter:s,subject:a,sender:o?X(o):void 0,sent:new Date().toISOString(),payload:[{contentString:n}]},i)}async updateResource(r,n){if(!r.resourceType)throw new Error("Missing resourceType");if(!r.id)throw new Error("Missing id");let i=await this.put(this.fhirUrl(r.resourceType,r.id),r,void 0,n),o=i!==void 0;return i||(i=r),this.cacheResource(i,n),this.invalidateUrl(this.fhirUrl(r.resourceType,r.id,"_history")),this.invalidateSearches(r.resourceType),o&&this.dispatchResourceModified({resourceType:r.resourceType,operation:"update",id:i.id,resource:i}),i}async patchResource(r,n,i,o){let s=await this.patch(this.fhirUrl(r,n),i,o);return this.cacheResource(s,o),this.invalidateUrl(this.fhirUrl(r,n,"_history")),this.invalidateSearches(r),this.dispatchResourceModified({resourceType:r,operation:"patch",id:n,resource:s}),s}async deleteResource(r,n,i){this.deleteCacheEntry(this.fhirUrl(r,n).toString()),this.invalidateSearches(r);let o=await this.delete(this.fhirUrl(r,n),i);return this.dispatchResourceModified({resourceType:r,operation:"delete",id:n}),o}validateResource(r,n){return this.post(this.fhirUrl(r.resourceType,"$validate"),r,void 0,n)}executeBot(r,n,i,o){let s;if(typeof r=="string"){let a=r;s=this.fhirUrl("Bot",a,"$execute")}else{let a=r;s=this.fhirUrl("Bot","$execute"),s.searchParams.set("identifier",a.system+"|"+a.value)}return this.post(s,n,i,o)}executeBatch(r,n){return this.post(this.fhirBaseUrl,r,void 0,n)}sendEmail(r,n){return this.post("email/v1/send",r,V.JSON,n)}graphql(r,n,i,o){return this.post(this.fhirUrl("$graphql"),{query:r,operationName:n,variables:i},V.JSON,o)}readResourceGraph(r,n,i,o){return this.get(`${this.fhirUrl(r,n)}/$graph?graph=${i}`,o)}pushToAgent(r,n,i,o,s,a){let{waitTimeout:u,returnAck:d,...l}=a??{};return this.post(this.fhirUrl("Agent",Z(r),"$push"),{destination:typeof n=="string"?n:I(n),body:i,contentType:o,waitForResponse:s,...u!==void 0?{waitTimeout:u}:void 0,...d!==void 0?{returnAck:d}:void 0},V.FHIR_JSON,l)}getCdsServices(r){return this.get(this.cdsServicesUrl,r)}callCdsService(r,n,i){return this.post($(this.cdsServicesUrl,r),n,V.JSON,i)}getActiveLogin(){return this.storage.getObject("activeLogin")}async setActiveLogin(r){(!this.sessionDetails?.profile||I(this.sessionDetails.profile)!==r.profile?.reference)&&this.clearActiveLogin(),this.setAccessToken(r.accessToken,r.refreshToken),this.storage.setObject("activeLogin",r),this.addLogin(r),this.refreshPromise=void 0,await this.refreshProfile()}getAccessToken(){return this.accessToken}isAuthenticated(r){return this.accessTokenExpires!==void 0&&Date.now()<this.accessTokenExpires-(r??this.refreshGracePeriod)}setAccessToken(r,n){this.accessToken=r,this.refreshToken=n,this.accessTokenExpires=Lo(r),this.medplumServer=No(r)}getLogins(){return this.storage.getObject("logins")??[]}addLogin(r){let n=this.getLogins().filter(i=>i.profile?.reference!==r.profile?.reference);n.push(r),this.storage.setObject("logins",n)}async refreshProfile(){if(this.medplumServer)return this.profilePromise=new Promise((r,n)=>{this.get("auth/me",{cache:"no-cache"}).then(i=>{this.profilePromise=void 0;let o=this.sessionDetails?.profile?.id!==i.profile.id;this.sessionDetails=i,this.syncStoredLoginProject(),o&&this.dispatchEvent({type:"change"}),r(i.profile),this.dispatchEvent({type:"profileRefreshed"})}).catch(n)}),this.dispatchEvent({type:"profileRefreshing"}),this.profilePromise}syncStoredLoginProject(){let r=this.getActiveLogin(),n=this.sessionDetails?.project?.name;if(!r||!n||r.project.display===n)return;let i={...r,project:{...r.project,display:n}};this.storage.setObject("activeLogin",i),this.addLogin(i)}isLoading(){return!this.isInitialized||!!this.profilePromise&&!this.sessionDetails?.profile}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?this.profilePromise:this.sessionDetails?this.sessionDetails.profile:this.refreshProfile()}getUserConfiguration(){return this.sessionDetails?.config}getAccessPolicy(){return this.sessionDetails?.accessPolicy}async download(r,n={}){return(await this.downloadResponse(r,n)).blob()}async downloadResponse(r,n={}){this.refreshPromise&&await this.refreshPromise;let i=r.toString();i.startsWith(au)&&(r=this.fhirUrl(i));let o=n.headers;return o||(o={},n.headers=o),o.Accept||(o.Accept="*/*"),this.addFetchOptionsDefaults(n,r.toString()),this.fetchWithRetry(r.toString(),n)}async createMedia(r,n){let{additionalFields:i,...o}=r,s=await this.createResource({resourceType:"Media",status:"preparation",content:{contentType:r.contentType},...i});o.securityContext||(o.securityContext=X(s));let a=await this.createAttachment(o,n);return this.updateResource({...s,status:"completed",content:a})}async uploadMedia(r,n,i,o,s){return this.createMedia({data:r,contentType:n,filename:i,additionalFields:o},s)}async createDocumentReference(r,n){let{additionalFields:i,...o}=r,s=await this.createResource({resourceType:"DocumentReference",status:"current",content:[{attachment:{contentType:r.contentType}}],...i});o.securityContext||(o.securityContext=X(s));let a=await this.createAttachment(o,n);return this.updateResource({...s,content:[{attachment:a}]})}async bulkExport(r="",n,i,o){let s=r&&`${r}/`,a=this.fhirUrl(`${s}$export`);return n&&a.searchParams.set("_type",n),i&&a.searchParams.set("_since",i),this.startAsyncRequest(a.toString(),o)}async startAsyncRequest(r,n={}){this.addFetchOptionsDefaults(n,r);let i=n.headers;return i.Prefer="respond-async",n.method="POST",this.request(r,n)}async wrappedFetch(r,n){return await this.refreshIfExpired(),this.addFetchOptionsDefaults(n,r),this.fetchWithRetry(r,n)}get keyValue(){return this.keyValueClient||(this.keyValueClient=new yr(this)),this.keyValueClient}getBundle(r,n){return new j((async()=>{let i=await this.get(r,n);for(let o of i.entry??v)this.cacheResource(o.resource,n);return i})())}isCacheEnabled(r){return!!this.requestCache&&!this.getRequestHeader(r,"x-medplum-on-behalf-of")}getCacheEntry(r,n){if(!this.isCacheEnabled(n)||n?.cache==="no-cache"||n?.cache==="reload")return;let i=this.requestCache.get(r);if(!(!i||i.requestTime+this.cacheTime<Date.now()))return i}setCacheEntry(r,n,i){this.isCacheEnabled(i)&&(this.requestCache.set(r,{requestTime:Date.now(),value:n}),i?.signal&&i.signal.addEventListener("abort",()=>{this.requestCache.delete(r)}))}cacheResource(r,n){r?.id&&!r.meta?.tag?.some(i=>i.code==="SUBSETTED")&&this.setCacheEntry(this.fhirUrl(r.resourceType,r.id).toString(),new j(Promise.resolve(r)),n)}deleteCacheEntry(r){this.requestCache&&this.requestCache.delete(r)}dispatchResourceModified(r){this.listenerCount("resourceModified")>0&&this.dispatchEvent({type:"resourceModified",payload:r})}async request(r,n={},i={}){let o=await this.wrappedFetch(r,n);if(o.status===401)return this.handleUnauthenticated(r,n,i);if(o.status===204||o.status===304)return;let a=o.headers.get("content-type")?.includes("json");if(o.status===404&&!a)throw new m(Ti);let u=await this.parseBody(o,a);if(o.status===200&&n.followRedirectOnOk||o.status===201&&n.followRedirectOnCreated){let d=await qo(o,u);if(d)return this.request(d,{...n,method:"GET",body:void 0})}if(o.status===202&&n.pollStatusOnAccepted){let l=await qo(o,u)??i.statusUrl;if(l)return this.pollStatus(l,n,i)}if(o.status>=400)throw new m(Nt(u));return u}async parseBody(r,n){let i;if(r.headers.get("content-length")!=="0"){if(n)try{i=await r.json()}catch(o){throw console.error("Error parsing response",r.status,o),o}else i=await r.text();return i}}async fetchWithRetry(r,n){r.startsWith("http")||(r=$(this.baseUrl,r));let i=n?.maxRetries??this.maxRetries;for(let o=0;o<=i;o++)try{this.logLevel!=="none"&&this.logRequest(r,n);let s=await this.fetch(r,n);if(this.logLevel!=="none"&&this.logResponse(s),this.setCurrentRateLimit(s),o>=i||!hu(s))return s;let a=this.getRetryDelay(o),u=n.maxRetryTime??this.maxRetryTime;if(a>u)return s;await xn(a,{signal:n.signal})}catch(s){if(s.message==="Failed to fetch"&&o===0&&this.dispatchEvent({type:"offline"}),s.name==="AbortError"||o===i)throw s}throw new Error("Unreachable")}logRequest(r,n){if(console.log(`> ${n.method} ${r}`),this.logLevel==="verbose"&&n.headers){let i=n.headers;for(let o of Qt(Object.keys(i)))console.log(`> ${o}: ${i[o]}`)}}logResponse(r){console.log(`< ${r.status} ${r.statusText}`),this.logLevel==="verbose"&&r.headers&&r.headers.forEach((n,i)=>console.log(`< ${i}: ${n}`))}setCurrentRateLimit(r){if(!r?.headers||typeof r.headers.get!="function")return;let n=r.headers.get("ratelimit");n&&(this.currentRateLimits=n)}rateLimitStatus(){if(!this.currentRateLimits)return[];let r=this.currentRateLimits;return r.split(",").map(n=>{let i=n.split(";").map(l=>l.trim());if(i.length!==3)throw new Error("Could not parse RateLimit header: "+r);let o=i[0].substring(1,i[0].length-1),s=i.find(l=>l.startsWith("r="))?.substring(2),a=s?Number.parseInt(s,10):Number.NaN,u=i.find(l=>l.startsWith("t="))?.substring(2),d=u?Number.parseInt(u,10):Number.NaN;if(!o||Number.isNaN(a)||Number.isNaN(d))throw new Error("Could not parse RateLimit header: "+r);return{name:o,remainingUnits:a,secondsUntilReset:d,resetsAfter:Math.ceil((Date.now()+1e3*d)/1e3)}})}getRetryDelay(r){let n=this.rateLimitStatus(),i=500*Math.pow(1.5,r);for(let o of n)o.remainingUnits||(i=Math.max(i,o.secondsUntilReset*1e3));return i}async pollStatus(r,n,i){let o={...n,method:"GET",body:void 0,redirect:"follow"};if(i.pollCount===void 0)n.headers&&typeof n.headers=="object"&&"Prefer"in n.headers&&(o.headers={...n.headers},delete o.headers.Prefer),i.statusUrl=r,i.pollCount=1;else{let s=n.pollStatusPeriod??1e3;await xn(s,{signal:n.signal}),i.pollCount++}return this.request(r,o,i)}async executeAutoBatch(){if(this.autoBatchQueue===void 0)return;let r=[...this.autoBatchQueue];if(this.autoBatchQueue.length=0,this.autoBatchTimerId=void 0,r.length===1){let o=r[0];try{o.options.method=o.method,o.resolve(await this.request($(this.fhirBaseUrl,o.url),o.options))}catch(s){o.reject(new m(Nt(s)))}return}let n={resourceType:"Bundle",type:"batch",entry:r.map(o=>({request:{method:o.method,url:o.url},resource:o.options.body?JSON.parse(o.options.body):void 0}))},i=await this.post(this.fhirBaseUrl,n);for(let o=0;o<r.length;o++){let s=r[o],a=i.entry?.[o];a?.response?.outcome&&!jr(a.response.outcome)?s.reject(new m(a.response.outcome)):s.resolve(a?.resource)}}isInternalUrl(r){if(!r.startsWith("http://")&&!r.startsWith("https://"))return!0;try{let n=new URL(r);return r.startsWith(this.baseUrl)||r.startsWith(this.fhirBaseUrl)||n.origin===new URL(this.baseUrl).origin&&mt(n.pathname).startsWith(mt(new URL(this.baseUrl).pathname))}catch{return!1}}addFetchOptionsDefaults(r,n){Object.entries(this.defaultHeaders).forEach(([i,o])=>{this.setRequestHeader(r,i,o)}),this.setRequestHeader(r,"Accept",tu,!0),this.options.extendedMode!==!1&&this.setRequestHeader(r,"X-Medplum","extended"),r.body&&this.setRequestHeader(r,"Content-Type",V.FHIR_JSON,!0),this.isInternalUrl(n)&&(this.accessToken?this.setRequestHeader(r,"Authorization","Bearer "+this.accessToken):this.basicAuth&&this.setRequestHeader(r,"Authorization","Basic "+this.basicAuth),r.credentials||(r.credentials="include"))}setRequestContentType(r,n){this.setRequestHeader(r,"Content-Type",n)}getRequestHeader(r,n){let i=r?.headers;if(i)if(Array.isArray(i)){let o=i.find(([s])=>s.toLowerCase()===n.toLowerCase());return o?o[1]:void 0}else{if(i instanceof Headers)return i.get(n)??void 0;if(C(i))return i[n]??void 0}else return}setRequestHeader(r,n,i,o=!1){let s=r.headers;s?Array.isArray(s)?(!o||!s.some(([a])=>a.toLowerCase()===n.toLowerCase()))&&s.push([n,i]):s instanceof Headers?(!o||!s.has(n))&&s.set(n,i):C(s)&&(!o||!s[n])&&(s[n]=i):r.headers={[n]:i}}setRequestBody(r,n){typeof n=="string"||typeof Blob<"u"&&(n instanceof Blob||n?.constructor.name==="Blob")||typeof File<"u"&&(n instanceof File||n?.constructor.name==="File")||typeof Uint8Array<"u"&&(n instanceof Uint8Array||n?.constructor.name==="Uint8Array")?r.body=n:typeof n=="object"&&n!==null&&(typeof n.getReader=="function"||typeof n.pipe=="function"&&typeof n.on=="function")?(r.body=n,r.duplex="half"):n&&(r.body=JSON.stringify(n))}async handleUnauthenticated(r,n,i){let o=i.authAttempt??0,s=o+1<cu?this.refresh(void 0,!0):void 0;if(s)return await s,this.request(r,n,{...i,authAttempt:o+1});throw this.clear(),this.onUnauthenticated?.(),new m(Je)}async startPkce(){let r=Cn();this.storage.setString("pkceState",r);let n=Cn().slice(0,128);this.storage.setString("codeVerifier",n);try{let i=await wo(n);return{codeChallengeMethod:"S256",codeChallenge:Xi(i).replaceAll("+","-").replaceAll("/","_").replaceAll("=","")}}catch(i){return console.warn("Failed to hash code verifier. Falling back to 'plain' code challenge method",i),{codeChallengeMethod:"plain",codeChallenge:n}}}async requestAuthorization(r){let n=await this.ensureCodeChallenge(r??{}),i=new URL(this.authorizeUrl);i.searchParams.set("response_type","code"),i.searchParams.set("state",this.storage.getString("pkceState")),i.searchParams.set("client_id",n.clientId??this.clientId),i.searchParams.set("redirect_uri",n.redirectUri??ge.getOrigin()),i.searchParams.set("code_challenge_method",n.codeChallengeMethod),i.searchParams.set("code_challenge",n.codeChallenge),i.searchParams.set("scope",n.scope??"openid profile"),ge.assign(i.toString())}processCode(r,n){let i={grant_type:st.AuthorizationCode,code:r,client_id:n?.clientId??this.clientId??"",redirect_uri:n?.redirectUri??ge.getOrigin()},o=this.storage.getString("codeVerifier");return o&&(i.code_verifier=o),this.fetchTokens(i)}refreshIfExpired(r){return!this.refreshPromise&&this.accessTokenExpires!==void 0&&!this.isAuthenticated(r)&&this.refresh(r),this.refreshPromise??Promise.resolve()}refresh(r,n=!1){if(this.refreshPromise)return this.refreshPromise;if(!(!this.refreshToken&&!(this.clientId&&this.clientSecret)))return this.refreshPromise=this.runRefreshWithLock(r,n),this.refreshPromise}async runRefreshWithLock(r,n=!1){let i=()=>{let a=this.accessToken,u=this.getActiveLogin();u?.accessToken&&u.accessToken!==this.accessToken&&this.setAccessToken(u.accessToken,u.refreshToken);let d=this.accessToken!==a;return this.isAuthenticated(r)&&(!n||d)?Promise.resolve(this.getProfile()):this.refreshToken?this.fetchTokens({grant_type:st.RefreshToken,client_id:this.clientId??"",refresh_token:this.refreshToken}):this.clientId&&this.clientSecret?this.startClientLogin(this.clientId,this.clientSecret):Promise.resolve(void 0)},o=typeof navigator<"u"?navigator.locks:void 0;if(!o?.request)return i();let s=`medplum-refresh:${this.storage.makeKey("activeLogin")}`;return o.request(s,i)}async startClientLogin(r,n){return this.clientId=r,this.clientSecret=n,this.fetchTokens({grant_type:st.ClientCredentials,client_id:r,client_secret:n})}async startJwtBearerLogin(r,n,i){return this.clientId=r,this.fetchTokens({grant_type:st.JwtBearer,client_id:r,assertion:n,scope:i})}async startJwtAssertionLogin(r){return this.fetchTokens({grant_type:st.ClientCredentials,client_assertion_type:du.JwtBearer,client_assertion:r})}setBasicAuth(r,n){this.clientId=r,this.clientSecret=n,this.basicAuth=lr(r+":"+n)}setLogLevel(r){this.logLevel=r,this.options.verbose=r==="verbose"}getLogLevel(){return this.logLevel}setVerbose(r){this.logLevel=r?"verbose":"none",this.options.verbose=r}async fhircastSubscribe(r,n){if(!(typeof r=="string"&&r!==""))throw new m(S("Invalid topic provided. Topic must be a valid string."));if(!(typeof n=="object"&&Array.isArray(n)&&n.length>0))throw new m(S("Invalid events provided. Events must be an array of event names containing at least one event."));let i={channelType:"websocket",mode:"subscribe",topic:r,events:n},s=(await this.post(this.fhircastHubUrl,On(i),V.FORM_URL_ENCODED))["hub.channel.endpoint"];if(!s)throw new Error("Invalid response!");return i.endpoint=s,i}async fhircastUnsubscribe(r){if(!hr(r))throw new m(S("Invalid topic or subscriptionRequest. SubscriptionRequest must be an object."));if(!(r.endpoint&&typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))throw new m(S("Provided subscription request must have an endpoint in order to unsubscribe."));r.mode="unsubscribe",await this.post(this.fhircastHubUrl,On(r),V.FORM_URL_ENCODED)}fhircastConnect(r,n){return new mr(r,n)}async fhircastPublish(r,n,i,o){return Mo(n)?this.post(this.fhircastHubUrl,In(r,n,i,o),V.JSON):(Do(n),this.post(this.fhircastHubUrl,In(r,n,i),V.JSON))}async fhircastGetContext(r){return this.get(`${this.fhircastHubUrl}/${r}`,{cache:"no-cache"})}async invite(r,n){return this.post("admin/projects/"+r+"/invite",n)}async handleTokenError(r){try{let n=await r.json();throw dt(n)?new m(n):n.error_description?new m(w(n.error_description)):new Error(JSON.stringify(n))}catch(n){throw n instanceof m?(n.message=`Failed to fetch tokens: ${n.message}`,n):new m(w("Failed to fetch tokens"),{cause:n})}}async fetchTokens(r){let n=new URLSearchParams(r),i={...this.defaultHeaders,"Content-Type":V.FORM_URL_ENCODED};this.basicAuth&&(i.Authorization=`Basic ${this.basicAuth}`),this.credentialsInHeader&&(n.delete("client_id"),n.delete("client_secret"),!this.basicAuth&&r.client_id&&r.client_secret&&(i.Authorization=`Basic ${lr(r.client_id+":"+r.client_secret)}`));let o={method:"POST",headers:i,body:n.toString(),credentials:"include"},s;try{s=await this.fetchWithRetry(this.tokenUrl,o)}catch(u){throw this.refreshPromise=void 0,u}s.ok||(this.clearActiveLogin(),this.onUnauthenticated?.(),await this.handleTokenError(s));let a=await s.json();return await this.verifyTokens(a),this.getProfile()}async verifyTokens(r){let n=r.access_token;if(_o(n)){let i=gr(n);if(Date.now()>=i.exp*1e3)throw this.clearActiveLogin(),new m(bi);if(i.cid){if(i.cid!==this.clientId)throw this.clearActiveLogin(),new m(Wr)}else if(this.clientId&&i.client_id!==this.clientId)throw this.clearActiveLogin(),new m(Wr)}return this.setActiveLogin({accessToken:n,refreshToken:r.refresh_token,project:r.project,profile:r.profile})}checkSessionDetailsMatchLogin(r){return this.sessionDetails&&r?r.profile?.reference?.endsWith(this.sessionDetails.profile.id)??!1:!0}setupStorageListener(){try{window.addEventListener("storage",r=>{if(r.key===null)ge.reload();else if(r.key===this.storage.makeKey("activeLogin")){let n=r.oldValue?JSON.parse(r.oldValue):void 0,i=r.newValue?JSON.parse(r.newValue):void 0;n?.profile.reference!==i?.profile.reference||!this.checkSessionDetailsMatchLogin(i)?ge.reload():i?this.setAccessToken(i.accessToken,i.refreshToken):this.clear()}})}catch{}}getSubscriptionManager(){return this.subscriptionManager||(this.subscriptionManager=new xr(this,no(this.baseUrl,"/ws/subscriptions-r4"))),this.subscriptionManager}subscribeToCriteria(r,n){return this.getSubscriptionManager().addCriteria(r,n)}unsubscribeFromCriteria(r,n){this.subscriptionManager&&this.subscriptionManager.removeCriteria(r,n)}getMasterSubscriptionEmitter(){return this.getSubscriptionManager().getMasterEmitter()}};function lu(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}async function qo(t,e){let r=t.headers.get("content-location");if(r)return r;let n=t.headers.get("location");if(n)return n;if(dt(e)&&e.issue?.[0]?.diagnostics)return e.issue[0].diagnostics}function Wo(t){let e=t.entry?.map(r=>r.resource)??[];return Object.assign(e,{bundle:t})}function pu(t){return C(t)&&"data"in t&&"contentType"in t}function $o(t,e,r,n){return pu(t)?t:{data:t,filename:e,contentType:r,onProgress:n}}function fu(t){return C(t)&&"docDefinition"in t}function mu(t,e,r,n){return fu(t)?t:{docDefinition:t,filename:e,tableLayouts:r,fonts:n}}function hu(t){return t.status===429||t.status>=500}var Og={aws_ssm_parameter_store:"aws_ssm_parameter_store"};function Mg(t,e,r){let n=new Vn;Array.isArray(t)||(t=t.entry?.map(i=>i.resource)??[]);for(let i of t)n.addObservation(i);return n.summarize(e,r)}var Vn=class{constructor(e){c(this,"code");c(this,"unit");c(this,"sampling");c(this,"dataPoints");this.dataPoints=[],this.code=e?.code,this.unit=e?.unit,this.sampling=e?.sampling}addObservation(e){if(!this.code)this.code=e.code;else if(!gu(this.code,e.code))throw new Error("Observation does not match code of sampled data");e.valueQuantity?.value!==void 0?(this.checkUnit(e.valueQuantity),this.addData(e.valueQuantity.value)):e.valueInteger!==void 0?this.addData(e.valueInteger):e.valueSampledData?.data&&(this.checkUnit(e.valueSampledData.origin),this.addData(...Ho(e.valueSampledData)))}addData(...e){this.dataPoints.push(...e)}checkUnit(e){if(!this.unit)this.unit=e;else if(e.code&&e.system){if(this.unit.system!==e.system||this.unit.code!==e.code)throw new Error("Incorrect unit for Observation")}else if(e.unit&&this.unit.unit!==e.unit)throw new Error("Incorrect unit for Observation")}summarize(e,r){if(!this.code)throw new Error("Code is required for data points");let n=r(this.dataPoints);return{resourceType:"Observation",status:"final",code:e,valueQuantity:typeof n=="number"?{...this.unit,value:n}:n,component:[{code:this.code,valueSampledData:{origin:{...this.unit,value:0},dimensions:1,period:0,...this.sampling,data:yu(this.dataPoints,this.sampling)}}]}}};function gu(t,e){return!!t.coding?.some(r=>e.coding?.some(n=>r.system===n.system&&r.code===n.code))}function Ho(t){return t.data?.split(" ").map(e=>Number.parseFloat(e)*(t.factor??1)+(t.origin.value??0))??[]}function yu(t,e){if(t.length)return t.map(r=>(r-(e?.origin.value??0))/(e?.factor??1)).join(" ")}function Dg(t){let e=[],r=t.effectiveInstant??t.effectiveDateTime??t.effectivePeriod?.start,n=r?Date.parse(r).valueOf():0;t.valueSampledData&&e.push(...jo(t.valueSampledData,n,t));for(let i of t.component??v)i.valueSampledData&&e.push(...jo(i.valueSampledData,n,{...t,...i}));return e}function jo(t,e,r){let n=[],i=Ho(t),o=I(r);for(let s=0;s<i.length;s++){let a=i[s],u=e+Math.floor(s/t.dimensions)*t.period;n.push({...r,id:void 0,effectiveInstant:void 0,effectivePeriod:void 0,effectiveTiming:void 0,effectiveDateTime:u?new Date(u).toISOString():void 0,valueQuantity:{...t.origin,value:a},valueSampledData:void 0,component:void 0,derivedFrom:o?[...r.derivedFrom??[],{reference:o}]:r.derivedFrom})}return n}function _n({parentContext:t,path:e,elements:r,profileUrl:n,debugMode:i,accessPolicyResource:o}){if(e===t?.path)return;i??=t?.debugMode??!1,o??=t?.accessPolicyResource;let s=xu(e,r,t,!!i),a=rt(e,".",2)[1];s=vu(s,o,a),s=Su(s,o,a);let u=Object.create(null);for(let[l,f]of Object.entries(s))u[e+"."+l]=f;let d;if(t&&!t.isDefaultContext)d=t.getExtendedProps;else{let l=Object.create(null);d=f=>{let h=rt(f,".",2)[1];if(h){if(!l[h]){let b=Sr(h,o?.hiddenFields);l[h]={hidden:b,readonly:b||Sr(h,o?.readonlyFields)}}return l[h]}}}return{path:e,elements:s,elementsByPath:u,profileUrl:n??t?.profileUrl,debugMode:i,getExtendedProps:d,accessPolicyResource:o}}function xu(t,e,r,n){let i=Object.create(null);if(r)for(let[s,a]of Object.entries(r.elementsByPath)){let u=Ce(t,s);u!==void 0&&(i[u]=a)}let o=!1;if(e)for(let[s,a]of Object.entries(e))s in i||(i[s]=a,o=!0);return n&&console.assert(o,"Unnecessary ElementsContext; not using any newly provided elements"),i}function vu(t,e,r){if(!e?.hiddenFields?.length)return t;let n=r?r+".":"";return Object.fromEntries(Object.entries(t).filter(([i])=>!Sr(n+i,e.hiddenFields)))}function Su(t,e,r){if(!e?.readonlyFields?.length)return t;let n=Object.create(null),i=r?r+".":"";for(let[o,s]of Object.entries(t))Sr(i+o,e.readonlyFields)?n[o]={...s,readonly:!0}:n[o]=s;return n}function Sr(t,e){if(!e?.length)return!1;let r=t.split(".");for(let n=1;n<=r.length;n++){let i=r.slice(0,n).join(".");if(e.includes(i))return!0}return!1}function Go(t){return t.type!==void 0&&t.type.length>0}function Tu(t,e,r,n){let i=Ye(t,e.path,{profileUrl:n});if(i){let o=r.typeSchema?.elements??r.elements;return i.some(s=>an(s,e,r,o))??!1}return console.assert(!1,"getNestedProperty[%s] in isDiscriminatorComponentMatch missed",e.path),!1}function Qo(t,e,r,n){if(t)for(let i of e){let o={value:t,type:i.typeSchema?.type??i.type?.[0].code};if(r.every(s=>Tu(o,s,i,i.typeSchema?.url??n)))return i.name}}var Ct=class{constructor(e,r,n){c(this,"rootSchema");c(this,"visitor");c(this,"elementsContextStack");c(this,"sliceAllowList");if(e.type===void 0)throw new Error("schema must include a type");this.rootSchema=e;let i=_n({parentContext:void 0,path:this.rootSchema.type,elements:n??this.rootSchema.elements,profileUrl:this.rootSchema.name===this.rootSchema.type?void 0:this.rootSchema.url});if(i===void 0)throw new Error("Could not create root elements context");this.elementsContextStack=[i],this.visitor=r}get elementsContext(){return this.elementsContextStack.at(-1)}crawlElement(e,r,n){this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema);let i=Object.fromEntries(Object.entries(this.elementsContext.elements).filter(([o])=>o.startsWith(r)));this.crawlElementsImpl(i,n),this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlSlice(e,r,n){let i=this.prepareSlices(n.slices,n);if(!pe(i.slices))throw new Error(`cannot crawl slice ${r.name} since it has no type information`);this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema),this.sliceAllowList=[r],this.crawlSliceImpl(i.slices[0],r.path,i),this.sliceAllowList=void 0,this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlResource(){this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema),this.crawlElementsImpl(this.rootSchema.elements,this.rootSchema.type),this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlElementsImpl(e,r){let n=bu(e);for(let i of n)this.crawlElementNode(i,r)}crawlElementNode(e,r){let n=r+"."+e.key;this.visitor.onEnterElement&&this.visitor.onEnterElement(n,e.element,this.elementsContext);for(let i of e.children)this.crawlElementNode(i,r);pe(e.element?.slicing?.slices)&&this.crawlSlicingImpl(e.element.slicing,n),this.visitor.onExitElement&&this.visitor.onExitElement(n,e.element,this.elementsContext)}prepareSlices(e,r){let n=[];for(let o of e){if(!Go(o))continue;let s=o.type.find(a=>pe(a.profile))?.profile?.[0];if(pe(s)){let a=Ni(s);a&&(o.typeSchema=a)}n.push(o)}return{...r,slices:n}}crawlSlicingImpl(e,r){let n=this.prepareSlices(e.slices,e);for(let i of n.slices)(this.sliceAllowList===void 0||this.sliceAllowList.includes(i))&&this.crawlSliceImpl(i,r,n)}crawlSliceImpl(e,r,n){let i=e.typeSchema;i&&this.visitor.onEnterSchema&&this.visitor.onEnterSchema(i),this.visitor.onEnterSlice&&this.visitor.onEnterSlice(r,e,n);let o,s=i?.elements??e.elements;pe(s)&&(o=_n({path:r,parentContext:this.elementsContext,elements:s})),o&&this.elementsContextStack.push(o),this.crawlElementsImpl(s,r),o&&this.elementsContextStack.pop(),this.visitor.onExitSlice&&this.visitor.onExitSlice(r,e,n),i&&this.visitor.onExitSchema&&this.visitor.onExitSchema(i)}};function bu(t){let e=[];function r(o,s){return s.startsWith(o+".")}function n(o,s){for(let a of o.children)if(r(a.key,s.key)){n(a,s);return}o.children.push(s)}let i=Object.entries(t);i.sort((o,s)=>o[0].localeCompare(s[0]));for(let[o,s]of i){let a={key:o,element:s,children:[]},u=!1;for(let d of e)if(r(d.key,o)){n(d,a),u=!0;break}u||e.push(a)}return e}var Tr="__sliceName";function Kg(t,e){let r=new br(t,t.resourceType,"resource");return new Ct(e,r).crawlResource(),r.getDefaultValue()}function Yg(t,e,r){for(let[n,i]of Object.entries(e)){if(r===void 0||r===n){Er(t,n,i,e);continue}let o=Ce(r,n);o!==void 0&&Er(t,o,i,e)}return t}function Xg(t,e,r,n){let i=new br([{[Tr]:e.name}],e.path,"element");return new Ct(n,i).crawlSlice(t,e,r),i.getDefaultValue()[0]}var br=class{constructor(e,r,n){c(this,"rootValue");c(this,"schemaStack");c(this,"valueStack");this.schemaStack=[],this.valueStack=[],this.rootValue=fe(e),this.valueStack.splice(0,this.valueStack.length,{type:n,path:r,values:[this.rootValue]})}get schema(){return this.schemaStack.at(-1)}get value(){return this.valueStack.at(-1)}onEnterSchema(e){this.schemaStack.push(e)}onExitSchema(){this.schemaStack.pop()}onEnterElement(e,r,n){let i=this.value.values,o=this.value.path,s=Ce(o,e);if(s===void 0)throw new Error(`Expected ${e} to be prefixed by ${o}`);let a=[];for(let u of i){if(u===void 0)continue;let d=Ce(n.path,o),l=Array.isArray(u)?u:[u];for(let f of l){Eu(f,s,r,n.elements,d),Er(f,s,r,n.elements);let h=Ln(f,s,n.elements,d);h!==void 0&&a.push(h)}}this.valueStack.push({type:"element",path:e,values:a})}onExitElement(e,r,n){if(!this.valueStack.pop())throw new Error("Expected value context to exist when exiting element");let o=Ce(this.value.path,e);if(o===void 0)throw new Error(`Expected ${e} to be prefixed by ${this.value.path}`);let s=Ce(n.path,this.value.path);for(let a of this.value.values){let u=Ln(a,o,n.elements,s);if(Array.isArray(u))for(let d=u.length-1;d>=0;d--){let l=u[d];pe(l)||u.splice(d,1)}O(u)&&Nn(a,void 0,o,r)}}onEnterSlice(e,r,n){let i=this.value.values,o=[];for(let s of i)if(s!==void 0){let a=Array.isArray(s)?s:[s],u=this.getMatchingSliceValues(a,r,n);o.push(u)}this.valueStack.push({type:"slice",path:e,values:o})}getMatchingSliceValues(e,r,n){let i=[];for(let o of e)(o[Tr]??Qo(o,[r],n.discriminator,this.schema.url))===r.name&&i.push(o);for(let o=i.length;o<r.min;o++)if(yn(r.type[0].code)){let s=Object.create(null);i.push(s),e.push(s)}return i}onExitSlice(){let e=this.valueStack.pop();if(!e)throw new Error("Expected value context to exist in onExitSlice");for(let r of e.values)for(let n=r.length-1;n>=0;n--){let i=r[n];Tr in i&&delete i[Tr]}}getDefaultValue(){return this.rootValue}};function Eu(t,e,r,n,i){let o=Ln(t,e,n,i);r.min>0&&o===void 0&&yn(r.type[0].code)&&(r.isArray?Nn(t,[Object.create(null)],e,r):Nn(t,Object.create(null),e,r))}function Nn(t,e,r,n){if(r.includes("."))throw new Error("key cannot be nested");let i=r;if(r.includes("[x]")){let o=n.type[0].code;i=r.replace("[x]",B(o))}e===void 0?delete t[i]:t[i]=e}function Ln(t,e,r,n){let i=e.split("."),o=t,s;for(let a=0;a<i.length;a++){let u=i[a];if(u.includes("[x]")){let d=(n?n+".":"")+i.slice(0,a+1).join("."),f=r[d].type[0].code;u=u.replace("[x]",B(f))}if(a===i.length-1){Array.isArray(o)?s=o.map(d=>d[u]):s=o[u];continue}if(Array.isArray(o))o=o.map(d=>d[u]);else if(C(o)){if(o[u]===void 0)return;o=o[u]}else return}return s}function Er(t,e,r,n){if(!(r.fixed||r.pattern))return t;if(Array.isArray(t))return t.map(a=>Er(a,e,r,n));t==null&&(t=Object.create(null));let i=t,o=e.split("."),s=i;for(let a=0;a<o.length;a++){let u=o[a];if(u.includes("[x]")){let l=n[o.slice(0,a+1).join(".")].type[0].code;u=u.replace("[x]",B(l))}if(a===o.length-1){let d=Array.isArray(s)?s:[s];for(let l of d)r.fixed?l[u]??=r.fixed.value:r.pattern&&(l[u]=zo(l[u],r.pattern.value))}else{if(!(u in s)){let d=o.slice(0,a+1).join(".");s[u]=n[d].isArray?[Object.create(null)]:Object.create(null)}s=s[u]}}return i}function zo(t,e){if(Array.isArray(e)&&(Array.isArray(t)||t===void 0))return(t?.length??0)>0?t:fe(e);if(C(e)&&(C(t)&&!Array.isArray(t)||t===void 0)){let r=fe(t)??Object.create(null);for(let n of Object.keys(e))r[n]=zo(r[n],e[n]);return r}return t}function Jo(t,e){if(!t.group)throw new m(w("ConceptMap does not specify a mapping group","ConceptMap.group"));let r=Ru(e),n=Cu(r,e.targetsystem?t.group.filter(o=>o.target===e.targetsystem):t.group),i=n.length>0;return{result:i,match:i?n:void 0}}function Ru(t){let e=Object.create(null);if(t.code&&!t.coding&&!t.codeableConcept){if(!t.system)throw new m(w("System parameter must be provided with code"));e[t.system]=[t.code]}else if(t.coding&&!t.code&&!t.codeableConcept)t.coding.code&&(e[t.coding.system??""]=[t.coding.code]);else if(t.codeableConcept&&!t.code&&!t.coding)for(let{system:r,code:n}of t.codeableConcept.coding??v)n&&(e[r??""]=be(e[r??""],n));else throw t.code||t.coding||t.codeableConcept?new m(w("Ambiguous input: multiple source codings provided")):new m(w("Source Coding (system + code) must be specified"));return e}function Cu(t,e){let r=[];for(let[n,i]of Object.entries(t))for(let o of e.filter(s=>(s.source??"")===n)){let s=o.element?.filter(a=>i.includes(a.code)).flatMap(a=>a.target?.map(u=>({equivalence:u.equivalence,concept:{system:o.target,code:u.code,display:u.display}}))??[]);s?.length||(s=Pu(i,o)),s&&r.push(...s)}return r}function Pu(t,e){switch(e.unmapped?.mode){case"provided":return t.map(r=>({equivalence:"equal",concept:{system:e.target,code:r}}));case"fixed":return[{equivalence:"equivalent",concept:{system:e.target,code:e.unmapped.code,display:e.unmapped.display}}];default:return}}var Au=[...xt,"->","<<",">>","=="];function Ko(t){return new Oe(t,yt,Au).tokenize()}var wu={"-":"disjoint","==":"equal"},Fn=class{constructor(e){c(this,"parser");c(this,"structureMap",{resourceType:"StructureMap",status:"active"});this.parser=e}parse(){for(;this.parser.hasMore();){let e=this.parser.peek()?.value;switch(e){case"map":this.parseMap();break;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}parseMap(){this.parser.consume("Symbol","map"),this.structureMap.url=this.parser.consume("String").value,this.parser.consume("="),this.structureMap.name=this.parser.consume().value}parseUses(){this.parser.consume("Symbol","uses");let e={};e.url=this.parser.consume("String").value,this.parser.peek()?.value==="alias"&&(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(){let e={};this.parser.consume("Symbol","group"),e.name=this.parser.consume("Symbol").value,e.input=this.parseParameters(),this.parser.peek()?.value==="extends"&&(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(){let 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(){let 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(){let e=[];for(this.parser.consume("{");this.parser.hasMore()&&this.parser.peek()?.value!=="}";)e.push(this.parseRule());return this.parser.consume("}"),e}parseRule(){let e={source:this.parseRuleSources()};return this.parser.peek()?.value==="->"&&(this.parser.consume("->"),e.target=this.parseRuleTargets()),this.parser.peek()?.value==="then"&&(this.parser.consume("Symbol","then"),this.parser.peek()?.id==="{"?e.rule=this.parseRules():e.dependent=this.parseRuleDependents()),this.parser.peek()?.id==="String"?e.name=this.parser.consume().value:e.name=e.source?.[0]?.element,this.parser.consume(";"),e}parseRuleSources(){this.parser.hasMore()&&this.parser.peek()?.value==="for"&&this.parser.consume("Symbol","for");let e=[this.parseRuleSource()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleSource());return e}parseRuleSource(){let e={},n=this.parseRuleContext().split(".");if(e.context=n[0],e.element=n[1],this.parser.hasMore()&&this.parser.peek()?.value===":"&&(this.parser.consume(":"),e.type=this.parser.consume().value),this.parser.hasMore()&&this.parser.peek()?.value==="default"&&(this.parser.consume("Symbol","default"),e.defaultValueString=this.parser.consume("String").value),(this.parser.peek()?.value==="first"||this.parser.peek()?.value==="not_first"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="not_last"||this.parser.peek()?.value==="only_one")&&(e.listMode=this.parser.consume().value),this.parser.peek()?.value==="as"&&(this.parser.consume("Symbol","as"),e.variable=this.parser.consume().value),this.parser.peek()?.value==="log"&&(this.parser.consume("Symbol","log"),e.logMessage=this.parser.consume().value),this.parser.peek()?.value==="where"){this.parser.consume("Symbol","where");let i=this.parser.consumeAndParse(T.Arrow);e.condition=i.toString()}if(this.parser.peek()?.value==="check"){this.parser.consume("Symbol","check");let i=this.parser.consumeAndParse(T.Arrow);e.check=i.toString()}return e}parseRuleTargets(){let e=[this.parseRuleTarget()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleTarget());return e}parseRuleTarget(){let e={},n=this.parseRuleContext().split(".");return e.contextType="variable",e.context=n[0],e.element=n[1],this.parser.peek()?.value==="="&&(this.parser.consume("="),this.parseRuleTargetTransform(e)),this.parser.peek()?.value==="as"&&(this.parser.consume("Symbol","as"),e.variable=this.parser.consume().value),this.parser.peek()?.value==="share"&&(this.parser.consume("Symbol","share"),e.listMode=["share"],this.parser.consume("Symbol")),(this.parser.peek()?.value==="first"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="collate")&&(e.listMode=[this.parser.consume().value]),e}parseRuleTargetTransform(e){let r=this.parser.consumeAndParse(T.As);r instanceof ae?(e.transform=r.name,e.parameter=r.args?.map(Yo)):r instanceof J||r instanceof U?(e.transform="copy",e.parameter=[Yo(r)]):(e.transform="evaluate",e.parameter=[{valueString:r.toString()}])}parseRuleContext(){let e=this.parser.consume().value;for(;this.parser.peek()?.value===".";)this.parser.consume("."),e+="."+this.parser.consume().value;return e}parseRuleDependents(){let e=this.parser.consumeAndParse(T.Arrow);return[{name:e.name,variable:e.args.map(r=>r.name)}]}parseConceptMap(){this.parser.consume("Symbol","conceptmap");let e={resourceType:"ConceptMap",status:"active",url:"#"+this.parser.consume("String").value};this.parser.consume("{");let r={},n=this.parser.peek()?.value;for(;n!=="}";)n==="prefix"?this.parseConceptMapPrefix(r):this.parseConceptMapRule(e,r),n=this.parser.peek()?.value;this.parser.consume("}"),this.structureMap.contained||(this.structureMap.contained=[]),this.structureMap.contained.push(e)}parseConceptMapPrefix(e){this.parser.consume("Symbol","prefix");let r=this.parser.consume().value;this.parser.consume("=");let n=this.parser.consume().value;e[r]=n}parseConceptMapRule(e,r){let n=this.parser.consume().value,i=r[n];this.parser.consume(":");let o=this.parser.consume().value,s=wu[this.parser.consume().value],a=this.parser.consume().value,u=r[a];this.parser.consume(":");let d=this.parser.consume().value,l=e?.group?.find(f=>f.source===i&&f.target===u);l||(l={source:i,target:u,element:[]},e.group||(e.group=[]),e.group.push(l)),l.element||(l.element=[]),l.element.push({code:o,target:[{code:d,equivalence:s}]})}};function Yo(t){if(t instanceof U)return{valueId:t.name};if(t instanceof J)return Ou(t);throw new Error(`Unknown parameter atom type: ${t.constructor.name} (${t.toString()})`)}function Ou(t){switch(t.value.type){case"boolean":return{valueBoolean:t.value.value};case"decimal":return{valueDecimal:t.value.value};case"integer":return{valueInteger:t.value.value};case"dateTime":case"string":return{valueString:t.value.value};default:throw new Error("Unknown target literal type: "+t.value.type)}}var Iu=vt().registerInfix("->",{precedence:T.Arrow}).registerInfix(";",{precedence:T.Semicolon});function dy(t){let e=Iu.construct(Ko(t));return e.removeComments(),new Fn(e).parse()}var Un=class{constructor(e=[]){c(this,"resources");this.resources=e}get(e,r){let n=[];for(let i of this.resources)i.resourceType===e&&i.url&&this.matchesUrl(i.url,r)&&n.push(i);return n}matchesUrl(e,r){if(r.includes("*")){let n=r.split("*");return e.startsWith(n[0])&&e.endsWith(n[1])}else return e===r}};function vy(t,e,r=new Un){return ku({root:t,transformMaps:r},t,e)}function ku(t,e,r){return Mu(t,e),Zo(t,e),qn(t,e.group[0],r)}function Mu(t,e){let r=Cr(t);if(r&&e.import)for(let n of e.import){let i=r.get("StructureMap",n);for(let o of i)Zo(t,o)}}function Zo(t,e){let r=Cr(t);if(r&&e.contained)for(let n of e.contained)(n.resourceType==="StructureMap"||n.resourceType==="ConceptMap")&&r.resources.push(n);for(let n of e.group??v)Rr(t,n.name,{type:"StructureMapGroup",value:n})}function qn(t,e,r){let n=[],i=[];for(let d of e.input)d.mode==="source"&&n.push(d),d.mode==="target"&&i.push(d);if(n.length===0)throw new Error("Missing source definitions");if(i.length===0)throw new Error("Missing target definitions");if(r.length<n.length)throw new Error(`Not enough arguments (got ${r.length}, min ${n.length})`);if(r.length>n.length+i.length)throw new Error(`Too many arguments (got ${r.length}, max ${n.length+i.length})`);let o={},s=[],a=0;for(let d of n)Pt(o,d.name,r[a++]);for(let d of i){let l=r[a++]??{type:d.type??"BackboneElement",value:{}};Pt(o,d.name,l),s.push(l)}let u={root:t.root,parent:t,variables:o};for(let d of e.rule??v)es(u,d);return s}function es(t,e){e.source&&ts(t,e,0)}function ts(t,e,r){let n=e.source[r];for(let i of Nu(t,n))Rr(t,"_",i),n.variable&&Rr(t,n.variable,i),r<e.source.length-1?ts(t,e,r+1):Du(t,e)}function Du(t,e){if(!Vu(t,e)){for(let r of e.target??v)rs(t,r);for(let r of e.rule??v)es(t,r);for(let r of e.dependent??v)Gu(t,r)}}function Vu(t,e){if(e.target?.length!==1||e.target[0].transform||e.rule||e.dependent)return!1;let r=Ie(t,"_");if(Array.isArray(r)&&(r=r[0]),!r)return!1;let n=_u(t,r);if(!n)return rs(t,{...e.target[0],transform:"copy",parameter:[{valueId:"_"}]}),!0;let i=e.target[0],o=Ie(t,i.context),s=o.value[i.element],a=is(o,i.element)||Array.isArray(s),u={root:t.root,parent:t,variables:{}},d=qn(u,n,[r]);return ns(t,i,o,d,a,s),!0}function _u(t,e){let r=t;for(;r;){if(r.variables){for(let n of Object.values(r.variables))for(let i of Bn(n))if(i.type==="StructureMapGroup"){let o=i.value;if((o.typeMode==="types"||o.typeMode==="type-and-types")&&o.input.length===2&&o.input[0].mode==="source"&&o.input[0].type===e.type&&o.input[1].mode==="target")return o}}r=r.parent}}function Nu(t,e){let r=Ie(t,e.context);if(!r)return[];let n=e.element;if(!n)return[r];let i=k(n,[r]);if(!i||i.length===0)return[];if(e.condition&&!Xo(r,{[e.variable]:i[0]},e.condition))return[];if(e.check&&!Xo(r,{[e.variable]:i[0]},e.check))throw new Error("Check failed: "+e.check);return e.listMode&&(i=Lu(e,i)),i}function Xo(t,e,r){return G(k(r,[t],e))}function Lu(t,e){switch(t.listMode){case"first":return[e[0]];case"not_first":return e.slice(1);case"last":return[e.at(-1)];case"not_last":return e.slice(0,e.length-1);case"only_one":if(e.length!==1)throw new Error("Expected only one value");break}return e}function rs(t,e){let r=Ie(t,e.context);if(!r)throw new Error("Target not found: "+e.context);let n=r.value[e.element],i,o=is(r,e.element)||Array.isArray(n);if(e.transform)switch(e.transform){case"append":i=Fu(t,e);break;case"cast":i=Uu(t,e);break;case"cc":i=Bu(t,e);break;case"copy":i=qu(t,e);break;case"create":i=Wu(t,e);break;case"evaluate":i=$u(t,e);break;case"translate":i=ju(t,e);break;case"truncate":i=Hu(t,e);break;case"uuid":i=[{type:"string",value:ce()}];break;default:throw new Error(`Unsupported transform: ${e.transform}`)}else{let s=os(r,e.element)?.type,a=s?.length===1?s[0].code:void 0;o||n===void 0?i=[a?{type:a,value:{}}:E({})]:i=[a?{type:a,value:n}:E(n)]}ns(t,e,r,i,o,n)}function ns(t,e,r,n,i,o){if(n.length!==0){if(i){o||(o=[],Pt(r.value,e.element,o));for(let s of n)o.push(s.value)}else Pt(r.value,e.element,n[0].value);e.variable&&Rr(t,e.variable,Qu(n))}}function is(t,e){return os(t,e)?.isArray}function os(t,e){return Fe(t.type)?.elements?.[e]}function Fu(t,e){let r=H(t,e.parameter?.[0])?.[0]?.value,n=H(t,e.parameter?.[1])?.[0]?.value;return[{type:"string",value:(r??"").toString()+(n??"").toString()}]}function Uu(t,e){let r=H(t,e.parameter?.[0])?.[0];return H(t,e.parameter?.[1])?.[0]?.value==="string"?[{type:"string",value:r?.value?.toString()}]:[r]}function Bu(t,e){let r=e.parameter;if(r.length===2){let n=H(t,r[0])?.[0]?.value,i=H(t,r[1])?.[0]?.value;return[{type:"CodeableConcept",value:{coding:[{system:n,code:i}]}}]}else return[{type:"CodeableConcept",value:{text:H(t,r[0])?.[0]?.value}}]}function qu(t,e){return e.parameter.flatMap(r=>H(t,r))}function Wu(t,e){let r={};return e.parameter&&e.parameter.length>0&&(r.resourceType=H(t,e.parameter?.[0])?.[0]?.value),[E(r)]}function $u(t,e){let n=H(t,e.parameter?.[0])[0].value;return k(n,[],ss(t))}function ju(t,e){let r=e.parameter.flatMap(u=>H(t,u)),n=r[0].value,i=r[1].value,s=Cr(t)?.get("ConceptMap",i)[0];if(!s)throw new Error("ConceptMap not found: "+i);let a=Jo(s,{system:s.group?.[0]?.source,code:n});return[E(a.match?.[0]?.concept?.code)]}function Hu(t,e){let r=H(t,e.parameter?.[0])?.[0],n=H(t,e.parameter?.[1])?.[0]?.value;return r.type==="string"?[{type:"string",value:r.value.substring(0,n)}]:[r]}function Gu(t,e){let r=Ie(t,e.name);if(!r)throw new Error("Dependent group not found: "+e.name);let n=e.variable,i=[];for(let s of n){let a=Ie(t,s);if(!a)throw new Error("Dependent variable not found: "+s);i.push(a)}let o={root:t.root,parent:t,variables:{}};qn(o,r.value,i)}function Cr(t){if(t.transformMaps)return t.transformMaps;if(t.parent)return Cr(t.parent)}function H(t,e){let n=_({type:"StructureMapGroupRuleTargetParameter",value:e},"value");if(!n)throw new Error("Missing target parameter: "+JSON.stringify(e));if(n=Bn(n),n.length===1&&n[0].type==="id"){let i=Ie(t,n[0].value);if(!i)throw new Error("Variable not found: "+n[0].value);return Bn(i)}return n}function Ie(t,e){let r=t.variables?.[e];if(r)return r;if(t.parent)return Ie(t.parent,e)}function ss(t,e={}){if(t.parent&&ss(t.parent,e),t.variables)for(let[r,n]of Object.entries(t.variables))e[r]=n,e["%"+r]=n;return e}function Rr(t,e,r){t.variables||(t.variables={}),Pt(t.variables,e,r)}function Pt(t,e,r){if(e==="__proto__"||e==="constructor"||e==="prototype")throw new Error("Invalid key: "+e);t[e]=r}function Bn(t){return Array.isArray(t)?t:[t]}function Qu(t){return t.length===1?t[0]:t}var Qe=Object.prototype.hasOwnProperty;function At(t){return t===void 0?"undefined":t===null?"null":Array.isArray(t)?"array":typeof t}function zu(t){return t&&typeof t=="object"}function at(t){if(!zu(t))return t;if(t.constructor===Array){let r=t.length,n=new Array(r);for(let i=0;i<r;i++)n[i]=at(t[i]);return n}if(t.constructor===Date)return new Date(+t);let e={};for(let r in t)Qe.call(t,r)&&(e[r]=at(t[r]));return e}function cs({op:t}){return t==="remove"||t==="replace"||t==="copy"||t==="move"}function as(t,e){let r=[];for(let n in t)Qe.call(t,n)&&t[n]!==void 0&&!(Qe.call(e,n)&&e[n]!==void 0)&&r.push(n);return r}function Ry(t){let e=t.length,r={};for(let n=0;n<e;n++){let i=t[n];for(let o in i)Qe.call(i,o)&&i[o]!==void 0&&(r[o]=(r[o]||0)+1)}for(let n in r)r[n]<e&&delete r[n];return Object.keys(r)}function Ju(t,e){let r=[];for(let n in t)Qe.call(t,n)&&t[n]!==void 0&&Qe.call(e,n)&&e[n]!==void 0&&r.push(n);return r}function Ku(t){return t.op==="add"}function Yu(t){return t.op==="remove"}function Wn(t,e){return{operations:t.operations.concat(e),cost:t.cost+1}}function Xu(t,e,r,n=ke){let i=Math.max(t.length,e.length),o=new Map([[0,{operations:[],cost:0}]]);function s(f,h){let b=f*i+h,P=o.get(b);if(P===void 0){if(f>0&&h>0&&!n(t[f-1],e[h-1],r.add(String(f-1))).length)P=s(f-1,h-1);else{let ve=[];if(f>0){let De=s(f-1,h),Ve={op:"remove",index:f-1};ve.push(Wn(De,Ve))}if(h>0){let De=s(f,h-1),Ve={op:"add",index:f-1,value:e[h-1]};ve.push(Wn(De,Ve))}if(f>0&&h>0){let De=s(f-1,h-1),Ve={op:"replace",index:f-1,original:t[f-1],value:e[h-1]};ve.push(Wn(De,Ve))}P=ve.sort((De,Ve)=>De.cost-Ve.cost)[0]}o.set(b,P)}return P}let a=isNaN(t.length)||t.length<=0?0:t.length,u=isNaN(e.length)||e.length<=0?0:e.length,d=s(a,u).operations,[l]=d.reduce(([f,h],b)=>{if(Ku(b)){let P=b.index+1+h,ve=P<a+h?String(P):"-",di={op:b.op,path:r.add(ve).toString(),value:b.value};return[f.concat(di),h+1]}else if(Yu(b)){let P={op:b.op,path:r.add(String(b.index+h)).toString()};return[f.concat(P),h-1]}else{let P=r.add(String(b.index+h)),ve=n(b.original,b.value,P);return[f.concat(...ve),h]}},[[],0]);return l}function Zu(t,e,r,n=ke){let i=[];return as(t,e).forEach(o=>{i.push({op:"remove",path:r.add(o).toString()})}),as(e,t).forEach(o=>{i.push({op:"add",path:r.add(o).toString(),value:e[o]})}),Ju(t,e).forEach(o=>{i.push(...n(t[o],e[o],r.add(o)))}),i}function ke(t,e,r,n=ke){if(t===e)return[];let i=At(t),o=At(e);return i==="array"&&o==="array"?Xu(t,e,r,n):i==="object"&&o==="object"?Zu(t,e,r,n):[{op:"replace",path:r.toString(),value:e}]}function ed(t){return t.replace(/~1/g,"/").replace(/~0/g,"~")}function td(t){return t.replace(/~/g,"~0").replace(/\//g,"~1")}var M=class t{constructor(e=[""]){c(this,"tokens");this.tokens=e}static fromJSON(e){let r=e.split("/").map(ed);if(r[0]!=="")throw new Error(`Invalid JSON Pointer: ${e}`);return new t(r)}toString(){return this.tokens.map(td).join("/")}evaluate(e){let r=null,n="",i=e;for(let o=1,s=this.tokens.length;o<s;o++){if(r=i,n=this.tokens[o],n==="__proto__"||n==="constructor"||n==="prototype")throw new Error("Invalid path: "+this.toString());if(r!=null&&(typeof r=="object"||typeof r=="function")&&!Object.hasOwn(r,n)&&n in r)throw new Error("Invalid inherited key: "+n);i=r?.[n]}return{parent:r,key:n,value:i}}get(e){return this.evaluate(e).value}set(e,r){let n=this.evaluate(e);n.parent&&(n.parent[n.key]=r)}push(e){this.tokens.push(e)}add(e){let r=this.tokens.concat(String(e));return new t(r)}parent(){let e=this.tokens.length>1?this.tokens.slice(0,-1):[""];return new t(e)}};var Y=class extends Error{constructor(r){super(`Value required at path: ${r}`);c(this,"path");this.path=r,this.name="MissingError"}},$n=class extends Error{constructor(r,n){super(`Test failed: ${r} != ${n}`);c(this,"actual");c(this,"expected");this.actual=r,this.expected=n,this.name="TestError"}};function Hn(t,e,r){if(Array.isArray(t))if(e==="-")t.push(r);else{let n=parseInt(e,10);t.splice(n,0,r)}else t[e]=r}function us(t,e){if(Array.isArray(t)){let r=parseInt(e,10);t.splice(r,1)}else delete t[e]}function Pr(t,e,r){let n=M.fromJSON(e.path);if(r?.implicitArrayCreation&&n.tokens[n.tokens.length-1]==="-"){let o=n.parent().evaluate(t);o.value===void 0&&At(o.parent)==="object"&&(o.parent[o.key]=[])}let i=n.evaluate(t);return i.parent===void 0?new Y(e.path):r?.implicitArrayCreation&&i.key==="-"&&!Array.isArray(i.parent)?new Y(e.path):(Hn(i.parent,i.key,at(e.value)),null)}function Gn(t,e,r){let n=M.fromJSON(e.path).evaluate(t);return n.value===void 0?new Y(e.path):(us(n.parent,n.key),null)}function Qn(t,e,r){let n=M.fromJSON(e.path).evaluate(t);if(n.parent===null)return new Y(e.path);if(Array.isArray(n.parent)){if(parseInt(n.key,10)>=n.parent.length)return new Y(e.path)}else if(n.value===void 0)return new Y(e.path);return n.parent[n.key]=at(e.value),null}function zn(t,e,r){let n=M.fromJSON(e.from).evaluate(t);if(n.value===void 0)return new Y(e.from);let i=M.fromJSON(e.path).evaluate(t);return i.parent===void 0?new Y(e.path):(us(n.parent,n.key),Hn(i.parent,i.key,n.value),null)}function rd(t,e,r){let n=M.fromJSON(e.from).evaluate(t);if(n.value===void 0)return new Y(e.from);let i=M.fromJSON(e.path).evaluate(t);return i.parent===void 0?new Y(e.path):(Hn(i.parent,i.key,at(n.value)),null)}function nd(t,e,r){let n=M.fromJSON(e.path).evaluate(t);return ke(n.value,e.value,new M).length?new $n(n.value,e.value):null}var jn=class extends Error{constructor(r){super(`Invalid operation: ${r.op}`);c(this,"operation");this.operation=r,this.name="InvalidOperationError"}};function ds(t,e,r){switch(e.op){case"add":return Pr(t,e,r);case"remove":return Gn(t,e,r);case"replace":return Qn(t,e,r);case"move":return zn(t,e,r);case"copy":return rd(t,e,r);case"test":return nd(t,e,r);default:return new jn(e)}}function Ny(t,e,r){return e.map(n=>ds(t,n,r))}function id(t){function e(r,n,i){let o=t(r,n,i);return Array.isArray(o)?o:ke(r,n,i,e)}return e}function Ly(t,e,r){let n=new M;return(r?id(r):ke)(t,e,n)}function ls(t,e){let r=M.fromJSON(e).evaluate(t);if(r!==void 0)return{op:"test",path:e,value:r.value}}function Fy(t,e){let r=new Array;return e.filter(cs).forEach(n=>{let i=ls(t,n.path);if(i&&r.push(i),"from"in n){let o=ls(t,n.from);o&&r.push(o)}}),r}var od=Object.freeze({implicitArrayCreation:!0});function Ky(t){let e=[];for(let r of t.parameter??[]){if(r.name!=="operation")continue;let n={};for(let i of r.part??[])switch(i.name){case"type":n.type=i.valueCode;break;case"path":n.path=i.valueString;break;case"name":n.name=i.valueString;break;case"index":n.index=i.valueInteger;break;case"source":n.source=i.valueInteger;break;case"destination":n.destination=i.valueInteger;break;case"value":n.value=_({type:"ParametersParameter",value:i},"value");break}e.push(n)}return e}function Yy(t,e){for(let r of e){let n=k(r.path,[t]);switch(r.type){case"add":{let i=Jn(n,r);if(!C(i?.value))throw new Error(`Failed to resolve base object for add operation at path '${r.path}'`);if(wt(i,r),!r.name)throw new Error(`No name present for add operation at path '${r.path}'`);let o=M.fromJSON(Xe(i.path));o.push(r.name),fo(t.type,`${i.path}.${r.name}`)?.isArray&&o.push("-"),Pr(t.value,{op:"add",path:o.toString(),value:r.value.value},od);break}case"replace":{let i=Jn(n,r);if(!i)throw new Error(`Failed to resolve target value for replace operation at path '${r.path}'`);wt(i,r),Qn(t.value,{op:"replace",path:Xe(i.path),value:r.value.value});break}case"move":{let i=ps(n,r),o=M.fromJSON(Xe(i));zn(t.value,{op:"move",from:o.add(r.source.toString()).toString(),path:o.add(r.destination.toString()).toString()});break}case"insert":{if(typeof r.index!="number")throw new Error(`No index present for insert operation at path '${r.path}'`);let i=ps(n,r),o=M.fromJSON(Xe(i));o.push(r.index.toString()),Pr(t.value,{op:"add",path:o.toString(),value:r.value.value});break}case"delete":{let i=Jn(n,r);i&&(wt(i,r),Gn(t.value,{op:"remove",path:Xe(i.path)}))}}}}function wt(t,e){if(!("path"in t))throw new Error(`Cannot resolve pointer for value at path '${e.path}'`)}function Jn(t,e){if(t.length>1)throw new Error(`Resolved multiple base values for ${e.type} operation at path '${e.path}'`);return t[0]}var sd=/\[(?<index>\d+)\]$/;function Kn(t){let e=sd.exec(t)?.groups?.index;return e?Number.parseInt(e,10):-1}function ps(t,e){if(Kn(e.path)!==-1)throw new Error(`Failed to resolve base collection for ${e.type} operation at path '${e.path}'`);if(!t.length)throw new Error(`Failed to resolve base for ${e.type} operation at path '${e.path}'`);wt(t[0],e);let r=t[0].path;if(Kn(r)!==0)throw new Error(`Failed to resolve base collection for ${e.type} operation at path '${e.path}'`);let n=r.slice(0,r.lastIndexOf("["));for(let i=1;i<t.length;i++){let o=t[i];if(wt(o,e),!o.path.startsWith(n))throw new Error(`Cannot patch heterogeneous collection for ${e.type} operation at path '${e.path}'`);if(Kn(o.path)!==i)throw new Error(`Cannot patch misordered collection for ${e.type} operation at path '${e.path}'`)}if("index"in e&&!Yn(e.index,t))throw new Error(`Index out of bounds for ${e.type} operation: ${e.index}`);if("source"in e&&!Yn(e.source,t))throw new Error(`Source index out of bounds for ${e.type} operation: ${e.source}`);if("destination"in e&&!Yn(e.destination,t))throw new Error(`Destination index out of bounds for ${e.type} operation: ${e.destination}`);return n}function Yn(t,e){return t>=0&&t<=e.length}var ad=" ".repeat(2),fs=class{constructor(e=ad,r=!0){c(this,"indent");c(this,"b");c(this,"indentCount");this.indent=e,this.b=[],this.indentCount=0,r&&(this.appendNoWrap("// SPDX-FileCopyrightText: Copyright Orangebot, Inc. and Medplum contributors"),this.appendNoWrap("// SPDX-License-Identifier: Apache-2.0"),this.appendNoWrap("/*"),this.appendNoWrap(" * This is a generated file"),this.appendNoWrap(" * Do not edit manually."),this.appendNoWrap(" */"),this.newLine())}newLine(){this.b.push(`
|
|
45
45
|
`)}appendNoWrap(e){this.b.push(this.indent.repeat(this.indentCount)),this.b.push(e),this.b.push(`
|
|
46
46
|
`)}append(e){let r=this.indent.repeat(this.indentCount)+e;if(r.length<160)this.b.push(r),this.b.push(`
|
|
47
|
-
`);else{let n=!0;for(let i of
|
|
47
|
+
`);else{let n=!0;for(let i of cd(r,120-this.indent.length*this.indentCount))n?this.b.push(this.indent.repeat(this.indentCount)):this.b.push(this.indent.repeat(this.indentCount+2)),this.b.push(i.trim()),this.b.push(`
|
|
48
48
|
`),n=!1}}toString(){return this.b.join("").replaceAll(`
|
|
49
49
|
|
|
50
50
|
|
|
51
51
|
`,`
|
|
52
52
|
|
|
53
|
-
`)}};function rd(t,e){let r=[],n=[],i=0;return t.split(" ").forEach(function(o){i+o.length>e&&(r.push(n.join(" ").trim()),n=[],i=0),i+=o.length+1,n.push(o)}),n.length>0&&r.push(n.join(" ").trim()),r}var nd=[...yt,"eq","ne","co"];function us(t){return new we(t,gt,nd,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var Ar=class{constructor(e,r,n){c(this,"path");c(this,"operator");c(this,"value");this.path=e,this.operator=r,this.value=n}},Or=class{constructor(e){c(this,"child");this.child=e}},Ir=class{constructor(e,r,n){c(this,"keyword");c(this,"left");c(this,"right");this.keyword=e,this.left=r,this.right=n}};var id={eq:g.EXACT,ne:g.NOT_EQUALS,co:g.CONTAINS,sw:g.STARTS_WITH,ew:void 0,gt:g.GREATER_THAN,lt:g.LESS_THAN,ge:g.GREATER_THAN_OR_EQUALS,le:g.LESS_THAN_OR_EQUALS,ap:g.APPROXIMATELY,sa:g.STARTS_AFTER,eb:g.ENDS_BEFORE,pr:g.PRESENT,po:void 0,ss:void 0,sb:void 0,in:g.IN,ni:g.NOT_IN,re:g.EQUALS,identifier:g.IDENTIFIER};function od(t){let e=id[t];if(!e)throw new m(A("Invalid operator: "+t));return e}var Yn=class{constructor(e){c(this,"parser");this.parser=e}parse(){let e;this.parser.peek()?.value==="("?(this.parser.consume("("),e=this.parse(),this.parser.consume(")")):this.parser.peek()?.value==="not"?(this.parser.consume("Symbol","not"),this.parser.consume("("),e=new Or(this.parse()),this.parser.consume(")")):e=new Ar(this.parser.consume("Symbol").value,od(this.parser.consume("Symbol").value),this.parser.consume().value);let r=this.parser.peek()?.value;return r==="and"||r==="or"?(this.parser.consume("Symbol",r),new Ir(r,e,this.parse())):e}},sd=xt();function rx(t){let e=sd.construct(us(t));e.removeComments();let r=new Yn(e).parse(),n=e.peek();if(n)throw new m(A("Unexpected token in _filter expression: "+n.value));return r}var ad={AA:"AA",AE:"AE",AR:"AR",CA:"CA",CE:"CE",CR:"CR"};function cd(t){return t!==void 0&&Object.hasOwn(ad,t)}var ud={AA:"OK",AE:"Application Error",AR:"Application Reject",CA:"Commit Accept",CE:"Commit Error",CR:"Commit Reject"},Ie=class{constructor(e="\r",r="|",n="^",i="~",o="\\",s="&"){c(this,"segmentSeparator");c(this,"fieldSeparator");c(this,"componentSeparator");c(this,"repetitionSeparator");c(this,"escapeCharacter");c(this,"subcomponentSeparator");this.segmentSeparator=e,this.fieldSeparator=r,this.componentSeparator=n,this.repetitionSeparator=i,this.escapeCharacter=o,this.subcomponentSeparator=s}getMsh1(){return this.fieldSeparator}getMsh2(){return this.componentSeparator+this.repetitionSeparator+this.escapeCharacter+this.subcomponentSeparator}},ds=class t{constructor(e,r=new Ie){c(this,"context");c(this,"_segments");c(this,"segmentsByName");c(this,"cachedString");c(this,"allSegmentsParsed");this.context=r,this._segments=e,this.segmentsByName=ls(e),this.allSegmentsParsed=e.every(n=>typeof n!="string"),this.bindSegments()}get segments(){if(!this.allSegmentsParsed){for(let e=0;e<this._segments.length;e++)typeof this._segments[e]=="string"&&this.parseSegment(e);this.allSegmentsParsed=!0}return this._segments}get header(){let e=this.parseSegment(0);if(!e)throw new Error("Can't get header before first segment added");return e}get(e){return this.getSegment(e)}getAll(e){return this.getAllSegments(e)}getSegment(e){if(typeof e=="number")return this.parseSegment(e);let r=this.segmentsByName.get(e);if(r?.length)return this.parseSegment(r[0])}getAllSegments(e){let r=this.segmentsByName.get(e);return r?r.map(n=>this.parseSegment(n)):[]}parseSegment(e){let r=this._segments[e];if(r===void 0)return;if(typeof r!="string")return r;let n=At.parse(r,this.context);return n.onModified=()=>{this.cachedString=void 0},this._segments[e]=n,n}toString(){return this.cachedString??=this._segments.map(e=>typeof e=="string"?e:e.toString()).join(this.context.segmentSeparator),this.cachedString}getAckType(){let e=this.getSegment("MSA")?.getField(1)?.toString()?.toUpperCase();return cd(e)?e:void 0}buildAck(e){let r=new Date,n=this.getSegment("MSH"),i=n?.getField(3)?.toString()??"",o=n?.getField(4)?.toString()??"",s=n?.getField(5)?.toString()??"",a=n?.getField(6)?.toString()??"",u=n?.getField(10)?.toString()??"",d=n?.getField(12)?.toString()??"2.5.1",l=e?.ackCode??"AA";return new t([new At(["MSH",this.context.getMsh2(),s,a,i,o,ld(r),"",this.buildAckMessageType(n),r.getTime().toString(),"P",d],this.context),new At(["MSA",l,u,ud[l]],this.context),...e?.errSegment?[e.errSegment]:[]])}buildAckMessageType(e){let r=e?.getField(9),n=r?.getComponent(2),i=r?.getComponent(3),o="ACK";return n&&i?o=`ACK^${n}^ACK`:n&&(o=`ACK^${n}`),o}static parse(e){if(!e.startsWith("MSH")){let i=new Error("Invalid HL7 message");throw i.type="entity.parse.failed",i}let r=new Ie("\r",e.charAt(3),e.charAt(4),e.charAt(5),e.charAt(6),e.charAt(7)),n=new t(e.split(/[\r\n]+/),r);return n.cachedString=e,n}setSegment(e,r){if(r.name==="MSH"){if(typeof e=="number"){if(e!==0)return!1}else if(this.findSegmentIndexByName(e)!==0)return!1}else if(typeof e=="number"&&e===0&&r.name!=="MSH")return!1;if(typeof e=="number")return e>=this._segments.length?(this._segments.push(r),this.invalidateCache(),!0):(this._segments[e]=r,this.invalidateCache(),!0);let n=this.findSegmentIndexByName(e);return n===0&&r.name!=="MSH"?!1:n!==-1?(this._segments[n]=r,this.invalidateCache(),!0):!1}findSegmentIndexByName(e){return this.segmentsByName.get(e)?.[0]??-1}invalidateCache(){this.segmentsByName=ls(this._segments),this.cachedString=void 0,this.bindSegments()}bindSegments(){let e=()=>{this.cachedString=void 0};for(let r of this._segments)typeof r!="string"&&(r.onModified=e)}};function ls(t){let e=new Map;for(let r=0;r<t.length;r++){let n=t[r],i=typeof n=="string"?n.slice(0,3):n.name,o=e.get(i);o?o.push(r):e.set(i,[r])}return e}var At=class t{constructor(e,r=new Ie){c(this,"context");c(this,"name");c(this,"_fields");c(this,"allFieldsParsed");c(this,"cachedString");c(this,"onModified");this.context=r,this._fields=e,this.allFieldsParsed=e.every(i=>typeof i!="string");let n=e[0];this.name=typeof n=="string"?n:n.components[0][0],this.bindFields()}get fields(){if(!this.allFieldsParsed){for(let e=0;e<this._fields.length;e++)typeof this._fields[e]=="string"&&this.parseField(e);this.allFieldsParsed=!0}return this._fields}get(e){return this.parseField(e)}getField(e){if(this.name==="MSH"){if(e===1)return new ge([[this.context.getMsh1()]],this.context);if(e===2)return new ge([[this.context.getMsh2()]],this.context);if(e>2)return this.parseField(e-1)}return this.parseField(e)}parseField(e){let r=this._fields[e];if(r===void 0)return;if(typeof r!="string")return r;let n=ge.parse(r,this.context);return n.onModified=()=>{this.cachedString=void 0,this.onModified?.()},this._fields[e]=n,n}getComponent(e,r,n,i=0){return this.getField(e)?.getComponent(r,n,i)??""}toString(){return this.cachedString??=this._fields.map(e=>typeof e=="string"?e:e.toString()).join(this.context.fieldSeparator),this.cachedString}static parse(e,r=new Ie){let n=new t(e.split(r.fieldSeparator),r);return n.cachedString=e,n}setField(e,r){if(this.name==="MSH"){if(e===1||e===2)return!1;if(e>2){let n=e-1;for(;this._fields.length<=n;)this._fields.push(new ge([[""]],this.context));return this._fields[n]=typeof r=="string"?ge.parse(r,this.context):r,this.invalidateCache(),!0}}for(;this._fields.length<=e;)this._fields.push(new ge([[""]],this.context));return this._fields[e]=typeof r=="string"?ge.parse(r,this.context):r,this.invalidateCache(),!0}setComponent(e,r,n,i,o=0){let s=this.getField(e);return s?s.setComponent(r,n,i,o):!1}invalidateCache(){this.cachedString=void 0,this.bindFields(),this.onModified?.()}bindFields(){let e=()=>{this.cachedString=void 0,this.onModified?.()};for(let r of this._fields)typeof r!="string"&&(r.onModified=e)}},ge=class t{constructor(e,r=new Ie){c(this,"context");c(this,"components");c(this,"onModified");c(this,"cachedString");this.context=r,this.components=e}get(e,r,n=0){return this.getComponent(e+1,r,n)}getComponent(e,r,n=0){let i=this.components[n][e-1]??"";return r!==void 0&&(i=i.split(this.context.subcomponentSeparator)[r]??""),i}toString(){return this.cachedString??=this.components.map(e=>e.join(this.context.componentSeparator)).join(this.context.repetitionSeparator),this.cachedString}static parse(e,r=new Ie){let n=new t(e.split(r.repetitionSeparator).map(i=>i.split(r.componentSeparator)),r);return n.cachedString=e,n}setComponent(e,r,n,i=0){if(e<1)return!1;if(i>=this.components.length)for(;this.components.length<=i;)this.components.push([""]);if(n===void 0)this.components[i][e-1]=r;else{if(n<0)return!1;{let s=(this.components[i][e-1]||"").split(this.context.subcomponentSeparator);for(;s.length<=n;)s.push("");s[n]=r,this.components[i][e-1]=s.join(this.context.subcomponentSeparator)}}return this.invalidateCache(),!0}invalidateCache(){this.cachedString=void 0,this.onModified?.()}};function ox(t,e){if(!t)return;let r=ze(t.slice(0,4),0),n=ze(t.slice(4,6),1)-1,i=ze(t.slice(6,8),1),o=ze(t.slice(8,10),0),s=ze(t.slice(10,12),0),a=ze(t.slice(12,14),0),u=0;t.includes(".")&&(u=ze(t.slice(15,19),0));let d=new Date(Date.UTC(r,n,i,o,s,a,u)),l=dd(t,e?.tzOffset);return l!==0&&(d=new Date(d.getTime()-l)),d.toISOString()}function ze(t,e){let r=Number.parseInt(t,10);return Number.isNaN(r)?e:r}function dd(t,e){let r=e,n=t.indexOf("+");n!==-1&&(r=t.slice(n));let i=t.indexOf("-");if(i!==-1&&(r=t.slice(i)),!r)return 0;let o=r.startsWith("-")?-1:1;r=r.slice(1).replace(":","");let s=Number.parseInt(r.slice(0,2),10),a=Number.parseInt(r.slice(2,4),10);return o*(s*60*60*1e3+a*60*1e3)}function ld(t){let e=t instanceof Date?t:new Date(t),n=e.toISOString().replaceAll(/[-:T]/g,"").replace(/(\.\d+)?Z$/,""),i=e.getUTCMilliseconds();return i>0&&(n+="."+i.toString()),n}var ct={NONE:0,ERROR:1,WARN:2,INFO:3,DEBUG:4},pd=["NONE","ERROR","WARN","INFO","DEBUG"],ps=class t{constructor(e,r={},n=ct.INFO,i={}){c(this,"write");c(this,"metadata");c(this,"options");c(this,"prefix");c(this,"level");this.write=e,this.metadata=r,this.level=n,this.options=i,i?.prefix&&(this.prefix=i.prefix),this.error=this.error.bind(this),this.warn=this.warn.bind(this),this.info=this.info.bind(this),this.debug=this.debug.bind(this),this.log=this.log.bind(this)}clone(e){let r=this.getLoggerConfig(),n=e?{...r,...e,options:{...r.options,...e.options}}:r;return new t(n.write,n.metadata,n.level,n.options)}getLoggerConfig(){let{write:e,metadata:r,level:n,options:i}=this;return{write:e,metadata:r,level:n,options:i}}error(e,r){this.log(ct.ERROR,e,r)}warn(e,r){this.log(ct.WARN,e,r)}info(e,r){this.log(ct.INFO,e,r)}debug(e,r){this.log(ct.DEBUG,e,r)}log(e,r,n){if(e>this.level)return;let i;if(jr(n))i=kr(n);else if(n){i={...n};for(let[o,s]of Object.entries(i))s instanceof Error&&(i[o]=kr(s))}this.write(JSON.stringify({level:pd[e],timestamp:new Date().toISOString(),msg:this.prefix?`${this.prefix}${r}`:r,...i,...this.metadata}))}};function ux(t){let e=ct[t.toUpperCase()];if(e===void 0)throw new Error(`Invalid log level: ${t}`);return e}function kr(t,e=0,r=10){if(e>=r)return{error:"Max error depth reached"};let n={error:t.toString(),stack:t.stack?.split(`
|
|
54
|
-
`)};t.name&&t.name!=="Error"&&(n.name=t.name),t.message&&(n.message=t.message),"cause"in t&&t.cause!==void 0&&(t.cause instanceof Error?n.cause=kr(t.cause,e+1,r):n.cause=t.cause);let i=Object.getOwnPropertyNames(t).filter(o=>!["name","message","stack","cause"].includes(o));for(let o of i)try{let s=t[o];s instanceof Error?n[o]=kr(s,e+1,r):n[o]=s}catch{}return n}var fd="Invalid response from order medication bot",mx="Invalid response from medication search bot",md="Invalid response from order-set bot",hd="https://medplum.com/fhir/CodeSystem/medication-request-status-reason",gd="response-not-received";function hx(){return{coding:[{system:hd,code:gd,display:"Order-medication response not received"}],text:"The order-medication operation did not return a verifiable response; vendor-side state is unknown."}}function yd(t){if(typeof t!="object"||t===null)return!1;let e=t;return typeof e.orderId=="number"&&Number.isFinite(e.orderId)&&typeof e.vendorPatientId=="number"&&Number.isFinite(e.vendorPatientId)&&typeof e.launchUrl=="string"&&e.launchUrl.length>0}function xd(t){if(typeof t!="object"||t===null)return!1;let e=t;return typeof e.launchUrl=="string"&&e.launchUrl.length>0}function gx(t){return Array.isArray(t)?t.every(e=>D(e,"Medication")):!1}function yx(t,e){return hn(t,e.pendingOrderIdSystem)}function xx(t,e){let r=Fe(t,e.pendingOrderStatusUrl);return typeof r=="string"?r:void 0}function vx(t,e){let r=Fe(t,e.iframeUrlExtension);return typeof r=="string"?r:void 0}function x(t,e,r){return{name:t,[e]:r}}function ke(t){if(t.resource!==void 0)return t.resource;if(t.part?.length)return t.part;for(let e of Object.keys(t))if(e.startsWith("value"))return t[e]}function Tx(t){let e=[];t.term!==void 0&&e.push(x("term","valueString",t.term)),t.ndc!==void 0&&e.push(x("ndc","valueString",t.ndc)),t.rxNorm!==void 0&&e.push(x("rxNorm","valueString",t.rxNorm)),t.routedMedId!==void 0&&e.push(x("routedMedId","valueInteger",t.routedMedId));for(let r of t.gcnSeqnos??[])e.push(x("gcnSeqnos","valueInteger",r));return t.searchOtc!==void 0&&e.push(x("searchOtc","valueBoolean",t.searchOtc)),t.searchSupply!==void 0&&e.push(x("searchSupply","valueBoolean",t.searchSupply)),t.searchBrand!==void 0&&e.push(x("searchBrand","valueBoolean",t.searchBrand)),t.searchGeneric!==void 0&&e.push(x("searchGeneric","valueBoolean",t.searchGeneric)),t.includeCode!==void 0&&e.push(x("includeCode","valueBoolean",t.includeCode)),t.quantityQualifiers!==void 0&&e.push(x("quantityQualifiers","valueBoolean",t.quantityQualifiers)),{resourceType:"Parameters",parameter:e}}function vd(t,e){let r=[];return e.ndc!==void 0&&r.push(x("ndc","valueString",e.ndc)),e.rxNorm!==void 0&&r.push(x("rxNorm","valueString",e.rxNorm)),e.routedMedId!==void 0&&r.push(x("routedMedId","valueInteger",e.routedMedId)),e.gcnSeqno!==void 0&&r.push(x("gcnSeqno","valueInteger",e.gcnSeqno)),e.drugName!==void 0&&r.push(x("drugName","valueString",e.drugName)),e.line1!==void 0&&r.push(x("line1","valueString",e.line1)),r.push(x("quantity","valueDecimal",e.quantity)),e.quantityQualifier!==void 0&&r.push(x("quantityQualifier","valueString",e.quantityQualifier)),e.refill!==void 0&&r.push(x("refill","valueInteger",e.refill)),e.drugOrder!==void 0&&r.push(x("drugOrder","valueInteger",e.drugOrder)),e.sigLine3!==void 0&&r.push(x("sigLine3","valueString",e.sigLine3)),e.useSubstitution!==void 0&&r.push(x("useSubstitution","valueBoolean",e.useSubstitution)),{name:t,part:r}}function Sx(t){let e=[];if(e.push(x("patientId","valueId",t.patientId)),t.medicationRequestId!==void 0&&e.push(x("medicationRequestId","valueId",t.medicationRequestId)),t.combinationMed!==void 0&&e.push(x("combinationMed","valueBoolean",t.combinationMed)),t.drugs)for(let n of t.drugs)e.push(vd("drugs",n));if(t.compoundTitle!==void 0&&e.push(x("compoundTitle","valueString",t.compoundTitle)),t.compoundQuantity!==void 0&&e.push(x("compoundQuantity","valueDecimal",t.compoundQuantity)),t.compoundQuantityQualifier!==void 0&&e.push(x("compoundQuantityQualifier","valueString",t.compoundQuantityQualifier)),t.compoundSigs)for(let n of t.compoundSigs){let i=[x("sigOrder","valueInteger",n.sigOrder),x("line3","valueString",n.line3)];n.drugId!==void 0&&i.push(x("drugId","valueInteger",n.drugId)),e.push({name:"compoundSigs",part:i})}if(t.conditionIds)for(let n of t.conditionIds)e.push(x("conditionIds","valueId",n));if(t.coverageId!==void 0&&e.push(x("coverageId","valueId",t.coverageId)),t.payerOrganizationId!==void 0&&e.push(x("payerOrganizationId","valueId",t.payerOrganizationId)),t.pharmacyOrganizationId!==void 0&&e.push(x("pharmacyOrganizationId","valueId",t.pharmacyOrganizationId)),t.diagnoses)for(let n of t.diagnoses)e.push({name:"diagnoses",part:[x("icdId","valueString",n.icdId),x("name","valueString",n.name)]});t.pharmacyNcpdpId!==void 0&&e.push(x("pharmacyNcpdpId","valueString",t.pharmacyNcpdpId)),t.pharmacyName!==void 0&&e.push(x("pharmacyName","valueString",t.pharmacyName)),t.writtenDate!==void 0&&e.push(x("writtenDate","valueDate",t.writtenDate)),t.fillDate!==void 0&&e.push(x("fillDate","valueDate",t.fillDate)),t.durationDays!==void 0&&e.push(x("durationDays","valueInteger",t.durationDays)),t.pharmacyNote!==void 0&&e.push(x("pharmacyNote","valueString",t.pharmacyNote)),t.patientInstruction!==void 0&&e.push(x("patientInstruction","valueString",t.patientInstruction)),t.appId!==void 0&&e.push(x("appId","valueString",t.appId));let r=X(t.organization);return r!==void 0&&e.push(x("organizationId","valueString",r)),{resourceType:"Parameters",parameter:e}}function bx(t){let e={};for(let n of t.parameter??[])n.name&&(e[n.name]=ke(n));let r={orderId:typeof e.orderId=="number"?e.orderId:Number.NaN,vendorPatientId:typeof e.vendorPatientId=="number"?e.vendorPatientId:Number.NaN,launchUrl:typeof e.launchUrl=="string"?e.launchUrl:"",medicationRequestId:typeof e.medicationRequestId=="string"?e.medicationRequestId:void 0,pendingOrderStatus:e.pendingOrderStatus==="queued"||e.pendingOrderStatus==="reused"?e.pendingOrderStatus:void 0};if(!yd(r))throw new Error(fd);return r}function Ex(t){let e=[];e.push(x("patientId","valueId",t.patientId)),t.planDefinitionId!==void 0&&e.push(x("planDefinitionId","valueId",t.planDefinitionId)),t.vendorOrderSetId!==void 0&&(typeof t.vendorOrderSetId=="number"?e.push(x("vendorOrderSetId","valueInteger",t.vendorOrderSetId)):e.push(x("vendorOrderSetId","valueString",t.vendorOrderSetId))),t.appId!==void 0&&e.push(x("appId","valueString",t.appId));let r=X(t.organization);return r!==void 0&&e.push(x("organizationId","valueString",r)),{resourceType:"Parameters",parameter:e}}function Rx(t){let e={};for(let n of t.parameter??[])n.name&&(e[n.name]=ke(n));let r={launchUrl:typeof e.launchUrl=="string"?e.launchUrl:"",vendorPatientId:typeof e.vendorPatientId=="number"||typeof e.vendorPatientId=="string"?e.vendorPatientId:void 0,vendorOrderSetId:typeof e.vendorOrderSetId=="number"||typeof e.vendorOrderSetId=="string"?e.vendorOrderSetId:void 0,planDefinitionId:typeof e.planDefinitionId=="string"?e.planDefinitionId:void 0};if(!xd(r))throw new Error(md);return r}var Td="Invalid response from checkout-medications bot";function Sd(t){if(typeof t!="object"||t===null)return!1;let e=t;return typeof e.approvalUrl=="string"&&e.approvalUrl.length>0&&typeof e.vendorPatientId=="number"&&Number.isFinite(e.vendorPatientId)&&Array.isArray(e.items)}function Cx(t){let e=[];e.push(x("patientId","valueId",t.patientId));for(let n of t.medicationRequestIds)e.push(x("medicationRequestIds","valueId",n));t.appId!==void 0&&e.push(x("appId","valueString",t.appId));let r=X(t.organization);return r!==void 0&&e.push(x("organizationId","valueString",r)),{resourceType:"Parameters",parameter:e}}function bd(t){if(!t?.length)return;let e={};for(let i of t)i.name&&(e[i.name]=ke(i));let r=typeof e.medicationRequestId=="string"?e.medicationRequestId:"",n=e.status==="queued"||e.status==="failed"?e.status:void 0;if(!(!r||!n))return{medicationRequestId:r,status:n,vendorLineId:typeof e.vendorLineId=="string"?e.vendorLineId:void 0,duplicate:e.duplicate===!0?!0:void 0,error:typeof e.error=="string"?e.error:void 0}}function Px(t){let e=[],r={};for(let i of t.parameter??[])if(i.name)if(i.name==="items"){let o=bd(i.part);o&&e.push(o)}else r[i.name]=ke(i);let n={approvalUrl:typeof r.approvalUrl=="string"?r.approvalUrl:"",vendorPatientId:typeof r.vendorPatientId=="number"?r.vendorPatientId:Number.NaN,items:e};if(!Sd(n))throw new Error(Td);return n}var Ed="Invalid response from cart-management bot";function Rd(t){if(typeof t!="object"||t===null)return!1;let e=t;return typeof e.vendorPatientId=="number"&&Number.isFinite(e.vendorPatientId)&&typeof e.removedCount=="number"&&Number.isFinite(e.removedCount)&&Array.isArray(e.items)}function wx(t){return{resourceType:"Parameters",parameter:[x("patientId","valueId",t.patientId),x("action","valueCode","remove"),x("medicationRequestId","valueId",t.medicationRequestId)]}}function Ax(t){return{resourceType:"Parameters",parameter:[x("patientId","valueId",t.patientId),x("action","valueCode","clear")]}}function Cd(t){if(!t?.length)return;let e={};for(let n of t)n.name&&(e[n.name]=ke(n));let r=e.status==="removed"||e.status==="not-in-cart"||e.status==="failed"?e.status:void 0;if(r)return{status:r,medicationRequestId:typeof e.medicationRequestId=="string"?e.medicationRequestId:void 0,vendorLineId:typeof e.vendorLineId=="string"?e.vendorLineId:void 0,error:typeof e.error=="string"?e.error:void 0}}function Ox(t){let e=[],r={};for(let i of t.parameter??[])if(i.name)if(i.name==="items"){let o=Cd(i.part);o&&e.push(o)}else r[i.name]=ke(i);let n={vendorPatientId:typeof r.vendorPatientId=="number"?r.vendorPatientId:Number.NaN,removedCount:typeof r.removedCount=="number"?r.removedCount:Number.NaN,items:e};if(!Rd(n))throw new Error(Ed);return n}function Pd(t){let e={};for(let r of t)r.name&&(e[r.name]=ke(r));return{actionTitle:typeof e.actionTitle=="string"?e.actionTitle:void 0,activityDefinitionUrl:typeof e.activityDefinitionUrl=="string"?e.activityDefinitionUrl:void 0,scriptSureSequenceId:typeof e.scriptSureSequenceId=="number"?e.scriptSureSequenceId:void 0,scriptSureOrderId:typeof e.scriptSureOrderId=="number"?e.scriptSureOrderId:void 0,status:e.status==="failed"?"failed":"synced",error:typeof e.error=="string"?e.error:void 0}}function Ix(t){let e={},r=[];for(let n of t.parameter??[])n.name&&(n.name==="results"&&n.part?.length?r.push(Pd(n.part)):e[n.name]=ke(n));return{mode:e.mode==="noop-already-synced"?"noop-already-synced":"created",planDefinitionId:typeof e.planDefinitionId=="string"?e.planDefinitionId:void 0,scriptSureOrdersetId:typeof e.scriptSureOrdersetId=="number"?e.scriptSureOrdersetId:void 0,syncedCount:typeof e.syncedCount=="number"?e.syncedCount:r.filter(n=>n.status==="synced").length,failedCount:typeof e.failedCount=="number"?e.failedCount:r.filter(n=>n.status==="failed").length,results:r}}var ti=`${kt}/fhir/StructureDefinition/patient-preferredPharmacy`,fs="https://medplum.com/fhir/CodeSystem/pharmacy-preference-type",Xn="primary",ms="preferred";function Zn(t){let e=t.extension?.find(r=>r.url==="pharmacy");return e?.valueReference?I(e.valueReference):void 0}function ei(t){return t.url===ti&&!!t.extension}function wd(t,e){let r=t.extension?.find(n=>n.url==="type");r&&(r.valueCodeableConcept={coding:[{system:e,code:ms,display:"Preferred Pharmacy"}]})}function Vx(t,e){if(!t.extension)return[];let r=[];for(let n of t.extension){if(n.url!==ti||!n.extension)continue;let i=n.extension.find(s=>s.url==="pharmacy"),o=n.extension.find(s=>s.url==="type");if(i?.valueReference){let s=e?o?.valueCodeableConcept?.coding?.some(a=>a.system===e&&a.code===Xn)??!1:o?.valueCodeableConcept?.coding?.some(a=>a.code===Xn)??!1;r.push({organizationRef:i.valueReference,isPrimary:s})}}return r}function Ad(t,e,r=fs){return{url:ti,extension:[{url:"pharmacy",valueReference:t},{url:"type",valueCodeableConcept:{coding:[{system:r,code:e?Xn:ms,display:e?"Primary Pharmacy":"Preferred Pharmacy"}]}}]}}function _x(t,e,r,n=fs){t.extension??=[];let i=I(e);if(r)for(let a of t.extension)ei(a)&&Zn(a)!==i&&wd(a,n);let o=t.extension.findIndex(a=>ei(a)&&Zn(a)===i),s=Ad(e,r,n);return o>=0?t.extension[o]=s:t.extension.push(s),t}function Nx(t,e){if(!t.extension)return t;let r=I(e);return t.extension=t.extension.filter(n=>ei(n)?Zn(n)!==r:!0),t}function Lx(t){if(!Array.isArray(t))return!1;if(t.length>0){let e=t[0];return typeof e=="object"&&e!==null&&e.resourceType==="Organization"}return!0}function Fx(t){if(typeof t!="object"||t===null)return!1;let e=t;return typeof e.success=="boolean"&&typeof e.message=="string"}var Mr="https://medplum.com/fhir/StructureDefinition/SchedulingParameters",qx="https://medplum.com/fhir/StructureDefinition/SchedulingEncounterCoding",Wx="https://medplum.com/fhir/StructureDefinition/SchedulingPlanDefinition",$x="https://medplum.com/fhir/StructureDefinition/SchedulingColor",Od="https://medplum.com/fhir/CodeSystem/scheduling-eligibility",Id="requires-procedure",kd="requires-diagnosis",Md="requires-medical-necessity",Dd=[Id,kd,Md];function Vd(t){return Dd.includes(t)}var jx="https://medplum.com/fhir/StructureDefinition/SchedulingMedicalNecessity",Hx="https://medplum.com/fhir/StructureDefinition/SchedulingSlotCapacity",ri="https://medplum.com/fhir/service-type-reference",_d="http://hl7.org/fhir/StructureDefinition/timezone",Nd=["mon","tue","wed","thu","fri","sat","sun"];function Gx(t){return Nd.includes(t)}function Qx(t){return!!de(t,Mr)}function zx(t){let e=new Set;for(let r of t?.eligibility??[])for(let n of r.code?.coding??[])n.system===Od&&Vd(n.code)&&e.add(n.code);return e}function Ld(t,e){if(!t?.reference)return!1;let[r,n]=t.reference.split("/");return`${r}/${n}`===e}function hs(t,e){return t.url===Mr&&(t.extension?.some(r=>r.url==="service"&&Ld(r.valueReference,e))??!1)}function gs(t,e){let r=I(e);return t.extension?.filter(n=>hs(n,r))??[]}function Fd(t,e,r){return gs(t,e).flatMap(n=>Ht(n,r))}function Jx(t,e,r){let n=Ud(t,e,r.url),i=ne(e);n.extension??=[];let o=n.extension.find(s=>hs(s,i.reference));return o||(o={url:Mr,extension:[{url:"service",valueReference:i}]},n.extension.push(o)),o.extension=[...o.extension??[],r],n}function Ud(t,e,r){let n=pe(t);for(let i of gs(n,e))i.extension&&(i.extension=i.extension.filter(o=>o.url!==r));return n}function Kx(t,e,r){let n=(e?Fd(e,t,"timezone"):[]).map(s=>s.valueCode).find(zt);if(n)return n;let i=Ht(t,[Mr,"timezone"]).map(s=>s.valueCode).find(zt);if(i)return i;let o=r&&Fe(r,_d);return typeof o=="string"?o:void 0}function Yx(t){let e=[{url:ri,valueReference:ne(t)}];return t.type?.length?t.type.map(r=>({...r,extension:[...r.extension??[],...e]})):[{extension:e}]}function Xx(t,e){if(!t?.length)return!1;let r=I(e);return t.some(n=>Fe(n,ri)?.reference===r)}function Zx(t){return t?.length?t.map(e=>Fe(e,ri)).filter(zt):[]}var Bd={wk:1440*7,d:1440,h:60,min:1};function ev(t){let e=t?.value;if(e===void 0||e<0)return;let r=t?.unit===void 0?void 0:Bd[t.unit];return r===void 0?void 0:e*r}function iv(t){if(!t)throw new m(T("Resource type is null"));if(!Nt(t))throw new m(T("Unknown resource type"))}function ys(t,e,r){t===null?r.push(R(e,"Invalid null value")):Array.isArray(t)?qd(t,e,r):typeof t=="object"&&Wd(t,e,r)}function qd(t,e,r){for(let n=0;n<t.length;n++)t[n]===void 0?r.push(R(`${e}[${n}]`,"Invalid undefined value")):ys(t[n],`${e}[${n}]`,r)}function Wd(t,e,r){for(let[n,i]of Object.entries(t))ys(i,`${e}${e?".":""}${n}`,r)}var xs=new WeakMap;function av(t){let e=xs.get(t);return e||(e={resourceType:"SearchParameter",code:t.code+":identifier",base:t.base,type:"token",expression:`(${t.expression}).identifier`},xs.set(t,e)),e}function vs(t){return t.match(/^\((.+)\)\.identifier$/)?.[1]}function Ts(t,e){return new Ce(t,new se(e,new U("identifier")))}var ye={BOOLEAN:"BOOLEAN",NUMBER:"NUMBER",QUANTITY:"QUANTITY",TEXT:"TEXT",REFERENCE:"REFERENCE",CANONICAL:"CANONICAL",DATE:"DATE",DATETIME:"DATETIME",PERIOD:"PERIOD",UUID:"UUID"};function hv(t,e){return G.types[t]?.searchParamsDetails?.[e.code]??jd(t,e)}function $d(t,e,r){let n=G.types[t];n||(n={},G.types[t]=n),n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=r}function jd(t,e){let r=e.code,n=e.expression,i=Es(t,n),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let d of i){let l=Dr(d),f=Xi(()=>l.join("."));l.length===1&&l[0]instanceof w&&l[0].operator!=="."?o.propertyTypes.add("boolean"):e.code.endsWith(":identifier")?o.propertyTypes.add("Identifier"):f().endsWith("extension.value.code")||f().endsWith("extension.value.coding.code")?(o.array=!0,o.propertyTypes.clear(),o.propertyTypes.add("code")):bs(o,l,t,1),f().endsWith("extension.valueDateTime")&&(o.array=!1,o.propertyTypes.clear(),o.propertyTypes.add("dateTime"))}let s;if(e.code.endsWith(":identifier")){let d=vs(n);if(d===void 0)throw new Error(`Unexpected expression for derived identifier search parameter: ${n}`);let l=Ss(t,d);s=Ts(n,l)}else s=Ss(t,n);let a=o.elementDefinitions.map(d=>({...d,type:d.type?.filter(l=>o.propertyTypes.has(l.code))})).filter(d=>d.type&&d.type.length>0),u={type:Qd(e,o.propertyTypes),elementDefinitions:a,parsedExpression:s,array:o.array,referenceTargetTypes:zd(e,a)};return $d(t,r,u),u}function bs(t,e,r,n){let i=e[n];if(i instanceof Pe){t.propertyTypes.add(i.right.toString());return}if(i instanceof ae){Hd(t,i);return}let o=i.toString(),s=$t(r,o);if(!s)throw new Error(`Element definition not found for ${r} ${o}`);let a=!1,u=n+1;u<e.length&&e[u]instanceof $e&&(a=!0,u++);let d=e[u];if(s.isArray&&!a&&(t.array=!0),u===e.length-1){if(d instanceof Pe){t.elementDefinitions.push(s),t.propertyTypes.add(d.right.toString());return}if(d instanceof ae&&d.name==="ofType"){t.elementDefinitions.push(s),t.propertyTypes.add(d.args[0].toString());return}}if(u>=e.length){t.elementDefinitions.push(s);for(let l of s.type??v)t.propertyTypes.add(l.code);return}for(let l of s.type??v){let f=l.code;Gd(f)&&(f=s.type[0].code),bs(t,e,f,u)}}function Hd(t,e){if(e.name==="as"){t.propertyTypes.add(e.args[0].toString());return}if(e.name==="ofType"){t.propertyTypes.add(e.args[0].toString());return}if(e.name==="resolve"){t.propertyTypes.add("string");return}if(e.name==="where"&&e.args[0]instanceof We){t.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function Gd(t){return t==="Element"||t==="BackboneElement"}function Qd(t,e){switch(t.type){case"date":return e.size===1&&e.has(p.date)?ye.DATE:ye.DATETIME;case"number":return ye.NUMBER;case"quantity":return ye.QUANTITY;case"reference":return e.has(p.canonical)?ye.CANONICAL:ye.REFERENCE;case"token":return e.size===1&&e.has(p.boolean)?ye.BOOLEAN:ye.TEXT;default:return ye.TEXT}}function Es(t,e){let r=[],n=ur(e);return Vr(t,n.child,r),r}function gv(t,e){let r=Es(t,e);if(r.length!==0)return r.map(n=>n.toString()).join(" | ")}function Ss(t,e){let r=[],n=ur(e);if(Vr(t,n.child,r),r.length===0)return n;let i=r[0];for(let o=1;o<r.length;o++)i=new qe(i,r[o]);return new Ce("<original-not-available>",i)}function Vr(t,e,r){e instanceof qe?(Vr(t,e.left,r),Vr(t,e.right,r)):e.toString().includes(t+".")&&r.push(e)}function Dr(t){if(t instanceof Pe||t instanceof $e)return[Dr(t.left),t].flat();if(t instanceof w&&t.operator!==".")return[t];if(t instanceof se)return[Dr(t.left),Dr(t.right)].flat();if(t instanceof ae){if(t.name==="where"&&!(t.args[0]instanceof We))return[];if(t.name==="last")return[]}return[t]}function zd(t,e){if(t.target?.length===1)return t.target;if(e){let r=new Set;for(let n of e)for(let i of n.type)if(!(i.code!=="Reference"||!i.targetProfile))for(let o of i.targetProfile){let s=o.split("/").at(-1);s&&s!=="Resource"&&r.add(s)}if(r.size>0)return Array.from(r)}}function xv(t){let e=[];return new Promise((r,n)=>{t.on("data",i=>e.push(Buffer.from(i))),t.on("error",i=>{t.destroy(),n(i)}),t.on("end",()=>{r(Buffer.concat(e))}),t.on("close",()=>{t.destroy()})})}function bv(t){return`shlink:/${bo(JSON.stringify(t))}`}function Ev(t){let e=t.indexOf("#shlink:/"),r=e===-1?t:t.substring(e+1);if(!r.startsWith("shlink:/"))throw new Error("Invalid SMART Health Link URI");let n=JSON.parse(fr(r.substring(8)));if(!n||n.v!==void 0&&n.v!==1||!fe(n.url)||!fe(n.key))throw new Error("Invalid SMART Health Link payload");return n}function Rv(t){return/\/shl\/([^/]+)\/(?:manifest|payload)$/.exec(t)?.[1]}function Ov(t,e){let r=[];for(let n of e)r.push(...Jd(t,n));return r}function Jd(t,e){if(!t.resource)throw new Error("Resource type is required");if(t.resource!==e.resourceType)return[];let r={};for(let i of t.constant??v){let o={type:"ViewDefinitionConstant",value:i};r["%"+i.name]=_(o,"value")}let n=E(e);for(let i of t.where??v){let o=k(i.path,[n],r);if(o.length!==1)return[];if(o[0].type!=="boolean")throw new Error("WHERE clause must evaluate to a boolean");if(!o[0].value)return[]}return ni(t,n,r)}function ni(t,e,r){let n=[],i;t.forEach?i=k(t.forEach,[e],r):t.forEachOrNull?i=k(t.forEachOrNull,[e],r):i=[e];for(let o of i){let s=[];for(let a of t.column??v){let u=k(a.path,[o],r),d;if(u.length===0)d={[a.name]:null};else if(a.collection)d={[a.name]:u.map(l=>l.value)};else if(u.length===1)d={[a.name]:u[0].value};else throw new Error("Multiple values found but not expected for column");s.push([d])}for(let a of t.select??v){let u=ni(a,o,r);s.push(u)}if(t.unionAll){let a=[];for(let u of t.unionAll)for(let d of ni(u,o,r))a.push(d);s.push(a)}n.push(...Kd(s))}if(i.length===0&&t.forEachOrNull){let o={};for(let s of t.column??v)o[s.name]=null;n.push(o)}return n}function Kd(t){if(t.length===0)return[];let e=t[0];for(let r=1;r<t.length;r++)e=Yd(e,t[r]);return e}function Yd(t,e){let r=[];for(let n of t)for(let i of e)r.push(Xd(n,i));return r}function Xd(t,e){let r={};return Object.assign(r,t),Object.assign(r,e),r}var Rs=/^\d+\.\d+\.\d+(-[0-9a-z]{7})?$/,Zd="https://meta.medplum.com/releases",ii=new Map;function Dv(){ii.clear()}function el(t){let e=t;if(!e.tag_name?.startsWith("v"))throw new Error("Manifest missing valid tag_name starting with a 'v' (eg. v5.1.15)");let r=e.assets;if(!r?.length)throw new Error("Manifest missing assets list");for(let n of r){if(!n.browser_download_url)throw new Error("Asset missing browser download URL");if(!n.name)throw new Error("Asset missing name")}}async function Cs(t,e,r,n){let i=new URL(`${Zd}/${t}`);if(i.searchParams.set("a",e),i.searchParams.set("c",Mn),n)for(let[s,a]of Object.entries(n))i.searchParams.set(s,a);let o=await fetch(i.toString());if(o.status!==200){let s;try{s=(await o.json()).message}catch(a){console.error(`Failed to parse message from body: ${Ve(a)}`)}throw new Error(`Received status code ${o.status} while ${r}`,{cause:new Error(s)})}return await o.json()}async function oi(t,e,r){let n=e?ii.get(e):void 0;if(!n){let i=e?`v${e}`:"latest",o=await Cs(`${i}.json`,t,`fetching manifest for version '${e??"latest"}'`,r);el(o),n=o,ii.set(n.tag_name.slice(1),n)}return n}function Ps(t){return Rs.test(t)}function tl(t){if(!Rs.test(t))throw new TypeError(`Version is not a valid Medplum semver (eg. 1.1.1 or 1.1.1-a1bc): ${t}`)}function rl(t,e){let r=t.split("-")[0].split(".").map(Number),n=e.split("-")[0].split(".").map(Number);for(let i=0;i<3;i++){let o=(r[i]??0)-(n[i]??0);if(o!==0)return o}return 0}async function Vv(t,e){if(!Ps(e))return!1;try{await oi(t,e)}catch{return!1}return!0}async function _v(t){let e=await oi(t);if(!e.tag_name.startsWith("v"))throw new Error(`Invalid release name found. Release tag '${e.tag_name}' did not start with 'v'`);let r=e.tag_name.slice(1);return tl(r),r}async function Nv(t,e){return((await Cs("all.json",t,"fetching all release versions",e)).versions??[]).map(i=>i.version).filter(Ps).toSorted(rl).reverse()}async function Lv(t,e){try{let r=Mn.split("-")[0],i=(await oi(t,void 0,e)).tag_name.slice(1);r!==i&&console.warn(`A new version (v${i}) of Medplum is available. Your current version (v${r}) may be missing important updates and bug fixes.`)}catch(r){console.warn(`Failed to check for newer version: ${Ve(r)}`)}}export{He as AccessPolicyInteraction,ad as AckCode,or as AndAtom,q as ArithmeticOperatorAtom,Pe as AsAtom,pl as CPT,St as ClientStorage,Xt as ConcatAtom,Zt as ContainsAtom,V as ContentType,Nd as DAYS_OF_WEEK,Jc as DEFAULT_ACCEPT,Cm as DEFAULT_MAX_SEARCH_COUNT,Rm as DEFAULT_SEARCH_COUNT,Dn as DataSampler,se as DotAtom,v as EMPTY,Kt as EmptySetAtom,tr as EqualsAtom,nr as EquivalentAtom,Cn as EventTarget,Tg as ExternalSecretSystems,Pn as FHIRCAST_EVENT_NAMES,Uc as FHIRCAST_EVENT_RESOURCES,wn as FHIRCAST_EVENT_VERSION_REQUIRED,Fc as FHIRCAST_RESOURCE_TYPES,Ar as FhirFilterComparison,Ir as FhirFilterConnective,Or as FhirFilterNegation,Ce as FhirPathAtom,hr as FhircastConnection,cs as FileBuilder,ae as FunctionAtom,ci as HL7_V2_0203,kt as HTTP_HL7_ORG,Os as HTTP_TERMINOLOGY_HL7_ORG,Ie as Hl7Context,ge as Hl7Field,ds as Hl7Message,At as Hl7Segment,fl as ICD10,Ed as INVALID_MEDICATION_CART_RESPONSE,Td as INVALID_MEDICATION_CHECKOUT_RESPONSE,fd as INVALID_MEDICATION_ORDER_RESPONSE,md as INVALID_MEDICATION_ORDER_SET_RESPONSE,mx as INVALID_MEDICATION_SEARCH_RESPONSE,cr as ImpliesAtom,er as InAtom,$e as IndexerAtom,w as InfixOperatorAtom,$n as InvalidOperationError,We as IsAtom,ul as LOINC,ee as LRUCache,z as LiteralAtom,ct as LogLevel,pd as LogLevelNames,ps as Logger,gd as MEDICATION_REQUEST_STATUS_REASON_RESPONSE_NOT_RECEIVED,hd as MEDICATION_REQUEST_STATUS_REASON_SYSTEM,hg as MEDPLUM_CLI_CLIENT_ID,Zd as MEDPLUM_RELEASES_URL,Rs as MEDPLUM_SEMVER_REGEX,Mn as MEDPLUM_VERSION,$p as MRN_IDENTIFIER_TYPE,Tr as MedplumClient,xr as MedplumKeyValueClient,In as MemoryStorage,K as MissingError,Vo as MockAsyncClientStorage,ml as NDC,xf as NOOP,rr as NotEqualsAtom,ir as NotEquivalentAtom,iu as OAuthClientAssertionType,st as OAuthGrantType,yg as OAuthSigningAlgorithm,gg as OAuthTokenAuthMethod,nu as OAuthTokenType,m as OperationOutcomeError,g as Operator,S as OperatorPrecedence,sr as OrAtom,ti as PATIENT_PREFERRED_PHARMACY_URL,fs as PHARMACY_PREFERENCE_TYPE_SYSTEM,ms as PHARMACY_TYPE_PREFERRED,Xn as PHARMACY_TYPE_PRIMARY,_r as Parser,It as ParserBuilder,M as Pointer,Ot as PrefixOperatorAtom,p as PropertyType,Nr as RATE_LIMIT_RESET_EXTENSION_URL,kd as REQUIRES_DIAGNOSIS_CODE,Md as REQUIRES_MEDICAL_NECESSITY_CODE,Id as REQUIRES_PROCEDURE_CODE,ll as RXNORM,$ as ReadablePromise,ot as ReconnectingWebSocket,Hm as ReturnAckCategory,Od as SCHEDULING_ELIGIBILITY_SYSTEM,Dd as SCHEDULING_REQUIREMENT_CODES,dl as SNOMED,qx as SchedulingEncounterCodingURI,jx as SchedulingMedicalNecessityURI,Mr as SchedulingParametersURI,Wx as SchedulingPlanDefinitionURI,$x as SchedulingScheduleColorURI,Hx as SchedulingSlotCapacityURI,ye as SearchParameterType,ri as ServiceTypeReferenceURI,Et as SubscriptionEmitter,vr as SubscriptionManager,U as SymbolAtom,Wn as TestError,_d as TimezoneExtensionURI,we as Tokenizer,Fn as TransformMapCollection,ue as TypedEventTarget,ai as UCUM,Yt as UnaryOperatorAtom,qe as UnionAtom,Ta as VALID_HOSTNAME_REGEX,ar as XorAtom,Il as accepted,To as accessPolicySupportsInteraction,wr as add,_x as addPreferredPharmacyToPatient,uf as addProfileToResource,xl as allOk,Se as append,os as apply,Wg as applyDefaultValuesToElement,qg as applyDefaultValuesToResource,Rr as applyFixedOrPatternValue,wy as applyPatch,zi as arrayBufferToBase64,Qi as arrayBufferToHex,te as arrayify,_c as assert,Ao as assertContextVersionOptional,yf as assertNever,Hl as assertOk,el as assertReleaseManifest,tl as assertValidMedplumSemver,A as badRequest,y as booleanToTypedValue,ch as buildCdsRequest,Vn as buildElementsContext,hx as buildMedicationRequestResponseLostStatusReason,ka as buildTypeName,Nl as businessRule,jt as calculateAge,Bp as calculateAgeString,qm as canReadResourceType,$m as canWriteResource,Wm as canWriteResourceType,B as capitalize,ys as checkForNull,Vv as checkIfValidMedplumVersion,Dv as clearReleaseCache,Ud as clearScheduleParameter,Kp as codeableConceptMatchesToken,la as codingMatchesToken,rl as compareVersions,zl as compressElement,W as concatUrls,jo as conceptMapTranslate,kl as conflict,Rl as contentTooLarge,nh as convertContainedResourcesToBundle,po as convertToSearchableDates,hm as convertToSearchableNumbers,gm as convertToSearchableQuantities,mo as convertToSearchableReferences,fo as convertToSearchableStrings,ho as convertToSearchableTokens,ym as convertToSearchableUris,Rc as convertToTransactionBundle,Ku as copy,hf as countBy,mf as countWhere,rn as crawlTypedValue,lp as crawlTypedValueAsync,Ti as createConstraintIssue,On as createFhircastMessagePayload,_e as createOperationOutcomeIssue,Ay as createPatch,Ad as createPreferredPharmacyExtension,Si as createProcessingIssue,ne as createReference,R as createStructureIssue,Oy as createTests,vl as created,Ec as decodeBase64,fr as decodeBase64Url,pe as deepClone,Te as deepEquals,dt as deepIncludes,av as deriveIdentifierSearchParameter,Oe as diffAny,Gu as diffArrays,Qu as diffObjects,pr as encodeBase64,bo as encodeBase64Url,bv as encodeSmartHealthLink,Eo as encryptSHA256,va as ensureNoLeadingSlash,ft as ensureTrailingSlash,gf as escapeHtml,Ju as escapeToken,um as evalFhirPath,k as evalFhirPathTyped,Ov as evalSqlOnFhir,Bo as expandSampledData,Rg as expandSampledObservation,mn as extractAccountReferences,Zx as extractServiceTypeReferences,Nv as fetchAllVersionStrings,_v as fetchLatestVersionString,oi as fetchVersionManifest,Fi as fhirPathArrayEquals,dn as fhirPathArrayEquivalent,Ui as fhirPathArrayNotEquals,lt as fhirPathEquals,Zs as fhirPathEquivalent,et as fhirPathIs,Li as fhirPathNot,on as fhirTypeToJsType,Wy as fhirpathPatchTypedValue,Jp as findCodeBySystem,Zp as findObservationInterval,ef as findObservationReferenceRange,fa as findObservationReferenceRanges,sf as findResourceByCode,ih as findResourceInBundle,pf as flatMapFilter,Sl as forbidden,ba as formatAddress,be as formatCodeableConcept,ro as formatCoding,Ef as formatDate,tt as formatDateTime,bf as formatFamilyName,Sf as formatGivenName,ld as formatHl7DateTime,mt as formatHumanName,Af as formatMoney,Aa as formatObservationValue,Cf as formatPeriod,Re as formatQuantity,wf as formatRange,Sa as formatReferenceString,wm as formatSearchQuery,Rf as formatTime,Pf as formatTiming,Ea as formatWallTime,ce as generateId,Oi as getAllDataTypes,Wp as getAllQuestionnaireAnswers,En as getBuffer,fn as getCodeBySystem,ve as getDataType,Up as getDateProperty,$g as getDefaultValuesForNewSliceEntry,ra as getDisplayString,$t as getElementDefinition,ao as getElementDefinitionForPath,so as getElementDefinitionFromElements,zr as getElementDefinitionTypeName,gv as getExpressionForResourceType,Es as getExpressionsForResourceType,de as getExtension,Fe as getExtensionValue,Ht as getExtensions,hn as getIdentifier,jp as getIdentifierByType,Fp as getImageSrc,vs as getInnerDerivedIdentifierExpression,vx as getMedicationOrderIframeUrl,Ye as getNestedProperty,_l as getOutcomeRedirectUrl,Ts as getParsedDerivedIdentifierExpression,Ss as getParsedExpressionForResourceType,Ee as getPathDifference,Nf as getPathDisplayName,yx as getPendingMedicationOrderId,xx as getPendingMedicationOrderStatus,Vx as getPreferredPharmaciesFromPatient,Da as getPropertyDisplayName,eo as getQueryString,qp as getQuestionnaireAnswers,Rn as getRandomString,Ol as getRateLimitReset,I as getReferenceString,Ma as getResourceTypes,Fd as getScheduleParameters,zx as getSchedulingRequirements,Kx as getSchedulingTimezone,_f as getSearchParameter,hv as getSearchParameterDetails,Vf as getSearchParameters,Om as getSearchResourceTypes,Rv as getSmartHealthLinkId,jl as getStatus,_ as getTypedPropertyValue,nn as getTypedPropertyValueWithPath,Ys as getTypedPropertyValueWithSchema,Xs as getTypedPropertyValueWithoutSchema,Wo as getValueSliceName,Zi as getWebSocketUrl,zm as getWindow,G as globalSchema,bl as gone,Qx as hasSchedulingParameters,xu as indexConceptMapCodings,Di as indexDefaultSearchParameters,vn as indexSearchParameter,Df as indexSearchParameterBundle,Yr as indexStructureDefinitionBundle,bi as inflateBaseSchema,Ds as inflateElement,xt as initFhirPathParserBuilder,hy as intersection,Am as invalidSearchOperator,Fl as isAccepted,cd as isAckCode,Fx as isAddPharmacyResponse,Z as isBrowserEnvironment,pn as isCodeableConcept,Wt as isCoding,Oo as isCompletedSubscriptionRequest,yn as isComplexTypeCode,ql as isConflict,wo as isContextVersionRequired,Ll as isCreated,Ii as isDataTypeLoaded,Bi as isDateString,Ze as isDateTimeString,Gx as isDayOfWeek,zt as isDefined,ns as isDestructive,O as isEmpty,jr as isError,zc as isFhirCriteriaMet,Bc as isFhircastResourceType,Wl as isGone,Io as isJwt,Yp as isLowerCase,gx as isMedicationArray,Rd as isMedicationCartManageResponse,Sd as isMedicationCheckoutResponse,yd as isMedicationOrderResponse,xd as isMedicationOrderSetResponse,ko as isMedplumAccessToken,Qm as isNodeEnvironment,Bl as isNotFound,C as isObject,Hr as isOk,ut as isOperationOutcome,Lx as isOrganizationArray,qi as isPeriod,le as isPopulated,Lt as isPrimitiveType,ki as isProfileLoaded,ta as isProfileResource,N as isQuantity,Wi as isQuantityEquivalent,Ul as isRedirect,Y as isReference,D as isResource,Nt as isResourceType,Zr as isResourceTypeSchema,pt as isResourceWithId,Vd as isSchedulingRequirement,qo as isSliceDefinitionWithTypes,fe as isString,zp as isStringArray,pa as isTextObject,Lf as isTypedValue,Qp as isUUID,$l as isUnauthenticated,Jt as isValidDate,cf as isValidHostname,Ps as isValidMedplumSemver,Xi as lazy,Xr as loadDataType,he as locationUtils,df as mapByIdentifier,cn as matchDiscriminant,Yi as matchesRange,dr as matchesSearchRequest,Ax as medicationCartClearRequestToParameters,wx as medicationCartRemoveRequestToParameters,Cx as medicationCheckoutRequestToParameters,Sx as medicationOrderRequestToParameters,Ex as medicationOrderSetRequestToParameters,Tx as medicationSearchParamsToParameters,Qn as move,Pl as multipleMatches,Ji as normalizeArrayBufferView,Fo as normalizeCreateBinaryOptions,cu as normalizeCreatePdfOptions,Lc as normalizeErrorEvent,Ve as normalizeErrorString,_t as normalizeOperationOutcome,yi as notFound,Tl as notModified,ks as operationOutcomeIssueToString,vi as operationOutcomeToString,Ox as parametersToMedicationCartManageResponse,Px as parametersToMedicationCheckoutResponse,bx as parametersToMedicationOrderResponse,Rx as parametersToMedicationOrderSetResponse,Ix as parametersToOrderSetSyncResponse,ur as parseFhirPath,qy as parseFhirPathPatchParameters,rx as parseFilterParameter,ox as parseHl7DateTime,yr as parseJWTPayload,ux as parseLogLevel,ty as parseMappingLanguage,Za as parseParameter,Lp as parseReference,vt as parseSearchRequest,Ev as parseSmartHealthLink,Jr as parseStructureDefinition,Pm as parseXFhirQuery,Xe as pathToJSONPointer,rf as preciseEquals,of as preciseGreaterThan,xa as preciseGreaterThanOrEquals,nf as preciseLessThan,ya as preciseLessThanOrEquals,tf as preciseRound,El as preconditionFailed,vc as projectAdminResourceTypes,xc as protectedResourceTypes,Tc as readInteractions,Is as redirect,Vl as redirectOk,Hn as remove,Bt as removeDuplicates,Nx as removePreferredPharmacyFromPatient,lf as removeProfileFromResource,Pc as reorderBundle,Gn as replace,Mc as replaceQueryVariables,X as resolveId,Kh as resourceMatchesSubscriptionCriteria,Sc as satisfiedAccessPolicy,ev as schedulingDurationToMinutes,kr as serializeError,An as serializeFhircastSubscriptionRequest,Ml as serverError,Dl as serverTimeout,Xx as serviceTypeIncludesService,Xp as setCodeBySystem,Hp as setIdentifier,Al as setRateLimitReset,Jx as setScheduleParameter,L as singleton,af as singularize,xn as sleep,Qt as sortStringArray,rt as splitN,Tt as splitSearchOnComma,xv as streamToBuffer,Gt as stringify,co as stringifyTypedValue,dy as structureMapTransform,np as subsetResource,rs as subtract,ff as sumBy,Eg as summarizeObservations,Yu as test,H as toJsBoolean,qt as toPeriod,Yx as toServiceTypeCodeableConcepts,E as toTypedValue,wl as tooManyRequests,Gp as trimTrailingEmptyElements,Le as tryGetDataType,Mo as tryGetJwtExpiration,Mi as tryGetProfile,to as typedValueToString,Je as unauthorized,$r as unauthorizedTokenAudience,xi as unauthorizedTokenExpired,zu as unescapeToken,Cl as unsupportedMediaType,gr as validateFhircastSubscriptionRequest,Rp as validateResource,iv as validateResourceType,$s as validateTypedValue,T as validationError,Ft as validationRegexes,Lv as warnIfNewerVersionAvailable,rd as wordWrap};
|
|
53
|
+
`)}};function cd(t,e){let r=[],n=[],i=0;return t.split(" ").forEach(function(o){i+o.length>e&&(r.push(n.join(" ").trim()),n=[],i=0),i+=o.length+1,n.push(o)}),n.length>0&&r.push(n.join(" ").trim()),r}var ud=[...xt,"eq","ne","co"];function ms(t){return new Oe(t,yt,ud,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var Ar=class{constructor(e,r,n){c(this,"path");c(this,"operator");c(this,"value");this.path=e,this.operator=r,this.value=n}},wr=class{constructor(e){c(this,"child");this.child=e}},Or=class{constructor(e,r,n){c(this,"keyword");c(this,"left");c(this,"right");this.keyword=e,this.left=r,this.right=n}};var dd={eq:g.EXACT,ne:g.NOT_EQUALS,co:g.CONTAINS,sw:g.STARTS_WITH,ew:void 0,gt:g.GREATER_THAN,lt:g.LESS_THAN,ge:g.GREATER_THAN_OR_EQUALS,le:g.LESS_THAN_OR_EQUALS,ap:g.APPROXIMATELY,sa:g.STARTS_AFTER,eb:g.ENDS_BEFORE,pr:g.PRESENT,po:void 0,ss:void 0,sb:void 0,in:g.IN,ni:g.NOT_IN,re:g.EQUALS,identifier:g.IDENTIFIER};function ld(t){let e=dd[t];if(!e)throw new m(w("Invalid operator: "+t));return e}var Xn=class{constructor(e){c(this,"parser");this.parser=e}parse(){let e;this.parser.peek()?.value==="("?(this.parser.consume("("),e=this.parse(),this.parser.consume(")")):this.parser.peek()?.value==="not"?(this.parser.consume("Symbol","not"),this.parser.consume("("),e=new wr(this.parse()),this.parser.consume(")")):e=new Ar(this.parser.consume("Symbol").value,ld(this.parser.consume("Symbol").value),this.parser.consume().value);let r=this.parser.peek()?.value;return r==="and"||r==="or"?(this.parser.consume("Symbol",r),new Or(r,e,this.parse())):e}},pd=vt();function lx(t){let e=pd.construct(ms(t));e.removeComments();let r=new Xn(e).parse(),n=e.peek();if(n)throw new m(w("Unexpected token in _filter expression: "+n.value));return r}var fd={AA:"AA",AE:"AE",AR:"AR",CA:"CA",CE:"CE",CR:"CR"};function md(t){return t!==void 0&&Object.hasOwn(fd,t)}var hd={AA:"OK",AE:"Application Error",AR:"Application Reject",CA:"Commit Accept",CE:"Commit Error",CR:"Commit Reject"},Me=class{constructor(e="\r",r="|",n="^",i="~",o="\\",s="&"){c(this,"segmentSeparator");c(this,"fieldSeparator");c(this,"componentSeparator");c(this,"repetitionSeparator");c(this,"escapeCharacter");c(this,"subcomponentSeparator");this.segmentSeparator=e,this.fieldSeparator=r,this.componentSeparator=n,this.repetitionSeparator=i,this.escapeCharacter=o,this.subcomponentSeparator=s}getMsh1(){return this.fieldSeparator}getMsh2(){return this.componentSeparator+this.repetitionSeparator+this.escapeCharacter+this.subcomponentSeparator}},hs=class t{constructor(e,r=new Me){c(this,"context");c(this,"_segments");c(this,"segmentsByName");c(this,"cachedString");c(this,"allSegmentsParsed");this.context=r,this._segments=e,this.segmentsByName=gs(e),this.allSegmentsParsed=e.every(n=>typeof n!="string"),this.bindSegments()}get segments(){if(!this.allSegmentsParsed){for(let e=0;e<this._segments.length;e++)typeof this._segments[e]=="string"&&this.parseSegment(e);this.allSegmentsParsed=!0}return this._segments}get header(){let e=this.parseSegment(0);if(!e)throw new Error("Can't get header before first segment added");return e}get(e){return this.getSegment(e)}getAll(e){return this.getAllSegments(e)}getSegment(e){if(typeof e=="number")return this.parseSegment(e);let r=this.segmentsByName.get(e);if(r?.length)return this.parseSegment(r[0])}getAllSegments(e){let r=this.segmentsByName.get(e);return r?r.map(n=>this.parseSegment(n)):[]}parseSegment(e){let r=this._segments[e];if(r===void 0)return;if(typeof r!="string")return r;let n=Ot.parse(r,this.context);return n.onModified=()=>{this.cachedString=void 0},this._segments[e]=n,n}toString(){return this.cachedString??=this._segments.map(e=>typeof e=="string"?e:e.toString()).join(this.context.segmentSeparator),this.cachedString}getAckType(){let e=this.getSegment("MSA")?.getField(1)?.toString()?.toUpperCase();return md(e)?e:void 0}buildAck(e){let r=new Date,n=this.getSegment("MSH"),i=n?.getField(3)?.toString()??"",o=n?.getField(4)?.toString()??"",s=n?.getField(5)?.toString()??"",a=n?.getField(6)?.toString()??"",u=n?.getField(10)?.toString()??"",d=n?.getField(12)?.toString()??"2.5.1",l=e?.ackCode??"AA";return new t([new Ot(["MSH",this.context.getMsh2(),s,a,i,o,yd(r),"",this.buildAckMessageType(n),r.getTime().toString(),"P",d],this.context),new Ot(["MSA",l,u,hd[l]],this.context),...e?.errSegment?[e.errSegment]:[]])}buildAckMessageType(e){let r=e?.getField(9),n=r?.getComponent(2),i=r?.getComponent(3),o="ACK";return n&&i?o=`ACK^${n}^ACK`:n&&(o=`ACK^${n}`),o}static parse(e){if(!e.startsWith("MSH")){let i=new Error("Invalid HL7 message");throw i.type="entity.parse.failed",i}let r=new Me("\r",e.charAt(3),e.charAt(4),e.charAt(5),e.charAt(6),e.charAt(7)),n=new t(e.split(/[\r\n]+/),r);return n.cachedString=e,n}setSegment(e,r){if(r.name==="MSH"){if(typeof e=="number"){if(e!==0)return!1}else if(this.findSegmentIndexByName(e)!==0)return!1}else if(typeof e=="number"&&e===0&&r.name!=="MSH")return!1;if(typeof e=="number")return e>=this._segments.length?(this._segments.push(r),this.invalidateCache(),!0):(this._segments[e]=r,this.invalidateCache(),!0);let n=this.findSegmentIndexByName(e);return n===0&&r.name!=="MSH"?!1:n!==-1?(this._segments[n]=r,this.invalidateCache(),!0):!1}findSegmentIndexByName(e){return this.segmentsByName.get(e)?.[0]??-1}invalidateCache(){this.segmentsByName=gs(this._segments),this.cachedString=void 0,this.bindSegments()}bindSegments(){let e=()=>{this.cachedString=void 0};for(let r of this._segments)typeof r!="string"&&(r.onModified=e)}};function gs(t){let e=new Map;for(let r=0;r<t.length;r++){let n=t[r],i=typeof n=="string"?n.slice(0,3):n.name,o=e.get(i);o?o.push(r):e.set(i,[r])}return e}var Ot=class t{constructor(e,r=new Me){c(this,"context");c(this,"name");c(this,"_fields");c(this,"allFieldsParsed");c(this,"cachedString");c(this,"onModified");this.context=r,this._fields=e,this.allFieldsParsed=e.every(i=>typeof i!="string");let n=e[0];this.name=typeof n=="string"?n:n.components[0][0],this.bindFields()}get fields(){if(!this.allFieldsParsed){for(let e=0;e<this._fields.length;e++)typeof this._fields[e]=="string"&&this.parseField(e);this.allFieldsParsed=!0}return this._fields}get(e){return this.parseField(e)}getField(e){if(this.name==="MSH"){if(e===1)return new ye([[this.context.getMsh1()]],this.context);if(e===2)return new ye([[this.context.getMsh2()]],this.context);if(e>2)return this.parseField(e-1)}return this.parseField(e)}parseField(e){let r=this._fields[e];if(r===void 0)return;if(typeof r!="string")return r;let n=ye.parse(r,this.context);return n.onModified=()=>{this.cachedString=void 0,this.onModified?.()},this._fields[e]=n,n}getComponent(e,r,n,i=0){return this.getField(e)?.getComponent(r,n,i)??""}toString(){return this.cachedString??=this._fields.map(e=>typeof e=="string"?e:e.toString()).join(this.context.fieldSeparator),this.cachedString}static parse(e,r=new Me){let n=new t(e.split(r.fieldSeparator),r);return n.cachedString=e,n}setField(e,r){if(this.name==="MSH"){if(e===1||e===2)return!1;if(e>2){let n=e-1;for(;this._fields.length<=n;)this._fields.push(new ye([[""]],this.context));return this._fields[n]=typeof r=="string"?ye.parse(r,this.context):r,this.invalidateCache(),!0}}for(;this._fields.length<=e;)this._fields.push(new ye([[""]],this.context));return this._fields[e]=typeof r=="string"?ye.parse(r,this.context):r,this.invalidateCache(),!0}setComponent(e,r,n,i,o=0){let s=this.getField(e);return s?s.setComponent(r,n,i,o):!1}invalidateCache(){this.cachedString=void 0,this.bindFields(),this.onModified?.()}bindFields(){let e=()=>{this.cachedString=void 0,this.onModified?.()};for(let r of this._fields)typeof r!="string"&&(r.onModified=e)}},ye=class t{constructor(e,r=new Me){c(this,"context");c(this,"components");c(this,"onModified");c(this,"cachedString");this.context=r,this.components=e}get(e,r,n=0){return this.getComponent(e+1,r,n)}getComponent(e,r,n=0){let i=this.components[n][e-1]??"";return r!==void 0&&(i=i.split(this.context.subcomponentSeparator)[r]??""),i}toString(){return this.cachedString??=this.components.map(e=>e.join(this.context.componentSeparator)).join(this.context.repetitionSeparator),this.cachedString}static parse(e,r=new Me){let n=new t(e.split(r.repetitionSeparator).map(i=>i.split(r.componentSeparator)),r);return n.cachedString=e,n}setComponent(e,r,n,i=0){if(e<1)return!1;if(i>=this.components.length)for(;this.components.length<=i;)this.components.push([""]);if(n===void 0)this.components[i][e-1]=r;else{if(n<0)return!1;{let s=(this.components[i][e-1]||"").split(this.context.subcomponentSeparator);for(;s.length<=n;)s.push("");s[n]=r,this.components[i][e-1]=s.join(this.context.subcomponentSeparator)}}return this.invalidateCache(),!0}invalidateCache(){this.cachedString=void 0,this.onModified?.()}};function mx(t,e){if(!t)return;let r=ze(t.slice(0,4),0),n=ze(t.slice(4,6),1)-1,i=ze(t.slice(6,8),1),o=ze(t.slice(8,10),0),s=ze(t.slice(10,12),0),a=ze(t.slice(12,14),0),u=0;t.includes(".")&&(u=ze(t.slice(15,19),0));let d=new Date(Date.UTC(r,n,i,o,s,a,u)),l=gd(t,e?.tzOffset);return l!==0&&(d=new Date(d.getTime()-l)),d.toISOString()}function ze(t,e){let r=Number.parseInt(t,10);return Number.isNaN(r)?e:r}function gd(t,e){let r=e,n=t.indexOf("+");n!==-1&&(r=t.slice(n));let i=t.indexOf("-");if(i!==-1&&(r=t.slice(i)),!r)return 0;let o=r.startsWith("-")?-1:1;r=r.slice(1).replace(":","");let s=Number.parseInt(r.slice(0,2),10),a=Number.parseInt(r.slice(2,4),10);return o*(s*60*60*1e3+a*60*1e3)}function yd(t){let e=t instanceof Date?t:new Date(t),n=e.toISOString().replaceAll(/[-:T]/g,"").replace(/(\.\d+)?Z$/,""),i=e.getUTCMilliseconds();return i>0&&(n+="."+i.toString()),n}var ct={NONE:0,ERROR:1,WARN:2,INFO:3,DEBUG:4},xd=["NONE","ERROR","WARN","INFO","DEBUG"],ys=class t{constructor(e,r={},n=ct.INFO,i={}){c(this,"write");c(this,"metadata");c(this,"options");c(this,"prefix");c(this,"level");this.write=e,this.metadata=r,this.level=n,this.options=i,i?.prefix&&(this.prefix=i.prefix),this.error=this.error.bind(this),this.warn=this.warn.bind(this),this.info=this.info.bind(this),this.debug=this.debug.bind(this),this.log=this.log.bind(this)}clone(e){let r=this.getLoggerConfig(),n=e?{...r,...e,options:{...r.options,...e.options}}:r;return new t(n.write,n.metadata,n.level,n.options)}getLoggerConfig(){let{write:e,metadata:r,level:n,options:i}=this;return{write:e,metadata:r,level:n,options:i}}error(e,r){this.log(ct.ERROR,e,r)}warn(e,r){this.log(ct.WARN,e,r)}info(e,r){this.log(ct.INFO,e,r)}debug(e,r){this.log(ct.DEBUG,e,r)}log(e,r,n){if(e>this.level)return;let i;if($r(n))i=Ir(n);else if(n){i={...n};for(let[o,s]of Object.entries(i))s instanceof Error&&(i[o]=Ir(s))}this.write(JSON.stringify({level:xd[e],timestamp:new Date().toISOString(),msg:this.prefix?`${this.prefix}${r}`:r,...i,...this.metadata}))}};function xx(t){let e=ct[t.toUpperCase()];if(e===void 0)throw new Error(`Invalid log level: ${t}`);return e}function Ir(t,e=0,r=10){if(e>=r)return{error:"Max error depth reached"};let n={error:t.toString(),stack:t.stack?.split(`
|
|
54
|
+
`)};t.name&&t.name!=="Error"&&(n.name=t.name),t.message&&(n.message=t.message),"cause"in t&&t.cause!==void 0&&(t.cause instanceof Error?n.cause=Ir(t.cause,e+1,r):n.cause=t.cause);let i=Object.getOwnPropertyNames(t).filter(o=>!["name","message","stack","cause"].includes(o));for(let o of i)try{let s=t[o];s instanceof Error?n[o]=Ir(s,e+1,r):n[o]=s}catch{}return n}var vd="Invalid response from order medication bot",Ex="Invalid response from medication search bot",Sd="Invalid response from order-set bot",Td="https://medplum.com/fhir/CodeSystem/medication-request-status-reason",bd="response-not-received";function Rx(){return{coding:[{system:Td,code:bd,display:"Order-medication response not received"}],text:"The order-medication operation did not return a verifiable response; vendor-side state is unknown."}}function Ed(t){if(typeof t!="object"||t===null)return!1;let e=t;return typeof e.orderId=="number"&&Number.isFinite(e.orderId)&&typeof e.vendorPatientId=="number"&&Number.isFinite(e.vendorPatientId)&&typeof e.launchUrl=="string"&&e.launchUrl.length>0}function Rd(t){if(typeof t!="object"||t===null)return!1;let e=t;return typeof e.launchUrl=="string"&&e.launchUrl.length>0}function Cx(t){return Array.isArray(t)?t.every(e=>D(e,"Medication")):!1}function Px(t,e){return mn(t,e.pendingOrderIdSystem)}function Ax(t,e){let r=Re(t,e.pendingOrderStatusUrl);return typeof r=="string"?r:void 0}function wx(t,e){let r=Re(t,e.iframeUrlExtension);return typeof r=="string"?r:void 0}function x(t,e,r){return{name:t,[e]:r}}function de(t){if(t.resource!==void 0)return t.resource;if(t.part?.length)return t.part;for(let e of Object.keys(t))if(e.startsWith("value"))return t[e]}function Ox(t){let e=[];t.term!==void 0&&e.push(x("term","valueString",t.term)),t.ndc!==void 0&&e.push(x("ndc","valueString",t.ndc)),t.rxNorm!==void 0&&e.push(x("rxNorm","valueString",t.rxNorm)),t.routedMedId!==void 0&&e.push(x("routedMedId","valueInteger",t.routedMedId));for(let r of t.gcnSeqnos??[])e.push(x("gcnSeqnos","valueInteger",r));return t.searchOtc!==void 0&&e.push(x("searchOtc","valueBoolean",t.searchOtc)),t.searchSupply!==void 0&&e.push(x("searchSupply","valueBoolean",t.searchSupply)),t.searchBrand!==void 0&&e.push(x("searchBrand","valueBoolean",t.searchBrand)),t.searchGeneric!==void 0&&e.push(x("searchGeneric","valueBoolean",t.searchGeneric)),t.includeCode!==void 0&&e.push(x("includeCode","valueBoolean",t.includeCode)),t.quantityQualifiers!==void 0&&e.push(x("quantityQualifiers","valueBoolean",t.quantityQualifiers)),{resourceType:"Parameters",parameter:e}}function Cd(t,e){let r=[];return e.ndc!==void 0&&r.push(x("ndc","valueString",e.ndc)),e.rxNorm!==void 0&&r.push(x("rxNorm","valueString",e.rxNorm)),e.routedMedId!==void 0&&r.push(x("routedMedId","valueInteger",e.routedMedId)),e.gcnSeqno!==void 0&&r.push(x("gcnSeqno","valueInteger",e.gcnSeqno)),e.drugName!==void 0&&r.push(x("drugName","valueString",e.drugName)),e.line1!==void 0&&r.push(x("line1","valueString",e.line1)),r.push(x("quantity","valueDecimal",e.quantity)),e.quantityQualifier!==void 0&&r.push(x("quantityQualifier","valueString",e.quantityQualifier)),e.refill!==void 0&&r.push(x("refill","valueInteger",e.refill)),e.drugOrder!==void 0&&r.push(x("drugOrder","valueInteger",e.drugOrder)),e.sigLine3!==void 0&&r.push(x("sigLine3","valueString",e.sigLine3)),e.useSubstitution!==void 0&&r.push(x("useSubstitution","valueBoolean",e.useSubstitution)),{name:t,part:r}}function Ix(t){let e=[];if(e.push(x("patientId","valueId",t.patientId)),t.medicationRequestId!==void 0&&e.push(x("medicationRequestId","valueId",t.medicationRequestId)),t.combinationMed!==void 0&&e.push(x("combinationMed","valueBoolean",t.combinationMed)),t.drugs)for(let n of t.drugs)e.push(Cd("drugs",n));if(t.compoundTitle!==void 0&&e.push(x("compoundTitle","valueString",t.compoundTitle)),t.compoundQuantity!==void 0&&e.push(x("compoundQuantity","valueDecimal",t.compoundQuantity)),t.compoundQuantityQualifier!==void 0&&e.push(x("compoundQuantityQualifier","valueString",t.compoundQuantityQualifier)),t.compoundSigs)for(let n of t.compoundSigs){let i=[x("sigOrder","valueInteger",n.sigOrder),x("line3","valueString",n.line3)];n.drugId!==void 0&&i.push(x("drugId","valueInteger",n.drugId)),e.push({name:"compoundSigs",part:i})}if(t.conditionIds)for(let n of t.conditionIds)e.push(x("conditionIds","valueId",n));if(t.coverageId!==void 0&&e.push(x("coverageId","valueId",t.coverageId)),t.payerOrganizationId!==void 0&&e.push(x("payerOrganizationId","valueId",t.payerOrganizationId)),t.pharmacyOrganizationId!==void 0&&e.push(x("pharmacyOrganizationId","valueId",t.pharmacyOrganizationId)),t.diagnoses)for(let n of t.diagnoses)e.push({name:"diagnoses",part:[x("icdId","valueString",n.icdId),x("name","valueString",n.name)]});t.pharmacyNcpdpId!==void 0&&e.push(x("pharmacyNcpdpId","valueString",t.pharmacyNcpdpId)),t.pharmacyName!==void 0&&e.push(x("pharmacyName","valueString",t.pharmacyName)),t.writtenDate!==void 0&&e.push(x("writtenDate","valueDate",t.writtenDate)),t.fillDate!==void 0&&e.push(x("fillDate","valueDate",t.fillDate)),t.durationDays!==void 0&&e.push(x("durationDays","valueInteger",t.durationDays)),t.pharmacyNote!==void 0&&e.push(x("pharmacyNote","valueString",t.pharmacyNote)),t.patientInstruction!==void 0&&e.push(x("patientInstruction","valueString",t.patientInstruction)),t.appId!==void 0&&e.push(x("appId","valueString",t.appId));let r=Z(t.organization);return r!==void 0&&e.push(x("organizationId","valueString",r)),{resourceType:"Parameters",parameter:e}}function kx(t){let e={};for(let n of t.parameter??[])n.name&&(e[n.name]=de(n));let r={orderId:typeof e.orderId=="number"?e.orderId:Number.NaN,vendorPatientId:typeof e.vendorPatientId=="number"?e.vendorPatientId:Number.NaN,launchUrl:typeof e.launchUrl=="string"?e.launchUrl:"",medicationRequestId:typeof e.medicationRequestId=="string"?e.medicationRequestId:void 0,pendingOrderStatus:e.pendingOrderStatus==="queued"||e.pendingOrderStatus==="reused"?e.pendingOrderStatus:void 0};if(!Ed(r))throw new Error(vd);return r}function Mx(t){let e=[];e.push(x("patientId","valueId",t.patientId)),t.planDefinitionId!==void 0&&e.push(x("planDefinitionId","valueId",t.planDefinitionId)),t.vendorOrderSetId!==void 0&&(typeof t.vendorOrderSetId=="number"?e.push(x("vendorOrderSetId","valueInteger",t.vendorOrderSetId)):e.push(x("vendorOrderSetId","valueString",t.vendorOrderSetId))),t.appId!==void 0&&e.push(x("appId","valueString",t.appId));let r=Z(t.organization);return r!==void 0&&e.push(x("organizationId","valueString",r)),{resourceType:"Parameters",parameter:e}}function Dx(t){let e={};for(let n of t.parameter??[])n.name&&(e[n.name]=de(n));let r={launchUrl:typeof e.launchUrl=="string"?e.launchUrl:"",vendorPatientId:typeof e.vendorPatientId=="number"||typeof e.vendorPatientId=="string"?e.vendorPatientId:void 0,vendorOrderSetId:typeof e.vendorOrderSetId=="number"||typeof e.vendorOrderSetId=="string"?e.vendorOrderSetId:void 0,planDefinitionId:typeof e.planDefinitionId=="string"?e.planDefinitionId:void 0};if(!Rd(r))throw new Error(Sd);return r}var Pd="Invalid response from checkout-medications bot";function Ad(t){if(typeof t!="object"||t===null)return!1;let e=t;return typeof e.approvalUrl=="string"&&e.approvalUrl.length>0&&typeof e.vendorPatientId=="number"&&Number.isFinite(e.vendorPatientId)&&Array.isArray(e.items)}function Vx(t){let e=[];e.push(x("patientId","valueId",t.patientId));for(let n of t.medicationRequestIds)e.push(x("medicationRequestIds","valueId",n));t.appId!==void 0&&e.push(x("appId","valueString",t.appId));let r=Z(t.organization);return r!==void 0&&e.push(x("organizationId","valueString",r)),{resourceType:"Parameters",parameter:e}}function wd(t){if(!t?.length)return;let e={};for(let i of t)i.name&&(e[i.name]=de(i));let r=typeof e.medicationRequestId=="string"?e.medicationRequestId:"",n=e.status==="queued"||e.status==="failed"?e.status:void 0;if(!(!r||!n))return{medicationRequestId:r,status:n,vendorLineId:typeof e.vendorLineId=="string"?e.vendorLineId:void 0,duplicate:e.duplicate===!0?!0:void 0,error:typeof e.error=="string"?e.error:void 0}}function _x(t){let e=[],r={};for(let i of t.parameter??[])if(i.name)if(i.name==="items"){let o=wd(i.part);o&&e.push(o)}else r[i.name]=de(i);let n={approvalUrl:typeof r.approvalUrl=="string"?r.approvalUrl:"",vendorPatientId:typeof r.vendorPatientId=="number"?r.vendorPatientId:Number.NaN,items:e};if(!Ad(n))throw new Error(Pd);return n}var Od="Invalid response from cart-management bot";function Id(t){if(typeof t!="object"||t===null)return!1;let e=t;return typeof e.vendorPatientId=="number"&&Number.isFinite(e.vendorPatientId)&&typeof e.removedCount=="number"&&Number.isFinite(e.removedCount)&&Array.isArray(e.items)}function Nx(t){return{resourceType:"Parameters",parameter:[x("patientId","valueId",t.patientId),x("action","valueCode","remove"),x("medicationRequestId","valueId",t.medicationRequestId)]}}function Lx(t){return{resourceType:"Parameters",parameter:[x("patientId","valueId",t.patientId),x("action","valueCode","clear")]}}function kd(t){if(!t?.length)return;let e={};for(let n of t)n.name&&(e[n.name]=de(n));let r=e.status==="removed"||e.status==="not-in-cart"||e.status==="failed"?e.status:void 0;if(r)return{status:r,medicationRequestId:typeof e.medicationRequestId=="string"?e.medicationRequestId:void 0,vendorLineId:typeof e.vendorLineId=="string"?e.vendorLineId:void 0,error:typeof e.error=="string"?e.error:void 0}}function Fx(t){let e=[],r={};for(let i of t.parameter??[])if(i.name)if(i.name==="items"){let o=kd(i.part);o&&e.push(o)}else r[i.name]=de(i);let n={vendorPatientId:typeof r.vendorPatientId=="number"?r.vendorPatientId:Number.NaN,removedCount:typeof r.removedCount=="number"?r.removedCount:Number.NaN,items:e};if(!Id(n))throw new Error(Od);return n}var Md="Invalid response from get-cart bot";function Dd(t){if(typeof t!="object"||t===null)return!1;let e=t;return typeof e.vendorPatientId=="number"&&Number.isFinite(e.vendorPatientId)&&typeof e.vendorTotal=="number"&&Number.isFinite(e.vendorTotal)&&typeof e.draftCount=="number"&&Number.isFinite(e.draftCount)&&typeof e.locked=="boolean"&&Array.isArray(e.items)}function Ux(t){return{resourceType:"Parameters",parameter:[x("patientId","valueId",t.patientId)]}}function Vd(t){if(!t?.length)return;let e={};for(let i of t)i.name&&(e[i.name]=de(i));let r=e.status==="in-sync"||e.status==="vendor-only"||e.status==="not-staged"||e.status==="missing-from-vendor"?e.status:void 0;if(!r)return;let n=i=>typeof e[i]=="string"?e[i]:void 0;return{status:r,medicationRequestId:n("medicationRequestId"),vendorLineId:n("vendorLineId"),drugName:n("drugName"),ndc:n("ndc"),rxnorm:n("rxnorm"),quantity:typeof e.quantity=="number"?e.quantity:void 0,validationState:n("validationState"),createdBy:n("createdBy"),createdAt:n("createdAt")}}function Bx(t){let e=[],r={};for(let i of t.parameter??[])if(i.name)if(i.name==="items"){let o=Vd(i.part);o&&e.push(o)}else r[i.name]=de(i);let n={vendorPatientId:typeof r.vendorPatientId=="number"?r.vendorPatientId:Number.NaN,vendorTotal:typeof r.vendorTotal=="number"?r.vendorTotal:Number.NaN,draftCount:typeof r.draftCount=="number"?r.draftCount:Number.NaN,locked:r.locked,items:e};if(!Dd(n))throw new Error(Md);return n}function _d(t){let e={};for(let r of t)r.name&&(e[r.name]=de(r));return{actionTitle:typeof e.actionTitle=="string"?e.actionTitle:void 0,activityDefinitionUrl:typeof e.activityDefinitionUrl=="string"?e.activityDefinitionUrl:void 0,scriptSureSequenceId:typeof e.scriptSureSequenceId=="number"?e.scriptSureSequenceId:void 0,scriptSureOrderId:typeof e.scriptSureOrderId=="number"?e.scriptSureOrderId:void 0,status:e.status==="failed"?"failed":"synced",error:typeof e.error=="string"?e.error:void 0}}function qx(t){let e={},r=[];for(let n of t.parameter??[])n.name&&(n.name==="results"&&n.part?.length?r.push(_d(n.part)):e[n.name]=de(n));return{mode:e.mode==="noop-already-synced"?"noop-already-synced":"created",planDefinitionId:typeof e.planDefinitionId=="string"?e.planDefinitionId:void 0,scriptSureOrdersetId:typeof e.scriptSureOrdersetId=="number"?e.scriptSureOrdersetId:void 0,syncedCount:typeof e.syncedCount=="number"?e.syncedCount:r.filter(n=>n.status==="synced").length,failedCount:typeof e.failedCount=="number"?e.failedCount:r.filter(n=>n.status==="failed").length,results:r}}var ri=`${Mt}/fhir/StructureDefinition/patient-preferredPharmacy`,xs="https://medplum.com/fhir/CodeSystem/pharmacy-preference-type",Zn="primary",vs="preferred";function ei(t){let e=t.extension?.find(r=>r.url==="pharmacy");return e?.valueReference?I(e.valueReference):void 0}function ti(t){return t.url===ri&&!!t.extension}function Nd(t,e){let r=t.extension?.find(n=>n.url==="type");r&&(r.valueCodeableConcept={coding:[{system:e,code:vs,display:"Preferred Pharmacy"}]})}function Hx(t,e){if(!t.extension)return[];let r=[];for(let n of t.extension){if(n.url!==ri||!n.extension)continue;let i=n.extension.find(s=>s.url==="pharmacy"),o=n.extension.find(s=>s.url==="type");if(i?.valueReference){let s=e?o?.valueCodeableConcept?.coding?.some(a=>a.system===e&&a.code===Zn)??!1:o?.valueCodeableConcept?.coding?.some(a=>a.code===Zn)??!1;r.push({organizationRef:i.valueReference,isPrimary:s})}}return r}function Ld(t,e,r=xs){return{url:ri,extension:[{url:"pharmacy",valueReference:t},{url:"type",valueCodeableConcept:{coding:[{system:r,code:e?Zn:vs,display:e?"Primary Pharmacy":"Preferred Pharmacy"}]}}]}}function Gx(t,e,r,n=xs){t.extension??=[];let i=I(e);if(r)for(let a of t.extension)ti(a)&&ei(a)!==i&&Nd(a,n);let o=t.extension.findIndex(a=>ti(a)&&ei(a)===i),s=Ld(e,r,n);return o>=0?t.extension[o]=s:t.extension.push(s),t}function Qx(t,e){if(!t.extension)return t;let r=I(e);return t.extension=t.extension.filter(n=>ti(n)?ei(n)!==r:!0),t}function zx(t){if(!Array.isArray(t))return!1;if(t.length>0){let e=t[0];return typeof e=="object"&&e!==null&&e.resourceType==="Organization"}return!0}function Jx(t){if(typeof t!="object"||t===null)return!1;let e=t;return typeof e.success=="boolean"&&typeof e.message=="string"}var ut="https://medplum.com/fhir/StructureDefinition/SchedulingParameters",Zx="https://medplum.com/fhir/StructureDefinition/SchedulingEncounterCoding",ev="https://medplum.com/fhir/StructureDefinition/SchedulingPlanDefinition",tv="https://medplum.com/fhir/StructureDefinition/SchedulingColor",Fd="https://medplum.com/fhir/CodeSystem/scheduling-eligibility",Ud="requires-procedure",Bd="requires-diagnosis",qd="requires-medical-necessity",Wd=[Ud,Bd,qd];function $d(t){return Wd.includes(t)}var rv="https://medplum.com/fhir/StructureDefinition/SchedulingMedicalNecessity",nv="https://medplum.com/fhir/StructureDefinition/SchedulingSlotCapacity",iv="https://medplum.com/fhir/StructureDefinition/SchedulingUnvalidatedBooking",Ss="https://medplum.com/fhir/StructureDefinition/SchedulingSite",ni="https://medplum.com/fhir/service-type-reference",jd="http://hl7.org/fhir/StructureDefinition/timezone",Hd=["mon","tue","wed","thu","fri","sat","sun"];function ov(t){return Hd.includes(t)}function sv(t){return!!le(t,ut)}function av(t){let e=new Set;for(let r of t?.eligibility??[])for(let n of r.code?.coding??[])n.system===Fd&&$d(n.code)&&e.add(n.code);return e}function Gd(t,e){if(!t?.reference)return!1;let[r,n]=t.reference.split("/");return`${r}/${n}`===e}function Qd(t,e){return t.url===ut&&(t.extension?.some(r=>r.url==="service"&&Gd(r.valueReference,e))??!1)}function kr(t,e){if(!e)return t.extension?.filter(n=>n.url===ut)??[];let r=I(e);return t.extension?.filter(n=>Qd(n,r))??[]}function zd(t,e,r){return ii(t,e,r)}function Jd(t,e){return ii(t,void 0,e)}function cv(t,e,r){return oi(t,e,r)}function uv(t,e){return oi(t,void 0,e)}function dv(t,e,r){return si(t,e,r)}function lv(t,e){return si(t,void 0,e)}function pv(t,e,r){return ii(t,e,r)}function fv(t,e,r){return oi(t,e,r)}function mv(t,e,r){return si(t,e,r)}function ii(t,e,r){return kr(t,e).flatMap(n=>hn(n,r))}function oi(t,e,r){let n=kr(t,e)[0]?.extension?.findIndex(a=>a.url===r.url)??-1,i=Ts(t,e,r.url);i.extension??=[];let o=kr(i,e)[0];o||(o=e?{url:ut,extension:[{url:"service",valueReference:X(e)}]}:{url:ut},i.extension.push(o));let s=[...o.extension??[]];return s.splice(n<0?s.length:n,0,r),o.extension=s,bs(i)}function si(t,e,r){return bs(Ts(t,e,r))}function Ts(t,e,r){let n=fe(t);for(let i of kr(n,e))i.extension&&(i.extension=i.extension.filter(o=>o.url!==r));return n}function bs(t){return t.extension&&(t.extension=t.extension.filter(e=>e.url!==ut||!!e.extension?.some(r=>r.url!=="service")),t.extension.length===0&&delete t.extension),t}function hv(t,e,r){let n=(e?zd(e,t,"timezone"):[]).map(s=>s.valueCode).find(vn);if(n)return n;let i=Jd(t,"timezone").map(s=>s.valueCode).find(vn);if(i)return i;let o=r&&Re(r,jd);return typeof o=="string"?o:void 0}function gv(t){let e=[{url:ni,valueReference:X(t)}];return t.type?.length?t.type.map(r=>({...r,extension:[...r.extension??[],...e]})):[{extension:e}]}function yv(t,e){if(!t?.length)return!1;let r=I(e);return t.some(n=>Re(n,ni)?.reference===r)}function xv(t){return t?.length?oo(t,e=>{let r=Re(e,ni);return W(r,"HealthcareService")?r:void 0}):[]}function vv(t){return{...X(t),extension:[{url:Ss,valueBoolean:!0}]}}function Sv(t){return t.supportingInformation?.find(e=>e.reference?.startsWith("Location/")===!0&&Re(e,Ss)===!0)}var Kd={wk:1440*7,d:1440,h:60,min:1};function Tv(t){let e=t?.value;if(e===void 0||e<0)return;let r=t?.unit===void 0?void 0:Kd[t.unit];return r===void 0?void 0:e*r}function bv(t){return{value:t,unit:"min"}}function Pv(t){if(!t)throw new m(S("Resource type is null"));if(!Lt(t))throw new m(S("Unknown resource type"))}function Es(t,e,r){t===null?r.push(R(e,"Invalid null value")):Array.isArray(t)?Yd(t,e,r):typeof t=="object"&&Xd(t,e,r)}function Yd(t,e,r){for(let n=0;n<t.length;n++)t[n]===void 0?r.push(R(`${e}[${n}]`,"Invalid undefined value")):Es(t[n],`${e}[${n}]`,r)}function Xd(t,e,r){for(let[n,i]of Object.entries(t))Es(i,`${e}${e?".":""}${n}`,r)}var Rs=new WeakMap;function Ov(t){let e=Rs.get(t);return e||(e={resourceType:"SearchParameter",code:t.code+":identifier",base:t.base,type:"token",expression:`(${t.expression}).identifier`},Rs.set(t,e)),e}function Cs(t){return t.match(/^\((.+)\)\.identifier$/)?.[1]}function Ps(t,e){return new Ae(t,new se(e,new U("identifier")))}var xe={BOOLEAN:"BOOLEAN",NUMBER:"NUMBER",QUANTITY:"QUANTITY",TEXT:"TEXT",REFERENCE:"REFERENCE",CANONICAL:"CANONICAL",DATE:"DATE",DATETIME:"DATETIME",PERIOD:"PERIOD",UUID:"UUID"};function Lv(t,e){return Q.types[t]?.searchParamsDetails?.[e.code]??el(t,e)}function Zd(t,e,r){let n=Q.types[t];n||(n={},Q.types[t]=n),n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=r}function el(t,e){let r=e.code,n=e.expression,i=Os(t,n),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let d of i){let l=Mr(d),f=ro(()=>l.join("."));l.length===1&&l[0]instanceof A&&l[0].operator!=="."?o.propertyTypes.add("boolean"):e.code.endsWith(":identifier")?o.propertyTypes.add("Identifier"):f().endsWith("extension.value.code")||f().endsWith("extension.value.coding.code")?(o.array=!0,o.propertyTypes.clear(),o.propertyTypes.add("code")):ws(o,l,t,1),f().endsWith("extension.valueDateTime")&&(o.array=!1,o.propertyTypes.clear(),o.propertyTypes.add("dateTime"))}let s;if(e.code.endsWith(":identifier")){let d=Cs(n);if(d===void 0)throw new Error(`Unexpected expression for derived identifier search parameter: ${n}`);let l=As(t,d);s=Ps(n,l)}else s=As(t,n);let a=o.elementDefinitions.map(d=>({...d,type:d.type?.filter(l=>o.propertyTypes.has(l.code))})).filter(d=>d.type&&d.type.length>0),u={type:nl(e,o.propertyTypes),elementDefinitions:a,parsedExpression:s,array:o.array,referenceTargetTypes:il(e,a)};return Zd(t,r,u),u}function ws(t,e,r,n){let i=e[n];if(i instanceof we){t.propertyTypes.add(i.right.toString());return}if(i instanceof ae){tl(t,i);return}let o=i.toString(),s=jt(r,o);if(!s)throw new Error(`Element definition not found for ${r} ${o}`);let a=!1,u=n+1;u<e.length&&e[u]instanceof $e&&(a=!0,u++);let d=e[u];if(s.isArray&&!a&&(t.array=!0),u===e.length-1){if(d instanceof we){t.elementDefinitions.push(s),t.propertyTypes.add(d.right.toString());return}if(d instanceof ae&&d.name==="ofType"){t.elementDefinitions.push(s),t.propertyTypes.add(d.args[0].toString());return}}if(u>=e.length){t.elementDefinitions.push(s);for(let l of s.type??v)t.propertyTypes.add(l.code);return}for(let l of s.type??v){let f=l.code;rl(f)&&(f=s.type[0].code),ws(t,e,f,u)}}function tl(t,e){if(e.name==="as"){t.propertyTypes.add(e.args[0].toString());return}if(e.name==="ofType"){t.propertyTypes.add(e.args[0].toString());return}if(e.name==="resolve"){t.propertyTypes.add("string");return}if(e.name==="where"&&e.args[0]instanceof We){t.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function rl(t){return t==="Element"||t==="BackboneElement"}function nl(t,e){switch(t.type){case"date":return e.size===1&&e.has(p.date)?xe.DATE:xe.DATETIME;case"number":return xe.NUMBER;case"quantity":return xe.QUANTITY;case"reference":return e.has(p.canonical)?xe.CANONICAL:xe.REFERENCE;case"token":return e.size===1&&e.has(p.boolean)?xe.BOOLEAN:xe.TEXT;default:return xe.TEXT}}function Os(t,e){let r=[],n=cr(e);return Dr(t,n.child,r),r}function Fv(t,e){let r=Os(t,e);if(r.length!==0)return r.map(n=>n.toString()).join(" | ")}function As(t,e){let r=[],n=cr(e);if(Dr(t,n.child,r),r.length===0)return n;let i=r[0];for(let o=1;o<r.length;o++)i=new qe(i,r[o]);return new Ae("<original-not-available>",i)}function Dr(t,e,r){e instanceof qe?(Dr(t,e.left,r),Dr(t,e.right,r)):e.toString().includes(t+".")&&r.push(e)}function Mr(t){if(t instanceof we||t instanceof $e)return[Mr(t.left),t].flat();if(t instanceof A&&t.operator!==".")return[t];if(t instanceof se)return[Mr(t.left),Mr(t.right)].flat();if(t instanceof ae){if(t.name==="where"&&!(t.args[0]instanceof We))return[];if(t.name==="last")return[]}return[t]}function il(t,e){if(t.target?.length===1)return t.target;if(e){let r=new Set;for(let n of e)for(let i of n.type)if(!(i.code!=="Reference"||!i.targetProfile))for(let o of i.targetProfile){let s=o.split("/").at(-1);s&&s!=="Resource"&&r.add(s)}if(r.size>0)return Array.from(r)}}function Bv(t){let e=[];return new Promise((r,n)=>{t.on("data",i=>e.push(Buffer.from(i))),t.on("error",i=>{t.destroy(),n(i)}),t.on("end",()=>{r(Buffer.concat(e))}),t.on("close",()=>{t.destroy()})})}function jv(t){return`shlink:/${Ao(JSON.stringify(t))}`}function Hv(t){let e=t.indexOf("#shlink:/"),r=e===-1?t:t.substring(e+1);if(!r.startsWith("shlink:/"))throw new Error("Invalid SMART Health Link URI");let n=JSON.parse(pr(r.substring(8)));if(!n||n.v!==void 0&&n.v!==1||!me(n.url)||!me(n.key))throw new Error("Invalid SMART Health Link payload");return n}function Gv(t){return/\/shl\/([^/]+)\/(?:manifest|payload)$/.exec(t)?.[1]}function Yv(t,e){let r=[];for(let n of e)r.push(...ol(t,n));return r}function ol(t,e){if(!t.resource)throw new Error("Resource type is required");if(t.resource!==e.resourceType)return[];let r={};for(let i of t.constant??v){let o={type:"ViewDefinitionConstant",value:i};r["%"+i.name]=_(o,"value")}let n=E(e);for(let i of t.where??v){let o=k(i.path,[n],r);if(o.length!==1)return[];if(o[0].type!=="boolean")throw new Error("WHERE clause must evaluate to a boolean");if(!o[0].value)return[]}return ai(t,n,r)}function ai(t,e,r){let n=[],i;t.forEach?i=k(t.forEach,[e],r):t.forEachOrNull?i=k(t.forEachOrNull,[e],r):i=[e];for(let o of i){let s=[];for(let a of t.column??v){let u=k(a.path,[o],r),d;if(u.length===0)d={[a.name]:null};else if(a.collection)d={[a.name]:u.map(l=>l.value)};else if(u.length===1)d={[a.name]:u[0].value};else throw new Error("Multiple values found but not expected for column");s.push([d])}for(let a of t.select??v){let u=ai(a,o,r);s.push(u)}if(t.unionAll){let a=[];for(let u of t.unionAll)for(let d of ai(u,o,r))a.push(d);s.push(a)}n.push(...sl(s))}if(i.length===0&&t.forEachOrNull){let o={};for(let s of t.column??v)o[s.name]=null;n.push(o)}return n}function sl(t){if(t.length===0)return[];let e=t[0];for(let r=1;r<t.length;r++)e=al(e,t[r]);return e}function al(t,e){let r=[];for(let n of t)for(let i of e)r.push(cl(n,i));return r}function cl(t,e){let r={};return Object.assign(r,t),Object.assign(r,e),r}var Is=/^\d+\.\d+\.\d+(-[0-9a-z]{7})?$/,ul="https://meta.medplum.com/releases",ci=new Map;function tS(){ci.clear()}function dl(t){let e=t;if(!e.tag_name?.startsWith("v"))throw new Error("Manifest missing valid tag_name starting with a 'v' (eg. v5.1.15)");let r=e.assets;if(!r?.length)throw new Error("Manifest missing assets list");for(let n of r){if(!n.browser_download_url)throw new Error("Asset missing browser download URL");if(!n.name)throw new Error("Asset missing name")}}async function ks(t,e,r,n){let i=new URL(`${ul}/${t}`);if(i.searchParams.set("a",e),i.searchParams.set("c",Dn),n)for(let[s,a]of Object.entries(n))i.searchParams.set(s,a);let o=await fetch(i.toString());if(o.status!==200){let s;try{s=(await o.json()).message}catch(a){console.error(`Failed to parse message from body: ${_e(a)}`)}throw new Error(`Received status code ${o.status} while ${r}`,{cause:new Error(s)})}return await o.json()}async function ui(t,e,r){let n=e?ci.get(e):void 0;if(!n){let i=e?`v${e}`:"latest",o=await ks(`${i}.json`,t,`fetching manifest for version '${e??"latest"}'`,r);dl(o),n=o,ci.set(n.tag_name.slice(1),n)}return n}function Ms(t){return Is.test(t)}function ll(t){if(!Is.test(t))throw new TypeError(`Version is not a valid Medplum semver (eg. 1.1.1 or 1.1.1-a1bc): ${t}`)}function pl(t,e){let r=t.split("-")[0].split(".").map(Number),n=e.split("-")[0].split(".").map(Number);for(let i=0;i<3;i++){let o=(r[i]??0)-(n[i]??0);if(o!==0)return o}return 0}async function rS(t,e){if(!Ms(e))return!1;try{await ui(t,e)}catch{return!1}return!0}async function nS(t){let e=await ui(t);if(!e.tag_name.startsWith("v"))throw new Error(`Invalid release name found. Release tag '${e.tag_name}' did not start with 'v'`);let r=e.tag_name.slice(1);return ll(r),r}async function iS(t,e){return((await ks("all.json",t,"fetching all release versions",e)).versions??[]).map(i=>i.version).filter(Ms).toSorted(pl).reverse()}async function oS(t,e){try{let r=Dn.split("-")[0],i=(await ui(t,void 0,e)).tag_name.slice(1);r!==i&&console.warn(`A new version (v${i}) of Medplum is available. Your current version (v${r}) may be missing important updates and bug fixes.`)}catch(r){console.warn(`Failed to check for newer version: ${_e(r)}`)}}export{He as AccessPolicyInteraction,fd as AckCode,ir as AndAtom,q as ArithmeticOperatorAtom,we as AsAtom,bl as CPT,bt as ClientStorage,Yt as ConcatAtom,Xt as ContainsAtom,V as ContentType,Hd as DAYS_OF_WEEK,tu as DEFAULT_ACCEPT,Vm as DEFAULT_MAX_SEARCH_COUNT,Dm as DEFAULT_SEARCH_COUNT,Vn as DataSampler,se as DotAtom,v as EMPTY,Jt as EmptySetAtom,er as EqualsAtom,rr as EquivalentAtom,Pn as EventTarget,Og as ExternalSecretSystems,An as FHIRCAST_EVENT_NAMES,Hc as FHIRCAST_EVENT_RESOURCES,wn as FHIRCAST_EVENT_VERSION_REQUIRED,jc as FHIRCAST_RESOURCE_TYPES,Ar as FhirFilterComparison,Or as FhirFilterConnective,wr as FhirFilterNegation,Ae as FhirPathAtom,mr as FhircastConnection,fs as FileBuilder,ae as FunctionAtom,pi as HL7_V2_0203,Mt as HTTP_HL7_ORG,_s as HTTP_TERMINOLOGY_HL7_ORG,Me as Hl7Context,ye as Hl7Field,hs as Hl7Message,Ot as Hl7Segment,El as ICD10,Md as INVALID_MEDICATION_CART_CONTENTS_RESPONSE,Od as INVALID_MEDICATION_CART_RESPONSE,Pd as INVALID_MEDICATION_CHECKOUT_RESPONSE,vd as INVALID_MEDICATION_ORDER_RESPONSE,Sd as INVALID_MEDICATION_ORDER_SET_RESPONSE,Ex as INVALID_MEDICATION_SEARCH_RESPONSE,ar as ImpliesAtom,Zt as InAtom,$e as IndexerAtom,A as InfixOperatorAtom,jn as InvalidOperationError,We as IsAtom,vl as LOINC,te as LRUCache,J as LiteralAtom,ct as LogLevel,xd as LogLevelNames,ys as Logger,bd as MEDICATION_REQUEST_STATUS_REASON_RESPONSE_NOT_RECEIVED,Td as MEDICATION_REQUEST_STATUS_REASON_SYSTEM,Rg as MEDPLUM_CLI_CLIENT_ID,ul as MEDPLUM_RELEASES_URL,Is as MEDPLUM_SEMVER_REGEX,Dn as MEDPLUM_VERSION,Zp as MRN_IDENTIFIER_TYPE,vr as MedplumClient,yr as MedplumKeyValueClient,kn as MemoryStorage,Y as MissingError,Uo as MockAsyncClientStorage,Rl as NDC,Af as NOOP,tr as NotEqualsAtom,nr as NotEquivalentAtom,du as OAuthClientAssertionType,st as OAuthGrantType,Pg as OAuthSigningAlgorithm,Cg as OAuthTokenAuthMethod,uu as OAuthTokenType,m as OperationOutcomeError,g as Operator,T as OperatorPrecedence,or as OrAtom,ri as PATIENT_PREFERRED_PHARMACY_URL,xs as PHARMACY_PREFERENCE_TYPE_SYSTEM,vs as PHARMACY_TYPE_PREFERRED,Zn as PHARMACY_TYPE_PRIMARY,Vr as Parser,kt as ParserBuilder,M as Pointer,It as PrefixOperatorAtom,p as PropertyType,_r as RATE_LIMIT_RESET_EXTENSION_URL,Bd as REQUIRES_DIAGNOSIS_CODE,qd as REQUIRES_MEDICAL_NECESSITY_CODE,Ud as REQUIRES_PROCEDURE_CODE,Tl as RXNORM,j as ReadablePromise,ot as ReconnectingWebSocket,eh as ReturnAckCategory,Fd as SCHEDULING_ELIGIBILITY_SYSTEM,Wd as SCHEDULING_REQUIREMENT_CODES,Sl as SNOMED,Zx as SchedulingEncounterCodingURI,rv as SchedulingMedicalNecessityURI,ut as SchedulingParametersURI,ev as SchedulingPlanDefinitionURI,tv as SchedulingScheduleColorURI,Ss as SchedulingSiteURI,nv as SchedulingSlotCapacityURI,iv as SchedulingUnvalidatedBookingURI,xe as SearchParameterType,ni as ServiceTypeReferenceURI,Rt as SubscriptionEmitter,xr as SubscriptionManager,U as SymbolAtom,$n as TestError,jd as TimezoneExtensionURI,Oe as Tokenizer,Un as TransformMapCollection,ue as TypedEventTarget,li as UCUM,Kt as UnaryOperatorAtom,qe as UnionAtom,Pa as VALID_HOSTNAME_REGEX,sr as XorAtom,Bl as accepted,Co as accessPolicySupportsInteraction,Pr as add,Gx as addPreferredPharmacyToPatient,vf as addProfileToResource,wl as allOk,be as append,ds as apply,Yg as applyDefaultValuesToElement,Kg as applyDefaultValuesToResource,Er as applyFixedOrPatternValue,Ny as applyPatch,Xi as arrayBufferToBase64,Yi as arrayBufferToHex,re as arrayify,qc as assert,Do as assertContextVersionOptional,Pf as assertNever,tp as assertOk,dl as assertReleaseManifest,ll as assertValidMedplumSemver,w as badRequest,y as booleanToTypedValue,yh as buildCdsRequest,_n as buildElementsContext,Rx as buildMedicationRequestResponseLostStatusReason,La as buildTypeName,Gl as businessRule,Ht as calculateAge,Kp as calculateAgeString,Km as canReadResourceType,Xm as canWriteResource,Ym as canWriteResourceType,B as capitalize,Es as checkForNull,rS as checkIfValidMedplumVersion,lv as clearHealthcareServiceSchedulingParameter,tS as clearReleaseCache,mv as clearScheduleParameter,dv as clearScheduleSchedulingParameter,af as codeableConceptMatchesToken,ya as codingMatchesToken,pl as compareVersions,ip as compressElement,$ as concatUrls,Jo as conceptMapTranslate,ql as conflict,Vl as contentTooLarge,ph as convertContainedResourcesToBundle,yo as convertToSearchableDates,Rm as convertToSearchableNumbers,Cm as convertToSearchableQuantities,vo as convertToSearchableReferences,xo as convertToSearchableStrings,So as convertToSearchableTokens,Pm as convertToSearchableUris,Ic as convertToTransactionBundle,rd as copy,Rf as countBy,Ef as countWhere,tn as crawlTypedValue,Tp as crawlTypedValueAsync,Ri as createConstraintIssue,In as createFhircastMessagePayload,Ne as createOperationOutcomeIssue,Ly as createPatch,Ld as createPreferredPharmacyExtension,Ci as createProcessingIssue,X as createReference,R as createStructureIssue,Fy as createTests,Ol as created,Oc as decodeBase64,pr as decodeBase64Url,fe as deepClone,Te as deepEquals,lt as deepIncludes,Ov as deriveIdentifierSearchParameter,ke as diffAny,Xu as diffArrays,Zu as diffObjects,lr as encodeBase64,Ao as encodeBase64Url,jv as encodeSmartHealthLink,wo as encryptSHA256,Ca as ensureNoLeadingSlash,mt as ensureTrailingSlash,Cf as escapeHtml,td as escapeToken,xm as evalFhirPath,k as evalFhirPathTyped,Yv as evalSqlOnFhir,Ho as expandSampledData,Dg as expandSampledObservation,fn as extractAccountReferences,xv as extractServiceTypeReferences,iS as fetchAllVersionStrings,nS as fetchLatestVersionString,ui as fetchVersionManifest,Wi as fhirPathArrayEquals,un as fhirPathArrayEquivalent,$i as fhirPathArrayNotEquals,pt as fhirPathEquals,oa as fhirPathEquivalent,et as fhirPathIs,qi as fhirPathNot,nn as fhirTypeToJsType,Yy as fhirpathPatchTypedValue,sf as findCodeBySystem,df as findObservationInterval,lf as findObservationReferenceRange,va as findObservationReferenceRanges,gf as findResourceByCode,fh as findResourceInBundle,oo as flatMapFilter,kl as forbidden,wa as formatAddress,Ee as formatCodeableConcept,ao as formatCoding,Mf as formatDate,tt as formatDateTime,kf as formatFamilyName,If as formatGivenName,yd as formatHl7DateTime,ht as formatHumanName,Lf as formatMoney,Va as formatObservationValue,Vf as formatPeriod,Pe as formatQuantity,Nf as formatRange,Aa as formatReferenceString,Nm as formatSearchQuery,Df as formatTime,_f as formatTiming,Oa as formatWallTime,ce as generateId,Di as getAllDataTypes,Xp as getAllQuestionnaireAnswers,Sv as getAppointmentSite,Rn as getBuffer,pn as getCodeBySystem,Se as getDataType,Jp as getDateProperty,Xg as getDefaultValuesForNewSliceEntry,ca as getDisplayString,jt as getElementDefinition,fo as getElementDefinitionForPath,po as getElementDefinitionFromElements,Qr as getElementDefinitionTypeName,Fv as getExpressionForResourceType,Os as getExpressionsForResourceType,le as getExtension,Re as getExtensionValue,hn as getExtensions,Jd as getHealthcareServiceSchedulingParameters,mn as getIdentifier,ef as getIdentifierByType,zp as getImageSrc,Cs as getInnerDerivedIdentifierExpression,wx as getMedicationOrderIframeUrl,Ye as getNestedProperty,Hl as getOutcomeRedirectUrl,Ps as getParsedDerivedIdentifierExpression,As as getParsedExpressionForResourceType,Ce as getPathDifference,Hf as getPathDisplayName,Px as getPendingMedicationOrderId,Ax as getPendingMedicationOrderStatus,Hx as getPreferredPharmaciesFromPatient,Ua as getPropertyDisplayName,io as getQueryString,Yp as getQuestionnaireAnswers,Cn as getRandomString,Ul as getRateLimitReset,I as getReferenceString,Fa as getResourceTypes,pv as getScheduleParameters,zd as getScheduleSchedulingParameters,av as getSchedulingRequirements,hv as getSchedulingTimezone,jf as getSearchParameter,Lv as getSearchParameterDetails,$f as getSearchParameters,Fm as getSearchResourceTypes,Gv as getSmartHealthLinkId,ep as getStatus,_ as getTypedPropertyValue,rn as getTypedPropertyValueWithPath,na as getTypedPropertyValueWithSchema,ia as getTypedPropertyValueWithoutSchema,Qo as getValueSliceName,no as getWebSocketUrl,nh as getWindow,Q as globalSchema,Ml as gone,sv as hasSchedulingParameters,Ru as indexConceptMapCodings,Li as indexDefaultSearchParameters,Sn as indexSearchParameter,Wf as indexSearchParameterBundle,Kr as indexStructureDefinitionBundle,Pi as inflateBaseSchema,Us as inflateElement,vt as initFhirPathParserBuilder,Ry as intersection,Lm as invalidSearchOperator,zl as isAccepted,md as isAckCode,Jx as isAddPharmacyResponse,ee as isBrowserEnvironment,ln as isCodeableConcept,$t as isCoding,Vo as isCompletedSubscriptionRequest,yn as isComplexTypeCode,Yl as isConflict,Mo as isContextVersionRequired,Ql as isCreated,Vi as isDataTypeLoaded,ji as isDateString,Ze as isDateTimeString,ov as isDayOfWeek,vn as isDefined,cs as isDestructive,O as isEmpty,$r as isError,eu as isFhirCriteriaMet,Gc as isFhircastResourceType,Xl as isGone,_o as isJwt,cf as isLowerCase,Cx as isMedicationArray,Dd as isMedicationCartContentsResponse,Id as isMedicationCartManageResponse,Ad as isMedicationCheckoutResponse,Ed as isMedicationOrderResponse,Rd as isMedicationOrderSetResponse,No as isMedplumAccessToken,rh as isNodeEnvironment,Kl as isNotFound,C as isObject,jr as isOk,dt as isOperationOutcome,zx as isOrganizationArray,Hi as isPeriod,pe as isPopulated,Ft as isPrimitiveType,_i as isProfileLoaded,aa as isProfileResource,N as isQuantity,Gi as isQuantityEquivalent,Jl as isRedirect,W as isReference,D as isResource,Lt as isResourceType,Xr as isResourceTypeSchema,ft as isResourceWithId,$d as isSchedulingRequirement,Go as isSliceDefinitionWithTypes,me as isString,of as isStringArray,xa as isTextObject,Gf as isTypedValue,nf as isUUID,Zl as isUnauthenticated,zt as isValidDate,xf as isValidHostname,Ms as isValidMedplumSemver,ro as lazy,Yr as loadDataType,ge as locationUtils,Sf as mapByIdentifier,an as matchDiscriminant,to as matchesRange,ur as matchesSearchRequest,Lx as medicationCartClearRequestToParameters,Ux as medicationCartContentsRequestToParameters,Nx as medicationCartRemoveRequestToParameters,Vx as medicationCheckoutRequestToParameters,Ix as medicationOrderRequestToParameters,Mx as medicationOrderSetRequestToParameters,Ox as medicationSearchParamsToParameters,bv as minutesToSchedulingDuration,zn as move,Nl as multipleMatches,Zi as normalizeArrayBufferView,$o as normalizeCreateBinaryOptions,mu as normalizeCreatePdfOptions,$c as normalizeErrorEvent,_e as normalizeErrorString,Nt as normalizeOperationOutcome,Ti as notFound,Il as notModified,Ls as operationOutcomeIssueToString,Ei as operationOutcomeToString,Bx as parametersToMedicationCartContentsResponse,Fx as parametersToMedicationCartManageResponse,_x as parametersToMedicationCheckoutResponse,kx as parametersToMedicationOrderResponse,Dx as parametersToMedicationOrderSetResponse,qx as parametersToOrderSetSyncResponse,cr as parseFhirPath,Ky as parseFhirPathPatchParameters,lx as parseFilterParameter,mx as parseHl7DateTime,gr as parseJWTPayload,xx as parseLogLevel,dy as parseMappingLanguage,oc as parseParameter,Qp as parseReference,St as parseSearchRequest,Hv as parseSmartHealthLink,zr as parseStructureDefinition,_m as parseXFhirQuery,Xe as pathToJSONPointer,ff as preciseEquals,hf as preciseGreaterThan,Ra as preciseGreaterThanOrEquals,mf as preciseLessThan,Ea as preciseLessThanOrEquals,pf as preciseRound,Dl as preconditionFailed,Cc as projectAdminResourceTypes,Rc as protectedResourceTypes,Pc as readInteractions,Ns as redirect,jl as redirectOk,Gn as remove,qt as removeDuplicates,Qx as removePreferredPharmacyFromPatient,Tf as removeProfileFromResource,Mc as reorderBundle,Qn as replace,Fc as replaceQueryVariables,Z as resolveId,og as resourceMatchesSubscriptionCriteria,Ac as satisfiedAccessPolicy,Tv as schedulingDurationToMinutes,Ir as serializeError,On as serializeFhircastSubscriptionRequest,Wl as serverError,$l as serverTimeout,yv as serviceTypeIncludesService,uf as setCodeBySystem,uv as setHealthcareServiceSchedulingParameter,tf as setIdentifier,Fl as setRateLimitReset,fv as setScheduleParameter,cv as setScheduleSchedulingParameter,L as singleton,yf as singularize,xn as sleep,Qt as sortStringArray,rt as splitN,Tt as splitSearchOnComma,Bv as streamToBuffer,Gt as stringify,mo as stringifyTypedValue,vy as structureMapTransform,fp as subsetResource,as as subtract,bf as sumBy,Mg as summarizeObservations,nd as test,vv as toAppointmentSiteReference,G as toJsBoolean,Wt as toPeriod,gv as toServiceTypeCodeableConcepts,E as toTypedValue,Ll as tooManyRequests,rf as trimTrailingEmptyElements,Fe as tryGetDataType,Lo as tryGetJwtExpiration,Ni as tryGetProfile,so as typedValueToString,Je as unauthorized,Wr as unauthorizedTokenAudience,bi as unauthorizedTokenExpired,ed as unescapeToken,_l as unsupportedMediaType,hr as validateFhircastSubscriptionRequest,Vp as validateResource,Pv as validateResourceType,Js as validateTypedValue,S as validationError,Ut as validationRegexes,oS as warnIfNewerVersionAvailable,cd as wordWrap};
|
|
55
55
|
/*!
|
|
56
56
|
* Reconnecting WebSocket
|
|
57
57
|
* by Pedro Ladaria <pedro.ladaria@gmail.com>
|