"use strict";var Ar=Object.defineProperty;var jo=Object.getOwnPropertyDescriptor;var $o=Object.getOwnPropertyNames;var Wo=Object.prototype.hasOwnProperty;var Go=(r,e)=>{for(var t in e)Ar(r,t,{get:e[t],enumerable:!0})},Ho=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of $o(e))!Wo.call(r,i)&&i!==t&&Ar(r,i,{get:()=>e[i],enumerable:!(n=jo(e,i))||n.enumerable});return r};var Qo=r=>Ho(Ar({},"__esModule",{value:!0}),r);var cl={};Go(cl,{AccessPolicyInteraction:()=>Zi,AndAtom:()=>ft,ArithemticOperatorAtom:()=>V,AsAtom:()=>de,BooleanInfixOperatorAtom:()=>C,CPT:()=>Yo,ClientStorage:()=>Fe,ConcatAtom:()=>st,ContainsAtom:()=>at,ContentType:()=>D,DEFAULT_ACCEPT:()=>xo,DEFAULT_MAX_SEARCH_COUNT:()=>sc,DEFAULT_SEARCH_COUNT:()=>oc,DotAtom:()=>re,EmptySetAtom:()=>it,EqualsAtom:()=>ut,EquivalentAtom:()=>pt,EventTarget:()=>pr,ExternalSecretSystems:()=>nu,FHIRCAST_EVENT_NAMES:()=>dr,FHIRCAST_EVENT_RESOURCES:()=>ao,FHIRCAST_EVENT_VERSION_REQUIRED:()=>fr,FHIRCAST_RESOURCE_TYPES:()=>so,FhirFilterComparison:()=>Dt,FhirFilterConnective:()=>_t,FhirFilterNegation:()=>Mt,FhirPathAtom:()=>nt,FhircastConnection:()=>bt,FunctionAtom:()=>K,GITHUB_RELEASES_URL:()=>Uo,HTTP_HL7_ORG:()=>Ir,HTTP_TERMINOLOGY_HL7_ORG:()=>Xo,Hl7Context:()=>oe,Hl7Field:()=>Ie,Hl7Message:()=>Hn,Hl7Segment:()=>je,ICD10:()=>Zo,ImpliesAtom:()=>yt,InAtom:()=>ct,IndexerAtom:()=>me,InfixOperatorAtom:()=>J,IsAtom:()=>fe,LOINC:()=>Ko,LRUCache:()=>Et,LiteralAtom:()=>L,LogLevel:()=>Pr,Logger:()=>Qn,MEDPLUM_CLI_CLIENT_ID:()=>Qc,MEDPLUM_VERSION:()=>Hc,MedplumClient:()=>Ot,MedplumKeyValueClient:()=>Pt,MemoryStorage:()=>yr,MockAsyncClientStorage:()=>Nn,NotEqualsAtom:()=>lt,NotEquivalentAtom:()=>dt,OAuthClientAssertionType:()=>bo,OAuthGrantType:()=>To,OAuthTokenAuthMethod:()=>Eo,OAuthTokenType:()=>So,OperationOutcomeError:()=>d,Operator:()=>bn,OperatorPrecedence:()=>y,OrAtom:()=>mt,Parser:()=>Nt,ParserBuilder:()=>Ge,PrefixOperatorAtom:()=>We,PropertyType:()=>l,RXNORM:()=>Jo,ReadablePromise:()=>M,ReconnectingWebSocket:()=>wt,SNOMED:()=>zo,SearchParameterType:()=>Sn,SubscriptionEmitter:()=>Be,SubscriptionManager:()=>At,SymbolAtom:()=>q,Tokenizer:()=>ne,TransformMapCollection:()=>br,TypedEventTarget:()=>$,UCUM:()=>Or,UnaryOperatorAtom:()=>ot,UnionAtom:()=>Pe,VALID_HOSTNAME_REGEX:()=>Vi,XorAtom:()=>ht,accepted:()=>cs,addProfileToResource:()=>Ta,allOk:()=>es,append:()=>be,applyDefaultValuesToElement:()=>lu,applyDefaultValuesToElementWithVisitor:()=>pu,applyDefaultValuesToResource:()=>uu,applyFixedOrPatternValue:()=>kt,arrayBufferToBase64:()=>fn,arrayBufferToHex:()=>dn,arrayify:()=>Me,assert:()=>fo,assertContextVersionOptional:()=>kn,assertOk:()=>vs,assertReleaseManifest:()=>Bo,badRequest:()=>E,booleanToTypedValue:()=>f,buildElementsContext:()=>xr,buildTypeName:()=>Ui,calculateAge:()=>et,calculateAgeString:()=>Ks,canReadResourceType:()=>Vc,canWriteResource:()=>Dc,canWriteResourceType:()=>Xi,capitalize:()=>w,checkForNull:()=>Kn,checkIfValidMedplumVersion:()=>sl,clearReleaseCache:()=>ol,compressElement:()=>Ts,concatUrls:()=>U,conceptMapTranslate:()=>qn,conflict:()=>us,convertContainedResourcesToBundle:()=>Fc,convertToTransactionBundle:()=>ro,crawlResource:()=>Is,crawlResourceAsync:()=>ks,crawlTypedValue:()=>Qe,crawlTypedValueAsync:()=>en,createConstraintIssue:()=>qr,createFhircastMessagePayload:()=>hr,createOperationOutcomeIssue:()=>se,createProcessingIssue:()=>jr,createReference:()=>ee,createStructureIssue:()=>v,created:()=>ts,decodeBase64:()=>wn,deepClone:()=>le,deepEquals:()=>X,deepIncludes:()=>_e,encodeBase64:()=>An,encryptSHA256:()=>On,ensureNoLeadingSlash:()=>ki,ensureTrailingSlash:()=>nr,evalFhirPath:()=>we,evalFhirPathTyped:()=>A,evalSqlOnFhir:()=>el,fetchLatestVersionString:()=>al,fetchVersionManifest:()=>Jn,fhirPathArrayEquals:()=>nn,fhirPathArrayEquivalent:()=>Jt,fhirPathArrayNotEquals:()=>on,fhirPathEquals:()=>zt,fhirPathEquivalent:()=>vi,fhirPathIs:()=>Ye,fhirPathNot:()=>rn,fhirTypeToJsType:()=>Ht,findObservationInterval:()=>ca,findObservationReferenceRange:()=>ua,findResourceByCode:()=>ga,flatMapFilter:()=>vn,forbidden:()=>ns,formatAddress:()=>ba,formatCodeableConcept:()=>Xe,formatCoding:()=>Mi,formatDate:()=>Pa,formatDateTime:()=>ir,formatFamilyName:()=>Ca,formatGivenName:()=>Ra,formatHl7DateTime:()=>Fo,formatHumanName:()=>rt,formatMoney:()=>Ma,formatObservationValue:()=>_i,formatPeriod:()=>wa,formatQuantity:()=>pe,formatRange:()=>Da,formatSearchQuery:()=>vc,formatTime:()=>Di,formatTiming:()=>ka,generateId:()=>he,getAllDataTypes:()=>Qr,getAllQuestionnaireAnswers:()=>Js,getCodeBySystem:()=>Xt,getDataType:()=>Y,getDateProperty:()=>Qs,getDefaultValuesForNewSliceEntry:()=>du,getDisplayString:()=>Si,getElementDefinition:()=>Ze,getElementDefinitionFromElements:()=>qi,getElementDefinitionTypeName:()=>qt,getExpressionForResourceType:()=>ic,getExpressionsForResourceType:()=>En,getExtension:()=>Z,getExtensionValue:()=>Zs,getIdentifier:()=>Ri,getImageSrc:()=>Hs,getNestedProperty:()=>Te,getPathDifference:()=>Ee,getPathDisplayName:()=>ja,getPropertyDisplayName:()=>Bi,getQueryString:()=>gn,getQuestionnaireAnswers:()=>zs,getRandomString:()=>lr,getReferenceString:()=>ce,getResourceTypes:()=>Ua,getSearchParameter:()=>qa,getSearchParameterDetails:()=>cr,getSearchParameters:()=>Ba,getStatus:()=>gs,getTypedPropertyValue:()=>P,getTypedPropertyValueWithPath:()=>li,getTypedPropertyValueWithSchema:()=>yi,getTypedPropertyValueWithoutSchema:()=>gi,getValueSliceName:()=>Bn,getWebSocketUrl:()=>yn,globalSchema:()=>N,gone:()=>is,indexDefaultSearchParameters:()=>Fa,indexSearchParameter:()=>sr,indexSearchParameterBundle:()=>La,indexStructureDefinitionBundle:()=>$t,inflateBaseSchema:()=>$r,inflateElement:()=>ni,initFhirPathParserBuilder:()=>Le,isAccepted:()=>ds,isCodeableConcept:()=>Zt,isCoding:()=>Yt,isCompletedSubscriptionRequest:()=>Vn,isComplexTypeCode:()=>er,isConflict:()=>ms,isContextVersionRequired:()=>In,isCreated:()=>ps,isDataTypeLoaded:()=>Kr,isDateString:()=>sn,isDateTimeString:()=>Se,isEmpty:()=>S,isFhirCriteriaMet:()=>mo,isFhircastResourceType:()=>co,isGone:()=>hs,isJwt:()=>Dn,isLowerCase:()=>sa,isMedplumAccessToken:()=>Mn,isNotFound:()=>fs,isObject:()=>b,isOk:()=>Bt,isOperationOutcome:()=>ve,isPeriod:()=>an,isPopulated:()=>G,isPrimitiveType:()=>Ke,isProfileLoaded:()=>Jr,isProfileResource:()=>Ti,isQuantity:()=>I,isQuantityEquivalent:()=>cn,isReference:()=>ae,isResource:()=>O,isResourceType:()=>zr,isResourceTypeSchema:()=>Gt,isSliceDefinitionWithTypes:()=>Un,isString:()=>Ci,isStringArray:()=>pn,isTextObject:()=>Pi,isUUID:()=>oa,isUnauthenticated:()=>ys,isValidDate:()=>or,isValidHostname:()=>xa,isValidMedplumSemver:()=>qo,lazy:()=>hn,loadDataType:()=>Wt,mapByIdentifier:()=>Sa,matchDiscriminant:()=>Kt,matchesAccessPolicy:()=>eo,matchesRange:()=>mn,matchesSearchRequest:()=>St,multipleMatches:()=>ss,normalizeCreateBinaryOptions:()=>Fn,normalizeCreatePdfOptions:()=>Ro,normalizeErrorString:()=>ke,normalizeOperationOutcome:()=>He,notFound:()=>Lr,notModified:()=>rs,operationOutcomeIssueToString:()=>ri,operationOutcomeToString:()=>Br,parseCriteriaAsSearchRequest:()=>uc,parseFhirPath:()=>ar,parseFilterParameter:()=>Hu,parseHl7DateTime:()=>Qu,parseJWTPayload:()=>Ct,parseLogLevel:()=>zu,parseMappingLanguage:()=>bu,parseParameter:()=>Ki,parseReference:()=>$s,parseSearchDefinition:()=>cc,parseSearchRequest:()=>ie,parseSearchUrl:()=>ac,parseStructureDefinition:()=>jt,parseXFhirQuery:()=>gc,preciseEquals:()=>ma,preciseGreaterThan:()=>ya,preciseGreaterThanOrEquals:()=>Ii,preciseLessThan:()=>ha,preciseLessThanOrEquals:()=>Oi,preciseRound:()=>fa,preconditionFailed:()=>os,projectAdminResourceTypes:()=>Yi,protectedResourceTypes:()=>Ji,removeDuplicates:()=>Je,removeProfileFromResource:()=>Ea,reorderBundle:()=>no,resolveId:()=>ue,resourceMatchesSubscriptionCriteria:()=>Wc,satisfiedAccessPolicy:()=>Mc,serializeFhircastSubscriptionRequest:()=>mr,serverError:()=>Ur,serverTimeout:()=>ls,setCodeBySystem:()=>aa,setIdentifier:()=>Ys,singleton:()=>j,singularize:()=>va,sleep:()=>tr,sortStringArray:()=>tt,splitN:()=>rr,splitSearchOnComma:()=>Tt,streamToBuffer:()=>Xu,stringify:()=>ln,stringifyTypedValue:()=>xn,structureMapTransform:()=>Ru,subsetResource:()=>bs,toJsBoolean:()=>_,toPeriod:()=>qs,toTypedValue:()=>g,tooManyRequests:()=>as,tryGetDataType:()=>De,tryGetJwtExpiration:()=>_n,tryGetProfile:()=>Yr,unauthorized:()=>ge,unauthorizedTokenAudience:()=>Ut,unauthorizedTokenExpired:()=>Fr,validateFhircastSubscriptionRequest:()=>Rt,validateResource:()=>Ms,validateResourceType:()=>Ju,validateTypedValue:()=>_s,validationError:()=>h,validationRegexes:()=>ze});module.exports=Qo(cl);var We=class{constructor(e,t){this.operator=e;this.child=t}toString(){return`${this.operator}(${this.child.toString()})`}},J=class{constructor(e,t,n){this.operator=e;this.left=t;this.right=n}toString(){return`${this.left.toString()} ${this.operator} ${this.right.toString()}`}},Ge=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 Nt(e,this.prefixParselets,this.infixParselets)}},Nt=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 Or="http://unitsofmeasure.org",Ko="http://loinc.org",zo="http://snomed.info/sct",Jo="http://www.nlm.nih.gov/research/umls/rxnorm",Yo="http://www.ama-assn.org/go/cpt",Zo="http://hl7.org/fhir/sid/icd-10",Ir="http://hl7.org",Xo="http://terminology.hl7.org";var kr="ok",Lt="created",Vr="gone",Dr="not-modified",Mr="not-found",_r="conflict",Nr="unauthorized",Yn="forbidden",Zn="precondition-failed",Xn="multiple-matches",ei="too-many-requests",Ft="accepted",ti="server-timeout",es={resourceType:"OperationOutcome",id:kr,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},ts={resourceType:"OperationOutcome",id:Lt,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},rs={resourceType:"OperationOutcome",id:Dr,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},Lr={resourceType:"OperationOutcome",id:Mr,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},ge={resourceType:"OperationOutcome",id:Nr,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},Fr={...ge,issue:[...ge.issue,{severity:"error",code:"expired",details:{text:"Token expired"}}]},Ut={...ge,issue:[...ge.issue,{severity:"error",code:"invalid",details:{text:"Token not issued for this audience"}}]},ns={resourceType:"OperationOutcome",id:Yn,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},is={resourceType:"OperationOutcome",id:Vr,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},os={resourceType:"OperationOutcome",id:Zn,issue:[{severity:"error",code:"processing",details:{text:"Precondition Failed"}}]},ss={resourceType:"OperationOutcome",id:Xn,issue:[{severity:"error",code:"multiple-matches",details:{text:"Multiple resources found matching condition"}}]},as={resourceType:"OperationOutcome",id:ei,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function cs(r){return{resourceType:"OperationOutcome",id:Ft,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:r}]}}function E(r,e){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:r},...e?{expression:[e]}:void 0}]}}function us(r){return{resourceType:"OperationOutcome",id:_r,issue:[{severity:"error",code:"conflict",details:{text:r}}]}}function h(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"structure",details:{text:r}}]}}function Ur(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function ls(r){return{resourceType:"OperationOutcome",id:ti,issue:[{severity:"error",code:"timeout",details:{text:r??"Server timeout"}}]}}function ve(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function Bt(r){return r.id===kr||r.id===Lt||r.id===Dr||r.id===Ft}function ps(r){return r.id===Lt}function ds(r){return r.id===Ft}function fs(r){return r.id===Mr}function ms(r){return r.id===_r}function hs(r){return r.id===Vr}function ys(r){return r.id===Nr}function gs(r){switch(r.id){case kr:return 200;case Lt:return 201;case Ft:return 202;case Dr:return 304;case Nr:return 401;case Yn:return 403;case Mr:return 404;case _r:return 409;case Vr:return 410;case Zn:case Xn:return 412;case ei:return 429;case ti:return 504;default:return r.issue?.[0]?.code==="exception"?500:400}}function vs(r,e){if(!Bt(r)||e===void 0)throw new d(r)}var d=class extends Error{constructor(e,t){super(Br(e)),this.outcome=e,this.cause=t}};function He(r){return r instanceof d?r.outcome:ve(r)?r:E(ke(r))}function ke(r){return r?typeof r=="string"?r:r instanceof Error?r.message:ve(r)?Br(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function Br(r){let e=r.issue?.map(ri)??[];return e.length>0?e.join("; "):"Unknown error"}function ri(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 se(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 se("error","structure",e,r)}function qr(r,e){return se("error","invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function jr(r,e,t,n){return se("error","processing",e,r,{...n,error:t})}var xs={"http://hl7.org/fhirpath/System.String":"string"};function Ts(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:xs[t.code]??t.code})),e}function ni(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 $r(r){let e=Object.create(null);for(let[t,n]of Object.entries(r))e[t]={name:t,type:t,path:t,elements:Object.fromEntries(Object.entries(n.elements).map(([i,o])=>[i,ni(i,o)])),constraints:[],innerTypes:[]};return e}var ii={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"}]},onBehalfOf:{type:[{code:"Reference"}]},account:{type:[{code:"Reference"}]},accounts:{max:9007199254740991,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 jt(r){return new Gr(r).parse()}var xe=$r(ii),Hr=Object.create(null),oi=Object.create(null),Es={"http://hl7.org/fhir/StructureDefinition/MoneyQuantity":"MoneyQuantity","http://hl7.org/fhir/StructureDefinition/SimpleQuantity":"SimpleQuantity","http://hl7.org/fhir/uv/sql-on-fhir/StructureDefinition/ViewDefinition":"ViewDefinition"};function ui(r){let e;return e=oi[r],e||(e=oi[r]=Object.create(null)),e}function $t(r){let e=Array.isArray(r)?r:r.entry?.map(t=>t.resource)??[];for(let t of e)Wt(t)}function Wt(r){if(!r?.name)throw new Error("Failed loading StructureDefinition from bundle");if(r.resourceType!=="StructureDefinition")return;let e=jt(r),t=Es[r.url],n,i;t?(n=xe,i=t):r.url===`http://hl7.org/fhir/StructureDefinition/${r.type}`||r.url===`https://medplum.com/fhir/StructureDefinition/${r.type}`||r.type?.startsWith("http://")||r.type?.startsWith("https://")?(n=xe,i=r.type):(n=ui(r.url),i=r.type),n[i]=e;for(let o of e.innerTypes)o.parentType=e,n[o.name]=o;Hr[r.url]=e}function Qr(){return xe}function Kr(r){return!!xe[r]}function De(r,e){if(e){let t=ui(e)[r];if(t)return t}return xe[r]}function Y(r,e){let t=De(r,e);if(!t)throw new d(E("Unknown data type: "+r));return t}function zr(r){let e=xe[r];return e&&Gt(e)}function Jr(r){return!!Hr[r]}function Yr(r){return Hr[r]}var Gr=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,path:this.root.path,title:e.title,type:e.type,url:e.url,kind:e.kind,description:ws(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=Wr(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[Wr(e,n.path)]=t;break}n=n.parent}if(!n){let i=Wr(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),this.slicingContext&&!Ve(this.slicingContext.path,e?.path)&&(this.slicingContext=void 0),e.slicing&&!this.slicingContext&&this.enterSlice(e,t)}enterInnerType(e){for(;this.backboneContext&&!Ve(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;let t=qt(e);this.backboneContext={type:{name:t,type:t,path:e.path,title:e.label,description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path,parent:Ve(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,t){Ps(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&&!Ve(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!Ve(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),this.backboneContext=void 0}next(){let e=this.peek();if(e)return this.index++,e}peek(){let e=this.elements[this.index];if(e){if(this.elementIndex[e.path??""]=e,e.contentReference){let 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!!(Ve(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.parseElementDefinition(e),name:e.sliceName??"",definition:e.definition,elements:{}},this.slicingContext.field.slices.push(this.slicingContext.current)}parseElementDefinitionType(e){return(e.type??[]).map(t=>{let n;return(t.code==="BackboneElement"||t.code==="Element")&&(n=qt(e)),n||(n=Z(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=ai(e.max),n=e.base?.max?ai(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:ci(P(i,"fixed[x]")),pattern:ci(P(i,"pattern[x]")),binding:e.binding}}};function bs(r,e){if(!r)return;let t=[];for(let n of e){t.push("_"+n);let i=xe[r.resourceType].elements[n+"[x]"];i&&t.push(...i.type.map(o=>n+w(o.code)))}for(let n of Object.getOwnPropertyNames(r))!e.includes(n)&&!t.includes(n)&&!Rs.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(si):[si]},r}var si={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},Rs=["resourceType","id","meta"];function ai(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function Wr(r,e=""){return Cs(r.path,e)}function Cs(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function Ve(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function ci(r){return Array.isArray(r)&&r.length>0?r[0]:S(r)?void 0:r}function Ps(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 ws(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 As(r){return"elements"in r}function Os(r){return!!r.visitPropertyAsync}function Is(r,e,t,n){let i;return t&&As(t)?i={schema:t,initialPath:n}:i=t,Os(e)?en(g(r),e,i):Qe(g(r),e,i)}async function ks(r,e,t){return en(g(r),e,t)}function Qe(r,e,t){new Zr(r,e,t).crawl()}function en(r,e,t){return new Xr(r,e,t).crawl()}var Zr=class{constructor(e,t,n){this.root=e,this.visitor=t,this.schema=n?.schema??Y(e.type),this.initialPath=n?.initialPath??this.schema.path,this.excludeMissingProperties=n?.skipMissingProperties}crawl(){this.crawlObject({...this.root,path:this.initialPath},this.schema,this.initialPath)}crawlObject(e,t,n){let i=O(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=Te(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 Me(s))this.crawlPropertyValue(a,i)}crawlPropertyValue(e,t){if(!Ke(e.type)){let n=Y(e.type);this.crawlObject(e,n,t)}}},Xr=class{constructor(e,t,n){this.root=e,this.visitor=t,this.schema=n?.schema??Y(e.type),this.initialPath=n?.initialPath??this.schema.path,this.excludeMissingProperties=n?.skipMissingProperties}async crawl(){return this.crawlObject({...this.root,path:this.initialPath},this.schema,this.initialPath)}async crawlObject(e,t,n){let i=O(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&&e.value)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=Te(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 Me(s))await this.crawlPropertyValue(a,i)}async crawlPropertyValue(e,t){if(!Ke(e.type)){let n=Y(e.type);await this.crawlObject(e,n,t)}}};function Te(r,e,t){if(r===void 0)return[void 0];if(e==="$this")return[r];let n=t?.withPath?li:P,[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 li(r,e,t){let n=r.path;return Vs(P(r,e,t),n,e)}function Vs(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 Ht={base64Binary:"string",boolean:"boolean",canonical:"string",code:"string",date:"string",dateTime:"string",decimal:"number",id:"string",instant:"string",integer:"number",integer64:"string",markdown:"string",oid:"string",positiveInt:"number",string:"string",time:"string",unsignedInt:"number",uri:"string",url:"string",uuid:"string",xhtml:"string","http://hl7.org/fhirpath/System.String":"string"};function Ke(r){return r==="undefined"||r in Ht}var ze={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:/.*/},Ds={"ele-1":!0,"dom-3":!0,"org-1":!0,"sdf-19":!0};function Ms(r,e){if(!r.resourceType)throw new d(h("Missing resource type"));return new Qt(g(r),e).validate()}function _s(r,e){return new Qt(r,e).validate()}var Qt=class{constructor(e,t){this.issues=[],this.root=e,this.currentResource=[],O(e.value)&&this.currentResource.push(e.value),t?.profile?this.schema=jt(t.profile):this.schema=Y(e.type)}validate(){this.constraintsCheck({...this.root,path:this.schema.path},this.schema),tn(this.root.value,this.schema.path,this.issues),Qe(this.root,this,{schema:this.schema,initialPath:this.schema.path});let e=this.issues,t=!1;for(let n of e)n.severity==="error"&&(t=!0);if(t)throw new d({resourceType:"OperationOutcome",issue:e});return e}onExitObject(e,t,n){this.checkAdditionalProperties(t,n.elements,t.path)}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.lengths.max)&&this.issues.push(v(s.path,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${c.length}`)),Fs(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),this.referenceTypeCheck(p,s),this.checkPropertyValue(p);let m=Us(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){Ke(e.type)&&this.validatePrimitiveType(e)}validateSlices(e,t,n){if(!(!e||!t))for(let i of e){let o=t[i.name];(oi.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=Ls(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(se("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(se("warning","structure",`Conflicting choice of type properties: "${s}", "${o[a]}"`,s)),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){let n=t.constraints;if(n){for(let i of n)if(i.severity==="error"&&!(i.key in Ds)&&!this.isExpressionTrue(i,e)){this.issues.push(qr(e.path,i));return}}}referenceTypeCheck(e,t){if(e.type!=="Reference")return;let n=e.value;if(!ae(n))return;let i=n.reference.split("/")[0];if(!i)return;let o=t.type.find(m=>m.code==="Reference")?.targetProfile;if(!o)return;let s=Ir+"/fhir/StructureDefinition/",a=s+"Resource",c=s+i,u="https://medplum.com/fhir/StructureDefinition/",p=u+i;for(let m of o)if(m===a||m===c||m===p||!m.startsWith(s)&&!m.startsWith(u))return;this.issues.push(se("warning","structure",`Invalid reference: got "${i}", expected "${o.join('", "')}"`,e.path))}isExpressionTrue(e,t){let n={"%context":t,"%ucum":g(Or)};this.currentResource.length>0&&(n["%resource"]=g(this.currentResource[this.currentResource.length-1])),O(this.root.value)&&(n["%rootResource"]=this.root);try{let i=A(e.expression,[t],n);return i.length===1&&i[0].value===!0}catch(i){return this.issues.push(jr(t.path,"Error evaluating invariant expression",i,{fhirpath:e.expression})),!1}}validatePrimitiveType(e){let[t,n]=Bs(e),i=e.path;if(t){let{type:o,value:s}=t;if(!(o in Ht)){this.issues.push(v(i,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=Ht[o];if(typeof s!==a){s!==null&&this.issues.push(v(i,`Invalid JSON type: expected ${a}, but got ${typeof s}`));return}a==="string"?this.validateString(s,o,i):a==="number"&&this.validateNumber(s,o,i)}n&&Qe(n,this,{schema:Y("Element"),initialPath:i})}validateString(e,t,n){if(!e.trim()){this.issues.push(v(n,"String must contain non-whitespace content"));return}let i=ze[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 Ls(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 P(r,o)?n+a:void 0}}function tn(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({type:n.type,value:n.value})):{type:r.type,value:r.value};return!(e.pattern&&!_e(t,e.pattern)||e.fixed&&!X(t,e.fixed))}function Kt(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 _e(r,i.pattern);if(i.fixed)return X(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 Us(r,e){if(e){for(let t of e.slices)if(e.discriminator.every(n=>Me(Te(r,n.path))?.some(i=>Kt(i,n,t))))return t.name}}function Bs(r){if(typeof r.value!="object"||!r.value)return[r,void 0];let e=r.value.valueOf();if(e===r.value)return[void 0,{type:"Element",value:r.value}];let t=new Set(Object.keys(e)),n=Object.entries(r.value).filter(([o,s])=>!t.has(o)),i=n.length>0?Object.fromEntries(n):void 0;return[{type:r.type,value:e},{type:"Element",value:i}]}function f(r){return[{type:l.boolean,value:r}]}function g(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}:I(r)?{type:l.Quantity,value:r}:O(r)?{type:r.resourceType,value:r}:Zt(r)?{type:l.CodeableConcept,value:r}:Yt(r)?{type:l.Coding,value:r}:{type:l.BackboneElement,value:r}}function _(r){return r.length===0?!1:!!r[0].value}function j(r,e){if(r.length!==0){if(r.length===1&&(!e||r[0].type===e))return r[0];throw new Error(`Expected singleton of type ${e}, but found ${JSON.stringify(r)}`)}}function P(r,e,t){if(!r.value)return;let n=Ze(r.type,e,t?.profileUrl);return n?yi(r,e,n):gi(r,e)}function yi(r,e,t){let n=r.value,i=t.type;if(!i||i.length===0)return;let o,s="undefined",a,c=t.path.lastIndexOf("."),u=t.path.substring(c+1);for(let p of i){let m=u.replace("[x]",w(p.code));if(o=n[m],a=n["_"+m],o!==void 0||a!==void 0){s=p.code;break}}if(a)if(Array.isArray(o)){o=o.slice();for(let p=0;ppi(p,s)):pi(o,s)}function pi(r,e){return e==="Resource"&&O(r)&&(e=r.resourceType),{type:e,value:r}}function gi(r,e){let t=r.value;if(!t||typeof t!="object")return;let n;if(e in t){let i=t[e];Array.isArray(i)?n=i.map(g):n=g(i)}else{let i=e.endsWith("[x]")?e.substring(0,e.length-3):e;for(let o of Object.values(l)){let s=i+w(o);if(s in t){let a=t[s];Array.isArray(a)?n=a.map(c=>({type:o,value:c})):n={type:o,value:a};break}}}if(Array.isArray(n)){if(n.length===0||S(n[0]))return}else if(S(n))return;return n}function Je(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(_(zt(t,i))){n=!0;break}n||e.push(t)}return e}function rn(r){return f(!_(r))}function nn(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?f(!1):f(r.every((t,n)=>_(zt(t,e[n]))))}function on(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?f(!0):f(r.some((t,n)=>!_(zt(t,e[n]))))}function zt(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?f(Math.abs(t-n)<1e-8):I(t)&&I(n)?f(cn(t,n)):f(typeof t=="object"&&typeof n=="object"?un(r,e):t===n)}function Jt(r,e){return r.length===0&&e.length===0?f(!0):r.length!==e.length?f(!1):(r.sort(di),e.sort(di),f(r.every((t,n)=>_(vi(t,e[n])))))}function vi(r,e){let{type:t,value:n}=r,{type:i,value:o}=e,s=n?.valueOf(),a=o?.valueOf();return typeof s=="number"&&typeof a=="number"?f(Math.abs(s-a)<.01):I(s)&&I(a)?f(cn(s,a)):f(t==="Coding"&&i==="Coding"?typeof s!="object"||typeof a!="object"?!1:s.code===a.code&&s.system===a.system:typeof s=="object"&&typeof a=="object"?un({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function di(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 Ye(r,e){let{value:t}=r;if(t==null)return!1;switch(e){case"Boolean":return typeof t=="boolean";case"Decimal":case"Integer":return typeof t=="number";case"Date":return sn(t);case"DateTime":return Se(t);case"Time":return typeof t=="string"&&!!/^T\d/.exec(t);case"Period":return an(t);case"Quantity":return I(t);default:return typeof t=="object"&&t?.resourceType===e}}function sn(r){return typeof r=="string"&&!!ze.date.exec(r)}function Se(r){return typeof r=="string"&&!!ze.dateTime.exec(r)}function an(r){return!!(r&&typeof r=="object"&&("start"in r&&Se(r.start)||"end"in r&&Se(r.end)))}function qs(r){if(r){if(sn(r))return{start:fi(r,"0000-00-00T00:00:00.000Z"),end:fi(r,"xxxx-12-31T23:59:59.999Z")};if(Se(r))return{start:r,end:r};if(an(r))return r}}function fi(r,e){return r+e.substring(r.length)}function I(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function cn(r,e){return Math.abs(r.value-e.value)<.01&&(r.unit===e.unit||r.code===e.code||r.unit===e.code||r.code===e.unit)}function un(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(mi(o)&&mi(s)){if(!un(o,s))return!1}else if(o!==s)return!1}return!0}function mi(r){return r!==null&&typeof r=="object"}function hi(r,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return js(r??{},e)}return r}function js(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}function ee(r){let e=ce(r),t=Si(r);return t===e?{reference:e}:{reference:e,display:t}}function ce(r){return ae(r)?r.reference:`${r.resourceType}/${r.id}`}function ue(r){if(r)return ae(r)?r.reference.split("/")[1]:r.id}function $s(r){if(r?.reference===void 0)throw new d(h("Reference missing reference property."));let[e,t]=r.reference.split("/");if(e===""||t===""||t===void 0)throw new d(h("Unable to parse reference string."));return[e,t]}function Ti(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function Si(r){if(Ti(r)){let e=Ws(r);if(e)return e}if(r.resourceType==="Device"){let e=Gs(r);if(e)return e}if(r.resourceType==="MedicationRequest"&&r.medicationCodeableConcept)return Xe(r.medicationCodeableConcept);if(r.resourceType==="Subscription"&&r.criteria)return r.criteria;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]),Zt(e))return Xe(e);if(Pi(e))return e.text}return ce(r)}function Ws(r){let e=r.name;if(e&&e.length>0)return rt(e[0])}function Gs(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function Hs(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=xi(t);if(n)return n}else return xi(e)}function xi(r){if(r.url&&r.contentType?.startsWith("image/"))return r.url}function Qs(r){return r?new Date(r):void 0}function et(r,e){let t=new Date(r);t.setUTCHours(0,0,0,0);let n=e?new Date(e):new Date;n.setUTCHours(0,0,0,0);let i=t.getUTCFullYear(),o=t.getUTCMonth(),s=t.getUTCDate(),a=n.getUTCFullYear(),c=n.getUTCMonth(),u=n.getUTCDate(),p=a-i;(c=2?t.toString().padStart(3,"0")+"Y":n>=1?n.toString().padStart(3,"0")+"M":i.toString().padStart(3,"0")+"D"}function zs(r){let e={};return Ei(r.item,e),e}function Ei(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),Ei(t.item,e)}function Js(r){let e={};return bi(r.item,e),e}function bi(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),bi(t.item,e)}function Ri(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 Ys(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 Zs(r,...e){let t=Z(r,...e);if(!t)return;let n=P({type:"Extension",value:t},"value[x]");if(n)return Array.isArray(n)?n[0].value:n.value}function Z(r,...e){let t=r;for(let n=0;ni.url===e[n]);return t}function ln(r,e){return JSON.stringify(r,Xs,e?2:void 0)}function Xs(r,e){return!ea(r)&&S(e)?void 0:e}function ea(r){return!!/\d+$/.exec(r)}function S(r){if(r==null)return!0;let e=typeof r;return e==="string"||e==="object"?!G(r):!1}function G(r){if(r==null)return!1;let e=typeof r;return e==="string"&&r!==""||e==="object"&&("length"in r&&r.length>0||Object.keys(r).length>0)}function X(r,e,t){return r===e||S(r)&&S(e)?!0:S(r)||S(e)?!1:Array.isArray(r)&&Array.isArray(e)?ta(r,e):Array.isArray(r)||Array.isArray(e)?!1:b(r)&&b(e)?ra(r,e,t):(b(r)||b(e),!1)}function ta(r,e){if(r.length!==e.length)return!1;for(let t=0;tn.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(!X(o,s,i))return!1}return!0}function _e(r,e){return S(r)?!0:S(e)?!1:Array.isArray(r)&&Array.isArray(e)?na(r,e):Array.isArray(r)||Array.isArray(e)?!1:b(r)&&b(e)?ia(r,e):b(r)||b(e)?!1:r===e}function na(r,e){return e.every(t=>r.some(n=>_e(n,t)))}function ia(r,e){return Object.entries(e).every(([t,n])=>t in r&&_e(r[t],n))}function le(r){return r===void 0?r:JSON.parse(JSON.stringify(r))}function oa(r){return!!/^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/i.exec(r)}function b(r){return r!==null&&typeof r=="object"}function pn(r){return r.every(Ci)}function Ci(r){return typeof r=="string"}function Yt(r){return b(r)&&"code"in r&&typeof r.code=="string"}function Zt(r){return b(r)&&"coding"in r&&Array.isArray(r.coding)&&r.coding.every(Yt)}function Pi(r){return b(r)&&"text"in r&&typeof r.text=="string"}var wi=[];for(let r=0;r<256;r++)wi.push(r.toString(16).padStart(2,"0"));function dn(r){let e=new Uint8Array(r),t=new Array(e.length);for(let n=0;n0&&r.startsWith(r[0].toUpperCase())}function Ee(r,e){let t=r+".";if(e.startsWith(t))return e.slice(t.length)}function Xt(r,e){return r.coding?.find(t=>t.system===e)?.code}function aa(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 ca(r,e,t,n){return r.qualifiedInterval?.find(i=>Ai(i,e)&&da(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function ua(r,e,t){return r.qualifiedInterval?.find(n=>Ai(n,e)&&t.includes(n.condition))}function Ai(r,e){return la(r,e)&&pa(r,e)}function la(r,e){return!r.gender||r.gender===e.gender}function pa(r,e){return!r.age||mn(et(e.birthDate).years,r.age)}function da(r,e,t){return!!r.range&&mn(e,r.range,t)}function mn(r,e,t){return(e.low?.value===void 0||Ii(r,e.low.value,t))&&(e.high?.value===void 0||Oi(r,e.high.value,t))}function fa(r,e){return parseFloat(r.toFixed(e))}function ma(r,e,t){return W(r,t)===W(e,t)}function ha(r,e,t){return W(r,t)W(e,t)}function Oi(r,e,t){return W(r,t)<=W(e,t)}function Ii(r,e,t){return W(r,t)>=W(e,t)}function W(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function ga(r,e,t){return r.find(n=>typeof e=="string"?Xt(n.code||{},t)===e:Xt(n.code||{},t)===Xt(e,t))}function Me(r){if(r!==void 0)return Array.isArray(r)?r:[r]}function va(r){return Array.isArray(r)?r[0]:r}var tr=r=>new Promise(e=>{setTimeout(e,r)});function rr(r,e,t){let n=[];for(let i=0;ie.localeCompare(t))}function nr(r){return r.endsWith("/")?r:r+"/"}function ki(r){return r.startsWith("/")?r.slice(1):r}function U(r,e){return new URL(ki(e),nr(r.toString())).toString()}function yn(r,e){return U(r,e).toString().replace("http://","ws://").replace("https://","wss://")}function gn(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 Vi=/^(([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 xa(r){return Vi.test(r)}function Ta(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 Sa(r,e){return new Map(r.entry?.filter(n=>!!n.resource).map(n=>[Ri(n.resource,e),n.resource]).filter(([n])=>n!==void 0))}function Ea(r,e){if(r?.meta?.profile?.includes(e)){let t=r.meta.profile.indexOf(e);r.meta.profile.splice(t,1)}return r}function vn(r,e){let t=[];if(!r)return t;for(let n=0;nir(t)).join(", ")),w(e.join(" ").trim())}function Va(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(Aa[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+Oa[i]):r.push("per "+n+" "+Ia[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(w).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>Di(o)).join(", "))}function Da(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=Na(n.value,e),`> ${pe(n,e)}`):`>= ${pe(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=_a(i.value,e),`< ${pe(i,e)}`):`<= ${pe(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${pe(n,e)} - ${pe(i,e)}`)}function pe(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 Ma(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function Xe(r){if(!r)return"";let e=Re(r.text);return e||(r.coding?r.coding.map(t=>Mi(t)).join(", "):"")}function Mi(r,e){let t=Re(r?.display);if(t){let n=e?Re(r?.code):void 0;return`${t}${n?" ("+n+")":""}`}return Re(r?.code)??""}function _i(r){if(!r)return"";let e=[];if(r.valueQuantity)e.push(pe(r.valueQuantity));else if(r.valueCodeableConcept)e.push(Xe(r.valueCodeableConcept));else{let t=Re(r.valueString);t&&e.push(t)}return"component"in r&&e.push(r.component.map(t=>_i(t)).join(" / ")),e.join(" / ").trim()}function Re(r){return typeof r=="string"?r:void 0}function _a(r,e,t=1){return(Ni(r,e)+t)*Math.pow(10,-e)}function Na(r,e,t=1){return(Ni(r,e)-t)*Math.pow(10,-e)}function Ni(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 La(r){for(let e of r.entry??[]){let t=e.resource;t.resourceType==="SearchParameter"&&sr(t)}}function Fa(r){let e=vn(r.entry,t=>t.resource?.resourceType==="StructureDefinition"?t.resource:void 0)??[];for(let t of e)Fi(t.type)}function Fi(r){let e=N.types[r];return e||(e={searchParamsDetails:{}},N.types[r]=e),e.searchParams||(e.searchParams={_id:{base:[r],code:"_id",type:"token",expression:r+".id"},_lastUpdated:{base:[r],code:"_lastUpdated",type:"date",expression:r+".meta.lastUpdated"},_compartment:{base:[r],code:"_compartment",type:"reference",expression:r+".meta.compartment"},_profile:{base:[r],code:"_profile",type:"uri",expression:r+".meta.profile"},_security:{base:[r],code:"_security",type:"token",expression:r+".meta.security"},_source:{base:[r],code:"_source",type:"uri",expression:r+".meta.source"},_tag:{base:[r],code:"_tag",type:"token",expression:r+".meta.tag"}}),e}function sr(r){for(let e of r.base??[]){let t=Fi(e);t.searchParams||(t.searchParams={}),t.searchParams[r.code]=r}}function qt(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?Ui((r.base?.path??r.path)?.split(".")):e}function Ui(r){return r.length===1?r[0]:r.map(w).join("")}function Gt(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function Ua(){return Object.values(Qr()).filter(Gt).map(r=>r.name)}function Ba(r){return N.types[r]?.searchParams}function qa(r,e){return N.types[r]?.searchParams?.[e]}function ja(r){let e=r.replaceAll("[x]","").split(".").pop();return Bi(e)}function Bi(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(Wa).join(" ").replace("_"," ").replace(/\s+/g," ")}var $a=new Set(["ID","IP","PKCE","JWKS","URI","URL","OMB","UDI"]);function Wa(r){let e=r.toUpperCase();return r===e?r:$a.has(e)?e:e.charAt(0)+r.slice(1)}function Ze(r,e,t){let n=De(r,t);if(n)return qi(n.elements,e)}function qi(r,e){let t=r[e]??r[e+"[x]"];if(t)return t;for(let n=0;n="A"&&i<="Z"){let o=e.slice(0,n)+"[x]",s=r[o];if(s)return s}}}function O(r){return!!(r&&typeof r=="object"&&"resourceType"in r)}function ae(r){return!!(r&&typeof r=="object"&&"reference"in r&&typeof r.reference=="string")}var N={types:{}};function xn(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 Li(r.value);case l.CodeableConcept:return r.value.coding?.map(Li).join(",")??r.value.text;case l.HumanName:return r.value.text?r.value.text:rt(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 O(r.value)?ee(r.value).reference:JSON.stringify(r)}}function Li(r){return r?`${r.system??""}|${r.code}`:""}function Ne(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 te=()=>[],k={empty:(r,e)=>f(e.length===0||e.every(t=>S(t.value))),hasValue:(r,e)=>f(e.length!==0),exists:(r,e,t)=>t?f(e.filter(n=>_(t.eval(r,[n]))).length>0):f(e.length>0&&e.every(n=>!S(n.value))),all:(r,e,t)=>f(e.every(n=>_(t.eval(r,[n])))),allTrue:(r,e)=>{for(let t of e)if(!t.value)return f(!1);return f(!0)},anyTrue:(r,e)=>{for(let t of e)if(t.value)return f(!0);return f(!1)},allFalse:(r,e)=>{for(let t of e)if(t.value)return f(!1);return f(!0)},anyFalse:(r,e)=>{for(let t of e)if(!t.value)return f(!0);return f(!1)},subsetOf:(r,e,t)=>{if(e.length===0)return f(!0);let n=t.eval(r,Ce(r));return n.length===0?f(!1):f(e.every(i=>n.some(o=>o.value===i.value)))},supersetOf:(r,e,t)=>{let n=t.eval(r,Ce(r));return n.length===0?f(!0):e.length===0?f(!1):f(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)=>f(e.length===k.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>_(t.eval(r,[n]))),select:(r,e,t)=>e.map(n=>t.eval({parent:r,variables:{$this:n}},[n])).flat(),repeat:te,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,Ce(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,Ce(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,Ce(r));return Je([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,Ce(r));return[...e,...n]},htmlChecks:(r,e,t)=>[g(!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 _(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=Q(e,1);if(typeof t=="boolean")return[{type:l.boolean,value:t}];if(typeof t=="number"&&(t===0||t===1))return f(!!t);if(typeof t=="string"){let n=t.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return f(!0);if(["false","f","no","n","0","0.0"].includes(n))return f(!1)}return[]},convertsToBoolean:(r,e)=>e.length===0?[]:f(k.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=Q(e,1);return typeof t=="number"?[{type:l.integer,value:t}]:typeof t=="string"&&/^[+-]?\d+$/.exec(t)?[{type:l.integer,value:parseInt(t,10)}]:typeof t=="boolean"?[{type:l.integer,value:t?1:0}]:[]},convertsToInteger:(r,e)=>e.length===0?[]:f(k.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=Q(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:l.date,value:Ne(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:f(k.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=Q(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:l.dateTime,value:Ne(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:f(k.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=Q(e,1);return typeof t=="number"?[{type:l.decimal,value:t}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(t)?[{type:l.decimal,value:parseFloat(t)}]:typeof t=="boolean"?[{type:l.decimal,value:t?1:0}]:[]},convertsToDecimal:(r,e)=>e.length===0?[]:f(k.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=Q(e,1);return I(t)?[{type:l.Quantity,value:t}]:typeof t=="number"?[{type:l.Quantity,value:{value:t,unit:"1"}}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(t)?[{type:l.Quantity,value:{value:parseFloat(t),unit:"1"}}]:typeof t=="boolean"?[{type:l.Quantity,value:{value:t?1:0,unit:"1"}}]:[]},convertsToQuantity:(r,e)=>e.length===0?[]:f(k.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=Q(e,1);return t==null?[]:I(t)?[{type:l.string,value:`${t.value} '${t.unit}'`}]:[{type:l.string,value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:f(k.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=Q(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:l.time,value:Ne("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:f(k.toTime(r,e).length===1),indexOf:(r,e,t)=>B((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>B((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)=>B((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>B((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>B((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>B(t=>t.toUpperCase(),r,e),lower:(r,e)=>B(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>B((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>B((n,i)=>!!new RegExp(i).exec(n),r,e,t),replaceMatches:(r,e,t,n)=>B((i,o,s)=>i.replaceAll(o,s),r,e,t,n),length:(r,e)=>B(t=>t.length,r,e),toChars:(r,e)=>B(t=>t?t.split(""):void 0,r,e),encode:te,decode:te,escape:te,unescape:te,trim:te,split:te,join:(r,e,t)=>{let n=t?.eval(r,Ce(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)=>H(Math.abs,r,e),ceiling:(r,e)=>H(Math.ceil,r,e),exp:(r,e)=>H(Math.exp,r,e),floor:(r,e)=>H(Math.floor,r,e),ln:(r,e)=>H(Math.log,r,e),log:(r,e,t)=>H((n,i)=>Math.log(n)/Math.log(i),r,e,t),power:(r,e,t)=>H(Math.pow,r,e,t),round:(r,e)=>H(Math.round,r,e),sqrt:(r,e)=>H(Math.sqrt,r,e),truncate:(r,e)=>H(t=>t|0,r,e),children:te,descendants:te,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=k.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=k.toDateTime(r,n.eval(r,e));if(s.length===0)throw new Error("Invalid end date");let a=i.eval(r,e)[0]?.value;if(a!=="years"&&a!=="months"&&a!=="days")throw new Error("Invalid units");let c=et(o[0].value,s[0].value);return[{type:l.Quantity,value:{value:c[a],unit:a}}]},is:(r,e,t)=>{let n="";return t instanceof q?n=t.name:t instanceof re&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:l.boolean,value:Ye(i,n)})):[]},not:(r,e)=>k.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 g(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"}}:O(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}))},getResourceKey:(r,e)=>{let t=e[0].value;return t?.id?[{type:l.id,value:t.id}]:[]},getReferenceKey:(r,e,t)=>{let n=e[0].value;if(!n?.reference)return[];let i="";return t instanceof q&&(i=t.name),i&&!n.reference.startsWith(i+"/")?[]:[{type:l.id,value:ue(n)}]},extension:(r,e,t)=>{let n=t.eval(r,e)[0].value,i=e?.[0]?.value;if(i){let o=Z(i,n);if(o)return[{type:l.Extension,value:o}]}return[]}};function B(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=Q(t,1);if(typeof i!="string")throw new Error("String function cannot be called with non-string");let o=r(i,...n.map(s=>s?.eval(e,t)[0]?.value));return o===void 0?[]:Array.isArray(o)?o.map(g):[g(o)]}function H(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=Q(t,1),o=I(i),s=o?i.value:i;if(typeof s!="number")throw new Error("Math function cannot be called with non-number");let a=r(s,...n.map(p=>p.eval(e,t)[0]?.value)),c=o?l.Quantity:t[0].type,u=o?{...i,value:a}:a;return[{type:c,value:u}]}function Q(r,e){if(r.length!==e)throw new Error(`Expected ${e} arguments`);for(let t of r)if(t==null)throw new Error("Expected non-null argument");return r}function Ce(r){let e=r;for(;e.parent?.variables.$this;)e=e.parent;return[e.variables.$this]}var nt=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()}},L=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 O(t)&&t.resourceType===this.name?e:P(e,this.name)}toString(){return this.name}},it=class{eval(){return[]}toString(){return"{}"}},ot=class extends We{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()}},de=class extends J{constructor(e,t){super("as",e,t)}eval(e,t){return k.ofType(e,this.left.eval(e,t),this.right)}},C=class extends J{},V=class extends C{constructor(t,n,i,o){super(t,n,i);this.impl=o}eval(t,n){let i=this.left.eval(t,n);if(i.length!==1)return[];let o=this.right.eval(t,n);if(o.length!==1)return[];let s=i[0].value,a=o[0].value,c=I(s)?s.value:s,u=I(a)?a.value:a,p=this.impl(c,u);return typeof p=="boolean"?f(p):I(s)?[{type:l.Quantity,value:{...s,value:p}}]:[g(p)]}},st=class extends J{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}},at=class extends C{constructor(e,t){super("contains",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return f(n.some(o=>o.value===i[0].value))}},ct=class extends C{constructor(e,t){super("in",e,t)}eval(e,t){let n=j(this.left.eval(e,t)),i=this.right.eval(e,t);return n?f(i.some(o=>o.value===n.value)):[]}},re=class extends J{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()}`}},Pe=class extends J{constructor(e,t){super("|",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Je([...n,...i])}},ut=class extends C{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return nn(n,i)}},lt=class extends C{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return on(n,i)}},pt=class extends C{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Jt(n,i)}},dt=class extends C{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return rn(Jt(n,i))}},fe=class extends C{constructor(e,t){super("is",e,t)}eval(e,t){let n=this.left.eval(e,t);if(n.length!==1)return[];let i=this.right.name;return f(Ye(n[0],i))}},ft=class extends C{constructor(e,t){super("and",e,t)}eval(e,t){let n=j(this.left.eval(e,t),"boolean"),i=j(this.right.eval(e,t),"boolean");return n?.value===!0&&i?.value===!0?f(!0):n?.value===!1||i?.value===!1?f(!1):[]}},mt=class extends C{constructor(e,t){super("or",e,t)}eval(e,t){let n=j(this.left.eval(e,t),"boolean"),i=j(this.right.eval(e,t),"boolean");return n?.value===!1&&i?.value===!1?f(!1):n?.value||i?.value?f(!0):[]}},ht=class extends C{constructor(e,t){super("xor",e,t)}eval(e,t){let n=j(this.left.eval(e,t),"boolean"),i=j(this.right.eval(e,t),"boolean");return!n||!i?[]:f(n.value!==i.value)}},yt=class extends C{constructor(e,t){super("implies",e,t)}eval(e,t){let n=j(this.left.eval(e,t),"boolean"),i=j(this.right.eval(e,t),"boolean");return i?.value===!0||n?.value===!1?f(!0):!n||!i?[]:f(!1)}},K=class{constructor(e,t){this.name=e;this.args=t}eval(e,t){let n=k[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(", ")})`}},me=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 Ga=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],ne=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/\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()!==` `))}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;if(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())))),this.pos.index===e)throw new Error("Invalid DateTime literal");let i=this.str.substring(e,this.pos.index);return i.endsWith("T")?i=i.substring(0,i.length-1):!i.startsWith("T")&&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()===" "&&Ha(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=","{}","->"];function ji(r){return new ne(r,gt,vt).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},Qa={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},Ka={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new me(e,t)},precedence:y.Indexer},za={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 K(e.name,t)},precedence:y.FunctionCall};function Ja(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 Le(){return new Ge().registerPrefix("String",{parse:(r,e)=>new L({type:l.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new L({type:l.dateTime,value:Ne(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new L({type:l.Quantity,value:Ja(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new L({type:e.value.includes(".")?l.decimal:l.integer,value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new L({type:l.boolean,value:!0})}).registerPrefix("false",{parse:()=>new L({type:l.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new q(e.value)}).registerPrefix("{}",{parse:()=>new it}).registerPrefix("(",Qa).registerInfix("[",Ka).registerInfix("(",za).prefix("+",y.UnaryAdd,(r,e)=>new ot("+",e,t=>t)).prefix("-",y.UnarySubtract,(r,e)=>new V("-",e,e,(t,n)=>-n)).infixLeft(".",y.Dot,(r,e,t)=>new re(r,t)).infixLeft("/",y.Divide,(r,e,t)=>new V("/",r,t,(n,i)=>n/i)).infixLeft("*",y.Multiply,(r,e,t)=>new V("*",r,t,(n,i)=>n*i)).infixLeft("+",y.Add,(r,e,t)=>new V("+",r,t,(n,i)=>n+i)).infixLeft("-",y.Subtract,(r,e,t)=>new V("-",r,t,(n,i)=>n-i)).infixLeft("|",y.Union,(r,e,t)=>new Pe(r,t)).infixLeft("=",y.Equals,(r,e,t)=>new ut(r,t)).infixLeft("!=",y.NotEquals,(r,e,t)=>new lt(r,t)).infixLeft("~",y.Equivalent,(r,e,t)=>new pt(r,t)).infixLeft("!~",y.NotEquivalent,(r,e,t)=>new dt(r,t)).infixLeft("<",y.LessThan,(r,e,t)=>new V("<",r,t,(n,i)=>nnew V("<=",r,t,(n,i)=>n<=i)).infixLeft(">",y.GreaterThan,(r,e,t)=>new V(">",r,t,(n,i)=>n>i)).infixLeft(">=",y.GreaterThanOrEquals,(r,e,t)=>new V(">=",r,t,(n,i)=>n>=i)).infixLeft("&",y.Ampersand,(r,e,t)=>new st(r,t)).infixLeft("and",y.And,(r,e,t)=>new ft(r,t)).infixLeft("as",y.As,(r,e,t)=>new de(r,t)).infixLeft("contains",y.Contains,(r,e,t)=>new at(r,t)).infixLeft("div",y.Divide,(r,e,t)=>new V("div",r,t,(n,i)=>n/i|0)).infixLeft("in",y.In,(r,e,t)=>new ct(r,t)).infixLeft("is",y.Is,(r,e,t)=>new fe(r,t)).infixLeft("mod",y.Modulo,(r,e,t)=>new V("mod",r,t,(n,i)=>n%i)).infixLeft("or",y.Or,(r,e,t)=>new mt(r,t)).infixLeft("xor",y.Xor,(r,e,t)=>new ht(r,t)).infixLeft("implies",y.Implies,(r,e,t)=>new yt(r,t))}var Ya=Le();function ar(r){return new nt(r,Ya.construct(ji(r)).consumeAndParse())}function we(r,e){let t=Array.isArray(e)?e:[e];for(let n=0;nn.value)}function A(r,e,t={}){return ar(r).eval({variables:t},e).map(i=>({type:i.type,value:i.value?.valueOf()}))}var Sn=(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))(Sn||{});function cr(r,e){let t=N.types[r]?.searchParamsDetails?.[e.code];return t||(t=Xa(r,e)),t}function Za(r,e,t){let n=N.types[r];n||(n={},N.types[r]=n),n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function Xa(r,e){let t=e.code,n=rc(t),i=En(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let c=xt(a),u=hn(()=>c.join("."));c.length===1&&c[0]instanceof C?o.propertyTypes.add("boolean"):u().endsWith("extension.value.code")||u().endsWith("extension.value.coding.code")?(o.array=!0,o.propertyTypes.add("code")):$i(o,xt(a),r,1),u().endsWith("extension.valueDateTime")&&(o.array=!1)}let s={columnName:n,type:nc(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return Za(r,t,s),s}function $i(r,e,t,n){let i=e[n];if(i instanceof de){r.propertyTypes.add(i.right.toString());return}if(i instanceof K){ec(r,i);return}let o=i.toString(),s=Ze(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,c=n+1;if(c=e.length){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;tc(p)&&(p=s.type[0].code),$i(r,e,p,c)}}function ec(r,e){if(e.name==="as"){r.propertyTypes.add(e.args[0].toString());return}if(e.name==="ofType"){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 fe){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function tc(r){return r==="Element"||r==="BackboneElement"}function rc(r){return r.split("-").reduce((e,t,n)=>e+(n?w(t):t),"")}function nc(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 En(r,e){let t=[],n=ar(e);return Tn(r,n.child,t),t}function ic(r,e){let t=En(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function Tn(r,e,t){e instanceof Pe?(Tn(r,e.left,t),Tn(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function xt(r){if(r instanceof de||r instanceof me)return[xt(r.left),r].flat();if(r instanceof C)return[r];if(r instanceof re)return[xt(r.left),xt(r.right)].flat();if(r instanceof K){if(r.name==="where"&&!(r.args[0]instanceof fe))return[];if(r.name==="last")return[]}return[r]}var oc=20,sc=1e3,bn=(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))(bn||{}),Qi={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"},Rn={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function ie(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 lc(i,o)}function ac(r){return ie(r)}function cc(r){return ie(r)}function uc(r){return ie(r)}function lc(r,e){let t={resourceType:r};for(let[n,i]of e)pc(t,n,i);return t}function pc(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=be(r.filters,{code:e,operator:"eq",value:t});return}switch(n){case"_sort":dc(r,t);break;case"_cursor":r.cursor=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=Wi(t);i==="iterate"&&(s.modifier="iterate"),r.include=be(r.include,s);break}case"_revinclude":{let s=Wi(t);i==="iterate"&&(s.modifier="iterate"),r.revInclude=be(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=N.types[r.resourceType]?.searchParams?.[n];s?r.filters=be(r.filters,Ki(s,i,t)):r.filters=be(r.filters,fc(n,i,t))}}}}function dc(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 Ki(r,e,t){if(e==="missing")return{code:r.code,operator:"missing",value:t};switch(r.type){case"number":case"date":case"quantity":{let{operator:n,value:i}=mc(t);if(!Gi(r,i))throw new d(E(`Invalid format for ${r.type} search parameter: ${i}`));return{code:r.code,operator:n,value:i}}case"reference":case"string":case"token":case"uri":if(!Gi(r,t))throw new d(E(`Invalid format for ${r.type} search parameter: ${t}`));return{code:r.code,operator:hc(e),value:t};default:throw new Error("Unrecognized search parameter type: "+r.type)}}function fc(r,e,t){let n="eq";if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in Rn&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function mc(r){let e=r.substring(0,2),t=Rn[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function hc(r){return Qi[r]??"eq"}function Wi(r){let e=r.split(":");if(e.includes("*"))throw new d(E("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new d(E(`Invalid include value '${r}': must be of the form ResourceType:search-parameter`));if(e.length===2)return{resourceType:e[0],searchParam:e[1]};if(e.length===3)return{resourceType:e[0],searchParam:e[1],targetType:e[2]};throw new d(E(`Invalid include value '${r}'`))}function Gi(r,e){switch(r.type){case"date":return Se(e);default:return!0}}var yc=/{{([^{}]+)}}/g;function gc(r,e){return r=r.replaceAll(yc,(t,n)=>{let i=A(n,[],e);return i.length!==1?"":xn(i[0])}),ie(r)}function vc(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(xc(t))),r.sortRules&&r.sortRules.length>0&&e.push(Tc(r.sortRules)),r.cursor!==void 0&&e.push("_cursor="+encodeURIComponent(r.cursor)),r.offset!==void 0&&r.offset!==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(Hi("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(Hi("_revinclude",t))),e.length===0?"":(tt(e),"?"+e.join("&"))}function xc(r){let e=r.operator in Qi?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in Rn?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function Tc(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function Hi(r,e){return r+(e.modifier?":"+e.modifier:"")+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function Tt(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 St(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!Sc(r,e,t))return!1}return!0}function Sc(r,e,t){let n=N.types[e.resourceType]?.searchParams?.[t.code];if(!n)return!1;if(t.operator==="missing"||t.operator==="present")return Ec(r,t,n);switch(n.type){case"reference":return bc(r,t,n);case"string":case"uri":return zi(r,t,n);case"token":return Rc(r,t,n);case"date":return Ac(r,t,n);default:return!1}}function Ec(r,e,t){let i=we(t.expression,r).length>0;return(e.operator==="missing"&&e.value==="false"||e.operator==="present"&&e.value==="true")===i}function bc(r,e,t){let n=we(t.expression,r),i=ur(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 Tt(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 Rc(r,e,t){return cr(r.resourceType,t).type==="BOOLEAN"?Cc(r,e,t):zi(r,e,t,!0)}function Cc(r,e,t){let n=we(t.expression,r),i=e.value==="true",o=n.includes(i);return ur(e.operator)?!o:o}function zi(r,e,t,n){let o=cr(r.resourceType,t).elementDefinitions?.[0]?.type?.[0]?.code,s=we(t.expression,r),a=Tt(e.value),c=ur(e.operator);for(let u of s)for(let p of a){let m;if(o===l.Identifier?m=Pc(u,e.operator,p):o===l.CodeableConcept?m=wc(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 Pc(r,e,t){if(t.includes("|")){let[n,i]=t.split("|").map(o=>o.toLowerCase());return!n&&!i?!1:n?r.system?.toLowerCase()===n&&(!i||r.value?.toLowerCase()===i):!r.system&&r.value?.toLowerCase()===i}return r.value?.toLowerCase()===t.toLowerCase()}function wc(r,e,t){if(t.includes("|")){let[n,i]=t.split("|").map(o=>o.toLowerCase());return!n&&!i?!1:n?r.coding?.some(o=>o.system?.toLowerCase()===n&&(!i||o.code?.toLowerCase()===i))??!1:r.coding?.some(o=>!o.system&&o.code?.toLowerCase()===i)??!1}return r.text?.toLowerCase()===t.toLowerCase()||(r.coding?.some(n=>n.code?.toLowerCase()===t.toLowerCase())??!1)}function Ac(r,e,t){let n=we(t.expression,r),i=Tt(e.value),o=ur(e.operator);for(let s of n)for(let a of i)if(Oc(s,e.operator,a))return!o;return o}function Oc(r,e,t){switch(e){case"sa":case"gt":return r>t;case"ge":return r>=t;case"eb":case"lt":return r(R.READ="read",R.VREAD="vread",R.UPDATE="update",R.PATCH="patch",R.DELETE="delete",R.HISTORY="history",R.HISTORY_INSTANCE="history-instance",R.HISTORY_TYPE="history-type",R.HISTORY_SYSTEM="history-system",R.CREATE="create",R.SEARCH="search",R.SEARCH_TYPE="search-type",R.SEARCH_SYSTEM="search-system",R.SEARCH_COMPARTMENT="search-compartment",R.CAPABILITIES="capabilities",R.TRANSACTION="transaction",R.BATCH="batch",R.OPERATION="operation",R))(Zi||{}),kc=["read","vread","history","history-instance"];function Vc(r,e){if(r.resource){for(let t of r.resource)if(Pn(t.resourceType,e))return!0}return!1}function Xi(r,e){if(Ji.includes(e))return!1;if(r.resource){for(let t of r.resource)if(Pn(t.resourceType,e)&&!t.readonly)return!0}return!1}function Dc(r,e){let t=e.resourceType;return Xi(r,t)?eo(r,e,!1):!1}function eo(r,e,t){if(r.resource){for(let n of r.resource)if(to(e,t?"read":"update",n))return!0}return!1}function Mc(r,e,t){if(!t)return Ic;if(t.resource){for(let n of t.resource)if(to(r,e,n))return n}}function to(r,e,t){let n=r.resourceType;return!(!Pn(t.resourceType,n)||t.readonly&&!kc.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!St(r,ie(t.criteria)))}function Pn(r,e){return r===e||r==="*"&&!Yi.includes(e)}function wn(r){if(typeof window<"u"){let e=window.atob(r),t=Uint8Array.from(e,n=>n.charCodeAt(0));return new window.TextDecoder().decode(t)}if(typeof Buffer<"u")return Buffer.from(r,"base64").toString("utf-8");throw new Error("Unable to decode base64")}function An(r){if(typeof window<"u"){let e=new window.TextEncoder().encode(r),t=String.fromCharCode.apply(null,e);return window.btoa(t)}if(typeof Buffer<"u")return Buffer.from(r,"utf8").toString("base64");throw new Error("Unable to encode base64")}function lr(){let r=new Uint32Array(28);return crypto.getRandomValues(r),dn(r.buffer)}async function On(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function he(){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 ro(r){let e={};r=le(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]=he(),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)=>_c(i,o,e),2);return no(JSON.parse(n))}function _c(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 no(r){let e=Lc(r),{sorted:t,cycles:n}=Nc(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 Nc(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 io(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(ae(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else io(n,e)}}function Lc(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&&io(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function Fc(r){r=le(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=he());return ro(e)}var Et=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 D={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 pr=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;i1)throw new d(h(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function hr(r,e,t,n){if(!(r&&typeof r=="string"))throw new d(h("Must provide a topic."));if(!dr[e])throw new d(h(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(dr).join(", ")}`));if(typeof t!="object")throw new d(h("context must be a context object or array of context objects."));if(fr.includes(e)&&!n)throw new d(h(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return Bc(e,i),{timestamp:new Date().toISOString(),id:he(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var bt=class extends ${constructor(e){if(super(),this.subRequest=e,!e.endpoint)throw new d(h("Subscription request should contain an endpoint."));if(!Rt(e))throw new d(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 qc(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=wn(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 Dn(r){return r.split(".").length===3}function Ct(r){let[e,t,n]=r.split(".");return qc(t)}function Mn(r){try{return typeof Ct(r).login_id=="string"}catch{return!1}}function _n(r){try{let t=Ct(r).exp;return typeof t=="number"?t*1e3:void 0}catch{return}}var Pt=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,D.TEXT)}async delete(e){await this.medplum.delete(`keyvalue/v1/${e}`)}};var uo;uo=Symbol.toStringTag;var M=class{constructor(e){this[uo]="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 Fe=class{constructor(e){this.storage=e??(typeof localStorage<"u"?localStorage:new yr)}clear(){this.storage.clear()}getString(e){return this.storage.getItem(e)??void 0}setString(e,t){t?this.storage.setItem(e,t):this.storage.removeItem(e)}getObject(e){let t=this.getString(e);return t?JSON.parse(t):void 0}setObject(e,t){this.setString(e,t?ln(t):void 0)}},yr=class{constructor(){this.data=new Map}get length(){return this.data.size}clear(){this.data.clear()}getItem(e){return this.data.get(e)??null}setItem(e,t){t?this.data.set(e,t):this.data.delete(e)}removeItem(e){this.data.delete(e)}key(e){return Array.from(this.data.keys())[e]}},Nn=class extends Fe{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 Ue={Event:typeof globalThis.Event<"u"?globalThis.Event:void 0,ErrorEvent:void 0,CloseEvent:void 0},lo=!1;function jc(){if(typeof globalThis.Event>"u")throw new Error("Unable to lazy init events for ReconnectingWebSocket. globalThis.Event is not defined yet");Ue.Event=globalThis.Event,Ue.ErrorEvent=class extends Event{constructor(e,t){super("error",t),this.message=e.message,this.error=e}},Ue.CloseEvent=class extends Event{constructor(t=1e3,n="",i){super("close",i);this.wasClean=!0;this.code=t,this.reason=n}}}function fo(r,e){if(!r)throw new Error(e)}function gr(r){return new r.constructor(r.type,r)}var Ae={maxReconnectionDelay:1e4,minReconnectionDelay:1e3+Math.random()*4e3,minUptime:5e3,reconnectionDelayGrowFactor:1.3,connectionTimeout:4e3,maxRetries:1/0,maxEnqueuedMessages:1/0,startClosed:!1,debug:!1},po=!1,wt=class r extends ${constructor(t,n,i={}){lo||(jc(),lo=!0);super();this._retryCount=-1;this._shouldReconnect=!0;this._connectLock=!1;this._closeCalled=!1;this._messageQueue=[];this._debugLogger=console.log.bind(console);this.onclose=null;this.onerror=null;this.onmessage=null;this.onopen=null;this._handleOpen=t=>{this._debug("open event");let{minUptime:n=Ae.minUptime}=this._options;clearTimeout(this._connectTimeout),this._uptimeTimeout=setTimeout(()=>this._acceptOpen(),n),fo(this._ws,"WebSocket is not defined"),this._ws.binaryType=this._binaryType,this._messageQueue.forEach(i=>this._ws?.send(i)),this._messageQueue=[],this.onopen&&this.onopen(t),this.dispatchEvent(gr(t))};this._handleMessage=t=>{this._debug("message event"),this.onmessage&&this.onmessage(t),this.dispatchEvent(gr(t))};this._handleError=t=>{this._debug("error event",t.message),this._disconnect(void 0,t.message==="TIMEOUT"?"timeout":void 0),this.onerror&&this.onerror(t),this._debug("exec error listeners"),this.dispatchEvent(gr(t)),this._connect()};this._handleClose=t=>{this._debug("close event"),this._clearTimeouts(),this._shouldReconnect&&this._connect(),this.onclose&&this.onclose(t),this.dispatchEvent(gr(t))};this._url=t,this._protocols=n,this._options=i,this._options.startClosed&&(this._shouldReconnect=!1),this._options.binaryType?this._binaryType=this._options.binaryType:this._binaryType="blob",this._options.debugLogger&&(this._debugLogger=this._options.debugLogger),this._connect()}static get CONNECTING(){return 0}static get OPEN(){return 1}static get CLOSING(){return 2}static get CLOSED(){return 3}get CONNECTING(){return r.CONNECTING}get OPEN(){return r.OPEN}get CLOSING(){return r.CLOSING}get CLOSED(){return r.CLOSED}get binaryType(){return this._ws?this._ws.binaryType:this._binaryType}set binaryType(t){this._binaryType=t,this._ws&&(this._ws.binaryType=t)}get retryCount(){return Math.max(this._retryCount,0)}get bufferedAmount(){return this._messageQueue.reduce((n,i)=>(typeof i=="string"?n+=i.length:i instanceof Blob?n+=i.size:n+=i.byteLength,n),0)+(this._ws?.bufferedAmount??0)}get extensions(){return this._ws?.extensions??""}get protocol(){return this._ws?.protocol??""}get readyState(){return this._ws?this._ws.readyState:this._options.startClosed?r.CLOSED:r.CONNECTING}get url(){return this._ws?this._ws.url:""}get shouldReconnect(){return this._shouldReconnect}close(t=1e3,n){if(this._closeCalled=!0,this._shouldReconnect=!1,this._clearTimeouts(),!this._ws){this._debug("close enqueued: no ws instance");return}if(this._ws.readyState===this.CLOSED){this._debug("close: already closed");return}this._ws.close(t,n)}reconnect(t,n){this._shouldReconnect=!0,this._closeCalled=!1,this._retryCount=-1,!this._ws||this._ws.readyState===this.CLOSED?this._connect():(this._disconnect(t,n),this._connect())}send(t){if(this._ws&&this._ws.readyState===this.OPEN)this._debug("send",t),this._ws.send(t);else{let{maxEnqueuedMessages:n=Ae.maxEnqueuedMessages}=this._options;this._messageQueue.length",...t)}_getNextDelay(){let{reconnectionDelayGrowFactor:t=Ae.reconnectionDelayGrowFactor,minReconnectionDelay:n=Ae.minReconnectionDelay,maxReconnectionDelay:i=Ae.maxReconnectionDelay}=this._options,o=0;return this._retryCount>0&&(o=n*Math.pow(t,this._retryCount-1),o>i&&(o=i)),this._debug("next delay",o),o}_wait(){return new Promise(t=>{setTimeout(t,this._getNextDelay())})}_connect(){if(this._connectLock||!this._shouldReconnect)return;this._connectLock=!0;let{maxRetries:t=Ae.maxRetries,connectionTimeout:n=Ae.connectionTimeout}=this._options;if(this._retryCount>=t){this._debug("max retries reached",this._retryCount,">=",t);return}this._retryCount++,this._debug("connect",this._retryCount),this._removeListeners(),this._wait().then(()=>{if(this._closeCalled){this._connectLock=!1;return}!this._options.WebSocket&&typeof WebSocket>"u"&&!po&&(console.error("\u203C\uFE0F No WebSocket implementation available. You should define options.WebSocket."),po=!0);let i=this._options.WebSocket||WebSocket;this._debug("connect",{url:this._url,protocols:this._protocols}),this._ws=this._protocols?new i(this._url,this._protocols):new i(this._url),this._ws.binaryType=this._binaryType,this._connectLock=!1,this._addListeners(),this._connectTimeout=setTimeout(()=>this._handleTimeout(),n)}).catch(i=>{this._connectLock=!1,this._handleError(new Ue.ErrorEvent(Error(i.message),this))})}_handleTimeout(){this._debug("timeout event"),this._handleError(new Ue.ErrorEvent(Error("TIMEOUT"),this))}_disconnect(t=1e3,n){if(this._clearTimeouts(),!!this._ws){this._removeListeners();try{this._ws.close(t,n),this._handleClose(new Ue.CloseEvent(t,n,this))}catch{}}}_acceptOpen(){this._debug("accept open"),this._retryCount=0}_removeListeners(){this._ws&&(this._debug("removeListeners"),this._ws.removeEventListener("open",this._handleOpen),this._ws.removeEventListener("close",this._handleClose),this._ws.removeEventListener("message",this._handleMessage),this._ws.removeEventListener("error",this._handleError))}_addListeners(){this._ws&&(this._debug("addListeners"),this._ws.addEventListener("open",this._handleOpen),this._ws.addEventListener("close",this._handleClose),this._ws.addEventListener("message",this._handleMessage),this._ws.addEventListener("error",this._handleError))}_clearTimeouts(){clearTimeout(this._connectTimeout),clearTimeout(this._uptimeTimeout)}};var $c=5e3,Be=class extends ${constructor(...e){super(),this.criteria=new Set(e)}getCriteria(){return this.criteria}_addCriteria(e){this.criteria.add(e)}_removeCriteria(e){this.criteria.delete(e)}},Ln=class{constructor(e,t){this.connecting=!1;this.criteria=e,this.emitter=new Be(e),this.refCount=1,this.subscriptionProps=t?{...t}:void 0}clearAttachedSubscription(){this.subscriptionId=void 0,this.token=void 0}},At=class{constructor(e,t,n){this.pingTimer=void 0;this.waitingForPong=!1;if(!(e instanceof Ot))throw new d(h("First arg of constructor should be a `MedplumClient`"));let i;try{i=new URL(t).toString()}catch{throw new d(h("Not a valid URL"))}let o=n?.ReconnectingWebSocket?new n.ReconnectingWebSocket(i,void 0,{debug:n?.debug,debugLogger:n?.debugLogger}):new wt(i,void 0,{debug:n?.debug,debugLogger:n?.debugLogger});this.medplum=e,this.ws=o,this.masterSubEmitter=new Be,this.criteriaEntries=new Map,this.criteriaEntriesBySubscriptionId=new Map,this.wsClosed=!1,this.pingIntervalMs=n?.pingIntervalMs??$c,this.currentProfile=e.getProfile(),this.setupListeners()}setupListeners(){let e=this.ws;e.addEventListener("message",t=>{try{let n=JSON.parse(t.data);if(n.type==="pong"){this.waitingForPong=!1;return}let i=n,o=i?.entry?.[0]?.resource;if(o.type==="heartbeat"){this.masterSubEmitter?.dispatchEvent({type:"heartbeat",payload:i});return}if(o.type==="handshake"){let a=ue(o.subscription),c={type:"connect",payload:{subscriptionId:a}};this.masterSubEmitter?.dispatchEvent(c);let u=this.criteriaEntriesBySubscriptionId.get(a);if(!u){console.warn("Received handshake for criteria the SubscriptionManager is not listening for yet");return}u.connecting=!1,u.emitter.dispatchEvent({...c});return}this.masterSubEmitter?.dispatchEvent({type:"message",payload:i});let s=this.criteriaEntriesBySubscriptionId.get(ue(o.subscription));if(!s){console.warn("Received notification for criteria the SubscriptionManager is not listening for");return}s.emitter.dispatchEvent({type:"message",payload:i})}catch(n){console.error(n);let i={type:"error",payload:n};this.masterSubEmitter?.dispatchEvent(i);for(let o of this.getAllCriteriaEmitters())o.dispatchEvent({...i})}}),e.addEventListener("error",()=>{let t={type:"error",payload:new d(Ur(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.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent({...t});this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=void 0,this.waitingForPong=!1),this.wsClosed&&(this.criteriaEntries.clear(),this.criteriaEntriesBySubscriptionId.clear(),this.masterSubEmitter?.removeAllListeners())}),e.addEventListener("open",()=>{let t={type:"open"};this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent({...t});this.refreshAllSubscriptions().catch(console.error),this.pingTimer||(this.pingTimer=setInterval(()=>{if(this.waitingForPong){this.waitingForPong=!1,e.reconnect();return}e.send(JSON.stringify({type:"ping"})),this.waitingForPong=!0},this.pingIntervalMs))}),this.medplum.addEventListener("change",()=>{let t=this.medplum.getProfile();this.currentProfile&&t===void 0?this.ws.close():t&&this.currentProfile?.id!==t.id&&this.ws.reconnect(),this.currentProfile=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 ${ce(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 d(h("Failed to get token"));if(!o)throw new d(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(X(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!X(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.readyState===WebSocket.OPEN&&this.ws.send(JSON.stringify({type:"unbind-from-token",payload:{token:o}}))}async subscribeToCriteria(e){if(!(this.ws.readyState!==WebSocket.OPEN||e.connecting)){e.connecting=!0;try{let[t,n]=await this.getTokenForCriteria(e);e.subscriptionId=t,e.token=n,this.criteriaEntriesBySubscriptionId.set(t,e),this.ws.send(JSON.stringify({type:"bind-with-token",payload:{token:n}}))}catch(t){console.error(ke(t)),this.emitError(e,t),this.removeCriteriaEntry(e)}}}async refreshAllSubscriptions(){this.criteriaEntriesBySubscriptionId.clear();for(let e of this.criteriaEntries.values())for(let t of[...e.bareCriteria?[e.bareCriteria]:[],...e.criteriaWithProps])t.clearAttachedSubscription(),await this.subscribeToCriteria(t)}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 Ln(e,t);return this.addCriteriaEntry(i),this.subscribeToCriteria(i).catch(console.error),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))}getWebSocket(){return this.ws}closeWebSocket(){this.wsClosed||(this.wsClosed=!0,this.ws.close())}reconnectWebSocket(){this.ws.reconnect(),this.wsClosed=!1}getCriteriaCount(){return this.getAllCriteriaEmitters().length}getMasterEmitter(){return this.masterSubEmitter||(this.masterSubEmitter=new Be(...Array.from(this.criteriaEntries.keys()))),this.masterSubEmitter}};async function Wc({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(!Gc(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=ie(o);if(r.resourceType!==s.resourceType)return i?.debug(`Ignore rest hook for different resourceType (wanted "${s.resourceType}", received "${r.resourceType}")`),!1;if(!await mo(e,r,n))return i?.debug("Ignore rest hook for criteria returning false"),!1;let c=Z(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):St(r,s)}function Gc(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 mo(r,e,t){let n=Z(r,"https://medplum.com/fhir/StructureDefinition/fhir-path-criteria-expression");if(!n?.valueString)return!0;let i=await t(e),o={"%current":g(e),"%previous":g(i??{})};return A(n.valueString,[g(e)],o)?.[0]?.value===!0}var Hc="3.2.23-b7a535d09",Qc="medplum-cli",xo=D.FHIR_JSON+", */*; q=0.1",Kc="https://api.medplum.com/",zc=1e3,Jc=6e4,Yc=0,Zc=3e5,Xc="Binary/",ho={resourceType:"Device",id:"system",deviceName:[{type:"model-name",name:"System"}]},To=(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))(To||{}),So=(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))(So||{}),Eo=(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))(Eo||{}),bo=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(bo||{}),Ot=class extends ${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??eu(),this.storage=t?.storage??new Fe,this.createPdfImpl=t?.createPdf,this.baseUrl=nr(t?.baseUrl??Kc),this.fhirBaseUrl=U(this.baseUrl,t?.fhirUrlPath??"fhir/R4"),this.authorizeUrl=U(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=U(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=U(this.baseUrl,t?.logoutUrl??"oauth2/logout"),this.fhircastHubUrl=U(this.baseUrl,t?.fhircastHubUrl??"fhircast/STU3"),this.clientId=t?.clientId??"",this.clientSecret=t?.clientSecret??"",this.onUnauthenticated=t?.onUnauthenticated,this.refreshGracePeriod=t?.refreshGracePeriod??Zc,this.cacheTime=t?.cacheTime??(typeof window>"u"?Yc:Jc),this.cacheTime>0?this.requestCache=new Et(t?.resourceCacheSize??zc):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.dispatchEvent({type:"storageInitialized"})):(this.initComplete=!1,this.initPromise=this.storage.getInitPromise(),this.initPromise.then(()=>{t?.accessToken||this.attemptResumeActiveLogin().catch(console.error),this.initComplete=!0,this.dispatchEvent({type:"storageInitialized"})}).catch(n=>{console.error(n),this.initComplete=!0,this.dispatchEvent({type:"storageInitFailed",payload:{error:n}})})),this.setupStorageListener()}get isInitialized(){return this.initComplete}getInitPromise(){return this.initPromise}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}getFhircastHubUrl(){return this.fhircastHubUrl}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=U(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 M(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,D.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(U(this.fhirBaseUrl,t.join("/")))}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=gn(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 M((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 M(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 M(this.search(t,n,i).then(vo));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 vo(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 ho;let[i,o]=n.split("/");if(!(!i||!o))return this.getCached(i,o)}readResource(t,n,i){if(!n)throw new Error('The "id" parameter cannot be null, undefined, or an empty string.');return this.get(this.fhirUrl(t,n),i)}readReference(t,n){let i=t.reference;if(!i)return new M(Promise.reject(new Error("Missing reference")));if(i==="system")return new M(Promise.resolve(ho));let[o,s]=i.split("/");return!o||!s?new M(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(Kr(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new M((async()=>{let s=`{ StructureDefinitionList(name: "${t}") { resourceType, name, kind, description, type, url, snapshot { element { id, path, definition, min, max, base { path, min, max }, contentReference, type { code, profile, targetProfile }, binding { strength, valueSet } } } } SearchParameterList(base: "${t}", _count: 100) { base, code, type, expression, target } }`.replace(/\s+/g," "),a=await this.graphql(s);$t(a.data.StructureDefinitionList);for(let c of a.data.SearchParameterList)sr(c)})());return this.setCacheEntry(n,o),o}requestProfileSchema(t,n){if(!n?.expandProfile&&Jr(t))return Promise.resolve();let i=t+"-requestSchema"+(n?.expandProfile?"-nested":""),o=this.getCacheEntry(i,void 0);if(o)return o.value;let s=new M((async()=>{if(n?.expandProfile){let a=this.fhirUrl("StructureDefinition","$expand-profile");a.search=new URLSearchParams({url:t}).toString();let c=await this.post(a.toString(),{});$t(c)}else{let a=await this.searchOne("StructureDefinition",{url:t,_sort:"-_lastUpdated"});if(!a){console.warn(`No StructureDefinition found for ${t}!`);return}Wt(a)}})());return this.setCacheEntry(i,s),s}readHistory(t,n,i){return this.get(this.fhirUrl(t,n,"_history"),i)}readVersion(t,n,i,o){return this.get(this.fhirUrl(t,n,"_history",i),o)}readPatientEverything(t,n){return this.get(this.fhirUrl("Patient",t,"$everything"),n)}createResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");return this.invalidateSearches(t.resourceType),this.post(this.fhirUrl(t.resourceType),t,void 0,n)}async createResourceIfNoneExist(t,n,i){let o=this.fhirUrl(t.resourceType);i?i.headers?Array.isArray(i.headers)?i.headers.push(["If-None-Exist",n]):i.headers instanceof Headers?i.headers.set("If-None-Exist",n):i.headers["If-None-Exist"]=n:i.headers={"If-None-Exist":n}:i={headers:{"If-None-Exist":n}};let s=await this.post(o,t,void 0,i);return this.cacheResource(s),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),s}async upsertResource(t,n,i){let o=this.fhirSearchUrl(t.resourceType,n),s=await this.put(o,t,void 0,i);return s||(s=t),this.cacheResource(s),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),s}async createAttachment(t,n,i,o,s){let a=Fn(t,n,i,o),c=s??(typeof n=="object"?n:{}),u=await this.createBinary(a,c);return{contentType:a.contentType,url:u.url,title:a.filename}}createBinary(t,n,i,o,s){let a=Fn(t,n,i,o),c=s??(typeof n=="object"?n:{}),{data:u,contentType:p,filename:m,securityContext:x,onProgress:z}=a,$e=this.fhirUrl("Binary");return m&&$e.searchParams.set("_filename",m),x?.reference&&this.setRequestHeader(c,"X-Security-Context",x.reference),z?this.uploadwithProgress($e,u,p,z,c):this.post($e,u,p,c)}uploadwithProgress(t,n,i,o,s){return new Promise((a,c)=>{let u=new XMLHttpRequest,p=()=>u.abort();s?.signal?.addEventListener("abort",p);let m=x=>{s?.signal?.removeEventListener("abort",p),x instanceof Error?c(x):a(x)};if(u.responseType="json",u.onabort=()=>m(new DOMException("Request aborted","AbortError")),u.onerror=()=>m(new Error("Request error")),o&&(u.upload.onprogress=x=>o(x),u.upload.onload=x=>o(x)),u.onload=()=>{u.status>=200&&u.status<300?m(u.response):m(new d(He(u.response||u.statusText)))},u.open("POST",t),u.withCredentials=!0,u.setRequestHeader("Authorization","Bearer "+this.accessToken),u.setRequestHeader("Cache-Control","no-cache, no-store, max-age=0"),u.setRequestHeader("Content-Type",i),this.options.extendedMode!==!1&&u.setRequestHeader("X-Medplum","extended"),s?.headers){let x=s.headers;for(let[z,$e]of Object.entries(x))u.setRequestHeader(z,$e)}u.send(n)})}async createPdf(t,n,i,o){if(!this.createPdfImpl)throw new Error("PDF creation not enabled");let s=Ro(t,n,i,o),a=typeof n=="object"?n:{},{docDefinition:c,tableLayouts:u,fonts:p,...m}=s,x=await this.createPdfImpl(c,u,p),z={...m,data:x,contentType:"application/pdf"};return this.createBinary(z,a)}createComment(t,n,i){let o=this.getProfile(),s,a;return t.resourceType==="Encounter"&&(s=ee(t),a=t.subject),t.resourceType==="ServiceRequest"&&(s=t.encounter,a=t.subject),t.resourceType==="Patient"&&(a=ee(t)),this.createResource({resourceType:"Communication",status:"completed",basedOn:[ee(t)],encounter:s,subject:a,sender:o?ee(o):void 0,sent:new Date().toISOString(),payload:[{contentString:n}]},i)}async updateResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");if(!t.id)throw new Error("Missing id");let i=await this.put(this.fhirUrl(t.resourceType,t.id),t,void 0,n);return i||(i=t),this.cacheResource(i),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),i}async patchResource(t,n,i,o){let s=await this.patch(this.fhirUrl(t,n),i,o);return this.cacheResource(s),this.invalidateUrl(this.fhirUrl(t,n,"_history")),this.invalidateSearches(t),s}deleteResource(t,n,i){return this.deleteCacheEntry(this.fhirUrl(t,n).toString()),this.invalidateSearches(t),this.delete(this.fhirUrl(t,n),i)}validateResource(t,n){return this.post(this.fhirUrl(t.resourceType,"$validate"),t,void 0,n)}executeBot(t,n,i,o){let s;if(typeof t=="string"){let a=t;s=this.fhirUrl("Bot",a,"$execute")}else{let a=t;s=this.fhirUrl("Bot","$execute"),s.searchParams.set("identifier",a.system+"|"+a.value)}return this.post(s,n,i,o)}executeBatch(t,n){return this.post(this.fhirBaseUrl,t,void 0,n)}sendEmail(t,n){return this.post("email/v1/send",t,D.JSON,n)}graphql(t,n,i,o){return this.post(this.fhirUrl("$graphql"),{query:t,operationName:n,variables:i},D.JSON,o)}readResourceGraph(t,n,i,o){return this.get(`${this.fhirUrl(t,n)}/$graph?graph=${i}`,o)}pushToAgent(t,n,i,o,s,a){return this.post(this.fhirUrl("Agent",ue(t),"$push"),{destination:typeof n=="string"?n:ce(n),body:i,contentType:o,waitForResponse:s},D.FHIR_JSON,a)}getActiveLogin(){return this.storage.getObject("activeLogin")}async setActiveLogin(t){(!this.sessionDetails?.profile||ce(this.sessionDetails.profile)!==t.profile?.reference)&&this.clearActiveLogin(),this.setAccessToken(t.accessToken,t.refreshToken),this.storage.setObject("activeLogin",t),this.addLogin(t),this.refreshPromise=void 0,await this.refreshProfile()}getAccessToken(){return this.accessToken}setAccessToken(t,n){this.accessToken=t,this.refreshToken=n,this.accessTokenExpires=_n(t),this.medplumServer=Mn(t)}getLogins(){return this.storage.getObject("logins")??[]}addLogin(t){let n=this.getLogins().filter(i=>i.profile?.reference!==t.profile?.reference);n.push(t),this.storage.setObject("logins",n)}async refreshProfile(){return this.medplumServer?(this.profilePromise=new Promise((t,n)=>{this.get("auth/me",{cache:"no-cache"}).then(i=>{this.profilePromise=void 0;let o=this.sessionDetails?.profile?.id!==i.profile.id;this.sessionDetails=i,o&&this.dispatchEvent({type:"change"}),t(i.profile),this.dispatchEvent({type:"profileRefreshed"})}).catch(n)}),this.dispatchEvent({type:"profileRefreshing"}),this.profilePromise):Promise.resolve(void 0)}isLoading(){return!this.isInitialized||!!this.profilePromise&&!this.sessionDetails?.profile}isSuperAdmin(){return!!this.sessionDetails?.project.superAdmin}isProjectAdmin(){return!!this.sessionDetails?.membership.admin}getProject(){return this.sessionDetails?.project}getProjectMembership(){return this.sessionDetails?.membership}getProfile(){return this.sessionDetails?.profile}async getProfileAsync(){return this.profilePromise?this.profilePromise:this.sessionDetails?this.sessionDetails.profile:this.refreshProfile()}getUserConfiguration(){return this.sessionDetails?.config}getAccessPolicy(){return this.sessionDetails?.accessPolicy}async download(t,n={}){this.refreshPromise&&await this.refreshPromise;let i=t.toString();i.startsWith(Xc)&&(t=this.fhirUrl(i));let o=n.headers;return o||(o={},n.headers=o),o.Accept||(o.Accept="*/*"),this.addFetchOptionsDefaults(n),(await this.fetchWithRetry(t.toString(),n)).blob()}async createMedia(t,n){let{additionalFields:i,...o}=t,s=await this.createResource({resourceType:"Media",status:"preparation",content:{contentType:t.contentType},...i});o.securityContext||(o.securityContext=ee(s));let a=await this.createAttachment(o,n);return this.updateResource({...s,status:"completed",content:a})}async uploadMedia(t,n,i,o,s){return this.createMedia({data:t,contentType:n,filename:i,additionalFields:o},s)}async bulkExport(t="",n,i,o){let s=t&&`${t}/`,a=this.fhirUrl(`${s}$export`);return n&&a.searchParams.set("_type",n),i&&a.searchParams.set("_since",i),this.startAsyncRequest(a.toString(),o)}async startAsyncRequest(t,n={}){this.addFetchOptionsDefaults(n);let i=n.headers;return i.Prefer="respond-async",this.request("POST",t,n)}get keyValue(){return this.keyValueClient||(this.keyValueClient=new Pt(this)),this.keyValueClient}getCacheEntry(t,n){if(!this.requestCache||n?.cache==="no-cache"||n?.cache==="reload")return;let i=this.requestCache.get(t);if(!(!i||i.requestTime+this.cacheTimen.code==="SUBSETTED")&&this.setCacheEntry(this.fhirUrl(t.resourceType,t.id).toString(),new M(Promise.resolve(t)))}deleteCacheEntry(t){this.requestCache&&this.requestCache.delete(t)}async request(t,n,i={},o={}){await this.refreshIfExpired(),i.method=t,this.addFetchOptionsDefaults(i);let s=await this.fetchWithRetry(n,i);if(s.status===401)return this.handleUnauthenticated(t,n,i);if(s.status===204||s.status===304)return;let c=s.headers.get("content-type")?.includes("json");if(s.status===404&&!c)throw new d(Lr);let u=await this.parseBody(s,c);if(s.status===200&&i.followRedirectOnOk||s.status===201&&i.followRedirectOnCreated){let p=await go(s,u);if(p)return this.request("GET",p,{...i,body:void 0})}if(s.status===202&&i.pollStatusOnAccepted){let m=await go(s,u)??o.statusUrl;if(m)return this.pollStatus(m,i,o)}if(s.status>=400)throw new d(He(u));return u}async parseBody(t,n){let i;if(n)try{i=await t.json()}catch(o){throw console.error("Error parsing response",t.status,o),o}else i=await t.text();return i}async fetchWithRetry(t,n){t.startsWith("http")||(t=U(this.baseUrl,t));let i=n?.maxRetries??2,o=200;for(let s=0;s<=i;s++){try{this.options.verbose&&this.logRequest(t,n);let a=await this.fetch(t,n);if(this.options.verbose&&this.logResponse(a),a.status<500||s===i)return a}catch(a){if(a.message==="Failed to fetch"&&s===0&&this.dispatchEvent({type:"offline"}),a.name==="AbortError"||s===i)throw a}await tr(o)}throw new Error("Unreachable")}logRequest(t,n){if(console.log(`> ${n.method} ${t}`),n.headers){let i=n.headers;for(let o of tt(Object.keys(i)))console.log(`> ${o}: ${i[o]}`)}}logResponse(t){console.log(`< ${t.status} ${t.statusText}`),t.headers&&t.headers.forEach((n,i)=>console.log(`< ${i}: ${n}`))}async pollStatus(t,n,i){let o={...n,method:"GET",body:void 0,redirect:"follow"};if(i.pollCount===void 0)n.headers&&typeof n.headers=="object"&&"Prefer"in n.headers&&(o.headers={...n.headers},delete o.headers.Prefer),i.statusUrl=t,i.pollCount=1;else{let s=n.pollStatusPeriod??1e3;await tr(s),i.pollCount++}return this.request("GET",t,o,i)}async executeAutoBatch(){if(this.autoBatchQueue===void 0)return;let t=[...this.autoBatchQueue];if(this.autoBatchQueue.length=0,this.autoBatchTimerId=void 0,t.length===1){let o=t[0];try{o.resolve(await this.request(o.method,U(this.fhirBaseUrl,o.url),o.options))}catch(s){o.reject(new d(He(s)))}return}let n={resourceType:"Bundle",type:"batch",entry:t.map(o=>({request:{method:o.method,url:o.url},resource:o.options.body?JSON.parse(o.options.body):void 0}))},i=await this.post(this.fhirBaseUrl,n);for(let o=0;othis.accessTokenExpires-t&&this.refresh(),this.refreshPromise??Promise.resolve()}refresh(){if(this.refreshPromise)return this.refreshPromise;if(this.refreshToken){let t=new URLSearchParams;return t.set("grant_type","refresh_token"),t.set("client_id",this.clientId),t.set("refresh_token",this.refreshToken),this.refreshPromise=this.fetchTokens(t),this.refreshPromise}if(this.clientId&&this.clientSecret)return this.refreshPromise=this.startClientLogin(this.clientId,this.clientSecret),this.refreshPromise}async startClientLogin(t,n){this.clientId=t,this.clientSecret=n;let i=new URLSearchParams;return i.set("grant_type","client_credentials"),i.set("client_id",t),i.set("client_secret",n),this.fetchTokens(i)}async startJwtBearerLogin(t,n,i){this.clientId=t;let o=new URLSearchParams;return o.set("grant_type","urn:ietf:params:oauth:grant-type:jwt-bearer"),o.set("client_id",t),o.set("assertion",n),o.set("scope",i),this.fetchTokens(o)}async startJwtAssertionLogin(t){let n=new URLSearchParams;return n.append("grant_type","client_credentials"),n.append("client_assertion_type","urn:ietf:params:oauth:client-assertion-type:jwt-bearer"),n.append("client_assertion",t),this.fetchTokens(n)}setBasicAuth(t,n){this.clientId=t,this.clientSecret=n,this.basicAuth=An(t+":"+n)}async fhircastSubscribe(t,n){if(!(typeof t=="string"&&t!==""))throw new d(h("Invalid topic provided. Topic must be a valid string."));if(!(typeof n=="object"&&Array.isArray(n)&&n.length>0))throw new d(h("Invalid events provided. Events must be an array of event names containing at least one event."));let i={channelType:"websocket",mode:"subscribe",topic:t,events:n},s=(await this.post(this.fhircastHubUrl,mr(i),D.FORM_URL_ENCODED))["hub.channel.endpoint"];if(!s)throw new Error("Invalid response!");return i.endpoint=s,i}async fhircastUnsubscribe(t){if(!Rt(t))throw new d(h("Invalid topic or subscriptionRequest. SubscriptionRequest must be an object."));if(!(t.endpoint&&typeof t.endpoint=="string"&&t.endpoint.startsWith("ws")))throw new d(h("Provided subscription request must have an endpoint in order to unsubscribe."));t.mode="unsubscribe",await this.post(this.fhircastHubUrl,mr(t),D.FORM_URL_ENCODED)}fhircastConnect(t){return new bt(t)}async fhircastPublish(t,n,i,o){return In(n)?this.post(this.fhircastHubUrl,hr(t,n,i,o),D.JSON):(kn(n),this.post(this.fhircastHubUrl,hr(t,n,i),D.JSON))}async fhircastGetContext(t){return this.get(`${this.fhircastHubUrl}/${t}`)}async invite(t,n){return this.post("admin/projects/"+t+"/invite",n)}async fetchTokens(t){let n={method:"POST",headers:{"Content-Type":D.FORM_URL_ENCODED},body:t.toString(),credentials:"include"},i=n.headers;this.basicAuth&&(i.Authorization=`Basic ${this.basicAuth}`);let o;try{o=await this.fetchWithRetry(this.tokenUrl,n)}catch(a){throw this.refreshPromise=void 0,a}if(!o.ok){this.clearActiveLogin();try{let a=await o.json();throw new d(E(a.error_description))}catch(a){throw new d(E("Failed to fetch tokens"),a)}}let s=await o.json();return await this.verifyTokens(s),this.getProfile()}async verifyTokens(t){let n=t.access_token;if(Dn(n)){let i=Ct(n);if(Date.now()>=i.exp*1e3)throw this.clearActiveLogin(),new d(Fr);if(i.cid){if(i.cid!==this.clientId)throw this.clearActiveLogin(),new d(Ut)}else if(this.clientId&&i.client_id!==this.clientId)throw this.clearActiveLogin(),new d(Ut)}return this.setActiveLogin({accessToken:n,refreshToken:t.refresh_token,project:t.project,profile:t.profile})}checkSessionDetailsMatchLogin(t){return this.sessionDetails&&t?t.profile?.reference?.endsWith(this.sessionDetails.profile.id)??!1:!0}setupStorageListener(){try{window.addEventListener("storage",t=>{if(t.key===null)window.location.reload();else if(t.key==="activeLogin"){let n=t.oldValue?JSON.parse(t.oldValue):void 0,i=t.newValue?JSON.parse(t.newValue):void 0;n?.profile.reference!==i?.profile.reference||!this.checkSessionDetailsMatchLogin(i)?window.location.reload():i?this.setAccessToken(i.accessToken,i.refreshToken):this.clear()}})}catch{}}getSubscriptionManager(){return this.subscriptionManager||(this.subscriptionManager=new At(this,yn(this.baseUrl,"/ws/subscriptions-r4"))),this.subscriptionManager}subscribeToCriteria(t,n){return this.getSubscriptionManager().addCriteria(t,n)}unsubscribeFromCriteria(t,n){this.subscriptionManager&&(this.subscriptionManager.removeCriteria(t,n),this.subscriptionManager.getCriteriaCount()===0&&this.subscriptionManager.closeWebSocket())}getMasterSubscriptionEmitter(){return this.getSubscriptionManager().getMasterEmitter()}};function eu(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}function yo(){return typeof window>"u"?"":window.location.protocol+"//"+window.location.host+"/"}async function go(r,e){let t=r.headers.get("content-location");if(t)return t;let n=r.headers.get("location");if(n)return n;if(ve(e)&&e.issue?.[0]?.diagnostics)return e.issue[0].diagnostics}function vo(r){let e=r.entry?.map(t=>t.resource)??[];return Object.assign(e,{bundle:r})}function tu(r){return b(r)&&"data"in r&&"contentType"in r}function Fn(r,e,t,n){return tu(r)?r:{data:r,filename:e,contentType:t,onProgress:n}}function ru(r){return b(r)&&"docDefinition"in r}function Ro(r,e,t,n){return ru(r)?r:{docDefinition:r,filename:e,tableLayouts:t,fonts:n}}var nu={aws_ssm_parameter_store:"aws_ssm_parameter_store"};function xr({parentContext:r,path:e,elements:t,profileUrl:n,debugMode:i,accessPolicyResource:o}){if(e===r?.path)return;i??=r?.debugMode??!1,o??=r?.accessPolicyResource;let s=iu(e,t,r,!!i),a=rr(e,".",2)[1];s=ou(s,o,a),s=su(s,o,a);let c=Object.create(null);for(let[p,m]of Object.entries(s))c[e+"."+p]=m;let u;if(r&&!r.isDefaultContext)u=r.getExtendedProps;else{let p=Object.create(null);u=m=>{let x=rr(m,".",2)[1];if(x){if(!p[x]){let z=vr(x,o?.hiddenFields);p[x]={hidden:z,readonly:z||vr(x,o?.readonlyFields)}}return p[x]}}}return{path:e,elements:s,elementsByPath:c,profileUrl:n??r?.profileUrl,debugMode:i,getExtendedProps:u,accessPolicyResource:o}}function iu(r,e,t,n){let i=Object.create(null);if(t)for(let[s,a]of Object.entries(t.elementsByPath)){let c=Ee(r,s);c!==void 0&&(i[c]=a)}let o=!1;if(e)for(let[s,a]of Object.entries(e))s in i||(i[s]=a,o=!0);return n&&console.assert(o,"Unnecessary ElementsContext; not using any newly provided elements"),i}function ou(r,e,t){if(!e?.hiddenFields?.length)return r;let n=t?t+".":"";return Object.fromEntries(Object.entries(r).filter(([i])=>!vr(n+i,e.hiddenFields)))}function su(r,e,t){if(!e?.readonlyFields?.length)return r;let n=Object.create(null),i=t?t+".":"";for(let[o,s]of Object.entries(r))vr(i+o,e.readonlyFields)?n[o]={...s,readonly:!0}:n[o]=s;return n}function vr(r,e){if(!e?.length)return!1;let t=r.split(".");for(let n=1;n<=t.length;n++){let i=t.slice(0,n).join(".");if(e.includes(i))return!0}return!1}function Un(r){return r.type!==void 0&&r.type.length>0}function au(r,e,t,n){let i=Te(r,e.path,{profileUrl:n});if(i){let o=t.typeSchema?.elements??t.elements;return i.some(s=>Kt(s,e,t,o))??!1}return console.assert(!1,"getNestedProperty[%s] in isDiscriminatorComponentMatch missed",e.path),!1}function Bn(r,e,t,n){if(r)for(let i of e){let o={value:r,type:i.typeSchema?.type??i.type?.[0].code};if(t.every(s=>au(o,s,i,i.typeSchema?.url??n)))return i.name}}var qe=class{constructor(e,t,n){if(e.type===void 0)throw new Error("schema must include a type");this.rootSchema=e;let i=xr({parentContext:void 0,path:this.rootSchema.type,elements:n??this.rootSchema.elements,profileUrl:this.rootSchema.name===this.rootSchema.type?void 0:this.rootSchema.url});if(i===void 0)throw new Error("Could not create root elements context");this.elementsContextStack=[i],this.visitor=t}get elementsContext(){return this.elementsContextStack[this.elementsContextStack.length-1]}crawlElement(e,t,n){this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema);let i=Object.fromEntries(Object.entries(this.elementsContext.elements).filter(([o])=>o.startsWith(t)));this.crawlElementsImpl(i,n),this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlSlice(e,t,n){let i=this.prepareSlices(n.slices,n);if(!G(i.slices))throw new Error(`cannot crawl slice ${t.name} since it has no type information`);this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema),this.sliceAllowList=[t],this.crawlSliceImpl(i.slices[0],t.path,i),this.sliceAllowList=void 0,this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlResource(){this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema),this.crawlElementsImpl(this.rootSchema.elements,this.rootSchema.type),this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlElementsImpl(e,t){let n=cu(e);for(let i of n)this.crawlElementNode(i,t)}crawlElementNode(e,t){let n=t+"."+e.key;this.visitor.onEnterElement&&this.visitor.onEnterElement(n,e.element,this.elementsContext);for(let i of e.children)this.crawlElementNode(i,t);G(e.element?.slicing?.slices)&&this.crawlSlicingImpl(e.element.slicing,n),this.visitor.onExitElement&&this.visitor.onExitElement(n,e.element,this.elementsContext)}prepareSlices(e,t){let n=[];for(let o of e){if(!Un(o))continue;let s=o.type.find(a=>G(a.profile))?.profile?.[0];if(G(s)){let a=Yr(s);a&&(o.typeSchema=a)}n.push(o)}return{...t,slices:n}}crawlSlicingImpl(e,t){let n=this.prepareSlices(e.slices,e);for(let i of n.slices)(this.sliceAllowList===void 0||this.sliceAllowList.includes(i))&&this.crawlSliceImpl(i,t,n)}crawlSliceImpl(e,t,n){let i=e.typeSchema;i&&this.visitor.onEnterSchema&&this.visitor.onEnterSchema(i),this.visitor.onEnterSlice&&this.visitor.onEnterSlice(t,e,n);let o,s=i?.elements??e.elements;G(s)&&(o=xr({path:t,parentContext:this.elementsContext,elements:s})),o&&this.elementsContextStack.push(o),this.crawlElementsImpl(s,t),o&&this.elementsContextStack.pop(),this.visitor.onExitSlice&&this.visitor.onExitSlice(t,e,n),i&&this.visitor.onExitSchema&&this.visitor.onExitSchema(i)}};function cu(r){let e=[];function t(o,s){return s.startsWith(o+".")}function n(o,s){for(let a of o.children)if(t(a.key,s.key)){n(a,s);return}o.children.push(s)}let i=Object.entries(r);i.sort((o,s)=>o[0].localeCompare(s[0]));for(let[o,s]of i){let a={key:o,element:s,children:[]},c=!1;for(let u of e)if(t(u.key,o)){n(u,a),c=!0;break}c||e.push(a)}return e}var Tr="__sliceName";function uu(r,e){let t=new It(r,r.resourceType,"resource");return new qe(e,t).crawlResource(),t.getDefaultValue()}function lu(r,e,t){for(let[n,i]of Object.entries(e)){if(t===void 0||t===n){kt(r,n,i,e);continue}let o=Ee(t,n);o!==void 0&&kt(r,o,i,e)}return r}function pu(r,e,t,n,i){let o=r??Object.create(null),[s,a]=mu(e,"."),c=Object.create(null);Sr(c,o,a,t);let u=new It(c,s,"element");new qe(i,u,n).crawlElement(t,a,s);let m=u.getDefaultValue();return Er(m,a,t,n)}function du(r,e,t,n){let i=new It([{[Tr]:e.name}],e.path,"element");return new qe(n,i).crawlSlice(r,e,t),i.getDefaultValue()[0]}var It=class{constructor(e,t,n){this.schemaStack=[],this.valueStack=[],this.rootValue=le(e),this.valueStack.splice(0,this.valueStack.length,{type:n,path:t,values:[this.rootValue]})}get schema(){return this.schemaStack[this.schemaStack.length-1]}get value(){return this.valueStack[this.valueStack.length-1]}onEnterSchema(e){this.schemaStack.push(e)}onExitSchema(){this.schemaStack.pop()}onEnterElement(e,t,n){let i=this.value.values,o=this.value.path,s=Ee(o,e);if(s===void 0)throw new Error(`Expected ${e} to be prefixed by ${o}`);let a=[];for(let c of i){if(c===void 0)continue;let u=Array.isArray(c)?c:[c];for(let p of u){fu(p,s,t,n.elements),kt(p,s,t,n.elements);let m=Er(p,s,t,n.elements);m!==void 0&&a.push(m)}}this.valueStack.push({type:"element",path:e,values:a})}onExitElement(e,t,n){if(!this.valueStack.pop())throw new Error("Expected value context to exist when exiting element");let o=Ee(this.value.path,e);if(o===void 0)throw new Error(`Expected ${e} to be prefixed by ${this.value.path}`);for(let s of this.value.values){let a=Er(s,o,t,n.elements);if(Array.isArray(a))for(let c=a.length-1;c>=0;c--){let u=a[c];G(u)||a.splice(c,1)}S(a)&&Sr(s,void 0,o,t)}}onEnterSlice(e,t,n){let i=this.value.values,o=[];for(let s of i){if(s===void 0)continue;if(!Array.isArray(s))throw new Error("Expected array value for sliced element");let a=this.getMatchingSliceValues(s,t,n);o.push(a)}this.valueStack.push({type:"slice",path:e,values:o})}getMatchingSliceValues(e,t,n){let i=[];for(let o of e)(o[Tr]??Bn(o,[t],n.discriminator,this.schema.url))===t.name&&i.push(o);for(let o=i.length;o=0;n--){let i=t[n];Tr in i&&delete i[Tr]}}getDefaultValue(){return this.rootValue}};function fu(r,e,t,n){let i=Er(r,e,t,n);t.min>0&&i===void 0&&er(t.type[0].code)&&(t.isArray?Sr(r,[Object.create(null)],e,t):Sr(r,Object.create(null),e,t))}function Sr(r,e,t,n){if(t.includes("."))throw new Error("key cannot be nested");let i=t;if(t.includes("[x]")){let o=n.type[0].code;i=t.replace("[x]",w(o))}e===void 0?delete r[i]:r[i]=e}function Er(r,e,t,n){let i=e.split("."),o=r,s;for(let a=0;au[c]):s=o[c];continue}if(Array.isArray(o))o=o.map(u=>u[c]);else if(b(o)){if(o[c]===void 0)return;o=o[c]}else return}return s}function kt(r,e,t,n){if(!(t.fixed||t.pattern))return r;if(Array.isArray(r))return r.map(a=>kt(a,e,t,n));r==null&&(r=Object.create(null));let i=r,o=e.split("."),s=i;for(let a=0;a0?r:le(e);if(b(e)&&(b(r)&&!Array.isArray(r)||r===void 0)){let t=le(r)??Object.create(null);for(let n of Object.keys(e))t[n]=Co(t[n],e[n]);return t}return r}function mu(r,e){let t=r.lastIndexOf(e);if(t===-1)return["",r];let n=r.substring(0,t),i=r.substring(t+e.length);return[n,i]}function qn(r,e){if(!r.group)throw new d(E("ConceptMap does not specify a mapping group","ConceptMap.group"));let t=hu(e);if(ve(t))throw new d(t);let n=gu(t,e.targetsystem?r.group.filter(o=>o.target===e.targetsystem):r.group),i=n.length>0;return{result:i,match:i?n:void 0}}function hu(r){return r.code&&!r.coding&&!r.codeableConcept?r.system===void 0?E("Missing required 'system' input parameter with 'code' parameter"):{[r.system]:[r.code]}:r.coding&&!r.code&&!r.codeableConcept?{[r.coding.system??""]:[r.coding.code??""]}:r.codeableConcept&&!r.code&&!r.coding?yu(r.codeableConcept):r.code||r.coding||r.codeableConcept?E("Ambiguous input: multiple source codings provided"):E("No source provided: 'code'+'system', 'coding', or 'codeableConcept' input parameter is required")}function yu(r){let e=Object.create(null);if(!r.coding?.length)return e;for(let{system:t,code:n}of r.coding){if(!n)continue;let i=t??"";e[i]=e[i]?[...e[i],n]:[n]}return e}function gu(r,e){let t=[];for(let[n,i]of Object.entries(r))for(let o of e.filter(s=>(s.source??"")===n)){let s=o.element?.filter(a=>i.includes(a.code)).flatMap(a=>a.target?.map(c=>({equivalence:c.equivalence,concept:{system:o.target,code:c.code,display:c.display}}))??[]);s?.length||(s=vu(i,o)),s&&t.push(...s)}return t}function vu(r,e){switch(e.unmapped?.mode){case"provided":return r.map(t=>({equivalence:"equal",concept:{system:e.target,code:t}}));case"fixed":return[{equivalence:"equivalent",concept:{system:e.target,code:e.unmapped.code,display:e.unmapped.display}}];default:return}}var xu=[...vt,"->","<<",">>","=="];function Po(r){return new ne(r,gt,xu).tokenize()}var Tu={"-":"disjoint","==":"equal"},jn=class{constructor(e){this.parser=e;this.structureMap={resourceType:"StructureMap",status:"active"}}parse(){for(;this.parser.hasMore();){let e=this.parser.peek()?.value;switch(e){case"map":this.parseMap();break;case"uses":this.parseUses();break;case"imports":this.parseImport();break;case"group":this.parseGroup();break;case"conceptmap":this.parseConceptMap();break;default:throw new Error(`Unexpected token: ${e}`)}}return this.structureMap}parseMap(){this.parser.consume("Symbol","map"),this.structureMap.url=this.parser.consume("String").value,this.parser.consume("="),this.structureMap.name=this.parser.consume().value}parseUses(){this.parser.consume("Symbol","uses");let e={};e.url=this.parser.consume("String").value,this.parser.peek()?.value==="alias"&&(this.parser.consume("Symbol","alias"),e.alias=this.parser.consume("Symbol").value),this.parser.consume("Symbol","as"),e.mode=this.parser.consume().value,this.structureMap.structure||(this.structureMap.structure=[]),this.structureMap.structure.push(e)}parseImport(){this.parser.consume("Symbol","imports"),this.structureMap.import||(this.structureMap.import=[]),this.structureMap.import.push(this.parser.consume("String").value)}parseGroup(){let e={};this.parser.consume("Symbol","group"),e.name=this.parser.consume("Symbol").value,e.input=this.parseParameters(),this.parser.peek()?.value==="extends"&&(this.parser.consume("Symbol","extends"),e.extends=this.parser.consume("Symbol").value),this.parser.peek()?.value==="<<"?(this.parser.consume("<<"),e.typeMode=this.parser.consume().value,this.parser.peek()?.value==="+"&&(this.parser.consume("+"),e.typeMode="type-and-types"),this.parser.consume(">>")):e.typeMode="none",e.rule=this.parseRules(),this.structureMap.group||(this.structureMap.group=[]),this.structureMap.group.push(e)}parseParameters(){let e=[];for(this.parser.consume("(");this.parser.hasMore()&&this.parser.peek()?.value!==")";)e.push(this.parseParameter()),this.parser.peek()?.value===","&&this.parser.consume(",");return this.parser.consume(")"),e}parseParameter(){let e={};return e.mode=this.parser.consume().value,e.name=this.parser.consume("Symbol").value,this.parser.peek()?.value===":"&&(this.parser.consume(":"),e.type=this.parser.consume("Symbol").value),e}parseRules(){let e=[];for(this.parser.consume("{");this.parser.hasMore()&&this.parser.peek()?.value!=="}";)e.push(this.parseRule());return this.parser.consume("}"),e}parseRule(){let e={source:this.parseRuleSources()};return this.parser.peek()?.value==="->"&&(this.parser.consume("->"),e.target=this.parseRuleTargets()),this.parser.peek()?.value==="then"&&(this.parser.consume("Symbol","then"),this.parser.peek()?.id==="{"?e.rule=this.parseRules():e.dependent=this.parseRuleDependents()),this.parser.peek()?.id==="String"?e.name=this.parser.consume().value:e.name=e.source?.[0]?.element,this.parser.consume(";"),e}parseRuleSources(){this.parser.hasMore()&&this.parser.peek()?.value==="for"&&this.parser.consume("Symbol","for");let e=[this.parseRuleSource()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleSource());return e}parseRuleSource(){let e={},n=this.parseRuleContext().split(".");if(e.context=n[0],e.element=n[1],this.parser.hasMore()&&this.parser.peek()?.value===":"&&(this.parser.consume(":"),e.type=this.parser.consume().value),this.parser.hasMore()&&this.parser.peek()?.value==="default"&&(this.parser.consume("Symbol","default"),e.defaultValueString=this.parser.consume("String").value),(this.parser.peek()?.value==="first"||this.parser.peek()?.value==="not_first"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="not_last"||this.parser.peek()?.value==="only_one")&&(e.listMode=this.parser.consume().value),this.parser.peek()?.value==="as"&&(this.parser.consume("Symbol","as"),e.variable=this.parser.consume().value),this.parser.peek()?.value==="log"&&(this.parser.consume("Symbol","log"),e.logMessage=this.parser.consume().value),this.parser.peek()?.value==="where"){this.parser.consume("Symbol","where");let i=this.parser.consumeAndParse(y.Arrow);e.condition=i.toString()}if(this.parser.peek()?.value==="check"){this.parser.consume("Symbol","check");let i=this.parser.consumeAndParse(y.Arrow);e.check=i.toString()}return e}parseRuleTargets(){let e=[this.parseRuleTarget()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleTarget());return e}parseRuleTarget(){let e={},n=this.parseRuleContext().split(".");return e.contextType="variable",e.context=n[0],e.element=n[1],this.parser.peek()?.value==="="&&(this.parser.consume("="),this.parseRuleTargetTransform(e)),this.parser.peek()?.value==="as"&&(this.parser.consume("Symbol","as"),e.variable=this.parser.consume().value),this.parser.peek()?.value==="share"&&(this.parser.consume("Symbol","share"),e.listMode=["share"],this.parser.consume("Symbol")),(this.parser.peek()?.value==="first"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="collate")&&(e.listMode=[this.parser.consume().value]),e}parseRuleTargetTransform(e){let t=this.parser.consumeAndParse(y.As);t instanceof K?(e.transform=t.name,e.parameter=t.args?.map(wo)):t instanceof L||t instanceof q?(e.transform="copy",e.parameter=[wo(t)]):(e.transform="evaluate",e.parameter=[{valueString:t.toString()}])}parseRuleContext(){let e=this.parser.consume().value;for(;this.parser.peek()?.value===".";)this.parser.consume("."),e+="."+this.parser.consume().value;return e}parseRuleDependents(){let e=this.parser.consumeAndParse(y.Arrow);return[{name:e.name,variable:e.args.map(t=>t.name)}]}parseConceptMap(){this.parser.consume("Symbol","conceptmap");let e={resourceType:"ConceptMap",status:"active",url:"#"+this.parser.consume("String").value};this.parser.consume("{");let t={},n=this.parser.peek()?.value;for(;n!=="}";)n==="prefix"?this.parseConceptMapPrefix(t):this.parseConceptMapRule(e,t),n=this.parser.peek()?.value;this.parser.consume("}"),this.structureMap.contained||(this.structureMap.contained=[]),this.structureMap.contained.push(e)}parseConceptMapPrefix(e){this.parser.consume("Symbol","prefix");let t=this.parser.consume().value;this.parser.consume("=");let n=this.parser.consume().value;e[t]=n}parseConceptMapRule(e,t){let n=this.parser.consume().value,i=t[n];this.parser.consume(":");let o=this.parser.consume().value,s=Tu[this.parser.consume().value],a=this.parser.consume().value,c=t[a];this.parser.consume(":");let u=this.parser.consume().value,p=e?.group?.find(m=>m.source===i&&m.target===c);p||(p={source:i,target:c,element:[]},e.group||(e.group=[]),e.group.push(p)),p.element||(p.element=[]),p.element.push({code:o,target:[{code:u,equivalence:s}]})}};function wo(r){if(r instanceof q)return{valueId:r.name};if(r instanceof L)return Su(r);throw new Error(`Unknown parameter atom type: ${r.constructor.name} (${r.toString()})`)}function Su(r){switch(r.value.type){case"boolean":return{valueBoolean:r.value.value};case"decimal":return{valueDecimal:r.value.value};case"integer":return{valueInteger:r.value.value};case"dateTime":case"string":return{valueString:r.value.value};default:throw new Error("Unknown target literal type: "+r.value.type)}}var Eu=Le().registerInfix("->",{precedence:y.Arrow}).registerInfix(";",{precedence:y.Semicolon});function bu(r){let e=Eu.construct(Po(r));return e.removeComments(),new jn(e).parse()}var br=class{constructor(e=[]){this.resources=e}get(e,t){let n=[];for(let i of this.resources)i.resourceType===e&&i.url&&this.matchesUrl(i.url,t)&&n.push(i);return n}matchesUrl(e,t){if(t.includes("*")){let n=t.split("*");return e.startsWith(n[0])&&e.endsWith(n[1])}else return e===t}};function Ru(r,e,t=new br){return Cu({root:r,transformMaps:t},r,e)}function Cu(r,e,t){return Pu(r,e),Oo(r,e),Wn(r,e.group[0],t)}function Pu(r,e){let t=Cr(r);if(t&&e.import)for(let n of e.import){let i=t.get("StructureMap",n);for(let o of i)Oo(r,o)}}function Oo(r,e){let t=Cr(r);if(t&&e.contained)for(let n of e.contained)(n.resourceType==="StructureMap"||n.resourceType==="ConceptMap")&&t.resources.push(n);if(e.group)for(let n of e.group)Rr(r,n.name,{type:"StructureMapGroup",value:n})}function Wn(r,e,t){let n=[],i=[];for(let u of e.input)u.mode==="source"&&n.push(u),u.mode==="target"&&i.push(u);if(n.length===0)throw new Error("Missing source definitions");if(i.length===0)throw new Error("Missing target definitions");if(t.lengthn.length+i.length)throw new Error(`Too many arguments (got ${t.length}, max ${n.length+i.length})`);let o={},s=[],a=0;for(let u of n)Vt(o,u.name,t[a++]);for(let u of i){let p=t[a++]??{type:u.type??"BackboneElement",value:{}};Vt(o,u.name,p),s.push(p)}let c={root:r.root,parent:r,variables:o};if(e.rule)for(let u of e.rule)Io(c,u);return s}function Io(r,e){e.source&&ko(r,e,0)}function ko(r,e,t){let n=e.source[t];for(let i of Iu(r,n))Rr(r,"_",i),n.variable&&Rr(r,n.variable,i),tF(r,t))}function Nu(r,e){let t={};return e.parameter&&e.parameter.length>0&&(t.resourceType=F(r,e.parameter?.[0])?.[0]?.value),[g(t)]}function Lu(r,e){let n=F(r,e.parameter?.[0])[0].value;return A(n,[],No(r))}function Fu(r,e){let t=e.parameter.flatMap(c=>F(r,c)),n=t[0].value,i=t[1].value,s=Cr(r)?.get("ConceptMap",i)[0];if(!s)throw new Error("ConceptMap not found: "+i);let a=qn(s,{system:s.group?.[0]?.source,code:n});return[g(a.match?.[0]?.concept?.code)]}function Uu(r,e){let t=F(r,e.parameter?.[0])?.[0],n=F(r,e.parameter?.[1])?.[0]?.value;return t.type==="string"?[{type:"string",value:t.value.substring(0,n)}]:[t]}function Bu(r,e){let t=ye(r,e.name);if(!t)throw new Error("Dependent group not found: "+e.name);let n=e.variable,i=[];for(let s of n){let a=ye(r,s);if(!a)throw new Error("Dependent variable not found: "+s);i.push(a)}let o={root:r.root,parent:r,variables:{}};Wn(o,t.value,i)}function Cr(r){if(r.transformMaps)return r.transformMaps;if(r.parent)return Cr(r.parent)}function F(r,e){let n=P({type:"StructureMapGroupRuleTargetParameter",value:e},"value");if(!n)throw new Error("Missing target parameter: "+JSON.stringify(e));if(n=$n(n),n.length===1&&n[0].type==="id"){let i=ye(r,n[0].value);if(!i)throw new Error("Variable not found: "+n[0].value);return $n(i)}return n}function ye(r,e){let t=r.variables?.[e];if(t)return t;if(r.parent)return ye(r.parent,e)}function No(r,e={}){if(r.parent&&No(r.parent,e),r.variables)for(let[t,n]of Object.entries(r.variables))e[t]=n,e["%"+t]=n;return e}function Rr(r,e,t){r.variables||(r.variables={}),Vt(r.variables,e,t)}function Vt(r,e,t){if(e==="__proto__"||e==="constructor"||e==="prototype")throw new Error("Invalid key: "+e);r[e]=t}function $n(r){return Array.isArray(r)?r:[r]}function qu(r){return r.length===1?r[0]:r}var ju=[...vt,"eq","ne","co"];function Lo(r){return new ne(r,gt,ju,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var Dt=class{constructor(e,t,n){this.path=e;this.operator=t;this.value=n}},Mt=class{constructor(e){this.child=e}},_t=class{constructor(e,t,n){this.keyword=e;this.left=t;this.right=n}};var $u={eq:"eq",ne:"ne",co:"contains",sw:void 0,ew:void 0,gt:"gt",lt:"lt",ge:"ge",le:"le",ap:"ap",sa:"sa",eb:"eb",pr:"present",po:void 0,ss:void 0,sb:void 0,in:"in",ni:"not-in",re:"eq",identifier:"identifier"};function Wu(r){let e=$u[r];if(!e)throw new d(E("Invalid operator: "+r));return e}var Gn=class{constructor(e){this.parser=e}parse(){let e;this.parser.peek()?.value==="("?(this.parser.consume("("),e=this.parse(),this.parser.consume(")")):this.parser.peek()?.value==="not"?(this.parser.consume("Symbol","not"),this.parser.consume("("),e=new Mt(this.parse()),this.parser.consume(")")):e=new Dt(this.parser.consume("Symbol").value,Wu(this.parser.consume("Symbol").value),this.parser.consume().value);let t=this.parser.peek()?.value;return t==="and"||t==="or"?(this.parser.consume("Symbol",t),new _t(t,e,this.parse())):e}},Gu=Le();function Hu(r){let e=Gu.construct(Lo(r));return e.removeComments(),new Gn(e).parse()}var oe=class{constructor(e="\r",t="|",n="^",i="~",o="\\",s="&"){this.segmentSeparator=e;this.fieldSeparator=t;this.componentSeparator=n;this.repetitionSeparator=i;this.escapeCharacter=o;this.subcomponentSeparator=s}getMsh1(){return this.fieldSeparator}getMsh2(){return this.componentSeparator+this.repetitionSeparator+this.escapeCharacter+this.subcomponentSeparator}},Hn=class r{constructor(e,t=new oe){this.context=t,this.segments=e}get header(){return this.segments[0]}get(e){return this.getSegment(e)}getAll(e){return this.getAllSegments(e)}getSegment(e){return typeof e=="number"?this.segments[e]:this.segments.find(t=>t.name===e)}getAllSegments(e){return this.segments.filter(t=>t.name===e)}toString(){return this.segments.map(e=>e.toString()).join(this.context.segmentSeparator)}buildAck(){let e=new Date,t=this.getSegment("MSH"),n=t?.getField(3)?.toString()??"",i=t?.getField(4)?.toString()??"",o=t?.getField(5)?.toString()??"",s=t?.getField(6)?.toString()??"",a=t?.getField(10)?.toString()??"",c=t?.getField(12)?.toString()??"2.5.1";return new r([new je(["MSH",this.context.getMsh2(),o,s,n,i,Fo(e),"",this.buildAckMessageType(t),e.getTime().toString(),"P",c],this.context),new je(["MSA","AA",a,"OK"],this.context)])}buildAckMessageType(e){let t=e?.getField(9),n=t?.getComponent(2),i=t?.getComponent(3),o="ACK";return n&&i?o=`ACK^${n}^ACK`:n&&(o=`ACK^${n}`),o}static parse(e){if(!e.startsWith("MSH")){let n=new Error("Invalid HL7 message");throw n.type="entity.parse.failed",n}let t=new oe("\r",e.charAt(3),e.charAt(4),e.charAt(5),e.charAt(6),e.charAt(7));return new r(e.split(/[\r\n]+/).map(n=>je.parse(n,t)),t)}},je=class r{constructor(e,t=new oe){this.context=t,pn(e)?this.fields=e.map(n=>Ie.parse(n,t)):this.fields=e,this.name=this.fields[0].components[0][0]}get(e){return this.fields[e]}getField(e){if(this.name==="MSH"){if(e===1)return new Ie([[this.context.getMsh1()]],this.context);if(e===2)return new Ie([[this.context.getMsh2()]],this.context);if(e>2)return this.fields[e-1]}return this.fields[e]}getComponent(e,t,n,i=0){return this.getField(e)?.getComponent(t,n,i)??""}toString(){return this.fields.map(e=>e.toString()).join(this.context.fieldSeparator)}static parse(e,t=new oe){return new r(e.split(t.fieldSeparator).map(n=>Ie.parse(n,t)),t)}},Ie=class r{constructor(e,t=new oe){this.context=t,this.components=e}get(e,t,n=0){return this.getComponent(e+1,t,n)}getComponent(e,t,n=0){let i=this.components[n][e-1]??"";return t!==void 0&&(i=i.split(this.context.subcomponentSeparator)[t]??""),i}toString(){return this.components.map(e=>e.join(this.context.componentSeparator)).join(this.context.repetitionSeparator)}static parse(e,t=new oe){return new r(e.split(t.repetitionSeparator).map(n=>n.split(t.componentSeparator)),t)}};function Qu(r,e){if(!r)return;let t=Oe(r.slice(0,4),0),n=Oe(r.slice(4,6),1)-1,i=Oe(r.slice(6,8),1),o=Oe(r.slice(8,10),0),s=Oe(r.slice(10,12),0),a=Oe(r.slice(12,14),0),c=0;r.includes(".")&&(c=Oe(r.slice(15,19),0));let u=new Date(Date.UTC(t,n,i,o,s,a,c)),p=Ku(r,e?.tzOffset);return p!==0&&(u=new Date(u.getTime()-p)),u.toISOString()}function Oe(r,e){let t=parseInt(r,10);return isNaN(t)?e:t}function Ku(r,e){let t=e,n=r.indexOf("+");n!==-1&&(t=r.slice(n));let i=r.indexOf("-");if(i!==-1&&(t=r.slice(i)),!t)return 0;let o=t.startsWith("-")?-1:1;t=t.slice(1).replace(":","");let s=parseInt(t.slice(0,2),10),a=parseInt(t.slice(2,4),10);return o*(s*60*60*1e3+a*60*1e3)}function Fo(r){let e=r instanceof Date?r:new Date(r),n=e.toISOString().replace(/[-:T]/g,"").replace(/(\.\d+)?Z$/,""),i=e.getUTCMilliseconds();return i>0&&(n+="."+i.toString()),n}var Pr=(o=>(o[o.NONE=0]="NONE",o[o.ERROR=1]="ERROR",o[o.WARN=2]="WARN",o[o.INFO=3]="INFO",o[o.DEBUG=4]="DEBUG",o))(Pr||{}),Qn=class r{constructor(e,t={},n=3,i){this.write=e;this.metadata=t;this.level=n;this.options=i;i?.prefix&&(this.prefix=i.prefix),this.error=this.error.bind(this),this.warn=this.warn.bind(this),this.info=this.info.bind(this),this.debug=this.debug.bind(this),this.log=this.log.bind(this)}clone(e){let t=this.getLoggerConfig(),n=e?{...t,override:e,options:{...t.options,...e.options}}:t;return new r(n.write,n.metadata,n.level,n.options)}getLoggerConfig(){let{write:e,metadata:t,level:n,options:i}=this;return{write:e,metadata:t,level:n,options:i}}error(e,t){this.log(1,e,t)}warn(e,t){this.log(2,e,t)}info(e,t){this.log(3,e,t)}debug(e,t){this.log(4,e,t)}log(e,t,n){e>this.level||(n instanceof Error&&(n={error:n.toString(),stack:n.stack?.split(` `)}),this.write(JSON.stringify({level:Pr[e],timestamp:new Date().toISOString(),msg:this.prefix?`${this.prefix}${t}`:t,...n,...this.metadata})))}};function zu(r){let e=Pr[r.toUpperCase()];if(e===void 0)throw new Error(`Invalid log level: ${r}`);return e}function Ju(r){if(!r)throw new d(h("Resource type is null"));if(!zr(r))throw new d(h("Unknown resource type"))}function Kn(r,e,t){r===null?t.push(v(e,"Invalid null value")):Array.isArray(r)?Yu(r,e,t):typeof r=="object"&&Zu(r,e,t)}function Yu(r,e,t){for(let n=0;n{r.on("data",i=>e.push(Buffer.from(i))),r.on("error",i=>{r.destroy(),n(i)}),r.on("end",()=>{t(Buffer.concat(e))}),r.on("close",()=>{r.destroy()})})}function el(r,e){let t=[];for(let n of e)t.push(...tl(r,n));return t}function tl(r,e){if(!r.resource)throw new Error("Resource type is required");if(r.resource!==e.resourceType)return[];let t={};if(r.constant)for(let i of r.constant){let o={type:"ViewDefinitionConstant",value:i};t["%"+i.name]=P(o,"value")}let n=g(e);if(r.where)for(let i of r.where){let o=A(i.path,[n],t);if(o.length!==1)return[];if(o[0].type!=="boolean")throw new Error("WHERE clause must evaluate to a boolean");if(!o[0].value)return[]}return zn(r,n,t)}function zn(r,e,t){let n=[],i;r.forEach?i=A(r.forEach,[e],t):r.forEachOrNull?i=A(r.forEachOrNull,[e],t):i=[e];for(let o of i){let s=[];for(let a of r.column??[]){let c=A(a.path,[o],t),u;if(c.length===0)u={[a.name]:null};else if(a.collection)u={[a.name]:c.map(p=>p.value)};else if(c.length===1)u={[a.name]:c[0].value};else throw new Error("Multiple values found but not expected for column");s.push([u])}for(let a of r.select??[]){let c=zn(a,o,t);s.push(c)}if(r.unionAll){let a=[];for(let c of r.unionAll)for(let u of zn(c,o,t))a.push(u);s.push(a)}n.push(...rl(s))}if(i.length===0&&r.forEachOrNull){let o={};for(let s of r.column??[])o[s.name]=null;n.push(o)}return n}function rl(r){if(r.length===0)return[];let e=r[0];for(let t=1;t * https://github.com/pladaria/reconnecting-websocket * License MIT * * Copy of "partysocket" from Partykit team, a fork of the original "Reconnecting WebSocket" * https://github.com/partykit/partykit/blob/main/packages/partysocket */ //# sourceMappingURL=index.cjs.map