@medplum/core 3.0.12 → 3.0.13
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 +1 -1
- package/dist/cjs/index.cjs.map +3 -3
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/index.mjs.map +3 -3
- package/package.json +3 -3
package/dist/esm/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
var Le=class{constructor(e,t){this.operator=e;this.child=t}toString(){return`${this.operator}(${this.child.toString()})`}},Q=class{constructor(e,t,n){this.operator=e;this.left=t;this.right=n}toString(){return`${this.left.toString()} ${this.operator} ${this.right.toString()}`}},Ue=class{constructor(){this.prefixParselets={};this.infixParselets={}}registerInfix(e,t){return this.infixParselets[e]=t,this}registerPrefix(e,t){return this.prefixParselets[e]=t,this}prefix(e,t,n){return this.registerPrefix(e,{parse(i,o){let s=i.consumeAndParse(t);return n(o,s)}})}infixLeft(e,t,n){return this.registerInfix(e,{parse(i,o,s){let a=i.consumeAndParse(t);return n(o,s,a)},precedence:t})}construct(e){return new Vt(e,this.prefixParselets,this.infixParselets)}},Vt=class{constructor(e,t,n){this.tokens=e,this.prefixParselets=t,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 t=this.consume(),n=this.prefixParselets[t.id];if(!n)throw Error(`Parse error at "${t.value}" (line ${t.line}, column ${t.column}). No matching prefix parselet.`);let i=n.parse(this,t);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 t=this.getInfixParselet(e);return t?t.precedence:1/0}consume(e,t){if(!this.tokens.length)throw Error("Cant consume unknown more tokens.");if(e&&this.peek()?.id!==e){let n=this.peek();throw Error(`Expected ${e} but got "${n.id}" (${n.value}) at line ${n.line} column ${n.column}.`)}if(t&&this.peek()?.value!==t){let n=this.peek();throw Error(`Expected "${t}" 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]}};var Ar="http://unitsofmeasure.org",aa="http://loinc.org",ca="http://snomed.info/sct",ua="http://www.nlm.nih.gov/research/umls/rxnorm",la="http://www.ama-assn.org/go/cpt",pa="http://hl7.org/fhir/sid/icd-10",Or="http://hl7.org";var Dt="ok",Be="created",Mt="gone",Nt="not-modified",Ft="not-found",Ir="conflict",kr="unauthorized",Vr="precondition-failed",Dr="forbidden",Mr="too-many-requests",qe="accepted",fa={resourceType:"OperationOutcome",id:Dt,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},ma={resourceType:"OperationOutcome",id:Be,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},ha={resourceType:"OperationOutcome",id:Nt,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},Nr={resourceType:"OperationOutcome",id:Ft,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},ya={resourceType:"OperationOutcome",id:kr,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},ga={resourceType:"OperationOutcome",id:Dr,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},xa={resourceType:"OperationOutcome",id:Mt,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},va={resourceType:"OperationOutcome",id:Vr,issue:[{severity:"error",code:"lock-error",details:{text:"Precondition Failed"}}]},Ta={resourceType:"OperationOutcome",id:Mr,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function Sa(r){return{resourceType:"OperationOutcome",id:qe,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:r}]}}function R(r,e){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:r},expression:e?[e]:void 0}]}}function Ea(r){return{resourceType:"OperationOutcome",id:Ir,issue:[{severity:"error",code:"conflict",details:{text:r}}]}}function m(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"structure",details:{text:r}}]}}function Fr(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function ue(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function _t(r){return r.id===Dt||r.id===Be||r.id===Nt||r.id===qe}function ba(r){return r.id===Be}function Ra(r){return r.id===qe}function Ca(r){return r.id===Ft}function Pa(r){return r.id===Mt}function wa(r){switch(r.id){case Dt:return 200;case Be:return 201;case qe:return 202;case Nt:return 304;case kr:return 401;case Dr:return 403;case Ft:return 404;case Ir:return 409;case Mt:return 410;case Vr:return 412;case Mr:return 429;default:return r.issue?.[0]?.code==="exception"?500:400}}function Aa(r,e){if(!_t(r)||e===void 0)throw new d(r)}var d=class extends Error{constructor(e,t){super(_r(e)),this.outcome=e,this.cause=t}};function je(r){return r instanceof d?r.outcome:ue(r)?r:R(hi(r))}function hi(r){return r?typeof r=="string"?r:r instanceof Error?r.message:ue(r)?_r(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function _r(r){let e=r.issue?.map(yi)??[];return e.length>0?e.join("; "):"Unknown error"}function yi(r){let e;return r.details?.text?r.diagnostics?e=`${r.details.text} (${r.diagnostics})`:e=r.details.text:r.diagnostics?e=r.diagnostics:e="Unknown error",r.expression?.length&&(e+=` (${r.expression.join(", ")})`),e}function le(r,e,t,n,i){let o={severity:r,code:e,details:{text:t},expression:[n]};return i&&(o.diagnostics=JSON.stringify(i)),o}function v(r,e){return le("error","structure",e,r)}function Lr(r,e){return le("error","invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function Ur(r,e,t,n){return le("error","processing",e,r,{...n,error:t})}var gi={"http://hl7.org/fhirpath/System.String":"string"};function Ia(r){let e={};return r.min!==0&&(e.min=r.min),r.max!==1&&Number.isFinite(r.max)?e.max=r.max:r.max===Number.POSITIVE_INFINITY&&(e.max=Number.MAX_SAFE_INTEGER),e.type=r.type?.map(t=>({...t,extension:void 0,code:gi[t.code]??t.code})),e}function xi(r,e){let t=e.max&&e.max===Number.MAX_SAFE_INTEGER?Number.POSITIVE_INFINITY:e.max;return{path:r,description:"",type:e.type??[],min:e.min??0,max:t??1,isArray:!!t&&t>1,constraints:[]}}function Br(r){let e=Object.create(null);for(let[t,n]of Object.entries(r))e[t]={name:t,elements:Object.fromEntries(Object.entries(n.elements).map(([i,o])=>[i,xi(i,o)])),constraints:[],innerTypes:[]};return e}var qr={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"}]}}},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"]}]}}},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"}]}}},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"}]},account:{type:[{code:"Reference"}]},compartment:{max:9007199254740991,type:[{code:"Reference"}]}}},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"}]}}},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"}]}}},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"}]}}},MetadataResource:{elements:{id:{type:[{code:"string"}]},meta:{type:[{code:"Meta"}]},implicitRules:{type:[{code:"uri"}]},language:{type:[{code:"code"}]},text:{type:[{code:"Narrative"}]},contained:{max:9007199254740991,type:[{code:"Resource"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},url:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},name:{type:[{code:"string"}]},title:{type:[{code:"string"}]},status:{min:1,type:[{code:"code"}]},experimental:{type:[{code:"boolean"}]},date:{type:[{code:"dateTime"}]},publisher:{type:[{code:"string"}]},contact:{max:9007199254740991,type:[{code:"ContactDetail"}]},description:{type:[{code:"markdown"}]},useContext:{max:9007199254740991,type:[{code:"UsageContext"}]},jurisdiction:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},IdentityProvider:{elements:{authorizeUrl:{min:1,type:[{code:"string"}]},tokenUrl:{min:1,type:[{code:"string"}]},tokenAuthMethod:{type:[{code:"code"}]},userInfoUrl:{min:1,type:[{code:"string"}]},clientId:{min:1,type:[{code:"string"}]},clientSecret:{min:1,type:[{code:"string"}]},usePkce:{type:[{code:"boolean"}]},useSubject:{type:[{code:"boolean"}]}}}};function jt(r){return new Bt(r).parse()}var Re=Br(qr),$t=Object.create(null),jr=Object.create(null);function Ut(r){let e;return r?(e=jr[r],e||(e=jr[r]=Object.create(null))):e=Re,e}function Ht(r,e){let t=Array.isArray(r)?r:r.entry?.map(n=>n.resource)??[];for(let n of t)Gt(n,e)}function Gt(r,e){if(!r?.name)throw new Error("Failed loading StructureDefinition from bundle");if(r.resourceType!=="StructureDefinition")return;let t=jt(r),n=Ut(e);n[r.name]=t,e&&r.url===e&&($t[e]=t);for(let i of t.innerTypes)i.parentType=t,n[i.name]=i}function Qr(){return Re}function Wr(r){return!!Re[r]}function Ce(r,e){let t=Ut(e)[r];return!t&&e&&(t=Ut()[r]),t}function de(r,e){let t=Ce(r,e);if(!t)throw new d(R("Unknown data type: "+r));return t}function Kr(r){let e=Re[r];return e&&Wt(e)}function zr(r){return!!$t[r]}function Jr(r){return $t[r]}var Bt=class{constructor(e){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,title:e.title,type:e.type,url:e.url,kind:e.kind,description:bi(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 t=Lt(e,this.slicingContext.path);this.slicingContext.current.elements[t]=this.parseElementDefinition(e)}}else{let t=this.parseElementDefinition(e);this.checkFieldEnter(e,t);let n=this.backboneContext;for(;n;){if(e.path?.startsWith(n.path+".")){n.type.elements[Lt(e,n.path)]=t;break}n=n.parent}if(!n){let i=Lt(e,this.root.path);e.isSummary&&this.resourceSchema.summaryProperties?.add(i.replace("[x]","")),t.min>0&&this.resourceSchema.mandatoryProperties?.add(i.replace("[x]","")),this.resourceSchema.elements[i]=t}this.checkFieldExit(e)}e=this.next()}return this.checkFieldExit(),this.innerTypes.length>0&&(this.resourceSchema.innerTypes=this.innerTypes),this.resourceSchema}checkFieldEnter(e,t){this.isInnerType(e)&&this.enterInnerType(e),e.slicing&&!this.slicingContext&&this.enterSlice(e,t)}enterInnerType(e){for(;this.backboneContext&&!pe(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;this.backboneContext={type:{name:qt(e),title:e.label,description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path??"",parent:pe(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,t){Ei(e)&&!this.peek()?.sliceName||(t.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:t.slicing,path:e.path??""})}checkFieldExit(e=void 0){if(this.backboneContext&&!pe(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!pe(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),delete this.backboneContext;this.slicingContext&&!pe(this.slicingContext.path,e?.path)&&(this.slicingContext?.current&&this.slicingContext.field.slices.push(this.slicingContext.current),delete this.slicingContext)}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 t=this.elementIndex[e.contentReference.slice(e.contentReference.indexOf("#")+1)];return t?{...t,id:e.id,path:e.path,min:e.min??t.min,max:e.max??t.max,contentReference:e.contentReference,definition:e.definition}:void 0}return e}}isInnerType(e){let t=this.peek();return!!(pe(e?.path,t?.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.slicingContext.field.slices.push(this.slicingContext.current),this.slicingContext.current={name:e.sliceName??"",path:e.path??"",definition:e.definition,type:this.parseElementDefinitionType(e),elements:{},min:e.min??0,max:e.max==="*"?Number.POSITIVE_INFINITY:Number.parseInt(e.max,10),binding:e.binding}}parseElementDefinitionType(e){return(e.type??[]).map(t=>{let n;return(t.code==="BackboneElement"||t.code==="Element")&&(n=qt(e)),n||(n=Qt(t,"http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type")?.valueUrl),n||(n=t.code??""),{code:n,targetProfile:t.targetProfile,profile:t.profile}})}parseElementDefinition(e){let t=Hr(e.max),n=e.base?.max?Hr(e.base.max):t,i={type:"ElementDefinition",value:e};return{description:e.definition||"",path:e.path||e.base?.path||"",min:e.min??0,max:t,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:Gr(w(i,"fixed[x]")),pattern:Gr(w(i,"pattern[x]")),binding:e.binding}}};function qa(r,e){if(!r)return;let t=[];for(let n of e){t.push("_"+n);let i=Re[r.resourceType].elements[n+"[x]"];i&&t.push(...i.type.map(o=>n+P(o.code)))}for(let n of Object.getOwnPropertyNames(r))!e.includes(n)&&!t.includes(n)&&!Ti.includes(n)&&Object.defineProperty(r,n,{enumerable:!1,writable:!1,value:void 0});return r.meta={...r.meta,tag:r.meta?.tag?r.meta.tag.concat($r):[$r]},r}var $r={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},Ti=["resourceType","id","meta"];function Hr(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function Lt(r,e=""){return Si(r.path,e)}function Si(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function pe(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function Gr(r){return Array.isArray(r)&&r.length>0?r[0]:S(r)?void 0:r}function Ei(r){let e=r.slicing?.discriminator;return!!(r.type?.some(t=>t.code==="Extension")&&e?.length===1&&e[0].type==="value"&&e[0].path==="url")}function bi(r){let e=r.description;return e?.startsWith(`Base StructureDefinition for ${r.name} Type: `)&&(e=e.substring(`Base StructureDefinition for ${r.name} Type: `.length)),e}function zt(r,e,t,n){new Kt(r,e,t,n).crawl()}var Kt=class{constructor(e,t,n,i){this.rootResource=e,this.visitor=t,n?this.schema=n:this.schema=de(e.resourceType),i?this.initialPath=i:this.initialPath=e.resourceType}crawl(){this.crawlObject(x(this.rootResource),this.schema,this.initialPath)}crawlObject(e,t,n){let i=_(e.value);i&&this.visitor.onEnterResource&&this.visitor.onEnterResource(n,e,t),this.visitor.onEnterObject&&this.visitor.onEnterObject(n,e,t);for(let o of Object.keys(t.elements))this.crawlProperty(e,o,t,`${n}.${o}`);this.visitor.onExitObject&&this.visitor.onExitObject(n,e,t),i&&this.visitor.onExitResource&&this.visitor.onExitResource(n,e,t)}crawlProperty(e,t,n,i){let o=Pe(e,t);this.visitor.visitProperty&&this.visitor.visitProperty(e,t,i,o,n);for(let s of o)if(s)for(let a of He(s))this.crawlPropertyValue(a,i)}crawlPropertyValue(e,t){if(!$e(e.type.charAt(0))){let n=de(e.type);this.crawlObject(e,n,t)}}};function Pe(r,e,t){if(e==="$this")return[r];let[n,...i]=e.split("."),o=[w(r,n,t)];for(let s of i){let a=[];for(let c of o)if(Array.isArray(c))for(let u of c)a.push(w(u,s,t));else c!==void 0&&a.push(w(c,s,t));o=a}return o}var Yr={base64Binary:"string",boolean:"boolean",canonical:"string",code:"string",date:"string",dateTime:"string",decimal:"number",id:"string",instant:"string",integer:"number",markdown:"string",oid:"string",positiveInt:"number",string:"string",time:"string",unsignedInt:"number",uri:"string",url:"string",uuid:"string",xhtml:"string","http://hl7.org/fhirpath/System.String":"string"},Ge={base64Binary:/^([A-Za-z\d+/]{4})*([A-Za-z\d+/]{2}==|[A-Za-z\d+/]{3}=)?$/,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:/^[\s\S]+$/,oid:/^urn:oid:[0-2](\.(0|[1-9]\d*))+$/,string:/^[\s\S]+$/,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:/.*/},Ri={"ele-1":!0,"dom-3":!0,"org-1":!0,"sdf-19":!0};function dc(r,e){return new Jt(r.resourceType,r,e).validate()}var Jt=class{constructor(e,t,n){this.issues=[],this.rootResource=t,this.currentResource=[t],n?.profile?this.schema=jt(n.profile):this.schema=de(e)}validate(){let e=this.rootResource.resourceType;if(!e)throw new d(m("Missing resource type"));this.constraintsCheck(x(this.rootResource),this.schema,e),Yt(this.rootResource,e,this.issues),zt(this.rootResource,this,this.schema);let t=this.issues,n=!1;for(let i of t)i.severity==="error"&&(n=!0);if(n)throw new d({resourceType:"OperationOutcome",issue:t});return t}onExitObject(e,t,n){this.checkAdditionalProperties(t,n.elements,e)}onEnterResource(e,t){this.currentResource.push(t.value)}onExitResource(){this.currentResource.pop()}visitProperty(e,t,n,i,o){let s=o.elements[t];if(!s)throw new Error(`Missing element validation schema for ${t}`);for(let a of i){if(!this.checkPresence(a,s,n))return;let c;if(s.isArray){if(!Array.isArray(a)){this.issues.push(v(n,"Expected array of values for property"));return}c=a}else{if(Array.isArray(a)){this.issues.push(v(n,"Expected single value for property"));return}c=[a]}(c.length<s.min||c.length>s.max)&&this.issues.push(v(s.path,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${c.length}`)),Zr(a,s)||this.issues.push(v(n,"Value did not match expected pattern"));let u=s.slicing?Object.fromEntries(s.slicing.slices.map(p=>[p.name,0])):void 0;for(let p of c){this.constraintsCheck(p,s,n),this.referenceTypeCheck(p,s,n),this.checkPropertyValue(p,n);let y=wi(p,s.slicing);y&&u&&(u[y]+=1)}this.validateSlices(s.slicing?.slices,u,n)}}checkPresence(e,t,n){return e===void 0?(t.min>0&&this.issues.push(v(n,"Missing required property")),!1):S(e)?(this.issues.push(v(n,"Invalid empty value")),!1):!0}checkPropertyValue(e,t){$e(e.type.charAt(0))&&this.validatePrimitiveType(e,t)}validateSlices(e,t,n){if(!(!e||!t))for(let i of e){let o=t[i.name];(o<i.min||o>i.max)&&this.issues.push(v(n,`Incorrect number of values provided for slice '${i.name}': expected ${i.min}..${Number.isFinite(i.max)?i.max:"*"}, but found ${o}`))}}checkAdditionalProperties(e,t,n){let i=e.value;if(!i)return;let o={};for(let s of Object.keys(i)){if(s==="resourceType")continue;let a=Pi(e,s,t);if(a){o[a]&&this.issues.push(le("warning","structure",`Duplicate choice of type property "${a}"`,a)),o[a]=!0;continue}!(s in t)&&!(s.startsWith("_")&&s.slice(1)in t)&&this.issues.push(v(`${n}.${s}`,`Invalid additional property "${s}"`))}}constraintsCheck(e,t,n){let i=t.constraints;if(i){for(let o of i)if(o.severity==="error"&&!(o.key in Ri)&&!this.isExpressionTrue(o,e,n)){this.issues.push(Lr(n,o));return}}}referenceTypeCheck(e,t,n){if(e.type!=="Reference")return;let i=e.value;if(!Z(i))return;let o=i.reference.split("/")[0];if(!o)return;let s=t.type.find(g=>g.code==="Reference")?.targetProfile;if(!s)return;let a=Or+"/fhir/StructureDefinition/",c=a+"Resource",u=a+o,p="https://medplum.com/fhir/StructureDefinition/",y=p+o;for(let g of s)if(g===c||g===u||g===y||!g.startsWith(a)&&!g.startsWith(p))return;this.issues.push(le("warning","structure",`Invalid reference for "${n}", got "${o}", expected "${s.join('", "')}"`,n))}isExpressionTrue(e,t,n){try{let i=$(e.expression,[t],{"%context":t,"%resource":x(this.currentResource[this.currentResource.length-1]),"%rootResource":x(this.rootResource),"%ucum":x(Ar)});return i.length===1&&i[0].value===!0}catch(i){return this.issues.push(Ur(n,"Error evaluating invariant expression",i,{fhirpath:e.expression})),!1}}validatePrimitiveType(e,t){let[n,i]=Ai(e);if(n){let{type:o,value:s}=n;if(!(o in Yr)){this.issues.push(v(t,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=Yr[o];if(typeof s!==a){s!==null&&this.issues.push(v(t,`Invalid JSON type: expected ${a}, but got ${typeof s}`));return}a==="string"?this.validateString(s,o,t):a==="number"&&this.validateNumber(s,o,t)}i&&zt(i.value,this,de("Element"),t)}validateString(e,t,n){if(!e.trim()){this.issues.push(v(n,"String must contain non-whitespace content"));return}let i=Ge[t];i&&!i.exec(e)&&this.issues.push(v(n,"Invalid "+t+" format"))}validateNumber(e,t,n){Number.isNaN(e)||!Number.isFinite(e)?this.issues.push(v(n,"Invalid numeric value")):Ci(t)&&!Number.isInteger(e)?this.issues.push(v(n,"Expected number to be an integer")):t===l.positiveInt&&e<=0?this.issues.push(v(n,"Expected number to be positive")):t===l.unsignedInt&&e<0&&this.issues.push(v(n,"Expected number to be non-negative"))}};function Ci(r){return r===l.integer||r===l.positiveInt||r===l.unsignedInt}function Pi(r,e,t){e.startsWith("_")&&(e=e.slice(1));let n=e.split(/(?=[A-Z])/g),i="";for(let o of n){i+=o;let s=i+"[x]";if(t[s])return w(r,i)?s:void 0}}function Yt(r,e,t){for(let[n,i]of Object.entries(r)){let o=`${e}.${n}`,s=n.startsWith("_")?n.slice(1):`_${n}`;if(i===null)t.push(v(o,"Invalid null value"));else if(Array.isArray(i))for(let a=0;a<i.length;a++)i[a]===void 0?t.push(v(`${o}[${a}]`,"Invalid undefined value")):i[a]===null&&!r[s]?.[a]?t.push(v(`${o}[${a}]`,"Invalid null value")):i[a]&&Yt(i[a],`${o}[${a}]`,t);else typeof i=="object"&&Yt(i,o,t)}}function Zr(r,e){return!(e.pattern&&!We(r,e.pattern)||e.fixed&&!Qe(r,e.fixed))}function Zt(r,e,t,n){if(Array.isArray(r))return!1;let i=(n??t.elements)[e.path],o=t.type;switch(e.type){case"value":case"pattern":if(!r||!i)return!1;if(Zr(r,i))return!0;break;case"type":return!r||!o?.length?!1:o.some(s=>s.code===r.type)}return!1}function wi(r,e){if(e){for(let t of e.slices)if(e.discriminator.every(n=>He(Pe(r,n.path))?.some(i=>Zt(i,n,t))))return t.name}}function Ai(r){if(typeof r.value!="object"||!r.value)return[r,void 0];let e=r.value.valueOf();if(e===r.value)return[void 0,{type:"Element",value:r.value}];let t=new Set(Object.keys(e)),n=Object.entries(r.value).filter(([o,s])=>!t.has(o)),i=n.length>0?Object.fromEntries(n):void 0;return[{type:r.type,value:e},{type:"Element",value:i}]}function f(r){return[{type:l.boolean,value:r}]}function x(r){return r==null?{type:"undefined",value:void 0}:Number.isSafeInteger(r)?{type:l.integer,value:r}:typeof r=="number"?{type:l.decimal,value:r}:typeof r=="boolean"?{type:l.boolean,value:r}:typeof r=="string"?{type:l.string,value:r}:O(r)?{type:l.Quantity,value:r}:_(r)?{type:r.resourceType,value:r}:{type:l.BackboneElement,value:r}}function F(r){return r.length===0?!1:!!r[0].value}function L(r,e){if(r.length!==0){if(r.length===1&&(!e||r[0].type===e))return r[0];throw new Error(`Expected singleton of type ${e}, but found ${JSON.stringify(r)}`)}}function w(r,e,t){if(!r.value)return;let n=Ye(r.type,e,t?.profileUrl);return n?Oi(r,e,n):Ii(r,e)}function Oi(r,e,t){let n=r.value,i=t.type;if(!i||i.length===0)return;let o,s="undefined",a;if(t.path.endsWith("[x]")){let c=t.path.split(".").pop().replace("[x]","");for(let u of i){let p=c+P(u.code);if(o=n[p],a=n["_"+p],o!==void 0||a!==void 0){s=u.code;break}}}else console.assert(i.length===1,"Expected single type",t.path),o=n[e],s=i[0].code,a=n["_"+e];if(a)if(Array.isArray(o)){o=o.slice();for(let c=0;c<Math.max(o.length,a.length);c++)o[c]=nn(o[c],a[c])}else o=nn(o,a);if(!S(o))return(s==="Element"||s==="BackboneElement")&&(s=t.type[0].code),Array.isArray(o)?o.map(c=>Xr(c,s)):Xr(o,s)}function Xr(r,e){return e==="Resource"&&_(r)&&(e=r.resourceType),{type:e,value:r}}function Ii(r,e){let t=r.value;if(!t||typeof t!="object")return;let n;if(e in t)n=t[e];else for(let i in l){let o=e+P(i);if(o in t){n=t[o];break}}if(!S(n))return Array.isArray(n)?n.map(x):x(n)}function ze(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(F(on(t,i))){n=!0;break}n||e.push(t)}return e}function Xt(r){return f(!F(r))}function er(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?f(!1):f(r.every((t,n)=>F(on(t,e[n]))))}function on(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?f(Math.abs(t-n)<1e-8):O(t)&&O(n)?f(cn(t,n)):f(typeof t=="object"&&typeof n=="object"?rr(r,e):t===n)}function tr(r,e){return r.length===0&&e.length===0?f(!0):r.length!==e.length?f(!1):(r.sort(en),e.sort(en),f(r.every((t,n)=>F(ki(t,e[n])))))}function ki(r,e){let{type:t,value:n}=r,{type:i,value:o}=e,s=n?.valueOf(),a=o?.valueOf();return typeof s=="number"&&typeof a=="number"?f(Math.abs(s-a)<.01):O(s)&&O(a)?f(cn(s,a)):f(t==="Coding"&&i==="Coding"?typeof s!="object"||typeof a!="object"?!1:s.code===a.code&&s.system===a.system:typeof s=="object"&&typeof a=="object"?rr({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function en(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?t-n:typeof t=="string"&&typeof n=="string"?t.localeCompare(n):0}function Je(r,e){let{value:t}=r;if(t==null)return!1;switch(e){case"Boolean":return typeof t=="boolean";case"Decimal":case"Integer":return typeof t=="number";case"Date":return sn(t);case"DateTime":return Ke(t);case"Time":return typeof t=="string"&&!!/^T\d/.exec(t);case"Period":return an(t);case"Quantity":return O(t);default:return typeof t=="object"&&t?.resourceType===e}}function sn(r){return typeof r=="string"&&!!Ge.date.exec(r)}function Ke(r){return typeof r=="string"&&!!Ge.dateTime.exec(r)}function an(r){return!!(r&&typeof r=="object"&&("start"in r&&Ke(r.start)||"end"in r&&Ke(r.end)))}function xc(r){if(r){if(sn(r))return{start:tn(r,"0000-00-00T00:00:00.000Z"),end:tn(r,"xxxx-12-31T23:59:59.999Z")};if(Ke(r))return{start:r,end:r};if(an(r))return r}}function tn(r,e){return r+e.substring(r.length)}function O(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function cn(r,e){return Math.abs(r.value-e.value)<.01&&(r.unit===e.unit||r.code===e.code||r.unit===e.code||r.code===e.unit)}function rr(r,e){let t=Object.keys(r),n=Object.keys(e);if(t.length!==n.length)return!1;for(let i of t){let o=r[i],s=e[i];if(rn(o)&&rn(s)){if(!rr(o,s))return!1}else if(o!==s)return!1}return!0}function rn(r){return r!==null&&typeof r=="object"}function nn(r,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return Vi(r??{},e)}return r}function Vi(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}function W(r){let e=X(r),t=Mi(r);return t===e?{reference:e}:{reference:e,display:t}}function X(r){return Z(r)?r.reference:`${r.resourceType}/${r.id}`}function Xe(r){if(r)return Z(r)?r.reference.split("/")[1]:r.id}function Rc(r){if(r?.reference===void 0)throw new d(m("Reference missing reference property."));let[e,t]=r.reference.split("/");if(e===""||t===""||t===void 0)throw new d(m("Unable to parse reference string."));return[e,t]}function Di(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function Mi(r){if(Di(r)){let e=Ni(r);if(e)return e}if(r.resourceType==="Device"){let e=Fi(r);if(e)return e}if(r.resourceType==="MedicationRequest"){let e=r.medicationCodeableConcept;if(e)return Ze(e)}if(r.resourceType==="User"&&r.email)return r.email;if("name"in r&&r.name&&typeof r.name=="string")return r.name;if("code"in r&&r.code){let e=r.code;if(Array.isArray(e)&&(e=e[0]),Gi(e))return Ze(e);if(Qi(e))return e.text}return X(r)}function Ni(r){let e=r.name;if(e&&e.length>0)return tt(e[0])}function Fi(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function Cc(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=un(t);if(n)return n}else return un(e)}function un(r){if(r.url&&r.contentType&&r.contentType.startsWith("image/"))return r.url}function Pc(r){return r?new Date(r):void 0}function et(r,e){let t=new Date(r);t.setUTCHours(0,0,0,0);let n=e?new Date(e):new Date;n.setUTCHours(0,0,0,0);let i=t.getUTCFullYear(),o=t.getUTCMonth(),s=t.getUTCDate(),a=n.getUTCFullYear(),c=n.getUTCMonth(),u=n.getUTCDate(),p=a-i;(c<o||c===o&&u<s)&&p--;let y=a*12+c-(i*12+o);u<s&&y--;let g=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:p,months:y,days:g}}function wc(r,e){let{years:t,months:n,days:i}=et(r,e);return t>=2?t.toString().padStart(3,"0")+"Y":n>=1?n.toString().padStart(3,"0")+"M":i.toString().padStart(3,"0")+"D"}function Ac(r){let e={};return ln(r.item,e),e}function ln(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),ln(t.item,e)}function Oc(r){let e={};return pn(r.item,e),e}function pn(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer),pn(t.item,e)}function Ic(r,e){let t=r.identifier;if(!t)return;let n=Array.isArray(t)?t:[t];for(let i of n)if(i.system===e)return i.value}function kc(r,e,t){let n=r.identifier;if(!n){r.identifier=[{system:e,value:t}];return}for(let i of n)if(i.system===e){i.value=t;return}n.push({system:e,value:t})}function Vc(r,...e){let t=Qt(r,...e);if(!t)return;let n=w({type:"Extension",value:t},"value[x]");if(n)return Array.isArray(n)?n[0].value:n.value}function Qt(r,...e){let t=r;for(let n=0;n<e.length&&t;n++)t=t?.extension?.find(i=>i.url===e[n]);return t}function dn(r,e){return JSON.stringify(r,_i,e?2:void 0)}function _i(r,e){return!Li(r)&&S(e)?void 0:e}function Li(r){return!!/\d+$/.exec(r)}function S(r){if(r==null)return!0;let e=typeof r;return e==="string"||e==="object"?!H(r):!1}function H(r){if(r==null)return!1;let e=typeof r;return e==="string"&&r!==""||e==="object"&&("length"in r&&r.length>0||Object.keys(r).length>0)}function Qe(r,e,t){return r===e||S(r)&&S(e)?!0:S(r)||S(e)?!1:Array.isArray(r)&&Array.isArray(e)?Ui(r,e):Array.isArray(r)||Array.isArray(e)?!1:b(r)&&b(e)?Bi(r,e,t):(b(r)||b(e),!1)}function Ui(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!Qe(r[t],e[t]))return!1;return!0}function Bi(r,e,t){let n=new Set;Object.keys(r).forEach(i=>n.add(i)),Object.keys(e).forEach(i=>n.add(i)),t==="meta"&&(n.delete("versionId"),n.delete("lastUpdated"),n.delete("author"));for(let i of n){let o=r[i],s=e[i];if(!Qe(o,s,i))return!1}return!0}function We(r,e){return S(r)?!0:S(e)?!1:Array.isArray(r)&&Array.isArray(e)?qi(r,e):Array.isArray(r)||Array.isArray(e)?!1:b(r)&&b(e)?ji(r,e):b(r)||b(e)?!1:r===e}function qi(r,e){return e.every(t=>r.some(n=>We(n,t)))}function ji(r,e){return Object.entries(e).every(([t,n])=>t in r&&We(r[t],n))}function ee(r){return r===void 0?r:JSON.parse(JSON.stringify(r))}function Dc(r){return!!/^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/i.exec(r)}function b(r){return r!==null&&typeof r=="object"}function fn(r){return r.every($i)}function $i(r){return typeof r=="string"}function Hi(r){return b(r)&&"code"in r&&typeof r.code=="string"}function Gi(r){return b(r)&&"coding"in r&&Array.isArray(r.coding)&&r.coding.every(Hi)}function Qi(r){return b(r)&&"text"in r&&typeof r.text=="string"}var mn=[];for(let r=0;r<256;r++)mn.push(r.toString(16).padStart(2,"0"));function hn(r){let e=new Uint8Array(r),t=new Array(e.length);for(let n=0;n<e.length;n++)t[n]=mn[e[n]];return t.join("")}function yn(r){let e=new Uint8Array(r),t=[];for(let n=0;n<e.length;n++)t[n]=String.fromCharCode(e[n]);return window.btoa(t.join(""))}function P(r){return r?r.charAt(0).toUpperCase()+r.substring(1):""}function $e(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function ir(r){return r.length>0&&r.startsWith(r[0].toUpperCase())}function fe(r,e){let t=r+".";if(e.startsWith(t))return e.slice(t.length)}function nr(r,e){return r.coding?.find(t=>t.system===e)?.code}function Mc(r,e,t){r.coding||(r.coding=[]);let n=r.coding.find(i=>i.system===e);n?n.code=t:r.coding.push({system:e,code:t})}function Nc(r,e,t,n){return r.qualifiedInterval?.find(i=>gn(i,e)&&zi(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function Fc(r,e,t){return r.qualifiedInterval?.find(n=>gn(n,e)&&t.includes(n.condition))}function gn(r,e){return Wi(r,e)&&Ki(r,e)}function Wi(r,e){return!r.gender||r.gender===e.gender}function Ki(r,e){return!r.age||xn(et(e.birthDate).years,r.age)}function zi(r,e,t){return!!r.range&&xn(e,r.range,t)}function xn(r,e,t){return(e.low?.value===void 0||Yi(r,e.low.value,t))&&(e.high?.value===void 0||Ji(r,e.high.value,t))}function _c(r,e){return parseFloat(r.toFixed(e))}function Lc(r,e,t){return U(r,t)===U(e,t)}function Uc(r,e,t){return U(r,t)<U(e,t)}function Bc(r,e,t){return U(r,t)>U(e,t)}function Ji(r,e,t){return U(r,t)<=U(e,t)}function Yi(r,e,t){return U(r,t)>=U(e,t)}function U(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function qc(r,e,t){return r.find(n=>typeof e=="string"?nr(n.code||{},t)===e:nr(n.code||{},t)===nr(e,t))}function He(r){if(r)return Array.isArray(r)?r:[r]}var or=r=>new Promise(e=>{setTimeout(e,r)});function jc(r,e,t){let n=[];for(let i=0;i<t-1;i++){let o=r.indexOf(e);if(o<0)break;n.push(r.slice(0,o)),r=r.slice(o+e.length)}return n.push(r),n}function vn(r){let e,t=!1;return function(){return t||(e=r(),t=!0),e}}function me(r,e){return r?(r.push(e),r):[e]}function Tn(r,e){return new URL(r,e).toString().replace("http://","ws://").replace("https://","wss://")}function Gc(r,e){let t=[];if(r.line&&t.push(...r.line),r.city||r.state||r.postalCode){let n=[];r.city&&n.push(r.city),r.state&&n.push(r.state),r.postalCode&&n.push(r.postalCode),t.push(n.join(", "))}return r.use&&(e?.all||e?.use)&&t.push("["+r.use+"]"),t.join(e?.lineSeparator??", ").trim()}function tt(r,e){let t=[];if(r.prefix&&e?.prefix!==!1&&t.push(...r.prefix),r.given&&t.push(...r.given),r.family&&t.push(r.family),r.suffix&&e?.suffix!==!1&&t.push(...r.suffix),r.use&&(e?.all||e?.use)&&t.push("["+r.use+"]"),t.length===0){let n=he(r.text);if(n)return n}return t.join(" ").trim()}function Qc(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function Wc(r){return he(r.family)??""}function ar(r){return r instanceof Date&&!isNaN(r.getTime())}function Kc(r,e,t){if(!r)return"";let n=new Date(r);return ar(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function Zi(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return ar(n)?n.toLocaleTimeString(e,t):""}function sr(r,e,t){if(!r)return"";let n=new Date(r);return ar(n)?n.toLocaleString(e,t):""}function zc(r,e,t){return!r||!r.start&&!r.end?"":sr(r.start,e,t)+" - "+sr(r.end,e,t)}var Xi={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},eo={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},to={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function Jc(r){if(!r)return"";let e=[];return ro(e,r.repeat),r.event&&e.push(r.event.map(t=>sr(t)).join(", ")),P(e.join(" ").trim())}function ro(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(Xi[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+eo[i]):r.push("per "+n+" "+to[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(P).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>Zi(o)).join(", "))}function Yc(r,e,t=!1){if(t&&e===void 0)throw new Error("Precision must be specified for exclusive ranges");let n=r?.low&&{...r.low,comparator:void 0},i=r?.high&&{...r.high,comparator:void 0};return n?.value===void 0&&i?.value===void 0?"":n?.value!==void 0&&i?.value===void 0?t&&e!==void 0?(n.value=so(n.value,e),`> ${te(n,e)}`):`>= ${te(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=oo(i.value,e),`< ${te(i,e)}`):`<= ${te(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${te(n,e)} - ${te(i,e)}`)}function te(r,e){if(!r)return"";let t=[];return r.comparator&&(t.push(r.comparator),t.push(" ")),r.value!==void 0&&(e!==void 0?t.push(r.value.toFixed(e)):t.push(r.value)),r.unit&&(r.unit!=="%"&&t[t.length-1]!==" "&&t.push(" "),t.push(r.unit)),t.join("").trim()}function Zc(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function Ze(r){if(!r)return"";let e=he(r.text);return e||(r.coding?r.coding.map(t=>no(t)).join(", "):"")}function no(r){return he(r?.display)??he(r?.code)??""}function io(r){if(!r)return"";if("component"in r)return r.component.map(t=>io(t)).join(" / ");if(r.valueQuantity)return te(r.valueQuantity);if(r.valueCodeableConcept)return Ze(r.valueCodeableConcept);let e=he(r.valueString);return e||""}function he(r){return typeof r=="string"?r:void 0}function oo(r,e,t=1){return(Sn(r,e)+t)*Math.pow(10,-e)}function so(r,e,t=1){return(Sn(r,e)-t)*Math.pow(10,-e)}function Sn(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}var l={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",Expression:"Expression",Extension:"Extension",HumanName:"HumanName",Identifier:"Identifier",MarketingStatus:"MarketingStatus",Meta:"Meta",Money:"Money",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",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"};function ou(r){for(let e of r.entry){let t=e.resource;t.resourceType==="SearchParameter"&&cr(t)}}function cr(r){for(let e of r.base??[]){let t=V.types[e];t||(t={searchParamsDetails:{}},V.types[e]=t),t.searchParams||(t.searchParams={_id:{base:[e],code:"_id",type:"token",expression:e+".id"},_lastUpdated:{base:[e],code:"_lastUpdated",type:"date",expression:e+".meta.lastUpdated"},_compartment:{base:[e],code:"_compartment",type:"reference",expression:e+".meta.compartment"},_profile:{base:[e],code:"_profile",type:"uri",expression:e+".meta.profile"},_security:{base:[e],code:"_security",type:"token",expression:e+".meta.security"},_source:{base:[e],code:"_source",type:"uri",expression:e+".meta.source"},_tag:{base:[e],code:"_tag",type:"token",expression:e+".meta.tag"}}),t.searchParams[r.code]=r}}function qt(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?ao((r.base?.path??r.path)?.split(".")):e}function ao(r){return r.length===1?r[0]:r.map(P).join("")}function Wt(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function su(){return Object.values(Qr()).filter(Wt).map(r=>r.name)}function au(r){return V.types[r]?.searchParams}function cu(r,e){return V.types[r]?.searchParams?.[e]}function uu(r){let e=r.replaceAll("[x]","").split(".").pop();return co(e)}function co(r){let e;return r.length<100?e=r.match(/[A-Z]+(?![a-z])|[A-Z]?[a-z]+|\d+/g)??[]:e=r.split(/(?=[A-Z])/),e.map(lo).join(" ").replace("_"," ").replace(/\s+/g," ")}var uo=new Set(["ID","IP","PKCE","JWKS","URI","URL","OMB","UDI"]);function lo(r){let e=r.toUpperCase();return r===e?r:uo.has(e)?e:e.charAt(0)+r.slice(1)}function Ye(r,e,t){let n=Ce(r,t);if(n)return po(n.elements,e)}function po(r,e){let t=r[e]??r[e+"[x]"];if(t)return t;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=r[o];if(s)return s}}}function _(r){return!!(r&&typeof r=="object"&&"resourceType"in r)}function Z(r){return!!(r&&typeof r=="object"&&"reference"in r&&typeof r.reference=="string")}var V={types:{}};function bn(r){switch(r.type){case l.uuid:case l.uri:case l.url:case l.string:case l.oid:case l.markdown:case l.id:case l.code:case l.canonical:case l.base64Binary:case l.SystemString:case l.date:case l.dateTime:case l.instant:return r.value;case l.Identifier:return`${r.value.system??""}|${r.value.value}`;case l.Coding:return En(r.value);case l.CodeableConcept:return r.value.coding?.map(En).join(",")??r.value.text;case l.HumanName:return r.value.text?r.value.text:tt(r.value);case l.unsignedInt:case l.positiveInt:case l.integer:case l.decimal:return r.value.toString();case l.boolean:return r.value?"true":"false";case l.Extension:return r.value.url;case l.ContactPoint:return r.value.value;case l.Quantity:case l.Age:case l.Count:case l.Duration:return`${r.value.value}|${r.value.system??""}|${r.value.code??r.value.unit??""}`;case l.Reference:return r.value.reference;default:return _(r.value)?W(r.value).reference:JSON.stringify(r)}}function En(r){return r?`${r.system??""}|${r.code}`:""}function ye(r){if(r.startsWith("T"))return r+"T00:00:00.000Z".substring(r.length);if(r.length<=10)return r;try{return new Date(r).toISOString()}catch{return r}}var we=()=>[],A={empty:(r,e)=>f(e.length===0||e.every(t=>S(t.value))),hasValue:(r,e)=>f(e.length!==0),exists:(r,e,t)=>t?f(e.filter(n=>F(t.eval(r,[n]))).length>0):f(e.length>0&&e.every(n=>!S(n.value))),all:(r,e,t)=>f(e.every(n=>F(t.eval(r,[n])))),allTrue:(r,e)=>{for(let t of e)if(!t.value)return f(!1);return f(!0)},anyTrue:(r,e)=>{for(let t of e)if(t.value)return f(!0);return f(!1)},allFalse:(r,e)=>{for(let t of e)if(t.value)return f(!1);return f(!0)},anyFalse:(r,e)=>{for(let t of e)if(!t.value)return f(!0);return f(!1)},subsetOf:we,supersetOf:we,count:(r,e)=>[{type:l.integer,value:e.length}],distinct:(r,e)=>{let t=[];for(let n of e)t.some(i=>i.value===n.value)||t.push(n);return t},isDistinct:(r,e)=>f(e.length===A.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>F(t.eval({parent:r,variables:{$this:n}},[n]))),select:(r,e,t)=>e.map(n=>t.eval(r,[n])).flat(),repeat:we,ofType:(r,e,t)=>e.filter(n=>n.type===t.name),single:(r,e)=>{if(e.length>1)throw new Error("Expected input length one for single()");return e.length===0?[]:e.slice(0,1)},first:(r,e)=>e.length===0?[]:e.slice(0,1),last:(r,e)=>e.length===0?[]:e.slice(e.length-1,e.length),tail:(r,e)=>e.length===0?[]:e.slice(1,e.length),skip:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for skip(num)");return n>=e.length?[]:n<=0?e:e.slice(n,e.length)},take:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for take(num)");return n>=e.length?e:n<=0?[]:e.slice(0,n)},intersect:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e),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:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e),i=[];for(let o of e)n.some(s=>s.value===o.value)||i.push(o);return i},union:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e);return ze([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e);return[...e,...n]},htmlChecks:(r,e,t)=>[x(!0)],iif:(r,e,t,n,i)=>{let o=t.eval(r,e);if(o.length>1||o.length===1&&typeof o[0].value!="boolean")throw new Error("Expected criterion to evaluate to a Boolean");return F(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=q(e,1);if(typeof t=="boolean")return[{type:l.boolean,value:t}];if(typeof t=="number"&&(t===0||t===1))return f(!!t);if(typeof t=="string"){let n=t.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return f(!0);if(["false","f","no","n","0","0.0"].includes(n))return f(!1)}return[]},convertsToBoolean:(r,e)=>e.length===0?[]:f(A.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=q(e,1);return typeof t=="number"?[{type:l.integer,value:t}]:typeof t=="string"&&/^[+-]?\d+$/.exec(t)?[{type:l.integer,value:parseInt(t,10)}]:typeof t=="boolean"?[{type:l.integer,value:t?1:0}]:[]},convertsToInteger:(r,e)=>e.length===0?[]:f(A.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=q(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:l.date,value:ye(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:f(A.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=q(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:l.dateTime,value:ye(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:f(A.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=q(e,1);return typeof t=="number"?[{type:l.decimal,value:t}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(t)?[{type:l.decimal,value:parseFloat(t)}]:typeof t=="boolean"?[{type:l.decimal,value:t?1:0}]:[]},convertsToDecimal:(r,e)=>e.length===0?[]:f(A.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=q(e,1);return O(t)?[{type:l.Quantity,value:t}]:typeof t=="number"?[{type:l.Quantity,value:{value:t,unit:"1"}}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(t)?[{type:l.Quantity,value:{value:parseFloat(t),unit:"1"}}]:typeof t=="boolean"?[{type:l.Quantity,value:{value:t?1:0,unit:"1"}}]:[]},convertsToQuantity:(r,e)=>e.length===0?[]:f(A.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=q(e,1);return t==null?[]:O(t)?[{type:l.string,value:`${t.value} '${t.unit}'`}]:[{type:l.string,value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:f(A.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=q(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:l.time,value:ye("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:f(A.toTime(r,e).length===1),indexOf:(r,e,t)=>D((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>D((i,o,s)=>{let a=o,c=s?a+s:i.length;return a<0||a>=i.length?void 0:i.substring(a,c)},r,e,t,n),startsWith:(r,e,t)=>D((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>D((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>D((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>D(t=>t.toUpperCase(),r,e),lower:(r,e)=>D(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>D((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>D((n,i)=>!!new RegExp(i).exec(n),r,e,t),replaceMatches:(r,e,t,n)=>D((i,o,s)=>i.replaceAll(o,s),r,e,t,n),length:(r,e)=>D(t=>t.length,r,e),toChars:(r,e)=>D(t=>t?t.split(""):void 0,r,e),abs:(r,e)=>B(Math.abs,r,e),ceiling:(r,e)=>B(Math.ceil,r,e),exp:(r,e)=>B(Math.exp,r,e),floor:(r,e)=>B(Math.floor,r,e),ln:(r,e)=>B(Math.log,r,e),log:(r,e,t)=>B((n,i)=>Math.log(n)/Math.log(i),r,e,t),power:(r,e,t)=>B(Math.pow,r,e,t),round:(r,e)=>B(Math.round,r,e),sqrt:(r,e)=>B(Math.sqrt,r,e),truncate:(r,e)=>B(t=>t|0,r,e),children:we,descendants:we,trace:(r,e,t)=>e,now:()=>[{type:l.dateTime,value:new Date().toISOString()}],timeOfDay:()=>[{type:l.time,value:new Date().toISOString().substring(11)}],today:()=>[{type:l.date,value:new Date().toISOString().substring(0,10)}],between:(r,e,t,n,i)=>{let o=A.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=A.toDateTime(r,n.eval(r,e));if(s.length===0)throw new Error("Invalid end date");let a=i.eval(r,e)[0]?.value;if(a!=="years"&&a!=="months"&&a!=="days")throw new Error("Invalid units");let c=et(o[0].value,s[0].value);return[{type:l.Quantity,value:{value:c[a],unit:a}}]},is:(r,e,t)=>{let n="";return t instanceof j?n=t.name:t instanceof K&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:l.boolean,value:Je(i,n)})):[]},not:(r,e)=>A.toBoolean(r,e).map(t=>({type:l.boolean,value:!t.value})),resolve:(r,e)=>e.map(t=>{let n=t.value,i;if(typeof n=="string")i=n;else if(typeof n=="object"){let o=n;if(o.resource)return x(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:l.BackboneElement,value:void 0}}).filter(t=>!!t.value),as:(r,e)=>e,type:(r,e)=>e.map(({value:t})=>typeof t=="boolean"?{type:l.BackboneElement,value:{namespace:"System",name:"Boolean"}}:typeof t=="number"?{type:l.BackboneElement,value:{namespace:"System",name:"Integer"}}:_(t)?{type:l.BackboneElement,value:{namespace:"FHIR",name:t.resourceType}}:{type:l.BackboneElement,value:null}),conformsTo:(r,e,t)=>{let n=t.eval(r,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:l.boolean,value:o.value?.resourceType===i}))}};function D(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=q(t,1);if(typeof i!="string")throw new Error("String function cannot be called with non-string");let o=r(i,...n.map(s=>s?.eval(e,t)[0]?.value));return o===void 0?[]:Array.isArray(o)?o.map(x):[x(o)]}function B(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=q(t,1),o=O(i),s=o?i.value:i;if(typeof s!="number")throw new Error("Math function cannot be called with non-number");let a=r(s,...n.map(p=>p.eval(e,t)[0]?.value)),c=o?l.Quantity:t[0].type,u=o?{...i,value:a}:a;return[{type:c,value:u}]}function q(r,e){if(r.length!==e)throw new Error(`Expected ${e} arguments`);for(let t of r)if(t==null)throw new Error("Expected non-null argument");return r}var rt=class{constructor(e,t){this.original=e;this.child=t}eval(e,t){try{if(t.length>0){let n=[];for(let i of t)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}`)}}toString(){return this.child.toString()}},M=class{constructor(e){this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},j=class{constructor(e){this.name=e}eval(e,t){let n=this.getVariable(e);if(n)return[n];if(this.name.startsWith("%"))throw new Error(`Undefined variable ${this.name}`);return t.flatMap(i=>this.evalValue(i)).filter(i=>i?.value!==void 0)}getVariable(e){let t=e.variables[this.name];if(t!==void 0)return t;if(e.parent)return this.getVariable(e.parent)}evalValue(e){let t=e.value;if(!(!t||typeof t!="object"))return _(t)&&t.resourceType===this.name?e:w(e,this.name)}toString(){return this.name}},nt=class{eval(){return[]}toString(){return"{}"}},it=class extends Le{constructor(t,n,i){super(t,n);this.impl=i}eval(t,n){return this.impl(this.child.eval(t,n))}toString(){return this.operator+this.child.toString()}},re=class extends Q{constructor(e,t){super("as",e,t)}eval(e,t){return A.ofType(e,this.left.eval(e,t),this.right)}},C=class extends Q{},I=class extends C{constructor(t,n,i,o){super(t,n,i);this.impl=o}eval(t,n){let i=this.left.eval(t,n);if(i.length!==1)return[];let o=this.right.eval(t,n);if(o.length!==1)return[];let s=i[0].value,a=o[0].value,c=O(s)?s.value:s,u=O(a)?a.value:a,p=this.impl(c,u);return typeof p=="boolean"?f(p):O(s)?[{type:l.Quantity,value:{...s,value:p}}]:[x(p)]}},ot=class extends Q{constructor(e,t){super("&",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t),o=[...n,...i];return o.length>0&&o.every(s=>typeof s.value=="string")?[{type:l.string,value:o.map(s=>s.value).join("")}]:o}},st=class extends C{constructor(e,t){super("contains",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return f(n.some(o=>o.value===i[0].value))}},at=class extends C{constructor(e,t){super("in",e,t)}eval(e,t){let n=L(this.left.eval(e,t)),i=this.right.eval(e,t);return n?f(i.some(o=>o.value===n.value)):[]}},K=class extends Q{constructor(e,t){super(".",e,t)}eval(e,t){return this.right.eval(e,this.left.eval(e,t))}toString(){return`${this.left.toString()}.${this.right.toString()}`}},ge=class extends Q{constructor(e,t){super("|",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return ze([...n,...i])}},ct=class extends C{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return er(n,i)}},ut=class extends C{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Xt(er(n,i))}},lt=class extends C{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return tr(n,i)}},pt=class extends C{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Xt(tr(n,i))}},ne=class extends C{constructor(e,t){super("is",e,t)}eval(e,t){let n=this.left.eval(e,t);if(n.length!==1)return[];let i=this.right.name;return f(Je(n[0],i))}},dt=class extends C{constructor(e,t){super("and",e,t)}eval(e,t){let n=L(this.left.eval(e,t),"boolean"),i=L(this.right.eval(e,t),"boolean");return n?.value===!0&&i?.value===!0?f(!0):n?.value===!1||i?.value===!1?f(!1):[]}},ft=class extends C{constructor(e,t){super("or",e,t)}eval(e,t){let n=L(this.left.eval(e,t),"boolean"),i=L(this.right.eval(e,t),"boolean");return n?.value===!1&&i?.value===!1?f(!1):n?.value||i?.value?f(!0):[]}},mt=class extends C{constructor(e,t){super("xor",e,t)}eval(e,t){let n=L(this.left.eval(e,t),"boolean"),i=L(this.right.eval(e,t),"boolean");return!n||!i?[]:f(n.value!==i.value)}},ht=class extends C{constructor(e,t){super("implies",e,t)}eval(e,t){let n=L(this.left.eval(e,t),"boolean"),i=L(this.right.eval(e,t),"boolean");return i?.value===!0||n?.value===!1?f(!0):!n||!i?[]:f(!1)}},G=class{constructor(e,t){this.name=e;this.args=t}eval(e,t){let n=A[this.name];if(!n)throw new Error("Unrecognized function: "+this.name);return n(e,t,...this.args)}toString(){return`${this.name}(${this.args.map(e=>e.toString()).join(", ")})`}},ie=class{constructor(e,t){this.left=e;this.expr=t}eval(e,t){let n=this.expr.eval(e,t);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,t);return i in o?[o[i]]:[]}toString(){return`${this.left.toString()}[${this.expr.toString()}]`}};var fo=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],z=class{constructor(e,t,n,i){this.result=[];this.pos={index:0,line:1,column:0};this.markStack=[];this.str=e,this.keywords=t,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 t=this.peek();return e==="/"&&t==="*"?this.consumeMultiLineComment():e==="/"&&t==="/"?this.consumeSingleLineComment():e==="'"||e==='"'?this.consumeString(e):e==="`"?this.consumeBacktickSymbol():e==="@"?this.consumeDateTime():/\d/.exec(e)?this.consumeNumber():/\w/.exec(e)?this.consumeSymbol():(e==="$"||e==="%")&&/\w/.exec(t)?this.consumeSymbol():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()!==`
|
|
2
2
|
`))}consumeString(e){this.advance();let t=this.buildToken("String",this.consumeWhile(()=>this.prev()==="\\"||this.curr()!==e));return this.advance(),t}consumeBacktickSymbol(){this.advance();let e=this.buildToken("Symbol",this.consumeWhile(()=>this.curr()!=="`"));return this.advance(),e}consumeDateTime(){this.advance();let e=this.pos.index;this.consumeWhile(()=>/[\d-]/.exec(this.curr()));let t=!1,n=!1;this.curr()==="T"&&(t=!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()))));let i=this.str.substring(e,this.pos.index);return i.endsWith("T")?i=i.substring(0,i.length-1):!i.startsWith("T")&&t&&!n&&(i+="Z"),this.buildToken("DateTime",i)}consumeNumber(){let e=this.pos.index,t="Number";return this.consumeWhile(()=>/\d/.exec(this.curr())),this.curr()==="."&&/\d/.exec(this.peek())&&(this.advance(),this.consumeWhile(()=>/\d/.exec(this.curr()))),this.curr()==="-"&&this.dateTimeLiterals?(this.pos.index=e-1,this.consumeDateTime()):(this.curr()===" "&&mo(this.peekToken())&&(t="Quantity",this.consumeToken()),this.buildToken(t,this.str.substring(e,this.pos.index)))}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(),t=this.peek(),n=e+t;return this.operators.includes(n)?(this.advance(),this.advance(),this.buildToken(n,n)):(this.advance(),this.buildToken(e,e))}consumeWhile(e){let t=this.pos.index;for(;this.pos.index<this.str.length&&e();)this.advance();return this.str.substring(t,this.pos.index)}curr(){return this.str[this.pos.index]}prev(){return this.str[this.pos.index-1]??""}peek(){return this.str[this.pos.index+1]??""}mark(){this.markStack.push({...this.pos})}reset(){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()===`
|
|
3
|
-
`?(this.pos.line++,this.pos.column=0):this.pos.column++}buildToken(e,t){let n=this.markStack.pop();if(!n)throw new Error("No mark for token");return{id:e,value:t,...n}}};function mo(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&fo.includes(r.value)))}var Ae=["true","false"],Oe=["!=","!~","<=",">=","{}","->"];function Rn(r){return new z(r,Ae,Oe).tokenize()}var h={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},ho={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},yo={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new ie(e,t)},precedence:h.Indexer},go={parse(r,e){if(!(e instanceof j))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new G(e.name,t)},precedence:h.FunctionCall};function xo(r){let e=r.split(" "),t=parseFloat(e[0]),n=e[1];return n?.startsWith("'")&&n.endsWith("'")?n=n.substring(1,n.length-1):n="{"+n+"}",{value:t,unit:n}}function Ie(){return new Ue().registerPrefix("String",{parse:(r,e)=>new M({type:l.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new M({type:l.dateTime,value:ye(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new M({type:l.Quantity,value:xo(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new M({type:e.value.includes(".")?l.decimal:l.integer,value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new M({type:l.boolean,value:!0})}).registerPrefix("false",{parse:()=>new M({type:l.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new j(e.value)}).registerPrefix("{}",{parse:()=>new nt}).registerPrefix("(",ho).registerInfix("[",yo).registerInfix("(",go).prefix("+",h.UnaryAdd,(r,e)=>new it("+",e,t=>t)).prefix("-",h.UnarySubtract,(r,e)=>new I("-",e,e,(t,n)=>-n)).infixLeft(".",h.Dot,(r,e,t)=>new K(r,t)).infixLeft("/",h.Divide,(r,e,t)=>new I("/",r,t,(n,i)=>n/i)).infixLeft("*",h.Multiply,(r,e,t)=>new I("*",r,t,(n,i)=>n*i)).infixLeft("+",h.Add,(r,e,t)=>new I("+",r,t,(n,i)=>n+i)).infixLeft("-",h.Subtract,(r,e,t)=>new I("-",r,t,(n,i)=>n-i)).infixLeft("|",h.Union,(r,e,t)=>new ge(r,t)).infixLeft("=",h.Equals,(r,e,t)=>new ct(r,t)).infixLeft("!=",h.NotEquals,(r,e,t)=>new ut(r,t)).infixLeft("~",h.Equivalent,(r,e,t)=>new lt(r,t)).infixLeft("!~",h.NotEquivalent,(r,e,t)=>new pt(r,t)).infixLeft("<",h.LessThan,(r,e,t)=>new I("<",r,t,(n,i)=>n<i)).infixLeft("<=",h.LessThanOrEquals,(r,e,t)=>new I("<=",r,t,(n,i)=>n<=i)).infixLeft(">",h.GreaterThan,(r,e,t)=>new I(">",r,t,(n,i)=>n>i)).infixLeft(">=",h.GreaterThanOrEquals,(r,e,t)=>new I(">=",r,t,(n,i)=>n>=i)).infixLeft("&",h.Ampersand,(r,e,t)=>new ot(r,t)).infixLeft("and",h.And,(r,e,t)=>new dt(r,t)).infixLeft("as",h.As,(r,e,t)=>new re(r,t)).infixLeft("contains",h.Contains,(r,e,t)=>new st(r,t)).infixLeft("div",h.Divide,(r,e,t)=>new I("div",r,t,(n,i)=>n/i|0)).infixLeft("in",h.In,(r,e,t)=>new at(r,t)).infixLeft("is",h.Is,(r,e,t)=>new ne(r,t)).infixLeft("mod",h.Modulo,(r,e,t)=>new I("mod",r,t,(n,i)=>n%i)).infixLeft("or",h.Or,(r,e,t)=>new ft(r,t)).infixLeft("xor",h.Xor,(r,e,t)=>new mt(r,t)).infixLeft("implies",h.Implies,(r,e,t)=>new ht(r,t))}var vo=Ie();function ur(r){return new rt(r,vo.construct(Rn(r)).consumeAndParse())}function xe(r,e){let t=Array.isArray(e)?e:[e];for(let n=0;n<t.length;n++){let i=t[n];typeof i=="object"&&"type"in i&&"value"in i||(t[n]=x(t[n]))}return $(r,t).map(n=>n.value)}function $(r,e,t){let n=t??{};return ur(r).eval({variables:n},e).map(o=>({type:o.type,value:o.value?.valueOf()}))}var Cn=(p=>(p.BOOLEAN="BOOLEAN",p.NUMBER="NUMBER",p.QUANTITY="QUANTITY",p.TEXT="TEXT",p.REFERENCE="REFERENCE",p.CANONICAL="CANONICAL",p.DATE="DATE",p.DATETIME="DATETIME",p.PERIOD="PERIOD",p.UUID="UUID",p))(Cn||{});function Pn(r,e){let t=V.types[r]?.searchParamsDetails?.[e.code];return t||(t=So(r,e)),t}function To(r,e,t){let n=V.types[r];n||(n={},V.types[r]=n),n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function So(r,e){let t=e.code,n=Ro(t),i=An(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let c=ke(a),u=vn(()=>c.join("."));c.length===1&&c[0]instanceof C?o.propertyTypes.add("boolean"):u().endsWith("extension.value.code")||u().endsWith("extension.value.coding.code")?(o.array=!0,o.propertyTypes.add("code")):wn(o,ke(a),r,1),u().endsWith("extension.valueDateTime")&&(o.array=!1)}let s={columnName:n,type:Co(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return To(r,t,s),s}function wn(r,e,t,n){let i=e[n];if(i instanceof re){r.propertyTypes.add(i.right.toString());return}if(i instanceof G){Eo(r,i);return}let o=i.toString(),s=Ye(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,c=n+1;if(c<e.length&&e[c]instanceof ie&&(a=!0,c++),s.isArray&&!a&&(r.array=!0),c>=e.length){r.elementDefinitions.push(s);for(let u of s.type)r.propertyTypes.add(u.code);return}for(let u of s.type){let p=u.code;bo(p)&&(p=s.type[0].code),wn(r,e,p,c)}}function Eo(r,e){if(e.name==="as"){r.propertyTypes.add(e.args[0].toString());return}if(e.name==="resolve"){r.propertyTypes.add("string");return}if(e.name==="where"&&e.args[0]instanceof ne){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function bo(r){return r==="Element"||r==="BackboneElement"}function Ro(r){return r.split("-").reduce((e,t,n)=>e+(n?P(t):t),"")}function Co(r,e){switch(r.type){case"date":return e.size===1&&e.has(l.date)?"DATE":"DATETIME";case"number":return"NUMBER";case"quantity":return"QUANTITY";case"reference":return e.has(l.canonical)?"CANONICAL":"REFERENCE";case"token":return e.size===1&&e.has(l.boolean)?"BOOLEAN":"TEXT";default:return"TEXT"}}function An(r,e){let t=[],n=ur(e);return lr(r,n.child,t),t}function Wu(r,e){let t=An(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function lr(r,e,t){e instanceof ge?(lr(r,e.left,t),lr(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function ke(r){if(r instanceof re||r instanceof ie)return[ke(r.left),r].flat();if(r instanceof C)return[r];if(r instanceof K)return[ke(r.left),ke(r.right)].flat();if(r instanceof G){if(r.name==="where"&&!(r.args[0]instanceof ne))return[];if(r.name==="last")return[]}return[r]}var el=20,Po=(T=>(T.EQUALS="eq",T.NOT_EQUALS="ne",T.GREATER_THAN="gt",T.LESS_THAN="lt",T.GREATER_THAN_OR_EQUALS="ge",T.LESS_THAN_OR_EQUALS="le",T.STARTS_AFTER="sa",T.ENDS_BEFORE="eb",T.APPROXIMATELY="ap",T.CONTAINS="contains",T.EXACT="exact",T.TEXT="text",T.NOT="not",T.ABOVE="above",T.BELOW="below",T.IN="in",T.NOT_IN="not-in",T.OF_TYPE="of-type",T.MISSING="missing",T.IDENTIFIER="identifier",T.ITERATE="iterate",T))(Po||{}),kn={contains:"contains",exact:"exact",above:"above",below:"below",text:"text",not:"not",in:"in","not-in":"not-in","of-type":"of-type",missing:"missing",identifier:"identifier",iterate:"iterate"},pr={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function ve(r,e){if(!r)throw new Error("Invalid search URL");let t="",n;if(typeof r=="string")if(r.includes("?")){let[s,a]=r.split("?");t=s,n=new URLSearchParams(a)}else t=r;else typeof r=="object"&&(t=r.pathname,n=r.searchParams);let i;t.includes("/")?i=t.split("/").filter(Boolean).pop():i=t;let o=[];if(n&&o.push(...n.entries()),e)for(let[s,a]of Object.entries(e))if(Array.isArray(a))for(let c of a)o.push([s,c]);else o.push([s,a??""]);return wo(i,o)}function tl(r){return ve(r)}function rl(r){return ve(r)}function nl(r){return ve(r)}function wo(r,e){let t={resourceType:r};for(let[n,i]of e)Ao(t,n,i);return t}function Ao(r,e,t){let n,i,o=e.indexOf(":");if(o>=0?(n=e.substring(0,o),i=e.substring(o+1)):(n=e,i=""),n!=="_"){if(n==="_has"||e.includes(".")){r.filters=me(r.filters,{code:e,operator:"eq",value:t});return}switch(n){case"_sort":Oo(r,t);break;case"_count":r.count=parseInt(t,10);break;case"_offset":r.offset=parseInt(t,10);break;case"_total":r.total=t;break;case"_summary":t==="count"?(r.total="accurate",r.count=0):(t==="true"||t==="data"||t==="text")&&(r.summary=t);break;case"_include":{let s=On(t);i==="iterate"&&(s.modifier="iterate"),r.include=me(r.include,s);break}case"_revinclude":{let s=On(t);i==="iterate"&&(s.modifier="iterate"),r.revInclude=me(r.revInclude,s);break}case"_fields":case"_elements":r.fields=t.split(",");break;case"_type":r.types=t.split(",");break;case"_format":r.format=t;break;case"_pretty":r.pretty=t==="true";break;default:{let s=V.types[r.resourceType]?.searchParams?.[n];s?r.filters=me(r.filters,Io(s,i,t)):r.filters=me(r.filters,Do(n,i,t))}}}}function Oo(r,e){for(let t of e.split(",")){let n,i=!1;t.startsWith("-")?(n=t.substring(1),i=!0):n=t,r.sortRules||(r.sortRules=[]),r.sortRules.push({code:n,descending:i})}}function Io(r,e,t){if(e==="missing")return{code:r.code,operator:"missing",value:t};switch(r.type){case"number":case"date":case"quantity":return ko(r,t);case"reference":case"string":case"token":case"uri":return Vo(r,e,t);default:throw new Error("Unrecognized search parameter type: "+r.type)}}function ko(r,e){let{operator:t,value:n}=Mo(e);return{code:r.code,operator:t,value:n}}function Vo(r,e,t){return{code:r.code,operator:No(e),value:t}}function Do(r,e,t){let n="eq";if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in pr&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function Mo(r){let e=r.substring(0,2),t=pr[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function No(r){return kn[r]??"eq"}function On(r){let e=r.split(":");if(e.includes("*"))throw new d(R("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new d(R(`Invalid include value '${r}': 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 d(R(`Invalid include value '${r}'`))}var Fo=/{{([^{}]+)}}/g;function il(r,e){return r=r.replaceAll(Fo,(t,n)=>{let i=$(n,[],e);return i.length!==1?"":bn(i[0])}),ve(r)}function ol(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(_o(t))),r.sortRules&&r.sortRules.length>0&&e.push(Lo(r.sortRules)),r.offset!==void 0&&e.push("_offset="+r.offset),r.count!==void 0&&e.push("_count="+r.count),r.total!==void 0&&e.push("_total="+r.total),r.include&&r.include.forEach(t=>e.push(In("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(In("_revinclude",t))),e.length===0?"":(e.sort((t,n)=>t.localeCompare(n)),"?"+e.join("&"))}function _o(r){let e=r.operator in kn?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in pr?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function Lo(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function In(r,e){return r+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function Vn(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!Uo(r,e,t))return!1}return!0}function Uo(r,e,t){let n=V.types[e.resourceType]?.searchParams?.[t.code];if(t.operator==="missing"&&n){let i=xe(n.expression,r);return t.value==="true"?!i.length:i.length>0}switch(n?.type){case"reference":return Bo(r,t,n);case"string":case"uri":return Dn(r,t,n);case"token":return qo(r,t,n);case"date":return $o(r,t,n);default:return!1}}function Bo(r,e,t){let n=xe(t.expression,r),i=yt(e.operator);if(e.value===""&&n.length===0)return e.operator==="eq";let o=n.map(s=>typeof s=="string"?s:s.reference);for(let s of e.value.split(",")){let a=o.includes(s);if(!a&&e.code==="_compartment"&&(a=o.some(c=>c?.endsWith("/"+s))),a)return!i}return i}function qo(r,e,t){return Pn(r.resourceType,t).type==="BOOLEAN"?jo(r,e,t):Dn(r,e,t,!0)}function jo(r,e,t){let n=xe(t.expression,r),i=e.value==="true",o=n.includes(i);return yt(e.operator)?!o:o}function Dn(r,e,t,n){let i=xe(t.expression,r),o=e.value.split(","),s=yt(e.operator);for(let a of i)for(let c of o)if(dr(a,e.operator,c,n))return!s;return s}function dr(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return dr(r,e,o,!1)&&(!s||dr(r,e,s,!1))}let i="";return r&&(typeof r=="string"?i=r:typeof r=="object"&&(i=JSON.stringify(r))),i.toLowerCase().includes(t.toLowerCase())}function $o(r,e,t){let n=xe(t.expression,r),i=e.value.split(","),o=yt(e.operator);for(let s of n)for(let a of i)if(Ho(s,e.operator,a))return!o;return o}function Ho(r,e,t){switch(e){case"sa":case"gt":return r>t;case"ge":return r>=t;case"eb":case"lt":return r<t;case"le":return r<=t;case"eq":case"ne":return r===t;default:return!1}}function yt(r){return r==="ne"||r==="not"}var Go={resourceType:"*"},Qo=["DomainConfiguration","JsonWebKey","Login"],Wo=["PasswordChangeRequest","Project","ProjectMembership","User"],Ko=(E=>(E.READ="read",E.VREAD="vread",E.UPDATE="update",E.PATCH="patch",E.DELETE="delete",E.HISTORY="history",E.HISTORY_INSTANCE="history-instance",E.HISTORY_TYPE="history-type",E.HISTORY_SYSTEM="history-system",E.CREATE="create",E.SEARCH="search",E.SEARCH_TYPE="search-type",E.SEARCH_SYSTEM="search-system",E.SEARCH_COMPARTMENT="search-compartment",E.CAPABILITIES="capabilities",E.TRANSACTION="transaction",E.BATCH="batch",E.OPERATION="operation",E))(Ko||{}),zo=["read","vread","history","history-instance"];function fl(r,e){if(r.resource){for(let t of r.resource)if(fr(t.resourceType,e))return!0}return!1}function Jo(r,e){if(Qo.includes(e))return!1;if(r.resource){for(let t of r.resource)if(fr(t.resourceType,e)&&!t.readonly)return!0}return!1}function ml(r,e){let t=e.resourceType;return Jo(r,t)?Yo(r,e,!1):!1}function Yo(r,e,t){if(r.resource){for(let n of r.resource)if(Mn(e,t?"read":"update",n))return!0}return!1}function hl(r,e,t){if(!t)return Go;if(t.resource){for(let n of t.resource)if(Mn(r,e,n))return n}}function Mn(r,e,t){let n=r.resourceType;return!(!fr(t.resourceType,n)||t.readonly&&!zo.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!Vn(r,ve(t.criteria)))}function fr(r,e){return r===e||r==="*"&&!Wo.includes(e)}function Nn(r){if(typeof window<"u")return window.atob(r);if(typeof Buffer<"u")return Buffer.from(r,"base64").toString("binary");throw new Error("Unable to decode base64")}function Fn(r){if(typeof window<"u")return window.btoa(r);if(typeof Buffer<"u")return Buffer.from(r,"binary").toString("base64");throw new Error("Unable to encode base64")}function mr(){let r=new Uint32Array(28);return crypto.getRandomValues(r),hn(r.buffer)}async function _n(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function oe(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,r=>{let e=Math.random()*16|0;return(r==="x"?e:e&3|8).toString(16)})}function Zo(r){let e={};r=ee(r);for(let i of r.entry||[]){i.resource?.meta!==void 0&&(delete i.resource.meta.author,delete i.resource.meta.compartment,delete i.resource.meta.lastUpdated,delete i.resource.meta.project,delete i.resource.meta.versionId);let o=i.resource?.id;o&&(e[o]=oe(),i.fullUrl="urn:uuid:"+e[o],delete i.resource?.id)}let t=r.entry,n=JSON.stringify({resourceType:"Bundle",type:"transaction",entry:t?.map(i=>({fullUrl:i.fullUrl,request:{method:"POST",url:i.resource.resourceType},resource:i.resource}))},(i,o)=>Xo(i,o,e),2);return es(JSON.parse(n))}function Xo(r,e,t){if(r==="reference"&&typeof e=="string"){let n;if(e.includes("/")?n=e.split("/")[1]:e.startsWith("urn:uuid:")?n=e.slice(9):e.startsWith("#")&&(n=e.slice(1)),n){let i=t[n];if(i)return"urn:uuid:"+i}}return e}function es(r){let e=rs(r),{sorted:t,cycles:n}=ts(e),i={};for(let s of r.entry||[])s.fullUrl&&(i[s.fullUrl]=s);let o=t.map(s=>i[s]);for(let s of n)for(let a of s){let c=i[a],u={...c,request:{...c.request,method:"PUT"}};o.push(u)}return{...r,entry:o}}function ts(r){let e=[],t={},n=[];for(let o of Object.keys(r))t[o]=0;function i(o,s){if(t[o]===2)return!0;if(t[o]===1){let c=s.lastIndexOf(o);return c!==-1&&n.push(s.slice(c)),!0}t[o]=1,s.push(o);let a=!1;for(let c of r[o])i(c,s)||(a=!0);return t[o]=2,s.pop(),e.unshift(o),!a}for(let o in r)t[o]===0&&i(o,[]);return{sorted:e,cycles:n}}function Ln(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(Z(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else Ln(n,e)}}function rs(r){let e={};for(let t of r.entry||[])t.fullUrl&&(e[t.fullUrl]=[]);for(let t of r.entry||[]){let n=t.fullUrl;t.resource&&Ln(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function bl(r){r=ee(r);let e={resourceType:"Bundle",type:"transaction",entry:[{resource:r}]};if(r.contained){for(let t of r.contained)e.entry.push({resource:t});r.contained=void 0}for(let t of e.entry)t.resource&&!t.resource.id&&(t.resource.id=oe());return Zo(e)}var gt=class{constructor(e=10){this.max=e,this.cache=new Map}clear(){this.cache.clear()}get(e){let t=this.cache.get(e);return t&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size>=this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}delete(e){this.cache.delete(e)}keys(){return this.cache.keys()}first(){return this.cache.keys().next().value}};var N={CSS:"text/css",DICOM:"application/dicom",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",JSON:"application/json",JSON_PATCH:"application/json-patch+json",PNG:"image/png",SCIM_JSON:"application/scim+json",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript",PING:"x-application/ping"};var Ve=class{constructor(){this.listeners={}}addEventListener(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)}removeEventListener(e,t){let n=this.listeners[e];if(n){for(let i=0;i<n.length;i++)if(n[i]===t){n.splice(i,1);return}}}dispatchEvent(e){let t=this.listeners[e.type];if(t)for(let n of t)n.call(this,e);return!e.defaultPrevented}removeAllListeners(){this.listeners={}}},se=class{constructor(){this.emitter=new Ve}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}removeAllListeners(){this.emitter.removeAllListeners()}};var hr={"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"},ns=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],yr=["DiagnosticReport-update"];function Bn(r){return yr.includes(r)}function qn(r){if(yr.includes(r))throw new d(m(`'context.version' is required for '${r}'.`))}var is={"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"},select:{resourceType:"*",isArray:!0}},"DiagnosticReport-update":{report:{resourceType:"DiagnosticReport"},patient:{resourceType:"Patient",optional:!0},study:{resourceType:"ImagingStudy",optional:!0},updates:{resourceType:"Bundle"}},syncerror:{operationoutcome:{resourceType:"OperationOutcome"}}};function os(r){return ns.includes(r)}function jn(r){return!!r.endpoint}function gr(r){if(!vt(r))throw new d(m("subscriptionRequest must be an object conforming to SubscriptionRequest type."));let{channelType:e,mode:t,topic:n,events:i}=r,o={"hub.channel.type":e,"hub.mode":t,"hub.topic":n,"hub.events":i.join(",")};return jn(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function vt(r){if(typeof r!="object")return!1;let{channelType:e,mode:t,topic:n,events:i}=r;if(!(e&&t&&n&&i)||typeof n!="string"||typeof i!="object"||!Array.isArray(i)||i.length<1||e!=="websocket"||t!=="subscribe"&&t!=="unsubscribe")return!1;for(let o of i)if(!hr[o])return!1;return!(jn(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function Un(r,e,t,n){if(typeof e!="object")throw new d(m(`context[${t}] is invalid. Context must contain a single valid FHIR resource! Resource is not an object.`));if(!(e.id&&typeof e.id=="string"))throw new d(m(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new d(m(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!os(e.resourceType))throw new d(m(`context[${t}] 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 d(m(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${i}.`))}}function ss(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),!n.isArray)Un(r,e.resource,t,n);else{let{resources:o}=e;if(!o)throw new d(m(`context[${t}] is invalid. context[${t}] for the '${r}' with key '${String(e.key)}' should contain an array of resources on the key 'resources'.`));for(let s of o)Un(r,s,t,n)}}function as(r,e){let t=new Map,n=is[r];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new d(m(`Key '${o}' not found for event '${r}'. Make sure to add only valid keys.`));ss(r,e[i],i,n[o],t)}for(let[i,o]of Object.entries(n)){if(!(o.optional||t.has(i)))throw new d(m(`Missing required key '${i}' on context for '${r}' event.`));if(!o.manyAllowed&&(t.get(i)||0)>1)throw new d(m(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function xr(r,e,t,n){if(!(r&&typeof r=="string"))throw new d(m("Must provide a topic."));if(!hr[e])throw new d(m(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(hr).join(", ")}`));if(typeof t!="object")throw new d(m("context must be a context object or array of context objects."));if(yr.includes(e)&&!n)throw new d(m(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return as(e,i),{timestamp:new Date().toISOString(),id:oe(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var xt=class extends se{constructor(e){if(super(),this.subRequest=e,!e.endpoint)throw new d(m("Subscription request should contain an endpoint."));if(!vt(e))throw new d(m("Subscription request failed validation."));let t=new WebSocket(e.endpoint);t.addEventListener("open",()=>{this.dispatchEvent({type:"connect"}),t.addEventListener("message",n=>{let i=JSON.parse(n.data);if(i["hub.topic"])return;let o=i;o.event["hub.event"]!=="heartbeat"&&(this.dispatchEvent({type:"message",payload:o}),t.send(JSON.stringify({id:i?.id,timestamp:new Date().toISOString()})))}),t.addEventListener("close",()=>{this.dispatchEvent({type:"disconnect"})})}),this.websocket=t}disconnect(){this.websocket.close()}};function cs(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=Nn(e),n=Array.from(t).reduce((o,s)=>{let a=("00"+s.charCodeAt(0).toString(16)).slice(-2);return`${o}%${a}`},""),i=decodeURIComponent(n);return JSON.parse(i)}function $n(r){return r.split(".").length===3}function Tt(r){let[e,t,n]=r.split(".");return cs(t)}function Hn(r){try{return typeof Tt(r).login_id=="string"}catch{return!1}}function Gn(r){try{let t=Tt(r).exp;return typeof t=="number"?t*1e3:void 0}catch{return}}var St=class{constructor(e){this.medplum=e}async get(e){return this.medplum.get(`keyvalue/v1/${e}`)}async set(e,t){await this.medplum.put(`keyvalue/v1/${e}`,t)}async delete(e){await this.medplum.delete(`keyvalue/v1/${e}`)}};var us,k=class{constructor(e){this[us]="ReadablePromise";this.status="pending";this.suspender=e.then(t=>(this.status="success",this.response=t,t),t=>{throw this.status="error",this.error=t,t})}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,t){return this.suspender.then(e,t)}catch(e){return this.suspender.catch(e)}finally(e){return this.suspender.finally(e)}};us=Symbol.toStringTag;var De=class{constructor(e){this.storage=e??(typeof localStorage<"u"?localStorage:new vr)}clear(){this.storage.clear()}getString(e){return this.storage.getItem(e)??void 0}setString(e,t){t?this.storage.setItem(e,t):this.storage.removeItem(e)}getObject(e){let t=this.getString(e);return t?JSON.parse(t):void 0}setObject(e,t){this.setString(e,t?dn(t):void 0)}},vr=class{constructor(){this.data=new Map}get length(){return this.data.size}clear(){this.data.clear()}getItem(e){return this.data.get(e)??null}setItem(e,t){t?this.data.set(e,t):this.data.delete(e)}removeItem(e){this.data.delete(e)}key(e){return Array.from(this.data.keys())[e]}},Qn=class extends De{constructor(){super();this.initResolve=()=>{};this.initialized=!1,this.initPromise=new Promise(t=>{this.initResolve=t})}setInitialized(){this.initialized||(this.initResolve(),this.initialized=!0)}getInitPromise(){return this.initPromise}get isInitialized(){return this.initialized}};var Tr=class extends se{constructor(t){super();this.bufferedAmount=-1/0;this.extensions="NOT_IMPLEMENTED";this.messageBuffer=[];let n=new WebSocket(t);n.addEventListener("open",()=>{if(this.messageBuffer.length){let i=this.messageBuffer;for(let o of i)n.send(o)}this.dispatchEvent(new Event("open"))}),n.addEventListener("error",i=>{this.dispatchEvent(i)}),n.addEventListener("message",i=>{this.dispatchEvent(i)}),n.addEventListener("close",i=>{this.dispatchEvent(i)}),this.ws=n}get readyState(){return this.ws.readyState}close(){this.ws.close()}send(t){if(this.ws.readyState!==WebSocket.OPEN){this.messageBuffer.push(t);return}try{this.ws.send(t)}catch(n){this.dispatchEvent(new ErrorEvent("error",{error:n,message:n.message})),this.messageBuffer.push(t)}}},Me=class extends se{constructor(...e){super(),this.criteria=new Set(e)}getCriteria(){return this.criteria}_addCriteria(e){this.criteria.add(e)}_removeCriteria(e){this.criteria.delete(e)}},Sr=class{constructor(e){this.criteria=e,this.emitter=new Me(e),this.refCount=1}},Et=class{constructor(e,t,n){if(!(e instanceof bt))throw new d(m("First arg of constructor should be a `MedplumClient`"));let i;try{i=new URL(t).toString()}catch{throw new d(m("Not a valid URL"))}let o=n?.RobustWebSocket?new n.RobustWebSocket(i):new Tr(i);this.medplum=e,this.ws=o,this.masterSubEmitter=new Me,this.criteriaEntries=new Map,this.criteriaEntriesBySubscriptionId=new Map,this.wsClosed=!1,this.setupWebSocketListeners()}setupWebSocketListeners(){let e=this.ws;e.addEventListener("message",t=>{try{let n=JSON.parse(t.data),i=n?.entry?.[0]?.resource;if(i.type==="heartbeat"){this.masterSubEmitter?.dispatchEvent({type:"heartbeat",payload:n});return}this.masterSubEmitter?.dispatchEvent({type:"message",payload:n});let o=this.criteriaEntriesBySubscriptionId.get(Xe(i.subscription));if(!o){console.warn("Received notification for criteria the SubscriptionManager is not listening for");return}o.emitter.dispatchEvent({type:"message",payload:n})}catch(n){console.error(n);let i={type:"error",payload:n};this.masterSubEmitter?.dispatchEvent(i);for(let{emitter:o}of this.criteriaEntries.values())o.dispatchEvent(i)}}),e.addEventListener("error",()=>{let t={type:"error",payload:new d(Fr(new Error("WebSocket error")))};this.masterSubEmitter?.dispatchEvent(t);for(let{emitter:n}of this.criteriaEntries.values())n.dispatchEvent(t)}),e.addEventListener("close",()=>{let t={type:"close"};this.wsClosed&&this.masterSubEmitter?.dispatchEvent(t);for(let{emitter:n}of this.criteriaEntries.values())n.dispatchEvent(t)})}emitConnect(e){let t={type:"connect",payload:{subscriptionId:e}};this.masterSubEmitter?.dispatchEvent(t);for(let{emitter:n}of this.criteriaEntries.values())n.dispatchEvent(t)}emitError(e,t){let n={type:"error",payload:t};this.masterSubEmitter?.dispatchEvent(n),this.criteriaEntries.get(e)?.emitter?.dispatchEvent(n)}async getTokenForCriteria(e){let t=e?.subscriptionId;t||(t=(await this.medplum.createResource({resourceType:"Subscription",status:"active",reason:`WebSocket subscription for ${X(this.medplum.getProfile())}`,criteria:e.criteria,channel:{type:"websocket"}})).id);let{parameter:n}=await this.medplum.get(`/fhir/R4/Subscription/${t}/$get-ws-binding-token`),i=n?.find(s=>s.name==="token")?.valueString,o=n?.find(s=>s.name==="websocket-url")?.valueUrl;if(!i)throw new d(m("Failed to get token"));if(!o)throw new d(m("Failed to get URL from $get-ws-binding-token"));return[t,i]}addCriteria(e){this.masterSubEmitter&&this.masterSubEmitter._addCriteria(e);let t=this.criteriaEntries.get(e);if(t)return t.refCount+=1,t.emitter;let n=new Sr(e);return this.criteriaEntries.set(e,n),this.getTokenForCriteria(n).then(([i,o])=>{n.subscriptionId=i,this.criteriaEntriesBySubscriptionId.set(i,n),this.emitConnect(i),this.ws.send(JSON.stringify({type:"bind-with-token",payload:{token:o}}))}).catch(i=>{console.error(i.message),this.emitError(e,i),this.criteriaEntries.delete(e)}),n.emitter}removeCriteria(e){let t=this.criteriaEntries.get(e);if(!t){console.warn("Criteria not known to `SubscriptionManager`. Possibly called remove too many times.");return}if(t.refCount-=1,t.refCount>0)return;let n=this.criteriaEntries.get(e)?.subscriptionId,i={type:"disconnect",payload:{subscriptionId:n}};this.masterSubEmitter&&(this.masterSubEmitter._removeCriteria(e),this.masterSubEmitter.dispatchEvent(i)),this.criteriaEntries.get(e)?.emitter?.dispatchEvent(i),this.criteriaEntries.delete(e),n&&this.criteriaEntriesBySubscriptionId.delete(n)}closeWebSocket(){this.wsClosed||(this.wsClosed=!0,this.ws.close())}getCriteriaCount(){return this.criteriaEntries.size}getMasterEmitter(){return this.masterSubEmitter||(this.masterSubEmitter=new Me(...Array.from(this.criteriaEntries.keys()))),this.masterSubEmitter}};var yp="3.0.12-787031d28",gp="medplum-cli",ls=N.FHIR_JSON+", */*; q=0.1",ps="https://api.medplum.com/",ds=1e3,fs=6e4,ms=0,hs="Binary/",Wn={resourceType:"Device",id:"system",deviceName:[{type:"model-name",name:"System"}]},ys=(o=>(o.ClientCredentials="client_credentials",o.AuthorizationCode="authorization_code",o.RefreshToken="refresh_token",o.JwtBearer="urn:ietf:params:oauth:grant-type:jwt-bearer",o.TokenExchange="urn:ietf:params:oauth:grant-type:token-exchange",o))(ys||{}),gs=(o=>(o.AccessToken="urn:ietf:params:oauth:token-type:access_token",o.RefreshToken="urn:ietf:params:oauth:token-type:refresh_token",o.IdToken="urn:ietf:params:oauth:token-type:id_token",o.Saml1Token="urn:ietf:params:oauth:token-type:saml1",o.Saml2Token="urn:ietf:params:oauth:token-type:saml2",o))(gs||{}),xs=(o=>(o.ClientSecretBasic="client_secret_basic",o.ClientSecretPost="client_secret_post",o.ClientSecretJwt="client_secret_jwt",o.PrivateKeyJwt="private_key_jwt",o.None="none",o))(xs||{}),vs=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(vs||{}),bt=class extends Ve{constructor(t){super();this.initComplete=!0;if(t?.baseUrl&&!t.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");if(this.options=t??{},this.fetch=t?.fetch??Ts(),this.storage=t?.storage??new De,this.createPdfImpl=t?.createPdf,this.baseUrl=zn(t?.baseUrl??ps),this.fhirBaseUrl=zn(Rt(this.baseUrl,t?.fhirUrlPath??"fhir/R4/")),this.authorizeUrl=Rt(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=Rt(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=Rt(this.baseUrl,t?.logoutUrl??"oauth2/logout"),this.clientId=t?.clientId??"",this.clientSecret=t?.clientSecret??"",this.onUnauthenticated=t?.onUnauthenticated,this.cacheTime=t?.cacheTime??(typeof window>"u"?ms:fs),this.cacheTime>0?this.requestCache=new gt(t?.resourceCacheSize??ds):this.requestCache=void 0,t?.autoBatchTime?(this.autoBatchTime=t.autoBatchTime,this.autoBatchQueue=[]):(this.autoBatchTime=0,this.autoBatchQueue=void 0),t?.accessToken)this.setAccessToken(t.accessToken),this.initPromise=Promise.resolve();else if(this.storage.getInitPromise!==void 0){let n=this.storage.getInitPromise(),i=new Promise((o,s)=>{n.then(()=>{this.attemptResumeActiveLogin().then(o).catch(a=>{console.error(a),o()}),this.initComplete=!0}).catch(s)});this.initPromise=i,this.initComplete=!1}else this.initPromise=this.attemptResumeActiveLogin().catch(console.error);this.setupStorageListener()}get isInitialized(){return this.initComplete}getInitPromise(){return this.initPromise}async attemptResumeActiveLogin(){let t=this.getActiveLogin();t&&(this.setAccessToken(t.accessToken,t.refreshToken),await this.refreshProfile())}getBaseUrl(){return this.baseUrl}getAuthorizeUrl(){return this.authorizeUrl}getTokenUrl(){return this.tokenUrl}getLogoutUrl(){return this.logoutUrl}clear(){this.storage.clear(),sessionStorage.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(t){t=t.toString(),this.requestCache?.delete(t)}invalidateAll(){this.requestCache?.clear()}invalidateSearches(t){let n=this.fhirBaseUrl+t;if(this.requestCache)for(let i of this.requestCache.keys())(i.endsWith(n)||i.includes(n+"?"))&&this.requestCache.delete(i)}get(t,n={}){t=t.toString();let i=this.getCacheEntry(t,n);if(i)return i.value;let o;t.startsWith(this.fhirBaseUrl)&&this.autoBatchQueue?o=new Promise((a,c)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:c}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new k(o);return this.setCacheEntry(t,s),s}post(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("POST",t,o)}put(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("PUT",t,o)}patch(t,n,i={}){return t=t.toString(),this.setRequestBody(i,n),this.setRequestContentType(i,N.JSON_PATCH),this.invalidateUrl(t),this.request("PATCH",t,i)}delete(t,n){return t=t.toString(),this.invalidateUrl(t),this.request("DELETE",t,n)}async startNewUser(t,n){let{codeChallengeMethod:i,codeChallenge:o}=await this.startPkce();return this.post("auth/newuser",{...t,clientId:t.clientId??this.clientId,codeChallengeMethod:i,codeChallenge:o},void 0,n)}async startNewProject(t,n){return this.post("auth/newproject",t,void 0,n)}async startNewPatient(t,n){return this.post("auth/newpatient",t,void 0,n)}async startLogin(t,n){return this.post("auth/login",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async startGoogleLogin(t,n){return this.post("auth/google",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async ensureCodeChallenge(t){return t.codeChallenge?t:{...t,...await this.startPkce()}}async signOut(){await this.post(this.logoutUrl,{}),this.clear()}async signInWithRedirect(t){let i=new URLSearchParams(window.location.search).get("code");if(!i){await this.requestAuthorization(t);return}return this.processCode(i)}signOutWithRedirect(){window.location.assign(this.logoutUrl)}async signInWithExternalAuth(t,n,i,o,s=!0){let a=o;s&&(a=await this.ensureCodeChallenge(o)),window.location.assign(this.getExternalAuthRedirectUri(t,n,i,a,s))}async exchangeExternalAccessToken(t,n){if(n=n??this.clientId,!n)throw new Error("MedplumClient is missing clientId");let i=new URLSearchParams;return i.set("grant_type","urn:ietf:params:oauth:grant-type:token-exchange"),i.set("subject_token_type","urn:ietf:params:oauth:token-type:access_token"),i.set("client_id",n),i.set("subject_token",t),this.fetchTokens(i)}getExternalAuthRedirectUri(t,n,i,o,s=!0){let a=new URL(t);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:c,codeChallengeMethod:u}=o;if(!u)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!c)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");a.searchParams.set("code_challenge_method",u),a.searchParams.set("code_challenge",c)}return a.toString()}fhirUrl(...t){return new URL(t.join("/"),this.fhirBaseUrl)}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=new URLSearchParams(n).toString()),i}search(t,n,i){let o=this.fhirSearchUrl(t,n),s="search-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let c=new k((async()=>{let u=await this.get(o,i);if(u.entry)for(let p of u.entry)this.cacheResource(p.resource);return u})());return this.setCacheEntry(s,c),c}searchOne(t,n,i){let o=this.fhirSearchUrl(t,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 c=new k(this.search(t,o.searchParams,i).then(u=>u.entry?.[0]?.resource));return this.setCacheEntry(s,c),c}searchResources(t,n,i){let s="searchResources-"+this.fhirSearchUrl(t,n).toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let c=new k(this.search(t,n,i).then(Er));return this.setCacheEntry(s,c),c}async*searchResourcePages(t,n,i){let o=this.fhirSearchUrl(t,n);for(;o;){let s=new URL(o).searchParams,a=await this.search(t,s,i),c=a.link?.find(u=>u.relation==="next");if(!a.entry?.length&&!c)break;yield Er(a),o=c?.url?new URL(c.url):void 0}}searchValueSet(t,n,i){return this.valueSetExpand({url:t,filter:n},i)}valueSetExpand(t,n){let i=this.fhirUrl("ValueSet","$expand");return i.search=new URLSearchParams(t).toString(),this.get(i.toString(),n)}getCached(t,n){let i=this.requestCache?.get(this.fhirUrl(t,n).toString())?.value;return i?.isOk()?i.read():void 0}getCachedReference(t){let n=t.reference;if(!n)return;if(n==="system")return Wn;let[i,o]=n.split("/");if(!(!i||!o))return this.getCached(i,o)}readResource(t,n,i){return this.get(this.fhirUrl(t,n),i)}readReference(t,n){let i=t.reference;if(!i)return new k(Promise.reject(new Error("Missing reference")));if(i==="system")return new k(Promise.resolve(Wn));let[o,s]=i.split("/");return!o||!s?new k(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(Wr(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new k((async()=>{let s=`{
|
|
3
|
+
`?(this.pos.line++,this.pos.column=0):this.pos.column++}buildToken(e,t){let n=this.markStack.pop();if(!n)throw new Error("No mark for token");return{id:e,value:t,...n}}};function mo(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&fo.includes(r.value)))}var Ae=["true","false"],Oe=["!=","!~","<=",">=","{}","->"];function Rn(r){return new z(r,Ae,Oe).tokenize()}var h={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},ho={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},yo={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new ie(e,t)},precedence:h.Indexer},go={parse(r,e){if(!(e instanceof j))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new G(e.name,t)},precedence:h.FunctionCall};function xo(r){let e=r.split(" "),t=parseFloat(e[0]),n=e[1];return n?.startsWith("'")&&n.endsWith("'")?n=n.substring(1,n.length-1):n="{"+n+"}",{value:t,unit:n}}function Ie(){return new Ue().registerPrefix("String",{parse:(r,e)=>new M({type:l.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new M({type:l.dateTime,value:ye(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new M({type:l.Quantity,value:xo(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new M({type:e.value.includes(".")?l.decimal:l.integer,value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new M({type:l.boolean,value:!0})}).registerPrefix("false",{parse:()=>new M({type:l.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new j(e.value)}).registerPrefix("{}",{parse:()=>new nt}).registerPrefix("(",ho).registerInfix("[",yo).registerInfix("(",go).prefix("+",h.UnaryAdd,(r,e)=>new it("+",e,t=>t)).prefix("-",h.UnarySubtract,(r,e)=>new I("-",e,e,(t,n)=>-n)).infixLeft(".",h.Dot,(r,e,t)=>new K(r,t)).infixLeft("/",h.Divide,(r,e,t)=>new I("/",r,t,(n,i)=>n/i)).infixLeft("*",h.Multiply,(r,e,t)=>new I("*",r,t,(n,i)=>n*i)).infixLeft("+",h.Add,(r,e,t)=>new I("+",r,t,(n,i)=>n+i)).infixLeft("-",h.Subtract,(r,e,t)=>new I("-",r,t,(n,i)=>n-i)).infixLeft("|",h.Union,(r,e,t)=>new ge(r,t)).infixLeft("=",h.Equals,(r,e,t)=>new ct(r,t)).infixLeft("!=",h.NotEquals,(r,e,t)=>new ut(r,t)).infixLeft("~",h.Equivalent,(r,e,t)=>new lt(r,t)).infixLeft("!~",h.NotEquivalent,(r,e,t)=>new pt(r,t)).infixLeft("<",h.LessThan,(r,e,t)=>new I("<",r,t,(n,i)=>n<i)).infixLeft("<=",h.LessThanOrEquals,(r,e,t)=>new I("<=",r,t,(n,i)=>n<=i)).infixLeft(">",h.GreaterThan,(r,e,t)=>new I(">",r,t,(n,i)=>n>i)).infixLeft(">=",h.GreaterThanOrEquals,(r,e,t)=>new I(">=",r,t,(n,i)=>n>=i)).infixLeft("&",h.Ampersand,(r,e,t)=>new ot(r,t)).infixLeft("and",h.And,(r,e,t)=>new dt(r,t)).infixLeft("as",h.As,(r,e,t)=>new re(r,t)).infixLeft("contains",h.Contains,(r,e,t)=>new st(r,t)).infixLeft("div",h.Divide,(r,e,t)=>new I("div",r,t,(n,i)=>n/i|0)).infixLeft("in",h.In,(r,e,t)=>new at(r,t)).infixLeft("is",h.Is,(r,e,t)=>new ne(r,t)).infixLeft("mod",h.Modulo,(r,e,t)=>new I("mod",r,t,(n,i)=>n%i)).infixLeft("or",h.Or,(r,e,t)=>new ft(r,t)).infixLeft("xor",h.Xor,(r,e,t)=>new mt(r,t)).infixLeft("implies",h.Implies,(r,e,t)=>new ht(r,t))}var vo=Ie();function ur(r){return new rt(r,vo.construct(Rn(r)).consumeAndParse())}function xe(r,e){let t=Array.isArray(e)?e:[e];for(let n=0;n<t.length;n++){let i=t[n];typeof i=="object"&&"type"in i&&"value"in i||(t[n]=x(t[n]))}return $(r,t).map(n=>n.value)}function $(r,e,t){let n=t??{};return ur(r).eval({variables:n},e).map(o=>({type:o.type,value:o.value?.valueOf()}))}var Cn=(p=>(p.BOOLEAN="BOOLEAN",p.NUMBER="NUMBER",p.QUANTITY="QUANTITY",p.TEXT="TEXT",p.REFERENCE="REFERENCE",p.CANONICAL="CANONICAL",p.DATE="DATE",p.DATETIME="DATETIME",p.PERIOD="PERIOD",p.UUID="UUID",p))(Cn||{});function Pn(r,e){let t=V.types[r]?.searchParamsDetails?.[e.code];return t||(t=So(r,e)),t}function To(r,e,t){let n=V.types[r];n||(n={},V.types[r]=n),n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function So(r,e){let t=e.code,n=Ro(t),i=An(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let c=ke(a),u=vn(()=>c.join("."));c.length===1&&c[0]instanceof C?o.propertyTypes.add("boolean"):u().endsWith("extension.value.code")||u().endsWith("extension.value.coding.code")?(o.array=!0,o.propertyTypes.add("code")):wn(o,ke(a),r,1),u().endsWith("extension.valueDateTime")&&(o.array=!1)}let s={columnName:n,type:Co(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return To(r,t,s),s}function wn(r,e,t,n){let i=e[n];if(i instanceof re){r.propertyTypes.add(i.right.toString());return}if(i instanceof G){Eo(r,i);return}let o=i.toString(),s=Ye(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,c=n+1;if(c<e.length&&e[c]instanceof ie&&(a=!0,c++),s.isArray&&!a&&(r.array=!0),c>=e.length){r.elementDefinitions.push(s);for(let u of s.type)r.propertyTypes.add(u.code);return}for(let u of s.type){let p=u.code;bo(p)&&(p=s.type[0].code),wn(r,e,p,c)}}function Eo(r,e){if(e.name==="as"){r.propertyTypes.add(e.args[0].toString());return}if(e.name==="resolve"){r.propertyTypes.add("string");return}if(e.name==="where"&&e.args[0]instanceof ne){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function bo(r){return r==="Element"||r==="BackboneElement"}function Ro(r){return r.split("-").reduce((e,t,n)=>e+(n?P(t):t),"")}function Co(r,e){switch(r.type){case"date":return e.size===1&&e.has(l.date)?"DATE":"DATETIME";case"number":return"NUMBER";case"quantity":return"QUANTITY";case"reference":return e.has(l.canonical)?"CANONICAL":"REFERENCE";case"token":return e.size===1&&e.has(l.boolean)?"BOOLEAN":"TEXT";default:return"TEXT"}}function An(r,e){let t=[],n=ur(e);return lr(r,n.child,t),t}function Wu(r,e){let t=An(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function lr(r,e,t){e instanceof ge?(lr(r,e.left,t),lr(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function ke(r){if(r instanceof re||r instanceof ie)return[ke(r.left),r].flat();if(r instanceof C)return[r];if(r instanceof K)return[ke(r.left),ke(r.right)].flat();if(r instanceof G){if(r.name==="where"&&!(r.args[0]instanceof ne))return[];if(r.name==="last")return[]}return[r]}var el=20,Po=(T=>(T.EQUALS="eq",T.NOT_EQUALS="ne",T.GREATER_THAN="gt",T.LESS_THAN="lt",T.GREATER_THAN_OR_EQUALS="ge",T.LESS_THAN_OR_EQUALS="le",T.STARTS_AFTER="sa",T.ENDS_BEFORE="eb",T.APPROXIMATELY="ap",T.CONTAINS="contains",T.EXACT="exact",T.TEXT="text",T.NOT="not",T.ABOVE="above",T.BELOW="below",T.IN="in",T.NOT_IN="not-in",T.OF_TYPE="of-type",T.MISSING="missing",T.IDENTIFIER="identifier",T.ITERATE="iterate",T))(Po||{}),kn={contains:"contains",exact:"exact",above:"above",below:"below",text:"text",not:"not",in:"in","not-in":"not-in","of-type":"of-type",missing:"missing",identifier:"identifier",iterate:"iterate"},pr={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function ve(r,e){if(!r)throw new Error("Invalid search URL");let t="",n;if(typeof r=="string")if(r.includes("?")){let[s,a]=r.split("?");t=s,n=new URLSearchParams(a)}else t=r;else typeof r=="object"&&(t=r.pathname,n=r.searchParams);let i;t.includes("/")?i=t.split("/").filter(Boolean).pop():i=t;let o=[];if(n&&o.push(...n.entries()),e)for(let[s,a]of Object.entries(e))if(Array.isArray(a))for(let c of a)o.push([s,c]);else o.push([s,a??""]);return wo(i,o)}function tl(r){return ve(r)}function rl(r){return ve(r)}function nl(r){return ve(r)}function wo(r,e){let t={resourceType:r};for(let[n,i]of e)Ao(t,n,i);return t}function Ao(r,e,t){let n,i,o=e.indexOf(":");if(o>=0?(n=e.substring(0,o),i=e.substring(o+1)):(n=e,i=""),n!=="_"){if(n==="_has"||e.includes(".")){r.filters=me(r.filters,{code:e,operator:"eq",value:t});return}switch(n){case"_sort":Oo(r,t);break;case"_count":r.count=parseInt(t,10);break;case"_offset":r.offset=parseInt(t,10);break;case"_total":r.total=t;break;case"_summary":t==="count"?(r.total="accurate",r.count=0):(t==="true"||t==="data"||t==="text")&&(r.summary=t);break;case"_include":{let s=On(t);i==="iterate"&&(s.modifier="iterate"),r.include=me(r.include,s);break}case"_revinclude":{let s=On(t);i==="iterate"&&(s.modifier="iterate"),r.revInclude=me(r.revInclude,s);break}case"_fields":case"_elements":r.fields=t.split(",");break;case"_type":r.types=t.split(",");break;case"_format":r.format=t;break;case"_pretty":r.pretty=t==="true";break;default:{let s=V.types[r.resourceType]?.searchParams?.[n];s?r.filters=me(r.filters,Io(s,i,t)):r.filters=me(r.filters,Do(n,i,t))}}}}function Oo(r,e){for(let t of e.split(",")){let n,i=!1;t.startsWith("-")?(n=t.substring(1),i=!0):n=t,r.sortRules||(r.sortRules=[]),r.sortRules.push({code:n,descending:i})}}function Io(r,e,t){if(e==="missing")return{code:r.code,operator:"missing",value:t};switch(r.type){case"number":case"date":case"quantity":return ko(r,t);case"reference":case"string":case"token":case"uri":return Vo(r,e,t);default:throw new Error("Unrecognized search parameter type: "+r.type)}}function ko(r,e){let{operator:t,value:n}=Mo(e);return{code:r.code,operator:t,value:n}}function Vo(r,e,t){return{code:r.code,operator:No(e),value:t}}function Do(r,e,t){let n="eq";if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in pr&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function Mo(r){let e=r.substring(0,2),t=pr[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function No(r){return kn[r]??"eq"}function On(r){let e=r.split(":");if(e.includes("*"))throw new d(R("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new d(R(`Invalid include value '${r}': 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 d(R(`Invalid include value '${r}'`))}var Fo=/{{([^{}]+)}}/g;function il(r,e){return r=r.replaceAll(Fo,(t,n)=>{let i=$(n,[],e);return i.length!==1?"":bn(i[0])}),ve(r)}function ol(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(_o(t))),r.sortRules&&r.sortRules.length>0&&e.push(Lo(r.sortRules)),r.offset!==void 0&&e.push("_offset="+r.offset),r.count!==void 0&&e.push("_count="+r.count),r.total!==void 0&&e.push("_total="+r.total),r.include&&r.include.forEach(t=>e.push(In("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(In("_revinclude",t))),e.length===0?"":(e.sort((t,n)=>t.localeCompare(n)),"?"+e.join("&"))}function _o(r){let e=r.operator in kn?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in pr?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function Lo(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function In(r,e){return r+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function Vn(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!Uo(r,e,t))return!1}return!0}function Uo(r,e,t){let n=V.types[e.resourceType]?.searchParams?.[t.code];if(t.operator==="missing"&&n){let i=xe(n.expression,r);return t.value==="true"?!i.length:i.length>0}switch(n?.type){case"reference":return Bo(r,t,n);case"string":case"uri":return Dn(r,t,n);case"token":return qo(r,t,n);case"date":return $o(r,t,n);default:return!1}}function Bo(r,e,t){let n=xe(t.expression,r),i=yt(e.operator);if(e.value===""&&n.length===0)return e.operator==="eq";let o=n.map(s=>typeof s=="string"?s:s.reference);for(let s of e.value.split(",")){let a=o.includes(s);if(!a&&e.code==="_compartment"&&(a=o.some(c=>c?.endsWith("/"+s))),a)return!i}return i}function qo(r,e,t){return Pn(r.resourceType,t).type==="BOOLEAN"?jo(r,e,t):Dn(r,e,t,!0)}function jo(r,e,t){let n=xe(t.expression,r),i=e.value==="true",o=n.includes(i);return yt(e.operator)?!o:o}function Dn(r,e,t,n){let i=xe(t.expression,r),o=e.value.split(","),s=yt(e.operator);for(let a of i)for(let c of o)if(dr(a,e.operator,c,n))return!s;return s}function dr(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return dr(r,e,o,!1)&&(!s||dr(r,e,s,!1))}let i="";return r&&(typeof r=="string"?i=r:typeof r=="object"&&(i=JSON.stringify(r))),i.toLowerCase().includes(t.toLowerCase())}function $o(r,e,t){let n=xe(t.expression,r),i=e.value.split(","),o=yt(e.operator);for(let s of n)for(let a of i)if(Ho(s,e.operator,a))return!o;return o}function Ho(r,e,t){switch(e){case"sa":case"gt":return r>t;case"ge":return r>=t;case"eb":case"lt":return r<t;case"le":return r<=t;case"eq":case"ne":return r===t;default:return!1}}function yt(r){return r==="ne"||r==="not"}var Go={resourceType:"*"},Qo=["DomainConfiguration","JsonWebKey","Login"],Wo=["PasswordChangeRequest","Project","ProjectMembership","User"],Ko=(E=>(E.READ="read",E.VREAD="vread",E.UPDATE="update",E.PATCH="patch",E.DELETE="delete",E.HISTORY="history",E.HISTORY_INSTANCE="history-instance",E.HISTORY_TYPE="history-type",E.HISTORY_SYSTEM="history-system",E.CREATE="create",E.SEARCH="search",E.SEARCH_TYPE="search-type",E.SEARCH_SYSTEM="search-system",E.SEARCH_COMPARTMENT="search-compartment",E.CAPABILITIES="capabilities",E.TRANSACTION="transaction",E.BATCH="batch",E.OPERATION="operation",E))(Ko||{}),zo=["read","vread","history","history-instance"];function fl(r,e){if(r.resource){for(let t of r.resource)if(fr(t.resourceType,e))return!0}return!1}function Jo(r,e){if(Qo.includes(e))return!1;if(r.resource){for(let t of r.resource)if(fr(t.resourceType,e)&&!t.readonly)return!0}return!1}function ml(r,e){let t=e.resourceType;return Jo(r,t)?Yo(r,e,!1):!1}function Yo(r,e,t){if(r.resource){for(let n of r.resource)if(Mn(e,t?"read":"update",n))return!0}return!1}function hl(r,e,t){if(!t)return Go;if(t.resource){for(let n of t.resource)if(Mn(r,e,n))return n}}function Mn(r,e,t){let n=r.resourceType;return!(!fr(t.resourceType,n)||t.readonly&&!zo.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!Vn(r,ve(t.criteria)))}function fr(r,e){return r===e||r==="*"&&!Wo.includes(e)}function Nn(r){if(typeof window<"u")return window.atob(r);if(typeof Buffer<"u")return Buffer.from(r,"base64").toString("binary");throw new Error("Unable to decode base64")}function Fn(r){if(typeof window<"u")return window.btoa(r);if(typeof Buffer<"u")return Buffer.from(r,"binary").toString("base64");throw new Error("Unable to encode base64")}function mr(){let r=new Uint32Array(28);return crypto.getRandomValues(r),hn(r.buffer)}async function _n(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function oe(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,r=>{let e=Math.random()*16|0;return(r==="x"?e:e&3|8).toString(16)})}function Zo(r){let e={};r=ee(r);for(let i of r.entry||[]){i.resource?.meta!==void 0&&(delete i.resource.meta.author,delete i.resource.meta.compartment,delete i.resource.meta.lastUpdated,delete i.resource.meta.project,delete i.resource.meta.versionId);let o=i.resource?.id;o&&(e[o]=oe(),i.fullUrl="urn:uuid:"+e[o],delete i.resource?.id)}let t=r.entry,n=JSON.stringify({resourceType:"Bundle",type:"transaction",entry:t?.map(i=>({fullUrl:i.fullUrl,request:{method:"POST",url:i.resource.resourceType},resource:i.resource}))},(i,o)=>Xo(i,o,e),2);return es(JSON.parse(n))}function Xo(r,e,t){if(r==="reference"&&typeof e=="string"){let n;if(e.includes("/")?n=e.split("/")[1]:e.startsWith("urn:uuid:")?n=e.slice(9):e.startsWith("#")&&(n=e.slice(1)),n){let i=t[n];if(i)return"urn:uuid:"+i}}return e}function es(r){let e=rs(r),{sorted:t,cycles:n}=ts(e),i={};for(let s of r.entry||[])s.fullUrl&&(i[s.fullUrl]=s);let o=t.map(s=>i[s]);for(let s of n)for(let a of s){let c=i[a],u={...c,request:{...c.request,method:"PUT"}};o.push(u)}return{...r,entry:o}}function ts(r){let e=[],t={},n=[];for(let o of Object.keys(r))t[o]=0;function i(o,s){if(t[o]===2)return!0;if(t[o]===1){let c=s.lastIndexOf(o);return c!==-1&&n.push(s.slice(c)),!0}t[o]=1,s.push(o);let a=!1;for(let c of r[o])i(c,s)||(a=!0);return t[o]=2,s.pop(),e.unshift(o),!a}for(let o in r)t[o]===0&&i(o,[]);return{sorted:e,cycles:n}}function Ln(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(Z(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else Ln(n,e)}}function rs(r){let e={};for(let t of r.entry||[])t.fullUrl&&(e[t.fullUrl]=[]);for(let t of r.entry||[]){let n=t.fullUrl;t.resource&&Ln(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function bl(r){r=ee(r);let e={resourceType:"Bundle",type:"transaction",entry:[{resource:r}]};if(r.contained){for(let t of r.contained)e.entry.push({resource:t});r.contained=void 0}for(let t of e.entry)t.resource&&!t.resource.id&&(t.resource.id=oe());return Zo(e)}var gt=class{constructor(e=10){this.max=e,this.cache=new Map}clear(){this.cache.clear()}get(e){let t=this.cache.get(e);return t&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size>=this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}delete(e){this.cache.delete(e)}keys(){return this.cache.keys()}first(){return this.cache.keys().next().value}};var N={CSS:"text/css",DICOM:"application/dicom",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",JSON:"application/json",JSON_PATCH:"application/json-patch+json",PNG:"image/png",SCIM_JSON:"application/scim+json",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript",PING:"x-application/ping"};var Ve=class{constructor(){this.listeners={}}addEventListener(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)}removeEventListener(e,t){let n=this.listeners[e];if(n){for(let i=0;i<n.length;i++)if(n[i]===t){n.splice(i,1);return}}}dispatchEvent(e){let t=this.listeners[e.type];if(t)for(let n of t)n.call(this,e);return!e.defaultPrevented}removeAllListeners(){this.listeners={}}},se=class{constructor(){this.emitter=new Ve}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}removeAllListeners(){this.emitter.removeAllListeners()}};var hr={"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"},ns=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],yr=["DiagnosticReport-update"];function Bn(r){return yr.includes(r)}function qn(r){if(yr.includes(r))throw new d(m(`'context.version' is required for '${r}'.`))}var is={"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"},select:{resourceType:"*",isArray:!0}},"DiagnosticReport-update":{report:{resourceType:"DiagnosticReport"},patient:{resourceType:"Patient",optional:!0},study:{resourceType:"ImagingStudy",optional:!0},updates:{resourceType:"Bundle"}},syncerror:{operationoutcome:{resourceType:"OperationOutcome"}}};function os(r){return ns.includes(r)}function jn(r){return!!r.endpoint}function gr(r){if(!vt(r))throw new d(m("subscriptionRequest must be an object conforming to SubscriptionRequest type."));let{channelType:e,mode:t,topic:n,events:i}=r,o={"hub.channel.type":e,"hub.mode":t,"hub.topic":n,"hub.events":i.join(",")};return jn(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function vt(r){if(typeof r!="object")return!1;let{channelType:e,mode:t,topic:n,events:i}=r;if(!(e&&t&&n&&i)||typeof n!="string"||typeof i!="object"||!Array.isArray(i)||i.length<1||e!=="websocket"||t!=="subscribe"&&t!=="unsubscribe")return!1;for(let o of i)if(!hr[o])return!1;return!(jn(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function Un(r,e,t,n){if(typeof e!="object")throw new d(m(`context[${t}] is invalid. Context must contain a single valid FHIR resource! Resource is not an object.`));if(!(e.id&&typeof e.id=="string"))throw new d(m(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new d(m(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!os(e.resourceType))throw new d(m(`context[${t}] 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 d(m(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${i}.`))}}function ss(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),!n.isArray)Un(r,e.resource,t,n);else{let{resources:o}=e;if(!o)throw new d(m(`context[${t}] is invalid. context[${t}] for the '${r}' with key '${String(e.key)}' should contain an array of resources on the key 'resources'.`));for(let s of o)Un(r,s,t,n)}}function as(r,e){let t=new Map,n=is[r];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new d(m(`Key '${o}' not found for event '${r}'. Make sure to add only valid keys.`));ss(r,e[i],i,n[o],t)}for(let[i,o]of Object.entries(n)){if(!(o.optional||t.has(i)))throw new d(m(`Missing required key '${i}' on context for '${r}' event.`));if(!o.manyAllowed&&(t.get(i)||0)>1)throw new d(m(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function xr(r,e,t,n){if(!(r&&typeof r=="string"))throw new d(m("Must provide a topic."));if(!hr[e])throw new d(m(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(hr).join(", ")}`));if(typeof t!="object")throw new d(m("context must be a context object or array of context objects."));if(yr.includes(e)&&!n)throw new d(m(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return as(e,i),{timestamp:new Date().toISOString(),id:oe(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var xt=class extends se{constructor(e){if(super(),this.subRequest=e,!e.endpoint)throw new d(m("Subscription request should contain an endpoint."));if(!vt(e))throw new d(m("Subscription request failed validation."));let t=new WebSocket(e.endpoint);t.addEventListener("open",()=>{this.dispatchEvent({type:"connect"}),t.addEventListener("message",n=>{let i=JSON.parse(n.data);if(i["hub.topic"])return;let o=i;o.event["hub.event"]!=="heartbeat"&&(this.dispatchEvent({type:"message",payload:o}),t.send(JSON.stringify({id:i?.id,timestamp:new Date().toISOString()})))}),t.addEventListener("close",()=>{this.dispatchEvent({type:"disconnect"})})}),this.websocket=t}disconnect(){this.websocket.close()}};function cs(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=Nn(e),n=Array.from(t).reduce((o,s)=>{let a=("00"+s.charCodeAt(0).toString(16)).slice(-2);return`${o}%${a}`},""),i=decodeURIComponent(n);return JSON.parse(i)}function $n(r){return r.split(".").length===3}function Tt(r){let[e,t,n]=r.split(".");return cs(t)}function Hn(r){try{return typeof Tt(r).login_id=="string"}catch{return!1}}function Gn(r){try{let t=Tt(r).exp;return typeof t=="number"?t*1e3:void 0}catch{return}}var St=class{constructor(e){this.medplum=e}async get(e){return this.medplum.get(`keyvalue/v1/${e}`)}async set(e,t){await this.medplum.put(`keyvalue/v1/${e}`,t)}async delete(e){await this.medplum.delete(`keyvalue/v1/${e}`)}};var us,k=class{constructor(e){this[us]="ReadablePromise";this.status="pending";this.suspender=e.then(t=>(this.status="success",this.response=t,t),t=>{throw this.status="error",this.error=t,t})}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,t){return this.suspender.then(e,t)}catch(e){return this.suspender.catch(e)}finally(e){return this.suspender.finally(e)}};us=Symbol.toStringTag;var De=class{constructor(e){this.storage=e??(typeof localStorage<"u"?localStorage:new vr)}clear(){this.storage.clear()}getString(e){return this.storage.getItem(e)??void 0}setString(e,t){t?this.storage.setItem(e,t):this.storage.removeItem(e)}getObject(e){let t=this.getString(e);return t?JSON.parse(t):void 0}setObject(e,t){this.setString(e,t?dn(t):void 0)}},vr=class{constructor(){this.data=new Map}get length(){return this.data.size}clear(){this.data.clear()}getItem(e){return this.data.get(e)??null}setItem(e,t){t?this.data.set(e,t):this.data.delete(e)}removeItem(e){this.data.delete(e)}key(e){return Array.from(this.data.keys())[e]}},Qn=class extends De{constructor(){super();this.initResolve=()=>{};this.initialized=!1,this.initPromise=new Promise(t=>{this.initResolve=t})}setInitialized(){this.initialized||(this.initResolve(),this.initialized=!0)}getInitPromise(){return this.initPromise}get isInitialized(){return this.initialized}};var Tr=class extends se{constructor(t){super();this.bufferedAmount=-1/0;this.extensions="NOT_IMPLEMENTED";this.messageBuffer=[];let n=new WebSocket(t);n.addEventListener("open",()=>{if(this.messageBuffer.length){let i=this.messageBuffer;for(let o of i)n.send(o)}this.dispatchEvent(new Event("open"))}),n.addEventListener("error",i=>{this.dispatchEvent(i)}),n.addEventListener("message",i=>{this.dispatchEvent(i)}),n.addEventListener("close",i=>{this.dispatchEvent(i)}),this.ws=n}get readyState(){return this.ws.readyState}close(){this.ws.close()}send(t){if(this.ws.readyState!==WebSocket.OPEN){this.messageBuffer.push(t);return}try{this.ws.send(t)}catch(n){this.dispatchEvent(new ErrorEvent("error",{error:n,message:n.message})),this.messageBuffer.push(t)}}},Me=class extends se{constructor(...e){super(),this.criteria=new Set(e)}getCriteria(){return this.criteria}_addCriteria(e){this.criteria.add(e)}_removeCriteria(e){this.criteria.delete(e)}},Sr=class{constructor(e){this.criteria=e,this.emitter=new Me(e),this.refCount=1}},Et=class{constructor(e,t,n){if(!(e instanceof bt))throw new d(m("First arg of constructor should be a `MedplumClient`"));let i;try{i=new URL(t).toString()}catch{throw new d(m("Not a valid URL"))}let o=n?.RobustWebSocket?new n.RobustWebSocket(i):new Tr(i);this.medplum=e,this.ws=o,this.masterSubEmitter=new Me,this.criteriaEntries=new Map,this.criteriaEntriesBySubscriptionId=new Map,this.wsClosed=!1,this.setupWebSocketListeners()}setupWebSocketListeners(){let e=this.ws;e.addEventListener("message",t=>{try{let n=JSON.parse(t.data),i=n?.entry?.[0]?.resource;if(i.type==="heartbeat"){this.masterSubEmitter?.dispatchEvent({type:"heartbeat",payload:n});return}this.masterSubEmitter?.dispatchEvent({type:"message",payload:n});let o=this.criteriaEntriesBySubscriptionId.get(Xe(i.subscription));if(!o){console.warn("Received notification for criteria the SubscriptionManager is not listening for");return}o.emitter.dispatchEvent({type:"message",payload:n})}catch(n){console.error(n);let i={type:"error",payload:n};this.masterSubEmitter?.dispatchEvent(i);for(let{emitter:o}of this.criteriaEntries.values())o.dispatchEvent(i)}}),e.addEventListener("error",()=>{let t={type:"error",payload:new d(Fr(new Error("WebSocket error")))};this.masterSubEmitter?.dispatchEvent(t);for(let{emitter:n}of this.criteriaEntries.values())n.dispatchEvent(t)}),e.addEventListener("close",()=>{let t={type:"close"};this.wsClosed&&this.masterSubEmitter?.dispatchEvent(t);for(let{emitter:n}of this.criteriaEntries.values())n.dispatchEvent(t)})}emitConnect(e){let t={type:"connect",payload:{subscriptionId:e}};this.masterSubEmitter?.dispatchEvent(t);for(let{emitter:n}of this.criteriaEntries.values())n.dispatchEvent(t)}emitError(e,t){let n={type:"error",payload:t};this.masterSubEmitter?.dispatchEvent(n),this.criteriaEntries.get(e)?.emitter?.dispatchEvent(n)}async getTokenForCriteria(e){let t=e?.subscriptionId;t||(t=(await this.medplum.createResource({resourceType:"Subscription",status:"active",reason:`WebSocket subscription for ${X(this.medplum.getProfile())}`,criteria:e.criteria,channel:{type:"websocket"}})).id);let{parameter:n}=await this.medplum.get(`/fhir/R4/Subscription/${t}/$get-ws-binding-token`),i=n?.find(s=>s.name==="token")?.valueString,o=n?.find(s=>s.name==="websocket-url")?.valueUrl;if(!i)throw new d(m("Failed to get token"));if(!o)throw new d(m("Failed to get URL from $get-ws-binding-token"));return[t,i]}addCriteria(e){this.masterSubEmitter&&this.masterSubEmitter._addCriteria(e);let t=this.criteriaEntries.get(e);if(t)return t.refCount+=1,t.emitter;let n=new Sr(e);return this.criteriaEntries.set(e,n),this.getTokenForCriteria(n).then(([i,o])=>{n.subscriptionId=i,this.criteriaEntriesBySubscriptionId.set(i,n),this.emitConnect(i),this.ws.send(JSON.stringify({type:"bind-with-token",payload:{token:o}}))}).catch(i=>{console.error(i.message),this.emitError(e,i),this.criteriaEntries.delete(e)}),n.emitter}removeCriteria(e){let t=this.criteriaEntries.get(e);if(!t){console.warn("Criteria not known to `SubscriptionManager`. Possibly called remove too many times.");return}if(t.refCount-=1,t.refCount>0)return;let n=this.criteriaEntries.get(e)?.subscriptionId,i={type:"disconnect",payload:{subscriptionId:n}};this.masterSubEmitter&&(this.masterSubEmitter._removeCriteria(e),this.masterSubEmitter.dispatchEvent(i)),this.criteriaEntries.get(e)?.emitter?.dispatchEvent(i),this.criteriaEntries.delete(e),n&&this.criteriaEntriesBySubscriptionId.delete(n)}closeWebSocket(){this.wsClosed||(this.wsClosed=!0,this.ws.close())}getCriteriaCount(){return this.criteriaEntries.size}getMasterEmitter(){return this.masterSubEmitter||(this.masterSubEmitter=new Me(...Array.from(this.criteriaEntries.keys()))),this.masterSubEmitter}};var yp="3.0.13-ced876fb4",gp="medplum-cli",ls=N.FHIR_JSON+", */*; q=0.1",ps="https://api.medplum.com/",ds=1e3,fs=6e4,ms=0,hs="Binary/",Wn={resourceType:"Device",id:"system",deviceName:[{type:"model-name",name:"System"}]},ys=(o=>(o.ClientCredentials="client_credentials",o.AuthorizationCode="authorization_code",o.RefreshToken="refresh_token",o.JwtBearer="urn:ietf:params:oauth:grant-type:jwt-bearer",o.TokenExchange="urn:ietf:params:oauth:grant-type:token-exchange",o))(ys||{}),gs=(o=>(o.AccessToken="urn:ietf:params:oauth:token-type:access_token",o.RefreshToken="urn:ietf:params:oauth:token-type:refresh_token",o.IdToken="urn:ietf:params:oauth:token-type:id_token",o.Saml1Token="urn:ietf:params:oauth:token-type:saml1",o.Saml2Token="urn:ietf:params:oauth:token-type:saml2",o))(gs||{}),xs=(o=>(o.ClientSecretBasic="client_secret_basic",o.ClientSecretPost="client_secret_post",o.ClientSecretJwt="client_secret_jwt",o.PrivateKeyJwt="private_key_jwt",o.None="none",o))(xs||{}),vs=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(vs||{}),bt=class extends Ve{constructor(t){super();this.initComplete=!0;if(t?.baseUrl&&!t.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");this.options=t??{},this.fetch=t?.fetch??Ts(),this.storage=t?.storage??new De,this.createPdfImpl=t?.createPdf,this.baseUrl=zn(t?.baseUrl??ps),this.fhirBaseUrl=zn(Rt(this.baseUrl,t?.fhirUrlPath??"fhir/R4/")),this.authorizeUrl=Rt(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=Rt(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=Rt(this.baseUrl,t?.logoutUrl??"oauth2/logout"),this.clientId=t?.clientId??"",this.clientSecret=t?.clientSecret??"",this.onUnauthenticated=t?.onUnauthenticated,this.cacheTime=t?.cacheTime??(typeof window>"u"?ms:fs),this.cacheTime>0?this.requestCache=new gt(t?.resourceCacheSize??ds):this.requestCache=void 0,t?.autoBatchTime?(this.autoBatchTime=t.autoBatchTime,this.autoBatchQueue=[]):(this.autoBatchTime=0,this.autoBatchQueue=void 0),t?.accessToken&&this.setAccessToken(t.accessToken),this.storage.getInitPromise===void 0?(t?.accessToken||this.attemptResumeActiveLogin().catch(console.error),this.initPromise=Promise.resolve()):(this.initComplete=!1,this.initPromise=this.storage.getInitPromise(),this.initPromise.then(()=>{t?.accessToken||this.attemptResumeActiveLogin().catch(console.error),this.initComplete=!0}).catch(console.error)),this.setupStorageListener()}get isInitialized(){return this.initComplete}getInitPromise(){return this.initPromise}async attemptResumeActiveLogin(){let t=this.getActiveLogin();t&&(this.setAccessToken(t.accessToken,t.refreshToken),await this.refreshProfile())}getBaseUrl(){return this.baseUrl}getAuthorizeUrl(){return this.authorizeUrl}getTokenUrl(){return this.tokenUrl}getLogoutUrl(){return this.logoutUrl}clear(){this.storage.clear(),sessionStorage.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(t){t=t.toString(),this.requestCache?.delete(t)}invalidateAll(){this.requestCache?.clear()}invalidateSearches(t){let n=this.fhirBaseUrl+t;if(this.requestCache)for(let i of this.requestCache.keys())(i.endsWith(n)||i.includes(n+"?"))&&this.requestCache.delete(i)}get(t,n={}){t=t.toString();let i=this.getCacheEntry(t,n);if(i)return i.value;let o;t.startsWith(this.fhirBaseUrl)&&this.autoBatchQueue?o=new Promise((a,c)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:c}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new k(o);return this.setCacheEntry(t,s),s}post(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("POST",t,o)}put(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("PUT",t,o)}patch(t,n,i={}){return t=t.toString(),this.setRequestBody(i,n),this.setRequestContentType(i,N.JSON_PATCH),this.invalidateUrl(t),this.request("PATCH",t,i)}delete(t,n){return t=t.toString(),this.invalidateUrl(t),this.request("DELETE",t,n)}async startNewUser(t,n){let{codeChallengeMethod:i,codeChallenge:o}=await this.startPkce();return this.post("auth/newuser",{...t,clientId:t.clientId??this.clientId,codeChallengeMethod:i,codeChallenge:o},void 0,n)}async startNewProject(t,n){return this.post("auth/newproject",t,void 0,n)}async startNewPatient(t,n){return this.post("auth/newpatient",t,void 0,n)}async startLogin(t,n){return this.post("auth/login",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async startGoogleLogin(t,n){return this.post("auth/google",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async ensureCodeChallenge(t){return t.codeChallenge?t:{...t,...await this.startPkce()}}async signOut(){await this.post(this.logoutUrl,{}),this.clear()}async signInWithRedirect(t){let i=new URLSearchParams(window.location.search).get("code");if(!i){await this.requestAuthorization(t);return}return this.processCode(i)}signOutWithRedirect(){window.location.assign(this.logoutUrl)}async signInWithExternalAuth(t,n,i,o,s=!0){let a=o;s&&(a=await this.ensureCodeChallenge(o)),window.location.assign(this.getExternalAuthRedirectUri(t,n,i,a,s))}async exchangeExternalAccessToken(t,n){if(n=n??this.clientId,!n)throw new Error("MedplumClient is missing clientId");let i=new URLSearchParams;return i.set("grant_type","urn:ietf:params:oauth:grant-type:token-exchange"),i.set("subject_token_type","urn:ietf:params:oauth:token-type:access_token"),i.set("client_id",n),i.set("subject_token",t),this.fetchTokens(i)}getExternalAuthRedirectUri(t,n,i,o,s=!0){let a=new URL(t);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:c,codeChallengeMethod:u}=o;if(!u)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!c)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");a.searchParams.set("code_challenge_method",u),a.searchParams.set("code_challenge",c)}return a.toString()}fhirUrl(...t){return new URL(t.join("/"),this.fhirBaseUrl)}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=new URLSearchParams(n).toString()),i}search(t,n,i){let o=this.fhirSearchUrl(t,n),s="search-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let c=new k((async()=>{let u=await this.get(o,i);if(u.entry)for(let p of u.entry)this.cacheResource(p.resource);return u})());return this.setCacheEntry(s,c),c}searchOne(t,n,i){let o=this.fhirSearchUrl(t,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 c=new k(this.search(t,o.searchParams,i).then(u=>u.entry?.[0]?.resource));return this.setCacheEntry(s,c),c}searchResources(t,n,i){let s="searchResources-"+this.fhirSearchUrl(t,n).toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let c=new k(this.search(t,n,i).then(Er));return this.setCacheEntry(s,c),c}async*searchResourcePages(t,n,i){let o=this.fhirSearchUrl(t,n);for(;o;){let s=new URL(o).searchParams,a=await this.search(t,s,i),c=a.link?.find(u=>u.relation==="next");if(!a.entry?.length&&!c)break;yield Er(a),o=c?.url?new URL(c.url):void 0}}searchValueSet(t,n,i){return this.valueSetExpand({url:t,filter:n},i)}valueSetExpand(t,n){let i=this.fhirUrl("ValueSet","$expand");return i.search=new URLSearchParams(t).toString(),this.get(i.toString(),n)}getCached(t,n){let i=this.requestCache?.get(this.fhirUrl(t,n).toString())?.value;return i?.isOk()?i.read():void 0}getCachedReference(t){let n=t.reference;if(!n)return;if(n==="system")return Wn;let[i,o]=n.split("/");if(!(!i||!o))return this.getCached(i,o)}readResource(t,n,i){return this.get(this.fhirUrl(t,n),i)}readReference(t,n){let i=t.reference;if(!i)return new k(Promise.reject(new Error("Missing reference")));if(i==="system")return new k(Promise.resolve(Wn));let[o,s]=i.split("/");return!o||!s?new k(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(Wr(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new k((async()=>{let s=`{
|
|
4
4
|
StructureDefinitionList(name: "${t}") {
|
|
5
5
|
resourceType,
|
|
6
6
|
name,
|