@medplum/core 3.0.9 → 3.0.10
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 +5 -5
- package/dist/cjs/index.cjs.map +4 -4
- package/dist/cjs/index.d.ts +125 -42
- package/dist/esm/index.d.ts +125 -42
- package/dist/esm/index.mjs +5 -5
- package/dist/esm/index.mjs.map +4 -4
- package/package.json +3 -3
package/dist/esm/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
var Fe=class{constructor(e,t){this.operator=e;this.child=t}toString(){return`${this.operator}(${this.child.toString()})`}},H=class{constructor(e,t,n){this.operator=e;this.left=t;this.right=n}toString(){return`${this.left.toString()} ${this.operator} ${this.right.toString()}`}},_e=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 It(e,this.prefixParselets,this.infixParselets)}},It=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 Pr="http://unitsofmeasure.org",Ys="http://loinc.org",Zs="http://snomed.info/sct",Xs="http://www.nlm.nih.gov/research/umls/rxnorm",ea="http://www.ama-assn.org/go/cpt",ta="http://hl7.org/fhir/sid/icd-10",wr="http://hl7.org";var kt="ok",Ue="created",Ot="gone",Vt="not-modified",Dt="not-found",Ar="conflict",Ir="unauthorized",kr="precondition-failed",Or="forbidden",Vr="too-many-requests",Le="accepted",na={resourceType:"OperationOutcome",id:kt,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},ia={resourceType:"OperationOutcome",id:Ue,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},oa={resourceType:"OperationOutcome",id:Vt,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},Dr={resourceType:"OperationOutcome",id:Dt,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},sa={resourceType:"OperationOutcome",id:Ir,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},aa={resourceType:"OperationOutcome",id:Or,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},ca={resourceType:"OperationOutcome",id:Ot,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},ua={resourceType:"OperationOutcome",id:kr,issue:[{severity:"error",code:"lock-error",details:{text:"Precondition Failed"}}]},la={resourceType:"OperationOutcome",id:Vr,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function pa(r){return{resourceType:"OperationOutcome",id:Le,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:r}]}}function b(r,e){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:r},expression:e?[e]:void 0}]}}function da(r){return{resourceType:"OperationOutcome",id:Ar,issue:[{severity:"error",code:"conflict",details:{text:r}}]}}function m(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"structure",details:{text:r}}]}}function Mr(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function ce(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function Mt(r){return r.id===kt||r.id===Ue||r.id===Vt||r.id===Le}function fa(r){return r.id===Ue}function ma(r){return r.id===Le}function ha(r){return r.id===Dt}function ya(r){return r.id===Ot}function ga(r){switch(r.id){case kt:return 200;case Ue:return 201;case Le:return 202;case Vt:return 304;case Ir:return 401;case Or:return 403;case Dt:return 404;case Ar:return 409;case Ot:return 410;case kr:return 412;case Vr:return 429;default:return r.issue?.[0]?.code==="exception"?500:400}}function xa(r,e){if(!Mt(r)||e===void 0)throw new d(r)}var d=class extends Error{constructor(e,t){super(Nr(e)),this.outcome=e,this.cause=t}};function Be(r){return r instanceof d?r.outcome:ce(r)?r:b(di(r))}function di(r){return r?typeof r=="string"?r:r instanceof Error?r.message:ce(r)?Nr(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function Nr(r){let e=r.issue?.map(fi)??[];return e.length>0?e.join("; "):"Unknown error"}function fi(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 ue(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 g(r,e){return ue("error","structure",e,r)}function Fr(r,e){return ue("error","invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function _r(r,e,t,n){return ue("error","processing",e,r,{...n,error:t})}var mi={"http://hl7.org/fhirpath/System.String":"string"};function Ta(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:mi[t.code]??t.code})),e}function hi(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 Ur(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,hi(i,o)])),constraints:[],innerTypes:[]};return e}var Lr={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 Lt(r){return new _t(r).parse()}var Ee=Ur(Lr),Bt=Object.create(null),Br=Object.create(null);function Ft(r){let e;return r?(e=Br[r],e||(e=Br[r]=Object.create(null))):e=Ee,e}function qt(r,e){let t=Array.isArray(r)?r:r.entry?.map(n=>n.resource)??[];for(let n of t)jt(n,e)}function jt(r,e){if(!r?.name)throw new Error("Failed loading StructureDefinition from bundle");if(r.resourceType!=="StructureDefinition")return;let t=Lt(r),n=Ft(e);n[r.name]=t,e&&r.url===e&&(Bt[e]=t);for(let i of t.innerTypes)i.parentType=t,n[i.name]=i}function Gr(){return Ee}function Qr(r){return!!Ee[r]}function be(r,e){let t=Ft(e)[r];return!t&&e&&(t=Ft()[r]),t}function pe(r,e){let t=be(r,e);if(!t)throw new d(b("Unknown data type: "+r));return t}function Hr(r){let e=Ee[r];return e&&Gt(e)}function Wr(r){return!!Bt[r]}function Kr(r){return Bt[r]}var _t=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:Ti(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=Nt(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[Nt(e,n.path)]=t;break}n=n.parent}if(!n){let i=Nt(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&&!le(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;this.backboneContext={type:{name:Ut(e),title:e.label,description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path??"",parent:le(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,t){vi(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&&!le(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!le(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),delete this.backboneContext;this.slicingContext&&!le(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!!(le(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=Ut(e)),n||(n=$t(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=jr(e.max),n=e.base?.max?jr(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:$r(P(i,"fixed[x]")),pattern:$r(P(i,"pattern[x]")),binding:e.binding}}};function Oa(r,e){if(!r)return;let t=[];for(let n of e){t.push("_"+n);let i=Ee[r.resourceType].elements[n+"[x]"];i&&t.push(...i.type.map(o=>n+C(o.code)))}for(let n of Object.getOwnPropertyNames(r))!e.includes(n)&&!t.includes(n)&&!gi.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(qr):[qr]},r}var qr={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},gi=["resourceType","id","meta"];function jr(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function Nt(r,e=""){return xi(r.path,e)}function xi(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function le(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function $r(r){return Array.isArray(r)&&r.length>0?r[0]:S(r)?void 0:r}function vi(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 Ti(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 Ht(r,e,t,n){new Qt(r,e,t,n).crawl()}var Qt=class{constructor(e,t,n,i){this.rootResource=e,this.visitor=t,n?this.schema=n:this.schema=pe(e.resourceType),i?this.initialPath=i:this.initialPath=e.resourceType}crawl(){this.crawlObject(y(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=Re(e,t);this.visitor.visitProperty&&this.visitor.visitProperty(e,t,i,o,n);for(let s of o)if(s)for(let a of je(s))this.crawlPropertyValue(a,i)}crawlPropertyValue(e,t){if(!qe(e.type.charAt(0))){let n=pe(e.type);this.crawlObject(e,n,t)}}};function Re(r,e,t){if(e==="$this")return[r];let[n,...i]=e.split("."),o=[P(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(P(u,s,t));else c!==void 0&&a.push(P(c,s,t));o=a}return o}var zr={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"},$e={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:/.*/},Si={"ele-1":!0,"dom-3":!0,"org-1":!0,"sdf-19":!0};function rc(r,e){return new Wt(r.resourceType,r,e).validate()}var Wt=class{constructor(e,t,n){this.issues=[],this.rootResource=t,this.currentResource=[t],n?.profile?this.schema=Lt(n.profile):this.schema=pe(e)}validate(){let e=this.rootResource.resourceType;if(!e)throw new d(m("Missing resource type"));this.constraintsCheck(y(this.rootResource),this.schema,e),Kt(this.rootResource,e,this.issues),Ht(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(g(n,"Expected array of values for property"));return}c=a}else{if(Array.isArray(a)){this.issues.push(g(n,"Expected single value for property"));return}c=[a]}(c.length<s.min||c.length>s.max)&&this.issues.push(g(s.path,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${c.length}`)),Jr(a,s)||this.issues.push(g(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 x=Ri(p,s.slicing);x&&u&&(u[x]+=1)}this.validateSlices(s.slicing?.slices,u,n)}}checkPresence(e,t,n){return e===void 0?(t.min>0&&this.issues.push(g(n,"Missing required property")),!1):S(e)?(this.issues.push(g(n,"Invalid empty value")),!1):!0}checkPropertyValue(e,t){qe(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(g(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=bi(e,s,t);if(a){o[a]&&this.issues.push(ue("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(g(`${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 Si)&&!this.isExpressionTrue(o,e,n)){this.issues.push(Fr(n,o));return}}}referenceTypeCheck(e,t,n){if(e.type!=="Reference")return;let i=e.value;if(!Y(i))return;let o=i.reference.split("/")[0];if(!o)return;let s=t.type.find(v=>v.code==="Reference")?.targetProfile;if(!s)return;let a=wr+"/fhir/StructureDefinition/",c=a+"Resource",u=a+o,p="https://medplum.com/fhir/StructureDefinition/",x=p+o;for(let v of s)if(v===c||v===u||v===x||!v.startsWith(a)&&!v.startsWith(p))return;this.issues.push(ue("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":y(this.currentResource[this.currentResource.length-1]),"%rootResource":y(this.rootResource),"%ucum":y(Pr)});return i.length===1&&i[0].value===!0}catch(i){return this.issues.push(_r(n,"Error evaluating invariant expression",i,{fhirpath:e.expression})),!1}}validatePrimitiveType(e,t){let[n,i]=Ci(e);if(n){let{type:o,value:s}=n;if(!(o in zr)){this.issues.push(g(t,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=zr[o];if(typeof s!==a){s!==null&&this.issues.push(g(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&&Ht(i.value,this,pe("Element"),t)}validateString(e,t,n){if(!e.trim()){this.issues.push(g(n,"String must contain non-whitespace content"));return}let i=$e[t];i&&!i.exec(e)&&this.issues.push(g(n,"Invalid "+t+" format"))}validateNumber(e,t,n){Number.isNaN(e)||!Number.isFinite(e)?this.issues.push(g(n,"Invalid numeric value")):Ei(t)&&!Number.isInteger(e)?this.issues.push(g(n,"Expected number to be an integer")):t===l.positiveInt&&e<=0?this.issues.push(g(n,"Expected number to be positive")):t===l.unsignedInt&&e<0&&this.issues.push(g(n,"Expected number to be non-negative"))}};function Ei(r){return r===l.integer||r===l.positiveInt||r===l.unsignedInt}function bi(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 P(r,i)?s:void 0}}function Kt(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(g(o,"Invalid null value"));else if(Array.isArray(i))for(let a=0;a<i.length;a++)i[a]===void 0?t.push(g(`${o}[${a}]`,"Invalid undefined value")):i[a]===null&&!r[s]?.[a]?t.push(g(`${o}[${a}]`,"Invalid null value")):i[a]&&Kt(i[a],`${o}[${a}]`,t);else typeof i=="object"&&Kt(i,o,t)}}function Jr(r,e){return!(e.pattern&&!Qe(r,e.pattern)||e.fixed&&!Ge(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(Jr(r,i))return!0;break;case"type":return!r||!o?.length?!1:o.some(s=>s.code===r.type)}return!1}function Ri(r,e){if(e){for(let t of e.slices)if(e.discriminator.every(n=>je(Re(r,n.path))?.some(i=>zt(i,n,t))))return t.name}}function Ci(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 y(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}:A(r)?{type:l.Quantity,value:r}:_(r)?{type:r.resourceType,value:r}:{type:l.BackboneElement,value:r}}function N(r){return r.length===0?!1:!!r[0].value}function U(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 P(r,e,t){if(!r.value)return;let n=ze(r.type,e,t?.profileUrl);return n?Pi(r,e,n):wi(r,e)}function Pi(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+C(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))for(let c=0;c<Math.max(o.length,a.length);c++)o[c]=tn(o[c],a[c]);else o=tn(o,a);if(!S(o))return(s==="Element"||s==="BackboneElement")&&(s=t.type[0].code),Array.isArray(o)?o.map(c=>Yr(c,s)):Yr(o,s)}function Yr(r,e){return e==="Resource"&&_(r)&&(e=r.resourceType),{type:e,value:r}}function wi(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+C(i);if(o in t){n=t[o];break}}if(!S(n))return Array.isArray(n)?n.map(y):y(n)}function We(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(N(rn(t,i))){n=!0;break}n||e.push(t)}return e}function Jt(r){return f(!N(r))}function Yt(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?f(!1):f(r.every((t,n)=>N(rn(t,e[n]))))}function rn(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):A(t)&&A(n)?f(sn(t,n)):f(typeof t=="object"&&typeof n=="object"?Xt(r,e):t===n)}function Zt(r,e){return r.length===0&&e.length===0?f(!0):r.length!==e.length?f(!1):(r.sort(Zr),e.sort(Zr),f(r.every((t,n)=>N(Ai(t,e[n])))))}function Ai(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):A(s)&&A(a)?f(sn(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"?Xt({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function Zr(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 Ke(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 nn(t);case"DateTime":return He(t);case"Time":return typeof t=="string"&&!!/^T\d/.exec(t);case"Period":return on(t);case"Quantity":return A(t);default:return typeof t=="object"&&t?.resourceType===e}}function nn(r){return typeof r=="string"&&!!$e.date.exec(r)}function He(r){return typeof r=="string"&&!!$e.dateTime.exec(r)}function on(r){return!!(r&&typeof r=="object"&&("start"in r&&He(r.start)||"end"in r&&He(r.end)))}function cc(r){if(r){if(nn(r))return{start:Xr(r,"0000-00-00T00:00:00.000Z"),end:Xr(r,"xxxx-12-31T23:59:59.999Z")};if(He(r))return{start:r,end:r};if(on(r))return r}}function Xr(r,e){return r+e.substring(r.length)}function A(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function sn(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 Xt(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(en(o)&&en(s)){if(!Xt(o,s))return!1}else if(o!==s)return!1}return!0}function en(r){return r!==null&&typeof r=="object"}function tn(r,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return Ii(r??{},e)}return r}function Ii(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}function Z(r){let e=X(r),t=Oi(r);return t===e?{reference:e}:{reference:e,display:t}}function X(r){return Y(r)?r.reference:`${r.resourceType}/${r.id}`}function Je(r){if(r)return Y(r)?r.reference.split("/")[1]:r.id}function mc(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 ki(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function Oi(r){if(ki(r)){let e=Vi(r);if(e)return e}if(r.resourceType==="Device"){let e=Di(r);if(e)return e}return r.resourceType==="Observation"&&"code"in r&&r.code?.text?r.code.text:r.resourceType==="User"&&r.email?r.email:"name"in r&&r.name&&typeof r.name=="string"?r.name:X(r)}function Vi(r){let e=r.name;if(e&&e.length>0)return Ze(e[0])}function Di(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function hc(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=an(t);if(n)return n}else return an(e)}function an(r){if(r.url&&r.contentType&&r.contentType.startsWith("image/"))return r.url}function yc(r){return r?new Date(r):void 0}function Ye(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 x=a*12+c-(i*12+o);u<s&&x--;let v=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:p,months:x,days:v}}function gc(r,e){let{years:t,months:n,days:i}=Ye(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 xc(r){let e={};return cn(r.item,e),e}function cn(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),cn(t.item,e)}function vc(r){let e={};return un(r.item,e),e}function un(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer),un(t.item,e)}function Tc(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 Sc(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 Ec(r,...e){let t=$t(r,...e);if(!t)return;let n=P({type:"Extension",value:t},"value[x]");if(n)return Array.isArray(n)?n[0].value:n.value}function $t(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 ln(r,e){return JSON.stringify(r,Mi,e?2:void 0)}function Mi(r,e){return!Ni(r)&&S(e)?void 0:e}function Ni(r){return!!/\d+$/.exec(r)}function S(r){if(r==null)return!0;let e=typeof r;return e==="string"||e==="object"?!G(r):!1}function G(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 Ge(r,e,t){return r===e||S(r)&&S(e)?!0:S(r)||S(e)?!1:Array.isArray(r)&&Array.isArray(e)?Fi(r,e):Array.isArray(r)||Array.isArray(e)?!1:O(r)&&O(e)?_i(r,e,t):(O(r)||O(e),!1)}function Fi(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!Ge(r[t],e[t]))return!1;return!0}function _i(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(!Ge(o,s,i))return!1}return!0}function Qe(r,e){return S(r)?!0:S(e)?!1:Array.isArray(r)&&Array.isArray(e)?Ui(r,e):Array.isArray(r)||Array.isArray(e)?!1:O(r)&&O(e)?Li(r,e):O(r)||O(e)?!1:r===e}function Ui(r,e){return e.every(t=>r.some(n=>Qe(n,t)))}function Li(r,e){return Object.entries(e).every(([t,n])=>t in r&&Qe(r[t],n))}function ee(r){return r===void 0?r:JSON.parse(JSON.stringify(r))}function bc(r){return!!/^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/i.exec(r)}function O(r){return r!==null&&typeof r=="object"}function pn(r){return r.every(e=>typeof e=="string")}var dn=[];for(let r=0;r<256;r++)dn.push(r.toString(16).padStart(2,"0"));function fn(r){let e=new Uint8Array(r),t=new Array(e.length);for(let n=0;n<e.length;n++)t[n]=dn[e[n]];return t.join("")}function mn(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 C(r){return r?r.charAt(0).toUpperCase()+r.substring(1):""}function qe(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function tr(r){return r.length>0&&r.startsWith(r[0].toUpperCase())}function de(r,e){let t=r+".";if(e.startsWith(t))return e.slice(t.length)}function er(r,e){return r.coding?.find(t=>t.system===e)?.code}function Rc(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 Cc(r,e,t,n){return r.qualifiedInterval?.find(i=>hn(i,e)&&ji(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function Pc(r,e,t){return r.qualifiedInterval?.find(n=>hn(n,e)&&t.includes(n.condition))}function hn(r,e){return Bi(r,e)&&qi(r,e)}function Bi(r,e){return!r.gender||r.gender===e.gender}function qi(r,e){return!r.age||yn(Ye(e.birthDate).years,r.age)}function ji(r,e,t){return!!r.range&&yn(e,r.range,t)}function yn(r,e,t){return(e.low?.value===void 0||Gi(r,e.low.value,t))&&(e.high?.value===void 0||$i(r,e.high.value,t))}function wc(r,e){return parseFloat(r.toFixed(e))}function Ac(r,e,t){return L(r,t)===L(e,t)}function Ic(r,e,t){return L(r,t)<L(e,t)}function kc(r,e,t){return L(r,t)>L(e,t)}function $i(r,e,t){return L(r,t)<=L(e,t)}function Gi(r,e,t){return L(r,t)>=L(e,t)}function L(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function Oc(r,e,t){return r.find(n=>typeof e=="string"?er(n.code||{},t)===e:er(n.code||{},t)===er(e,t))}function je(r){if(r)return Array.isArray(r)?r:[r]}var rr=r=>new Promise(e=>{setTimeout(e,r)});function Vc(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 Dc(r){let e,t=!1;return function(){return t||(e=r(),t=!0),e}}function fe(r,e){return r?(r.push(e),r):[e]}function gn(r,e){return new URL(r,e).toString().replace("http://","ws://").replace("https://","wss://")}function Fc(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 Ze(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=me(r.text);if(n)return n}return t.join(" ").trim()}function _c(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function Uc(r){return me(r.family)??""}function ir(r){return r instanceof Date&&!isNaN(r.getTime())}function Lc(r,e,t){if(!r)return"";let n=new Date(r);return ir(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function Qi(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return ir(n)?n.toLocaleTimeString(e,t):""}function nr(r,e,t){if(!r)return"";let n=new Date(r);return ir(n)?n.toLocaleString(e,t):""}function Bc(r,e,t){return!r||!r.start&&!r.end?"":nr(r.start,e,t)+" - "+nr(r.end,e,t)}var Hi={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},Wi={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},Ki={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function qc(r){if(!r)return"";let e=[];return zi(e,r.repeat),r.event&&e.push(r.event.map(t=>nr(t)).join(", ")),C(e.join(" ").trim())}function zi(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(Hi[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+Wi[i]):r.push("per "+n+" "+Ki[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(C).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>Qi(o)).join(", "))}function jc(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=eo(n.value,e),`> ${te(n,e)}`):`>= ${te(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=Xi(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 $c(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function Ji(r){if(!r)return"";let e=me(r.text);return e||(r.coding?r.coding.map(t=>Yi(t)).join(", "):"")}function Yi(r){return me(r?.display)??me(r?.code)??""}function Zi(r){if(!r)return"";if("component"in r)return r.component.map(t=>Zi(t)).join(" / ");if(r.valueQuantity)return te(r.valueQuantity);if(r.valueCodeableConcept)return Ji(r.valueCodeableConcept);let e=me(r.valueString);return e||""}function me(r){return typeof r=="string"?r:void 0}function Xi(r,e,t=1){return(xn(r,e)+t)*Math.pow(10,-e)}function eo(r,e,t=1){return(xn(r,e)-t)*Math.pow(10,-e)}function xn(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 Jc(r){for(let e of r.entry){let t=e.resource;t.resourceType==="SearchParameter"&&or(t)}}function or(r){for(let e of r.base??[]){let t=F.types[e];t||(t={searchParamsDetails:{}},F.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 Ut(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?to((r.base?.path??r.path)?.split(".")):e}function to(r){return r.length===1?r[0]:r.map(C).join("")}function Gt(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function Yc(){return Object.values(Gr()).filter(Gt).map(r=>r.name)}function Zc(r){return F.types[r]?.searchParams}function Xc(r,e){return F.types[r]?.searchParams?.[e]}function eu(r){let e=r.replaceAll("[x]","").split(".").pop();return ro(e)}function ro(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(io).join(" ").replace("_"," ").replace(/\s+/g," ")}var no=new Set(["ID","IP","PKCE","JWKS","URI","URL","OMB","UDI"]);function io(r){let e=r.toUpperCase();return r===e?r:no.has(e)?e:e.charAt(0)+r.slice(1)}function ze(r,e,t){let n=be(r,t);if(n)return oo(n.elements,e)}function oo(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 Y(r){return!!(r&&typeof r=="object"&&"reference"in r&&typeof r.reference=="string")}var F={types:{}};function Tn(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 vn(r.value);case l.CodeableConcept:return r.value.coding?.map(vn).join(",")??r.value.text;case l.HumanName:return r.value.text?r.value.text:Ze(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)?Z(r.value).reference:JSON.stringify(r)}}function vn(r){return r?`${r.system??""}|${r.code}`:""}function he(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 Ce=()=>[],w={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=>N(t.eval(r,[n]))).length>0):f(e.length>0&&e.every(n=>!S(n.value))),all:(r,e,t)=>f(e.every(n=>N(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:Ce,supersetOf:Ce,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===w.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>N(t.eval(r,[n]))),select:(r,e,t)=>e.map(n=>t.eval(r,[n])).flat(),repeat:Ce,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 We([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e);return[...e,...n]},htmlChecks:(r,e,t)=>[y(!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 N(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(w.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(w.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:he(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:f(w.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:he(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:f(w.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(w.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=q(e,1);return A(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(w.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=q(e,1);return t==null?[]:A(t)?[{type:l.string,value:`${t.value} '${t.unit}'`}]:[{type:l.string,value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:f(w.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:he("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:f(w.toTime(r,e).length===1),indexOf:(r,e,t)=>V((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>V((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)=>V((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>V((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>V((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>V(t=>t.toUpperCase(),r,e),lower:(r,e)=>V(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>V((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>V((n,i)=>!!new RegExp(i).exec(n),r,e,t),replaceMatches:(r,e,t,n)=>V((i,o,s)=>i.replaceAll(o,s),r,e,t,n),length:(r,e)=>V(t=>t.length,r,e),toChars:(r,e)=>V(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:Ce,descendants:Ce,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=w.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=w.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=Ye(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 W&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:l.boolean,value:Ke(i,n)})):[]},not:(r,e)=>w.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 y(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 V(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(y):[y(o)]}function B(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=q(t,1),o=A(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 Xe=class{constructor(e,t){this.original=e;this.child=t}eval(e,t){try{return t.length>0?t.map(n=>this.child.eval(e,[n])).flat():this.child.eval(e,[])}catch(n){throw new Error(`FhirPathError on "${this.original}": ${n}`)}}toString(){return this.child.toString()}},D=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){if(this.name==="$this")return t;let n=e.variables[this.name];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)}evalValue(e){let t=e.value;if(!(!t||typeof t!="object"))return _(t)&&t.resourceType===this.name?e:P(e,this.name)}toString(){return this.name}},et=class{eval(){return[]}toString(){return"{}"}},tt=class extends Fe{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 H{constructor(e,t){super("as",e,t)}eval(e,t){return w.ofType(e,this.left.eval(e,t),this.right)}},R=class extends H{},I=class extends R{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=A(s)?s.value:s,u=A(a)?a.value:a,p=this.impl(c,u);return typeof p=="boolean"?f(p):A(s)?[{type:l.Quantity,value:{...s,value:p}}]:[y(p)]}},rt=class extends H{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}},nt=class extends R{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))}},it=class extends R{constructor(e,t){super("in",e,t)}eval(e,t){let n=U(this.left.eval(e,t)),i=this.right.eval(e,t);return n?f(i.some(o=>o.value===n.value)):[]}},W=class extends H{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()}`}},ye=class extends H{constructor(e,t){super("|",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return We([...n,...i])}},ot=class extends R{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Yt(n,i)}},st=class extends R{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Jt(Yt(n,i))}},at=class extends R{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Zt(n,i)}},ct=class extends R{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Jt(Zt(n,i))}},ne=class extends R{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(Ke(n[0],i))}},ut=class extends R{constructor(e,t){super("and",e,t)}eval(e,t){let n=U(this.left.eval(e,t),"boolean"),i=U(this.right.eval(e,t),"boolean");return n?.value===!0&&i?.value===!0?f(!0):n?.value===!1||i?.value===!1?f(!1):[]}},lt=class extends R{constructor(e,t){super("or",e,t)}eval(e,t){let n=U(this.left.eval(e,t),"boolean"),i=U(this.right.eval(e,t),"boolean");return n?.value===!1&&i?.value===!1?f(!1):n?.value||i?.value?f(!0):[]}},pt=class extends R{constructor(e,t){super("xor",e,t)}eval(e,t){let n=U(this.left.eval(e,t),"boolean"),i=U(this.right.eval(e,t),"boolean");return!n||!i?[]:f(n.value!==i.value)}},dt=class extends R{constructor(e,t){super("implies",e,t)}eval(e,t){let n=U(this.left.eval(e,t),"boolean"),i=U(this.right.eval(e,t),"boolean");return i?.value===!0||n?.value===!1?f(!0):!n||!i?[]:f(!1)}},Q=class{constructor(e,t){this.name=e;this.args=t}eval(e,t){let n=w[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 so=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],K=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
|
-
`))}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()===" "&&
|
|
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 ao(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&so.includes(r.value)))}var Pe=["true","false"],we=["!=","!~","<=",">=","{}","->"];function Sn(r){return new K(r,Pe,we).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},co={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},uo={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new ie(e,t)},precedence:h.Indexer},lo={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 Q(e.name,t)},precedence:h.FunctionCall};function po(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 Ae(){return new _e().registerPrefix("String",{parse:(r,e)=>new D({type:l.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new D({type:l.dateTime,value:he(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new D({type:l.Quantity,value:po(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new D({type:e.value.includes(".")?l.decimal:l.integer,value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new D({type:l.boolean,value:!0})}).registerPrefix("false",{parse:()=>new D({type:l.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new j(e.value)}).registerPrefix("{}",{parse:()=>new et}).registerPrefix("(",co).registerInfix("[",uo).registerInfix("(",lo).prefix("+",h.UnaryAdd,(r,e)=>new tt("+",e,t=>t)).prefix("-",h.UnarySubtract,(r,e)=>new I("-",e,e,(t,n)=>-n)).infixLeft(".",h.Dot,(r,e,t)=>new W(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 ye(r,t)).infixLeft("=",h.Equals,(r,e,t)=>new ot(r,t)).infixLeft("!=",h.NotEquals,(r,e,t)=>new st(r,t)).infixLeft("~",h.Equivalent,(r,e,t)=>new at(r,t)).infixLeft("!~",h.NotEquivalent,(r,e,t)=>new ct(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 rt(r,t)).infixLeft("and",h.And,(r,e,t)=>new ut(r,t)).infixLeft("as",h.As,(r,e,t)=>new re(r,t)).infixLeft("contains",h.Contains,(r,e,t)=>new nt(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 it(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 lt(r,t)).infixLeft("xor",h.Xor,(r,e,t)=>new pt(r,t)).infixLeft("implies",h.Implies,(r,e,t)=>new dt(r,t))}var fo=Ae();function sr(r){return new Xe(r,fo.construct(Sn(r)).consumeAndParse())}function ge(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]=y(t[n]))}return $(r,t).map(n=>n.value)}function $(r,e,t){let n=t??{};return sr(r).eval({variables:n},e).map(o=>({type:o.type,value:o.value?.valueOf()}))}var En=(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))(En||{});function bn(r,e){let t=F.types[r]?.searchParamsDetails?.[e.code];return t||(t=ho(r,e)),t}function mo(r,e,t){let n=F.types[r];n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function ho(r,e){let t=e.code,n=xo(t),i=Cn(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let c=Ie(a);c.length===1&&c[0]instanceof R?o.propertyTypes.add("boolean"):Rn(o,Ie(a),r,1)}let s={columnName:n,type:vo(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return mo(r,t,s),s}function Rn(r,e,t,n){let i=e[n];if(i instanceof re){r.propertyTypes.add(i.right.toString());return}if(i instanceof Q){yo(r,i);return}let o=i.toString(),s=ze(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;go(p)&&(p=s.type[0].code),Rn(r,e,p,c)}}function yo(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 go(r){return r==="Element"||r==="BackboneElement"}function xo(r){return r.split("-").reduce((e,t,n)=>e+(n?C(t):t),"")}function vo(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 Cn(r,e){let t=[],n=sr(e);return ar(r,n.child,t),t}function Uu(r,e){let t=Cn(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function ar(r,e,t){e instanceof ye?(ar(r,e.left,t),ar(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function Ie(r){if(r instanceof re||r instanceof ie)return[Ie(r.left),r].flat();if(r instanceof R)return[r];if(r instanceof W)return[Ie(r.left),Ie(r.right)].flat();if(r instanceof Q){if(r.name==="where"&&!(r.args[0]instanceof ne))return[];if(r.name==="last")return[]}return[r]}var Qu=20,To=(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))(To||{}),An={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"},cr={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function xe(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 So(i,o)}function Hu(r){return xe(r)}function Wu(r){return xe(r)}function Ku(r){return xe(r)}function So(r,e){let t={resourceType:r};for(let[n,i]of e)Eo(t,n,i);return t}function Eo(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=fe(r.filters,{code:e,operator:"eq",value:t});return}switch(n){case"_sort":bo(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=Pn(t);i==="iterate"&&(s.modifier="iterate"),r.include=fe(r.include,s);break}case"_revinclude":{let s=Pn(t);i==="iterate"&&(s.modifier="iterate"),r.revInclude=fe(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=F.types[r.resourceType]?.searchParams?.[n];s?r.filters=fe(r.filters,Ro(s,i,t)):r.filters=fe(r.filters,wo(n,i,t))}}}}function bo(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 Ro(r,e,t){if(e==="missing")return{code:r.code,operator:"missing",value:t};switch(r.type){case"number":case"date":case"quantity":return Co(r,t);case"reference":case"string":case"token":case"uri":return Po(r,e,t);default:throw new Error("Unrecognized search parameter type: "+r.type)}}function Co(r,e){let{operator:t,value:n}=Ao(e);return{code:r.code,operator:t,value:n}}function Po(r,e,t){return{code:r.code,operator:Io(e),value:t}}function wo(r,e,t){let n="eq";if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in cr&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function Ao(r){let e=r.substring(0,2),t=cr[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function Io(r){return An[r]??"eq"}function Pn(r){let e=r.split(":");if(e.includes("*"))throw new d(b("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new d(b(`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(b(`Invalid include value '${r}'`))}var ko=/{{([^{}]+)}}/g;function zu(r,e){return r=r.replaceAll(ko,(t,n)=>{let i=$(n,[],e);return i.length!==1?"":Tn(i[0])}),xe(r)}function Ju(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(Oo(t))),r.sortRules&&r.sortRules.length>0&&e.push(Vo(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(wn("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(wn("_revinclude",t))),e.length===0?"":(e.sort((t,n)=>t.localeCompare(n)),"?"+e.join("&"))}function Oo(r){let e=r.operator in An?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in cr?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function Vo(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function wn(r,e){return r+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function In(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!Do(r,e,t))return!1}return!0}function Do(r,e,t){let n=F.types[e.resourceType]?.searchParams?.[t.code];if(t.operator==="missing"&&n){let i=ge(n.expression,r);return t.value==="true"?!i.length:i.length>0}switch(n?.type){case"reference":return Mo(r,t,n);case"string":case"uri":return kn(r,t,n);case"token":return No(r,t,n);case"date":return _o(r,t,n);default:return!1}}function Mo(r,e,t){let n=ge(t.expression,r),i=ft(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 No(r,e,t){return bn(r.resourceType,t).type==="BOOLEAN"?Fo(r,e,t):kn(r,e,t,!0)}function Fo(r,e,t){let n=ge(t.expression,r),i=e.value==="true",o=n.includes(i);return ft(e.operator)?!o:o}function kn(r,e,t,n){let i=ge(t.expression,r),o=e.value.split(","),s=ft(e.operator);for(let a of i)for(let c of o)if(ur(a,e.operator,c,n))return!s;return s}function ur(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return ur(r,e,o,!1)&&(!s||ur(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=ge(t.expression,r),i=e.value.split(","),o=ft(e.operator);for(let s of n)for(let a of i)if(Uo(s,e.operator,a))return!o;return o}function Uo(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 ft(r){return r==="ne"||r==="not"}var Lo={resourceType:"*"},Bo=["DomainConfiguration","JsonWebKey","Login"],qo=["PasswordChangeRequest","Project","ProjectMembership","User"],jo=(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))(jo||{}),$o=["read","vread","history","history-instance"];function il(r,e){if(r.resource){for(let t of r.resource)if(lr(t.resourceType,e))return!0}return!1}function Go(r,e){if(Bo.includes(e))return!1;if(r.resource){for(let t of r.resource)if(lr(t.resourceType,e)&&!t.readonly)return!0}return!1}function ol(r,e){let t=e.resourceType;return Go(r,t)?Qo(r,e,!1):!1}function Qo(r,e,t){if(r.resource){for(let n of r.resource)if(On(e,t?"read":"update",n))return!0}return!1}function sl(r,e,t){if(!t)return Lo;if(t.resource){for(let n of t.resource)if(On(r,e,n))return n}}function On(r,e,t){let n=r.resourceType;return!(!lr(t.resourceType,n)||t.readonly&&!$o.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!In(r,xe(t.criteria)))}function lr(r,e){return r===e||r==="*"&&!qo.includes(e)}function Vn(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 Dn(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 pr(){let r=new Uint32Array(28);return crypto.getRandomValues(r),fn(r.buffer)}async function Mn(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 Ho(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)=>Wo(i,o,e),2);return Ko(JSON.parse(n))}function Wo(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 Ko(r){let e=Jo(r),{sorted:t,cycles:n}=zo(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 zo(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 Nn(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(Y(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else Nn(n,e)}}function Jo(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&&Nn(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function ml(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 Ho(e)}var mt=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 M={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",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript",PING:"x-application/ping"};var ke=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}},se=class{constructor(){this.emitter=new ke}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}};var dr={"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"},Yo=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],fr=["DiagnosticReport-update"];function _n(r){return fr.includes(r)}function Un(r){if(fr.includes(r))throw new d(m(`'context.version' is required for '${r}'.`))}var Zo={"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 Xo(r){return Yo.includes(r)}function Ln(r){return!!r.endpoint}function mr(r){if(!yt(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 Ln(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function yt(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(!dr[o])return!1;return!(Ln(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function Fn(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(!Xo(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 es(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),!n.isArray)Fn(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)Fn(r,s,t,n)}}function ts(r,e){let t=new Map,n=Zo[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.`));es(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 hr(r,e,t,n){if(!(r&&typeof r=="string"))throw new d(m("Must provide a topic."));if(!dr[e])throw new d(m(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(dr).join(", ")}`));if(typeof t!="object")throw new d(m("context must be a context object or array of context objects."));if(fr.includes(e)&&!n)throw new d(m(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return ts(e,i),{timestamp:new Date().toISOString(),id:oe(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var ht=class extends se{constructor(e){if(super(),this.subRequest=e,!e.endpoint)throw new d(m("Subscription request should contain an endpoint."));if(!yt(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 rs(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=Vn(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 Bn(r){return r.split(".").length===3}function gt(r){let[e,t,n]=r.split(".");return rs(t)}function qn(r){try{return typeof gt(r).login_id=="string"}catch{return!1}}function jn(r){try{let t=gt(r).exp;return typeof t=="number"?t*1e3:void 0}catch{return}}var ns,k=class{constructor(e){this[ns]="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)}};ns=Symbol.toStringTag;var Oe=class{constructor(e){this.storage=e??(typeof localStorage<"u"?localStorage:new yr)}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?ln(t):void 0)}},yr=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]}},$n=class extends Oe{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 gr=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)}}},Ve=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)}},xr=class{constructor(e){this.criteria=e,this.emitter=new Ve(e),this.refCount=1}},xt=class{constructor(e,t){if(!(e instanceof vt))throw new d(m("First arg of constructor should be a `MedplumClient`"));let n;try{n=new URL(t).toString()}catch{throw new d(m("Not a valid URL"))}let i=new gr(n);this.medplum=e,this.ws=i,this.masterSubEmitter=new Ve,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(Je(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(Mr(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 xr(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 Ve(...Array.from(this.criteriaEntries.keys()))),this.masterSubEmitter}};var Tt=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 ap="3.0.9-1021a026",is=M.FHIR_JSON+", */*; q=0.1",os="https://api.medplum.com/",ss=1e3,as=6e4,cs=0,Gn="Binary/",Qn={resourceType:"Device",id:"system",deviceName:[{type:"model-name",name:"System"}]},us=(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))(us||{}),ls=(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))(ls||{}),ps=(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))(ps||{}),ds=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(ds||{}),vt=class extends ke{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??fs(),this.storage=t?.storage??new Oe,this.createPdfImpl=t?.createPdf,this.baseUrl=Wn(t?.baseUrl??os),this.fhirBaseUrl=Wn(St(this.baseUrl,t?.fhirUrlPath??"fhir/R4/")),this.authorizeUrl=St(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=St(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=St(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"?cs:as),this.cacheTime>0?this.requestCache=new mt(t?.resourceCacheSize??ss):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=>{n.then(()=>{this.attemptResumeActiveLogin().then(o).catch(console.error),this.initComplete=!0}).catch(console.error)});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,M.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(vr));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 vr(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 Qn;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(Qn));let[o,s]=i.split("/");return!o||!s?new k(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(Qr(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=`{
|
|
1
|
+
var Fe=class{constructor(e,t){this.operator=e;this.child=t}toString(){return`${this.operator}(${this.child.toString()})`}},H=class{constructor(e,t,n){this.operator=e;this.left=t;this.right=n}toString(){return`${this.left.toString()} ${this.operator} ${this.right.toString()}`}},_e=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 It(e,this.prefixParselets,this.infixParselets)}},It=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 Pr="http://unitsofmeasure.org",ea="http://loinc.org",ta="http://snomed.info/sct",ra="http://www.nlm.nih.gov/research/umls/rxnorm",na="http://www.ama-assn.org/go/cpt",ia="http://hl7.org/fhir/sid/icd-10",wr="http://hl7.org";var kt="ok",Ue="created",Vt="gone",Dt="not-modified",Mt="not-found",Ar="conflict",Or="unauthorized",Ir="precondition-failed",kr="forbidden",Vr="too-many-requests",Le="accepted",sa={resourceType:"OperationOutcome",id:kt,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},aa={resourceType:"OperationOutcome",id:Ue,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},ca={resourceType:"OperationOutcome",id:Dt,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},Dr={resourceType:"OperationOutcome",id:Mt,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},ua={resourceType:"OperationOutcome",id:Or,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},la={resourceType:"OperationOutcome",id:kr,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},pa={resourceType:"OperationOutcome",id:Vt,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},da={resourceType:"OperationOutcome",id:Ir,issue:[{severity:"error",code:"lock-error",details:{text:"Precondition Failed"}}]},fa={resourceType:"OperationOutcome",id:Vr,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function ma(r){return{resourceType:"OperationOutcome",id:Le,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:r}]}}function b(r,e){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:r},expression:e?[e]:void 0}]}}function ha(r){return{resourceType:"OperationOutcome",id:Ar,issue:[{severity:"error",code:"conflict",details:{text:r}}]}}function m(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"structure",details:{text:r}}]}}function Mr(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function ce(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function Nt(r){return r.id===kt||r.id===Ue||r.id===Dt||r.id===Le}function ya(r){return r.id===Ue}function ga(r){return r.id===Le}function xa(r){return r.id===Mt}function va(r){return r.id===Vt}function Ta(r){switch(r.id){case kt:return 200;case Ue:return 201;case Le:return 202;case Dt:return 304;case Or:return 401;case kr:return 403;case Mt:return 404;case Ar:return 409;case Vt:return 410;case Ir:return 412;case Vr:return 429;default:return r.issue?.[0]?.code==="exception"?500:400}}function Sa(r,e){if(!Nt(r)||e===void 0)throw new d(r)}var d=class extends Error{constructor(e,t){super(Nr(e)),this.outcome=e,this.cause=t}};function Be(r){return r instanceof d?r.outcome:ce(r)?r:b(di(r))}function di(r){return r?typeof r=="string"?r:r instanceof Error?r.message:ce(r)?Nr(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function Nr(r){let e=r.issue?.map(fi)??[];return e.length>0?e.join("; "):"Unknown error"}function fi(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 ue(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 x(r,e){return ue("error","structure",e,r)}function Fr(r,e){return ue("error","invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function _r(r,e,t,n){return ue("error","processing",e,r,{...n,error:t})}var mi={"http://hl7.org/fhirpath/System.String":"string"};function ba(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:mi[t.code]??t.code})),e}function hi(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 Ur(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,hi(i,o)])),constraints:[],innerTypes:[]};return e}var Lr={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 Bt(r){return new Ut(r).parse()}var Ee=Ur(Lr),qt=Object.create(null),Br=Object.create(null);function _t(r){let e;return r?(e=Br[r],e||(e=Br[r]=Object.create(null))):e=Ee,e}function jt(r,e){let t=Array.isArray(r)?r:r.entry?.map(n=>n.resource)??[];for(let n of t)$t(n,e)}function $t(r,e){if(!r?.name)throw new Error("Failed loading StructureDefinition from bundle");if(r.resourceType!=="StructureDefinition")return;let t=Bt(r),n=_t(e);n[r.name]=t,e&&r.url===e&&(qt[e]=t);for(let i of t.innerTypes)i.parentType=t,n[i.name]=i}function Gr(){return Ee}function Qr(r){return!!Ee[r]}function be(r,e){let t=_t(e)[r];return!t&&e&&(t=_t()[r]),t}function pe(r,e){let t=be(r,e);if(!t)throw new d(b("Unknown data type: "+r));return t}function Hr(r){let e=Ee[r];return e&&Qt(e)}function Wr(r){return!!qt[r]}function Kr(r){return qt[r]}var Ut=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:Ti(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=Ft(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[Ft(e,n.path)]=t;break}n=n.parent}if(!n){let i=Ft(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&&!le(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;this.backboneContext={type:{name:Lt(e),title:e.label,description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path??"",parent:le(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,t){vi(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&&!le(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!le(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),delete this.backboneContext;this.slicingContext&&!le(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!!(le(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=Lt(e)),n||(n=Gt(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=jr(e.max),n=e.base?.max?jr(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:$r(P(i,"fixed[x]")),pattern:$r(P(i,"pattern[x]")),binding:e.binding}}};function Ma(r,e){if(!r)return;let t=[];for(let n of e){t.push("_"+n);let i=Ee[r.resourceType].elements[n+"[x]"];i&&t.push(...i.type.map(o=>n+C(o.code)))}for(let n of Object.getOwnPropertyNames(r))!e.includes(n)&&!t.includes(n)&&!gi.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(qr):[qr]},r}var qr={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},gi=["resourceType","id","meta"];function jr(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function Ft(r,e=""){return xi(r.path,e)}function xi(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function le(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function $r(r){return Array.isArray(r)&&r.length>0?r[0]:T(r)?void 0:r}function vi(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 Ti(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 Wt(r,e,t,n){new Ht(r,e,t,n).crawl()}var Ht=class{constructor(e,t,n,i){this.rootResource=e,this.visitor=t,n?this.schema=n:this.schema=pe(e.resourceType),i?this.initialPath=i:this.initialPath=e.resourceType}crawl(){this.crawlObject(y(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=Re(e,t);this.visitor.visitProperty&&this.visitor.visitProperty(e,t,i,o,n);for(let s of o)if(s)for(let a of je(s))this.crawlPropertyValue(a,i)}crawlPropertyValue(e,t){if(!qe(e.type.charAt(0))){let n=pe(e.type);this.crawlObject(e,n,t)}}};function Re(r,e,t){if(e==="$this")return[r];let[n,...i]=e.split("."),o=[P(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(P(u,s,t));else c!==void 0&&a.push(P(c,s,t));o=a}return o}var zr={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"},$e={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:/.*/},Si={"ele-1":!0,"dom-3":!0,"org-1":!0,"sdf-19":!0};function oc(r,e){return new Kt(r.resourceType,r,e).validate()}var Kt=class{constructor(e,t,n){this.issues=[],this.rootResource=t,this.currentResource=[t],n?.profile?this.schema=Bt(n.profile):this.schema=pe(e)}validate(){let e=this.rootResource.resourceType;if(!e)throw new d(m("Missing resource type"));this.constraintsCheck(y(this.rootResource),this.schema,e),zt(this.rootResource,e,this.issues),Wt(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(x(n,"Expected array of values for property"));return}c=a}else{if(Array.isArray(a)){this.issues.push(x(n,"Expected single value for property"));return}c=[a]}(c.length<s.min||c.length>s.max)&&this.issues.push(x(s.path,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${c.length}`)),Jr(a,s)||this.issues.push(x(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 g=Ri(p,s.slicing);g&&u&&(u[g]+=1)}this.validateSlices(s.slicing?.slices,u,n)}}checkPresence(e,t,n){return e===void 0?(t.min>0&&this.issues.push(x(n,"Missing required property")),!1):T(e)?(this.issues.push(x(n,"Invalid empty value")),!1):!0}checkPropertyValue(e,t){qe(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(x(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=bi(e,s,t);if(a){o[a]&&this.issues.push(ue("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(x(`${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 Si)&&!this.isExpressionTrue(o,e,n)){this.issues.push(Fr(n,o));return}}}referenceTypeCheck(e,t,n){if(e.type!=="Reference")return;let i=e.value;if(!Y(i))return;let o=i.reference.split("/")[0];if(!o)return;let s=t.type.find(E=>E.code==="Reference")?.targetProfile;if(!s)return;let a=wr+"/fhir/StructureDefinition/",c=a+"Resource",u=a+o,p="https://medplum.com/fhir/StructureDefinition/",g=p+o;for(let E of s)if(E===c||E===u||E===g||!E.startsWith(a)&&!E.startsWith(p))return;this.issues.push(ue("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":y(this.currentResource[this.currentResource.length-1]),"%rootResource":y(this.rootResource),"%ucum":y(Pr)});return i.length===1&&i[0].value===!0}catch(i){return this.issues.push(_r(n,"Error evaluating invariant expression",i,{fhirpath:e.expression})),!1}}validatePrimitiveType(e,t){let[n,i]=Ci(e);if(n){let{type:o,value:s}=n;if(!(o in zr)){this.issues.push(x(t,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=zr[o];if(typeof s!==a){s!==null&&this.issues.push(x(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&&Wt(i.value,this,pe("Element"),t)}validateString(e,t,n){if(!e.trim()){this.issues.push(x(n,"String must contain non-whitespace content"));return}let i=$e[t];i&&!i.exec(e)&&this.issues.push(x(n,"Invalid "+t+" format"))}validateNumber(e,t,n){Number.isNaN(e)||!Number.isFinite(e)?this.issues.push(x(n,"Invalid numeric value")):Ei(t)&&!Number.isInteger(e)?this.issues.push(x(n,"Expected number to be an integer")):t===l.positiveInt&&e<=0?this.issues.push(x(n,"Expected number to be positive")):t===l.unsignedInt&&e<0&&this.issues.push(x(n,"Expected number to be non-negative"))}};function Ei(r){return r===l.integer||r===l.positiveInt||r===l.unsignedInt}function bi(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 P(r,i)?s:void 0}}function zt(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(x(o,"Invalid null value"));else if(Array.isArray(i))for(let a=0;a<i.length;a++)i[a]===void 0?t.push(x(`${o}[${a}]`,"Invalid undefined value")):i[a]===null&&!r[s]?.[a]?t.push(x(`${o}[${a}]`,"Invalid null value")):i[a]&&zt(i[a],`${o}[${a}]`,t);else typeof i=="object"&&zt(i,o,t)}}function Jr(r,e){return!(e.pattern&&!Qe(r,e.pattern)||e.fixed&&!Ge(r,e.fixed))}function Jt(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(Jr(r,i))return!0;break;case"type":return!r||!o?.length?!1:o.some(s=>s.code===r.type)}return!1}function Ri(r,e){if(e){for(let t of e.slices)if(e.discriminator.every(n=>je(Re(r,n.path))?.some(i=>Jt(i,n,t))))return t.name}}function Ci(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 y(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 U(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 P(r,e,t){if(!r.value)return;let n=ze(r.type,e,t?.profileUrl);return n?Pi(r,e,n):wi(r,e)}function Pi(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+C(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]=tn(o[c],a[c])}else o=tn(o,a);if(!T(o))return(s==="Element"||s==="BackboneElement")&&(s=t.type[0].code),Array.isArray(o)?o.map(c=>Yr(c,s)):Yr(o,s)}function Yr(r,e){return e==="Resource"&&_(r)&&(e=r.resourceType),{type:e,value:r}}function wi(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+C(i);if(o in t){n=t[o];break}}if(!T(n))return Array.isArray(n)?n.map(y):y(n)}function We(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(F(rn(t,i))){n=!0;break}n||e.push(t)}return e}function Yt(r){return f(!F(r))}function Zt(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?f(!1):f(r.every((t,n)=>F(rn(t,e[n]))))}function rn(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(sn(t,n)):f(typeof t=="object"&&typeof n=="object"?er(r,e):t===n)}function Xt(r,e){return r.length===0&&e.length===0?f(!0):r.length!==e.length?f(!1):(r.sort(Zr),e.sort(Zr),f(r.every((t,n)=>F(Ai(t,e[n])))))}function Ai(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(sn(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"?er({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function Zr(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 Ke(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 nn(t);case"DateTime":return He(t);case"Time":return typeof t=="string"&&!!/^T\d/.exec(t);case"Period":return on(t);case"Quantity":return O(t);default:return typeof t=="object"&&t?.resourceType===e}}function nn(r){return typeof r=="string"&&!!$e.date.exec(r)}function He(r){return typeof r=="string"&&!!$e.dateTime.exec(r)}function on(r){return!!(r&&typeof r=="object"&&("start"in r&&He(r.start)||"end"in r&&He(r.end)))}function pc(r){if(r){if(nn(r))return{start:Xr(r,"0000-00-00T00:00:00.000Z"),end:Xr(r,"xxxx-12-31T23:59:59.999Z")};if(He(r))return{start:r,end:r};if(on(r))return r}}function Xr(r,e){return r+e.substring(r.length)}function O(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function sn(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 er(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(en(o)&&en(s)){if(!er(o,s))return!1}else if(o!==s)return!1}return!0}function en(r){return r!==null&&typeof r=="object"}function tn(r,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return Oi(r??{},e)}return r}function Oi(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}function Z(r){let e=X(r),t=ki(r);return t===e?{reference:e}:{reference:e,display:t}}function X(r){return Y(r)?r.reference:`${r.resourceType}/${r.id}`}function Ye(r){if(r)return Y(r)?r.reference.split("/")[1]:r.id}function gc(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 Ii(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function ki(r){if(Ii(r)){let e=Vi(r);if(e)return e}if(r.resourceType==="Device"){let e=Di(r);if(e)return e}if(r.resourceType==="MedicationRequest"){let e=r.medicationCodeableConcept;if(e)return Je(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]),ji(e))return Je(e);if($i(e))return e.text}return X(r)}function Vi(r){let e=r.name;if(e&&e.length>0)return Xe(e[0])}function Di(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function xc(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=an(t);if(n)return n}else return an(e)}function an(r){if(r.url&&r.contentType&&r.contentType.startsWith("image/"))return r.url}function vc(r){return r?new Date(r):void 0}function Ze(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 g=a*12+c-(i*12+o);u<s&&g--;let E=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:p,months:g,days:E}}function Tc(r,e){let{years:t,months:n,days:i}=Ze(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 Sc(r){let e={};return cn(r.item,e),e}function cn(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),cn(t.item,e)}function Ec(r){let e={};return un(r.item,e),e}function un(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer),un(t.item,e)}function bc(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 Rc(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 Cc(r,...e){let t=Gt(r,...e);if(!t)return;let n=P({type:"Extension",value:t},"value[x]");if(n)return Array.isArray(n)?n[0].value:n.value}function Gt(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 ln(r,e){return JSON.stringify(r,Mi,e?2:void 0)}function Mi(r,e){return!Ni(r)&&T(e)?void 0:e}function Ni(r){return!!/\d+$/.exec(r)}function T(r){if(r==null)return!0;let e=typeof r;return e==="string"||e==="object"?!G(r):!1}function G(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 Ge(r,e,t){return r===e||T(r)&&T(e)?!0:T(r)||T(e)?!1:Array.isArray(r)&&Array.isArray(e)?Fi(r,e):Array.isArray(r)||Array.isArray(e)?!1:w(r)&&w(e)?_i(r,e,t):(w(r)||w(e),!1)}function Fi(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!Ge(r[t],e[t]))return!1;return!0}function _i(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(!Ge(o,s,i))return!1}return!0}function Qe(r,e){return T(r)?!0:T(e)?!1:Array.isArray(r)&&Array.isArray(e)?Ui(r,e):Array.isArray(r)||Array.isArray(e)?!1:w(r)&&w(e)?Li(r,e):w(r)||w(e)?!1:r===e}function Ui(r,e){return e.every(t=>r.some(n=>Qe(n,t)))}function Li(r,e){return Object.entries(e).every(([t,n])=>t in r&&Qe(r[t],n))}function ee(r){return r===void 0?r:JSON.parse(JSON.stringify(r))}function Pc(r){return!!/^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/i.exec(r)}function w(r){return r!==null&&typeof r=="object"}function pn(r){return r.every(Bi)}function Bi(r){return typeof r=="string"}function qi(r){return w(r)&&"code"in r&&typeof r.code=="string"}function ji(r){return w(r)&&"coding"in r&&Array.isArray(r.coding)&&r.coding.every(qi)}function $i(r){return w(r)&&"text"in r&&typeof r.text=="string"}var dn=[];for(let r=0;r<256;r++)dn.push(r.toString(16).padStart(2,"0"));function fn(r){let e=new Uint8Array(r),t=new Array(e.length);for(let n=0;n<e.length;n++)t[n]=dn[e[n]];return t.join("")}function mn(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 C(r){return r?r.charAt(0).toUpperCase()+r.substring(1):""}function qe(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function rr(r){return r.length>0&&r.startsWith(r[0].toUpperCase())}function de(r,e){let t=r+".";if(e.startsWith(t))return e.slice(t.length)}function tr(r,e){return r.coding?.find(t=>t.system===e)?.code}function wc(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 Ac(r,e,t,n){return r.qualifiedInterval?.find(i=>hn(i,e)&&Hi(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function Oc(r,e,t){return r.qualifiedInterval?.find(n=>hn(n,e)&&t.includes(n.condition))}function hn(r,e){return Gi(r,e)&&Qi(r,e)}function Gi(r,e){return!r.gender||r.gender===e.gender}function Qi(r,e){return!r.age||yn(Ze(e.birthDate).years,r.age)}function Hi(r,e,t){return!!r.range&&yn(e,r.range,t)}function yn(r,e,t){return(e.low?.value===void 0||Ki(r,e.low.value,t))&&(e.high?.value===void 0||Wi(r,e.high.value,t))}function Ic(r,e){return parseFloat(r.toFixed(e))}function kc(r,e,t){return L(r,t)===L(e,t)}function Vc(r,e,t){return L(r,t)<L(e,t)}function Dc(r,e,t){return L(r,t)>L(e,t)}function Wi(r,e,t){return L(r,t)<=L(e,t)}function Ki(r,e,t){return L(r,t)>=L(e,t)}function L(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function Mc(r,e,t){return r.find(n=>typeof e=="string"?tr(n.code||{},t)===e:tr(n.code||{},t)===tr(e,t))}function je(r){if(r)return Array.isArray(r)?r:[r]}var nr=r=>new Promise(e=>{setTimeout(e,r)});function Nc(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 Fc(r){let e,t=!1;return function(){return t||(e=r(),t=!0),e}}function fe(r,e){return r?(r.push(e),r):[e]}function gn(r,e){return new URL(r,e).toString().replace("http://","ws://").replace("https://","wss://")}function Lc(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 Xe(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=me(r.text);if(n)return n}return t.join(" ").trim()}function Bc(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function qc(r){return me(r.family)??""}function or(r){return r instanceof Date&&!isNaN(r.getTime())}function jc(r,e,t){if(!r)return"";let n=new Date(r);return or(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 or(n)?n.toLocaleTimeString(e,t):""}function ir(r,e,t){if(!r)return"";let n=new Date(r);return or(n)?n.toLocaleString(e,t):""}function $c(r,e,t){return!r||!r.start&&!r.end?"":ir(r.start,e,t)+" - "+ir(r.end,e,t)}var Ji={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},Yi={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},Zi={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function Gc(r){if(!r)return"";let e=[];return Xi(e,r.repeat),r.event&&e.push(r.event.map(t=>ir(t)).join(", ")),C(e.join(" ").trim())}function Xi(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(Ji[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+Yi[i]):r.push("per "+n+" "+Zi[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(C).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>zi(o)).join(", "))}function Qc(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=no(n.value,e),`> ${te(n,e)}`):`>= ${te(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=ro(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 Hc(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function Je(r){if(!r)return"";let e=me(r.text);return e||(r.coding?r.coding.map(t=>eo(t)).join(", "):"")}function eo(r){return me(r?.display)??me(r?.code)??""}function to(r){if(!r)return"";if("component"in r)return r.component.map(t=>to(t)).join(" / ");if(r.valueQuantity)return te(r.valueQuantity);if(r.valueCodeableConcept)return Je(r.valueCodeableConcept);let e=me(r.valueString);return e||""}function me(r){return typeof r=="string"?r:void 0}function ro(r,e,t=1){return(xn(r,e)+t)*Math.pow(10,-e)}function no(r,e,t=1){return(xn(r,e)-t)*Math.pow(10,-e)}function xn(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 Xc(r){for(let e of r.entry){let t=e.resource;t.resourceType==="SearchParameter"&&sr(t)}}function sr(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 Lt(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?io((r.base?.path??r.path)?.split(".")):e}function io(r){return r.length===1?r[0]:r.map(C).join("")}function Qt(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function eu(){return Object.values(Gr()).filter(Qt).map(r=>r.name)}function tu(r){return V.types[r]?.searchParams}function ru(r,e){return V.types[r]?.searchParams?.[e]}function nu(r){let e=r.replaceAll("[x]","").split(".").pop();return oo(e)}function oo(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(ao).join(" ").replace("_"," ").replace(/\s+/g," ")}var so=new Set(["ID","IP","PKCE","JWKS","URI","URL","OMB","UDI"]);function ao(r){let e=r.toUpperCase();return r===e?r:so.has(e)?e:e.charAt(0)+r.slice(1)}function ze(r,e,t){let n=be(r,t);if(n)return co(n.elements,e)}function co(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 Y(r){return!!(r&&typeof r=="object"&&"reference"in r&&typeof r.reference=="string")}var V={types:{}};function Tn(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 vn(r.value);case l.CodeableConcept:return r.value.coding?.map(vn).join(",")??r.value.text;case l.HumanName:return r.value.text?r.value.text:Xe(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)?Z(r.value).reference:JSON.stringify(r)}}function vn(r){return r?`${r.system??""}|${r.code}`:""}function he(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 Ce=()=>[],A={empty:(r,e)=>f(e.length===0||e.every(t=>T(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=>!T(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:Ce,supersetOf:Ce,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(r,[n]))),select:(r,e,t)=>e.map(n=>t.eval(r,[n])).flat(),repeat:Ce,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 We([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e);return[...e,...n]},htmlChecks:(r,e,t)=>[y(!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:he(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:he(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:he("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:Ce,descendants:Ce,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=Ze(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 W&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:l.boolean,value:Ke(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 y(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(y):[y(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 et=class{constructor(e,t){this.original=e;this.child=t}eval(e,t){try{return t.length>0?t.map(n=>this.child.eval(e,[n])).flat():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){if(this.name==="$this")return t;let n=e.variables[this.name];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)}evalValue(e){let t=e.value;if(!(!t||typeof t!="object"))return _(t)&&t.resourceType===this.name?e:P(e,this.name)}toString(){return this.name}},tt=class{eval(){return[]}toString(){return"{}"}},rt=class extends Fe{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 H{constructor(e,t){super("as",e,t)}eval(e,t){return A.ofType(e,this.left.eval(e,t),this.right)}},R=class extends H{},I=class extends R{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}}]:[y(p)]}},nt=class extends H{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}},it=class extends R{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))}},ot=class extends R{constructor(e,t){super("in",e,t)}eval(e,t){let n=U(this.left.eval(e,t)),i=this.right.eval(e,t);return n?f(i.some(o=>o.value===n.value)):[]}},W=class extends H{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()}`}},ye=class extends H{constructor(e,t){super("|",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return We([...n,...i])}},st=class extends R{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Zt(n,i)}},at=class extends R{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Yt(Zt(n,i))}},ct=class extends R{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Xt(n,i)}},ut=class extends R{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Yt(Xt(n,i))}},ne=class extends R{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(Ke(n[0],i))}},lt=class extends R{constructor(e,t){super("and",e,t)}eval(e,t){let n=U(this.left.eval(e,t),"boolean"),i=U(this.right.eval(e,t),"boolean");return n?.value===!0&&i?.value===!0?f(!0):n?.value===!1||i?.value===!1?f(!1):[]}},pt=class extends R{constructor(e,t){super("or",e,t)}eval(e,t){let n=U(this.left.eval(e,t),"boolean"),i=U(this.right.eval(e,t),"boolean");return n?.value===!1&&i?.value===!1?f(!1):n?.value||i?.value?f(!0):[]}},dt=class extends R{constructor(e,t){super("xor",e,t)}eval(e,t){let n=U(this.left.eval(e,t),"boolean"),i=U(this.right.eval(e,t),"boolean");return!n||!i?[]:f(n.value!==i.value)}},ft=class extends R{constructor(e,t){super("implies",e,t)}eval(e,t){let n=U(this.left.eval(e,t),"boolean"),i=U(this.right.eval(e,t),"boolean");return i?.value===!0||n?.value===!1?f(!0):!n||!i?[]:f(!1)}},Q=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 uo=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],K=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
|
+
`))}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()===" "&&lo(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 lo(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&uo.includes(r.value)))}var Pe=["true","false"],we=["!=","!~","<=",">=","{}","->"];function Sn(r){return new K(r,Pe,we).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},po={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},fo={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new ie(e,t)},precedence:h.Indexer},mo={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 Q(e.name,t)},precedence:h.FunctionCall};function ho(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 Ae(){return new _e().registerPrefix("String",{parse:(r,e)=>new M({type:l.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new M({type:l.dateTime,value:he(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new M({type:l.Quantity,value:ho(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 tt}).registerPrefix("(",po).registerInfix("[",fo).registerInfix("(",mo).prefix("+",h.UnaryAdd,(r,e)=>new rt("+",e,t=>t)).prefix("-",h.UnarySubtract,(r,e)=>new I("-",e,e,(t,n)=>-n)).infixLeft(".",h.Dot,(r,e,t)=>new W(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 ye(r,t)).infixLeft("=",h.Equals,(r,e,t)=>new st(r,t)).infixLeft("!=",h.NotEquals,(r,e,t)=>new at(r,t)).infixLeft("~",h.Equivalent,(r,e,t)=>new ct(r,t)).infixLeft("!~",h.NotEquivalent,(r,e,t)=>new ut(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 nt(r,t)).infixLeft("and",h.And,(r,e,t)=>new lt(r,t)).infixLeft("as",h.As,(r,e,t)=>new re(r,t)).infixLeft("contains",h.Contains,(r,e,t)=>new it(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 ot(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 pt(r,t)).infixLeft("xor",h.Xor,(r,e,t)=>new dt(r,t)).infixLeft("implies",h.Implies,(r,e,t)=>new ft(r,t))}var yo=Ae();function ar(r){return new et(r,yo.construct(Sn(r)).consumeAndParse())}function ge(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]=y(t[n]))}return $(r,t).map(n=>n.value)}function $(r,e,t){let n=t??{};return ar(r).eval({variables:n},e).map(o=>({type:o.type,value:o.value?.valueOf()}))}var En=(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))(En||{});function bn(r,e){let t=V.types[r]?.searchParamsDetails?.[e.code];return t||(t=xo(r,e)),t}function go(r,e,t){let n=V.types[r];n||(n={},V.types[r]=n),n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function xo(r,e){let t=e.code,n=So(t),i=Cn(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let c=Oe(a);c.length===1&&c[0]instanceof R?o.propertyTypes.add("boolean"):Rn(o,Oe(a),r,1)}let s={columnName:n,type:Eo(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return go(r,t,s),s}function Rn(r,e,t,n){let i=e[n];if(i instanceof re){r.propertyTypes.add(i.right.toString());return}if(i instanceof Q){vo(r,i);return}let o=i.toString(),s=ze(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;To(p)&&(p=s.type[0].code),Rn(r,e,p,c)}}function vo(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 To(r){return r==="Element"||r==="BackboneElement"}function So(r){return r.split("-").reduce((e,t,n)=>e+(n?C(t):t),"")}function Eo(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 Cn(r,e){let t=[],n=ar(e);return cr(r,n.child,t),t}function qu(r,e){let t=Cn(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function cr(r,e,t){e instanceof ye?(cr(r,e.left,t),cr(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function Oe(r){if(r instanceof re||r instanceof ie)return[Oe(r.left),r].flat();if(r instanceof R)return[r];if(r instanceof W)return[Oe(r.left),Oe(r.right)].flat();if(r instanceof Q){if(r.name==="where"&&!(r.args[0]instanceof ne))return[];if(r.name==="last")return[]}return[r]}var Ku=20,bo=(v=>(v.EQUALS="eq",v.NOT_EQUALS="ne",v.GREATER_THAN="gt",v.LESS_THAN="lt",v.GREATER_THAN_OR_EQUALS="ge",v.LESS_THAN_OR_EQUALS="le",v.STARTS_AFTER="sa",v.ENDS_BEFORE="eb",v.APPROXIMATELY="ap",v.CONTAINS="contains",v.EXACT="exact",v.TEXT="text",v.NOT="not",v.ABOVE="above",v.BELOW="below",v.IN="in",v.NOT_IN="not-in",v.OF_TYPE="of-type",v.MISSING="missing",v.IDENTIFIER="identifier",v.ITERATE="iterate",v))(bo||{}),An={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"},ur={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function xe(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 Ro(i,o)}function zu(r){return xe(r)}function Ju(r){return xe(r)}function Yu(r){return xe(r)}function Ro(r,e){let t={resourceType:r};for(let[n,i]of e)Co(t,n,i);return t}function Co(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=fe(r.filters,{code:e,operator:"eq",value:t});return}switch(n){case"_sort":Po(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=Pn(t);i==="iterate"&&(s.modifier="iterate"),r.include=fe(r.include,s);break}case"_revinclude":{let s=Pn(t);i==="iterate"&&(s.modifier="iterate"),r.revInclude=fe(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=fe(r.filters,wo(s,i,t)):r.filters=fe(r.filters,Io(n,i,t))}}}}function Po(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 wo(r,e,t){if(e==="missing")return{code:r.code,operator:"missing",value:t};switch(r.type){case"number":case"date":case"quantity":return Ao(r,t);case"reference":case"string":case"token":case"uri":return Oo(r,e,t);default:throw new Error("Unrecognized search parameter type: "+r.type)}}function Ao(r,e){let{operator:t,value:n}=ko(e);return{code:r.code,operator:t,value:n}}function Oo(r,e,t){return{code:r.code,operator:Vo(e),value:t}}function Io(r,e,t){let n="eq";if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in ur&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function ko(r){let e=r.substring(0,2),t=ur[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function Vo(r){return An[r]??"eq"}function Pn(r){let e=r.split(":");if(e.includes("*"))throw new d(b("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new d(b(`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(b(`Invalid include value '${r}'`))}var Do=/{{([^{}]+)}}/g;function Zu(r,e){return r=r.replaceAll(Do,(t,n)=>{let i=$(n,[],e);return i.length!==1?"":Tn(i[0])}),xe(r)}function Xu(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(Mo(t))),r.sortRules&&r.sortRules.length>0&&e.push(No(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(wn("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(wn("_revinclude",t))),e.length===0?"":(e.sort((t,n)=>t.localeCompare(n)),"?"+e.join("&"))}function Mo(r){let e=r.operator in An?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in ur?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function No(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function wn(r,e){return r+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function On(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!Fo(r,e,t))return!1}return!0}function Fo(r,e,t){let n=V.types[e.resourceType]?.searchParams?.[t.code];if(t.operator==="missing"&&n){let i=ge(n.expression,r);return t.value==="true"?!i.length:i.length>0}switch(n?.type){case"reference":return _o(r,t,n);case"string":case"uri":return In(r,t,n);case"token":return Uo(r,t,n);case"date":return Bo(r,t,n);default:return!1}}function _o(r,e,t){let n=ge(t.expression,r),i=mt(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 Uo(r,e,t){return bn(r.resourceType,t).type==="BOOLEAN"?Lo(r,e,t):In(r,e,t,!0)}function Lo(r,e,t){let n=ge(t.expression,r),i=e.value==="true",o=n.includes(i);return mt(e.operator)?!o:o}function In(r,e,t,n){let i=ge(t.expression,r),o=e.value.split(","),s=mt(e.operator);for(let a of i)for(let c of o)if(lr(a,e.operator,c,n))return!s;return s}function lr(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return lr(r,e,o,!1)&&(!s||lr(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 Bo(r,e,t){let n=ge(t.expression,r),i=e.value.split(","),o=mt(e.operator);for(let s of n)for(let a of i)if(qo(s,e.operator,a))return!o;return o}function qo(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 mt(r){return r==="ne"||r==="not"}var jo={resourceType:"*"},$o=["DomainConfiguration","JsonWebKey","Login"],Go=["PasswordChangeRequest","Project","ProjectMembership","User"],Qo=(S=>(S.READ="read",S.VREAD="vread",S.UPDATE="update",S.PATCH="patch",S.DELETE="delete",S.HISTORY="history",S.HISTORY_INSTANCE="history-instance",S.HISTORY_TYPE="history-type",S.HISTORY_SYSTEM="history-system",S.CREATE="create",S.SEARCH="search",S.SEARCH_TYPE="search-type",S.SEARCH_SYSTEM="search-system",S.SEARCH_COMPARTMENT="search-compartment",S.CAPABILITIES="capabilities",S.TRANSACTION="transaction",S.BATCH="batch",S.OPERATION="operation",S))(Qo||{}),Ho=["read","vread","history","history-instance"];function al(r,e){if(r.resource){for(let t of r.resource)if(pr(t.resourceType,e))return!0}return!1}function Wo(r,e){if($o.includes(e))return!1;if(r.resource){for(let t of r.resource)if(pr(t.resourceType,e)&&!t.readonly)return!0}return!1}function cl(r,e){let t=e.resourceType;return Wo(r,t)?Ko(r,e,!1):!1}function Ko(r,e,t){if(r.resource){for(let n of r.resource)if(kn(e,t?"read":"update",n))return!0}return!1}function ul(r,e,t){if(!t)return jo;if(t.resource){for(let n of t.resource)if(kn(r,e,n))return n}}function kn(r,e,t){let n=r.resourceType;return!(!pr(t.resourceType,n)||t.readonly&&!Ho.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!On(r,xe(t.criteria)))}function pr(r,e){return r===e||r==="*"&&!Go.includes(e)}function Vn(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 Dn(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 dr(){let r=new Uint32Array(28);return crypto.getRandomValues(r),fn(r.buffer)}async function Mn(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)=>Jo(i,o,e),2);return Yo(JSON.parse(n))}function Jo(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 Yo(r){let e=Xo(r),{sorted:t,cycles:n}=Zo(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 Zo(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 Nn(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(Y(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else Nn(n,e)}}function Xo(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&&Nn(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function gl(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 ht=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 Ie=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}},se=class{constructor(){this.emitter=new Ie}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}};var fr={"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"},es=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],mr=["DiagnosticReport-update"];function _n(r){return mr.includes(r)}function Un(r){if(mr.includes(r))throw new d(m(`'context.version' is required for '${r}'.`))}var ts={"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 rs(r){return es.includes(r)}function Ln(r){return!!r.endpoint}function hr(r){if(!gt(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 Ln(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function gt(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(!fr[o])return!1;return!(Ln(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function Fn(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(!rs(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 ns(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),!n.isArray)Fn(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)Fn(r,s,t,n)}}function is(r,e){let t=new Map,n=ts[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.`));ns(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 yr(r,e,t,n){if(!(r&&typeof r=="string"))throw new d(m("Must provide a topic."));if(!fr[e])throw new d(m(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(fr).join(", ")}`));if(typeof t!="object")throw new d(m("context must be a context object or array of context objects."));if(mr.includes(e)&&!n)throw new d(m(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return is(e,i),{timestamp:new Date().toISOString(),id:oe(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var yt=class extends se{constructor(e){if(super(),this.subRequest=e,!e.endpoint)throw new d(m("Subscription request should contain an endpoint."));if(!gt(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 os(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=Vn(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 Bn(r){return r.split(".").length===3}function xt(r){let[e,t,n]=r.split(".");return os(t)}function qn(r){try{return typeof xt(r).login_id=="string"}catch{return!1}}function jn(r){try{let t=xt(r).exp;return typeof t=="number"?t*1e3:void 0}catch{return}}var vt=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 ss,k=class{constructor(e){this[ss]="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)}};ss=Symbol.toStringTag;var ke=class{constructor(e){this.storage=e??(typeof localStorage<"u"?localStorage:new gr)}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?ln(t):void 0)}},gr=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]}},$n=class extends ke{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 xr=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)}}},Ve=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)}},vr=class{constructor(e){this.criteria=e,this.emitter=new Ve(e),this.refCount=1}},Tt=class{constructor(e,t){if(!(e instanceof St))throw new d(m("First arg of constructor should be a `MedplumClient`"));let n;try{n=new URL(t).toString()}catch{throw new d(m("Not a valid URL"))}let i=new xr(n);this.medplum=e,this.ws=i,this.masterSubEmitter=new Ve,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(Ye(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(Mr(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 vr(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 Ve(...Array.from(this.criteriaEntries.keys()))),this.masterSubEmitter}};var lp="3.0.10-b1cff794",as=N.FHIR_JSON+", */*; q=0.1",cs="https://api.medplum.com/",us=1e3,ls=6e4,ps=0,Gn="Binary/",Qn={resourceType:"Device",id:"system",deviceName:[{type:"model-name",name:"System"}]},ds=(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))(ds||{}),fs=(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))(fs||{}),ms=(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))(ms||{}),hs=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(hs||{}),St=class extends Ie{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??ys(),this.storage=t?.storage??new ke,this.createPdfImpl=t?.createPdf,this.baseUrl=Wn(t?.baseUrl??cs),this.fhirBaseUrl=Wn(Et(this.baseUrl,t?.fhirUrlPath??"fhir/R4/")),this.authorizeUrl=Et(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=Et(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=Et(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"?ps:ls),this.cacheTime>0?this.requestCache=new ht(t?.resourceCacheSize??us):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=>{n.then(()=>{this.attemptResumeActiveLogin().then(o).catch(console.error),this.initComplete=!0}).catch(console.error)});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(Tr));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 Tr(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 Qn;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(Qn));let[o,s]=i.split("/");return!o||!s?new k(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(Qr(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,
|
|
@@ -39,6 +39,6 @@ var Fe=class{constructor(e,t){this.operator=e;this.child=t}toString(){return`${t
|
|
|
39
39
|
expression,
|
|
40
40
|
target
|
|
41
41
|
}
|
|
42
|
-
}`.replace(/\s+/g," "),a=await this.graphql(s);qt(a.data.StructureDefinitionList);for(let c of a.data.SearchParameterList)or(c)})());return this.setCacheEntry(n,o),o}requestProfileSchema(t,n){if(!n?.expandProfile&&Wr(t))return Promise.resolve([t]);let i=t+"-requestSchema"+(n?.expandProfile?"-nested":""),o=this.getCacheEntry(i,void 0);if(o)return o.value;let s=new k((async()=>{if(n?.expandProfile){let a=this.fhirUrl("StructureDefinition","$expand-profile");a.search=new URLSearchParams({url:t}).toString();let c=await this.post(a.toString(),{});return vr(c).map(u=>(jt(u,u.url),u.url))}else{let a=await this.searchOne("StructureDefinition",{url:t,_sort:"-_lastUpdated"});return a?(qt([a],t),[t]):(console.warn(`No StructureDefinition found for ${t}!`),[])}})());return this.setCacheEntry(i,s),s}readHistory(t,n,i){return this.get(this.fhirUrl(t,n,"_history"),i)}readVersion(t,n,i,o){return this.get(this.fhirUrl(t,n,"_history",i),o)}readPatientEverything(t,n){return this.get(this.fhirUrl("Patient",t,"$everything"),n)}createResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");return this.invalidateSearches(t.resourceType),this.post(this.fhirUrl(t.resourceType),t,void 0,n)}async createResourceIfNoneExist(t,n,i){return await this.searchOne(t.resourceType,n,i)??this.createResource(t,i)}async createAttachment(t,n,i,o,s){let a=await this.createBinary(t,n,i,o,s);return{contentType:i,url:a.url,title:n}}createBinary(t,n,i,o,s){let a=this.fhirUrl("Binary");return n&&a.searchParams.set("_filename",n),o?this.uploadwithProgress(a,t,i,o,s):this.post(a,t,i,s)}uploadwithProgress(t,n,i,o,s){return new Promise((a,c)=>{let u=new XMLHttpRequest,p=()=>u.abort();s?.signal?.addEventListener("abort",p);let x=v=>{s?.signal?.removeEventListener("abort",p),v instanceof Error?c(v):a(v)};u.responseType="json",u.onabort=()=>x(new Error("Request aborted")),u.onerror=()=>x(new Error("Request error")),o&&(u.upload.onprogress=v=>o(v),u.upload.onload=v=>o(v)),u.onload=()=>{u.status>=200&&u.status<300?x(u.response):x(new d(Be(u.response||u.statusText)))},u.open("POST",t),u.withCredentials=!0,u.setRequestHeader("Authorization","Bearer "+this.accessToken),u.setRequestHeader("Cache-Control","no-cache, no-store, max-age=0"),u.setRequestHeader("Content-Type",i),u.setRequestHeader("X-Medplum","extended"),u.send(n)})}async createPdf(t,n,i,o){if(!this.createPdfImpl)throw new Error("PDF creation not enabled");let s=await this.createPdfImpl(t,i,o);return this.createBinary(s,n,"application/pdf")}createComment(t,n,i){let o=this.getProfile(),s,a;return t.resourceType==="Encounter"&&(s=Z(t),a=t.subject),t.resourceType==="ServiceRequest"&&(s=t.encounter,a=t.subject),t.resourceType==="Patient"&&(a=Z(t)),this.createResource({resourceType:"Communication",status:"completed",basedOn:[Z(t)],encounter:s,subject:a,sender:o?Z(o):void 0,sent:new Date().toISOString(),payload:[{contentString:n}]},i)}async updateResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");if(!t.id)throw new Error("Missing id");let i=await this.put(this.fhirUrl(t.resourceType,t.id),t,void 0,n);return i||(i=t),this.cacheResource(i),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),i}patchResource(t,n,i,o){return this.invalidateSearches(t),this.patch(this.fhirUrl(t,n),i,o)}deleteResource(t,n,i){return this.deleteCacheEntry(this.fhirUrl(t,n).toString()),this.invalidateSearches(t),this.delete(this.fhirUrl(t,n),i)}validateResource(t,n){return this.post(this.fhirUrl(t.resourceType,"$validate"),t,void 0,n)}executeBot(t,n,i,o){let s;if(typeof t=="string"){let a=t;s=this.fhirUrl("Bot",a,"$execute")}else{let a=t;s=this.fhirUrl("Bot","$execute"),s.searchParams.set("identifier",a.system+"|"+a.value)}return this.post(s,n,i,o)}executeBatch(t,n){return this.post(this.fhirBaseUrl.slice(0,-1),t,void 0,n)}sendEmail(t,n){return this.post("email/v1/send",t,M.JSON,n)}graphql(t,n,i,o){return this.post(this.fhirUrl("$graphql"),{query:t,operationName:n,variables:i},M.JSON,o)}readResourceGraph(t,n,i,o){return this.get(`${this.fhirUrl(t,n)}/$graph?graph=${i}`,o)}pushToAgent(t,n,i,o,s,a){return this.post(this.fhirUrl("Agent",Je(t),"$push"),{destination:typeof n=="string"?n:X(n),body:i,contentType:o,waitForResponse:s},M.FHIR_JSON,a)}getActiveLogin(){return this.storage.getObject("activeLogin")}async setActiveLogin(t){(!this.sessionDetails?.profile||X(this.sessionDetails.profile)!==t.profile?.reference)&&this.clearActiveLogin(),this.setAccessToken(t.accessToken,t.refreshToken),this.storage.setObject("activeLogin",t),this.addLogin(t),this.refreshPromise=void 0,await this.refreshProfile()}getAccessToken(){return this.accessToken}setAccessToken(t,n){this.accessToken=t,this.refreshToken=n,this.sessionDetails=void 0,this.accessTokenExpires=jn(t),this.medplumServer=qn(t)}getLogins(){return this.storage.getObject("logins")??[]}addLogin(t){let n=this.getLogins().filter(i=>i.profile?.reference!==t.profile?.reference);n.push(t),this.storage.setObject("logins",n)}async refreshProfile(){return this.medplumServer?(this.profilePromise=new Promise((t,n)=>{this.get("auth/me").then(i=>{this.profilePromise=void 0;let o=this.sessionDetails?.profile?.id!==i.profile.id;this.sessionDetails=i,o&&this.dispatchEvent({type:"change"}),t(i.profile)}).catch(n)}),this.profilePromise):Promise.resolve(void 0)}isLoading(){return!this.isInitialized||!!this.profilePromise}isSuperAdmin(){return!!this.sessionDetails?.project.superAdmin}isProjectAdmin(){return!!this.sessionDetails?.membership.admin}getProject(){return this.sessionDetails?.project}getProjectMembership(){return this.sessionDetails?.membership}getProfile(){return this.sessionDetails?.profile}async getProfileAsync(){return this.profilePromise?this.profilePromise:this.sessionDetails?this.sessionDetails.profile:this.refreshProfile()}getUserConfiguration(){return this.sessionDetails?.config}getAccessPolicy(){return this.sessionDetails?.accessPolicy}async download(t,n={}){this.refreshPromise&&await this.refreshPromise;let i=t.toString();return i.startsWith(Gn)&&(t=this.fhirUrl(i)),this.addFetchOptionsDefaults(n),(await this.fetchWithRetry(t.toString(),n)).blob()}async uploadMedia(t,n,i,o,s){let a=await this.createBinary(t,i,n);return this.createResource({resourceType:"Media",status:"completed",content:{contentType:n,url:Gn+a.id,title:i},...o},s)}async bulkExport(t="",n,i,o){let s=t&&`${t}/`,a=this.fhirUrl(`${s}$export`);return n&&a.searchParams.set("_type",n),i&&a.searchParams.set("_since",i),this.startAsyncRequest(a.toString(),o)}async startAsyncRequest(t,n={}){this.addFetchOptionsDefaults(n);let i=n.headers;return i.Prefer="respond-async",this.request("POST",t,n)}get keyValue(){return this.keyValueClient||(this.keyValueClient=new Tt(this)),this.keyValueClient}getCacheEntry(t,n){if(!this.requestCache||n?.cache==="no-cache"||n?.cache==="reload")return;let i=this.requestCache.get(t);if(!(!i||i.requestTime+this.cacheTime<Date.now()))return i}setCacheEntry(t,n){this.requestCache&&this.requestCache.set(t,{requestTime:Date.now(),value:n})}cacheResource(t){t?.id&&!t.meta?.tag?.some(n=>n.code==="SUBSETTED")&&this.setCacheEntry(this.fhirUrl(t.resourceType,t.id).toString(),new k(Promise.resolve(t)))}deleteCacheEntry(t){this.requestCache&&this.requestCache.delete(t)}async request(t,n,i={},o={}){await this.refreshIfExpired(),i.method=t,this.addFetchOptionsDefaults(i);let s=await this.fetchWithRetry(n,i);if(s.status===401)return this.handleUnauthenticated(t,n,i);if(s.status===204||s.status===304)return;let c=s.headers.get("content-type")?.includes("json");if(s.status===404&&!c)throw new d(Dr);let u=await this.parseBody(s,c),p=i.redirect??this.options.redirect;if((s.status===200||s.status===201)&&p==="follow"){let v=await Kn(s,u);if(v)return this.request("GET",v,{...i,body:void 0})}let x=i.headers?.Prefer;if(s.status===202&&x==="respond-async"){let Cr=await Kn(s,u)??o.statusUrl;if(Cr)return this.pollStatus(Cr,i,o)}if(s.status>=400)throw new d(Be(u));return u}async parseBody(t,n){let i;if(n)try{i=await t.json()}catch(o){throw console.error("Error parsing response",t.status,o),o}else i=await t.text();return i}async fetchWithRetry(t,n){t.startsWith("http")||(t=new URL(t,this.baseUrl).href);let i=3,o=200,s;for(let a=0;a<i;a++){try{if(this.options.verbose&&this.logRequest(t,n),s=await this.fetch(t,n),this.options.verbose&&this.logResponse(s),s.status<500)return s}catch(c){this.retryCatch(a,i,c)}await rr(o)}return s}logRequest(t,n){if(console.log(`> ${n.method} ${t}`),n.headers){let i=n.headers,o=Object.entries(i).sort((s,a)=>s[0].localeCompare(a[0]));for(let[s,a]of o)console.log(`> ${s}: ${a}`)}}logResponse(t){console.log(`< ${t.status} ${t.statusText}`),t.headers&&t.headers.forEach((n,i)=>console.log(`< ${i}: ${n}`))}async pollStatus(t,n,i){return i.pollCount===void 0?(n.redirect="follow",i.statusUrl=t,i.pollCount=1):(await rr(1e3),i.pollCount++),this.request("GET",t,n,i)}async executeAutoBatch(){let t=[...this.autoBatchQueue];if(this.autoBatchQueue.length=0,this.autoBatchTimerId=void 0,t.length===1){let o=t[0];try{o.resolve(await this.request(o.method,this.fhirBaseUrl+o.url,o.options))}catch(s){o.reject(new d(Be(s)))}return}let n={resourceType:"Bundle",type:"batch",entry:t.map(o=>({request:{method:o.method,url:o.url},resource:o.options.body?JSON.parse(o.options.body):void 0}))},i=await this.post(this.fhirBaseUrl.slice(0,-1),n);for(let o=0;o<t.length;o++){let s=t[o],a=i.entry?.[o];a?.response?.outcome&&!Mt(a.response.outcome)?s.reject(new d(a.response.outcome)):s.resolve(a?.resource)}}addFetchOptionsDefaults(t){let n=t.headers;n||(n={},t.headers=n),n.Accept||(n.Accept=is),n["X-Medplum"]="extended",t.body&&!n["Content-Type"]&&(n["Content-Type"]=M.FHIR_JSON),this.accessToken?n.Authorization="Bearer "+this.accessToken:this.basicAuth&&(n.Authorization="Basic "+this.basicAuth),t.cache||(t.cache="no-cache"),t.credentials||(t.credentials="include")}setRequestContentType(t,n){t.headers||(t.headers={});let i=t.headers;i["Content-Type"]=n}setRequestBody(t,n){typeof n=="string"||typeof Blob<"u"&&(n instanceof Blob||n.constructor.name==="Blob")||typeof File<"u"&&(n instanceof File||n.constructor.name==="File")||typeof Uint8Array<"u"&&(n instanceof Uint8Array||n.constructor.name==="Uint8Array")?t.body=n:n&&(t.body=JSON.stringify(n))}handleUnauthenticated(t,n,i){return this.refresh()?this.request(t,n,i):(this.clearActiveLogin(),this.onUnauthenticated&&this.onUnauthenticated(),Promise.reject(new Error("Unauthenticated")))}async startPkce(){let t=pr();sessionStorage.setItem("pkceState",t);let n=pr();sessionStorage.setItem("codeVerifier",n);let i=await Mn(n),o=mn(i).replaceAll("+","-").replaceAll("/","_").replaceAll("=","");return sessionStorage.setItem("codeChallenge",o),{codeChallengeMethod:"S256",codeChallenge:o}}async requestAuthorization(t){let n=await this.ensureCodeChallenge(t??{}),i=new URL(this.authorizeUrl);i.searchParams.set("response_type","code"),i.searchParams.set("state",sessionStorage.getItem("pkceState")),i.searchParams.set("client_id",n.clientId??this.clientId),i.searchParams.set("redirect_uri",n.redirectUri??Hn()),i.searchParams.set("code_challenge_method",n.codeChallengeMethod),i.searchParams.set("code_challenge",n.codeChallenge),i.searchParams.set("scope",n.scope??"openid profile"),window.location.assign(i.toString())}processCode(t,n){let i=new URLSearchParams;if(i.set("grant_type","authorization_code"),i.set("code",t),i.set("client_id",n?.clientId??this.clientId),i.set("redirect_uri",n?.redirectUri??Hn()),typeof sessionStorage<"u"){let o=sessionStorage.getItem("codeVerifier");o&&i.set("code_verifier",o)}return this.fetchTokens(i)}refreshIfExpired(){return!this.refreshPromise&&this.accessTokenExpires!==void 0&&this.accessTokenExpires<Date.now()&&this.refresh(),this.refreshPromise??Promise.resolve()}refresh(){if(this.refreshPromise)return this.refreshPromise;if(this.refreshToken){let t=new URLSearchParams;return t.set("grant_type","refresh_token"),t.set("client_id",this.clientId),t.set("refresh_token",this.refreshToken),this.refreshPromise=this.fetchTokens(t),this.refreshPromise}if(this.clientId&&this.clientSecret)return this.refreshPromise=this.startClientLogin(this.clientId,this.clientSecret),this.refreshPromise}async startClientLogin(t,n){this.clientId=t,this.clientSecret=n;let i=new URLSearchParams;return i.set("grant_type","client_credentials"),i.set("client_id",t),i.set("client_secret",n),this.fetchTokens(i)}async startJwtBearerLogin(t,n,i){this.clientId=t;let o=new URLSearchParams;return o.set("grant_type","urn:ietf:params:oauth:grant-type:jwt-bearer"),o.set("client_id",t),o.set("assertion",n),o.set("scope",i),this.fetchTokens(o)}async startJwtAssertionLogin(t){let n=new URLSearchParams;return n.append("grant_type","client_credentials"),n.append("client_assertion_type","urn:ietf:params:oauth:client-assertion-type:jwt-bearer"),n.append("client_assertion",t),this.fetchTokens(n)}setBasicAuth(t,n){this.clientId=t,this.clientSecret=n,this.basicAuth=Dn(t+":"+n)}async fhircastSubscribe(t,n){if(!(typeof t=="string"&&t!==""))throw new d(m("Invalid topic provided. Topic must be a valid string."));if(!(typeof n=="object"&&Array.isArray(n)&&n.length>0))throw new d(m("Invalid events provided. Events must be an array of event names containing at least one event."));let i={channelType:"websocket",mode:"subscribe",topic:t,events:n},s=(await this.post("/fhircast/STU3",mr(i),M.FORM_URL_ENCODED))["hub.channel.endpoint"];if(!s)throw new Error("Invalid response!");return i.endpoint=s,i}async fhircastUnsubscribe(t){if(!yt(t))throw new d(m("Invalid topic or subscriptionRequest. SubscriptionRequest must be an object."));if(!(t.endpoint&&typeof t.endpoint=="string"&&t.endpoint.startsWith("ws")))throw new d(m("Provided subscription request must have an endpoint in order to unsubscribe."));t.mode="unsubscribe",await this.post("/fhircast/STU3",mr(t),M.FORM_URL_ENCODED)}fhircastConnect(t){return new ht(t)}async fhircastPublish(t,n,i,o){return _n(n)?this.post(`/fhircast/STU3/${t}`,hr(t,n,i,o),M.JSON):(Un(n),this.post(`/fhircast/STU3/${t}`,hr(t,n,i),M.JSON))}async fhircastGetContext(t){return this.get(`/fhircast/STU3/${t}`)}async invite(t,n){return this.post("admin/projects/"+t+"/invite",n)}async fetchTokens(t){let n={method:"POST",headers:{"Content-Type":M.FORM_URL_ENCODED},body:t.toString(),credentials:"include"},i=n.headers;this.basicAuth&&(i.Authorization=`Basic ${this.basicAuth}`);let o;try{o=await this.fetchWithRetry(this.tokenUrl,n)}catch(a){throw this.refreshPromise=void 0,a}if(!o.ok){this.clearActiveLogin();try{let a=await o.json();throw new d(b(a.error_description))}catch(a){throw new d(b("Failed to fetch tokens"),a)}}let s=await o.json();return await this.verifyTokens(s),this.getProfile()}async verifyTokens(t){let n=t.access_token;if(Bn(n)){let i=gt(n);if(Date.now()>=i.exp*1e3)throw this.clearActiveLogin(),new Error("Token expired");if(i.cid){if(i.cid!==this.clientId)throw this.clearActiveLogin(),new Error("Token was not issued for this audience")}else if(this.clientId&&i.client_id!==this.clientId)throw this.clearActiveLogin(),new Error("Token was not issued for this audience")}return this.setActiveLogin({accessToken:n,refreshToken:t.refresh_token,project:t.project,profile:t.profile})}setupStorageListener(){try{window.addEventListener("storage",t=>{(t.key===null||t.key==="activeLogin")&&window.location.reload()})}catch{}}retryCatch(t,n,i){if(i.message==="Failed to fetch"&&t===1&&this.dispatchEvent({type:"offline"}),t>=n-1)throw i}getSubscriptionManager(){return this.subscriptionManager||(this.subscriptionManager=new xt(this,gn("/ws/subscriptions-r4",this.baseUrl))),this.subscriptionManager}subscribeToCriteria(t){return this.getSubscriptionManager().addCriteria(t)}unsubscribeFromCriteria(t){this.subscriptionManager&&(this.subscriptionManager.removeCriteria(t),this.subscriptionManager.getCriteriaCount()===0&&this.subscriptionManager.closeWebSocket())}getMasterSubscriptionEmitter(){return this.getSubscriptionManager().getMasterEmitter()}};function fs(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}function Hn(){return typeof window>"u"?"":window.location.protocol+"//"+window.location.host+"/"}function Wn(r){return r.endsWith("/")?r:r+"/"}function St(r,e){return new URL(e,r).toString()}async function Kn(r,e){let t=r.headers.get("content-location");if(t)return t;let n=r.headers.get("location");if(n)return n;if(ce(e)&&e.issue?.[0]?.diagnostics)return e.issue[0].diagnostics}function vr(r){let e=r.entry?.map(t=>t.resource)??[];return Object.assign(e,{bundle:r})}var up={aws_ssm_parameter_store:"aws_ssm_parameter_store"};function Tr({parentContext:r,path:e,elements:t,profileUrl:n,debugMode:i}){if(e===r?.path)return;let o=ms(e,t,r,!!i),s=Object.create(null);for(let[a,c]of Object.entries(o))s[e+"."+a]=c;return{path:e,elements:o,elementsByPath:s,profileUrl:n??r?.profileUrl,debugMode:i??r?.debugMode??!1}}function ms(r,e,t,n){let i=Object.create(null);if(t)for(let[s,a]of Object.entries(t.elementsByPath)){let c=de(r,s);c!==void 0&&(i[c]=a)}let o=!1;if(e)for(let[s,a]of Object.entries(e))s in i||(i[s]=a,o=!0);return n&&console.assert(o,"Unnecessary ElementsContext; not using any newly provided elements"),i}function zn(r){return r.type!==void 0&&r.type.length>0}function hs(r,e,t,n){let i=Re(r,e.path,{profileUrl:n});if(i){let o=t.typeSchema?.elements??t.elements;return i.some(s=>zt(s,e,t,o))??!1}return console.assert(!1,"getNestedProperty[%s] in isDiscriminatorComponentMatch missed",e.path),!1}function Jn(r,e,t,n){if(r)for(let i of e){let o={value:r,type:i.typeSchema?.name??i.type?.[0].code};if(t.every(s=>hs(o,s,i,i.typeSchema?.url??n)))return i.name}}var ve=class{constructor(e,t,n){if(e.type===void 0)throw new Error("schema must include a type");this.rootSchema=e;let i=Tr({parentContext:void 0,path:this.rootSchema.type,elements:n??this.rootSchema.elements,profileUrl:this.rootSchema.name===this.rootSchema.type?void 0:this.rootSchema.url});if(i===void 0)throw new Error("Could not create root elements context");this.elementsContextStack=[i],this.visitor=t}get elementsContext(){return this.elementsContextStack[this.elementsContextStack.length-1]}crawlElement(e,t,n){this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema);let i=Object.fromEntries(Object.entries(this.elementsContext.elements).filter(([o])=>o.startsWith(t)));this.crawlElementsImpl(i,n),this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlSlice(e,t,n){let i=this.prepareSlices(n.slices,n);if(!G(i.slices))throw new Error(`cannot crawl slice ${t.name} since it has no type information`);this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema),this.sliceAllowList=[t],this.crawlSliceImpl(i.slices[0],t.path,i),this.sliceAllowList=void 0,this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlResource(){this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema),this.crawlElementsImpl(this.rootSchema.elements,this.rootSchema.type),this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlElementsImpl(e,t){let n=ys(e);for(let i of n)this.crawlElementNode(i,t)}crawlElementNode(e,t){let n=t+"."+e.key;this.visitor.onEnterElement&&this.visitor.onEnterElement(n,e.element,this.elementsContext);for(let i of e.children)this.crawlElementNode(i,t);G(e.element?.slicing?.slices)&&this.crawlSlicingImpl(e.element.slicing,n),this.visitor.onExitElement&&this.visitor.onExitElement(n,e.element,this.elementsContext)}prepareSlices(e,t){let n=[];for(let o of e){if(!zn(o))continue;let s=o.type.find(a=>G(a.profile))?.profile?.[0];if(G(s)){let a=Kr(s);a&&(o.typeSchema=a)}n.push(o)}return{...t,slices:n}}crawlSlicingImpl(e,t){let n=this.prepareSlices(e.slices,e);for(let i of n.slices)(this.sliceAllowList===void 0||this.sliceAllowList.includes(i))&&this.crawlSliceImpl(i,t,n)}crawlSliceImpl(e,t,n){let i=e.typeSchema;i&&this.visitor.onEnterSchema&&this.visitor.onEnterSchema(i),this.visitor.onEnterSlice&&this.visitor.onEnterSlice(t,e,n);let o,s=i?.elements??e.elements;G(s)&&(o=Tr({path:t,parentContext:this.elementsContext,elements:s})),o&&this.elementsContextStack.push(o),this.crawlElementsImpl(s,t),o&&this.elementsContextStack.pop(),this.visitor.onExitSlice&&this.visitor.onExitSlice(t,e,n),i&&this.visitor.onExitSchema&&this.visitor.onExitSchema(i)}};function ys(r){let e=[];function t(o,s){return s.startsWith(o+".")}function n(o,s){for(let a of o.children)if(t(a.key,s.key)){n(a,s);return}o.children.push(s)}let i=Object.entries(r);i.sort((o,s)=>o[0].localeCompare(s[0]));for(let[o,s]of i){let a={key:o,element:s,children:[]},c=!1;for(let u of e)if(t(u.key,o)){n(u,a),c=!0;break}c||e.push(a)}return e}var Et="__sliceName";function Dp(r,e){let t=new De(r,r.resourceType,"resource");return new ve(e,t).crawlResource(),t.getDefaultValue()}function Mp(r,e,t){for(let[n,i]of Object.entries(e)){if(t===void 0||t===n){Ct(r,n,i,e);continue}let o=de(t,n);o!==void 0&&Ct(r,o,i,e)}return r}function Np(r,e,t,n,i){let o=r??Object.create(null),[s,a]=xs(e,"."),c=Object.create(null);bt(c,o,a,t);let u=new De(c,s,"element");new ve(i,u,n).crawlElement(t,a,s);let x=u.getDefaultValue();return Rt(x,a,t,n)}function Fp(r,e,t,n){let i=new De([{[Et]:e.name}],e.path,"element");return new ve(n,i).crawlSlice(r,e,t),i.getDefaultValue()[0]}var De=class{constructor(e,t,n){this.schemaStack=[],this.valueStack=[],this.rootValue=ee(e),this.valueStack.splice(0,this.valueStack.length,{type:n,path:t,values:[this.rootValue]})}get schema(){return this.schemaStack[this.schemaStack.length-1]}get value(){return this.valueStack[this.valueStack.length-1]}onEnterSchema(e){this.schemaStack.push(e)}onExitSchema(){this.schemaStack.pop()}onEnterElement(e,t,n){let i=this.value.values,o=this.value.path,s=de(o,e);if(s===void 0)throw new Error(`Expected ${e} to be prefixed by ${o}`);let a=[];for(let c of i){if(c===void 0)continue;let u=Array.isArray(c)?c:[c];for(let p of u){gs(p,s,t,n.elements),Ct(p,s,t,n.elements);let x=Rt(p,s,t,n.elements);x!==void 0&&a.push(x)}}this.valueStack.push({type:"element",path:e,values:a})}onExitElement(e,t,n){if(!this.valueStack.pop())throw new Error("Expected value context to exist when exiting element");let o=de(this.value.path,e);if(o===void 0)throw new Error(`Expected ${e} to be prefixed by ${this.value.path}`);for(let s of this.value.values){let a=Rt(s,o,t,n.elements);if(Array.isArray(a))for(let c=a.length-1;c>=0;c--){let u=a[c];G(u)||a.splice(c,1)}S(a)&&bt(s,void 0,o,t)}}onEnterSlice(e,t,n){let i=this.value.values,o=[];for(let s of i){if(s===void 0)continue;if(!Array.isArray(s))throw new Error("Expected array value for sliced element");let a=this.getMatchingSliceValues(s,t,n);o.push(a)}this.valueStack.push({type:"slice",path:e,values:o})}getMatchingSliceValues(e,t,n){let i=[];for(let o of e)(o[Et]??Jn(o,[t],n.discriminator,this.schema.url))===t.name&&i.push(o);for(let o=i.length;o<t.min;o++)if(tr(t.type[0].code)){let s=Object.create(null);i.push(s),e.push(s)}return i}onExitSlice(){let e=this.valueStack.pop();if(!e)throw new Error("Expected value context to exist in onExitSlice");for(let t of e.values)for(let n=t.length-1;n>=0;n--){let i=t[n];Et in i&&delete i[Et]}}getDefaultValue(){return this.rootValue}};function gs(r,e,t,n){let i=Rt(r,e,t,n);t.min>0&&i===void 0&&tr(t.type[0].code)&&(t.isArray?bt(r,[Object.create(null)],e,t):bt(r,Object.create(null),e,t))}function bt(r,e,t,n){if(t.includes("."))throw new Error("key cannot be nested");let i=t;if(t.includes("[x]")){let o=n.type[0].code;i=t.replace("[x]",C(o))}e===void 0?delete r[i]:r[i]=e}function Rt(r,e,t,n){let i=e.split("."),o=r,s;for(let a=0;a<i.length;a++){let c=i[a];if(c.includes("[x]")){let p=n[i.slice(0,a+1).join(".")].type[0].code;c=c.replace("[x]",C(p))}if(a===i.length-1){Array.isArray(o)?s=o.map(u=>u[c]):s=o[c];continue}if(Array.isArray(o))o=o.map(u=>u[c]);else if(O(o)){if(o[c]===void 0)return;o=o[c]}else return}return s}function Ct(r,e,t,n){if(!(t.fixed||t.pattern))return r;if(Array.isArray(r))return r.map(a=>Ct(a,e,t,n));r==null&&(r=Object.create(null));let i=r,o=e.split("."),s=i;for(let a=0;a<o.length;a++){let c=o[a];if(c.includes("[x]")){let p=n[o.slice(0,a+1).join(".")].type[0].code;c=c.replace("[x]",C(p))}if(a===o.length-1){let u=Array.isArray(s)?s:[s];for(let p of u)t.fixed?p[c]??=t.fixed.value:t.pattern&&(p[c]=Yn(p[c],t.pattern.value))}else{if(!(c in s)){let u=o.slice(0,a+1).join(".");s[c]=n[u].isArray?[Object.create(null)]:Object.create(null)}s=s[c]}}return i}function Yn(r,e){if(Array.isArray(e)&&(Array.isArray(r)||r===void 0))return(r?.length??0)>0?r:ee(e);if(O(e)&&(O(r)&&!Array.isArray(r)||r===void 0)){let t=ee(r)??Object.create(null);for(let n of Object.keys(e))t[n]=Yn(t[n],e[n]);return t}return r}function xs(r,e){let t=r.lastIndexOf(e);if(t===-1)return["",r];let n=r.substring(0,t),i=r.substring(t+e.length);return[n,i]}function Zn(r,e){if(!r.group)throw new d(b("ConceptMap does not specify a mapping group","ConceptMap.group"));let t=vs(e);if(ce(t))throw new d(t);let n=Ss(t,e.targetsystem?r.group.filter(o=>o.target===e.targetsystem):r.group),i=n.length>0;return{result:i,match:i?n:void 0}}function vs(r){return r.code&&!r.coding&&!r.codeableConcept?r.system===void 0?b("Missing required 'system' input parameter with 'code' parameter"):{[r.system]:[r.code]}:r.coding&&!r.code&&!r.codeableConcept?{[r.coding.system??""]:[r.coding.code??""]}:r.codeableConcept&&!r.code&&!r.coding?Ts(r.codeableConcept):r.code||r.coding||r.codeableConcept?b("Ambiguous input: multiple source codings provided"):b("No source provided: 'code'+'system', 'coding', or 'codeableConcept' input parameter is required")}function Ts(r){let e=Object.create(null);if(!r.coding?.length)return e;for(let{system:t,code:n}of r.coding){if(!n)continue;let i=t??"";e[i]=e[i]?[...e[i],n]:[n]}return e}function Ss(r,e){let t=[];for(let[n,i]of Object.entries(r))for(let o of e.filter(s=>(s.source??"")===n)){let s=o.element?.filter(a=>i.includes(a.code)).flatMap(a=>a.target?.map(c=>({equivalence:c.equivalence,concept:{system:o.target,code:c.code,display:c.display}}))??[]);s?.length||(s=Es(i,o)),s&&t.push(...s)}return t}function Es(r,e){switch(e.unmapped?.mode){case"provided":return r.map(t=>({equivalence:"equal",concept:{system:e.target,code:t}}));case"fixed":return[{equivalence:"equivalent",concept:{system:e.target,code:e.unmapped.code,display:e.unmapped.display}}];default:return}}var bs=[...we,"->","<<",">>","=="];function Xn(r){return new K(r,Pe,bs).tokenize()}var Rs={"-":"disjoint","==":"equal"},Sr=class{constructor(e){this.parser=e;this.structureMap={resourceType:"StructureMap",status:"active"}}parse(){for(;this.parser.hasMore();){let e=this.parser.peek()?.value;switch(e){case"map":this.parseMap();break;case"uses":this.parseUses();break;case"imports":this.parseImport();break;case"group":this.parseGroup();break;case"conceptmap":this.parseConceptMap();break;default:throw new Error(`Unexpected token: ${e}`)}}return this.structureMap}parseMap(){this.parser.consume("Symbol","map"),this.structureMap.url=this.parser.consume("String").value,this.parser.consume("="),this.structureMap.name=this.parser.consume().value}parseUses(){this.parser.consume("Symbol","uses");let e={};e.url=this.parser.consume("String").value,this.parser.peek()?.value==="alias"&&(this.parser.consume("Symbol","alias"),e.alias=this.parser.consume("Symbol").value),this.parser.consume("Symbol","as"),e.mode=this.parser.consume().value,this.structureMap.structure||(this.structureMap.structure=[]),this.structureMap.structure.push(e)}parseImport(){this.parser.consume("Symbol","imports"),this.structureMap.import||(this.structureMap.import=[]),this.structureMap.import.push(this.parser.consume("String").value)}parseGroup(){let e={};this.parser.consume("Symbol","group"),e.name=this.parser.consume("Symbol").value,e.input=this.parseParameters(),this.parser.peek()?.value==="extends"&&(this.parser.consume("Symbol","extends"),e.extends=this.parser.consume("Symbol").value),this.parser.peek()?.value==="<<"?(this.parser.consume("<<"),e.typeMode=this.parser.consume().value,this.parser.peek()?.value==="+"&&(this.parser.consume("+"),e.typeMode="type-and-types"),this.parser.consume(">>")):e.typeMode="none",e.rule=this.parseRules(),this.structureMap.group||(this.structureMap.group=[]),this.structureMap.group.push(e)}parseParameters(){let e=[];for(this.parser.consume("(");this.parser.hasMore()&&this.parser.peek()?.value!==")";)e.push(this.parseParameter()),this.parser.peek()?.value===","&&this.parser.consume(",");return this.parser.consume(")"),e}parseParameter(){let e={};return e.mode=this.parser.consume().value,e.name=this.parser.consume("Symbol").value,this.parser.peek()?.value===":"&&(this.parser.consume(":"),e.type=this.parser.consume("Symbol").value),e}parseRules(){let e=[];for(this.parser.consume("{");this.parser.hasMore()&&this.parser.peek()?.value!=="}";)e.push(this.parseRule());return this.parser.consume("}"),e}parseRule(){let e={source:this.parseRuleSources()};return this.parser.peek()?.value==="->"&&(this.parser.consume("->"),e.target=this.parseRuleTargets()),this.parser.peek()?.value==="then"&&(this.parser.consume("Symbol","then"),this.parser.peek()?.id==="{"?e.rule=this.parseRules():e.dependent=this.parseRuleDependents()),this.parser.peek()?.id==="String"?e.name=this.parser.consume().value:e.name=e.source?.[0]?.element,this.parser.consume(";"),e}parseRuleSources(){this.parser.hasMore()&&this.parser.peek()?.value==="for"&&this.parser.consume("Symbol","for");let e=[this.parseRuleSource()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleSource());return e}parseRuleSource(){let e={},n=this.parseRuleContext().split(".");if(e.context=n[0],e.element=n[1],this.parser.hasMore()&&this.parser.peek()?.value===":"&&(this.parser.consume(":"),e.type=this.parser.consume().value),this.parser.hasMore()&&this.parser.peek()?.value==="default"&&(this.parser.consume("Symbol","default"),e.defaultValueString=this.parser.consume("String").value),(this.parser.peek()?.value==="first"||this.parser.peek()?.value==="not_first"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="not_last"||this.parser.peek()?.value==="only_one")&&(e.listMode=this.parser.consume().value),this.parser.peek()?.value==="as"&&(this.parser.consume("Symbol","as"),e.variable=this.parser.consume().value),this.parser.peek()?.value==="log"&&(this.parser.consume("Symbol","log"),e.logMessage=this.parser.consume().value),this.parser.peek()?.value==="where"){this.parser.consume("Symbol","where");let i=this.parser.consumeAndParse(h.Arrow);e.condition=i.toString()}if(this.parser.peek()?.value==="check"){this.parser.consume("Symbol","check");let i=this.parser.consumeAndParse(h.Arrow);e.check=i.toString()}return e}parseRuleTargets(){let e=[this.parseRuleTarget()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleTarget());return e}parseRuleTarget(){let e={},n=this.parseRuleContext().split(".");return e.contextType="variable",e.context=n[0],e.element=n[1],this.parser.peek()?.value==="="&&(this.parser.consume("="),this.parseRuleTargetTransform(e)),this.parser.peek()?.value==="as"&&(this.parser.consume("Symbol","as"),e.variable=this.parser.consume().value),this.parser.peek()?.value==="share"&&(this.parser.consume("Symbol","share"),e.listMode=["share"],this.parser.consume("Symbol")),(this.parser.peek()?.value==="first"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="collate")&&(e.listMode=[this.parser.consume().value]),e}parseRuleTargetTransform(e){let t=this.parser.consumeAndParse(h.As);t instanceof Q?(e.transform=t.name,e.parameter=t.args?.map(ei)):t instanceof D||t instanceof j?(e.transform="copy",e.parameter=[ei(t)]):(e.transform="evaluate",e.parameter=[{valueString:t.toString()}])}parseRuleContext(){let e=this.parser.consume().value;for(;this.parser.peek()?.value===".";)this.parser.consume("."),e+="."+this.parser.consume().value;return e}parseRuleDependents(){let e=this.parser.consumeAndParse(h.Arrow);return[{name:e.name,variable:e.args.map(t=>t.name)}]}parseConceptMap(){this.parser.consume("Symbol","conceptmap");let e={resourceType:"ConceptMap",status:"active"};e.url=this.parser.consume("String").value,this.parser.consume("{");let t={},n=this.parser.peek()?.value;for(;n!=="}";)n==="prefix"?this.parseConceptMapPrefix(t):this.parseConceptMapRule(e,t),n=this.parser.peek()?.value;this.parser.consume("}"),this.structureMap.contained||(this.structureMap.contained=[]),this.structureMap.contained.push(e)}parseConceptMapPrefix(e){this.parser.consume("Symbol","prefix");let t=this.parser.consume().value;this.parser.consume("=");let n=this.parser.consume().value;e[t]=n}parseConceptMapRule(e,t){let n=this.parser.consume().value,i=t[n];this.parser.consume(":");let o=this.parser.consume().value,s=Rs[this.parser.consume().value],a=this.parser.consume().value,c=t[a];this.parser.consume(":");let u=this.parser.consume().value,p=e?.group?.find(x=>x.source===i&&x.target===c);p||(p={source:i,target:c,element:[]},e.group||(e.group=[]),e.group.push(p)),p.element||(p.element=[]),p.element.push({code:o,target:[{code:u,equivalence:s}]})}};function ei(r){if(r instanceof j)return{valueId:r.name};if(r instanceof D)return Cs(r);throw new Error(`Unknown parameter atom type: ${r.constructor.name} (${r.toString()})`)}function Cs(r){switch(r.value.type){case"boolean":return{valueBoolean:r.value.value};case"decimal":return{valueDecimal:r.value.value};case"integer":return{valueInteger:r.value.value};case"dateTime":case"string":return{valueString:r.value.value};default:throw new Error("Unknown target literal type: "+r.value.type)}}var Ps=Ae().registerInfix("->",{precedence:h.Arrow}).registerInfix(";",{precedence:h.Semicolon});function Wp(r){let e=Ps.construct(Xn(r));return e.removeComments(),new Sr(e).parse()}function ed(r,e,t){return ws({root:r,loader:t},r,e)}function ws(r,e,t){return As(r,e),ni(r,e),ii(r,e.group[0],t)}function As(r,e){if(r.loader&&e.import)for(let t of e.import){let n=r.loader(t);for(let i of n)ni(r,i)}}function ni(r,e){if(e.group)for(let t of e.group)Er(r,t.name,{type:"StructureMapGroup",value:t})}function ii(r,e,t){let n=[],i=[];for(let u of e.input)u.mode==="source"&&n.push(u),u.mode==="target"&&i.push(u);if(n.length===0)throw new Error("Missing source definitions");if(i.length===0)throw new Error("Missing target definitions");if(t.length<n.length)throw new Error(`Not enough arguments (got ${t.length}, min ${n.length})`);if(t.length>n.length+i.length)throw new Error(`Too many arguments (got ${t.length}, max ${n.length+i.length})`);let o={},s=[],a=0;for(let u of n)Me(o,u.name,t[a++]);for(let u of i){let p=t[a++]??y({});Me(o,u.name,p),s.push(p)}let c={root:r.root,parent:r,variables:o};if(e.rule)for(let u of e.rule)oi(c,u);return s}function oi(r,e){e.source&&si(r,e,0)}function si(r,e,t){let n=e.source[t];for(let i of ks(r,n))n.variable&&Er(r,n.variable,i),t<e.source.length-1?si(r,e,t+1):Is(r,e)}function Is(r,e){if(e.target)for(let t of e.target)Vs(r,t);if(e.rule)for(let t of e.rule)oi(r,t);if(e.dependent)for(let t of e.dependent)Bs(r,t)}function ks(r,e){let t=Te(r,e.context);if(!t)return[];let n=e.element;if(!n)return[t];let i=$(n,[t]);if(!i||i.length===0)return[];if(e.condition&&!ti(t,{[e.variable]:i[0]},e.condition))return[];if(e.check&&!ti(t,{[e.variable]:i[0]},e.check))throw new Error("Check failed: "+e.check);return e.listMode&&(i=Os(e,i)),i}function ti(r,e,t){return N($(t,[r],e))}function Os(r,e){switch(r.listMode){case"first":return[e[0]];case"not_first":return e.slice(1);case"last":return[e[e.length-1]];case"not_last":return e.slice(0,e.length-1);case"only_one":if(e.length!==1)throw new Error("Expected only one value");break}return e}function Vs(r,e){let t=Te(r,e.context);if(!t)throw new Error("Target not found: "+e.context);let n=t.value[e.element],i,o=Ds(t,e.element)||Array.isArray(n);if(!e.transform)o||n===void 0?i=[y({})]:i=[y(n)];else switch(e.transform){case"append":i=Ms(r,e);break;case"copy":i=Ns(r,e);break;case"create":i=Fs(r,e);break;case"evaluate":i=_s(r,e);break;case"translate":i=Us(r,e);break;case"truncate":i=Ls(r,e);break;case"uuid":i=[{type:"string",value:oe()}];break;default:throw new Error(`Unsupported transform: ${e.transform}`)}if(i.length!==0){if(o){n||(n=[],Me(t.value,e.element,n));for(let s of i)n.push(s.value)}else Me(t.value,e.element,i[0].value);e.variable&&Er(r,e.variable,qs(i))}}function Ds(r,e){return be(r.type)?.elements?.[e]?.isArray}function Ms(r,e){let t=z(r,e.parameter?.[0])?.[0]?.value,n=z(r,e.parameter?.[1])?.[0]?.value;return[{type:"string",value:(t??"").toString()+(n??"").toString()}]}function Ns(r,e){return e.parameter.flatMap(t=>z(r,t))}function Fs(r,e){let t={};return e.parameter&&e.parameter.length>0&&(t.resourceType=z(r,e.parameter?.[0])?.[0]?.value),[y(t)]}function _s(r,e){let n=z(r,e.parameter?.[0])[0].value;return $(n,[],ai(r))}function Us(r,e){let t=e.parameter.flatMap(a=>z(r,a)),n=t[0].value,i=t[1].value,o=r.root.contained?.find(a=>a.resourceType==="ConceptMap"&&a.url===i),s=Zn(o,{system:o.group?.[0]?.source,code:n});return[y(s.match?.[0]?.concept?.code)]}function Ls(r,e){let t=z(r,e.parameter?.[0])?.[0],n=z(r,e.parameter?.[1])?.[0]?.value;return t.type==="string"?[{type:"string",value:t.value.substring(0,n)}]:[t]}function Bs(r,e){let t=Te(r,e.name);if(!t)throw new Error("Dependent group not found: "+e.name);let n=e.variable,i=[];for(let s of n){let a=Te(r,s);if(!a)throw new Error("Dependent variable not found: "+s);i.push(a)}let o={root:r.root,parent:r,variables:{}};ii(o,t.value,i)}function z(r,e){let n=P({type:"StructureMapGroupRuleTargetParameter",value:e},"value");if(!n)throw new Error("Missing target parameter: "+JSON.stringify(e));if(n=ri(n),n.length===1&&n[0].type==="id"){let i=Te(r,n[0].value);if(!i)throw new Error("Variable not found: "+n[0].value);return ri(i)}return n}function Te(r,e){let t=r.variables?.[e];if(t)return t;if(r.parent)return Te(r.parent,e)}function ai(r,e={}){if(r.parent&&ai(r.parent,e),r.variables)for(let[t,n]of Object.entries(r.variables))e[t]=n,e["%"+t]=n;return e}function Er(r,e,t){r.variables||(r.variables={}),Me(r.variables,e,t)}function Me(r,e,t){if(e==="__proto__"||e==="constructor"||e==="prototype")throw new Error("Invalid key: "+e);r[e]=t}function ri(r){return Array.isArray(r)?r:[r]}function qs(r){return r.length===1?r[0]:r}var js=[...we,"eq","ne","co"];function ci(r){return new K(r,Pe,js,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var Pt=class{constructor(e,t,n){this.path=e;this.operator=t;this.value=n}},wt=class{constructor(e){this.child=e}},At=class{constructor(e,t,n){this.keyword=e;this.left=t;this.right=n}};var $s={eq:"eq",ne:"ne",co:"contains",sw:void 0,ew:void 0,gt:"gt",lt:"lt",ge:"ge",le:"le",ap:"ap",sa:"sa",eb:"eb",pr:"missing",po:void 0,ss:void 0,sb:void 0,in:"in",ni:"not-in",re:"eq",identifier:"identifier"};function Gs(r){let e=$s[r];if(!e)throw new d(b("Invalid operator: "+r));return e}var br=class{constructor(e){this.parser=e}parse(){let e;this.parser.peek()?.value==="("?(this.parser.consume("("),e=this.parse(),this.parser.consume(")")):this.parser.peek()?.value==="not"?(this.parser.consume("Symbol","not"),this.parser.consume("("),e=new wt(this.parse()),this.parser.consume(")")):e=new Pt(this.parser.consume("Symbol").value,Gs(this.parser.consume("Symbol").value),this.parser.consume().value);let t=this.parser.peek()?.value;return t==="and"||t==="or"?(this.parser.consume("Symbol",t),new At(t,e,this.parse())):e}},Qs=Ae();function dd(r){let e=Qs.construct(ci(r));return e.removeComments(),new br(e).parse()}var J=class{constructor(e="\r",t="|",n="^",i="~",o="\\",s="&"){this.segmentSeparator=e;this.fieldSeparator=t;this.componentSeparator=n;this.repetitionSeparator=i;this.escapeCharacter=o;this.subcomponentSeparator=s}getMsh1(){return this.fieldSeparator}getMsh2(){return this.componentSeparator+this.repetitionSeparator+this.escapeCharacter+this.subcomponentSeparator}},ui=class r{constructor(e,t=new J){this.context=t,this.segments=e}get header(){return this.segments[0]}get(e){return this.getSegment(e)}getAll(e){return this.getAllSegments(e)}getSegment(e){return typeof e=="number"?this.segments[e]:this.segments.find(t=>t.name===e)}getAllSegments(e){return this.segments.filter(t=>t.name===e)}toString(){return this.segments.map(e=>e.toString()).join(this.context.segmentSeparator)}buildAck(){let e=new Date,t=this.getSegment("MSH"),n=t?.getField(3)?.toString()??"",i=t?.getField(4)?.toString()??"",o=t?.getField(5)?.toString()??"",s=t?.getField(6)?.toString()??"",a=t?.getField(10)?.toString()??"",c=t?.getField(12)?.toString()??"2.5.1";return new r([new Ne(["MSH",this.context.getMsh2(),o,s,n,i,Ws(e),"",this.buildAckMessageType(t),e.getTime().toString(),"P",c],this.context),new Ne(["MSA","AA",a,"OK"],this.context)])}buildAckMessageType(e){let t=e?.getField(9),n=t?.getComponent(2),i=t?.getComponent(3),o="ACK";return n&&i?o=`ACK^${n}^ACK`:n&&(o=`ACK^${n}`),o}static parse(e){if(!e.startsWith("MSH")){let n=new Error("Invalid HL7 message");throw n.type="entity.parse.failed",n}let t=new J("\r",e.charAt(3),e.charAt(4),e.charAt(5),e.charAt(6),e.charAt(7));return new r(e.split(/[\r\n]+/).map(n=>Ne.parse(n,t)),t)}},Ne=class r{constructor(e,t=new J){this.context=t,pn(e)?this.fields=e.map(n=>Se.parse(n,t)):this.fields=e,this.name=this.fields[0].components[0][0]}get(e){return this.fields[e]}getField(e){if(this.name==="MSH"){if(e===1)return new Se([[this.context.getMsh1()]],this.context);if(e===2)return new Se([[this.context.getMsh2()]],this.context);if(e>2)return this.fields[e-1]}return this.fields[e]}getComponent(e,t,n,i=0){return this.getField(e)?.getComponent(t,n,i)??""}toString(){return this.fields.map(e=>e.toString()).join(this.context.fieldSeparator)}static parse(e,t=new J){return new r(e.split(t.fieldSeparator).map(n=>Se.parse(n,t)),t)}},Se=class r{constructor(e,t=new J){this.context=t,this.components=e}get(e,t,n=0){return this.getComponent(e+1,t,n)}getComponent(e,t,n=0){let i=this.components[n][e-1]??"";return t!==void 0&&(i=i.split(this.context.subcomponentSeparator)[t]??""),i}toString(){return this.components.map(e=>e.join(this.context.componentSeparator)).join(this.context.repetitionSeparator)}static parse(e,t=new J){return new r(e.split(t.repetitionSeparator).map(n=>n.split(t.componentSeparator)),t)}};function hd(r,e){if(!r)return;let t=ae(r.slice(0,4),0),n=ae(r.slice(4,6),1)-1,i=ae(r.slice(6,8),1),o=ae(r.slice(8,10),0),s=ae(r.slice(10,12),0),a=ae(r.slice(12,14),0),c=0;r.includes(".")&&(c=ae(r.slice(15,19),0));let u=new Date(Date.UTC(t,n,i,o,s,a,c)),p=Hs(r,e?.tzOffset);return p!==0&&(u=new Date(u.getTime()-p)),u.toISOString()}function ae(r,e){let t=parseInt(r,10);return isNaN(t)?e:t}function Hs(r,e){let t=e,n=r.indexOf("+");n!==-1&&(t=r.slice(n));let i=r.indexOf("-");if(i!==-1&&(t=r.slice(i)),!t)return 0;let o=t.startsWith("-")?-1:1;t=t.slice(1).replace(":","");let s=parseInt(t.slice(0,2),10),a=parseInt(t.slice(2,4),10);return o*(s*60*60*1e3+a*60*1e3)}function Ws(r){let e=r instanceof Date?r:new Date(r),n=e.toISOString().replace(/[-:T]/g,"").replace(/(\.\d+)?Z$/,""),i=e.getUTCMilliseconds();return i>0&&(n+="."+i.toString()),n}var Rr=(o=>(o[o.NONE=0]="NONE",o[o.ERROR=1]="ERROR",o[o.WARN=2]="WARN",o[o.INFO=3]="INFO",o[o.DEBUG=4]="DEBUG",o))(Rr||{}),li=class{constructor(e,t={},n=3){this.write=e;this.metadata=t;this.level=n}error(e,t){this.log(1,e,t)}warn(e,t){this.log(2,e,t)}info(e,t){this.log(3,e,t)}debug(e,t){this.log(4,e,t)}log(e,t,n){e>this.level||(n instanceof Error&&(n={error:n.toString(),stack:n.stack?.split(`
|
|
43
|
-
`)}),this.write(JSON.stringify({level:
|
|
42
|
+
}`.replace(/\s+/g," "),a=await this.graphql(s);jt(a.data.StructureDefinitionList);for(let c of a.data.SearchParameterList)sr(c)})());return this.setCacheEntry(n,o),o}requestProfileSchema(t,n){if(!n?.expandProfile&&Wr(t))return Promise.resolve([t]);let i=t+"-requestSchema"+(n?.expandProfile?"-nested":""),o=this.getCacheEntry(i,void 0);if(o)return o.value;let s=new k((async()=>{if(n?.expandProfile){let a=this.fhirUrl("StructureDefinition","$expand-profile");a.search=new URLSearchParams({url:t}).toString();let c=await this.post(a.toString(),{});return Tr(c).map(u=>($t(u,u.url),u.url))}else{let a=await this.searchOne("StructureDefinition",{url:t,_sort:"-_lastUpdated"});return a?(jt([a],t),[t]):(console.warn(`No StructureDefinition found for ${t}!`),[])}})());return this.setCacheEntry(i,s),s}readHistory(t,n,i){return this.get(this.fhirUrl(t,n,"_history"),i)}readVersion(t,n,i,o){return this.get(this.fhirUrl(t,n,"_history",i),o)}readPatientEverything(t,n){return this.get(this.fhirUrl("Patient",t,"$everything"),n)}createResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");return this.invalidateSearches(t.resourceType),this.post(this.fhirUrl(t.resourceType),t,void 0,n)}async createResourceIfNoneExist(t,n,i){return await this.searchOne(t.resourceType,n,i)??this.createResource(t,i)}async createAttachment(t,n,i,o,s){let a=await this.createBinary(t,n,i,o,s);return{contentType:i,url:a.url,title:n}}createBinary(t,n,i,o,s){let a=this.fhirUrl("Binary");return n&&a.searchParams.set("_filename",n),o?this.uploadwithProgress(a,t,i,o,s):this.post(a,t,i,s)}uploadwithProgress(t,n,i,o,s){return new Promise((a,c)=>{let u=new XMLHttpRequest,p=()=>u.abort();s?.signal?.addEventListener("abort",p);let g=E=>{s?.signal?.removeEventListener("abort",p),E instanceof Error?c(E):a(E)};u.responseType="json",u.onabort=()=>g(new Error("Request aborted")),u.onerror=()=>g(new Error("Request error")),o&&(u.upload.onprogress=E=>o(E),u.upload.onload=E=>o(E)),u.onload=()=>{u.status>=200&&u.status<300?g(u.response):g(new d(Be(u.response||u.statusText)))},u.open("POST",t),u.withCredentials=!0,u.setRequestHeader("Authorization","Bearer "+this.accessToken),u.setRequestHeader("Cache-Control","no-cache, no-store, max-age=0"),u.setRequestHeader("Content-Type",i),u.setRequestHeader("X-Medplum","extended"),u.send(n)})}async createPdf(t,n,i,o){if(!this.createPdfImpl)throw new Error("PDF creation not enabled");let s=await this.createPdfImpl(t,i,o);return this.createBinary(s,n,"application/pdf")}createComment(t,n,i){let o=this.getProfile(),s,a;return t.resourceType==="Encounter"&&(s=Z(t),a=t.subject),t.resourceType==="ServiceRequest"&&(s=t.encounter,a=t.subject),t.resourceType==="Patient"&&(a=Z(t)),this.createResource({resourceType:"Communication",status:"completed",basedOn:[Z(t)],encounter:s,subject:a,sender:o?Z(o):void 0,sent:new Date().toISOString(),payload:[{contentString:n}]},i)}async updateResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");if(!t.id)throw new Error("Missing id");let i=await this.put(this.fhirUrl(t.resourceType,t.id),t,void 0,n);return i||(i=t),this.cacheResource(i),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),i}patchResource(t,n,i,o){return this.invalidateSearches(t),this.patch(this.fhirUrl(t,n),i,o)}deleteResource(t,n,i){return this.deleteCacheEntry(this.fhirUrl(t,n).toString()),this.invalidateSearches(t),this.delete(this.fhirUrl(t,n),i)}validateResource(t,n){return this.post(this.fhirUrl(t.resourceType,"$validate"),t,void 0,n)}executeBot(t,n,i,o){let s;if(typeof t=="string"){let a=t;s=this.fhirUrl("Bot",a,"$execute")}else{let a=t;s=this.fhirUrl("Bot","$execute"),s.searchParams.set("identifier",a.system+"|"+a.value)}return this.post(s,n,i,o)}executeBatch(t,n){return this.post(this.fhirBaseUrl.slice(0,-1),t,void 0,n)}sendEmail(t,n){return this.post("email/v1/send",t,N.JSON,n)}graphql(t,n,i,o){return this.post(this.fhirUrl("$graphql"),{query:t,operationName:n,variables:i},N.JSON,o)}readResourceGraph(t,n,i,o){return this.get(`${this.fhirUrl(t,n)}/$graph?graph=${i}`,o)}pushToAgent(t,n,i,o,s,a){return this.post(this.fhirUrl("Agent",Ye(t),"$push"),{destination:typeof n=="string"?n:X(n),body:i,contentType:o,waitForResponse:s},N.FHIR_JSON,a)}getActiveLogin(){return this.storage.getObject("activeLogin")}async setActiveLogin(t){(!this.sessionDetails?.profile||X(this.sessionDetails.profile)!==t.profile?.reference)&&this.clearActiveLogin(),this.setAccessToken(t.accessToken,t.refreshToken),this.storage.setObject("activeLogin",t),this.addLogin(t),this.refreshPromise=void 0,await this.refreshProfile()}getAccessToken(){return this.accessToken}setAccessToken(t,n){this.accessToken=t,this.refreshToken=n,this.sessionDetails=void 0,this.accessTokenExpires=jn(t),this.medplumServer=qn(t)}getLogins(){return this.storage.getObject("logins")??[]}addLogin(t){let n=this.getLogins().filter(i=>i.profile?.reference!==t.profile?.reference);n.push(t),this.storage.setObject("logins",n)}async refreshProfile(){return this.medplumServer?(this.profilePromise=new Promise((t,n)=>{this.get("auth/me").then(i=>{this.profilePromise=void 0;let o=this.sessionDetails?.profile?.id!==i.profile.id;this.sessionDetails=i,o&&this.dispatchEvent({type:"change"}),t(i.profile)}).catch(n)}),this.profilePromise):Promise.resolve(void 0)}isLoading(){return!this.isInitialized||!!this.profilePromise}isSuperAdmin(){return!!this.sessionDetails?.project.superAdmin}isProjectAdmin(){return!!this.sessionDetails?.membership.admin}getProject(){return this.sessionDetails?.project}getProjectMembership(){return this.sessionDetails?.membership}getProfile(){return this.sessionDetails?.profile}async getProfileAsync(){return this.profilePromise?this.profilePromise:this.sessionDetails?this.sessionDetails.profile:this.refreshProfile()}getUserConfiguration(){return this.sessionDetails?.config}getAccessPolicy(){return this.sessionDetails?.accessPolicy}async download(t,n={}){this.refreshPromise&&await this.refreshPromise;let i=t.toString();return i.startsWith(Gn)&&(t=this.fhirUrl(i)),this.addFetchOptionsDefaults(n),(await this.fetchWithRetry(t.toString(),n)).blob()}async uploadMedia(t,n,i,o,s){let a=await this.createBinary(t,i,n);return this.createResource({resourceType:"Media",status:"completed",content:{contentType:n,url:Gn+a.id,title:i},...o},s)}async bulkExport(t="",n,i,o){let s=t&&`${t}/`,a=this.fhirUrl(`${s}$export`);return n&&a.searchParams.set("_type",n),i&&a.searchParams.set("_since",i),this.startAsyncRequest(a.toString(),o)}async startAsyncRequest(t,n={}){this.addFetchOptionsDefaults(n);let i=n.headers;return i.Prefer="respond-async",this.request("POST",t,n)}get keyValue(){return this.keyValueClient||(this.keyValueClient=new vt(this)),this.keyValueClient}getCacheEntry(t,n){if(!this.requestCache||n?.cache==="no-cache"||n?.cache==="reload")return;let i=this.requestCache.get(t);if(!(!i||i.requestTime+this.cacheTime<Date.now()))return i}setCacheEntry(t,n){this.requestCache&&this.requestCache.set(t,{requestTime:Date.now(),value:n})}cacheResource(t){t?.id&&!t.meta?.tag?.some(n=>n.code==="SUBSETTED")&&this.setCacheEntry(this.fhirUrl(t.resourceType,t.id).toString(),new k(Promise.resolve(t)))}deleteCacheEntry(t){this.requestCache&&this.requestCache.delete(t)}async request(t,n,i={},o={}){await this.refreshIfExpired(),i.method=t,this.addFetchOptionsDefaults(i);let s=await this.fetchWithRetry(n,i);if(s.status===401)return this.handleUnauthenticated(t,n,i);if(s.status===204||s.status===304)return;let c=s.headers.get("content-type")?.includes("json");if(s.status===404&&!c)throw new d(Dr);let u=await this.parseBody(s,c);if(s.status===200&&i.followRedirectOnOk||s.status===201&&i.followRedirectOnCreated){let p=await Kn(s,u);if(p)return this.request("GET",p,{...i,body:void 0})}if(s.status===202&&i.pollStatusOnAccepted){let g=await Kn(s,u)??o.statusUrl;if(g)return this.pollStatus(g,i,o)}if(s.status>=400)throw new d(Be(u));return u}async parseBody(t,n){let i;if(n)try{i=await t.json()}catch(o){throw console.error("Error parsing response",t.status,o),o}else i=await t.text();return i}async fetchWithRetry(t,n){t.startsWith("http")||(t=new URL(t,this.baseUrl).href);let i=3,o=200,s;for(let a=0;a<i;a++){try{if(this.options.verbose&&this.logRequest(t,n),s=await this.fetch(t,n),this.options.verbose&&this.logResponse(s),s.status<500)return s}catch(c){this.retryCatch(a,i,c)}await nr(o)}return s}logRequest(t,n){if(console.log(`> ${n.method} ${t}`),n.headers){let i=n.headers,o=Object.entries(i).sort((s,a)=>s[0].localeCompare(a[0]));for(let[s,a]of o)console.log(`> ${s}: ${a}`)}}logResponse(t){console.log(`< ${t.status} ${t.statusText}`),t.headers&&t.headers.forEach((n,i)=>console.log(`< ${i}: ${n}`))}async pollStatus(t,n,i){let o={...n,method:"GET",body:void 0,redirect:"follow"};if(i.pollCount===void 0)n.headers&&typeof n.headers=="object"&&"Prefer"in n.headers&&(o.headers={...n.headers},delete o.headers.Prefer),i.statusUrl=t,i.pollCount=1;else{let s=n.pollStatusPeriod??1e3;await nr(s),i.pollCount++}return this.request("GET",t,o,i)}async executeAutoBatch(){let t=[...this.autoBatchQueue];if(this.autoBatchQueue.length=0,this.autoBatchTimerId=void 0,t.length===1){let o=t[0];try{o.resolve(await this.request(o.method,this.fhirBaseUrl+o.url,o.options))}catch(s){o.reject(new d(Be(s)))}return}let n={resourceType:"Bundle",type:"batch",entry:t.map(o=>({request:{method:o.method,url:o.url},resource:o.options.body?JSON.parse(o.options.body):void 0}))},i=await this.post(this.fhirBaseUrl.slice(0,-1),n);for(let o=0;o<t.length;o++){let s=t[o],a=i.entry?.[o];a?.response?.outcome&&!Nt(a.response.outcome)?s.reject(new d(a.response.outcome)):s.resolve(a?.resource)}}addFetchOptionsDefaults(t){let n=t.headers;n||(n={},t.headers=n),n.Accept||(n.Accept=as),n["X-Medplum"]="extended",t.body&&!n["Content-Type"]&&(n["Content-Type"]=N.FHIR_JSON),this.accessToken?n.Authorization="Bearer "+this.accessToken:this.basicAuth&&(n.Authorization="Basic "+this.basicAuth),t.cache||(t.cache="no-cache"),t.credentials||(t.credentials="include")}setRequestContentType(t,n){t.headers||(t.headers={});let i=t.headers;i["Content-Type"]=n}setRequestBody(t,n){typeof n=="string"||typeof Blob<"u"&&(n instanceof Blob||n.constructor.name==="Blob")||typeof File<"u"&&(n instanceof File||n.constructor.name==="File")||typeof Uint8Array<"u"&&(n instanceof Uint8Array||n.constructor.name==="Uint8Array")?t.body=n:n&&(t.body=JSON.stringify(n))}handleUnauthenticated(t,n,i){return this.refresh()?this.request(t,n,i):(this.clearActiveLogin(),this.onUnauthenticated&&this.onUnauthenticated(),Promise.reject(new Error("Unauthenticated")))}async startPkce(){let t=dr();sessionStorage.setItem("pkceState",t);let n=dr();sessionStorage.setItem("codeVerifier",n);let i=await Mn(n),o=mn(i).replaceAll("+","-").replaceAll("/","_").replaceAll("=","");return sessionStorage.setItem("codeChallenge",o),{codeChallengeMethod:"S256",codeChallenge:o}}async requestAuthorization(t){let n=await this.ensureCodeChallenge(t??{}),i=new URL(this.authorizeUrl);i.searchParams.set("response_type","code"),i.searchParams.set("state",sessionStorage.getItem("pkceState")),i.searchParams.set("client_id",n.clientId??this.clientId),i.searchParams.set("redirect_uri",n.redirectUri??Hn()),i.searchParams.set("code_challenge_method",n.codeChallengeMethod),i.searchParams.set("code_challenge",n.codeChallenge),i.searchParams.set("scope",n.scope??"openid profile"),window.location.assign(i.toString())}processCode(t,n){let i=new URLSearchParams;if(i.set("grant_type","authorization_code"),i.set("code",t),i.set("client_id",n?.clientId??this.clientId),i.set("redirect_uri",n?.redirectUri??Hn()),typeof sessionStorage<"u"){let o=sessionStorage.getItem("codeVerifier");o&&i.set("code_verifier",o)}return this.fetchTokens(i)}refreshIfExpired(){return!this.refreshPromise&&this.accessTokenExpires!==void 0&&this.accessTokenExpires<Date.now()&&this.refresh(),this.refreshPromise??Promise.resolve()}refresh(){if(this.refreshPromise)return this.refreshPromise;if(this.refreshToken){let t=new URLSearchParams;return t.set("grant_type","refresh_token"),t.set("client_id",this.clientId),t.set("refresh_token",this.refreshToken),this.refreshPromise=this.fetchTokens(t),this.refreshPromise}if(this.clientId&&this.clientSecret)return this.refreshPromise=this.startClientLogin(this.clientId,this.clientSecret),this.refreshPromise}async startClientLogin(t,n){this.clientId=t,this.clientSecret=n;let i=new URLSearchParams;return i.set("grant_type","client_credentials"),i.set("client_id",t),i.set("client_secret",n),this.fetchTokens(i)}async startJwtBearerLogin(t,n,i){this.clientId=t;let o=new URLSearchParams;return o.set("grant_type","urn:ietf:params:oauth:grant-type:jwt-bearer"),o.set("client_id",t),o.set("assertion",n),o.set("scope",i),this.fetchTokens(o)}async startJwtAssertionLogin(t){let n=new URLSearchParams;return n.append("grant_type","client_credentials"),n.append("client_assertion_type","urn:ietf:params:oauth:client-assertion-type:jwt-bearer"),n.append("client_assertion",t),this.fetchTokens(n)}setBasicAuth(t,n){this.clientId=t,this.clientSecret=n,this.basicAuth=Dn(t+":"+n)}async fhircastSubscribe(t,n){if(!(typeof t=="string"&&t!==""))throw new d(m("Invalid topic provided. Topic must be a valid string."));if(!(typeof n=="object"&&Array.isArray(n)&&n.length>0))throw new d(m("Invalid events provided. Events must be an array of event names containing at least one event."));let i={channelType:"websocket",mode:"subscribe",topic:t,events:n},s=(await this.post("/fhircast/STU3",hr(i),N.FORM_URL_ENCODED))["hub.channel.endpoint"];if(!s)throw new Error("Invalid response!");return i.endpoint=s,i}async fhircastUnsubscribe(t){if(!gt(t))throw new d(m("Invalid topic or subscriptionRequest. SubscriptionRequest must be an object."));if(!(t.endpoint&&typeof t.endpoint=="string"&&t.endpoint.startsWith("ws")))throw new d(m("Provided subscription request must have an endpoint in order to unsubscribe."));t.mode="unsubscribe",await this.post("/fhircast/STU3",hr(t),N.FORM_URL_ENCODED)}fhircastConnect(t){return new yt(t)}async fhircastPublish(t,n,i,o){return _n(n)?this.post(`/fhircast/STU3/${t}`,yr(t,n,i,o),N.JSON):(Un(n),this.post(`/fhircast/STU3/${t}`,yr(t,n,i),N.JSON))}async fhircastGetContext(t){return this.get(`/fhircast/STU3/${t}`)}async invite(t,n){return this.post("admin/projects/"+t+"/invite",n)}async fetchTokens(t){let n={method:"POST",headers:{"Content-Type":N.FORM_URL_ENCODED},body:t.toString(),credentials:"include"},i=n.headers;this.basicAuth&&(i.Authorization=`Basic ${this.basicAuth}`);let o;try{o=await this.fetchWithRetry(this.tokenUrl,n)}catch(a){throw this.refreshPromise=void 0,a}if(!o.ok){this.clearActiveLogin();try{let a=await o.json();throw new d(b(a.error_description))}catch(a){throw new d(b("Failed to fetch tokens"),a)}}let s=await o.json();return await this.verifyTokens(s),this.getProfile()}async verifyTokens(t){let n=t.access_token;if(Bn(n)){let i=xt(n);if(Date.now()>=i.exp*1e3)throw this.clearActiveLogin(),new Error("Token expired");if(i.cid){if(i.cid!==this.clientId)throw this.clearActiveLogin(),new Error("Token was not issued for this audience")}else if(this.clientId&&i.client_id!==this.clientId)throw this.clearActiveLogin(),new Error("Token was not issued for this audience")}return this.setActiveLogin({accessToken:n,refreshToken:t.refresh_token,project:t.project,profile:t.profile})}setupStorageListener(){try{window.addEventListener("storage",t=>{(t.key===null||t.key==="activeLogin")&&window.location.reload()})}catch{}}retryCatch(t,n,i){if(i.message==="Failed to fetch"&&t===1&&this.dispatchEvent({type:"offline"}),t>=n-1)throw i}getSubscriptionManager(){return this.subscriptionManager||(this.subscriptionManager=new Tt(this,gn("/ws/subscriptions-r4",this.baseUrl))),this.subscriptionManager}subscribeToCriteria(t){return this.getSubscriptionManager().addCriteria(t)}unsubscribeFromCriteria(t){this.subscriptionManager&&(this.subscriptionManager.removeCriteria(t),this.subscriptionManager.getCriteriaCount()===0&&this.subscriptionManager.closeWebSocket())}getMasterSubscriptionEmitter(){return this.getSubscriptionManager().getMasterEmitter()}};function ys(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}function Hn(){return typeof window>"u"?"":window.location.protocol+"//"+window.location.host+"/"}function Wn(r){return r.endsWith("/")?r:r+"/"}function Et(r,e){return new URL(e,r).toString()}async function Kn(r,e){let t=r.headers.get("content-location");if(t)return t;let n=r.headers.get("location");if(n)return n;if(ce(e)&&e.issue?.[0]?.diagnostics)return e.issue[0].diagnostics}function Tr(r){let e=r.entry?.map(t=>t.resource)??[];return Object.assign(e,{bundle:r})}var dp={aws_ssm_parameter_store:"aws_ssm_parameter_store"};function Sr({parentContext:r,path:e,elements:t,profileUrl:n,debugMode:i}){if(e===r?.path)return;let o=gs(e,t,r,!!i),s=Object.create(null);for(let[a,c]of Object.entries(o))s[e+"."+a]=c;return{path:e,elements:o,elementsByPath:s,profileUrl:n??r?.profileUrl,debugMode:i??r?.debugMode??!1}}function gs(r,e,t,n){let i=Object.create(null);if(t)for(let[s,a]of Object.entries(t.elementsByPath)){let c=de(r,s);c!==void 0&&(i[c]=a)}let o=!1;if(e)for(let[s,a]of Object.entries(e))s in i||(i[s]=a,o=!0);return n&&console.assert(o,"Unnecessary ElementsContext; not using any newly provided elements"),i}function zn(r){return r.type!==void 0&&r.type.length>0}function xs(r,e,t,n){let i=Re(r,e.path,{profileUrl:n});if(i){let o=t.typeSchema?.elements??t.elements;return i.some(s=>Jt(s,e,t,o))??!1}return console.assert(!1,"getNestedProperty[%s] in isDiscriminatorComponentMatch missed",e.path),!1}function Jn(r,e,t,n){if(r)for(let i of e){let o={value:r,type:i.typeSchema?.name??i.type?.[0].code};if(t.every(s=>xs(o,s,i,i.typeSchema?.url??n)))return i.name}}var ve=class{constructor(e,t,n){if(e.type===void 0)throw new Error("schema must include a type");this.rootSchema=e;let i=Sr({parentContext:void 0,path:this.rootSchema.type,elements:n??this.rootSchema.elements,profileUrl:this.rootSchema.name===this.rootSchema.type?void 0:this.rootSchema.url});if(i===void 0)throw new Error("Could not create root elements context");this.elementsContextStack=[i],this.visitor=t}get elementsContext(){return this.elementsContextStack[this.elementsContextStack.length-1]}crawlElement(e,t,n){this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema);let i=Object.fromEntries(Object.entries(this.elementsContext.elements).filter(([o])=>o.startsWith(t)));this.crawlElementsImpl(i,n),this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlSlice(e,t,n){let i=this.prepareSlices(n.slices,n);if(!G(i.slices))throw new Error(`cannot crawl slice ${t.name} since it has no type information`);this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema),this.sliceAllowList=[t],this.crawlSliceImpl(i.slices[0],t.path,i),this.sliceAllowList=void 0,this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlResource(){this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema),this.crawlElementsImpl(this.rootSchema.elements,this.rootSchema.type),this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlElementsImpl(e,t){let n=vs(e);for(let i of n)this.crawlElementNode(i,t)}crawlElementNode(e,t){let n=t+"."+e.key;this.visitor.onEnterElement&&this.visitor.onEnterElement(n,e.element,this.elementsContext);for(let i of e.children)this.crawlElementNode(i,t);G(e.element?.slicing?.slices)&&this.crawlSlicingImpl(e.element.slicing,n),this.visitor.onExitElement&&this.visitor.onExitElement(n,e.element,this.elementsContext)}prepareSlices(e,t){let n=[];for(let o of e){if(!zn(o))continue;let s=o.type.find(a=>G(a.profile))?.profile?.[0];if(G(s)){let a=Kr(s);a&&(o.typeSchema=a)}n.push(o)}return{...t,slices:n}}crawlSlicingImpl(e,t){let n=this.prepareSlices(e.slices,e);for(let i of n.slices)(this.sliceAllowList===void 0||this.sliceAllowList.includes(i))&&this.crawlSliceImpl(i,t,n)}crawlSliceImpl(e,t,n){let i=e.typeSchema;i&&this.visitor.onEnterSchema&&this.visitor.onEnterSchema(i),this.visitor.onEnterSlice&&this.visitor.onEnterSlice(t,e,n);let o,s=i?.elements??e.elements;G(s)&&(o=Sr({path:t,parentContext:this.elementsContext,elements:s})),o&&this.elementsContextStack.push(o),this.crawlElementsImpl(s,t),o&&this.elementsContextStack.pop(),this.visitor.onExitSlice&&this.visitor.onExitSlice(t,e,n),i&&this.visitor.onExitSchema&&this.visitor.onExitSchema(i)}};function vs(r){let e=[];function t(o,s){return s.startsWith(o+".")}function n(o,s){for(let a of o.children)if(t(a.key,s.key)){n(a,s);return}o.children.push(s)}let i=Object.entries(r);i.sort((o,s)=>o[0].localeCompare(s[0]));for(let[o,s]of i){let a={key:o,element:s,children:[]},c=!1;for(let u of e)if(t(u.key,o)){n(u,a),c=!0;break}c||e.push(a)}return e}var bt="__sliceName";function Fp(r,e){let t=new De(r,r.resourceType,"resource");return new ve(e,t).crawlResource(),t.getDefaultValue()}function _p(r,e,t){for(let[n,i]of Object.entries(e)){if(t===void 0||t===n){Pt(r,n,i,e);continue}let o=de(t,n);o!==void 0&&Pt(r,o,i,e)}return r}function Up(r,e,t,n,i){let o=r??Object.create(null),[s,a]=Ss(e,"."),c=Object.create(null);Rt(c,o,a,t);let u=new De(c,s,"element");new ve(i,u,n).crawlElement(t,a,s);let g=u.getDefaultValue();return Ct(g,a,t,n)}function Lp(r,e,t,n){let i=new De([{[bt]:e.name}],e.path,"element");return new ve(n,i).crawlSlice(r,e,t),i.getDefaultValue()[0]}var De=class{constructor(e,t,n){this.schemaStack=[],this.valueStack=[],this.rootValue=ee(e),this.valueStack.splice(0,this.valueStack.length,{type:n,path:t,values:[this.rootValue]})}get schema(){return this.schemaStack[this.schemaStack.length-1]}get value(){return this.valueStack[this.valueStack.length-1]}onEnterSchema(e){this.schemaStack.push(e)}onExitSchema(){this.schemaStack.pop()}onEnterElement(e,t,n){let i=this.value.values,o=this.value.path,s=de(o,e);if(s===void 0)throw new Error(`Expected ${e} to be prefixed by ${o}`);let a=[];for(let c of i){if(c===void 0)continue;let u=Array.isArray(c)?c:[c];for(let p of u){Ts(p,s,t,n.elements),Pt(p,s,t,n.elements);let g=Ct(p,s,t,n.elements);g!==void 0&&a.push(g)}}this.valueStack.push({type:"element",path:e,values:a})}onExitElement(e,t,n){if(!this.valueStack.pop())throw new Error("Expected value context to exist when exiting element");let o=de(this.value.path,e);if(o===void 0)throw new Error(`Expected ${e} to be prefixed by ${this.value.path}`);for(let s of this.value.values){let a=Ct(s,o,t,n.elements);if(Array.isArray(a))for(let c=a.length-1;c>=0;c--){let u=a[c];G(u)||a.splice(c,1)}T(a)&&Rt(s,void 0,o,t)}}onEnterSlice(e,t,n){let i=this.value.values,o=[];for(let s of i){if(s===void 0)continue;if(!Array.isArray(s))throw new Error("Expected array value for sliced element");let a=this.getMatchingSliceValues(s,t,n);o.push(a)}this.valueStack.push({type:"slice",path:e,values:o})}getMatchingSliceValues(e,t,n){let i=[];for(let o of e)(o[bt]??Jn(o,[t],n.discriminator,this.schema.url))===t.name&&i.push(o);for(let o=i.length;o<t.min;o++)if(rr(t.type[0].code)){let s=Object.create(null);i.push(s),e.push(s)}return i}onExitSlice(){let e=this.valueStack.pop();if(!e)throw new Error("Expected value context to exist in onExitSlice");for(let t of e.values)for(let n=t.length-1;n>=0;n--){let i=t[n];bt in i&&delete i[bt]}}getDefaultValue(){return this.rootValue}};function Ts(r,e,t,n){let i=Ct(r,e,t,n);t.min>0&&i===void 0&&rr(t.type[0].code)&&(t.isArray?Rt(r,[Object.create(null)],e,t):Rt(r,Object.create(null),e,t))}function Rt(r,e,t,n){if(t.includes("."))throw new Error("key cannot be nested");let i=t;if(t.includes("[x]")){let o=n.type[0].code;i=t.replace("[x]",C(o))}e===void 0?delete r[i]:r[i]=e}function Ct(r,e,t,n){let i=e.split("."),o=r,s;for(let a=0;a<i.length;a++){let c=i[a];if(c.includes("[x]")){let p=n[i.slice(0,a+1).join(".")].type[0].code;c=c.replace("[x]",C(p))}if(a===i.length-1){Array.isArray(o)?s=o.map(u=>u[c]):s=o[c];continue}if(Array.isArray(o))o=o.map(u=>u[c]);else if(w(o)){if(o[c]===void 0)return;o=o[c]}else return}return s}function Pt(r,e,t,n){if(!(t.fixed||t.pattern))return r;if(Array.isArray(r))return r.map(a=>Pt(a,e,t,n));r==null&&(r=Object.create(null));let i=r,o=e.split("."),s=i;for(let a=0;a<o.length;a++){let c=o[a];if(c.includes("[x]")){let p=n[o.slice(0,a+1).join(".")].type[0].code;c=c.replace("[x]",C(p))}if(a===o.length-1){let u=Array.isArray(s)?s:[s];for(let p of u)t.fixed?p[c]??=t.fixed.value:t.pattern&&(p[c]=Yn(p[c],t.pattern.value))}else{if(!(c in s)){let u=o.slice(0,a+1).join(".");s[c]=n[u].isArray?[Object.create(null)]:Object.create(null)}s=s[c]}}return i}function Yn(r,e){if(Array.isArray(e)&&(Array.isArray(r)||r===void 0))return(r?.length??0)>0?r:ee(e);if(w(e)&&(w(r)&&!Array.isArray(r)||r===void 0)){let t=ee(r)??Object.create(null);for(let n of Object.keys(e))t[n]=Yn(t[n],e[n]);return t}return r}function Ss(r,e){let t=r.lastIndexOf(e);if(t===-1)return["",r];let n=r.substring(0,t),i=r.substring(t+e.length);return[n,i]}function Zn(r,e){if(!r.group)throw new d(b("ConceptMap does not specify a mapping group","ConceptMap.group"));let t=Es(e);if(ce(t))throw new d(t);let n=Rs(t,e.targetsystem?r.group.filter(o=>o.target===e.targetsystem):r.group),i=n.length>0;return{result:i,match:i?n:void 0}}function Es(r){return r.code&&!r.coding&&!r.codeableConcept?r.system===void 0?b("Missing required 'system' input parameter with 'code' parameter"):{[r.system]:[r.code]}:r.coding&&!r.code&&!r.codeableConcept?{[r.coding.system??""]:[r.coding.code??""]}:r.codeableConcept&&!r.code&&!r.coding?bs(r.codeableConcept):r.code||r.coding||r.codeableConcept?b("Ambiguous input: multiple source codings provided"):b("No source provided: 'code'+'system', 'coding', or 'codeableConcept' input parameter is required")}function bs(r){let e=Object.create(null);if(!r.coding?.length)return e;for(let{system:t,code:n}of r.coding){if(!n)continue;let i=t??"";e[i]=e[i]?[...e[i],n]:[n]}return e}function Rs(r,e){let t=[];for(let[n,i]of Object.entries(r))for(let o of e.filter(s=>(s.source??"")===n)){let s=o.element?.filter(a=>i.includes(a.code)).flatMap(a=>a.target?.map(c=>({equivalence:c.equivalence,concept:{system:o.target,code:c.code,display:c.display}}))??[]);s?.length||(s=Cs(i,o)),s&&t.push(...s)}return t}function Cs(r,e){switch(e.unmapped?.mode){case"provided":return r.map(t=>({equivalence:"equal",concept:{system:e.target,code:t}}));case"fixed":return[{equivalence:"equivalent",concept:{system:e.target,code:e.unmapped.code,display:e.unmapped.display}}];default:return}}var Ps=[...we,"->","<<",">>","=="];function Xn(r){return new K(r,Pe,Ps).tokenize()}var ws={"-":"disjoint","==":"equal"},Er=class{constructor(e){this.parser=e;this.structureMap={resourceType:"StructureMap",status:"active"}}parse(){for(;this.parser.hasMore();){let e=this.parser.peek()?.value;switch(e){case"map":this.parseMap();break;case"uses":this.parseUses();break;case"imports":this.parseImport();break;case"group":this.parseGroup();break;case"conceptmap":this.parseConceptMap();break;default:throw new Error(`Unexpected token: ${e}`)}}return this.structureMap}parseMap(){this.parser.consume("Symbol","map"),this.structureMap.url=this.parser.consume("String").value,this.parser.consume("="),this.structureMap.name=this.parser.consume().value}parseUses(){this.parser.consume("Symbol","uses");let e={};e.url=this.parser.consume("String").value,this.parser.peek()?.value==="alias"&&(this.parser.consume("Symbol","alias"),e.alias=this.parser.consume("Symbol").value),this.parser.consume("Symbol","as"),e.mode=this.parser.consume().value,this.structureMap.structure||(this.structureMap.structure=[]),this.structureMap.structure.push(e)}parseImport(){this.parser.consume("Symbol","imports"),this.structureMap.import||(this.structureMap.import=[]),this.structureMap.import.push(this.parser.consume("String").value)}parseGroup(){let e={};this.parser.consume("Symbol","group"),e.name=this.parser.consume("Symbol").value,e.input=this.parseParameters(),this.parser.peek()?.value==="extends"&&(this.parser.consume("Symbol","extends"),e.extends=this.parser.consume("Symbol").value),this.parser.peek()?.value==="<<"?(this.parser.consume("<<"),e.typeMode=this.parser.consume().value,this.parser.peek()?.value==="+"&&(this.parser.consume("+"),e.typeMode="type-and-types"),this.parser.consume(">>")):e.typeMode="none",e.rule=this.parseRules(),this.structureMap.group||(this.structureMap.group=[]),this.structureMap.group.push(e)}parseParameters(){let e=[];for(this.parser.consume("(");this.parser.hasMore()&&this.parser.peek()?.value!==")";)e.push(this.parseParameter()),this.parser.peek()?.value===","&&this.parser.consume(",");return this.parser.consume(")"),e}parseParameter(){let e={};return e.mode=this.parser.consume().value,e.name=this.parser.consume("Symbol").value,this.parser.peek()?.value===":"&&(this.parser.consume(":"),e.type=this.parser.consume("Symbol").value),e}parseRules(){let e=[];for(this.parser.consume("{");this.parser.hasMore()&&this.parser.peek()?.value!=="}";)e.push(this.parseRule());return this.parser.consume("}"),e}parseRule(){let e={source:this.parseRuleSources()};return this.parser.peek()?.value==="->"&&(this.parser.consume("->"),e.target=this.parseRuleTargets()),this.parser.peek()?.value==="then"&&(this.parser.consume("Symbol","then"),this.parser.peek()?.id==="{"?e.rule=this.parseRules():e.dependent=this.parseRuleDependents()),this.parser.peek()?.id==="String"?e.name=this.parser.consume().value:e.name=e.source?.[0]?.element,this.parser.consume(";"),e}parseRuleSources(){this.parser.hasMore()&&this.parser.peek()?.value==="for"&&this.parser.consume("Symbol","for");let e=[this.parseRuleSource()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleSource());return e}parseRuleSource(){let e={},n=this.parseRuleContext().split(".");if(e.context=n[0],e.element=n[1],this.parser.hasMore()&&this.parser.peek()?.value===":"&&(this.parser.consume(":"),e.type=this.parser.consume().value),this.parser.hasMore()&&this.parser.peek()?.value==="default"&&(this.parser.consume("Symbol","default"),e.defaultValueString=this.parser.consume("String").value),(this.parser.peek()?.value==="first"||this.parser.peek()?.value==="not_first"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="not_last"||this.parser.peek()?.value==="only_one")&&(e.listMode=this.parser.consume().value),this.parser.peek()?.value==="as"&&(this.parser.consume("Symbol","as"),e.variable=this.parser.consume().value),this.parser.peek()?.value==="log"&&(this.parser.consume("Symbol","log"),e.logMessage=this.parser.consume().value),this.parser.peek()?.value==="where"){this.parser.consume("Symbol","where");let i=this.parser.consumeAndParse(h.Arrow);e.condition=i.toString()}if(this.parser.peek()?.value==="check"){this.parser.consume("Symbol","check");let i=this.parser.consumeAndParse(h.Arrow);e.check=i.toString()}return e}parseRuleTargets(){let e=[this.parseRuleTarget()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleTarget());return e}parseRuleTarget(){let e={},n=this.parseRuleContext().split(".");return e.contextType="variable",e.context=n[0],e.element=n[1],this.parser.peek()?.value==="="&&(this.parser.consume("="),this.parseRuleTargetTransform(e)),this.parser.peek()?.value==="as"&&(this.parser.consume("Symbol","as"),e.variable=this.parser.consume().value),this.parser.peek()?.value==="share"&&(this.parser.consume("Symbol","share"),e.listMode=["share"],this.parser.consume("Symbol")),(this.parser.peek()?.value==="first"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="collate")&&(e.listMode=[this.parser.consume().value]),e}parseRuleTargetTransform(e){let t=this.parser.consumeAndParse(h.As);t instanceof Q?(e.transform=t.name,e.parameter=t.args?.map(ei)):t instanceof M||t instanceof j?(e.transform="copy",e.parameter=[ei(t)]):(e.transform="evaluate",e.parameter=[{valueString:t.toString()}])}parseRuleContext(){let e=this.parser.consume().value;for(;this.parser.peek()?.value===".";)this.parser.consume("."),e+="."+this.parser.consume().value;return e}parseRuleDependents(){let e=this.parser.consumeAndParse(h.Arrow);return[{name:e.name,variable:e.args.map(t=>t.name)}]}parseConceptMap(){this.parser.consume("Symbol","conceptmap");let e={resourceType:"ConceptMap",status:"active"};e.url=this.parser.consume("String").value,this.parser.consume("{");let t={},n=this.parser.peek()?.value;for(;n!=="}";)n==="prefix"?this.parseConceptMapPrefix(t):this.parseConceptMapRule(e,t),n=this.parser.peek()?.value;this.parser.consume("}"),this.structureMap.contained||(this.structureMap.contained=[]),this.structureMap.contained.push(e)}parseConceptMapPrefix(e){this.parser.consume("Symbol","prefix");let t=this.parser.consume().value;this.parser.consume("=");let n=this.parser.consume().value;e[t]=n}parseConceptMapRule(e,t){let n=this.parser.consume().value,i=t[n];this.parser.consume(":");let o=this.parser.consume().value,s=ws[this.parser.consume().value],a=this.parser.consume().value,c=t[a];this.parser.consume(":");let u=this.parser.consume().value,p=e?.group?.find(g=>g.source===i&&g.target===c);p||(p={source:i,target:c,element:[]},e.group||(e.group=[]),e.group.push(p)),p.element||(p.element=[]),p.element.push({code:o,target:[{code:u,equivalence:s}]})}};function ei(r){if(r instanceof j)return{valueId:r.name};if(r instanceof M)return As(r);throw new Error(`Unknown parameter atom type: ${r.constructor.name} (${r.toString()})`)}function As(r){switch(r.value.type){case"boolean":return{valueBoolean:r.value.value};case"decimal":return{valueDecimal:r.value.value};case"integer":return{valueInteger:r.value.value};case"dateTime":case"string":return{valueString:r.value.value};default:throw new Error("Unknown target literal type: "+r.value.type)}}var Os=Ae().registerInfix("->",{precedence:h.Arrow}).registerInfix(";",{precedence:h.Semicolon});function Jp(r){let e=Os.construct(Xn(r));return e.removeComments(),new Er(e).parse()}function nd(r,e,t){return Is({root:r,loader:t},r,e)}function Is(r,e,t){return ks(r,e),ni(r,e),ii(r,e.group[0],t)}function ks(r,e){if(r.loader&&e.import)for(let t of e.import){let n=r.loader(t);for(let i of n)ni(r,i)}}function ni(r,e){if(e.group)for(let t of e.group)br(r,t.name,{type:"StructureMapGroup",value:t})}function ii(r,e,t){let n=[],i=[];for(let u of e.input)u.mode==="source"&&n.push(u),u.mode==="target"&&i.push(u);if(n.length===0)throw new Error("Missing source definitions");if(i.length===0)throw new Error("Missing target definitions");if(t.length<n.length)throw new Error(`Not enough arguments (got ${t.length}, min ${n.length})`);if(t.length>n.length+i.length)throw new Error(`Too many arguments (got ${t.length}, max ${n.length+i.length})`);let o={},s=[],a=0;for(let u of n)Me(o,u.name,t[a++]);for(let u of i){let p=t[a++]??y({});Me(o,u.name,p),s.push(p)}let c={root:r.root,parent:r,variables:o};if(e.rule)for(let u of e.rule)oi(c,u);return s}function oi(r,e){e.source&&si(r,e,0)}function si(r,e,t){let n=e.source[t];for(let i of Ds(r,n))n.variable&&br(r,n.variable,i),t<e.source.length-1?si(r,e,t+1):Vs(r,e)}function Vs(r,e){if(e.target)for(let t of e.target)Ns(r,t);if(e.rule)for(let t of e.rule)oi(r,t);if(e.dependent)for(let t of e.dependent)$s(r,t)}function Ds(r,e){let t=Te(r,e.context);if(!t)return[];let n=e.element;if(!n)return[t];let i=$(n,[t]);if(!i||i.length===0)return[];if(e.condition&&!ti(t,{[e.variable]:i[0]},e.condition))return[];if(e.check&&!ti(t,{[e.variable]:i[0]},e.check))throw new Error("Check failed: "+e.check);return e.listMode&&(i=Ms(e,i)),i}function ti(r,e,t){return F($(t,[r],e))}function Ms(r,e){switch(r.listMode){case"first":return[e[0]];case"not_first":return e.slice(1);case"last":return[e[e.length-1]];case"not_last":return e.slice(0,e.length-1);case"only_one":if(e.length!==1)throw new Error("Expected only one value");break}return e}function Ns(r,e){let t=Te(r,e.context);if(!t)throw new Error("Target not found: "+e.context);let n=t.value[e.element],i,o=Fs(t,e.element)||Array.isArray(n);if(!e.transform)o||n===void 0?i=[y({})]:i=[y(n)];else switch(e.transform){case"append":i=_s(r,e);break;case"copy":i=Us(r,e);break;case"create":i=Ls(r,e);break;case"evaluate":i=Bs(r,e);break;case"translate":i=qs(r,e);break;case"truncate":i=js(r,e);break;case"uuid":i=[{type:"string",value:oe()}];break;default:throw new Error(`Unsupported transform: ${e.transform}`)}if(i.length!==0){if(o){n||(n=[],Me(t.value,e.element,n));for(let s of i)n.push(s.value)}else Me(t.value,e.element,i[0].value);e.variable&&br(r,e.variable,Gs(i))}}function Fs(r,e){return be(r.type)?.elements?.[e]?.isArray}function _s(r,e){let t=z(r,e.parameter?.[0])?.[0]?.value,n=z(r,e.parameter?.[1])?.[0]?.value;return[{type:"string",value:(t??"").toString()+(n??"").toString()}]}function Us(r,e){return e.parameter.flatMap(t=>z(r,t))}function Ls(r,e){let t={};return e.parameter&&e.parameter.length>0&&(t.resourceType=z(r,e.parameter?.[0])?.[0]?.value),[y(t)]}function Bs(r,e){let n=z(r,e.parameter?.[0])[0].value;return $(n,[],ai(r))}function qs(r,e){let t=e.parameter.flatMap(a=>z(r,a)),n=t[0].value,i=t[1].value,o=r.root.contained?.find(a=>a.resourceType==="ConceptMap"&&a.url===i),s=Zn(o,{system:o.group?.[0]?.source,code:n});return[y(s.match?.[0]?.concept?.code)]}function js(r,e){let t=z(r,e.parameter?.[0])?.[0],n=z(r,e.parameter?.[1])?.[0]?.value;return t.type==="string"?[{type:"string",value:t.value.substring(0,n)}]:[t]}function $s(r,e){let t=Te(r,e.name);if(!t)throw new Error("Dependent group not found: "+e.name);let n=e.variable,i=[];for(let s of n){let a=Te(r,s);if(!a)throw new Error("Dependent variable not found: "+s);i.push(a)}let o={root:r.root,parent:r,variables:{}};ii(o,t.value,i)}function z(r,e){let n=P({type:"StructureMapGroupRuleTargetParameter",value:e},"value");if(!n)throw new Error("Missing target parameter: "+JSON.stringify(e));if(n=ri(n),n.length===1&&n[0].type==="id"){let i=Te(r,n[0].value);if(!i)throw new Error("Variable not found: "+n[0].value);return ri(i)}return n}function Te(r,e){let t=r.variables?.[e];if(t)return t;if(r.parent)return Te(r.parent,e)}function ai(r,e={}){if(r.parent&&ai(r.parent,e),r.variables)for(let[t,n]of Object.entries(r.variables))e[t]=n,e["%"+t]=n;return e}function br(r,e,t){r.variables||(r.variables={}),Me(r.variables,e,t)}function Me(r,e,t){if(e==="__proto__"||e==="constructor"||e==="prototype")throw new Error("Invalid key: "+e);r[e]=t}function ri(r){return Array.isArray(r)?r:[r]}function Gs(r){return r.length===1?r[0]:r}var Qs=[...we,"eq","ne","co"];function ci(r){return new K(r,Pe,Qs,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var wt=class{constructor(e,t,n){this.path=e;this.operator=t;this.value=n}},At=class{constructor(e){this.child=e}},Ot=class{constructor(e,t,n){this.keyword=e;this.left=t;this.right=n}};var Hs={eq:"eq",ne:"ne",co:"contains",sw:void 0,ew:void 0,gt:"gt",lt:"lt",ge:"ge",le:"le",ap:"ap",sa:"sa",eb:"eb",pr:"missing",po:void 0,ss:void 0,sb:void 0,in:"in",ni:"not-in",re:"eq",identifier:"identifier"};function Ws(r){let e=Hs[r];if(!e)throw new d(b("Invalid operator: "+r));return e}var Rr=class{constructor(e){this.parser=e}parse(){let e;this.parser.peek()?.value==="("?(this.parser.consume("("),e=this.parse(),this.parser.consume(")")):this.parser.peek()?.value==="not"?(this.parser.consume("Symbol","not"),this.parser.consume("("),e=new At(this.parse()),this.parser.consume(")")):e=new wt(this.parser.consume("Symbol").value,Ws(this.parser.consume("Symbol").value),this.parser.consume().value);let t=this.parser.peek()?.value;return t==="and"||t==="or"?(this.parser.consume("Symbol",t),new Ot(t,e,this.parse())):e}},Ks=Ae();function hd(r){let e=Ks.construct(ci(r));return e.removeComments(),new Rr(e).parse()}var J=class{constructor(e="\r",t="|",n="^",i="~",o="\\",s="&"){this.segmentSeparator=e;this.fieldSeparator=t;this.componentSeparator=n;this.repetitionSeparator=i;this.escapeCharacter=o;this.subcomponentSeparator=s}getMsh1(){return this.fieldSeparator}getMsh2(){return this.componentSeparator+this.repetitionSeparator+this.escapeCharacter+this.subcomponentSeparator}},ui=class r{constructor(e,t=new J){this.context=t,this.segments=e}get header(){return this.segments[0]}get(e){return this.getSegment(e)}getAll(e){return this.getAllSegments(e)}getSegment(e){return typeof e=="number"?this.segments[e]:this.segments.find(t=>t.name===e)}getAllSegments(e){return this.segments.filter(t=>t.name===e)}toString(){return this.segments.map(e=>e.toString()).join(this.context.segmentSeparator)}buildAck(){let e=new Date,t=this.getSegment("MSH"),n=t?.getField(3)?.toString()??"",i=t?.getField(4)?.toString()??"",o=t?.getField(5)?.toString()??"",s=t?.getField(6)?.toString()??"",a=t?.getField(10)?.toString()??"",c=t?.getField(12)?.toString()??"2.5.1";return new r([new Ne(["MSH",this.context.getMsh2(),o,s,n,i,Js(e),"",this.buildAckMessageType(t),e.getTime().toString(),"P",c],this.context),new Ne(["MSA","AA",a,"OK"],this.context)])}buildAckMessageType(e){let t=e?.getField(9),n=t?.getComponent(2),i=t?.getComponent(3),o="ACK";return n&&i?o=`ACK^${n}^ACK`:n&&(o=`ACK^${n}`),o}static parse(e){if(!e.startsWith("MSH")){let n=new Error("Invalid HL7 message");throw n.type="entity.parse.failed",n}let t=new J("\r",e.charAt(3),e.charAt(4),e.charAt(5),e.charAt(6),e.charAt(7));return new r(e.split(/[\r\n]+/).map(n=>Ne.parse(n,t)),t)}},Ne=class r{constructor(e,t=new J){this.context=t,pn(e)?this.fields=e.map(n=>Se.parse(n,t)):this.fields=e,this.name=this.fields[0].components[0][0]}get(e){return this.fields[e]}getField(e){if(this.name==="MSH"){if(e===1)return new Se([[this.context.getMsh1()]],this.context);if(e===2)return new Se([[this.context.getMsh2()]],this.context);if(e>2)return this.fields[e-1]}return this.fields[e]}getComponent(e,t,n,i=0){return this.getField(e)?.getComponent(t,n,i)??""}toString(){return this.fields.map(e=>e.toString()).join(this.context.fieldSeparator)}static parse(e,t=new J){return new r(e.split(t.fieldSeparator).map(n=>Se.parse(n,t)),t)}},Se=class r{constructor(e,t=new J){this.context=t,this.components=e}get(e,t,n=0){return this.getComponent(e+1,t,n)}getComponent(e,t,n=0){let i=this.components[n][e-1]??"";return t!==void 0&&(i=i.split(this.context.subcomponentSeparator)[t]??""),i}toString(){return this.components.map(e=>e.join(this.context.componentSeparator)).join(this.context.repetitionSeparator)}static parse(e,t=new J){return new r(e.split(t.repetitionSeparator).map(n=>n.split(t.componentSeparator)),t)}};function xd(r,e){if(!r)return;let t=ae(r.slice(0,4),0),n=ae(r.slice(4,6),1)-1,i=ae(r.slice(6,8),1),o=ae(r.slice(8,10),0),s=ae(r.slice(10,12),0),a=ae(r.slice(12,14),0),c=0;r.includes(".")&&(c=ae(r.slice(15,19),0));let u=new Date(Date.UTC(t,n,i,o,s,a,c)),p=zs(r,e?.tzOffset);return p!==0&&(u=new Date(u.getTime()-p)),u.toISOString()}function ae(r,e){let t=parseInt(r,10);return isNaN(t)?e:t}function zs(r,e){let t=e,n=r.indexOf("+");n!==-1&&(t=r.slice(n));let i=r.indexOf("-");if(i!==-1&&(t=r.slice(i)),!t)return 0;let o=t.startsWith("-")?-1:1;t=t.slice(1).replace(":","");let s=parseInt(t.slice(0,2),10),a=parseInt(t.slice(2,4),10);return o*(s*60*60*1e3+a*60*1e3)}function Js(r){let e=r instanceof Date?r:new Date(r),n=e.toISOString().replace(/[-:T]/g,"").replace(/(\.\d+)?Z$/,""),i=e.getUTCMilliseconds();return i>0&&(n+="."+i.toString()),n}var Cr=(o=>(o[o.NONE=0]="NONE",o[o.ERROR=1]="ERROR",o[o.WARN=2]="WARN",o[o.INFO=3]="INFO",o[o.DEBUG=4]="DEBUG",o))(Cr||{}),li=class{constructor(e,t={},n=3){this.write=e;this.metadata=t;this.level=n}error(e,t){this.log(1,e,t)}warn(e,t){this.log(2,e,t)}info(e,t){this.log(3,e,t)}debug(e,t){this.log(4,e,t)}log(e,t,n){e>this.level||(n instanceof Error&&(n={error:n.toString(),stack:n.stack?.split(`
|
|
43
|
+
`)}),this.write(JSON.stringify({level:Cr[e],timestamp:new Date().toISOString(),msg:t,...n,...this.metadata})))}};function Td(r){let e=Cr[r.toUpperCase()];if(e===void 0)throw new Error(`Invalid log level: ${r}`);return e}function Rd(r){if(!r)throw new d(m("Resource type is null"));if(!Hr(r))throw new d(m("Unknown resource type"))}function pi(r,e,t){r===null?t.push(x(e,"Invalid null value")):Array.isArray(r)?Ys(r,e,t):typeof r=="object"&&Zs(r,e,t)}function Ys(r,e,t){for(let n=0;n<r.length;n++)r[n]===void 0?t.push(x(`${e}[${n}]`,"Invalid undefined value")):pi(r[n],`${e}[${n}]`,t)}function Zs(r,e,t){for(let[n,i]of Object.entries(r))pi(i,`${e}${e?".":""}${n}`,t)}function Pd(r){let e=[];return new Promise((t,n)=>{r.on("data",i=>e.push(Buffer.from(i))),r.on("error",i=>{r.destroy(),n(i)}),r.on("end",()=>{t(Buffer.concat(e))}),r.on("close",()=>{r.destroy()})})}export{Qo as AccessPolicyInteraction,lt as AndAtom,I as ArithemticOperatorAtom,re as AsAtom,R as BooleanInfixOperatorAtom,na as CPT,ke as ClientStorage,nt as ConcatAtom,it as ContainsAtom,N as ContentType,as as DEFAULT_ACCEPT,Ku as DEFAULT_SEARCH_COUNT,W as DotAtom,tt as EmptySetAtom,st as EqualsAtom,ct as EquivalentAtom,Ie as EventTarget,dp as ExternalSecretSystems,fr as FHIRCAST_EVENT_NAMES,ts as FHIRCAST_EVENT_RESOURCES,mr as FHIRCAST_EVENT_VERSION_REQUIRED,es as FHIRCAST_RESOURCE_TYPES,wt as FhirFilterComparison,Ot as FhirFilterConnective,At as FhirFilterNegation,et as FhirPathAtom,yt as FhircastConnection,Q as FunctionAtom,wr as HTTP_HL7_ORG,J as Hl7Context,Se as Hl7Field,ui as Hl7Message,Ne as Hl7Segment,ia as ICD10,ft as ImpliesAtom,ot as InAtom,ie as IndexerAtom,H as InfixOperatorAtom,ne as IsAtom,ea as LOINC,ht as LRUCache,M as LiteralAtom,Cr as LogLevel,li as Logger,lp as MEDPLUM_VERSION,St as MedplumClient,vt as MedplumKeyValueClient,gr as MemoryStorage,$n as MockAsyncClientStorage,at as NotEqualsAtom,ut as NotEquivalentAtom,hs as OAuthClientAssertionType,ds as OAuthGrantType,ms as OAuthTokenAuthMethod,fs as OAuthTokenType,d as OperationOutcomeError,bo as Operator,h as OperatorPrecedence,pt as OrAtom,It as Parser,_e as ParserBuilder,Fe as PrefixOperatorAtom,l as PropertyType,ra as RXNORM,k as ReadablePromise,xr as RobustWebSocket,ta as SNOMED,En as SearchParameterType,Ve as SubscriptionEmitter,Tt as SubscriptionManager,j as SymbolAtom,K as Tokenizer,se as TypedEventTarget,Pr as UCUM,rt as UnaryOperatorAtom,ye as UnionAtom,dt as XorAtom,ma as accepted,sa as allOk,fe as append,_p as applyDefaultValuesToElement,Up as applyDefaultValuesToElementWithVisitor,Fp as applyDefaultValuesToResource,Pt as applyFixedOrPatternValue,mn as arrayBufferToBase64,fn as arrayBufferToHex,je as arrayify,Un as assertContextVersionOptional,Sa as assertOk,b as badRequest,f as booleanToTypedValue,Sr as buildElementsContext,io as buildTypeName,Ze as calculateAge,Tc as calculateAgeString,al as canReadResourceType,cl as canWriteResource,Wo as canWriteResourceType,C as capitalize,pi as checkForNull,ba as compressElement,Et as concatUrls,Zn as conceptMapTranslate,ha as conflict,gl as convertContainedResourcesToBundle,zo as convertToTransactionBundle,Wt as crawlResource,Fr as createConstraintIssue,yr as createFhircastMessagePayload,ue as createOperationOutcomeIssue,_r as createProcessingIssue,Z as createReference,x as createStructureIssue,aa as created,Vn as decodeBase64,ee as deepClone,Ge as deepEquals,Qe as deepIncludes,Dn as encodeBase64,Mn as encryptSHA256,ge as evalFhirPath,$ as evalFhirPathTyped,Zt as fhirPathArrayEquals,Xt as fhirPathArrayEquivalent,rn as fhirPathEquals,Ai as fhirPathEquivalent,Ke as fhirPathIs,Yt as fhirPathNot,zr as fhirTypeToJsType,Ac as findObservationInterval,Oc as findObservationReferenceRange,Mc as findResourceByCode,la as forbidden,Lc as formatAddress,Je as formatCodeableConcept,eo as formatCoding,jc as formatDate,ir as formatDateTime,qc as formatFamilyName,Bc as formatGivenName,Js as formatHl7DateTime,Xe as formatHumanName,Hc as formatMoney,to as formatObservationValue,$c as formatPeriod,te as formatQuantity,Qc as formatRange,Xu as formatSearchQuery,zi as formatTime,Gc as formatTiming,oe as generateId,Gr as getAllDataTypes,Ec as getAllQuestionnaireAnswers,tr as getCodeBySystem,pe as getDataType,vc as getDateProperty,Lp as getDefaultValuesForNewSliceEntry,ki as getDisplayString,ze as getElementDefinition,co as getElementDefinitionFromElements,Lt as getElementDefinitionTypeName,qu as getExpressionForResourceType,Cn as getExpressionsForResourceType,Gt as getExtension,Cc as getExtensionValue,bc as getIdentifier,xc as getImageSrc,Re as getNestedProperty,de as getPathDifference,nu as getPathDisplayName,oo as getPropertyDisplayName,Sc as getQuestionnaireAnswers,dr as getRandomString,X as getReferenceString,eu as getResourceTypes,ru as getSearchParameter,bn as getSearchParameterDetails,tu as getSearchParameters,Ta as getStatus,P as getTypedPropertyValue,Pi as getTypedPropertyValueWithSchema,Jn as getValueSliceName,gn as getWebSocketUrl,V as globalSchema,pa as gone,sr as indexSearchParameter,Xc as indexSearchParameterBundle,jt as indexStructureDefinitionBundle,Ur as inflateBaseSchema,hi as inflateElement,Ae as initFhirPathParserBuilder,ga as isAccepted,ji as isCodeableConcept,qi as isCoding,Ln as isCompletedSubscriptionRequest,rr as isComplexTypeCode,_n as isContextVersionRequired,ya as isCreated,Qr as isDataTypeLoaded,nn as isDateString,He as isDateTimeString,T as isEmpty,rs as isFhircastResourceType,va as isGone,Bn as isJwt,qe as isLowerCase,qn as isMedplumAccessToken,xa as isNotFound,w as isObject,Nt as isOk,ce as isOperationOutcome,on as isPeriod,G as isPopulated,Wr as isProfileLoaded,Ii as isProfileResource,O as isQuantity,sn as isQuantityEquivalent,Y as isReference,_ as isResource,Hr as isResourceType,Qt as isResourceTypeSchema,zn as isSliceDefinitionWithTypes,Bi as isString,pn as isStringArray,$i as isTextObject,Pc as isUUID,or as isValidDate,Fc as lazy,$t as loadDataType,Jt as matchDiscriminant,Ko as matchesAccessPolicy,yn as matchesRange,On as matchesSearchRequest,di as normalizeErrorString,Be as normalizeOperationOutcome,Dr as notFound,ca as notModified,fi as operationOutcomeIssueToString,Nr as operationOutcomeToString,Yu as parseCriteriaAsSearchRequest,ar as parseFhirPath,hd as parseFilterParameter,xd as parseHl7DateTime,xt as parseJWTPayload,Td as parseLogLevel,Jp as parseMappingLanguage,wo as parseParameter,gc as parseReference,Ju as parseSearchDefinition,xe as parseSearchRequest,zu as parseSearchUrl,Bt as parseStructureDefinition,Zu as parseXFhirQuery,kc as preciseEquals,Dc as preciseGreaterThan,Ki as preciseGreaterThanOrEquals,Vc as preciseLessThan,Wi as preciseLessThanOrEquals,Ic as preciseRound,da as preconditionFailed,Go as projectAdminResourceTypes,$o as protectedResourceTypes,We as removeDuplicates,Yo as reorderBundle,Ye as resolveId,ul as satisfiedAccessPolicy,hr as serializeFhircastSubscriptionRequest,Mr as serverError,wc as setCodeBySystem,Rc as setIdentifier,U as singleton,nr as sleep,Nc as splitN,Pd as streamToBuffer,ln as stringify,Tn as stringifyTypedValue,nd as structureMapTransform,Ma as subsetResource,F as toJsBoolean,pc as toPeriod,y as toTypedValue,fa as tooManyRequests,be as tryGetDataType,jn as tryGetJwtExpiration,Kr as tryGetProfile,ua as unauthorized,gt as validateFhircastSubscriptionRequest,oc as validateResource,Rd as validateResourceType,m as validationError,$e as validationRegexes};
|
|
44
44
|
//# sourceMappingURL=index.mjs.map
|