@medplum/core 3.1.9 → 3.1.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.
@@ -1,6 +1,6 @@
1
1
  "use strict";var hr=Object.defineProperty;var ho=Object.getOwnPropertyDescriptor;var yo=Object.getOwnPropertyNames;var go=Object.prototype.hasOwnProperty;var xo=(r,e)=>{for(var t in e)hr(r,t,{get:e[t],enumerable:!0})},vo=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of yo(e))!go.call(r,i)&&i!==t&&hr(r,i,{get:()=>e[i],enumerable:!(n=ho(e,i))||n.enumerable});return r};var To=r=>vo(hr({},"__esModule",{value:!0}),r);var hu={};xo(hu,{AccessPolicyInteraction:()=>Di,AndAtom:()=>ut,ArithemticOperatorAtom:()=>I,AsAtom:()=>ce,BooleanInfixOperatorAtom:()=>P,CPT:()=>Ro,ClientStorage:()=>De,ConcatAtom:()=>rt,ContainsAtom:()=>nt,ContentType:()=>k,DEFAULT_ACCEPT:()=>zi,DEFAULT_SEARCH_COUNT:()=>Ra,DotAtom:()=>X,EmptySetAtom:()=>et,EqualsAtom:()=>ot,EquivalentAtom:()=>at,EventTarget:()=>Ve,ExternalSecretSystems:()=>Tc,FHIRCAST_EVENT_NAMES:()=>nr,FHIRCAST_EVENT_RESOURCES:()=>ji,FHIRCAST_EVENT_VERSION_REQUIRED:()=>ir,FHIRCAST_RESOURCE_TYPES:()=>qi,FhirFilterComparison:()=>At,FhirFilterConnective:()=>It,FhirFilterNegation:()=>Ot,FhirPathAtom:()=>Xe,FhircastConnection:()=>vt,FunctionAtom:()=>H,HTTP_HL7_ORG:()=>gr,HTTP_TERMINOLOGY_HL7_ORG:()=>Co,Hl7Context:()=>re,Hl7Field:()=>be,Hl7Message:()=>On,Hl7Segment:()=>Le,ICD10:()=>Po,ImpliesAtom:()=>dt,InAtom:()=>it,IndexerAtom:()=>le,InfixOperatorAtom:()=>K,IsAtom:()=>ue,LOINC:()=>So,LRUCache:()=>xt,LiteralAtom:()=>M,LogLevel:()=>mr,Logger:()=>In,MEDPLUM_CLI_CLIENT_ID:()=>pc,MEDPLUM_VERSION:()=>lc,MedplumClient:()=>Rt,MedplumKeyValueClient:()=>Et,MemoryStorage:()=>ar,MockAsyncClientStorage:()=>vn,NotEqualsAtom:()=>st,NotEquivalentAtom:()=>ct,OAuthClientAssertionType:()=>Xi,OAuthGrantType:()=>Ji,OAuthTokenAuthMethod:()=>Zi,OAuthTokenType:()=>Yi,OperationOutcomeError:()=>f,Operator:()=>sn,OperatorPrecedence:()=>y,OrAtom:()=>lt,Parser:()=>kt,ParserBuilder:()=>Be,PrefixOperatorAtom:()=>Ue,PropertyType:()=>l,RXNORM:()=>bo,ReadablePromise:()=>V,RobustWebSocket:()=>cr,SNOMED:()=>Eo,SearchParameterType:()=>nn,SubscriptionEmitter:()=>Me,SubscriptionManager:()=>bt,SymbolAtom:()=>q,Tokenizer:()=>ee,TypedEventTarget:()=>de,UCUM:()=>yr,UnaryOperatorAtom:()=>tt,UnionAtom:()=>Te,VALID_HOSTNAME_REGEX:()=>hi,XorAtom:()=>pt,accepted:()=>Fo,addProfileToResource:()=>Bs,allOk:()=>wo,append:()=>xe,applyDefaultValuesToElement:()=>wc,applyDefaultValuesToElementWithVisitor:()=>Ac,applyDefaultValuesToResource:()=>Cc,applyFixedOrPatternValue:()=>Ct,arrayBufferToBase64:()=>Jr,arrayBufferToHex:()=>zr,arrayify:()=>we,assertContextVersionOptional:()=>mn,assertOk:()=>$o,badRequest:()=>R,booleanToTypedValue:()=>d,buildElementsContext:()=>lr,buildTypeName:()=>Si,calculateAge:()=>Je,calculateAgeString:()=>ys,canReadResourceType:()=>Za,canWriteResource:()=>Xa,canWriteResourceType:()=>Mi,capitalize:()=>C,checkForNull:()=>kn,compressElement:()=>Go,concatUrls:()=>B,conceptMapTranslate:()=>Pn,conflict:()=>Lo,convertContainedResourcesToBundle:()=>ic,convertToTransactionBundle:()=>Li,crawlResource:()=>Bt,createConstraintIssue:()=>Pr,createFhircastMessagePayload:()=>sr,createOperationOutcomeIssue:()=>ne,createProcessingIssue:()=>Cr,createReference:()=>Y,createStructureIssue:()=>v,created:()=>Ao,decodeBase64:()=>ln,deepClone:()=>se,deepEquals:()=>J,deepIncludes:()=>Ae,encodeBase64:()=>pn,encryptSHA256:()=>dn,ensureNoLeadingSlash:()=>mi,ensureTrailingSlash:()=>zt,evalFhirPath:()=>Se,evalFhirPathTyped:()=>F,fhirPathArrayEquals:()=>$t,fhirPathArrayEquivalent:()=>Wt,fhirPathEquals:()=>jr,fhirPathEquivalent:()=>Xn,fhirPathIs:()=>He,fhirPathNot:()=>jt,fhirTypeToJsType:()=>Ur,findObservationInterval:()=>Os,findObservationReferenceRange:()=>Is,findResourceByCode:()=>_s,forbidden:()=>ko,formatAddress:()=>$s,formatCodeableConcept:()=>Ke,formatCoding:()=>gi,formatDate:()=>Hs,formatDateTime:()=>Jt,formatFamilyName:()=>Gs,formatGivenName:()=>Ws,formatHl7DateTime:()=>mo,formatHumanName:()=>Ze,formatMoney:()=>ea,formatObservationValue:()=>xi,formatPeriod:()=>Qs,formatQuantity:()=>ae,formatRange:()=>Xs,formatSearchQuery:()=>_a,formatTime:()=>yi,formatTiming:()=>Ys,generateId:()=>pe,getAllDataTypes:()=>Vr,getAllQuestionnaireAnswers:()=>xs,getCodeBySystem:()=>Gt,getDataType:()=>z,getDateProperty:()=>hs,getDefaultValuesForNewSliceEntry:()=>Oc,getDisplayString:()=>ri,getElementDefinition:()=>Qe,getElementDefinitionFromElements:()=>bi,getElementDefinitionTypeName:()=>Nt,getExpressionForResourceType:()=>ba,getExpressionsForResourceType:()=>on,getExtension:()=>he,getExtensionValue:()=>Ts,getIdentifier:()=>oi,getImageSrc:()=>ms,getNestedProperty:()=>ye,getPathDifference:()=>ge,getPathDisplayName:()=>aa,getPropertyDisplayName:()=>Ei,getQueryString:()=>en,getQuestionnaireAnswers:()=>gs,getRandomString:()=>rr,getReferenceString:()=>oe,getResourceTypes:()=>ia,getSearchParameter:()=>sa,getSearchParameterDetails:()=>er,getSearchParameters:()=>oa,getStatus:()=>jo,getTypedPropertyValue:()=>w,getTypedPropertyValueWithPath:()=>Hn,getTypedPropertyValueWithSchema:()=>Zn,getValueSliceName:()=>Rn,getWebSocketUrl:()=>Xr,globalSchema:()=>D,gone:()=>Vo,indexSearchParameter:()=>Zt,indexSearchParameterBundle:()=>na,indexStructureDefinitionBundle:()=>Lt,inflateBaseSchema:()=>wr,inflateElement:()=>Bn,initFhirPathParserBuilder:()=>ke,isAccepted:()=>Uo,isCodeableConcept:()=>ci,isCoding:()=>ai,isCompletedSubscriptionRequest:()=>hn,isComplexTypeCode:()=>Ht,isContextVersionRequired:()=>fn,isCreated:()=>_o,isDataTypeLoaded:()=>Dr,isDateString:()=>$r,isDateTimeString:()=>We,isEmpty:()=>S,isFhirCriteriaMet:()=>Gi,isFhircastResourceType:()=>$i,isGone:()=>qo,isJwt:()=>yn,isLowerCase:()=>Ce,isMedplumAccessToken:()=>gn,isNotFound:()=>Bo,isObject:()=>E,isOk:()=>Mt,isOperationOutcome:()=>me,isPeriod:()=>Wr,isPopulated:()=>$,isProfileLoaded:()=>Nr,isProfileResource:()=>ti,isQuantity:()=>A,isQuantityEquivalent:()=>Gr,isReference:()=>ie,isResource:()=>N,isResourceType:()=>Mr,isResourceTypeSchema:()=>Ut,isSliceDefinitionWithTypes:()=>bn,isString:()=>si,isStringArray:()=>Kr,isTextObject:()=>ui,isUUID:()=>ws,isValidDate:()=>Yt,isValidHostname:()=>Us,lazy:()=>Zr,loadDataType:()=>_t,mapByIdentifier:()=>qs,matchDiscriminant:()=>qt,matchesAccessPolicy:()=>Ni,matchesRange:()=>Yr,matchesSearchRequest:()=>gt,multipleMatches:()=>Mo,normalizeCreateBinaryOptions:()=>En,normalizeCreatePdfOptions:()=>eo,normalizeErrorString:()=>_n,normalizeOperationOutcome:()=>qe,notFound:()=>Er,notModified:()=>Oo,operationOutcomeIssueToString:()=>Un,operationOutcomeToString:()=>Rr,parseCriteriaAsSearchRequest:()=>wa,parseFhirPath:()=>Xt,parseFilterParameter:()=>au,parseHl7DateTime:()=>cu,parseJWTPayload:()=>St,parseLogLevel:()=>lu,parseMappingLanguage:()=>Bc,parseParameter:()=>Oi,parseReference:()=>ps,parseSearchDefinition:()=>Ca,parseSearchRequest:()=>te,parseSearchUrl:()=>Pa,parseStructureDefinition:()=>Ft,parseXFhirQuery:()=>La,preciseEquals:()=>Ns,preciseGreaterThan:()=>Ls,preciseGreaterThanOrEquals:()=>fi,preciseLessThan:()=>Fs,preciseLessThanOrEquals:()=>di,preciseRound:()=>Ms,preconditionFailed:()=>Do,projectAdminResourceTypes:()=>Vi,protectedResourceTypes:()=>ki,removeDuplicates:()=>Ge,removeProfileFromResource:()=>js,reorderBundle:()=>_i,resolveId:()=>ze,resourceMatchesSubscriptionCriteria:()=>cc,satisfiedAccessPolicy:()=>ec,serializeFhircastSubscriptionRequest:()=>or,serverError:()=>br,setCodeBySystem:()=>As,setIdentifier:()=>vs,singleton:()=>U,sleep:()=>Qt,sortStringArray:()=>Ye,splitN:()=>Kt,splitSearchOnComma:()=>yt,streamToBuffer:()=>mu,stringify:()=>Qr,stringifyTypedValue:()=>tn,structureMapTransform:()=>qc,subsetResource:()=>Qo,toJsBoolean:()=>L,toPeriod:()=>us,toTypedValue:()=>x,tooManyRequests:()=>No,tryGetDataType:()=>Pe,tryGetJwtExpiration:()=>xn,tryGetProfile:()=>Fr,unauthorized:()=>Io,validateFhircastSubscriptionRequest:()=>Tt,validateResource:()=>rs,validateResourceType:()=>pu,validationError:()=>h,validationRegexes:()=>$e});module.exports=To(hu);var Ue=class{constructor(e,t){this.operator=e;this.child=t}toString(){return`${this.operator}(${this.child.toString()})`}},K=class{constructor(e,t,n){this.operator=e;this.left=t;this.right=n}toString(){return`${this.left.toString()} ${this.operator} ${this.right.toString()}`}},Be=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 kt(e,this.prefixParselets,this.infixParselets)}},kt=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 yr="http://unitsofmeasure.org",So="http://loinc.org",Eo="http://snomed.info/sct",bo="http://www.nlm.nih.gov/research/umls/rxnorm",Ro="http://www.ama-assn.org/go/cpt",Po="http://hl7.org/fhir/sid/icd-10",gr="http://hl7.org",Co="http://terminology.hl7.org";var xr="ok",Vt="created",vr="gone",Tr="not-modified",Sr="not-found",Vn="conflict",Dn="unauthorized",Mn="forbidden",Nn="precondition-failed",Fn="multiple-matches",Ln="too-many-requests",Dt="accepted",wo={resourceType:"OperationOutcome",id:xr,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},Ao={resourceType:"OperationOutcome",id:Vt,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},Oo={resourceType:"OperationOutcome",id:Tr,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},Er={resourceType:"OperationOutcome",id:Sr,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},Io={resourceType:"OperationOutcome",id:Dn,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},ko={resourceType:"OperationOutcome",id:Mn,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},Vo={resourceType:"OperationOutcome",id:vr,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},Do={resourceType:"OperationOutcome",id:Nn,issue:[{severity:"error",code:"processing",details:{text:"Precondition Failed"}}]},Mo={resourceType:"OperationOutcome",id:Fn,issue:[{severity:"error",code:"multiple-matches",details:{text:"Multiple resources found matching condition"}}]},No={resourceType:"OperationOutcome",id:Ln,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function Fo(r){return{resourceType:"OperationOutcome",id:Dt,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:r}]}}function R(r,e){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:r},...e?{expression:[e]}:void 0}]}}function Lo(r){return{resourceType:"OperationOutcome",id:Vn,issue:[{severity:"error",code:"conflict",details:{text:r}}]}}function h(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"structure",details:{text:r}}]}}function br(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function me(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function Mt(r){return r.id===xr||r.id===Vt||r.id===Tr||r.id===Dt}function _o(r){return r.id===Vt}function Uo(r){return r.id===Dt}function Bo(r){return r.id===Sr}function qo(r){return r.id===vr}function jo(r){switch(r.id){case xr:return 200;case Vt:return 201;case Dt:return 202;case Tr:return 304;case Dn:return 401;case Mn:return 403;case Sr:return 404;case Vn:return 409;case vr:return 410;case Nn:case Fn:return 412;case Ln:return 429;default:return r.issue?.[0]?.code==="exception"?500:400}}function $o(r,e){if(!Mt(r)||e===void 0)throw new f(r)}var f=class extends Error{constructor(e,t){super(Rr(e)),this.outcome=e,this.cause=t}};function qe(r){return r instanceof f?r.outcome:me(r)?r:R(_n(r))}function _n(r){return r?typeof r=="string"?r:r instanceof Error?r.message:me(r)?Rr(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function Rr(r){let e=r.issue?.map(Un)??[];return e.length>0?e.join("; "):"Unknown error"}function Un(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 ne(r,e,t,n,i){let o={severity:r,code:e,details:{text:t},expression:[n]};return i&&(o.diagnostics=JSON.stringify(i)),o}function v(r,e){return ne("error","structure",e,r)}function Pr(r,e){return ne("error","invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function Cr(r,e,t,n){return ne("error","processing",e,r,{...n,error:t})}var Wo={"http://hl7.org/fhirpath/System.String":"string"};function Go(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:Wo[t.code]??t.code})),e}function Bn(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 wr(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,Bn(i,o)])),constraints:[],innerTypes:[]};return e}var qn={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"}]}}},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 Ft(r){return new Ir(r).parse()}var je=wr(qn),kr=Object.create(null),jn=Object.create(null);function Or(r){let e;return r?(e=jn[r],e||(e=jn[r]=Object.create(null))):e=je,e}function Lt(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=Ft(r),n=Or(e);n[r.name]=t,e&&r.url===e&&(kr[e]=t);for(let i of t.innerTypes)i.parentType=t,n[i.name]=i}function Vr(){return je}function Dr(r){return!!je[r]}function Pe(r,e){let t=Or(e)[r];return!t&&e&&(t=Or()[r]),t}function z(r,e){let t=Pe(r,e);if(!t)throw new f(R("Unknown data type: "+r));return t}function Mr(r){let e=je[r];return e&&Ut(e)}function Nr(r){return!!kr[r]}function Fr(r){return kr[r]}var Ir=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:Yo(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=Ar(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[Ar(e,n.path)]=t;break}n=n.parent}if(!n){let i=Ar(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&&!Re(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;this.backboneContext={type:{name:Nt(e),title:e.label,description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path??"",parent:Re(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,t){Jo(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&&!Re(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!Re(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),this.backboneContext=void 0;this.slicingContext&&!Re(this.slicingContext.path,e?.path)&&(this.slicingContext?.current&&this.slicingContext.field.slices.push(this.slicingContext.current),this.slicingContext=void 0)}next(){let e=this.peek();if(e)return this.index++,e}peek(){let e=this.elements[this.index];if(e){if(this.elementIndex[e.path??""]=e,e.contentReference){let t=e.contentReference.slice(e.contentReference.indexOf("#")+1),n=this.elementIndex[t];return n?{...n,id:e.id,path:e.path,min:e.min??n.min,max:e.max??n.max,base:{path:n.base?.path??t,min:e.base?.min??n.base?.min??n.min,max:e.base?.max??n.base?.max??n.max},contentReference:e.contentReference,definition:e.definition}:void 0}return e}}isInnerType(e){let t=this.peek();return!!(Re(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={...this.parseElementDefinition(e),name:e.sliceName??"",definition:e.definition,elements:{}}}parseElementDefinitionType(e){return(e.type??[]).map(t=>{let n;return(t.code==="BackboneElement"||t.code==="Element")&&(n=Nt(e)),n||(n=he(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=Wn(e.max),n=e.base?.max?Wn(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:Gn(w(i,"fixed[x]")),pattern:Gn(w(i,"pattern[x]")),binding:e.binding}}};function Qo(r,e){if(!r)return;let t=[];for(let n of e){t.push("_"+n);let i=je[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)&&!Ko.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($n):[$n]},r}var $n={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},Ko=["resourceType","id","meta"];function Wn(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function Ar(r,e=""){return zo(r.path,e)}function zo(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function Re(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function Gn(r){return Array.isArray(r)&&r.length>0?r[0]:S(r)?void 0:r}function Jo(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 Yo(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 Zo(r){return"elements"in r}function Xo(r){return!!r.visitPropertyAsync}function Bt(r,e,t,n){let i;if(t&&Zo(t)?i={schema:t,initialPath:n}:i=t,Xo(e))return new _r(r,e,i).crawl();new Lr(r,e,i).crawl()}var Lr=class{constructor(e,t,n){this.rootResource=e,this.visitor=t,this.schema=n?.schema??z(e.resourceType),this.initialPath=n?.initialPath??e.resourceType,this.excludeMissingProperties=n?.skipMissingProperties}crawl(){this.crawlObject({...x(this.rootResource),path:this.initialPath},this.schema,this.initialPath)}crawlObject(e,t,n){let i=N(e.value);if(i&&this.visitor.onEnterResource&&this.visitor.onEnterResource(n,e,t),this.visitor.onEnterObject&&this.visitor.onEnterObject(n,e,t),this.excludeMissingProperties)for(let o of Object.keys(e.value))this.crawlProperty(e,o,t,`${n}.${o}`);else 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=ye(e,t,{withPath:!0});this.visitor.visitProperty&&this.visitor.visitProperty(e,t,i,o,n);for(let s of o)if(s)for(let a of we(s))this.crawlPropertyValue(a,i)}crawlPropertyValue(e,t){if(!Ce(e.type.charAt(0))){let n=z(e.type);this.crawlObject(e,n,t)}}},_r=class{constructor(e,t,n){this.rootResource=e,this.visitor=t,this.schema=n?.schema??z(e.resourceType),this.initialPath=n?.initialPath??e.resourceType,this.excludeMissingProperties=n?.skipMissingProperties}async crawl(){return this.crawlObject({...x(this.rootResource),path:this.initialPath},this.schema,this.initialPath)}async crawlObject(e,t,n){let i=N(e.value);if(i&&this.visitor.onEnterResource&&await this.visitor.onEnterResource(n,e,t),this.visitor.onEnterObject&&await this.visitor.onEnterObject(n,e,t),this.excludeMissingProperties)for(let o of Object.keys(e.value))await this.crawlProperty(e,o,t,`${n}.${o}`);else for(let o of Object.keys(t.elements))await this.crawlProperty(e,o,t,`${n}.${o}`);this.visitor.onExitObject&&await this.visitor.onExitObject(n,e,t),i&&this.visitor.onExitResource&&await this.visitor.onExitResource(n,e,t)}async crawlProperty(e,t,n,i){let o=ye(e,t,{withPath:!0});if(this.visitor.visitPropertyAsync)for(let s of o)await this.visitor.visitPropertyAsync(e,t,i,s,n);for(let s of o)if(s)for(let a of we(s))await this.crawlPropertyValue(a,i)}async crawlPropertyValue(e,t){if(!Ce(e.type.charAt(0))){let n=z(e.type);await this.crawlObject(e,n,t)}}};function ye(r,e,t){if(r===void 0)return[void 0];if(e==="$this")return[r];let n=t?.withPath?Hn:w,[i,...o]=e.split("."),s=[n(r,i,t)];for(let a of o){let c=[];for(let u of s)if(Array.isArray(u))for(let p of u)c.push(n(p,a,t));else(t?.withPath&&u&&u.value!==void 0||!t?.withPath&&u!==void 0)&&c.push(n(u,a,t));s=c}return s}function Hn(r,e,t){let n=r.path;return es(w(r,e,t),n,e)}function es(r,e,t){let n=e?e+".":"";return r===void 0?{type:"undefined",value:void 0,path:`${n}${t}`}:Array.isArray(r)?r.map((i,o)=>({...i,path:`${n}${t}[${o}]`})):{...r,path:`${n}${t}`}}var Ur={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:/.*/},ts={"ele-1":!0,"dom-3":!0,"org-1":!0,"sdf-19":!0};function rs(r,e){return new Br(r.resourceType,r,e).validate()}var Br=class{constructor(e,t,n){this.issues=[],this.rootResource=t,this.currentResource=[t],n?.profile?this.schema=Ft(n.profile):this.schema=z(e)}validate(){let e=this.rootResource.resourceType;if(!e)throw new f(h("Missing resource type"));this.constraintsCheck(x(this.rootResource),this.schema,e),qr(this.rootResource,e,this.issues),Bt(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 f({resourceType:"OperationOutcome",issue:t});return t}onExitObject(e,t,n){this.checkAdditionalProperties(t,n.elements,e)}onEnterResource(e,t){this.currentResource.push(t.value)}onExitResource(){this.currentResource.pop()}visitProperty(e,t,n,i,o){let s=o.elements[t];if(!s)throw new Error(`Missing element validation schema for ${t}`);for(let a of i){if(!this.checkPresence(a,s,n))return;let c;if(s.isArray){if(!Array.isArray(a)){this.issues.push(v(n,"Expected array of values for property"));return}c=a}else{if(Array.isArray(a)){this.issues.push(v(n,"Expected single value for property"));return}c=[a]}(c.length<s.min||c.length>s.max)&&this.issues.push(v(s.path,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${c.length}`)),os(a,s)||this.issues.push(v(n,"Value did not match expected pattern"));let u=s.slicing?Object.fromEntries(s.slicing.slices.map(p=>[p.name,0])):void 0;for(let p of c){this.constraintsCheck(p,s,n),this.referenceTypeCheck(p,s,n),this.checkPropertyValue(p,n);let m=ss(p,s.slicing);m&&u&&(u[m]+=1)}this.validateSlices(s.slicing?.slices,u,n)}}checkPresence(e,t,n){return!Array.isArray(e)&&e.value===void 0?(t.min>0&&this.issues.push(v(e.path,"Missing required property")),!1):S(e)?(this.issues.push(v(n,"Invalid empty value")),!1):!0}checkPropertyValue(e,t){Ce(e.type.charAt(0))&&this.validatePrimitiveType(e,t)}validateSlices(e,t,n){if(!(!e||!t))for(let i of e){let o=t[i.name];(o<i.min||o>i.max)&&this.issues.push(v(n,`Incorrect number of values provided for slice '${i.name}': expected ${i.min}..${Number.isFinite(i.max)?i.max:"*"}, but found ${o}`))}}checkAdditionalProperties(e,t,n){let i=e.value;if(!i)return;let o={};for(let s of Object.keys(i)){if(s==="resourceType")continue;let a=is(e,s,t);if(a){let c,u;a.startsWith("_")?(c=a.slice(1),u=s.slice(1)):(c="_"+a,u="_"+s),c in o&&o[c]!==u&&this.issues.push(ne("warning","structure",`Type of primitive extension does not match the type of property "${a.startsWith("_")?a.slice(1):a}"`,a)),o[a]&&this.issues.push(ne("warning","structure",`Duplicate choice of type property "${a}"`,a)),o[a]=s;continue}!(s in t)&&!(s.startsWith("_")&&s.slice(1)in t)&&this.issues.push(v(`${n}.${s}`,`Invalid additional property "${s}"`))}}constraintsCheck(e,t,n){let i=t.constraints;if(i){for(let o of i)if(o.severity==="error"&&!(o.key in ts)&&!this.isExpressionTrue(o,e,n)){this.issues.push(Pr(n,o));return}}}referenceTypeCheck(e,t,n){if(e.type!=="Reference")return;let i=e.value;if(!ie(i))return;let o=i.reference.split("/")[0];if(!o)return;let s=t.type.find(g=>g.code==="Reference")?.targetProfile;if(!s)return;let a=gr+"/fhir/StructureDefinition/",c=a+"Resource",u=a+o,p="https://medplum.com/fhir/StructureDefinition/",m=p+o;for(let g of s)if(g===c||g===u||g===m||!g.startsWith(a)&&!g.startsWith(p))return;this.issues.push(ne("warning","structure",`Invalid reference for "${n}", got "${o}", expected "${s.join('", "')}"`,n))}isExpressionTrue(e,t,n){try{let i=F(e.expression,[t],{"%context":t,"%resource":x(this.currentResource[this.currentResource.length-1]),"%rootResource":x(this.rootResource),"%ucum":x(yr)});return i.length===1&&i[0].value===!0}catch(i){return this.issues.push(Cr(n,"Error evaluating invariant expression",i,{fhirpath:e.expression})),!1}}validatePrimitiveType(e,t){let[n,i]=as(e);if(n){let{type:o,value:s}=n;if(!(o in Ur)){this.issues.push(v(t,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=Ur[o];if(typeof s!==a){s!==null&&this.issues.push(v(t,`Invalid JSON type: expected ${a}, but got ${typeof s}`));return}a==="string"?this.validateString(s,o,t):a==="number"&&this.validateNumber(s,o,t)}i&&Bt(i.value,this,z("Element"),t)}validateString(e,t,n){if(!e.trim()){this.issues.push(v(n,"String must contain non-whitespace content"));return}let i=$e[t];i&&!i.exec(e)&&this.issues.push(v(n,"Invalid "+t+" format"))}validateNumber(e,t,n){Number.isNaN(e)||!Number.isFinite(e)?this.issues.push(v(n,"Invalid numeric value")):ns(t)&&!Number.isInteger(e)?this.issues.push(v(n,"Expected number to be an integer")):t===l.positiveInt&&e<=0?this.issues.push(v(n,"Expected number to be positive")):t===l.unsignedInt&&e<0&&this.issues.push(v(n,"Expected number to be non-negative"))}};function ns(r){return r===l.integer||r===l.positiveInt||r===l.unsignedInt}function is(r,e,t){let n="";e.startsWith("_")&&(e=e.slice(1),n="_");let i=e.split(/(?=[A-Z])/g),o="";for(let s of i){o+=s;let a=o+"[x]";if(t[a])return w(r,o)?n+a:void 0}}function qr(r,e,t){for(let[n,i]of Object.entries(r)){let o=`${e}.${n}`,s=n.startsWith("_")?n.slice(1):`_${n}`;if(i===null)t.push(v(o,"Invalid null value"));else if(Array.isArray(i))for(let a=0;a<i.length;a++)i[a]===void 0?t.push(v(`${o}[${a}]`,"Invalid undefined value")):i[a]===null&&!r[s]?.[a]?t.push(v(`${o}[${a}]`,"Invalid null value")):i[a]&&qr(i[a],`${o}[${a}]`,t);else typeof i=="object"&&qr(i,o,t)}}function os(r,e){let t=Array.isArray(r)?r.map(n=>({type:n.type,value:n.value})):{type:r.type,value:r.value};return!(e.pattern&&!Ae(t,e.pattern)||e.fixed&&!J(t,e.fixed))}function qt(r,e,t,n){if(Array.isArray(r))return!1;let i;e.path==="$this"?i=t:i=(n??t.elements)[e.path];let o=t.type;switch(e.type){case"value":case"pattern":if(!r||!i)return!1;if(i.pattern)return Ae(r,i.pattern);if(i.fixed)return J(r,i.fixed);if(i.binding?.strength==="required"&&i.binding.valueSet)return!0;break;case"type":return!r||!o?.length?!1:o.some(s=>s.code===r.type)}return!1}function ss(r,e){if(e){for(let t of e.slices)if(e.discriminator.every(n=>we(ye(r,n.path))?.some(i=>qt(i,n,t))))return t.name}}function as(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 d(r){return[{type:l.boolean,value:r}]}function x(r){return r==null?{type:"undefined",value:void 0}:Number.isSafeInteger(r)?{type:l.integer,value:r}:typeof r=="number"?{type:l.decimal,value:r}:typeof r=="boolean"?{type:l.boolean,value:r}:typeof r=="string"?{type:l.string,value:r}:A(r)?{type:l.Quantity,value:r}:N(r)?{type:r.resourceType,value:r}:{type:l.BackboneElement,value:r}}function L(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 w(r,e,t){if(!r.value)return;let n=Qe(r.type,e,t?.profileUrl);return n?Zn(r,e,n):cs(r,e)}function Zn(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]=Yn(o[c],a[c])}else o=Yn(o,a);if(!S(o))return(s==="Element"||s==="BackboneElement")&&(s=t.type[0].code),Array.isArray(o)?o.map(c=>Qn(c,s)):Qn(o,s)}function Qn(r,e){return e==="Resource"&&N(r)&&(e=r.resourceType),{type:e,value:r}}function cs(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(x):x(n)}function Ge(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(L(jr(t,i))){n=!0;break}n||e.push(t)}return e}function jt(r){return d(!L(r))}function $t(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?d(!1):d(r.every((t,n)=>L(jr(t,e[n]))))}function jr(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?d(Math.abs(t-n)<1e-8):A(t)&&A(n)?d(Gr(t,n)):d(typeof t=="object"&&typeof n=="object"?Hr(r,e):t===n)}function Wt(r,e){return r.length===0&&e.length===0?d(!0):r.length!==e.length?d(!1):(r.sort(Kn),e.sort(Kn),d(r.every((t,n)=>L(Xn(t,e[n])))))}function Xn(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"?d(Math.abs(s-a)<.01):A(s)&&A(a)?d(Gr(s,a)):d(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"?Hr({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function Kn(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 He(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 $r(t);case"DateTime":return We(t);case"Time":return typeof t=="string"&&!!/^T\d/.exec(t);case"Period":return Wr(t);case"Quantity":return A(t);default:return typeof t=="object"&&t?.resourceType===e}}function $r(r){return typeof r=="string"&&!!$e.date.exec(r)}function We(r){return typeof r=="string"&&!!$e.dateTime.exec(r)}function Wr(r){return!!(r&&typeof r=="object"&&("start"in r&&We(r.start)||"end"in r&&We(r.end)))}function us(r){if(r){if($r(r))return{start:zn(r,"0000-00-00T00:00:00.000Z"),end:zn(r,"xxxx-12-31T23:59:59.999Z")};if(We(r))return{start:r,end:r};if(Wr(r))return r}}function zn(r,e){return r+e.substring(r.length)}function A(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function Gr(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 Hr(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(Jn(o)&&Jn(s)){if(!Hr(o,s))return!1}else if(o!==s)return!1}return!0}function Jn(r){return r!==null&&typeof r=="object"}function Yn(r,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return ls(r??{},e)}return r}function ls(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}function Y(r){let e=oe(r),t=ri(r);return t===e?{reference:e}:{reference:e,display:t}}function oe(r){return ie(r)?r.reference:`${r.resourceType}/${r.id}`}function ze(r){if(r)return ie(r)?r.reference.split("/")[1]:r.id}function ps(r){if(r?.reference===void 0)throw new f(h("Reference missing reference property."));let[e,t]=r.reference.split("/");if(e===""||t===""||t===void 0)throw new f(h("Unable to parse reference string."));return[e,t]}function ti(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function ri(r){if(ti(r)){let e=ds(r);if(e)return e}if(r.resourceType==="Device"){let e=fs(r);if(e)return e}if(r.resourceType==="MedicationRequest"){let e=r.medicationCodeableConcept;if(e)return Ke(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]),ci(e))return Ke(e);if(ui(e))return e.text}return oe(r)}function ds(r){let e=r.name;if(e&&e.length>0)return Ze(e[0])}function fs(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function ms(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=ei(t);if(n)return n}else return ei(e)}function ei(r){if(r.url&&r.contentType?.startsWith("image/"))return r.url}function hs(r){return r?new Date(r):void 0}function Je(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 m=a*12+c-(i*12+o);u<s&&m--;let g=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:p,months:m,days:g}}function ys(r,e){let{years:t,months:n,days:i}=Je(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 gs(r){let e={};return ni(r.item,e),e}function ni(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),ni(t.item,e)}function xs(r){let e={};return ii(r.item,e),e}function ii(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]?e[t.linkId]=[...e[t.linkId],...t.answer]:e[t.linkId]=t.answer),ii(t.item,e)}function oi(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 vs(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 Ts(r,...e){let t=he(r,...e);if(!t)return;let n=w({type:"Extension",value:t},"value[x]");if(n)return Array.isArray(n)?n[0].value:n.value}function he(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 Qr(r,e){return JSON.stringify(r,Ss,e?2:void 0)}function Ss(r,e){return!Es(r)&&S(e)?void 0:e}function Es(r){return!!/\d+$/.exec(r)}function S(r){if(r==null)return!0;let e=typeof r;return e==="string"||e==="object"?!$(r):!1}function $(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 J(r,e,t){return r===e||S(r)&&S(e)?!0:S(r)||S(e)?!1:Array.isArray(r)&&Array.isArray(e)?bs(r,e):Array.isArray(r)||Array.isArray(e)?!1:E(r)&&E(e)?Rs(r,e,t):(E(r)||E(e),!1)}function bs(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!J(r[t],e[t]))return!1;return!0}function Rs(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(!J(o,s,i))return!1}return!0}function Ae(r,e){return S(r)?!0:S(e)?!1:Array.isArray(r)&&Array.isArray(e)?Ps(r,e):Array.isArray(r)||Array.isArray(e)?!1:E(r)&&E(e)?Cs(r,e):E(r)||E(e)?!1:r===e}function Ps(r,e){return e.every(t=>r.some(n=>Ae(n,t)))}function Cs(r,e){return Object.entries(e).every(([t,n])=>t in r&&Ae(r[t],n))}function se(r){return r===void 0?r:JSON.parse(JSON.stringify(r))}function ws(r){return!!/^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/i.exec(r)}function E(r){return r!==null&&typeof r=="object"}function Kr(r){return r.every(si)}function si(r){return typeof r=="string"}function ai(r){return E(r)&&"code"in r&&typeof r.code=="string"}function ci(r){return E(r)&&"coding"in r&&Array.isArray(r.coding)&&r.coding.every(ai)}function ui(r){return E(r)&&"text"in r&&typeof r.text=="string"}var li=[];for(let r=0;r<256;r++)li.push(r.toString(16).padStart(2,"0"));function zr(r){let e=new Uint8Array(r),t=new Array(e.length);for(let n=0;n<e.length;n++)t[n]=li[e[n]];return t.join("")}function Jr(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 Ce(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function Ht(r){return r.length>0&&r.startsWith(r[0].toUpperCase())}function ge(r,e){let t=r+".";if(e.startsWith(t))return e.slice(t.length)}function Gt(r,e){return r.coding?.find(t=>t.system===e)?.code}function As(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 Os(r,e,t,n){return r.qualifiedInterval?.find(i=>pi(i,e)&&Ds(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function Is(r,e,t){return r.qualifiedInterval?.find(n=>pi(n,e)&&t.includes(n.condition))}function pi(r,e){return ks(r,e)&&Vs(r,e)}function ks(r,e){return!r.gender||r.gender===e.gender}function Vs(r,e){return!r.age||Yr(Je(e.birthDate).years,r.age)}function Ds(r,e,t){return!!r.range&&Yr(e,r.range,t)}function Yr(r,e,t){return(e.low?.value===void 0||fi(r,e.low.value,t))&&(e.high?.value===void 0||di(r,e.high.value,t))}function Ms(r,e){return parseFloat(r.toFixed(e))}function Ns(r,e,t){return j(r,t)===j(e,t)}function Fs(r,e,t){return j(r,t)<j(e,t)}function Ls(r,e,t){return j(r,t)>j(e,t)}function di(r,e,t){return j(r,t)<=j(e,t)}function fi(r,e,t){return j(r,t)>=j(e,t)}function j(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function _s(r,e,t){return r.find(n=>typeof e=="string"?Gt(n.code||{},t)===e:Gt(n.code||{},t)===Gt(e,t))}function we(r){if(r)return Array.isArray(r)?r:[r]}var Qt=r=>new Promise(e=>{setTimeout(e,r)});function Kt(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 Zr(r){let e,t=!1;return function(){return t||(e=r(),t=!0),e}}function xe(r,e){return r?(r.push(e),r):[e]}function Ye(r){return r.sort((e,t)=>e.localeCompare(t))}function zt(r){return r.endsWith("/")?r:r+"/"}function mi(r){return r.startsWith("/")?r.slice(1):r}function B(r,e){return new URL(mi(e),zt(r.toString())).toString()}function Xr(r,e){return B(r,e).toString().replace("http://","ws://").replace("https://","wss://")}function en(r){return typeof r=="object"&&!Array.isArray(r)&&!(r instanceof URLSearchParams)&&(r=Object.fromEntries(Object.entries(r).filter(e=>e[1]!==void 0))),new URLSearchParams(r).toString()}var hi=/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-_]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-_]*[A-Za-z0-9])$/;function Us(r){return hi.test(r)}function Bs(r,e){return r?.meta?.profile?.includes(e)||(r.meta=r.meta??{},r.meta.profile=r.meta.profile??[],r.meta.profile.push(e)),r}function qs(r,e){return new Map(r.entry?.filter(n=>!!n.resource).map(n=>[oi(n.resource,e),n.resource]).filter(([n])=>n!==void 0))}function js(r,e){if(r?.meta?.profile?.includes(e)){let t=r.meta.profile.indexOf(e);r.meta.profile.splice(t,1)}return r}function $s(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=Oe(r.text);if(n)return n}return t.join(" ").trim()}function Ws(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function Gs(r){return Oe(r.family)??""}function Yt(r){return r instanceof Date&&!isNaN(r.getTime())}function Hs(r,e,t){if(!r)return"";let n=new Date(r);return Yt(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function yi(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return Yt(n)?n.toLocaleTimeString(e,t):""}function Jt(r,e,t){if(!r)return"";let n=new Date(r);return Yt(n)?n.toLocaleString(e,t):""}function Qs(r,e,t){return!r||!r.start&&!r.end?"":Jt(r.start,e,t)+" - "+Jt(r.end,e,t)}var Ks={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},zs={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},Js={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function Ys(r){if(!r)return"";let e=[];return Zs(e,r.repeat),r.event&&e.push(r.event.map(t=>Jt(t)).join(", ")),C(e.join(" ").trim())}function Zs(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(Ks[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+zs[i]):r.push("per "+n+" "+Js[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(C).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>yi(o)).join(", "))}function Xs(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=ra(n.value,e),`> ${ae(n,e)}`):`>= ${ae(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=ta(i.value,e),`< ${ae(i,e)}`):`<= ${ae(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${ae(n,e)} - ${ae(i,e)}`)}function ae(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 ea(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function Ke(r){if(!r)return"";let e=Oe(r.text);return e||(r.coding?r.coding.map(t=>gi(t)).join(", "):"")}function gi(r){return Oe(r?.display)??Oe(r?.code)??""}function xi(r){if(!r)return"";let e=[];if(r.valueQuantity)e.push(ae(r.valueQuantity));else if(r.valueCodeableConcept)e.push(Ke(r.valueCodeableConcept));else{let t=Oe(r.valueString);t&&e.push(t)}return"component"in r&&e.push(r.component.map(t=>xi(t)).join(" / ")),e.join(" / ").trim()}function Oe(r){return typeof r=="string"?r:void 0}function ta(r,e,t=1){return(vi(r,e)+t)*Math.pow(10,-e)}function ra(r,e,t=1){return(vi(r,e)-t)*Math.pow(10,-e)}function vi(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 na(r){for(let e of r.entry){let t=e.resource;t.resourceType==="SearchParameter"&&Zt(t)}}function Zt(r){for(let e of r.base??[]){let t=D.types[e];t||(t={searchParamsDetails:{}},D.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 Nt(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?Si((r.base?.path??r.path)?.split(".")):e}function Si(r){return r.length===1?r[0]:r.map(C).join("")}function Ut(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function ia(){return Object.values(Vr()).filter(Ut).map(r=>r.name)}function oa(r){return D.types[r]?.searchParams}function sa(r,e){return D.types[r]?.searchParams?.[e]}function aa(r){let e=r.replaceAll("[x]","").split(".").pop();return Ei(e)}function Ei(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(ua).join(" ").replace("_"," ").replace(/\s+/g," ")}var ca=new Set(["ID","IP","PKCE","JWKS","URI","URL","OMB","UDI"]);function ua(r){let e=r.toUpperCase();return r===e?r:ca.has(e)?e:e.charAt(0)+r.slice(1)}function Qe(r,e,t){let n=Pe(r,t);if(n)return bi(n.elements,e)}function bi(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 N(r){return!!(r&&typeof r=="object"&&"resourceType"in r)}function ie(r){return!!(r&&typeof r=="object"&&"reference"in r&&typeof r.reference=="string")}var D={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 Ti(r.value);case l.CodeableConcept:return r.value.coding?.map(Ti).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 N(r.value)?Y(r.value).reference:JSON.stringify(r)}}function Ti(r){return r?`${r.system??""}|${r.code}`:""}function Ie(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 Z=()=>[],O={empty:(r,e)=>d(e.length===0||e.every(t=>S(t.value))),hasValue:(r,e)=>d(e.length!==0),exists:(r,e,t)=>t?d(e.filter(n=>L(t.eval(r,[n]))).length>0):d(e.length>0&&e.every(n=>!S(n.value))),all:(r,e,t)=>d(e.every(n=>L(t.eval(r,[n])))),allTrue:(r,e)=>{for(let t of e)if(!t.value)return d(!1);return d(!0)},anyTrue:(r,e)=>{for(let t of e)if(t.value)return d(!0);return d(!1)},allFalse:(r,e)=>{for(let t of e)if(t.value)return d(!1);return d(!0)},anyFalse:(r,e)=>{for(let t of e)if(!t.value)return d(!0);return d(!1)},subsetOf:(r,e,t)=>{if(e.length===0)return d(!0);let n=t.eval(r,ve(r));return n.length===0?d(!1):d(e.every(i=>n.some(o=>o.value===i.value)))},supersetOf:(r,e,t)=>{let n=t.eval(r,ve(r));return n.length===0?d(!0):e.length===0?d(!1):d(n.every(i=>e.some(o=>o.value===i.value)))},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)=>d(e.length===O.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>L(t.eval(r,[n]))),select:(r,e,t)=>e.map(n=>t.eval(r,[n])).flat(),repeat:Z,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,ve(r)),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,ve(r)),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,ve(r));return Ge([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,ve(r));return[...e,...n]},htmlChecks:(r,e,t)=>[x(!0)],iif:(r,e,t,n,i)=>{let o=t.eval(r,e);if(o.length>1||o.length===1&&typeof o[0].value!="boolean")throw new Error("Expected criterion to evaluate to a Boolean");return L(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);if(typeof t=="boolean")return[{type:l.boolean,value:t}];if(typeof t=="number"&&(t===0||t===1))return d(!!t);if(typeof t=="string"){let n=t.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return d(!0);if(["false","f","no","n","0","0.0"].includes(n))return d(!1)}return[]},convertsToBoolean:(r,e)=>e.length===0?[]:d(O.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(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?[]:d(O.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:l.date,value:Ie(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:d(O.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:l.dateTime,value:Ie(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:d(O.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(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?[]:d(O.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(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?[]:d(O.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(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?[]:d(O.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:l.time,value:Ie("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:d(O.toTime(r,e).length===1),indexOf:(r,e,t)=>_((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>_((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)=>_((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>_((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>_((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>_(t=>t.toUpperCase(),r,e),lower:(r,e)=>_(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>_((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>_((n,i)=>!!new RegExp(i).exec(n),r,e,t),replaceMatches:(r,e,t,n)=>_((i,o,s)=>i.replaceAll(o,s),r,e,t,n),length:(r,e)=>_(t=>t.length,r,e),toChars:(r,e)=>_(t=>t?t.split(""):void 0,r,e),encode:Z,decode:Z,escape:Z,unescape:Z,trim:Z,split:Z,join:(r,e,t)=>{let n=t?.eval(r,ve(r))[0]?.value??"";if(typeof n!="string")throw new Error("Separator must be a string.");return[{type:l.string,value:e.map(i=>i.value?.toString()??"").join(n)}]},abs:(r,e)=>W(Math.abs,r,e),ceiling:(r,e)=>W(Math.ceil,r,e),exp:(r,e)=>W(Math.exp,r,e),floor:(r,e)=>W(Math.floor,r,e),ln:(r,e)=>W(Math.log,r,e),log:(r,e,t)=>W((n,i)=>Math.log(n)/Math.log(i),r,e,t),power:(r,e,t)=>W(Math.pow,r,e,t),round:(r,e)=>W(Math.round,r,e),sqrt:(r,e)=>W(Math.sqrt,r,e),truncate:(r,e)=>W(t=>t|0,r,e),children:Z,descendants:Z,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=O.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=O.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=Je(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 q?n=t.name:t instanceof X&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:l.boolean,value:He(i,n)})):[]},not:(r,e)=>O.toBoolean(r,e).map(t=>({type:l.boolean,value:!t.value})),resolve:(r,e)=>e.map(t=>{let n=t.value,i;if(typeof n=="string")i=n;else if(typeof n=="object"){let o=n;if(o.resource)return x(o.resource);o.reference?i=o.reference:o.type&&o.identifier&&(i=`${o.type}?identifier=${o.identifier.system}|${o.identifier.value}`)}if(i?.includes("?")){let[o]=i.split("?");return{type:o,value:{resourceType:o}}}if(i?.includes("/")){let[o,s]=i.split("/");return{type:o,value:{resourceType:o,id:s}}}return{type:l.BackboneElement,value:void 0}}).filter(t=>!!t.value),as:(r,e)=>e,type:(r,e)=>e.map(({value:t})=>typeof t=="boolean"?{type:l.BackboneElement,value:{namespace:"System",name:"Boolean"}}:typeof t=="number"?{type:l.BackboneElement,value:{namespace:"System",name:"Integer"}}:N(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 _(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=G(t,1);if(typeof i!="string")throw new Error("String function cannot be called with non-string");let o=r(i,...n.map(s=>s?.eval(e,t)[0]?.value));return o===void 0?[]:Array.isArray(o)?o.map(x):[x(o)]}function W(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=G(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 G(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}function ve(r){let e=r;for(;e.parent?.variables.$this;)e=e.parent;return[e.variables.$this]}var Xe=class{constructor(e,t){this.original=e;this.child=t}eval(e,t){try{if(t.length>0){let n=[];for(let i of t)n.push(this.child.eval({parent:e,variables:{$this:i}},[i]));return n.flat()}else return this.child.eval(e,[])}catch(n){throw new Error(`FhirPathError on "${this.original}": ${n}`,{cause: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()}},q=class{constructor(e){this.name=e}eval(e,t){if(this.name==="$this")return t;let n=this.getVariable(e);if(n)return[n];if(this.name.startsWith("%"))throw new Error(`Undefined variable ${this.name}`);return t.flatMap(i=>this.evalValue(i)).filter(i=>i?.value!==void 0)}getVariable(e){let t=e.variables[this.name];if(t!==void 0)return t;if(e.parent)return this.getVariable(e.parent)}evalValue(e){let t=e.value;if(!(!t||typeof t!="object"))return N(t)&&t.resourceType===this.name?e:w(e,this.name)}toString(){return this.name}},et=class{eval(){return[]}toString(){return"{}"}},tt=class extends Ue{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()}},ce=class extends K{constructor(e,t){super("as",e,t)}eval(e,t){return O.ofType(e,this.left.eval(e,t),this.right)}},P=class extends K{},I=class extends P{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"?d(p):A(s)?[{type:l.Quantity,value:{...s,value:p}}]:[x(p)]}},rt=class extends K{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 P{constructor(e,t){super("contains",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return d(n.some(o=>o.value===i[0].value))}},it=class extends P{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?d(i.some(o=>o.value===n.value)):[]}},X=class extends K{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()}`}},Te=class extends K{constructor(e,t){super("|",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Ge([...n,...i])}},ot=class extends P{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return $t(n,i)}},st=class extends P{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return jt($t(n,i))}},at=class extends P{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Wt(n,i)}},ct=class extends P{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return jt(Wt(n,i))}},ue=class extends P{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 d(He(n[0],i))}},ut=class extends P{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?d(!0):n?.value===!1||i?.value===!1?d(!1):[]}},lt=class extends P{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?d(!1):n?.value||i?.value?d(!0):[]}},pt=class extends P{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?[]:d(n.value!==i.value)}},dt=class extends P{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?d(!0):!n||!i?[]:d(!1)}},H=class{constructor(e,t){this.name=e;this.args=t}eval(e,t){let n=O[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(", ")})`}},le=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 la=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],ee=class{constructor(e,t,n,i){this.result=[];this.pos={index:0,line:1,column:0};this.markStack=[];this.str=e,this.keywords=t,this.operators=n,this.dateTimeLiterals=!!i?.dateTimeLiterals,this.symbolRegex=i?.symbolRegex??/[$\w%]/}tokenize(){for(;this.pos.index<this.str.length;){let e=this.consumeToken();e&&this.result.push(e)}return this.result}prevToken(){return this.result.slice(-1)[0]}peekToken(){this.mark();let e=this.consumeToken();return this.reset(),e}consumeToken(){this.consumeWhitespace();let e=this.curr();if(!e)return;this.mark();let t=this.peek();return e==="/"&&t==="*"?this.consumeMultiLineComment():e==="/"&&t==="/"?this.consumeSingleLineComment():e==="'"||e==='"'?this.consumeString(e):e==="`"?this.consumeBacktickSymbol():e==="@"?this.consumeDateTime():/\d/.exec(e)?this.consumeNumber():/\w/.exec(e)?this.consumeSymbol():(e==="$"||e==="%")&&/\w/.exec(t)?this.consumeSymbol():this.consumeOperator()}consumeWhitespace(){this.consumeWhile(()=>/\s/.exec(this.curr()))}consumeMultiLineComment(){let e=this.pos.index;return this.consumeWhile(()=>this.curr()!=="*"||this.peek()!=="/"),this.advance(),this.advance(),this.buildToken("Comment",this.str.substring(e,this.pos.index))}consumeSingleLineComment(){return this.buildToken("Comment",this.consumeWhile(()=>this.curr()!==`
2
2
  `))}consumeString(e){this.advance();let t=this.buildToken("String",this.consumeWhile(()=>this.prev()==="\\"||this.curr()!==e));return this.advance(),t}consumeBacktickSymbol(){this.advance();let e=this.buildToken("Symbol",this.consumeWhile(()=>this.curr()!=="`"));return this.advance(),e}consumeDateTime(){this.advance();let e=this.pos.index;this.consumeWhile(()=>/[\d-]/.exec(this.curr()));let t=!1,n=!1;this.curr()==="T"&&(t=!0,this.advance(),this.consumeWhile(()=>/[\d:]/.exec(this.curr())),this.curr()==="."&&/\d/.exec(this.peek())&&(this.advance(),this.consumeWhile(()=>/\d/.exec(this.curr()))),this.curr()==="Z"?(n=!0,this.advance()):(this.curr()==="+"||this.curr()==="-")&&(n=!0,this.advance(),this.consumeWhile(()=>/[\d:]/.exec(this.curr()))));let i=this.str.substring(e,this.pos.index);return i.endsWith("T")?i=i.substring(0,i.length-1):!i.startsWith("T")&&t&&!n&&(i+="Z"),this.buildToken("DateTime",i)}consumeNumber(){let e=this.pos.index,t="Number";return this.consumeWhile(()=>/\d/.exec(this.curr())),this.curr()==="."&&/\d/.exec(this.peek())&&(this.advance(),this.consumeWhile(()=>/\d/.exec(this.curr()))),this.curr()==="-"&&this.dateTimeLiterals?(this.pos.index=e-1,this.consumeDateTime()):(this.curr()===" "&&pa(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 pa(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&la.includes(r.value)))}var ft=["true","false"],mt=["!=","!~","<=",">=","{}","->"];function Ri(r){return new ee(r,ft,mt).tokenize()}var y={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},da={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},fa={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new le(e,t)},precedence:y.Indexer},ma={parse(r,e){if(!(e instanceof q))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new H(e.name,t)},precedence:y.FunctionCall};function ha(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 ke(){return new Be().registerPrefix("String",{parse:(r,e)=>new M({type:l.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new M({type:l.dateTime,value:Ie(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new M({type:l.Quantity,value:ha(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 q(e.value)}).registerPrefix("{}",{parse:()=>new et}).registerPrefix("(",da).registerInfix("[",fa).registerInfix("(",ma).prefix("+",y.UnaryAdd,(r,e)=>new tt("+",e,t=>t)).prefix("-",y.UnarySubtract,(r,e)=>new I("-",e,e,(t,n)=>-n)).infixLeft(".",y.Dot,(r,e,t)=>new X(r,t)).infixLeft("/",y.Divide,(r,e,t)=>new I("/",r,t,(n,i)=>n/i)).infixLeft("*",y.Multiply,(r,e,t)=>new I("*",r,t,(n,i)=>n*i)).infixLeft("+",y.Add,(r,e,t)=>new I("+",r,t,(n,i)=>n+i)).infixLeft("-",y.Subtract,(r,e,t)=>new I("-",r,t,(n,i)=>n-i)).infixLeft("|",y.Union,(r,e,t)=>new Te(r,t)).infixLeft("=",y.Equals,(r,e,t)=>new ot(r,t)).infixLeft("!=",y.NotEquals,(r,e,t)=>new st(r,t)).infixLeft("~",y.Equivalent,(r,e,t)=>new at(r,t)).infixLeft("!~",y.NotEquivalent,(r,e,t)=>new ct(r,t)).infixLeft("<",y.LessThan,(r,e,t)=>new I("<",r,t,(n,i)=>n<i)).infixLeft("<=",y.LessThanOrEquals,(r,e,t)=>new I("<=",r,t,(n,i)=>n<=i)).infixLeft(">",y.GreaterThan,(r,e,t)=>new I(">",r,t,(n,i)=>n>i)).infixLeft(">=",y.GreaterThanOrEquals,(r,e,t)=>new I(">=",r,t,(n,i)=>n>=i)).infixLeft("&",y.Ampersand,(r,e,t)=>new rt(r,t)).infixLeft("and",y.And,(r,e,t)=>new ut(r,t)).infixLeft("as",y.As,(r,e,t)=>new ce(r,t)).infixLeft("contains",y.Contains,(r,e,t)=>new nt(r,t)).infixLeft("div",y.Divide,(r,e,t)=>new I("div",r,t,(n,i)=>n/i|0)).infixLeft("in",y.In,(r,e,t)=>new it(r,t)).infixLeft("is",y.Is,(r,e,t)=>new ue(r,t)).infixLeft("mod",y.Modulo,(r,e,t)=>new I("mod",r,t,(n,i)=>n%i)).infixLeft("or",y.Or,(r,e,t)=>new lt(r,t)).infixLeft("xor",y.Xor,(r,e,t)=>new pt(r,t)).infixLeft("implies",y.Implies,(r,e,t)=>new dt(r,t))}var ya=ke();function Xt(r){return new Xe(r,ya.construct(Ri(r)).consumeAndParse())}function Se(r,e){let t=Array.isArray(e)?e:[e];for(let n=0;n<t.length;n++){let i=t[n];typeof i=="object"&&"type"in i&&"value"in i||(t[n]=x(t[n]))}return F(r,t).map(n=>n.value)}function F(r,e,t){let n=t??{};return Xt(r).eval({variables:n},e).map(o=>({type:o.type,value:o.value?.valueOf()}))}var nn=(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))(nn||{});function er(r,e){let t=D.types[r]?.searchParamsDetails?.[e.code];return t||(t=xa(r,e)),t}function ga(r,e,t){let n=D.types[r];n||(n={},D.types[r]=n),n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function xa(r,e){let t=e.code,n=Sa(t),i=on(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let c=ht(a),u=Zr(()=>c.join("."));c.length===1&&c[0]instanceof P?o.propertyTypes.add("boolean"):u().endsWith("extension.value.code")||u().endsWith("extension.value.coding.code")?(o.array=!0,o.propertyTypes.add("code")):Pi(o,ht(a),r,1),u().endsWith("extension.valueDateTime")&&(o.array=!1)}let s={columnName:n,type:Ea(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return ga(r,t,s),s}function Pi(r,e,t,n){let i=e[n];if(i instanceof ce){r.propertyTypes.add(i.right.toString());return}if(i instanceof H){va(r,i);return}let o=i.toString(),s=Qe(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 le&&(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;Ta(p)&&(p=s.type[0].code),Pi(r,e,p,c)}}function va(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 ue){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function Ta(r){return r==="Element"||r==="BackboneElement"}function Sa(r){return r.split("-").reduce((e,t,n)=>e+(n?C(t):t),"")}function Ea(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 on(r,e){let t=[],n=Xt(e);return rn(r,n.child,t),t}function ba(r,e){let t=on(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function rn(r,e,t){e instanceof Te?(rn(r,e.left,t),rn(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function ht(r){if(r instanceof ce||r instanceof le)return[ht(r.left),r].flat();if(r instanceof P)return[r];if(r instanceof X)return[ht(r.left),ht(r.right)].flat();if(r instanceof H){if(r.name==="where"&&!(r.args[0]instanceof ue))return[];if(r.name==="last")return[]}return[r]}var Ra=20,sn=(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.PRESENT="present",T.IDENTIFIER="identifier",T.ITERATE="iterate",T))(sn||{}),Ai={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"},an={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function te(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 Aa(i,o)}function Pa(r){return te(r)}function Ca(r){return te(r)}function wa(r){return te(r)}function Aa(r,e){let t={resourceType:r};for(let[n,i]of e)Oa(t,n,i);return t}function Oa(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=xe(r.filters,{code:e,operator:"eq",value:t});return}switch(n){case"_sort":Ia(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=Ci(t);i==="iterate"&&(s.modifier="iterate"),r.include=xe(r.include,s);break}case"_revinclude":{let s=Ci(t);i==="iterate"&&(s.modifier="iterate"),r.revInclude=xe(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=D.types[r.resourceType]?.searchParams?.[n];s?r.filters=xe(r.filters,Oi(s,i,t)):r.filters=xe(r.filters,Da(n,i,t))}}}}function Ia(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 Oi(r,e,t){if(e==="missing")return{code:r.code,operator:"missing",value:t};switch(r.type){case"number":case"date":case"quantity":return ka(r,t);case"reference":case"string":case"token":case"uri":return Va(r,e,t);default:throw new Error("Unrecognized search parameter type: "+r.type)}}function ka(r,e){let{operator:t,value:n}=Ma(e);return{code:r.code,operator:t,value:n}}function Va(r,e,t){return{code:r.code,operator:Na(e),value:t}}function Da(r,e,t){let n="eq";if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in an&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function Ma(r){let e=r.substring(0,2),t=an[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function Na(r){return Ai[r]??"eq"}function Ci(r){let e=r.split(":");if(e.includes("*"))throw new f(R("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new f(R(`Invalid include value '${r}': must be of the form ResourceType:search-parameter`));if(e.length===2)return{resourceType:e[0],searchParam:e[1]};if(e.length===3)return{resourceType:e[0],searchParam:e[1],targetType:e[2]};throw new f(R(`Invalid include value '${r}'`))}var Fa=/{{([^{}]+)}}/g;function La(r,e){return r=r.replaceAll(Fa,(t,n)=>{let i=F(n,[],e);return i.length!==1?"":tn(i[0])}),te(r)}function _a(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(Ua(t))),r.sortRules&&r.sortRules.length>0&&e.push(Ba(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(wi("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(wi("_revinclude",t))),e.length===0?"":(Ye(e),"?"+e.join("&"))}function Ua(r){let e=r.operator in Ai?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in an?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function Ba(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function wi(r,e){return r+(e.modifier?":"+e.modifier:"")+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function yt(r){let e=[],t="",n=!1;for(let i of r)n?(t+=i,n=!1):i==="\\"?n=!0:i===","?(e.push(t),t=""):t+=i;return e.push(t),e}function gt(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!qa(r,e,t))return!1}return!0}function qa(r,e,t){let n=D.types[e.resourceType]?.searchParams?.[t.code];if(!n)return!1;if(t.operator==="missing"||t.operator==="present")return ja(r,t,n);switch(n.type){case"reference":return $a(r,t,n);case"string":case"uri":return Ii(r,t,n);case"token":return Wa(r,t,n);case"date":return Ka(r,t,n);default:return!1}}function ja(r,e,t){let i=Se(t.expression,r).length>0;return(e.operator==="missing"&&e.value==="false"||e.operator==="present"&&e.value==="true")===i}function $a(r,e,t){let n=Se(t.expression,r),i=tr(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 yt(e.value)){let a=o.includes(s);if(!a&&e.code==="_compartment"&&(a=o.some(c=>c?.endsWith("/"+s))),a)return!i}return i}function Wa(r,e,t){return er(r.resourceType,t).type==="BOOLEAN"?Ga(r,e,t):Ii(r,e,t,!0)}function Ga(r,e,t){let n=Se(t.expression,r),i=e.value==="true",o=n.includes(i);return tr(e.operator)?!o:o}function Ii(r,e,t,n){let o=er(r.resourceType,t).elementDefinitions?.[0].type?.[0].code,s=Se(t.expression,r),a=yt(e.value),c=tr(e.operator);for(let u of s)for(let p of a){let m;if(o===l.Identifier?m=Ha(u,e.operator,p):o===l.CodeableConcept?m=Qa(u,e.operator,p):m=cn(u,e.operator,p,n),m)return!c}return c}function cn(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return cn(r,e,o,!1)&&(!s||cn(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 Ha(r,e,t){if(t.includes("|")){let[n,i]=t.split("|");return r.system?.toLowerCase()===n.toLowerCase()&&r.value?.toLowerCase()===i.toLowerCase()}return r.value?.toLowerCase()===t.toLowerCase()}function Qa(r,e,t){if(t.includes("|")){let[n,i]=t.split("|");return r.coding?.some(o=>o.system?.toLowerCase()===n.toLowerCase()&&o.code?.toLowerCase()===i.toLowerCase())??!1}return r.text?.toLowerCase()===t.toLowerCase()||(r.coding?.some(n=>n.code?.toLowerCase()===t.toLowerCase())??!1)}function Ka(r,e,t){let n=Se(t.expression,r),i=yt(e.value),o=tr(e.operator);for(let s of n)for(let a of i)if(za(s,e.operator,a))return!o;return o}function za(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 tr(r){return r==="ne"||r==="not"}var Ja={resourceType:"*"},ki=["DomainConfiguration","JsonWebKey","Login"],Vi=["PasswordChangeRequest","UserSecurityRequest","Project","ProjectMembership","User"],Di=(b=>(b.READ="read",b.VREAD="vread",b.UPDATE="update",b.PATCH="patch",b.DELETE="delete",b.HISTORY="history",b.HISTORY_INSTANCE="history-instance",b.HISTORY_TYPE="history-type",b.HISTORY_SYSTEM="history-system",b.CREATE="create",b.SEARCH="search",b.SEARCH_TYPE="search-type",b.SEARCH_SYSTEM="search-system",b.SEARCH_COMPARTMENT="search-compartment",b.CAPABILITIES="capabilities",b.TRANSACTION="transaction",b.BATCH="batch",b.OPERATION="operation",b))(Di||{}),Ya=["read","vread","history","history-instance"];function Za(r,e){if(r.resource){for(let t of r.resource)if(un(t.resourceType,e))return!0}return!1}function Mi(r,e){if(ki.includes(e))return!1;if(r.resource){for(let t of r.resource)if(un(t.resourceType,e)&&!t.readonly)return!0}return!1}function Xa(r,e){let t=e.resourceType;return Mi(r,t)?Ni(r,e,!1):!1}function Ni(r,e,t){if(r.resource){for(let n of r.resource)if(Fi(e,t?"read":"update",n))return!0}return!1}function ec(r,e,t){if(!t)return Ja;if(t.resource){for(let n of t.resource)if(Fi(r,e,n))return n}}function Fi(r,e,t){let n=r.resourceType;return!(!un(t.resourceType,n)||t.readonly&&!Ya.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!gt(r,te(t.criteria)))}function un(r,e){return r===e||r==="*"&&!Vi.includes(e)}function ln(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 pn(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 rr(){let r=new Uint32Array(28);return crypto.getRandomValues(r),zr(r.buffer)}async function dn(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function pe(){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 Li(r){let e={};r=se(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]=pe(),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)=>tc(i,o,e),2);return _i(JSON.parse(n))}function tc(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 _i(r){let e=nc(r),{sorted:t,cycles:n}=rc(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 rc(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 Ui(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(ie(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else Ui(n,e)}}function nc(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&&Ui(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function ic(r){r=se(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=pe());return Li(e)}var xt=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 k={CSS:"text/css",DICOM:"application/dicom",FAVICON:"image/vnd.microsoft.icon",FHIR_JSON:"application/fhir+json",FORM_URL_ENCODED:"application/x-www-form-urlencoded",HL7_V2:"x-application/hl7-v2+er7",HTML:"text/html",JAVASCRIPT:"text/javascript",JSON:"application/json",JSON_PATCH:"application/json-patch+json",PNG:"image/png",SCIM_JSON:"application/scim+json",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript",PING:"x-application/ping"};var Ve=class{constructor(){this.listeners={}}addEventListener(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)}removeEventListener(e,t){let n=this.listeners[e];if(n){for(let i=0;i<n.length;i++)if(n[i]===t){n.splice(i,1);return}}}dispatchEvent(e){let t=this.listeners[e.type];if(t)for(let n of t)n.call(this,e);return!e.defaultPrevented}removeAllListeners(){this.listeners={}}},de=class{constructor(){this.emitter=new Ve}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}removeAllListeners(){this.emitter.removeAllListeners()}};var nr={"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"},qi=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],ir=["DiagnosticReport-update"];function fn(r){return ir.includes(r)}function mn(r){if(ir.includes(r))throw new f(h(`'context.version' is required for '${r}'.`))}var ji={"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 $i(r){return qi.includes(r)}function hn(r){return!!r.endpoint}function or(r){if(!Tt(r))throw new f(h("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 hn(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function Tt(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(!nr[o])return!1;return!(hn(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function Bi(r,e,t,n){if(typeof e!="object")throw new f(h(`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 f(h(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new f(h(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!$i(e.resourceType))throw new f(h(`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 f(h(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${i}.`))}}function oc(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),!n.isArray)Bi(r,e.resource,t,n);else{let{resources:o}=e;if(!o)throw new f(h(`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)Bi(r,s,t,n)}}function sc(r,e){let t=new Map,n=ji[r];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new f(h(`Key '${o}' not found for event '${r}'. Make sure to add only valid keys.`));oc(r,e[i],i,n[o],t)}for(let[i,o]of Object.entries(n)){if(!(o.optional||t.has(i)))throw new f(h(`Missing required key '${i}' on context for '${r}' event.`));if(!o.manyAllowed&&(t.get(i)||0)>1)throw new f(h(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function sr(r,e,t,n){if(!(r&&typeof r=="string"))throw new f(h("Must provide a topic."));if(!nr[e])throw new f(h(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(nr).join(", ")}`));if(typeof t!="object")throw new f(h("context must be a context object or array of context objects."));if(ir.includes(e)&&!n)throw new f(h(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return sc(e,i),{timestamp:new Date().toISOString(),id:pe(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var vt=class extends de{constructor(e){if(super(),this.subRequest=e,!e.endpoint)throw new f(h("Subscription request should contain an endpoint."));if(!Tt(e))throw new f(h("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 ac(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=ln(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 yn(r){return r.split(".").length===3}function St(r){let[e,t,n]=r.split(".");return ac(t)}function gn(r){try{return typeof St(r).login_id=="string"}catch{return!1}}function xn(r){try{let t=St(r).exp;return typeof t=="number"?t*1e3:void 0}catch{return}}var Et=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,k.TEXT)}async delete(e){await this.medplum.delete(`keyvalue/v1/${e}`)}};var Wi;Wi=Symbol.toStringTag;var V=class{constructor(e){this[Wi]="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)}};var De=class{constructor(e){this.storage=e??(typeof localStorage<"u"?localStorage:new ar)}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?Qr(t):void 0)}},ar=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]}},vn=class extends De{constructor(){super();this.initResolve=()=>{};this.initialized=!1,this.initPromise=new Promise(t=>{this.initResolve=t})}setInitialized(){this.initialized||(this.initResolve(),this.initialized=!0)}getInitPromise(){return this.initPromise}get isInitialized(){return this.initialized}};var cr=class extends de{constructor(t){super();this.bufferedAmount=-1/0;this.extensions="NOT_IMPLEMENTED";this.messageBuffer=[];let n=new WebSocket(t);n.addEventListener("open",()=>{if(this.messageBuffer.length){let i=this.messageBuffer;for(let o of i)n.send(o)}this.dispatchEvent(new Event("open"))}),n.addEventListener("error",i=>{this.dispatchEvent(i)}),n.addEventListener("message",i=>{this.dispatchEvent(i)}),n.addEventListener("close",i=>{this.dispatchEvent(i)}),this.ws=n}get readyState(){return this.ws.readyState}close(){this.ws.close()}send(t){if(this.ws.readyState!==WebSocket.OPEN){this.messageBuffer.push(t);return}try{this.ws.send(t)}catch(n){this.dispatchEvent(new ErrorEvent("error",{error:n,message:n.message})),this.messageBuffer.push(t)}}},Me=class extends de{constructor(...e){super(),this.criteria=new Set(e)}getCriteria(){return this.criteria}_addCriteria(e){this.criteria.add(e)}_removeCriteria(e){this.criteria.delete(e)}},Tn=class{constructor(e,t){this.criteria=e,this.emitter=new Me(e),this.refCount=1,this.subscriptionProps=t?{...t}:void 0}},bt=class{constructor(e,t,n){if(!(e instanceof Rt))throw new f(h("First arg of constructor should be a `MedplumClient`"));let i;try{i=new URL(t).toString()}catch{throw new f(h("Not a valid URL"))}let o=n?.RobustWebSocket?new n.RobustWebSocket(i):new cr(i);this.medplum=e,this.ws=o,this.masterSubEmitter=new Me,this.criteriaEntries=new Map,this.criteriaEntriesBySubscriptionId=new Map,this.wsClosed=!1,this.setupWebSocketListeners()}setupWebSocketListeners(){let e=this.ws;e.addEventListener("message",t=>{try{let n=JSON.parse(t.data),i=n?.entry?.[0]?.resource;if(i.type==="heartbeat"){this.masterSubEmitter?.dispatchEvent({type:"heartbeat",payload:n});return}this.masterSubEmitter?.dispatchEvent({type:"message",payload:n});let o=this.criteriaEntriesBySubscriptionId.get(ze(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 o of this.getAllCriteriaEmitters())o.dispatchEvent(i)}}),e.addEventListener("error",()=>{let t={type:"error",payload:new f(br(new Error("WebSocket error")))};this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent(t)}),e.addEventListener("close",()=>{let t={type:"close"};this.wsClosed&&this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent(t)})}emitConnect(e){let t={type:"connect",payload:{subscriptionId:e.subscriptionId}};this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent(t)}emitError(e,t){let n={type:"error",payload:t};this.masterSubEmitter?.dispatchEvent(n),e.emitter.dispatchEvent(n)}maybeEmitDisconnect(e){let{subscriptionId:t}=e;if(t){let n={type:"disconnect",payload:{subscriptionId:t}};this.masterSubEmitter?.dispatchEvent(n),e.emitter.dispatchEvent(n)}else console.warn("Called disconnect for `CriteriaEntry` before `subscriptionId` was present.")}async getTokenForCriteria(e){let t=e?.subscriptionId;t||(t=(await this.medplum.createResource({...e.subscriptionProps,resourceType:"Subscription",status:"active",reason:`WebSocket subscription for ${oe(this.medplum.getProfile())}`,channel:{type:"websocket"},criteria:e.criteria})).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 f(h("Failed to get token"));if(!o)throw new f(h("Failed to get URL from $get-ws-binding-token"));return[t,i]}maybeGetCriteriaEntry(e,t){let n=this.criteriaEntries.get(e);if(n){if(!t)return n.bareCriteria;for(let i of n.criteriaWithProps)if(J(t,i.subscriptionProps))return i}}getAllCriteriaEmitters(){let e=[];for(let t of this.criteriaEntries.values()){t.bareCriteria&&e.push(t.bareCriteria.emitter);for(let n of t.criteriaWithProps)e.push(n.emitter)}return e}addCriteriaEntry(e){let{criteria:t,subscriptionProps:n}=e,i;this.criteriaEntries.has(t)?i=this.criteriaEntries.get(t):(i={criteriaWithProps:[]},this.criteriaEntries.set(t,i)),n?i.criteriaWithProps.push(e):i.bareCriteria=e}removeCriteriaEntry(e){let{criteria:t,subscriptionProps:n,subscriptionId:i,token:o}=e;if(!this.criteriaEntries.has(t))return;let s=this.criteriaEntries.get(t);n?s.criteriaWithProps=s.criteriaWithProps.filter(a=>{let c=a.subscriptionProps;return!J(n,c)}):s.bareCriteria=void 0,!s.bareCriteria&&s.criteriaWithProps.length===0&&(this.criteriaEntries.delete(t),this.masterSubEmitter?._removeCriteria(t)),i&&this.criteriaEntriesBySubscriptionId.delete(i),o&&this.ws.send(JSON.stringify({type:"unbind-from-token",payload:{token:o}}))}addCriteria(e,t){this.masterSubEmitter&&this.masterSubEmitter._addCriteria(e);let n=this.maybeGetCriteriaEntry(e,t);if(n)return n.refCount+=1,n.emitter;let i=new Tn(e,t);return this.addCriteriaEntry(i),this.getTokenForCriteria(i).then(([o,s])=>{i.subscriptionId=o,i.token=s,this.criteriaEntriesBySubscriptionId.set(o,i),this.emitConnect(i),this.ws.send(JSON.stringify({type:"bind-with-token",payload:{token:s}}))}).catch(o=>{console.error(o.message),this.emitError(i,o),this.removeCriteriaEntry(i)}),i.emitter}removeCriteria(e,t){let n=this.maybeGetCriteriaEntry(e,t);if(!n){console.warn("Criteria not known to `SubscriptionManager`. Possibly called remove too many times.");return}n.refCount-=1,!(n.refCount>0)&&(this.maybeEmitDisconnect(n),this.removeCriteriaEntry(n))}closeWebSocket(){this.wsClosed||(this.wsClosed=!0,this.ws.close())}getCriteriaCount(){return this.getAllCriteriaEmitters().length}getMasterEmitter(){return this.masterSubEmitter||(this.masterSubEmitter=new Me(...Array.from(this.criteriaEntries.keys()))),this.masterSubEmitter}};async function cc({resource:r,subscription:e,context:t,getPreviousResource:n,logger:i}){if(e.meta?.account&&r.meta?.account?.reference!==e.meta.account.reference)return i?.debug("Ignore resource in different account compartment"),!1;if(!uc(e,i))return i?.debug("Ignore subscription without recognized channel type"),!1;let o=e.criteria;if(!o)return i?.debug("Ignore rest hook missing criteria"),!1;let s=te(o);if(r.resourceType!==s.resourceType)return i?.debug(`Ignore rest hook for different resourceType (wanted "${s.resourceType}", received "${r.resourceType}")`),!1;if(!await Gi(e,r,n))return i?.debug("Ignore rest hook for criteria returning false"),!1;let c=he(e,"https://medplum.com/fhir/StructureDefinition/subscription-supported-interaction");return c&&c.valueCode!==t.interaction?(i?.debug(`Ignore rest hook for different interaction (wanted "${c.valueCode}", received "${t.interaction}")`),!1):gt(r,s)}function uc(r,e){let t=r.channel?.type;return t==="rest-hook"?r.channel?.endpoint?!0:(e?.debug("Ignore rest-hook missing URL"),!1):t==="websocket"}async function Gi(r,e,t){let n=he(r,"https://medplum.com/fhir/StructureDefinition/fhir-path-criteria-expression");if(!n?.valueString)return!0;let i=await t(e),o={"%current":x(e),"%previous":x(i??{})};return F(n.valueString,[x(e)],o)?.[0]?.value===!0}var lc="3.1.9-eb1d4ee09",pc="medplum-cli",zi=k.FHIR_JSON+", */*; q=0.1",dc="https://api.medplum.com/",fc=1e3,mc=6e4,hc=0,yc="Binary/",Hi={resourceType:"Device",id:"system",deviceName:[{type:"model-name",name:"System"}]},Ji=(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))(Ji||{}),Yi=(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))(Yi||{}),Zi=(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))(Zi||{}),Xi=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(Xi||{}),Rt=class extends Ve{constructor(t){super();this.initComplete=!0;if(t?.baseUrl&&!t.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");this.options=t??{},this.fetch=t?.fetch??gc(),this.storage=t?.storage??new De,this.createPdfImpl=t?.createPdf,this.baseUrl=zt(t?.baseUrl??dc),this.fhirBaseUrl=B(this.baseUrl,t?.fhirUrlPath??"fhir/R4"),this.authorizeUrl=B(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=B(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=B(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"?hc:mc),this.cacheTime>0?this.requestCache=new xt(t?.resourceCacheSize??fc):this.requestCache=void 0,t?.autoBatchTime?(this.autoBatchTime=t.autoBatchTime,this.autoBatchQueue=[]):(this.autoBatchTime=0,this.autoBatchQueue=void 0),t?.accessToken&&this.setAccessToken(t.accessToken),this.storage.getInitPromise===void 0?(t?.accessToken||this.attemptResumeActiveLogin().catch(console.error),this.initPromise=Promise.resolve()):(this.initComplete=!1,this.initPromise=this.storage.getInitPromise(),this.initPromise.then(()=>{t?.accessToken||this.attemptResumeActiveLogin().catch(console.error),this.initComplete=!0}).catch(console.error)),this.setupStorageListener()}get isInitialized(){return this.initComplete}getInitPromise(){return this.initPromise}async attemptResumeActiveLogin(){let t=this.getActiveLogin();t&&(this.setAccessToken(t.accessToken,t.refreshToken),await this.refreshProfile())}getBaseUrl(){return this.baseUrl}getAuthorizeUrl(){return this.authorizeUrl}getTokenUrl(){return this.tokenUrl}getLogoutUrl(){return this.logoutUrl}clear(){this.storage.clear(),typeof window<"u"&&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=B(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 V(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,k.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(B(this.fhirBaseUrl,t.join("/")))}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=en(n)),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 V((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 V(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 V(this.search(t,n,i).then(Sn));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 Sn(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 Hi;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 V(Promise.reject(new Error("Missing reference")));if(i==="system")return new V(Promise.resolve(Hi));let[o,s]=i.split("/");return!o||!s?new V(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(Dr(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new V((async()=>{let s=`{
3
+ `?(this.pos.line++,this.pos.column=0):this.pos.column++}buildToken(e,t){let n=this.markStack.pop();if(!n)throw new Error("No mark for token");return{id:e,value:t,...n}}};function pa(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&la.includes(r.value)))}var ft=["true","false"],mt=["!=","!~","<=",">=","{}","->"];function Ri(r){return new ee(r,ft,mt).tokenize()}var y={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},da={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},fa={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new le(e,t)},precedence:y.Indexer},ma={parse(r,e){if(!(e instanceof q))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new H(e.name,t)},precedence:y.FunctionCall};function ha(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 ke(){return new Be().registerPrefix("String",{parse:(r,e)=>new M({type:l.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new M({type:l.dateTime,value:Ie(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new M({type:l.Quantity,value:ha(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 q(e.value)}).registerPrefix("{}",{parse:()=>new et}).registerPrefix("(",da).registerInfix("[",fa).registerInfix("(",ma).prefix("+",y.UnaryAdd,(r,e)=>new tt("+",e,t=>t)).prefix("-",y.UnarySubtract,(r,e)=>new I("-",e,e,(t,n)=>-n)).infixLeft(".",y.Dot,(r,e,t)=>new X(r,t)).infixLeft("/",y.Divide,(r,e,t)=>new I("/",r,t,(n,i)=>n/i)).infixLeft("*",y.Multiply,(r,e,t)=>new I("*",r,t,(n,i)=>n*i)).infixLeft("+",y.Add,(r,e,t)=>new I("+",r,t,(n,i)=>n+i)).infixLeft("-",y.Subtract,(r,e,t)=>new I("-",r,t,(n,i)=>n-i)).infixLeft("|",y.Union,(r,e,t)=>new Te(r,t)).infixLeft("=",y.Equals,(r,e,t)=>new ot(r,t)).infixLeft("!=",y.NotEquals,(r,e,t)=>new st(r,t)).infixLeft("~",y.Equivalent,(r,e,t)=>new at(r,t)).infixLeft("!~",y.NotEquivalent,(r,e,t)=>new ct(r,t)).infixLeft("<",y.LessThan,(r,e,t)=>new I("<",r,t,(n,i)=>n<i)).infixLeft("<=",y.LessThanOrEquals,(r,e,t)=>new I("<=",r,t,(n,i)=>n<=i)).infixLeft(">",y.GreaterThan,(r,e,t)=>new I(">",r,t,(n,i)=>n>i)).infixLeft(">=",y.GreaterThanOrEquals,(r,e,t)=>new I(">=",r,t,(n,i)=>n>=i)).infixLeft("&",y.Ampersand,(r,e,t)=>new rt(r,t)).infixLeft("and",y.And,(r,e,t)=>new ut(r,t)).infixLeft("as",y.As,(r,e,t)=>new ce(r,t)).infixLeft("contains",y.Contains,(r,e,t)=>new nt(r,t)).infixLeft("div",y.Divide,(r,e,t)=>new I("div",r,t,(n,i)=>n/i|0)).infixLeft("in",y.In,(r,e,t)=>new it(r,t)).infixLeft("is",y.Is,(r,e,t)=>new ue(r,t)).infixLeft("mod",y.Modulo,(r,e,t)=>new I("mod",r,t,(n,i)=>n%i)).infixLeft("or",y.Or,(r,e,t)=>new lt(r,t)).infixLeft("xor",y.Xor,(r,e,t)=>new pt(r,t)).infixLeft("implies",y.Implies,(r,e,t)=>new dt(r,t))}var ya=ke();function Xt(r){return new Xe(r,ya.construct(Ri(r)).consumeAndParse())}function Se(r,e){let t=Array.isArray(e)?e:[e];for(let n=0;n<t.length;n++){let i=t[n];typeof i=="object"&&"type"in i&&"value"in i||(t[n]=x(t[n]))}return F(r,t).map(n=>n.value)}function F(r,e,t){let n=t??{};return Xt(r).eval({variables:n},e).map(o=>({type:o.type,value:o.value?.valueOf()}))}var nn=(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))(nn||{});function er(r,e){let t=D.types[r]?.searchParamsDetails?.[e.code];return t||(t=xa(r,e)),t}function ga(r,e,t){let n=D.types[r];n||(n={},D.types[r]=n),n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function xa(r,e){let t=e.code,n=Sa(t),i=on(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let c=ht(a),u=Zr(()=>c.join("."));c.length===1&&c[0]instanceof P?o.propertyTypes.add("boolean"):u().endsWith("extension.value.code")||u().endsWith("extension.value.coding.code")?(o.array=!0,o.propertyTypes.add("code")):Pi(o,ht(a),r,1),u().endsWith("extension.valueDateTime")&&(o.array=!1)}let s={columnName:n,type:Ea(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return ga(r,t,s),s}function Pi(r,e,t,n){let i=e[n];if(i instanceof ce){r.propertyTypes.add(i.right.toString());return}if(i instanceof H){va(r,i);return}let o=i.toString(),s=Qe(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 le&&(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;Ta(p)&&(p=s.type[0].code),Pi(r,e,p,c)}}function va(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 ue){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function Ta(r){return r==="Element"||r==="BackboneElement"}function Sa(r){return r.split("-").reduce((e,t,n)=>e+(n?C(t):t),"")}function Ea(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 on(r,e){let t=[],n=Xt(e);return rn(r,n.child,t),t}function ba(r,e){let t=on(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function rn(r,e,t){e instanceof Te?(rn(r,e.left,t),rn(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function ht(r){if(r instanceof ce||r instanceof le)return[ht(r.left),r].flat();if(r instanceof P)return[r];if(r instanceof X)return[ht(r.left),ht(r.right)].flat();if(r instanceof H){if(r.name==="where"&&!(r.args[0]instanceof ue))return[];if(r.name==="last")return[]}return[r]}var Ra=20,sn=(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.PRESENT="present",T.IDENTIFIER="identifier",T.ITERATE="iterate",T))(sn||{}),Ai={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"},an={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function te(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 Aa(i,o)}function Pa(r){return te(r)}function Ca(r){return te(r)}function wa(r){return te(r)}function Aa(r,e){let t={resourceType:r};for(let[n,i]of e)Oa(t,n,i);return t}function Oa(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=xe(r.filters,{code:e,operator:"eq",value:t});return}switch(n){case"_sort":Ia(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=Ci(t);i==="iterate"&&(s.modifier="iterate"),r.include=xe(r.include,s);break}case"_revinclude":{let s=Ci(t);i==="iterate"&&(s.modifier="iterate"),r.revInclude=xe(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=D.types[r.resourceType]?.searchParams?.[n];s?r.filters=xe(r.filters,Oi(s,i,t)):r.filters=xe(r.filters,Da(n,i,t))}}}}function Ia(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 Oi(r,e,t){if(e==="missing")return{code:r.code,operator:"missing",value:t};switch(r.type){case"number":case"date":case"quantity":return ka(r,t);case"reference":case"string":case"token":case"uri":return Va(r,e,t);default:throw new Error("Unrecognized search parameter type: "+r.type)}}function ka(r,e){let{operator:t,value:n}=Ma(e);return{code:r.code,operator:t,value:n}}function Va(r,e,t){return{code:r.code,operator:Na(e),value:t}}function Da(r,e,t){let n="eq";if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in an&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function Ma(r){let e=r.substring(0,2),t=an[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function Na(r){return Ai[r]??"eq"}function Ci(r){let e=r.split(":");if(e.includes("*"))throw new f(R("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new f(R(`Invalid include value '${r}': must be of the form ResourceType:search-parameter`));if(e.length===2)return{resourceType:e[0],searchParam:e[1]};if(e.length===3)return{resourceType:e[0],searchParam:e[1],targetType:e[2]};throw new f(R(`Invalid include value '${r}'`))}var Fa=/{{([^{}]+)}}/g;function La(r,e){return r=r.replaceAll(Fa,(t,n)=>{let i=F(n,[],e);return i.length!==1?"":tn(i[0])}),te(r)}function _a(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(Ua(t))),r.sortRules&&r.sortRules.length>0&&e.push(Ba(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(wi("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(wi("_revinclude",t))),e.length===0?"":(Ye(e),"?"+e.join("&"))}function Ua(r){let e=r.operator in Ai?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in an?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function Ba(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function wi(r,e){return r+(e.modifier?":"+e.modifier:"")+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function yt(r){let e=[],t="",n=!1;for(let i of r)n?(t+=i,n=!1):i==="\\"?n=!0:i===","?(e.push(t),t=""):t+=i;return e.push(t),e}function gt(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!qa(r,e,t))return!1}return!0}function qa(r,e,t){let n=D.types[e.resourceType]?.searchParams?.[t.code];if(!n)return!1;if(t.operator==="missing"||t.operator==="present")return ja(r,t,n);switch(n.type){case"reference":return $a(r,t,n);case"string":case"uri":return Ii(r,t,n);case"token":return Wa(r,t,n);case"date":return Ka(r,t,n);default:return!1}}function ja(r,e,t){let i=Se(t.expression,r).length>0;return(e.operator==="missing"&&e.value==="false"||e.operator==="present"&&e.value==="true")===i}function $a(r,e,t){let n=Se(t.expression,r),i=tr(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 yt(e.value)){let a=o.includes(s);if(!a&&e.code==="_compartment"&&(a=o.some(c=>c?.endsWith("/"+s))),a)return!i}return i}function Wa(r,e,t){return er(r.resourceType,t).type==="BOOLEAN"?Ga(r,e,t):Ii(r,e,t,!0)}function Ga(r,e,t){let n=Se(t.expression,r),i=e.value==="true",o=n.includes(i);return tr(e.operator)?!o:o}function Ii(r,e,t,n){let o=er(r.resourceType,t).elementDefinitions?.[0].type?.[0].code,s=Se(t.expression,r),a=yt(e.value),c=tr(e.operator);for(let u of s)for(let p of a){let m;if(o===l.Identifier?m=Ha(u,e.operator,p):o===l.CodeableConcept?m=Qa(u,e.operator,p):m=cn(u,e.operator,p,n),m)return!c}return c}function cn(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return cn(r,e,o,!1)&&(!s||cn(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 Ha(r,e,t){if(t.includes("|")){let[n,i]=t.split("|");return r.system?.toLowerCase()===n.toLowerCase()&&r.value?.toLowerCase()===i.toLowerCase()}return r.value?.toLowerCase()===t.toLowerCase()}function Qa(r,e,t){if(t.includes("|")){let[n,i]=t.split("|");return r.coding?.some(o=>o.system?.toLowerCase()===n.toLowerCase()&&o.code?.toLowerCase()===i.toLowerCase())??!1}return r.text?.toLowerCase()===t.toLowerCase()||(r.coding?.some(n=>n.code?.toLowerCase()===t.toLowerCase())??!1)}function Ka(r,e,t){let n=Se(t.expression,r),i=yt(e.value),o=tr(e.operator);for(let s of n)for(let a of i)if(za(s,e.operator,a))return!o;return o}function za(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 tr(r){return r==="ne"||r==="not"}var Ja={resourceType:"*"},ki=["DomainConfiguration","JsonWebKey","Login"],Vi=["PasswordChangeRequest","UserSecurityRequest","Project","ProjectMembership","User"],Di=(b=>(b.READ="read",b.VREAD="vread",b.UPDATE="update",b.PATCH="patch",b.DELETE="delete",b.HISTORY="history",b.HISTORY_INSTANCE="history-instance",b.HISTORY_TYPE="history-type",b.HISTORY_SYSTEM="history-system",b.CREATE="create",b.SEARCH="search",b.SEARCH_TYPE="search-type",b.SEARCH_SYSTEM="search-system",b.SEARCH_COMPARTMENT="search-compartment",b.CAPABILITIES="capabilities",b.TRANSACTION="transaction",b.BATCH="batch",b.OPERATION="operation",b))(Di||{}),Ya=["read","vread","history","history-instance"];function Za(r,e){if(r.resource){for(let t of r.resource)if(un(t.resourceType,e))return!0}return!1}function Mi(r,e){if(ki.includes(e))return!1;if(r.resource){for(let t of r.resource)if(un(t.resourceType,e)&&!t.readonly)return!0}return!1}function Xa(r,e){let t=e.resourceType;return Mi(r,t)?Ni(r,e,!1):!1}function Ni(r,e,t){if(r.resource){for(let n of r.resource)if(Fi(e,t?"read":"update",n))return!0}return!1}function ec(r,e,t){if(!t)return Ja;if(t.resource){for(let n of t.resource)if(Fi(r,e,n))return n}}function Fi(r,e,t){let n=r.resourceType;return!(!un(t.resourceType,n)||t.readonly&&!Ya.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!gt(r,te(t.criteria)))}function un(r,e){return r===e||r==="*"&&!Vi.includes(e)}function ln(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 pn(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 rr(){let r=new Uint32Array(28);return crypto.getRandomValues(r),zr(r.buffer)}async function dn(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function pe(){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 Li(r){let e={};r=se(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]=pe(),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)=>tc(i,o,e),2);return _i(JSON.parse(n))}function tc(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 _i(r){let e=nc(r),{sorted:t,cycles:n}=rc(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 rc(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 Ui(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(ie(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else Ui(n,e)}}function nc(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&&Ui(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function ic(r){r=se(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=pe());return Li(e)}var xt=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 k={CSS:"text/css",DICOM:"application/dicom",FAVICON:"image/vnd.microsoft.icon",FHIR_JSON:"application/fhir+json",FORM_URL_ENCODED:"application/x-www-form-urlencoded",HL7_V2:"x-application/hl7-v2+er7",HTML:"text/html",JAVASCRIPT:"text/javascript",JSON:"application/json",JSON_PATCH:"application/json-patch+json",PNG:"image/png",SCIM_JSON:"application/scim+json",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript",PING:"x-application/ping"};var Ve=class{constructor(){this.listeners={}}addEventListener(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)}removeEventListener(e,t){let n=this.listeners[e];if(n){for(let i=0;i<n.length;i++)if(n[i]===t){n.splice(i,1);return}}}dispatchEvent(e){let t=this.listeners[e.type];if(t)for(let n of t)n.call(this,e);return!e.defaultPrevented}removeAllListeners(){this.listeners={}}},de=class{constructor(){this.emitter=new Ve}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}removeAllListeners(){this.emitter.removeAllListeners()}};var nr={"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"},qi=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],ir=["DiagnosticReport-update"];function fn(r){return ir.includes(r)}function mn(r){if(ir.includes(r))throw new f(h(`'context.version' is required for '${r}'.`))}var ji={"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 $i(r){return qi.includes(r)}function hn(r){return!!r.endpoint}function or(r){if(!Tt(r))throw new f(h("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 hn(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function Tt(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(!nr[o])return!1;return!(hn(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function Bi(r,e,t,n){if(typeof e!="object")throw new f(h(`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 f(h(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new f(h(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!$i(e.resourceType))throw new f(h(`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 f(h(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${i}.`))}}function oc(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),!n.isArray)Bi(r,e.resource,t,n);else{let{resources:o}=e;if(!o)throw new f(h(`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)Bi(r,s,t,n)}}function sc(r,e){let t=new Map,n=ji[r];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new f(h(`Key '${o}' not found for event '${r}'. Make sure to add only valid keys.`));oc(r,e[i],i,n[o],t)}for(let[i,o]of Object.entries(n)){if(!(o.optional||t.has(i)))throw new f(h(`Missing required key '${i}' on context for '${r}' event.`));if(!o.manyAllowed&&(t.get(i)||0)>1)throw new f(h(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function sr(r,e,t,n){if(!(r&&typeof r=="string"))throw new f(h("Must provide a topic."));if(!nr[e])throw new f(h(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(nr).join(", ")}`));if(typeof t!="object")throw new f(h("context must be a context object or array of context objects."));if(ir.includes(e)&&!n)throw new f(h(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return sc(e,i),{timestamp:new Date().toISOString(),id:pe(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var vt=class extends de{constructor(e){if(super(),this.subRequest=e,!e.endpoint)throw new f(h("Subscription request should contain an endpoint."));if(!Tt(e))throw new f(h("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 ac(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=ln(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 yn(r){return r.split(".").length===3}function St(r){let[e,t,n]=r.split(".");return ac(t)}function gn(r){try{return typeof St(r).login_id=="string"}catch{return!1}}function xn(r){try{let t=St(r).exp;return typeof t=="number"?t*1e3:void 0}catch{return}}var Et=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,k.TEXT)}async delete(e){await this.medplum.delete(`keyvalue/v1/${e}`)}};var Wi;Wi=Symbol.toStringTag;var V=class{constructor(e){this[Wi]="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)}};var De=class{constructor(e){this.storage=e??(typeof localStorage<"u"?localStorage:new ar)}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?Qr(t):void 0)}},ar=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]}},vn=class extends De{constructor(){super();this.initResolve=()=>{};this.initialized=!1,this.initPromise=new Promise(t=>{this.initResolve=t})}setInitialized(){this.initialized||(this.initResolve(),this.initialized=!0)}getInitPromise(){return this.initPromise}get isInitialized(){return this.initialized}};var cr=class extends de{constructor(t){super();this.bufferedAmount=-1/0;this.extensions="NOT_IMPLEMENTED";this.messageBuffer=[];let n=new WebSocket(t);n.addEventListener("open",()=>{if(this.messageBuffer.length){let i=this.messageBuffer;for(let o of i)n.send(o)}this.dispatchEvent(new Event("open"))}),n.addEventListener("error",i=>{this.dispatchEvent(i)}),n.addEventListener("message",i=>{this.dispatchEvent(i)}),n.addEventListener("close",i=>{this.dispatchEvent(i)}),this.ws=n}get readyState(){return this.ws.readyState}close(){this.ws.close()}send(t){if(this.ws.readyState!==WebSocket.OPEN){this.messageBuffer.push(t);return}try{this.ws.send(t)}catch(n){this.dispatchEvent(new ErrorEvent("error",{error:n,message:n.message})),this.messageBuffer.push(t)}}},Me=class extends de{constructor(...e){super(),this.criteria=new Set(e)}getCriteria(){return this.criteria}_addCriteria(e){this.criteria.add(e)}_removeCriteria(e){this.criteria.delete(e)}},Tn=class{constructor(e,t){this.criteria=e,this.emitter=new Me(e),this.refCount=1,this.subscriptionProps=t?{...t}:void 0}},bt=class{constructor(e,t,n){if(!(e instanceof Rt))throw new f(h("First arg of constructor should be a `MedplumClient`"));let i;try{i=new URL(t).toString()}catch{throw new f(h("Not a valid URL"))}let o=n?.RobustWebSocket?new n.RobustWebSocket(i):new cr(i);this.medplum=e,this.ws=o,this.masterSubEmitter=new Me,this.criteriaEntries=new Map,this.criteriaEntriesBySubscriptionId=new Map,this.wsClosed=!1,this.setupWebSocketListeners()}setupWebSocketListeners(){let e=this.ws;e.addEventListener("message",t=>{try{let n=JSON.parse(t.data),i=n?.entry?.[0]?.resource;if(i.type==="heartbeat"){this.masterSubEmitter?.dispatchEvent({type:"heartbeat",payload:n});return}this.masterSubEmitter?.dispatchEvent({type:"message",payload:n});let o=this.criteriaEntriesBySubscriptionId.get(ze(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 o of this.getAllCriteriaEmitters())o.dispatchEvent(i)}}),e.addEventListener("error",()=>{let t={type:"error",payload:new f(br(new Error("WebSocket error")))};this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent(t)}),e.addEventListener("close",()=>{let t={type:"close"};this.wsClosed&&this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent(t)})}emitConnect(e){let t={type:"connect",payload:{subscriptionId:e.subscriptionId}};this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent(t)}emitError(e,t){let n={type:"error",payload:t};this.masterSubEmitter?.dispatchEvent(n),e.emitter.dispatchEvent(n)}maybeEmitDisconnect(e){let{subscriptionId:t}=e;if(t){let n={type:"disconnect",payload:{subscriptionId:t}};this.masterSubEmitter?.dispatchEvent(n),e.emitter.dispatchEvent(n)}else console.warn("Called disconnect for `CriteriaEntry` before `subscriptionId` was present.")}async getTokenForCriteria(e){let t=e?.subscriptionId;t||(t=(await this.medplum.createResource({...e.subscriptionProps,resourceType:"Subscription",status:"active",reason:`WebSocket subscription for ${oe(this.medplum.getProfile())}`,channel:{type:"websocket"},criteria:e.criteria})).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 f(h("Failed to get token"));if(!o)throw new f(h("Failed to get URL from $get-ws-binding-token"));return[t,i]}maybeGetCriteriaEntry(e,t){let n=this.criteriaEntries.get(e);if(n){if(!t)return n.bareCriteria;for(let i of n.criteriaWithProps)if(J(t,i.subscriptionProps))return i}}getAllCriteriaEmitters(){let e=[];for(let t of this.criteriaEntries.values()){t.bareCriteria&&e.push(t.bareCriteria.emitter);for(let n of t.criteriaWithProps)e.push(n.emitter)}return e}addCriteriaEntry(e){let{criteria:t,subscriptionProps:n}=e,i;this.criteriaEntries.has(t)?i=this.criteriaEntries.get(t):(i={criteriaWithProps:[]},this.criteriaEntries.set(t,i)),n?i.criteriaWithProps.push(e):i.bareCriteria=e}removeCriteriaEntry(e){let{criteria:t,subscriptionProps:n,subscriptionId:i,token:o}=e;if(!this.criteriaEntries.has(t))return;let s=this.criteriaEntries.get(t);n?s.criteriaWithProps=s.criteriaWithProps.filter(a=>{let c=a.subscriptionProps;return!J(n,c)}):s.bareCriteria=void 0,!s.bareCriteria&&s.criteriaWithProps.length===0&&(this.criteriaEntries.delete(t),this.masterSubEmitter?._removeCriteria(t)),i&&this.criteriaEntriesBySubscriptionId.delete(i),o&&this.ws.send(JSON.stringify({type:"unbind-from-token",payload:{token:o}}))}addCriteria(e,t){this.masterSubEmitter&&this.masterSubEmitter._addCriteria(e);let n=this.maybeGetCriteriaEntry(e,t);if(n)return n.refCount+=1,n.emitter;let i=new Tn(e,t);return this.addCriteriaEntry(i),this.getTokenForCriteria(i).then(([o,s])=>{i.subscriptionId=o,i.token=s,this.criteriaEntriesBySubscriptionId.set(o,i),this.emitConnect(i),this.ws.send(JSON.stringify({type:"bind-with-token",payload:{token:s}}))}).catch(o=>{console.error(o.message),this.emitError(i,o),this.removeCriteriaEntry(i)}),i.emitter}removeCriteria(e,t){let n=this.maybeGetCriteriaEntry(e,t);if(!n){console.warn("Criteria not known to `SubscriptionManager`. Possibly called remove too many times.");return}n.refCount-=1,!(n.refCount>0)&&(this.maybeEmitDisconnect(n),this.removeCriteriaEntry(n))}closeWebSocket(){this.wsClosed||(this.wsClosed=!0,this.ws.close())}getCriteriaCount(){return this.getAllCriteriaEmitters().length}getMasterEmitter(){return this.masterSubEmitter||(this.masterSubEmitter=new Me(...Array.from(this.criteriaEntries.keys()))),this.masterSubEmitter}};async function cc({resource:r,subscription:e,context:t,getPreviousResource:n,logger:i}){if(e.meta?.account&&r.meta?.account?.reference!==e.meta.account.reference)return i?.debug("Ignore resource in different account compartment"),!1;if(!uc(e,i))return i?.debug("Ignore subscription without recognized channel type"),!1;let o=e.criteria;if(!o)return i?.debug("Ignore rest hook missing criteria"),!1;let s=te(o);if(r.resourceType!==s.resourceType)return i?.debug(`Ignore rest hook for different resourceType (wanted "${s.resourceType}", received "${r.resourceType}")`),!1;if(!await Gi(e,r,n))return i?.debug("Ignore rest hook for criteria returning false"),!1;let c=he(e,"https://medplum.com/fhir/StructureDefinition/subscription-supported-interaction");return c&&c.valueCode!==t.interaction?(i?.debug(`Ignore rest hook for different interaction (wanted "${c.valueCode}", received "${t.interaction}")`),!1):gt(r,s)}function uc(r,e){let t=r.channel?.type;return t==="rest-hook"?r.channel?.endpoint?!0:(e?.debug("Ignore rest-hook missing URL"),!1):t==="websocket"}async function Gi(r,e,t){let n=he(r,"https://medplum.com/fhir/StructureDefinition/fhir-path-criteria-expression");if(!n?.valueString)return!0;let i=await t(e),o={"%current":x(e),"%previous":x(i??{})};return F(n.valueString,[x(e)],o)?.[0]?.value===!0}var lc="3.1.10-7ae504bff",pc="medplum-cli",zi=k.FHIR_JSON+", */*; q=0.1",dc="https://api.medplum.com/",fc=1e3,mc=6e4,hc=0,yc="Binary/",Hi={resourceType:"Device",id:"system",deviceName:[{type:"model-name",name:"System"}]},Ji=(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))(Ji||{}),Yi=(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))(Yi||{}),Zi=(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))(Zi||{}),Xi=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(Xi||{}),Rt=class extends Ve{constructor(t){super();this.initComplete=!0;if(t?.baseUrl&&!t.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");this.options=t??{},this.fetch=t?.fetch??gc(),this.storage=t?.storage??new De,this.createPdfImpl=t?.createPdf,this.baseUrl=zt(t?.baseUrl??dc),this.fhirBaseUrl=B(this.baseUrl,t?.fhirUrlPath??"fhir/R4"),this.authorizeUrl=B(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=B(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=B(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"?hc:mc),this.cacheTime>0?this.requestCache=new xt(t?.resourceCacheSize??fc):this.requestCache=void 0,t?.autoBatchTime?(this.autoBatchTime=t.autoBatchTime,this.autoBatchQueue=[]):(this.autoBatchTime=0,this.autoBatchQueue=void 0),t?.accessToken&&this.setAccessToken(t.accessToken),this.storage.getInitPromise===void 0?(t?.accessToken||this.attemptResumeActiveLogin().catch(console.error),this.initPromise=Promise.resolve()):(this.initComplete=!1,this.initPromise=this.storage.getInitPromise(),this.initPromise.then(()=>{t?.accessToken||this.attemptResumeActiveLogin().catch(console.error),this.initComplete=!0}).catch(console.error)),this.setupStorageListener()}get isInitialized(){return this.initComplete}getInitPromise(){return this.initPromise}async attemptResumeActiveLogin(){let t=this.getActiveLogin();t&&(this.setAccessToken(t.accessToken,t.refreshToken),await this.refreshProfile())}getBaseUrl(){return this.baseUrl}getAuthorizeUrl(){return this.authorizeUrl}getTokenUrl(){return this.tokenUrl}getLogoutUrl(){return this.logoutUrl}clear(){this.storage.clear(),typeof window<"u"&&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=B(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 V(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,k.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(B(this.fhirBaseUrl,t.join("/")))}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=en(n)),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 V((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 V(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 V(this.search(t,n,i).then(Sn));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 Sn(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 Hi;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 V(Promise.reject(new Error("Missing reference")));if(i==="system")return new V(Promise.resolve(Hi));let[o,s]=i.split("/");return!o||!s?new V(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(Dr(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new V((async()=>{let s=`{
4
4
  StructureDefinitionList(name: "${t}") {
5
5
  resourceType,
6
6
  name,