@medplum/core
Version:
Medplum TS/JS Library
65 lines • 279 kB
JavaScript
"use strict";var br=Object.defineProperty;var za=Object.getOwnPropertyDescriptor;var Ja=Object.getOwnPropertyNames;var Ka=Object.prototype.hasOwnProperty;var Ya=(t,e,r)=>e in t?br(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var Xa=(t,e)=>{for(var r in e)br(t,r,{get:e[r],enumerable:!0})},Za=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ja(e))!Ka.call(t,i)&&i!==r&&br(t,i,{get:()=>e[i],enumerable:!(n=za(e,i))||n.enumerable});return t};var ec=t=>Za(br({},"__esModule",{value:!0}),t);var c=(t,e,r)=>Ya(t,typeof e!="symbol"?e+"":e,r);var mm={};Xa(mm,{AccessPolicyInteraction:()=>Ne,AckCode:()=>Ta,AndAtom:()=>zt,ArithmeticOperatorAtom:()=>q,AsAtom:()=>Ce,CPT:()=>ic,ClientStorage:()=>yt,ConcatAtom:()=>qt,ContainsAtom:()=>Wt,ContentType:()=>V,DAYS_OF_WEEK:()=>La,DEFAULT_ACCEPT:()=>js,DEFAULT_MAX_SEARCH_COUNT:()=>Vl,DEFAULT_SEARCH_COUNT:()=>Dl,DataSampler:()=>an,DotAtom:()=>ne,EMPTY:()=>v,EmptySetAtom:()=>Ut,EqualsAtom:()=>jt,EquivalentAtom:()=>Gt,EventTarget:()=>Xr,ExternalSecretSystems:()=>zd,FHIRCAST_EVENT_NAMES:()=>en,FHIRCAST_EVENT_RESOURCES:()=>Ns,FHIRCAST_EVENT_VERSION_REQUIRED:()=>tn,FHIRCAST_RESOURCE_TYPES:()=>Ls,FhirFilterComparison:()=>yr,FhirFilterConnective:()=>vr,FhirFilterNegation:()=>xr,FhirPathAtom:()=>Re,FhircastConnection:()=>ir,FileBuilder:()=>to,FunctionAtom:()=>ie,HL7_V2_0203:()=>wn,HTTP_HL7_ORG:()=>Et,HTTP_TERMINOLOGY_HL7_ORG:()=>To,Hl7Context:()=>Ae,Hl7Field:()=>he,Hl7Message:()=>no,Hl7Segment:()=>Tt,ICD10:()=>oc,INVALID_MEDICATION_CART_RESPONSE:()=>Ma,INVALID_MEDICATION_CHECKOUT_RESPONSE:()=>Ia,INVALID_MEDICATION_ORDER_RESPONSE:()=>Ra,INVALID_MEDICATION_ORDER_SET_RESPONSE:()=>Ca,INVALID_MEDICATION_SEARCH_RESPONSE:()=>rf,ImpliesAtom:()=>Yt,InAtom:()=>$t,IndexerAtom:()=>Le,InfixOperatorAtom:()=>w,InvalidOperationError:()=>gn,IsAtom:()=>_e,LOINC:()=>tc,LRUCache:()=>ee,LiteralAtom:()=>G,LogLevel:()=>it,LogLevelNames:()=>Ea,Logger:()=>io,MEDICATION_REQUEST_STATUS_REASON_RESPONSE_NOT_RECEIVED:()=>wa,MEDICATION_REQUEST_STATUS_REASON_SYSTEM:()=>Pa,MEDPLUM_CLI_CLIENT_ID:()=>Vd,MEDPLUM_RELEASES_URL:()=>$a,MEDPLUM_SEMVER_REGEX:()=>yo,MEDPLUM_VERSION:()=>sn,MRN_IDENTIFIER_TYPE:()=>du,MedplumClient:()=>lr,MedplumKeyValueClient:()=>ar,MemoryStorage:()=>on,MissingError:()=>z,MockAsyncClientStorage:()=>_i,NDC:()=>sc,NOOP:()=>zu,NotEqualsAtom:()=>Ht,NotEquivalentAtom:()=>Qt,OAuthClientAssertionType:()=>Gs,OAuthGrantType:()=>tt,OAuthSigningAlgorithm:()=>$d,OAuthTokenAuthMethod:()=>Wd,OAuthTokenType:()=>Hs,OperationOutcomeError:()=>m,Operator:()=>g,OperatorPrecedence:()=>S,OrAtom:()=>Jt,PATIENT_PREFERRED_PHARMACY_URL:()=>Sn,PHARMACY_PREFERENCE_TYPE_SYSTEM:()=>ao,PHARMACY_TYPE_PREFERRED:()=>co,PHARMACY_TYPE_PRIMARY:()=>Tn,Parser:()=>Er,ParserBuilder:()=>bt,Pointer:()=>M,PrefixOperatorAtom:()=>St,PropertyType:()=>p,RATE_LIMIT_RESET_EXTENSION_URL:()=>Rr,RXNORM:()=>nc,ReadablePromise:()=>$,ReconnectingWebSocket:()=>et,ReturnAckCategory:()=>dd,SNOMED:()=>rc,SchedulingEncounterCodingURI:()=>If,SchedulingParametersURI:()=>Sr,SchedulingPlanDefinitionURI:()=>kf,SearchParameterType:()=>ge,ServiceTypeReferenceURI:()=>bn,SubscriptionEmitter:()=>xt,SubscriptionManager:()=>ur,SymbolAtom:()=>F,TestError:()=>hn,TimezoneExtensionURI:()=>_a,Tokenizer:()=>Pe,TransformMapCollection:()=>pn,TypedEventTarget:()=>se,UCUM:()=>Pn,UnaryOperatorAtom:()=>Bt,UnionAtom:()=>Ve,VALID_HOSTNAME_REGEX:()=>is,XorAtom:()=>Kt,accepted:()=>vc,accessPolicySupportsInteraction:()=>Pi,add:()=>hr,addPreferredPharmacyToPatient:()=>Pf,addProfileToResource:()=>Uu,allOk:()=>ac,append:()=>ve,apply:()=>Yi,applyDefaultValuesToElement:()=>op,applyDefaultValuesToResource:()=>ip,applyFixedOrPatternValue:()=>pr,applyPatch:()=>Fp,arrayBufferToBase64:()=>ci,arrayBufferToHex:()=>ai,arrayify:()=>te,assert:()=>Vs,assertContextVersionOptional:()=>Ii,assertNever:()=>Qu,assertOk:()=>Vc,assertReleaseManifest:()=>ja,assertValidMedplumSemver:()=>Ga,badRequest:()=>A,booleanToTypedValue:()=>y,buildCdsRequest:()=>vd,buildElementsContext:()=>un,buildMedicationRequestResponseLostStatusReason:()=>nf,buildTypeName:()=>ps,businessRule:()=>Cc,calculateAge:()=>Mt,calculateAgeString:()=>cu,canReadResourceType:()=>ad,canWriteResource:()=>ud,canWriteResourceType:()=>cd,capitalize:()=>U,checkForNull:()=>uo,checkIfValidMedplumVersion:()=>lm,clearReleaseCache:()=>um,clearScheduleParameter:()=>Ba,codeableConceptMatchesToken:()=>Ru,codingMatchesToken:()=>Ko,compareVersions:()=>Qa,compressElement:()=>Lc,concatUrls:()=>W,conceptMapTranslate:()=>$i,conflict:()=>Tc,contentTooLarge:()=>fc,convertContainedResourcesToBundle:()=>yd,convertToSearchableDates:()=>vi,convertToSearchableNumbers:()=>Pl,convertToSearchableQuantities:()=>wl,convertToSearchableReferences:()=>Si,convertToSearchableStrings:()=>Ti,convertToSearchableTokens:()=>bi,convertToSearchableUris:()=>Al,convertToTransactionBundle:()=>As,copy:()=>fa,countBy:()=>Hu,countWhere:()=>ju,crawlTypedValue:()=>Lr,crawlTypedValueAsync:()=>jc,createConstraintIssue:()=>Nn,createFhircastMessagePayload:()=>nn,createOperationOutcomeIssue:()=>ke,createPatch:()=>Bp,createPreferredPharmacyExtension:()=>Va,createProcessingIssue:()=>Fn,createReference:()=>re,createStructureIssue:()=>R,createTests:()=>qp,created:()=>cc,decodeBase64:()=>ws,decodeBase64Url:()=>nr,deepClone:()=>le,deepEquals:()=>xe,deepIncludes:()=>at,deriveIdentifierSearchParameter:()=>Hf,diffAny:()=>we,diffArrays:()=>ca,diffObjects:()=>ua,encodeBase64:()=>rr,encodeBase64Url:()=>wi,encodeSmartHealthLink:()=>tm,encryptSHA256:()=>Ai,ensureNoLeadingSlash:()=>ns,ensureTrailingSlash:()=>lt,escapeHtml:()=>Gu,escapeToken:()=>da,evalFhirPath:()=>Cl,evalFhirPathTyped:()=>k,evalSqlOnFhir:()=>im,expandSampledData:()=>Fi,expandSampledObservation:()=>Xd,extractAccountReferences:()=>jr,extractServiceTypeReferences:()=>Uf,fetchAllVersionStrings:()=>pm,fetchLatestVersionString:()=>dm,fetchVersionManifest:()=>Cn,fhirPathArrayEquals:()=>ei,fhirPathArrayEquivalent:()=>qr,fhirPathArrayNotEquals:()=>ti,fhirPathEquals:()=>ct,fhirPathEquivalent:()=>jo,fhirPathIs:()=>Qe,fhirPathNot:()=>Zn,fhirTypeToJsType:()=>Fr,fhirpathPatchTypedValue:()=>jp,findCodeBySystem:()=>Eu,findObservationInterval:()=>wu,findObservationReferenceRange:()=>Au,findObservationReferenceRanges:()=>Zo,findResourceByCode:()=>Lu,findResourceInBundle:()=>xd,flatMapFilter:()=>Wu,forbidden:()=>lc,formatAddress:()=>ss,formatCodeableConcept:()=>Te,formatCoding:()=>hi,formatDate:()=>Yu,formatDateTime:()=>ze,formatFamilyName:()=>Ku,formatGivenName:()=>Ju,formatHl7DateTime:()=>ba,formatHumanName:()=>dt,formatMoney:()=>sl,formatObservationValue:()=>cs,formatPeriod:()=>Zu,formatQuantity:()=>be,formatRange:()=>ol,formatReferenceString:()=>os,formatSearchQuery:()=>jl,formatTime:()=>Xu,formatTiming:()=>nl,formatWallTime:()=>as,generateId:()=>oe,getAllDataTypes:()=>$n,getAllQuestionnaireAnswers:()=>lu,getBuffer:()=>Kr,getCodeBySystem:()=>$r,getDataType:()=>ye,getDateProperty:()=>au,getDefaultValuesForNewSliceEntry:()=>sp,getDisplayString:()=>Qo,getElementDefinition:()=>kt,getElementDefinitionForPath:()=>yi,getElementDefinitionFromElements:()=>gi,getElementDefinitionTypeName:()=>kr,getExpressionForResourceType:()=>Xf,getExpressionsForResourceType:()=>mo,getExtension:()=>ae,getExtensionValue:()=>De,getExtensions:()=>Dt,getIdentifier:()=>Hr,getIdentifierByType:()=>pu,getImageSrc:()=>su,getInnerDerivedIdentifierExpression:()=>lo,getMedicationOrderIframeUrl:()=>cf,getNestedProperty:()=>je,getOutcomeRedirectUrl:()=>Rc,getParsedDerivedIdentifierExpression:()=>po,getParsedExpressionForResourceType:()=>fo,getPathDifference:()=>Se,getPathDisplayName:()=>pl,getPendingMedicationOrderId:()=>sf,getPendingMedicationOrderStatus:()=>af,getPreferredPharmaciesFromPatient:()=>Cf,getPropertyDisplayName:()=>ms,getQueryString:()=>fi,getQuestionnaireAnswers:()=>uu,getRandomString:()=>Yr,getRateLimitReset:()=>xc,getReferenceString:()=>I,getResourceTypes:()=>fs,getScheduleParameters:()=>Ua,getSchedulingTimezone:()=>Lf,getSearchParameter:()=>dl,getSearchParameterDetails:()=>Gf,getSearchParameters:()=>ll,getSearchResourceTypes:()=>Jl,getSmartHealthLinkId:()=>nm,getStatus:()=>Dc,getTypedPropertyValue:()=>_,getTypedPropertyValueWithPath:()=>Nr,getTypedPropertyValueWithSchema:()=>Wo,getTypedPropertyValueWithoutSchema:()=>$o,getValueSliceName:()=>Bi,getWebSocketUrl:()=>pi,getWindow:()=>fd,globalSchema:()=>H,gone:()=>dc,hasSchedulingParameters:()=>Df,indexConceptMapCodings:()=>Ks,indexDefaultSearchParameters:()=>Qn,indexSearchParameter:()=>zr,indexSearchParameterBundle:()=>ul,indexStructureDefinitionBundle:()=>Dr,inflateBaseSchema:()=>Un,inflateElement:()=>ko,initFhirPathParserBuilder:()=>ft,intersection:()=>Vp,invalidSearchOperator:()=>zl,isAccepted:()=>wc,isAckCode:()=>Sa,isAddPharmacyResponse:()=>Of,isBrowserEnvironment:()=>X,isCodeableConcept:()=>Wr,isCoding:()=>It,isCompletedSubscriptionRequest:()=>ki,isComplexTypeCode:()=>Gr,isConflict:()=>Ic,isContextVersionRequired:()=>Oi,isCreated:()=>Pc,isDataTypeLoaded:()=>jn,isDateString:()=>ri,isDateTimeString:()=>Ge,isDayOfWeek:()=>Mf,isDefined:()=>Lt,isDestructive:()=>Ji,isEmpty:()=>O,isError:()=>Or,isFhirCriteriaMet:()=>Bs,isFhircastResourceType:()=>Fs,isGone:()=>kc,isJwt:()=>Mi,isLowerCase:()=>Cu,isMedicationArray:()=>of,isMedicationCartManageResponse:()=>Da,isMedicationCheckoutResponse:()=>ka,isMedicationOrderResponse:()=>Aa,isMedicationOrderSetResponse:()=>Oa,isMedplumAccessToken:()=>Di,isNodeEnvironment:()=>pd,isNotFound:()=>Oc,isObject:()=>C,isOk:()=>Ir,isOperationOutcome:()=>ot,isOrganizationArray:()=>Af,isPeriod:()=>ni,isPopulated:()=>ue,isPrimitiveType:()=>Pt,isProfileLoaded:()=>Hn,isProfileResource:()=>Go,isQuantity:()=>L,isQuantityEquivalent:()=>ii,isRedirect:()=>Ac,isReference:()=>J,isResource:()=>D,isResourceType:()=>Ct,isResourceTypeSchema:()=>_r,isResourceWithId:()=>ut,isSliceDefinitionWithTypes:()=>Ui,isString:()=>de,isStringArray:()=>bu,isTextObject:()=>Yo,isTypedValue:()=>hl,isUUID:()=>Su,isUnauthenticated:()=>Mc,isValidDate:()=>Nt,isValidHostname:()=>Fu,isValidMedplumSemver:()=>xo,lazy:()=>di,loadDataType:()=>Vr,locationUtils:()=>me,mapByIdentifier:()=>Bu,matchDiscriminant:()=>Ur,matchesRange:()=>li,matchesSearchRequest:()=>tr,medicationCartClearRequestToParameters:()=>vf,medicationCartRemoveRequestToParameters:()=>xf,medicationCheckoutRequestToParameters:()=>hf,medicationOrderRequestToParameters:()=>df,medicationOrderSetRequestToParameters:()=>ff,medicationSearchParamsToParameters:()=>uf,move:()=>vn,multipleMatches:()=>hc,normalizeArrayBufferView:()=>ui,normalizeCreateBinaryOptions:()=>Ni,normalizeCreatePdfOptions:()=>Qs,normalizeErrorEvent:()=>_s,normalizeErrorString:()=>Ie,normalizeOperationOutcome:()=>Rt,notFound:()=>Vn,notModified:()=>uc,operationOutcomeIssueToString:()=>Io,operationOutcomeToString:()=>Ln,parametersToMedicationCartManageResponse:()=>Sf,parametersToMedicationCheckoutResponse:()=>yf,parametersToMedicationOrderResponse:()=>pf,parametersToMedicationOrderSetResponse:()=>mf,parametersToOrderSetSyncResponse:()=>Ef,parseFhirPath:()=>er,parseFhirPathPatchParameters:()=>$p,parseFilterParameter:()=>Yp,parseHl7DateTime:()=>Zp,parseJWTPayload:()=>sr,parseLogLevel:()=>tf,parseMappingLanguage:()=>mp,parseParameter:()=>Ss,parseReference:()=>nu,parseSearchRequest:()=>mt,parseSmartHealthLink:()=>rm,parseStructureDefinition:()=>Mr,parseXFhirQuery:()=>$l,pathToJSONPointer:()=>He,preciseEquals:()=>Du,preciseGreaterThan:()=>_u,preciseGreaterThanOrEquals:()=>rs,preciseLessThan:()=>Vu,preciseLessThanOrEquals:()=>ts,preciseRound:()=>Mu,preconditionFailed:()=>pc,projectAdminResourceTypes:()=>Es,protectedResourceTypes:()=>bs,readInteractions:()=>Rs,redirect:()=>Oo,redirectOk:()=>Ec,remove:()=>yn,removeDuplicates:()=>At,removePreferredPharmacyFromPatient:()=>wf,removeProfileFromResource:()=>qu,reorderBundle:()=>Os,replace:()=>xn,replaceQueryVariables:()=>ks,resolveId:()=>K,resourceMatchesSubscriptionCriteria:()=>Md,satisfiedAccessPolicy:()=>Cs,schedulingDurationToMinutes:()=>qf,serializeError:()=>Tr,serializeFhircastSubscriptionRequest:()=>rn,serverError:()=>Sc,serverTimeout:()=>bc,serviceTypeIncludesService:()=>Ff,setCodeBySystem:()=>Pu,setIdentifier:()=>fu,setRateLimitReset:()=>yc,setScheduleParameter:()=>_f,singleton:()=>N,singularize:()=>Nu,sleep:()=>Qr,sortStringArray:()=>_t,splitN:()=>Je,splitSearchOnComma:()=>ht,streamToBuffer:()=>em,stringify:()=>Vt,stringifyTypedValue:()=>xi,structureMapTransform:()=>hp,subsetResource:()=>Uc,subtract:()=>zi,sumBy:()=>$u,summarizeObservations:()=>Jd,test:()=>ma,toJsBoolean:()=>j,toPeriod:()=>Ot,toServiceTypeCodeableConcepts:()=>Nf,toTypedValue:()=>E,tooManyRequests:()=>gc,trimTrailingEmptyElements:()=>gu,tryGetDataType:()=>Me,tryGetJwtExpiration:()=>Vi,tryGetProfile:()=>Gn,typedValueToString:()=>mi,unauthorized:()=>We,unauthorizedTokenAudience:()=>Ar,unauthorizedTokenExpired:()=>_n,unescapeToken:()=>la,unsupportedMediaType:()=>mc,validateFhircastSubscriptionRequest:()=>or,validateResource:()=>zc,validateResourceType:()=>Wf,validateTypedValue:()=>Fo,validationError:()=>T,validationRegexes:()=>wt,warnIfNewerVersionAvailable:()=>fm,wordWrap:()=>ya});module.exports=ec(mm);var ee=class{constructor(e=10){c(this,"max");c(this,"cache");this.max=e,this.cache=new Map}clear(){this.cache.clear()}get(e){let r=this.cache.get(e);return r&&(this.cache.delete(e),this.cache.set(e,r)),r}set(e,r){this.cache.has(e)?this.cache.delete(e):this.cache.size>=this.max&&this.cache.delete(this.first()),this.cache.set(e,r)}delete(e){this.cache.delete(e)}keys(){return this.cache.keys()}first(){return this.cache.keys().next().value}};var St=class{constructor(e,r){c(this,"operator");c(this,"child");this.operator=e,this.child=r}toString(){return`${this.operator}(${this.child.toString()})`}},w=class{constructor(e,r,n){c(this,"operator");c(this,"left");c(this,"right");this.operator=e,this.left=r,this.right=n}toString(){return`(${this.left.toString()} ${this.operator} ${this.right.toString()})`}},bt=class{constructor(){c(this,"prefixParselets",{});c(this,"infixParselets",{})}registerInfix(e,r){return this.infixParselets[e]=r,this}registerPrefix(e,r){return this.prefixParselets[e]=r,this}prefix(e,r,n){return this.registerPrefix(e,{parse(i,o){let s=i.consumeAndParse(r);return n(o,s)}})}infixLeft(e,r,n){return this.registerInfix(e,{parse(i,o,s){let a=i.consumeAndParse(r);return n(o,s,a)},precedence:r})}construct(e){return new Er(e,this.prefixParselets,this.infixParselets)}},Er=class{constructor(e,r,n){c(this,"tokens");c(this,"prefixParselets");c(this,"infixParselets");this.tokens=e,this.prefixParselets=r,this.infixParselets=n}hasMore(){return this.tokens.length>0}match(e){return this.peek()?.id!==e?!1:(this.consume(),!0)}consumeAndParse(e=1/0){let r=this.consume(),n=this.prefixParselets[r.id];if(!n)throw new Error(`Parse error at "${r.value}" (line ${r.line}, column ${r.column}). No matching prefix parselet.`);let i=n.parse(this,r);for(;e>this.getPrecedence();){let o=this.consume();i=this.getInfixParselet(o).parse(this,i,o)}return i}getPrecedence(){let e=this.peek();if(!e)return 1/0;let r=this.getInfixParselet(e);return r?r.precedence:1/0}consume(e,r){if(!this.tokens.length)throw new Error("Cant consume unknown more tokens.");if(e&&this.peek()?.id!==e){let n=this.peek();throw new Error(`Expected ${e} but got "${n.id}" (${n.value}) at line ${n.line} column ${n.column}.`)}if(r&&this.peek()?.value!==r){let n=this.peek();throw new Error(`Expected "${r}" but got "${n.value}" at line ${n.line} column ${n.column}.`)}return this.tokens.shift()}peek(){return this.tokens.length>0?this.tokens[0]:void 0}removeComments(){this.tokens=this.tokens.filter(e=>e.id!=="Comment")}getInfixParselet(e){return this.infixParselets[e.id==="Symbol"?e.value:e.id]}};function te(t){if(t!==void 0)return Array.isArray(t)?t:[t]}var Pn="http://unitsofmeasure.org",tc="http://loinc.org",rc="http://snomed.info/sct",nc="http://www.nlm.nih.gov/research/umls/rxnorm",ic="http://www.ama-assn.org/go/cpt",oc="http://hl7.org/fhir/sid/icd-10",sc="http://hl7.org/fhir/sid/ndc",Et="http://hl7.org",To="http://terminology.hl7.org",wn=`${To}/CodeSystem/v2-0203`;var Cr="ok",Pr="created",An="gone",On="not-modified",In="found",kn="not-found",Mn="conflict",Dn="unauthorized",So="forbidden",bo="precondition-failed",Eo="content-too-large",Ro="unsupported-media-type",Co="multiple-matches",Po="too-many-requests",Rr="https://medplum.com/fhir/StructureDefinition/rate-limit-reset",wr="accepted",wo="server-timeout",Ao="business-rule",ac={resourceType:"OperationOutcome",id:Cr,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},cc={resourceType:"OperationOutcome",id:Pr,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},uc={resourceType:"OperationOutcome",id:On,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},Vn={resourceType:"OperationOutcome",id:kn,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},We={resourceType:"OperationOutcome",id:Dn,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},_n={...We,issue:[...We.issue,{severity:"error",code:"expired",details:{text:"Token expired"}}]},Ar={...We,issue:[...We.issue,{severity:"error",code:"invalid",details:{text:"Token not issued for this audience"}}]},lc={resourceType:"OperationOutcome",id:So,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},dc={resourceType:"OperationOutcome",id:An,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},pc={resourceType:"OperationOutcome",id:bo,issue:[{severity:"error",code:"processing",details:{text:"Precondition Failed"}}]};function fc(t){return{resourceType:"OperationOutcome",id:Eo,issue:[{severity:"error",code:"too-long",details:{text:t}}]}}var mc={resourceType:"OperationOutcome",id:Ro,issue:[{severity:"error",code:"not-supported",details:{text:"Unsupported media type"}}]},hc={resourceType:"OperationOutcome",id:Co,issue:[{severity:"error",code:"multiple-matches",details:{text:"Multiple resources found matching condition"}}]},gc={resourceType:"OperationOutcome",id:Po,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function yc(t,e){t.extension=[...(t.extension??v).filter(r=>r.url!==Rr),{url:Rr,valueUnsignedInt:Math.ceil(e/1e3)}]}function xc(t){let e=t.extension?.find(r=>r.url===Rr)?.valueUnsignedInt;if(e!==void 0)return e*1e3;for(let r of t.issue)try{let n=JSON.parse(r.diagnostics??"");if(typeof n.msBeforeNext=="number")return n.msBeforeNext}catch{}}function vc(t){return{resourceType:"OperationOutcome",id:wr,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:t}]}}function A(t,e){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:t},...e?{expression:te(e)}:void 0}]}}function Tc(t,e){return{resourceType:"OperationOutcome",id:Mn,issue:[{severity:"error",code:"conflict",details:{coding:e?[{code:e}]:void 0,text:t}}]}}function T(t,e,r,n){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:r??"structure",details:{text:t},...e?{expression:e}:void 0,...n?{diagnostics:n}:void 0}]}}function Sc(t){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:t.toString()}]}}function bc(t){return{resourceType:"OperationOutcome",id:wo,issue:[{severity:"error",code:"timeout",details:{text:t??"Server timeout"}}]}}function Oo(t){let e=t.toString();return{resourceType:"OperationOutcome",id:In,issue:[{severity:"information",code:"informational",details:{coding:[{system:"urn:ietf:rfc:3986",code:e}],text:"Redirect to "+e}}]}}function Ec(t){return{...Oo(t),id:Cr}}function Rc(t){return t?.issue?.[0]?.details?.coding?.find(e=>e.system==="urn:ietf:rfc:3986")?.code}function Cc(t,e){return{resourceType:"OperationOutcome",id:Ao,issue:[{severity:"error",code:"business-rule",details:{id:t,text:e}}]}}function Or(t){return!t||typeof t!="object"?!1:t instanceof Error||typeof DOMException<"u"&&t instanceof DOMException?!0:Object.prototype.toString.call(t)==="[object Error]"}function ot(t){return typeof t=="object"&&t!==null&&t.resourceType==="OperationOutcome"}function Ir(t){return t.id===Cr||t.id===Pr||t.id===On||t.id===wr}function Pc(t){return t.id===Pr}function wc(t){return t.id===wr}function Ac(t){return t.id===In}function Oc(t){return t.id===kn}function Ic(t){return t.id===Mn}function kc(t){return t.id===An}function Mc(t){return t.id===Dn}function Dc(t){switch(t.id){case Cr:return 200;case Pr:return 201;case wr:return 202;case In:return 302;case On:return 304;case Dn:return 401;case So:return 403;case kn:return 404;case Mn:return 409;case An:return 410;case bo:case Co:return 412;case Eo:return 413;case Ro:return 415;case Ao:return 422;case Po:return 429;case wo:return 504;default:return t.issue?.[0]?.code==="exception"?500:400}}function Vc(t,e){if(!Ir(t)||e===void 0)throw new m(t)}var m=class extends Error{constructor(r,n){super(Ln(r),n);c(this,"outcome");this.name="OperationOutcomeError",this.outcome=r}};function Rt(t){return t instanceof m?t.outcome:ot(t)?t:A(Ie(t))}function Ie(t){return t?typeof t=="string"?t:Or(t)?t.message:ot(t)?Ln(t):typeof t=="object"&&"code"in t&&typeof t.code=="string"?t.code:JSON.stringify(t):"Unknown error"}function Ln(t){let e=t.issue?.map(Io)??[];return e.length>0?e.join("; "):"Unknown error"}function Io(t){let e;return t.details?.text?t.diagnostics?e=`${t.details.text} (${t.diagnostics})`:e=t.details.text:t.diagnostics?e=t.diagnostics:e="Unknown error",t.expression?.length&&(e+=` (${t.expression.join(", ")})`),e}function ke(t,e,r,n,i){let o={severity:t,code:e,details:{text:r},expression:[n]};return i&&(o.diagnostics=JSON.stringify(i)),o}function R(t,e){return ke("error","structure",e,t)}function Nn(t,e){return ke("error","invariant",`Constraint ${e.key} not met: ${e.description}`,t,{fhirpath:e.expression})}function Fn(t,e,r,n){return ke("error","processing",e,t,{...n,error:r})}var _c={"http://hl7.org/fhirpath/System.String":"string"};function Lc(t){let e={};return t.min!==0&&(e.min=t.min),t.max!==1&&Number.isFinite(t.max)?e.max=t.max:t.max===Number.POSITIVE_INFINITY&&(e.max=Number.MAX_SAFE_INTEGER),e.type=t.type?.map(r=>({...r,extension:void 0,code:_c[r.code]??r.code})),e}function ko(t,e){let r=e.max&&e.max===Number.MAX_SAFE_INTEGER?Number.POSITIVE_INFINITY:e.max;return{path:t,description:"",type:e.type??[],min:e.min??0,max:r??1,isArray:!!r&&r>1,constraints:[]}}function Un(t){let e=Object.create(null);for(let[r,n]of Object.entries(t))e[r]={name:r,type:r,path:r,elements:Object.fromEntries(Object.entries(n.elements).map(([i,o])=>[i,ko(i,o)])),constraints:[],innerTypes:[]};return e}var Mo={Element:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]}}},BackboneElement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]}}},Address:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"code"}]},text:{type:[{code:"string"}]},line:{max:9007199254740991,type:[{code:"string"}]},city:{type:[{code:"string"}]},district:{type:[{code:"string"}]},state:{type:[{code:"string"}]},postalCode:{type:[{code:"string"}]},country:{type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Age:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Annotation:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},"author[x]":{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Organization"]},{code:"string"}]},time:{type:[{code:"dateTime"}]},text:{min:1,type:[{code:"markdown"}]}}},Attachment:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},contentType:{type:[{code:"code"}]},language:{type:[{code:"code"}]},data:{type:[{code:"base64Binary"}]},url:{type:[{code:"url"}]},size:{type:[{code:"unsignedInt"}]},hash:{type:[{code:"base64Binary"}]},title:{type:[{code:"string"}]},creation:{type:[{code:"dateTime"}]}}},CodeableConcept:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},coding:{max:9007199254740991,type:[{code:"Coding"}]},text:{type:[{code:"string"}]}}},Coding:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},code:{type:[{code:"code"}]},display:{type:[{code:"string"}]},userSelected:{type:[{code:"boolean"}]}}},ContactDetail:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},name:{type:[{code:"string"}]},telecom:{max:9007199254740991,type:[{code:"ContactPoint"}]}}},ContactPoint:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"code"}]},value:{type:[{code:"string"}]},use:{type:[{code:"code"}]},rank:{type:[{code:"positiveInt"}]},period:{type:[{code:"Period"}]}}},Contributor:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{min:1,type:[{code:"string"}]},contact:{max:9007199254740991,type:[{code:"ContactDetail"}]}}},Count:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},DataRequirement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},"subject[x]":{type:[{code:"CodeableConcept"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Group"]}]},mustSupport:{max:9007199254740991,type:[{code:"string"}]},codeFilter:{max:9007199254740991,type:[{code:"DataRequirementCodeFilter"}]},dateFilter:{max:9007199254740991,type:[{code:"DataRequirementDateFilter"}]},limit:{type:[{code:"positiveInt"}]},sort:{max:9007199254740991,type:[{code:"DataRequirementSort"}]}}},DataRequirementCodeFilter:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},path:{type:[{code:"string"}]},searchParam:{type:[{code:"string"}]},valueSet:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/ValueSet"]}]},code:{max:9007199254740991,type:[{code:"Coding"}]}}},DataRequirementDateFilter:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},path:{type:[{code:"string"}]},searchParam:{type:[{code:"string"}]},"value[x]":{type:[{code:"dateTime"},{code:"Period"},{code:"Duration"}]}}},DataRequirementSort:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},direction:{min:1,type:[{code:"code"}]}}},Distance:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Dosage:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},sequence:{type:[{code:"integer"}]},text:{type:[{code:"string"}]},additionalInstruction:{max:9007199254740991,type:[{code:"CodeableConcept"}]},patientInstruction:{type:[{code:"string"}]},timing:{type:[{code:"Timing"}]},"asNeeded[x]":{type:[{code:"boolean"},{code:"CodeableConcept"}]},site:{type:[{code:"CodeableConcept"}]},route:{type:[{code:"CodeableConcept"}]},method:{type:[{code:"CodeableConcept"}]},doseAndRate:{max:9007199254740991,type:[{code:"DosageDoseAndRate"}]},maxDosePerPeriod:{type:[{code:"Ratio"}]},maxDosePerAdministration:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},maxDosePerLifetime:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},DosageDoseAndRate:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{type:[{code:"CodeableConcept"}]},"dose[x]":{type:[{code:"Range"},{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},"rate[x]":{type:[{code:"Ratio"},{code:"Range"},{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},Duration:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},ElementDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},representation:{max:9007199254740991,type:[{code:"code"}]},sliceName:{type:[{code:"string"}]},sliceIsConstraining:{type:[{code:"boolean"}]},label:{type:[{code:"string"}]},code:{max:9007199254740991,type:[{code:"Coding"}]},slicing:{type:[{code:"ElementDefinitionSlicing"}]},short:{type:[{code:"string"}]},definition:{type:[{code:"markdown"}]},comment:{type:[{code:"markdown"}]},requirements:{type:[{code:"markdown"}]},alias:{max:9007199254740991,type:[{code:"string"}]},min:{type:[{code:"unsignedInt"}]},max:{type:[{code:"string"}]},base:{type:[{code:"ElementDefinitionBase"}]},contentReference:{type:[{code:"uri"}]},type:{max:9007199254740991,type:[{code:"ElementDefinitionType"}]},"defaultValue[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},meaningWhenMissing:{type:[{code:"markdown"}]},orderMeaning:{type:[{code:"string"}]},"fixed[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},"pattern[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},example:{max:9007199254740991,type:[{code:"ElementDefinitionExample"}]},"minValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},"maxValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},maxLength:{type:[{code:"integer"}]},condition:{max:9007199254740991,type:[{code:"id"}]},constraint:{max:9007199254740991,type:[{code:"ElementDefinitionConstraint"}]},mustSupport:{type:[{code:"boolean"}]},isModifier:{type:[{code:"boolean"}]},isModifierReason:{type:[{code:"string"}]},isSummary:{type:[{code:"boolean"}]},binding:{type:[{code:"ElementDefinitionBinding"}]},mapping:{max:9007199254740991,type:[{code:"ElementDefinitionMapping"}]}}},ElementDefinitionSlicingDiscriminator:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},path:{min:1,type:[{code:"string"}]}}},ElementDefinitionSlicing:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},discriminator:{max:9007199254740991,type:[{code:"ElementDefinitionSlicingDiscriminator"}]},description:{type:[{code:"string"}]},ordered:{type:[{code:"boolean"}]},rules:{min:1,type:[{code:"code"}]}}},ElementDefinitionBase:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},min:{min:1,type:[{code:"unsignedInt"}]},max:{min:1,type:[{code:"string"}]}}},ElementDefinitionType:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},code:{min:1,type:[{code:"uri"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition","http://hl7.org/fhir/StructureDefinition/ImplementationGuide"]}]},targetProfile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition","http://hl7.org/fhir/StructureDefinition/ImplementationGuide"]}]},aggregation:{max:9007199254740991,type:[{code:"code"}]},versioning:{type:[{code:"code"}]}}},ElementDefinitionExample:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},label:{min:1,type:[{code:"string"}]},"value[x]":{min:1,type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]}}},ElementDefinitionConstraint:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},key:{min:1,type:[{code:"id"}]},requirements:{type:[{code:"string"}]},severity:{min:1,type:[{code:"code"}]},human:{min:1,type:[{code:"string"}]},expression:{type:[{code:"string"}]},xpath:{type:[{code:"string"}]},source:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]}}},ElementDefinitionBinding:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},strength:{min:1,type:[{code:"code"}]},description:{type:[{code:"string"}]},valueSet:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/ValueSet"]}]}}},ElementDefinitionMapping:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},identity:{min:1,type:[{code:"id"}]},language:{type:[{code:"code"}]},map:{min:1,type:[{code:"string"}]},comment:{type:[{code:"string"}]}}},Expression:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},description:{type:[{code:"string"}]},name:{type:[{code:"id"}]},language:{min:1,type:[{code:"code"}]},expression:{type:[{code:"string"}]},reference:{type:[{code:"uri"}]}}},Extension:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},url:{min:1,type:[{code:"uri"}]},"value[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]}}},HumanName:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},text:{type:[{code:"string"}]},family:{type:[{code:"string"}]},given:{max:9007199254740991,type:[{code:"string"}]},prefix:{max:9007199254740991,type:[{code:"string"}]},suffix:{max:9007199254740991,type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Identifier:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"CodeableConcept"}]},system:{type:[{code:"uri"}]},value:{type:[{code:"string"}]},period:{type:[{code:"Period"}]},assigner:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Organization"]}]}}},MarketingStatus:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},country:{min:1,type:[{code:"CodeableConcept"}]},jurisdiction:{type:[{code:"CodeableConcept"}]},status:{min:1,type:[{code:"CodeableConcept"}]},dateRange:{min:1,type:[{code:"Period"}]},restoreDate:{type:[{code:"dateTime"}]}}},Meta:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},versionId:{type:[{code:"id"}]},lastUpdated:{type:[{code:"instant"}]},source:{type:[{code:"uri"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},security:{max:9007199254740991,type:[{code:"Coding"}]},tag:{max:9007199254740991,type:[{code:"Coding"}]},project:{type:[{code:"uri"}]},author:{type:[{code:"Reference"}]},onBehalfOf:{type:[{code:"Reference"}]},account:{type:[{code:"Reference"}]},accounts:{max:9007199254740991,type:[{code:"Reference"}]},compartment:{max:9007199254740991,type:[{code:"Reference"}]},deleted:{type:[{code:"boolean"}]}}},Money:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},currency:{type:[{code:"code"}]}}},Narrative:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},status:{min:1,type:[{code:"code"}]},div:{min:1,type:[{code:"xhtml"}]}}},ParameterDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},name:{type:[{code:"code"}]},use:{min:1,type:[{code:"code"}]},min:{type:[{code:"integer"}]},max:{type:[{code:"string"}]},documentation:{type:[{code:"string"}]},type:{min:1,type:[{code:"code"}]},profile:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]}}},Period:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},start:{type:[{code:"dateTime"}]},end:{type:[{code:"dateTime"}]}}},Population:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"age[x]":{type:[{code:"Range"},{code:"CodeableConcept"}]},gender:{type:[{code:"CodeableConcept"}]},race:{type:[{code:"CodeableConcept"}]},physiologicalCondition:{type:[{code:"CodeableConcept"}]}}},ProdCharacteristic:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},height:{type:[{code:"Quantity"}]},width:{type:[{code:"Quantity"}]},depth:{type:[{code:"Quantity"}]},weight:{type:[{code:"Quantity"}]},nominalVolume:{type:[{code:"Quantity"}]},externalDiameter:{type:[{code:"Quantity"}]},shape:{type:[{code:"string"}]},color:{max:9007199254740991,type:[{code:"string"}]},imprint:{max:9007199254740991,type:[{code:"string"}]},image:{max:9007199254740991,type:[{code:"Attachment"}]},scoring:{type:[{code:"CodeableConcept"}]}}},ProductShelfLife:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},identifier:{type:[{code:"Identifier"}]},type:{min:1,type:[{code:"CodeableConcept"}]},period:{min:1,type:[{code:"Quantity"}]},specialPrecautionsForStorage:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},Quantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Range:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},low:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},high:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},Ratio:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},numerator:{type:[{code:"Quantity"}]},denominator:{type:[{code:"Quantity"}]}}},Reference:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},reference:{type:[{code:"string"}]},type:{type:[{code:"uri"}]},identifier:{type:[{code:"Identifier"}]},display:{type:[{code:"string"}]}}},RelatedArtifact:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},label:{type:[{code:"string"}]},display:{type:[{code:"string"}]},citation:{type:[{code:"markdown"}]},url:{type:[{code:"url"}]},document:{type:[{code:"Attachment"}]},resource:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/Resource"]}]}}},SampledData:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},origin:{min:1,type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},period:{min:1,type:[{code:"decimal"}]},factor:{type:[{code:"decimal"}]},lowerLimit:{type:[{code:"decimal"}]},upperLimit:{type:[{code:"decimal"}]},dimensions:{min:1,type:[{code:"positiveInt"}]},data:{type:[{code:"string"}]}}},Signature:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,max:9007199254740991,type:[{code:"Coding"}]},when:{min:1,type:[{code:"instant"}]},who:{min:1,type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},onBehalfOf:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},targetFormat:{type:[{code:"code"}]},sigFormat:{type:[{code:"code"}]},data:{type:[{code:"base64Binary"}]}}},SubstanceAmount:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"amount[x]":{type:[{code:"Quantity"},{code:"Range"},{code:"string"}]},amountType:{type:[{code:"CodeableConcept"}]},amountText:{type:[{code:"string"}]},referenceRange:{type:[{code:"SubstanceAmountReferenceRange"}]}}},SubstanceAmountReferenceRange:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},lowLimit:{type:[{code:"Quantity"}]},highLimit:{type:[{code:"Quantity"}]}}},Timing:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},event:{max:9007199254740991,type:[{code:"dateTime"}]},repeat:{type:[{code:"TimingRepeat"}]},code:{type:[{code:"CodeableConcept"}]}}},TimingRepeat:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},"bounds[x]":{type:[{code:"Duration"},{code:"Range"},{code:"Period"}]},count:{type:[{code:"positiveInt"}]},countMax:{type:[{code:"positiveInt"}]},duration:{type:[{code:"decimal"}]},durationMax:{type:[{code:"decimal"}]},durationUnit:{type:[{code:"code"}]},frequency:{type:[{code:"positiveInt"}]},frequencyMax:{type:[{code:"positiveInt"}]},period:{type:[{code:"decimal"}]},periodMax:{type:[{code:"decimal"}]},periodUnit:{type:[{code:"code"}]},dayOfWeek:{max:9007199254740991,type:[{code:"code"}]},timeOfDay:{max:9007199254740991,type:[{code:"time"}]},when:{max:9007199254740991,type:[{code:"code"}]},offset:{type:[{code:"unsignedInt"}]}}},TriggerDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{type:[{code:"string"}]},"timing[x]":{type:[{code:"Timing"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Schedule"]},{code:"date"},{code:"dateTime"}]},data:{max:9007199254740991,type:[{code:"DataRequirement"}]},condition:{type:[{code:"Expression"}]}}},UsageContext:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},code:{min:1,type:[{code:"Coding"}]},"value[x]":{min:1,type:[{code:"CodeableConcept"},{code:"Quantity"},{code:"Range"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/PlanDefinition","http://hl7.org/fhir/StructureDefinition/ResearchStudy","http://hl7.org/fhir/StructureDefinition/InsurancePlan","http://hl7.org/fhir/StructureDefinition/HealthcareService","http://hl7.org/fhir/StructureDefinition/Group","http://hl7.org/fhir/StructureDefinition/Location","http://hl7.org/fhir/StructureDefinition/Organization"]}]}}},MoneyQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},SimpleQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{max:0,type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},IdentityProvider:{elements:{issuer:{type:[{code:"string"}]},jwksUrl:{type:[{code:"string"}]},authorizeUrl:{type:[{code:"string"}]},tokenUrl:{type:[{code:"string"}]},tokenAuthMethod:{type:[{code:"code"}]},userInfoUrl:{type:[{code:"string"}]},userInfoMode:{type:[{code:"code"}]},userInfoApiKey:{type:[{code:"string"}]},clientId:{type:[{code:"string"}]},clientSecret:{type:[{code:"string"}]},usePkce:{type:[{code:"boolean"}]},useSubject:{type:[{code:"boolean"}]},identitySource:{type:[{code:"code"}]},identityMappingMode:{type:[{code:"code"}]}}}};function Mr(t){return new qn(t).parse()}var $e=Un(Mo),Wn=Object.create(null),Do=Object.create(null),Fc={"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 No(t){let e;return e=Do[t],e||(e=Do[t]=Object.create(null)),e}function Dr(t){let r=(Array.isArray(t)?t:t.entry?.map(n=>n.resource)??[]).filter(n=>n?.resourceType==="StructureDefinition");Qn(r);for(let n of r)Vr(n)}function Vr(t){if(!t?.name)throw new Error("Failed loading StructureDefinition from bundle");if(t.resourceType!=="StructureDefinition")return;let e=Mr(t),r=Fc[t.url],n,i;r?(n=$e,i=r):t.url===`http://hl7.org/fhir/StructureDefinition/${t.type}`||t.url===`https://medplum.com/fhir/StructureDefinition/${t.type}`||t.type?.startsWith("http://")||t.type?.startsWith("https://")?(n=$e,i=t.type):(n=No(t.url),i=t.type),n[i]=e;for(let o of e.innerTypes)o.parentType=e,n[o.name]=o;Wn[t.url]=e}function $n(){return $e}function jn(t){return!!$e[t]}function Me(t,e){if(e){let r=No(e)[t];if(r)return r}return $e[t]}function ye(t,e){let r=Me(t,e);if(!r)throw new m(A("Unknown data type: "+t));return r}function Ct(t){let e=$e[t];return e&&_r(e)}function Hn(t){return!!Wn[t]}function Gn(t){return Wn[t]}var qn=class{constructor(e){c(this,"root");c(this,"elements");c(this,"elementIndex");c(this,"index");c(this,"resourceSchema");c(this,"slicingContext");c(this,"innerTypes");c(this,"backboneContext");if(!e.snapshot?.element||e.snapshot.element.length===0)throw new Error(`No snapshot defined for StructureDefinition '${e.name}'`);this.root=e.snapshot.element[0],this.elements=e.snapshot.element.slice(1),this.elementIndex=Object.create(null),this.index=0,this.resourceSchema={name:e.name,path:this.root.path,title:e.title,type:e.type,url:e.url,version:e.version,kind:e.kind,description:$c(e),elements:{},constraints:this.parseElementDefinition(this.root).constraints,innerTypes:[],summaryProperties:new Set,mandatoryProperties:new Set},this.innerTypes=[]}parse(){let e=this.next();for(;e;){if(e.sliceName)this.parseSliceStart(e);else if(e.id?.includes(":")){if(this.slicingContext?.current){let r=Bn(e,this.slicingContext.path);this.slicingContext.current.elements[r]=this.parseElementDefinition(e)}}else{let r=this.parseElementDefinition(e);this.checkFieldEnter(e,r);let n=this.backboneContext;for(;n;){if(e.path?.startsWith(n.path+".")){n.type.elements[Bn(e,n.path)]=r;break}n=n.parent}if(!n){let i=Bn(e,this.root.path);e.isSummary&&this.resourceSchema.summaryProperties?.add(i.replace("[x]","")),r.min>0&&this.resourceSchema.mandatoryProperties?.add(i.replace("[x]","")),this.resourceSchema.elements[i]=r}this.checkFieldExit(e)}e=this.next()}return this.checkFieldExit(),this.innerTypes.length>0&&(this.resourceSchema.innerTypes=this.innerTypes),this.resourceSchema}checkFieldEnter(e,r){this.isInnerType(e)&&this.enterInnerType(e),this.slicingContext&&!st(this.slicingContext.path,e?.path)&&(this.slicingContext=void 0),e.slicing&&!this.slicingContext&&this.enterSlice(e,r)}enterInnerType(e){for(;this.backboneContext&&!st(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;let r=kr(e);this.backboneContext={type:{name:r,type:r,path:e.path,title:e.label,description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path,parent:st(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,r){Wc(e)&&!this.peek()?.sliceName||(r.slicing={discriminator:(e.slicing?.discriminator??[]).map(n=>{if(n.type!=="value"&&n.type!=="pattern"&&n.type!=="type")throw new Error(`Unsupported slicing discriminator type: ${n.type}`);return{path:n.path,type:n.type}}),slices:[],ordered:e.slicing?.ordered??!1,rule:e.slicing?.rules},this.slicingContext={field:r.slicing,path:e.path??""})}checkFieldExit(e=void 0){if(this.backboneContext&&!st(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!st(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),this.backboneContext=void 0}next(){let e=this.peek();if(e)return this.index++,e}peek(){let e=this.elements[this.index];if(e){if(this.elementIndex[e.path??""]=e,e.contentReference){let r=e.contentReference.slice(e.contentReference.indexOf("#")+1),n=this.elementIndex[r];return n?{...n,id:e.id,path:e.path,min:e.min??n.min,max:e.max??n.max,base:{path:n.base?.path??r,min:e.base?.min??n.base?.min??n.min,max:e.base?.max??n.base?.max??n.max},contentReference:e.contentReference,definition:e.definition}:void 0}return e}}isInnerType(e){let r=this.peek();return!!(st(e?.path,r?.path)&&e.type?.some(n=>["BackboneElement","Element"].includes(n.code)))}parseSliceStart(e){if(!this.slicingContext)throw new Error(`Invalid slice start before discriminator: ${e.sliceName} (${e.id})`);this.slicingContext.current={...this.parseElementDefinition(e),name:e.sliceName??"",definition:e.definition,elements:{}},this.slicingContext.field.slices.push(this.slicingContext.current)}parseElementDefinitionType(e){return(e.type??[]).map(r=>{let n;return(r.code==="BackboneElement"||r.code==="Element")&&(n=kr(e)),n||(n=ae(r,"http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type")?.valueUrl),n||(n=r.code??""),{code:n,targetProfile:r.targetProfile,profile:r.profile}})}parseElementDefinition(e){let r=_o(e.max),n=e.base?.max?_o(e.base.max):r,i={type:"ElementDefinition",value:e};return{description:e.definition||"",path:e.path||e.base?.path||"",min:e.min??0,max:r,isArray:n>1,constraints:(e.constraint??[]).map(o=>({key:o.key??"",severity:o.severity??"error",expression:o.expression??"",description:o.human??""})),type:this.parseElementDefinitionType(e),fixed:Lo(_(i,"fixed[x]")),pattern:Lo(_(i,"pattern[x]")),binding:e.binding}}};function Uc(t,e){if(!t)return;let r=[];for(let n of e){r.push("_"+n);let i=$e[t.resourceType].elements[n+"[x]"];i&&r.push(...i.type.map(o=>n+U(o.code)))}for(let n of Object.getOwnPropertyNames(t))!e.includes(n)&&!r.includes(n)&&!Bc.includes(n)&&Object.defineProperty(t,n,{enumerable:!1,writable:!1,value:void 0});return t.meta={...t.meta,tag:t.meta?.tag?t.meta.tag.concat(Vo):[Vo]},t}var Vo={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},Bc=["resourceType","id","meta"];function _o(t){return t==="*"?Number.POSITIVE_INFINITY:Number.parseInt(t,10)}function Bn(t,e=""){return qc(t.path,e)}function qc(t,e){return t?e&&t.startsWith(e)?t.substring(e.length+1):t:""}function st(t,e){return!t||!e?!1:e.startsWith(t+".")||e===t}function Lo(t){return Array.isArray(t)&&t.length>0?t[0]:O(t)?void 0:t}function Wc(t){let e=t.slicing?.discriminator;return!!(t.type?.some(r=>r.code==="Extension")&&e?.length===1&&e[0].type==="value"&&e[0].path==="url")}function $c(t){let e=t.description;return e?.startsWith(`Base StructureDefinition for ${t.name} Type: `)&&(e=e.substring(`Base StructureDefinition for ${t.name} Type: `.length)),e}function Lr(t,e,r){new zn(t,e,r).crawl()}function jc(t,e,r){return new Jn(t,e,r).crawl()}var zn=class{constructor(e,r,n){c(this,"root");c(this,"visitor");c(this,"schema");c(this,"initialPath");c(this,"excludeMissingProperties");this.root=e,this.visitor=r,this.schema=n?.schema??ye(e.type),this.initialPath=n?.initialPath??this.schema.path,this.excludeMissingProperties=n?.skipMissingProperties}crawl(){this.crawlObject({...this.root,path:this.initialPath},this.schema,this.initialPath)}crawlObject(e,r,n){let i=D(e.value);if(i&&this.visitor.onEnterResource&&this.visitor.onEnterResource(n,e,r),this.visitor.onEnterObject&&this.visitor.onEnterObject(n,e,r),this.excludeMissingProperties)for(let o of Object.keys(e.value))this.crawlProperty(e,o,r,`${n}.${o}`);else for(let o of Object.keys(r.elements))this.crawlProperty(e,o,r,`${n}.${o}`);this.visitor.onExitObject&&this.visitor.onExitObject(n,e,r),i&&this.visitor.onExitResource&&this.visitor.onExitResource(n,e,r)}crawlProperty(e,r,n,i){let o=je(e,r,{withPath:!0});this.visitor.visitProperty&&this.visitor.visitProperty(e,r,i,o,n);for(let s of o)for(let a of te(s))this.crawlPropertyValue(a,i,n)}crawlPropertyValue(e,r,n){if(!Pt(e.type)){let i=n.innerTypes?.find(o=>o.name===e.type)??ye(e.type);this.crawlObject(e,i,r)}}},Jn=class{constructor(e,r,n){c(this,"root");c(this,"visitor");c(this,"schema");c(this,"initialPath");c(this,"excludeMissingProperties");this.root=e,this.visitor=r,this.schema=n?.schema??ye(e.type),this.initialPath=n?.initialPath??this.schema.path,this.excludeMissingProperties=n?.skipMissingProperties}async crawl(){return this.crawlObject({...this.root,path:this.initialPath},this.schema,this.initialPath)}async crawlObject(e,r,n){let i=D(e.value);if(i&&this.visitor.onEnterResource&&await this.visitor.onEnterResource(n,e,r),this.visitor.onEnterObject&&await this.visitor.onEnterObject(n,e,r),this.excludeMissingProperties&&e.value)for(let o of Object.keys(e.value))await this.crawlProperty(e,o,r,`${n}.${o}`);else for(let o of Object.keys(r.elements))await this.crawlProperty(e,o,r,`${n}.${o}`);this.visitor.onExitObject&&await this.visitor.onExitObject(n,e,r),i&&this.visitor.onExitResource&&await this.visitor.onExitResource(n,e,r)}async crawlProperty(e,r,n,i){let o=je(e,r,{withPath:!0});if(this.visitor.visitPropertyAsync)for(let s of o)await this.visitor.visitPropertyAsync(e,r,i,s,n);for(let s of o)for(let a of te(s))await this.crawlPropertyValue(a,i,n)}async crawlPropertyValue(e,r,n){if(!Pt(e.type)){let i=n.innerTypes?.find(o=>o.name===e.type)??ye(e.type);await this.crawlObject(e,i,r)}}};function je(t,e,r){if(t===void 0)return[void 0];if(e==="$this")return[t];let n=r?.withPath?Nr:_,[i,...o]=e.split("."),s=[n(t,i,r)];for(let a of o){let u=[];for(let l of s)if(Array.isArray(l))for(let d of l)u.push(n(d,a,r));else(r?.withPath&&l?.value!==void 0||!r?.withPath&&l!==void 0)&&u.push(n(l,a,r));s=u}return s}function Nr(t,e,r){let n=t.path;return Hc(_(t,e,r),n,e)}function Hc(t,e,r){let n=e?e+".":"";return t===void 0?{type:"undefined",value:void 0,path:`${n}${r}`}:Array.isArray(t)?t.map((i,o)=>({...i,path:`${n}${r}[${o}]`})):{...t,path:`${n}${r}`}}function He(t){if(t[0]===t[0].toUpperCase()){let e=t.indexOf(".");if(e===-1)return"";t=t.slice(e+1)}return`.${t}`.replaceAll(".","/").replaceAll(/\[(\d+)]/g,(e,r)=>`/${r}`)}var Fr={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"},Gc=new ee(1e3);function Pt(t){return t==="undefined"||t in Fr}var wt={canonical:/^\S*$/,code:/^[^\s]+( [^\s]+)*$/,date:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2]\d|3[0-1]))?)?$/,dateTime:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2]\d|3[0-1])(T([01]\d|2[0-3])(:[0-5]\d:([0-5]\d|60)(\.\d{1,9})?)?)?)?(Z|[+-]((0\d|1[0-3]):[0-5]\d|14:00)?)?)?$/,id:/^[A-Za-z0-9\-.]{1,64}$/,instant:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\d|3[0-1])T([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?(Z|[+-]((0\d|1[0-3]):[0-5]\d|14:00))$/,markdown:/^[\r\n\t\u0020-\uFFFF]+$/,oid:/^urn:oid:[0-2](\.(0|[1-9]\d*))+$/,string:/^[\r\n\t\u0020-\uFFFF]+$/,time:/^([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?$/,uri:/^\S*$/,url:/^\S*$/,uuid:/^urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,xhtml:/.*/},Qc={"ele-1":!0,"dom-3":!0,"org-1":!0,"sdf-19":!0};function zc(t,e){if(!Ct(t.resourceType))throw new m(T("Invalid resource type"));return Fo(E(t),e)}function Fo(t,e){return new Kn(t,e).validate()}var Kn=class{constructor(e,r){c(this,"issues");c(this,"root");c(this,"resourceStack");c(this,"schema");c(this,"base64BinaryMaxBytes");c(this,"collect");this.issues=[],this.root=e,this.resourceStack=[],D(e.value)&&this.resourceStack.push(e.value),r?.profile?this.schema=Mr(r.profile):this.schema=ye(e.type),this.base64BinaryMaxBytes=r?.base64BinaryMaxBytes??1*1024*1024,this.collect=r?.collect}currentResource(){return this.resourceStack.at(-1)}validate(){Yn(this.root.value,this.schema.path,this.issues),this.constraintsCheck({...this.root,path:this.schema.path},this.schema),Lr(this.root,this,{schema:this.schema,initialPath:this.schema.path});for(let e of this.issues)if(e.severity==="error")throw new m({resourceType:"OperationOutcome",issue:this.issues});return this.issues}onExitObject(e,r,n){this.checkAdditionalProperties(r,n.elements,r.path)}onEnterResource(e,r){this.resourceStack.push(r.value)}onExitResource(){this.resourceStack.pop()}visitProperty(e,r,n,i,o){let s=o.elements[r];if(!s)throw new Error(`Missing element validation schema for ${r}`);for(let a of i){if(!this.checkPresence(a,s,n))return;let u;if(s.isArray){if(!Array.isArray(a)){this.issues.push(R(n,"Expected array of values for property"));return}u=a}else{if(Array.isArray(a)){this.issues.push(R(n,"Expected single value for property"));return}u=[a]}(u.length<s.min||u.length>s.max)&&this.issues.push(R(s.path,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${u.length}`)),Yc(a,s)||this.issues.push(R(n,"Value did not match expected pattern"));let l=s.slicing?Object.fromEntries(s.slicing.slices.map(d=>[d.name,0])):void 0;for(let d of u){this.constraintsCheck(d,s),this.referenceTypeCheck(d,s),this.checkPropertyValue(d),this.collectValue(d,s);let f=Xc(d,s.slicing);f&&l&&(l[f]+=1)}this.validateSlices(s.slicing?.slices,l,n)}}checkPresence(e,r,n){return!Array.isArray(e)&&e.value===void 0?(r.min>0&&this.issues.push(R(e.path,"Missing required property")),!1):O(e)?(this.issues.push(R(n,"Invalid empty value")),!1):!0}checkPropertyValue(e){Pt(e.type)?this.validatePrimitiveType(e):O(e.value)&&this.issues.push(R(e.path,"Invalid empty non-primitive value"))}validateSlices(e,r,n){if(!(!e||!r))for(let i of e){let o=r[i.name];(o<i.min||o>i.max)&&this.issues.push(R(n,`Incorrect number of values provided for slice '${i.name}': expected ${i.min}..${Number.isFinite(i.max)?i.max:"*"}, but found ${o}`))}}checkAdditionalProperties(e,r,n){let i=e.value;if(!i)return;let o={};for(let s of Object.keys(i)){if(s==="resourceType")continue;let a=Kc(e,s,r);if(a){let u,l;a.startsWith("_")?(u=a.slice(1),l=s.slice(1)):(u="_"+a,l="_"+s),u in o&&o[u]!==l&&this.issues.push(ke("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(ke("warning","structure",`Conflicting choice of type properties: "${s}", "${o[a]}"`,s)),o[a]=s;continue}!(s in r)&&!(s.startsWith("_")&&s.slice(1)in r)&&i[s]!==void 0&&this.issues.push(R(`${n}.${s}`,`Invalid additional property "${s}"`))}}constraintsCheck(e,r){let n=r.constraints;for(let i of n??v)if(i.severity==="error"&&!(i.key in Qc)&&!this.isExpressionTrue(i,e)){this.issues.push(Nn(e.path,i));return}}referenceTypeCheck(e,r){if(e.type!=="Reference")return;let n=e.value;if(!J(n)||n.reference.startsWith("#"))return;let i=n.reference.includes("?")?n.reference.split("?")[0]:n.reference.split("/")[0];if(!i)return;let o=r.type.find(f=>f.code==="Reference")?.targetProfile;if(!o)return;let s=Et+"/fhir/StructureDefinition/",a=s+"Resource",u=s+i,l="https://medplum.com/fhir/StructureDefinition/",d=l+i;for(let f of o)if(f===a||f===u||f===d||!f.startsWith(s)&&!f.startsWith(l))return;this.issues.push(ke("warning","structure",`Invalid reference: got "${i}", expected "${o.join('", "')}"`,e.path))}collectValue(e,r){r.binding?.valueSet&&r.binding.strength==="required"&&eu(e.type)&&this.appendToken(r.binding.valueSet,e)}appendToken(e,r){if(!this.collect?.tokens)return;let n=this.collect.tokens[e];if(!n){let i=Object.keys(this.collect.tokens);for(let o of i)o.startsWith(e+"|")&&(n=this.collect.tokens[o])}for(let i of n??v)if(i.path===r.path)return;this.collect.tokens[e]=ve(n,r)}isExpressionTrue(e,r){let n={"%context":r,"%ucum":E(Pn)},i=this.currentResource();i&&(n["%resource"]=E(i)),D(this.root.value)&&(n["%rootResource"]=this.root);try{let o=k(e.expression,[r],n,Gc);return o.length===1&&o[0].value===!0}catch(o){return this.issues.push(Fn(r.path,"Error evaluating invariant expression",o,{fhirpath:e.expression})),!1}}validatePrimitiveType(e){let[r,n]=Zc(e),i=e.path;if(r){let{type:o,value:s}=r;if(!(o in Fr)){this.issues.push(R(i,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=Fr[o];if(typeof s!==a){s!==null&&this.issues.push(R(i,`Invalid JSON type: expected ${a}, but got ${typeof s}`));return}o==="base64Binary"?this.validateBase64Binary(s,i):a==="string"?this.validateString(s,o,i):a==="number"&&this.validateNumber(s,o,i)}n&&Lr(n,this,{schema:ye("Element"),initialPath:i})}validateBase64Binary(e,r){if(!tu(e)){this.issues.push(R(r,"Invalid base64Binary format"));return}let n=0;e.endsWith("==")?n=2:e.endsWith("=")&&(n=1),Math.max(0,Math.floor(e.length*3/4)-n)>this.base64BinaryMaxBytes&&this.issues.push(R(r,`base64Binary exceeds ${this.base64BinaryMaxBytes} bytes`))}validateString(e,r,n){if(!e.trim()){this.issues.push(R(n,"String must contain non-whitespace content"));return}if(e.length>1024*1024){this.issues.push(R(n,"String cannot be larger than 1 MB"));return}let i=wt[r];i&&!i.exec(e)&&this.issues.push(R(n,"Invalid "+r+" format"))}validateNumber(e,r,n){Number.isNaN(e)||!Number.isFinite(e)?this.issues.push(R(n,"Invalid numeric value")):Jc(r)&&!Number.isInteger(e)?this.issues.push(R(n,"Expected number to be an integer")):r===p.positiveInt&&e<=0?this.issues.push(R(n,"Expected number to be positive")):r===p.unsignedInt&&e<0&&this.issues.push(R(n,"Expected number to be non-negative"))}};function Jc(t){return t===p.integer||t===p.positiveInt||t===p.unsignedInt}function Kc(t,e,r){let n="";e.startsWith("_")&&(e=e.slice(1),n="_");let i=e.split(/(?=[A-Z])/g),o="";for(let s of i){o+=s;let a=o+"[x]";if(r[a])return _(t,o)?n+a:void 0}}function Yn(t,e,r){for(let[n,i]of Object.entries(t)){let o=`${e}.${n}`,s=n.startsWith("_")?n.slice(1):`_${n}`;if(i===null)r.push(R(o,"Invalid null value"));else if(Array.isArray(i))for(let a=0;a<i.length;a++)i[a]===void 0?r.push(R(`${o}[${a}]`,"Invalid undefined value")):i[a]===null&&!t[s]?.[a]?r.push(R(`${o}[${a}]`,"Invalid null value")):i[a]&&Yn(i[a],`${o}[${a}]`,r);else typeof i=="object"&&Yn(i,o,r)}}function Yc(t,e){let r=Array.isArray(t)?t.map(n=>({type:n.type,value:n.value})):{type:t.type,value:t.value};return!(e.pattern&&!at(r,e.pattern)||e.fixed&&!xe(r,e.fixed))}function Ur(t,e,r,n){if(Array.isArray(t))return!1;let i;e.path==="$this"?i=r:i=(n??r.elements)[e.path];let o=r.type;switch(e.type){case"value":case"pattern":if(!t||!i)return!1;if(i.pattern)return at(t,i.pattern);if(i.fixed)return xe(t,i.fixed);if(i.binding?.strength==="required"&&i.binding.valueSet)return!0;break;case"type":return!t||!o?.length?!1:o.some(s=>s.code===t.type)}return!1}function Xc(t,e){for(let r of e?.slices??v)if(e?.discriminator?.every(n=>te(je(t,n.path))?.some(i=>Ur(i,n,r))))return r.name}function Zc(t){if(typeof t.value!="object"||!t.value)return[t,void 0];let e=t.value.valueOf();if(e===t.value)return[void 0,{type:"Element",value:t.value}];let r=new Set(Object.keys(e)),n=Object.entries(t.value).filter(([o,s])=>!r.has(o)),i=n.length>0?Object.fromEntries(n):void 0;return[{type:t.type,value:e},{type:"Element",value:i}]}function eu(t){switch(t){case"CodeableConcept":case"Coding":case"code":case"Quantity":case"string":case"uri":return!0;default:return!1}}function tu(t){if(t.length===0)return!1;let e=0;t.endsWith("==")?e=2:t.endsWith("=")&&(e=1);let r=t.length-e;if(r<0||(e+r)%4!==0)return!1;let n=e>0?t.slice(0,-e):t;return/^[A-Za-z\d+/]+$/.test(n)}function y(t){return[{type:p.boolean,value:t}]}function E(t){return t==null?{type:"undefined",value:void 0}:Number.isSafeInteger(t)?{type:p.integer,value:t}:typeof t=="number"?{type:p.decimal,value:t}:typeof t=="boolean"?{type:p.boolean,value:t}:typeof t=="string"?{type:p.string,value:t}:L(t)?{type:p.Quantity,value:t}:D(t)?{type:t.resourceType,value:t}:Wr(t)?{type:p.CodeableConcept,value:t}:It(t)?{type:p.Coding,value:t}:{type:p.BackboneElement,value:t}}function j(t){return t.length===0?!1:!!t[0].value}function N(t,e){if(t.length!==0){if(t.length===1&&(!e||t[0].type===e))return t[0];{let r=e?` of type ${e}`:"";throw new Error(`Expected singleton${r}, but found ${JSON.stringify(t)}`)}}}function _(t,e,r){if(!t.value)return;let n=kt(t.type,e,r?.profileUrl);return n?Wo(t,e,n):$o(t,e)}function Wo(t,e,r){let n=t.value,i=r.type;if(!i||i.length===0)return;let o,s="undefined",a,u=r.path.lastIndexOf("."),l=r.path.substring(u+1),d=l,f=!1;l.endsWith("[x]")&&(d=l.substring(0,l.length-3),f=!0);for(let h of i){let b=d;if(f&&(b+=U(h.code)),o=n[b],a=n["_"+b],o!==void 0||a!==void 0){s=h.code;break}}if(a)if(Array.isArray(o)){o=o.slice();for(let h=0;h<Math.max(o.length,a.length);h++)o[h]=Xn(o[h],a[h])}else if(!o&&Array.isArray(a)){o=a.slice();for(let h=0;h<a.length;h++)o[h]=Xn(void 0,a[h])}else o=Xn(o,a);if(!O(o))return(s==="Element"||s==="BackboneElement")&&(s=r.type[0].code),Array.isArray(o)?o.map(h=>Uo(h,s)):Uo(o,s)}function Uo(t,e){return e==="Resource"&&D(t)&&(e=t.resourceType),{type:e,value:t}}function $o(t,e){let r=t.value;if(!r||typeof r!="object")return;let n;if(e in r){let i=r[e];Array.isArray(i)?n=i.map(E):n=E(i)}else{let i=e.endsWith("[x]")?e.substring(0,e.length-3):e;for(let o of Object.values(p)){let s=i+U(o);if(s in r){let a=r[s];Array.isArray(a)?n=a.map(u=>({type:o,value:u})):n={type:o,value:a};break}}}if(Array.isArray(n)){if(n.length===0||O(n[0]))return}else if(O(n))return;return n}function At(t){let e=[];for(let r of t){let n=!1;for(let i of e)if(j(ct(r,i))){n=!0;break}n||e.push(r)}return e}function Zn(t){return y(!j(t))}function ei(t,e){return t.length===0||e.length===0?[]:t.length!==e.length?y(!1):y(t.every((r,n)=>j(ct(r,e[n]))))}function ti(t,e){return t.length===0||e.length===0?[]:t.length!==e.length?y(!0):y(t.some((r,n)=>!j(ct(r,e[n]))))}function ct(t,e){let r=t.value?.valueOf(),n=e.value?.valueOf();return typeof r=="number"&&typeof n=="number"?y(Math.abs(r-n)<1e-8):L(r)&&L(n)?y(ii(r,n)):y(typeof r=="object"&&typeof n=="object"?oi(t,e):r===n)}function qr(t,e){return t.length===0&&e.length===0?y(!0):t.length!==e.length?y(!1):(t.sort(Bo),e.sort(Bo),y(t.every((r,n)=>j(jo(r,e[n])))))}function jo(t,e){let{type:r,value:n}=t,{type:i,value:o}=e,s=n?.valueOf(),a=o?.valueOf();return typeof s=="number"&&typeof a=="number"?y(Math.abs(s-a)<.01):L(s)&&L(a)?y(ii(s,a)):y(r==="Coding"&&i==="Coding"?typeof s!="object"||typeof a!="object"?!1:s.code===a.code&&s.system===a.system:typeof s=="object"&&typeof a=="object"?oi({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function Bo(t,e){let r=t.value?.valueOf(),n=e.value?.valueOf();return typeof r=="number"&&typeof n=="number"?r-n:typeof r=="string"&&typeof n=="string"?r.localeCompare(n):0}function Qe(t,e){let{value:r}=t;if(r==null)return!1;let n=e;switch(n.startsWith("System.")&&(n=n.substring(7)),n.startsWith("FHIR.")&&(n=n.substring(5)),n){case"Boolean":return typeof r=="boolean";case"Decimal":case"Integer":return typeof r=="number";case"Date":return ri(r);case"DateTime":return Ge(r);case"Time":return typeof r=="string"&&!!/^T\d/.exec(r);case"Period":return ni(r);case"Quantity":return L(r);default:return t.type===n||typeof r=="object"&&r?.resourceType===n}}function ri(t){return typeof t=="string"&&!!wt.date.exec(t)}function Ge(t){return typeof t=="string"&&!!wt.dateTime.exec(t)}function ni(t){return!!(t&&typeof t=="object"&&("start"in t&&Ge(t.start)||"end"in t&&Ge(t.end)))}function Ot(t){if(ri(t)||Ge(t))return{start:Br(t,"0000-01-01T00:00:00.000"),end:Br(t,"xxxx-12-31T23:59:59.999")};if(ni(t))return{start:t.start?Br(t.start,"0000-01-01T00:00:00.000"):void 0,end:t.end?Br(t.end,"xxxx-12-31T23:59:59.999"):void 0}}function Br(t,e){let r="Z",n=Math.max(t.indexOf("+",10),t.indexOf("-",10));n>-1?(r=t.substring(n),t=t.substring(0,n)):t.endsWith("Z")&&(t=t.substring(0,t.length-1));let i=t+e.substring(t.length)+r;return new Date(i).toISOString()}function L(t){return!!(t&&typeof t=="object"&&"value"in t&&typeof t.value=="number")}function ii(t,e){return Math.abs(t.value-e.value)<.01&&(t.unit===e.unit||t.code===e.code||t.unit===e.code||t.code===e.unit)}function oi(t,e){let r=Object.keys(t),n=Object.keys(e);if(r.length!==n.length)return!1;for(let i of r){let o=t[i],s=e[i];if(qo(o)&&qo(s)){if(!oi(o,s))return!1}else if(o!==s)return!1}return!0}function qo(t){return t!==null&&typeof t=="object"}function Xn(t,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return ru(t??{},e)}return t}function ru(t,e){return delete e.__proto__,delete e.constructor,Object.assign(t,e)}function ut(t,e){return D(t,e)&&"id"in t&&typeof t.id=="string"}function re(t){let e=I(t)??"undefined/undefined",r=Qo(t);return r===e?{reference:e}:{reference:e,display:r}}function I(t){if(J(t))return t.reference;if(ut(t))return`${t.resourceType}/${t.id}`}function K(t){if(t)return J(t)?t.reference.split("/")[1]:t.id}function nu(t){if(t?.reference===void 0)throw new m(T("Reference missing reference property."));let[e,r]=t.reference.split("/");if(e===""||r===""||r===void 0)throw new m(T("Unable to parse reference string."));return[e,r]}function jr(t){if(t)if(t.accounts&&t.account){let e=t.accounts;return e.some(r=>r.reference===t.account?.reference)?e:[t.account,...e]}else return te(t.accounts??t.account)}function Go(t){return t.resourceType==="Patient"||t.resourceType==="Practitioner"||t.resourceType==="RelatedPerson"}function Qo(t){if(Go(t)){let e=iu(t);if(e)return e}if(t.resourceType==="Appointment"&&t.serviceType?.[0])return Te(t.serviceType[0]);if(t.resourceType==="Device"){let e=ou(t);if(e)return e}if(t.resourceType==="DocumentReference"){if(t.description)return t.description;if(t.type)return Te(t.type)}if(t.resourceType==="MedicationRequest"&&t.medicationCodeableConcept)return Te(t.medicationCodeableConcept);if(t.resourceType==="MedicationStatement"&&t.medicationCodeableConcept)return Te(t.medicationCodeableConcept);if(t.resourceType==="Slot"&&(t.start||t.end))return`${ze(t.start)} - ${ze(t.end)}`;if(t.resourceType==="Subscription"&&t.criteria)return t.criteria;if(t.resourceType==="User"&&t.email)return t.email;if("name"in t&&t.name&&typeof t.name=="string")return t.name;if("code"in t&&t.code){let e=t.code;if(Array.isArray(e)&&(e=e[0]),Wr(e))return Te(e);if(Yo(e))return e.text}return I(t)??""}function iu(t){let e=t.name;if(e&&e.length>0)return dt(e[0])}function ou(t){let e=t.deviceName;if(e&&e.length>0)return e[0].name}function su(t){if(!("photo"in t))return;let e=t.photo;if(e)if(Array.isArray(e))for(let r of e){let n=Ho(r);if(n)return n}else return Ho(e)}function Ho(t){if(t.url&&t.contentType?.startsWith("image/"))return t.url}function au(t){return t?new Date(t):void 0}function Mt(t,e){let r=new Date(t);r.setUTCHours(0,0,0,0);let n=e?new Date(e):new Date;n.setUTCHours(0,0,0,0);let i=r.getUTCFullYear(),o=r.getUTCMonth(),s=r.getUTCDate(),a=n.getUTCFullYear(),u=n.getUTCMonth(),l=n.getUTCDate(),d=a-i;(u<o||u===o&&l<s)&&d--;let f=a*12+u-(i*12+o);l<s&&f--;let h=Math.floor((n.getTime()-r.getTime())/(1e3*60*60*24));return{years:d,months:f,days:h}}function cu(t,e){let{years:r,months:n,days:i}=Mt(t,e);return r>=2?r.toString().padStart(3,"0")+"Y":n>=1?n.toString().padStart(3,"0")+"M":i.toString().padStart(3,"0")+"D"}function uu(t){let e={};return zo(t.item,e),e}function zo(t,e){for(let r of t??v)r.linkId&&r.answer&&r.answer.length>0&&(e[r.linkId]=r.answer[0]),zo(r.item,e)}function lu(t){let e={};return Jo(t.item,e),e}function Jo(t,e){for(let r of t??v)r.linkId&&r.answer&&r.answer.length>0&&(e[r.linkId]?e[r.linkId]=[...e[r.linkId],...r.answer]:e[r.linkId]=r.answer),Jo(r.item,e)}function Hr(t,e){let r=t.identifier;if(!r)return;let n=Array.isArray(r)?r:[r];for(let i of n)if(i.system===e)return i.value}var du={system:wn,code:"MR"};function pu(t,e){let r=t.identifier;return!r||!It(e)||!e.system?void 0:(Array.isArray(r)?r:[r]).find(i=>i.type?.coding?.some(o=>o.system===e.system&&o.code===e.code))?.value}function fu(t,e,r,n){let i={system:e,value:r};n?.use&&(i.use=n.use);let o=t.identifier;if(!o){t.identifier=[i];return}for(let s of o)if(s.system===e){Object.assign(s,i);return}o.push(i)}function De(t,...e){let r=ae(t,...e);if(!r)return;let n=_({type:"Extension",value:r},"value[x]");if(n)return Array.isArray(n)?n[0].value:n.value}function ae(t,...e){let r=t;for(let n=0;n<e.length&&r;n++)r=r?.extension?.find(i=>i.url===e[n]);return r}function Dt(t,e){let[r,...n]=te(e);if(!r)return[];let i=t?.extension?.filter(o=>o.url===r)??[];return n.length>0?i.flatMap(o=>Dt(o,n)):i}function Vt(t,e){let r=si(t);return JSON.stringify(r,null,e?2:void 0)??""}function si(t){if(!(t==null||t===""))return typeof t=="object"?Array.isArray(t)?mu(t):hu(t):t}function mu(t){let e=t.length;if(e===0)return;let r,n=0;for(let i=0;i<e;i++){let o=t[i],s=si(o);s!==o&&!r&&(r=Array.from(t)),s===void 0?r&&(r[i]=null):(r&&(r[i]=s),n++)}if(n!==0)return r??t}function hu(t){let e,r=0;for(let n in t){let i=t[n],o=si(i);o!==i&&!e&&(e={...t}),o===void 0?e&&delete e[n]:(e&&(e[n]=o),r++)}if(r!==0)return e??t}function O(t){if(t==null)return!0;let e=typeof t;return e==="string"||e==="object"?!ue(t):!1}function ue(t){if(t==null)return!1;let e=typeof t;return e==="string"&&t!==""||e==="object"&&("length"in t&&t.length>0||Object.keys(t).length>0)}function gu(t){if(!t)return;let e=t.length-1;for(;e>=0&&O(t[e]);)e--;return e>=0?t.slice(0,e+1):void 0}function xe(t,e,r){return t===e||O(t)&&O(e)?!0:O(t)||O(e)?!1:Array.isArray(t)&&Array.isArray(e)?yu(t,e):Array.isArray(t)||Array.isArray(e)?!1:C(t)&&C(e)?xu(t,e,r):(C(t)||C(e),!1)}function yu(t,e){if(t.length!==e.length)return!1;for(let r=0;r<t.length;r++)if(!xe(t[r],e[r]))return!1;return!0}function xu(t,e,r){let n=new Set;for(let i of Object.keys(t))n.add(i);for(let i of Object.keys(e))n.add(i);r==="meta"&&(n.delete("versionId"),n.delete("lastUpdated"),n.delete("author"));for(let i of n){let o=t[i],s=e[i];if(!xe(o,s,i))return!1}return!0}function at(t,e){return O(t)?!0:O(e)?!1:Array.isArray(t)&&Array.isArray(e)?vu(t,e):Array.isArray(t)||Array.isArray(e)?!1:C(t)&&C(e)?Tu(t,e):C(t)||C(e)?!1:t===e}function vu(t,e){return e.every(r=>t.some(n=>at(n,r)))}function Tu(t,e){return Object.entries(e).every(([r,n])=>r in t&&at(t[r],n))}function le(t){return t===void 0?t:JSON.parse(JSON.stringify(t))}function Su(t){return/^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i.test(t)}function C(t){return t!==null&&typeof t=="object"}function bu(t){return t.every(de)}function de(t){return typeof t=="string"}function It(t){return C(t)&&"code"in t&&typeof t.code=="string"}function Wr(t){return C(t)&&"coding"in t&&Array.isArray(t.coding)&&t.coding.every(It)}function Eu(t,e){for(let r of t??v)for(let n of r.coding??v)if(n.system===e)return n.code}function Ko(t,e){let[r,n]=Je(e,"|",2);return n===void 0?t.code===e:r===""?t.system===void 0&&t.code===n:n===""?t.system===r:t.system===r&&t.code===n}function Ru(t,e){return(t.coding??v).some(r=>Ko(r,e))}function Yo(t){return C(t)&&"text"in t&&typeof t.text=="string"}var Xo=[];for(let t=0;t<256;t++)Xo.push(t.toString(16).padStart(2,"0"));function ai(t){let e=ui(t),r=new Uint8Array(e),n=new Array(r.length);for(let i=0;i<r.length;i++)n[i]=Xo[r[i]];return n.join("")}function ci(t){let e=ui(t),r=new Uint8Array(e),n=new Array(r.length);for(let i=0;i<r.length;i++)n[i]=String.fromCodePoint(r[i]);return window.btoa(n.join(""))}function ui(t){return ArrayBuffer.isView(t)?t.buffer:t}function U(t){return t?t.charAt(0).toUpperCase()+t.substring(1):""}function Cu(t){return t===t.toLowerCase()&&t!==t.toUpperCase()}function Gr(t){return t.length>0&&t.startsWith(t[0].toUpperCase())}function Se(t,e){let r=t+".";if(e.startsWith(r))return e.slice(r.length)}function $r(t,e){return t.coding?.find(r=>r.system===e)?.code}function Pu(t,e,r){t.coding??=[];let n=t.coding.find(i=>i.system===e);n?n.code=r:t.coding.push({system:e,code:r})}function wu(t,e,r,n){return t.qualifiedInterval?.find(i=>es(i,e)&&ku(i,r,t.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function Au(t,e,r){return Zo(t,e,r)[0]}function Zo(t,e,r){return t.qualifiedInterval?.filter(n=>es(n,e)&&(!r||r.includes(n.condition)))??[]}function es(t,e){return Ou(t,e)&&Iu(t,e)}function Ou(t,e){return!t.gender||t.gender===e.gender}function Iu(t,e){return!t.age||li(Mt(e.birthDate).years,t.age)}function ku(t,e,r){return!!t.range&&li(e,t.range,r)}function li(t,e,r){return(e.low?.value===void 0||rs(t,e.low.value,r))&&(e.high?.value===void 0||ts(t,e.high.value,r))}function Mu(t,e){return Number.parseFloat(t.toFixed(e))}function Du(t,e,r){return ce(t,r)===ce(e,r)}function Vu(t,e,r){return ce(t,r)<ce(e,r)}function _u(t,e,r){return ce(t,r)>ce(e,r)}function ts(t,e,r){return ce(t,r)<=ce(e,r)}function rs(t,e,r){return ce(t,r)>=ce(e,r)}function ce(t,e){return e===void 0?t:Math.round(t*Math.pow(10,e))}function Lu(t,e,r){return t.find(n=>typeof e=="string"?$r(n.code||{},r)===e:$r(n.code||{},r)===$r(e,r))}function Nu(t){return Array.isArray(t)?t[0]:t}var Qr=(t,e)=>new Promise((r,n)=>{e?.signal?.throwIfAborted();let i=setTimeout(r,t);e?.signal?.addEventListener("abort",()=>{clearTimeout(i),n(e.signal?.reason)},{once:!0})});function Je(t,e,r){let n=[];for(let i=0;i<r-1;i++){let o=t.indexOf(e);if(o<0)break;n.push(t.slice(0,o)),t=t.slice(o+e.length)}return n.push(t),n}function di(t){let e,r=!1;return function(){return r||(e=t(),r=!0),e}}function ve(t,e){return t?(t.push(e),t):[e]}function _t(t){return t.sort((e,r)=>e.localeCompare(r))}function lt(t){return t.endsWith("/")?t:t+"/"}function ns(t){return t.startsWith("/")?t.slice(1):t}function W(t,e){return new URL(ns(e),lt(t.toString())).toString()}function pi(t,e){return W(t,e).toString().replace("http://","ws://").replace("https://","wss://")}function fi(t){return typeof t=="object"&&!Array.isArray(t)&&!(t instanceof URLSearchParams)&&(t=Object.fromEntries(Object.entries(t).filter(e=>e[1]!==void 0))),new URLSearchParams(t).toString()}var is=/^(([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 Fu(t){return is.test(t)}function Uu(t,e){return t?.meta?.profile?.includes(e)||(t.meta=t.meta??{},t.meta.profile=t.meta.profile??[],t.meta.profile.push(e)),t}function Bu(t,e){return new Map(t.entry?.filter(n=>!!n.resource).map(n=>[Hr(n.resource,e),n.resource]).filter(([n])=>n!==void 0))}function qu(t,e){if(t?.meta?.profile?.includes(e)){let r=t.meta.profile.indexOf(e);t.meta.profile.splice(r,1)}return t}function Wu(t,e){let r=[];if(!t)return r;for(let n=0;n<t.length;n++){let i=e(t[n],n);Array.isArray(i)?r.push(...i):i!==void 0&&r.push(i)}return r}function $u(t,e){let r=0;for(let n of t)r+=e(n);return r}function ju(t,e){let r=0;for(let n of t)e(n)&&r++;return r}function Hu(t,e){let r={};for(let n of t){let i=e(n);r[i]=(r[i]??0)+1}return r}function Gu(t){return t.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""").replaceAll("\u201C","“").replaceAll("\u201D","”").replaceAll("\u2018","‘").replaceAll("\u2019","’").replaceAll("\u2026","…")}function Lt(t){return t!=null}function Qu(t){throw new Error(`Unexpected value: ${JSON.stringify(t)}`)}var v=Object.freeze([]),zu=()=>{};function mi(t){if(!t)return"";switch(t.type){case"Address":return ss(t.value);case"CodeableConcept":return Te(t.value);case"Coding":return hi(t.value);case"ContactPoint":return t.value.value;case"HumanName":return dt(t.value);case"Quantity":return be(t.value);case"Reference":return os(t.value);default:return t.value?.toString()??""}}function os(t){return t?t.display??t.reference??Vt(t):""}function ss(t,e){if(!t)return"";let r=[];if(t.line&&r.push(...t.line),t.city||t.state||t.postalCode){let n=[];t.city&&n.push(t.city),t.state&&n.push(t.state),t.postalCode&&n.push(t.postalCode),r.push(n.join(", "))}return t.use&&(e?.all||e?.use)&&r.push("["+t.use+"]"),r.join(e?.lineSeparator??", ").trim()}function dt(t,e){if(!t)return"";let r=[];if(t.prefix&&e?.prefix!==!1&&r.push(...t.prefix),t.given&&r.push(...t.given),t.family&&r.push(t.family),t.suffix&&e?.suffix!==!1&&r.push(...t.suffix),t.use&&(e?.all||e?.use)&&r.push("["+t.use+"]"),r.length===0){let n=Ke(t.text);if(n)return n}return r.join(" ").trim()}function Ju(t){let e=[];return t.given&&e.push(...t.given),e.join(" ").trim()}function Ku(t){return Ke(t.family)??""}function Nt(t){return t instanceof Date&&!Number.isNaN(t.getTime())}function Yu(t,e,r){if(!t)return"";let n=new Date(t);return Nt(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...r})):""}function Xu(t,e,r){if(!t)return"";let n=new Date("2000-01-01T"+t+"Z");return Nt(n)?n.toLocaleTimeString(e,r):""}function as(t,e,r){if(!t)return"";let[n=0,i=0,o=0]=t.split(":").map(Number),s=new Date(Date.UTC(1970,0,1,n,i,o));return Nt(s)?new Intl.DateTimeFormat(e,{hour:"numeric",minute:"2-digit",second:o===0?void 0:"numeric",...r,timeZone:"UTC"}).format(s):""}function ze(t,e,r){if(!t)return"";let n=new Date(t);return Nt(n)?n.toLocaleString(e,r):""}function Zu(t,e,r){return!t||!t.start&&!t.end?"":ze(t.start,e,r)+" - "+ze(t.end,e,r)}var el={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},tl={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},rl={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function nl(t){if(!t)return"";let e=[];return il(e,t.repeat),t.event&&e.push(t.event.map(r=>ze(r)).join(", ")),U(e.join(" ").trim())}function il(t,e){if(!e?.periodUnit)return;let r=e.frequency??1,n=e.period??1,i=e.periodUnit;r===1&&n===1?t.push(el[i]):(r===1?t.push("once"):t.push(r+" times"),n===1?t.push("per "+tl[i]):t.push("per "+n+" "+rl[i])),e.dayOfWeek&&t.push("on "+e.dayOfWeek.map(U).join(", ")),e.timeOfDay&&t.push("at "+e.timeOfDay.map(o=>as(o)).join(", "))}function ol(t,e,r=!1){if(r&&e===void 0)throw new Error("Precision must be specified for exclusive ranges");let n=t?.low&&{...t.low,comparator:void 0},i=t?.high&&{...t.high,comparator:void 0};return n?.value===void 0&&i?.value===void 0?"":n?.value!==void 0&&i?.value===void 0?r&&e!==void 0?(n.value=cl(n.value,e),`> ${be(n,e)}`):`>= ${be(n,e)}`:n?.value===void 0&&i?.value!==void 0?r&&e!==void 0?(i.value=al(i.value,e),`< ${be(i,e)}`):`<= ${be(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${be(n,e)} - ${be(i,e)}`)}function be(t,e){if(!t)return"";let r=[];return t.comparator&&(r.push(t.comparator),r.push(" ")),t.value!==void 0&&(e!==void 0?r.push(t.value.toFixed(e)):r.push(t.value)),t.unit&&(t.unit!=="%"&&r.at(-1)!==" "&&r.push(" "),r.push(t.unit)),r.join("").trim()}function sl(t){return t?.value===void 0?"":t.value.toLocaleString(void 0,{style:"currency",currency:t.currency??"USD",currencyDisplay:"narrowSymbol"})}function Te(t){if(!t)return"";let e=Ke(t.text);return e||(t.coding?t.coding.map(r=>hi(r)).join(", "):"")}function hi(t,e){let r=Ke(t?.display);if(r){let n=e?Ke(t?.code):void 0;return`${r}${n?" ("+n+")":""}`}return Ke(t?.code)??""}function cs(t){if(!t)return"";let e=[];if(t.valueQuantity)e.push(be(t.valueQuantity));else if(t.valueCodeableConcept)e.push(Te(t.valueCodeableConcept));else{let r=Ke(t.valueString);r&&e.push(r)}return"component"in t&&e.push(t.component.map(r=>cs(r)).join(" / ")),e.join(" / ").trim()}function Ke(t){return typeof t=="string"?t:void 0}function al(t,e,r=1){return(us(t,e)+r)*Math.pow(10,-e)}function cl(t,e,r=1){return(us(t,e)-r)*Math.pow(10,-e)}function us(t,e){return e===void 0?t:Math.round(t*Math.pow(10,e))}var p={Address:"Address",Age:"Age",Annotation:"Annotation",Attachment:"Attachment",BackboneElement:"BackboneElement",CodeableConcept:"CodeableConcept",Coding:"Coding",ContactDetail:"ContactDetail",ContactPoint:"ContactPoint",Contributor:"Contributor",Count:"Count",DataRequirement:"DataRequirement",Distance:"Distance",Dosage:"Dosage",Duration:"Duration",Element:"Element",ElementDefinition:"ElementDefinition",Expression:"Expression",Extension:"Extension",HumanName:"HumanName",Identifier:"Identifier",MarketingStatus:"MarketingStatus",Meta:"Meta",Money:"Money",MoneyQuantity:"MoneyQuantity",Narrative:"Narrative",ParameterDefinition:"ParameterDefinition",Period:"Period",Population:"Population",ProdCharacteristic:"ProdCharacteristic",ProductShelfLife:"ProductShelfLife",Quantity:"Quantity",Range:"Range",Ratio:"Ratio",Reference:"Reference",RelatedArtifact:"RelatedArtifact",SampledData:"SampledData",Signature:"Signature",SimpleQuantity:"SimpleQuantity",SubstanceAmount:"SubstanceAmount",SystemString:"http://hl7.org/fhirpath/System.String",Timing:"Timing",TriggerDefinition:"TriggerDefinition",UsageContext:"UsageContext",base64Binary:"base64Binary",boolean:"boolean",canonical:"canonical",code:"code",date:"date",dateTime:"dateTime",decimal:"decimal",id:"id",instant:"instant",integer:"integer",markdown:"markdown",oid:"oid",positiveInt:"positiveInt",string:"string",time:"time",unsignedInt:"unsignedInt",uri:"uri",url:"url",uuid:"uuid",xhtml:"xhtml"};function ul(t){for(let e of t.entry??v){let r=e.resource;r.resourceType==="SearchParameter"&&zr(r)}}function Qn(t){let e=Array.isArray(t)?t:t.entry?.map(r=>r.resource)??[];for(let r of e)r?.resourceType==="StructureDefinition"&&r.kind==="resource"&&ds(r.type)}function ds(t){let e=H.types[t];e||(e={searchParamsDetails:{}},H.types[t]=e);let r;return!e.searchParams&&t!=="Binary"&&(e.searchParams={_id:{base:[t],code:"_id",type:"token",expression:t+".id"},_lastUpdated:{base:[t],code:"_lastUpdated",type:"date",expression:t+".meta.lastUpdated"},_compartment:{base:[t],code:"_compartment",type:"reference",expression:t+".meta.compartment",get target(){return r??=fs(),r}},_profile:{base:[t],code:"_profile",type:"uri",expression:t+".meta.profile"},_security:{base:[t],code:"_security",type:"token",expression:t+".meta.security"},_source:{base:[t],code:"_source",type:"uri",expression:t+".meta.source"},_tag:{base:[t],code:"_tag",type:"token",expression:t+".meta.tag"},_project:{base:[t],code:"_project",type:"token",expression:t+".meta.project"}}),e}function zr(t){for(let e of t.base??v){let r=ds(e);r.searchParams||(r.searchParams={}),r.searchParams[t.code]=t}}function kr(t){let e=t.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?ps((t.base?.path??t.path)?.split(".")):e}function ps(t){return t.length===1?t[0]:t.map(U).join("")}function _r(t){return t.kind==="resource"&&t.name!=="Resource"&&t.name!=="DomainResource"}function fs(){return Object.values($n()).filter(_r).map(t=>t.name)}function ll(t){return H.types[t]?.searchParams}function dl(t,e){return H.types[t]?.searchParams?.[e]}function pl(t){let e=t.replaceAll("[x]","").split(".").pop();return ms(e)}function ms(t){let e;return t.length<100?e=t.match(/[A-Z]+(?![a-z])|[A-Z]?[a-z]+|\d+/g)??[]:e=t.split(/(?=[A-Z])/),e.map(ml).join(" ").replace("_"," ").replaceAll(/\s+/g," ")}var fl=new Set(["CDS","ID","IP","JWKS","PKCE","OMB","OID","SOP","UDI","UID","URI","URL"]);function ml(t){let e=t.toUpperCase();return t===e?t:fl.has(e)?e:e.charAt(0)+t.slice(1)}function kt(t,e,r){let n=Me(t,r);if(n)return gi(n.elements,e)}function gi(t,e){let r=t[e]??t[e+"[x]"];if(r)return r;for(let n=0;n<e.length;n++){let i=e[n];if(i>="A"&&i<="Z"){let o=e.slice(0,n)+"[x]",s=t[o];if(s)return s}}}function yi(t,e,r){let n=e.split(/[.[\]]/g),i=Me(t,r);if(!i)return;let o=i,s;for(let a of n){let u;if(a.match(/^[a-z]/)){let l=gi(o.elements,a);if(!l)return;if(l.type.length>1)throw new Error("Multiple matching types in path "+e);u=Me(l.type[0].code),s=l}u&&(o=u)}return s}function hl(t){return!!(t&&typeof t=="object"&&"type"in t&&"value"in t)}function D(t,e){return!(!t||typeof t!="object"||!("resourceType"in t)||e&&t.resourceType!==e)}function J(t,e){return t&&typeof t=="object"&&"reference"in t&&typeof t.reference=="string"?e?t.reference.match(new RegExp(`^${e}(/|\\?)`))!==null:!0:!1}var H={types:{}};function xi(t){switch(t.type){case p.uuid:case p.uri:case p.url:case p.string:case p.oid:case p.markdown:case p.id:case p.code:case p.canonical:case p.base64Binary:case p.SystemString:case p.date:case p.dateTime:case p.instant:return t.value;case p.Identifier:return`${t.value.system??""}|${t.value.value}`;case p.Coding:return ls(t.value);case p.CodeableConcept:return t.value.coding?.map(ls).join(",")??t.value.text;case p.HumanName:return t.value.text?t.value.text:dt(t.value);case p.unsignedInt:case p.positiveInt:case p.integer:case p.decimal:return t.value.toString();case p.boolean:return t.value?"true":"false";case p.Extension:return t.value.url;case p.ContactPoint:return t.value.value;case p.Quantity:case p.Age:case p.Count:case p.Duration:return`${t.value.value}|${t.value.system??""}|${t.value.code??t.value.unit??""}`;case p.Reference:return t.value.reference;default:return ut(t.value)?I(t.value):JSON.stringify(t)}}function ls(t){return t?`${t.system??""}|${t.code}`:""}function pt(t){if(t.startsWith("T"))return t+"T00:00:00.000Z".substring(t.length);if(t.length<=10)return t;try{return new Date(t).toISOString()}catch{return t}}var Ee=()=>[];function Ft(t){return t instanceof F?t.name:t instanceof ne&&t.left instanceof F&&t.right instanceof F?t.left.name+"."+t.right.name:""}var B={empty:(t,e)=>y(e.every(r=>O(r.value))),hasValue:(t,e)=>y(e.length!==0),exists:(t,e,r)=>r?y(e.some(n=>j(r.eval(t,[n])))):y(e.length>0&&e.every(n=>!O(n.value))),all:(t,e,r)=>y(e.every(n=>j(r.eval(t,[n])))),allTrue:(t,e)=>{for(let r of e)if(!r.value)return y(!1);return y(!0)},anyTrue:(t,e)=>{for(let r of e)if(r.value)return y(!0);return y(!1)},allFalse:(t,e)=>{for(let r of e)if(r.value)return y(!1);return y(!0)},anyFalse:(t,e)=>{for(let r of e)if(!r.value)return y(!0);return y(!1)},subsetOf:(t,e,r)=>{if(e.length===0)return y(!0);let n=r.eval(t,Ye(t));return n.length===0?y(!1):y(e.every(i=>n.some(o=>o.value===i.value)))},supersetOf:(t,e,r)=>{let n=r.eval(t,Ye(t));return n.length===0?y(!0):e.length===0?y(!1):y(n.every(i=>e.some(o=>o.value===i.value)))},count:(t,e)=>[{type:p.integer,value:e.length}],distinct:(t,e)=>{let r=[];for(let n of e)r.some(i=>i.value===n.value)||r.push(n);return r},isDistinct:(t,e)=>y(e.length===B.distinct(t,e).length),where:(t,e,r)=>e.filter(n=>j(r.eval(t,[n]))),select:(t,e,r)=>e.flatMap(n=>r.eval({parent:t,variables:{$this:n}},[n])),repeat:Ee,ofType:(t,e,r)=>{let n=Ft(r);return n?e.filter(i=>Qe(i,n)):[]},single:(t,e)=>{if(e.length>1)throw new Error("Expected input length one for single()");return e.length===0?[]:e.slice(0,1)},first:(t,e)=>e.length===0?[]:e.slice(0,1),last:(t,e)=>e.length===0?[]:e.slice(-1,e.length),tail:(t,e)=>e.length===0?[]:e.slice(1,e.length),skip:(t,e,r)=>{let n=r.eval(t,e)[0]?.value;if(typeof n!="number")throw new TypeError("Expected a number for skip(num)");return n>=e.length?[]:n<=0?e:e.slice(n,e.length)},take:(t,e,r)=>{let n=r.eval(t,e)[0]?.value;if(typeof n!="number")throw new TypeError("Expected a number for take(num)");return n<=0?[]:e.slice(0,n)},intersect:(t,e,r)=>{if(!r)return e;let n=r.eval(t,Ye(t)),i=[];for(let o of e)!i.some(s=>s.value===o.value)&&n.some(s=>s.value===o.value)&&i.push(o);return i},exclude:(t,e,r)=>{if(!r)return e;let n=r.eval(t,Ye(t)),i=[];for(let o of e)n.some(s=>s.value===o.value)||i.push(o);return i},union:(t,e,r)=>{if(!r)return e;let n=r.eval(t,Ye(t));return At([...e,...n])},combine:(t,e,r)=>{if(!r)return e;let n=r.eval(t,Ye(t));return[...e,...n]},htmlChecks:(t,e,r)=>[E(!0)],iif:(t,e,r,n,i)=>{let o=r.eval(t,e);if(o.length>1||o.length===1&&typeof o[0].value!="boolean")throw new Error("Expected criterion to evaluate to a Boolean");return j(o)?n.eval(t,e):i?i.eval(t,e):[]},toBoolean:(t,e)=>{if(e.length===0)return[];let[{value:r}]=fe(e,1);if(typeof r=="boolean")return[{type:p.boolean,value:r}];if(typeof r=="number"&&(r===0||r===1))return y(!!r);if(typeof r=="string"){let n=r.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return y(!0);if(["false","f","no","n","0","0.0"].includes(n))return y(!1)}return[]},convertsToBoolean:(t,e)=>e.length===0?[]:y(B.toBoolean(t,e).length===1),toInteger:(t,e)=>{if(e.length===0)return[];let[{value:r}]=fe(e,1);return typeof r=="number"?[{type:p.integer,value:r}]:typeof r=="string"&&/^[+-]?\d+$/.exec(r)?[{type:p.integer,value:Number.parseInt(r,10)}]:typeof r=="boolean"?[{type:p.integer,value:r?1:0}]:[]},convertsToInteger:(t,e)=>e.length===0?[]:y(B.toInteger(t,e).length===1),toDate:(t,e)=>{if(e.length===0)return[];let[{value:r}]=fe(e,1);return typeof r=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(r)?[{type:p.date,value:pt(r)}]:[]},convertsToDate:(t,e)=>e.length===0?[]:y(B.toDate(t,e).length===1),toDateTime:(t,e)=>{if(e.length===0)return[];let[{value:r}]=fe(e,1);return typeof r=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(r)?[{type:p.dateTime,value:pt(r)}]:[]},convertsToDateTime:(t,e)=>e.length===0?[]:y(B.toDateTime(t,e).length===1),toDecimal:(t,e)=>{if(e.length===0)return[];let[{value:r}]=fe(e,1);return typeof r=="number"?[{type:p.decimal,value:r}]:typeof r=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(r)?[{type:p.decimal,value:Number.parseFloat(r)}]:typeof r=="boolean"?[{type:p.decimal,value:r?1:0}]:[]},convertsToDecimal:(t,e)=>e.length===0?[]:y(B.toDecimal(t,e).length===1),toQuantity:(t,e)=>{if(e.length===0)return[];let[{value:r}]=fe(e,1);return L(r)?[{type:p.Quantity,value:r}]:typeof r=="number"?[{type:p.Quantity,value:{value:r,unit:"1"}}]:typeof r=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(r)?[{type:p.Quantity,value:{value:Number.parseFloat(r),unit:"1"}}]:typeof r=="boolean"?[{type:p.Quantity,value:{value:r?1:0,unit:"1"}}]:[]},convertsToQuantity:(t,e)=>e.length===0?[]:y(B.toQuantity(t,e).length===1),toString:(t,e)=>{if(e.length===0)return[];let[{value:r}]=fe(e,1);return r==null?[]:L(r)?[{type:p.string,value:`${r.value} '${r.unit}'`}]:[{type:p.string,value:r.toString()}]},convertsToString:(t,e)=>e.length===0?[]:y(B.toString(t,e).length===1),toTime:(t,e)=>{if(e.length===0)return[];let[{value:r}]=fe(e,1);if(typeof r=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(r);if(n)return[{type:p.time,value:pt("T"+n[1])}]}return[]},convertsToTime:(t,e)=>e.length===0?[]:y(B.toTime(t,e).length===1),indexOf:(t,e,r)=>Y((n,i)=>n.indexOf(i),t,e,r),substring:(t,e,r,n)=>Y((i,o,s)=>{let a=o,u=s?a+s:i.length;return a<0||a>=i.length?void 0:i.substring(a,u)},t,e,r,n),startsWith:(t,e,r)=>Y((n,i)=>n.startsWith(i),t,e,r),endsWith:(t,e,r)=>Y((n,i)=>n.endsWith(i),t,e,r),contains:(t,e,r)=>Y((n,i)=>n.includes(i),t,e,r),upper:(t,e)=>Y(r=>r.toUpperCase(),t,e),lower:(t,e)=>Y(r=>r.toLowerCase(),t,e),replace:(t,e,r,n)=>Y((i,o,s)=>i.replaceAll(o,s),t,e,r,n),matches:(t,e,r)=>Y((n,i)=>!!new RegExp(i).exec(n),t,e,r),replaceMatches:(t,e,r,n)=>Y((i,o,s)=>i.replaceAll(new RegExp(o,"g"),s.replaceAll(/\$\{(\w+)\}/g,"$<$1>")),t,e,r,n),length:(t,e)=>Y(r=>r.length,t,e),toChars:(t,e)=>Y(r=>r?r.split(""):void 0,t,e),encode:Ee,decode:Ee,escape:Ee,unescape:Ee,trim:Ee,split:Ee,join:(t,e,r)=>{let n=r?.eval(t,Ye(t))[0]?.value??"";if(typeof n!="string")throw new TypeError("Separator must be a string.");return[{type:p.string,value:e.map(i=>i.value?.toString()??"").join(n)}]},abs:(t,e)=>pe(Math.abs,t,e),ceiling:(t,e)=>pe(Math.ceil,t,e),exp:(t,e)=>pe(Math.exp,t,e),floor:(t,e)=>pe(Math.floor,t,e),ln:(t,e)=>pe(Math.log,t,e),log:(t,e,r)=>pe((n,i)=>Math.log(n)/Math.log(i),t,e,r),power:(t,e,r)=>pe(Math.pow,t,e,r),round:(t,e,...r)=>pe((n,i=0)=>{if(typeof i!="number"||i<0)throw new Error("Invalid precision provided to round()");let o=Math.pow(10,i);return Math.round(n*o)/o},t,e,...r),sqrt:(t,e)=>pe(Math.sqrt,t,e),truncate:(t,e)=>pe(r=>Math.trunc(r),t,e),children:Ee,descendants:Ee,trace:(t,e,r)=>e,now:()=>[{type:p.dateTime,value:new Date().toISOString()}],timeOfDay:()=>[{type:p.time,value:new Date().toISOString().substring(11)}],today:()=>[{type:p.date,value:new Date().toISOString().substring(0,10)}],between:(t,e,r,n,i)=>{let o=B.toDateTime(t,r.eval(t,e));if(o.length===0)throw new Error("Invalid start date");let s=B.toDateTime(t,n.eval(t,e));if(s.length===0)throw new Error("Invalid end date");let a=i.eval(t,e)[0]?.value;if(a!=="years"&&a!=="months"&&a!=="days")throw new Error("Invalid units");let u=Mt(o[0].value,s[0].value);return[{type:p.Quantity,value:{value:u[a],unit:a}}]},is:(t,e,r)=>{let n=Ft(r);return n?e.map(i=>({type:p.boolean,value:Qe(i,n)})):[]},not:(t,e)=>B.toBoolean(t,e).map(r=>({type:p.boolean,value:!r.value})),resolve:(t,e)=>e.map(r=>{let n=r.value,i;if(typeof n=="string")i=n;else if(typeof n=="object"){let o=n;if(o.resource)return E(o.resource);o.reference?i=o.reference:o.type&&o.identifier&&(i=`${o.type}?identifier=${o.identifier.system}|${o.identifier.value}`)}if(i?.includes("?")){let[o]=i.split("?");return{type:o,value:{resourceType:o}}}if(i?.includes("/")){let[o,s]=i.split("/");return{type:o,value:{resourceType:o,id:s}}}return{type:p.BackboneElement,value:void 0}}).filter(r=>!!r.value),as:(t,e,r)=>{let n=Ft(r);if(!n)throw new Error(`Expected a valid type identifier as the right operand of 'as', but found ${r.toString()}`);let i=N(e);return i&&Qe(i,n)?[i]:[]},type:(t,e)=>e.map(({value:r})=>typeof r=="boolean"?{type:p.BackboneElement,value:{namespace:"System",name:"Boolean"}}:typeof r=="number"?{type:p.BackboneElement,value:{namespace:"System",name:"Integer"}}:D(r)?{type:p.BackboneElement,value:{namespace:"FHIR",name:r.resourceType}}:{type:p.BackboneElement,value:null}),conformsTo:(t,e,r)=>{let n=r.eval(t,e)[0].value;if(!n.startsWith("http://hl7.org/fhir/StructureDefinition/"))throw new Error("Expected a StructureDefinition URL");let i=n.replace("http://hl7.org/fhir/StructureDefinition/","");return e.map(o=>({type:p.boolean,value:o.value?.resourceType===i}))},getResourceKey:(t,e)=>{let r=e[0]?.value;return r?.id?[{type:p.id,value:r.id}]:[]},getReferenceKey:(t,e,r)=>{let n=e[0]?.value;if(!n?.reference)return[];let i="";return r instanceof F&&(i=r.name),i&&!n.reference.startsWith(i+"/")?[]:[{type:p.id,value:K(n)}]},extension:(t,e,r)=>{let n=r.eval(t,e)[0].value,i=e?.[0]?.value;if(i){let o=ae(i,n);if(o)return[{type:p.Extension,value:o}]}return[]}};function Y(t,e,r,...n){if(r.length===0)return[];let[{value:i}]=fe(r,1);if(typeof i!="string")throw new TypeError("String function cannot be called with non-string");let o=n.map(a=>a?.eval(e,r)[0]?.value),s=t(i,...o);return s===void 0?[]:Array.isArray(s)?s.map(E):[E(s)]}function pe(t,e,r,...n){if(r.length===0)return[];let[{value:i}]=fe(r,1),o=L(i),s=o?i.value:i;if(typeof s!="number")throw new TypeError("Math function cannot be called with non-number");let a=t(s,...n.map(d=>d.eval(e,r)[0]?.value)),u=o?p.Quantity:r[0].type,l=o?{...i,value:a}:a;return[{type:u,value:l}]}function fe(t,e){if(t.length!==e)throw new Error(`Expected ${e} arguments`);for(let r of t)if(r==null)throw new Error("Expected non-null argument");return t}function Ye(t){let e=t;for(;e.parent?.variables.$this;)e=e.parent;return[e.variables.$this]}var Re=class{constructor(e,r){c(this,"original");c(this,"child");this.original=e,this.child=r}eval(e,r){try{if(r.length>0){let n=[];for(let i of r)n.push(this.child.eval({parent:e,variables:{$this:i}},[i]));return n.flat()}else return this.child.eval(e,[])}catch(n){throw new Error(`FhirPathError on "${this.original}": ${n}`,{cause:n})}}toString(){return this.child.toString()}},G=class{constructor(e){c(this,"value");this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},F=class{constructor(e){c(this,"name");this.name=e}eval(e,r){if(this.name==="$this")return r;let n=this.getVariable(e);if(n)return[n];if(this.name.startsWith("%"))throw new Error(`Undefined variable ${this.name}`);return r.flatMap(i=>this.evalValue(i)).filter(i=>i?.value!==void 0)}getVariable(e){let r=e.variables[this.name];if(r!==void 0)return r;if(e.parent)return this.getVariable(e.parent)}evalValue(e){let r=e.value;if(!(!r||typeof r!="object"))return D(r,this.name)?("path"in e||(e.path=r.resourceType),e):Nr(e,this.name)}toString(){return this.name}},Ut=class{eval(){return[]}toString(){return"{}"}},Bt=class extends St{constructor(r,n,i){super(r,n);c(this,"impl");this.impl=i}eval(r,n){return this.impl(this.child.eval(r,n))}toString(){return this.operator+this.child.toString()}},Ce=class extends w{constructor(e,r){super("as",e,r)}eval(e,r){return B.as(e,this.left.eval(e,r),this.right)}},q=class extends w{constructor(r,n,i,o){super(r,n,i);c(this,"impl");this.impl=o}eval(r,n){let i=this.left.eval(r,n),o=this.right.eval(r,n);if(i.length<1||o.length<1)return[];let s=N(i)?.value,a=N(o)?.value,u=L(s)?s.value:s,l=L(a)?a.value:a,d=this.impl(u,l);return typeof d=="boolean"?y(d):L(s)?[{type:p.Quantity,value:{...s,value:d}}]:[E(d)]}},hs=Object.freeze({type:"string",value:""}),qt=class extends w{constructor(e,r){super("&",e,r)}eval(e,r){let n=N(this.left.eval(e,r))??hs,i=N(this.right.eval(e,r))??hs;if(typeof n.value!="string")throw new Error(`Expected string operand for &, but got ${n.type}`);if(typeof i.value!="string")throw new Error(`Expected string operand for &, but got ${i.type}`);return[{type:p.string,value:n.value+i.value}]}},Wt=class extends w{constructor(e,r){super("contains",e,r)}eval(e,r){let n=this.left.eval(e,r),i=this.right.eval(e,r);return y(n.some(o=>o.value===i[0].value))}},$t=class extends w{constructor(e,r){super("in",e,r)}eval(e,r){let n=N(this.left.eval(e,r)),i=this.right.eval(e,r);return n?y(i.some(o=>ct(n,o)[0].value)):[]}},ne=class extends w{constructor(e,r){super(".",e,r)}eval(e,r){return this.right.eval(e,this.left.eval(e,r))}toString(){return`${this.left.toString()}.${this.right.toString()}`}},Ve=class extends w{constructor(e,r){super("|",e,r)}eval(e,r){let n=this.left.eval(e,r),i=this.right.eval(e,r);return At([...n,...i])}},jt=class extends w{constructor(e,r){super("=",e,r)}eval(e,r){let n=this.left.eval(e,r),i=this.right.eval(e,r);return ei(n,i)}},Ht=class extends w{constructor(e,r){super("!=",e,r)}eval(e,r){let n=this.left.eval(e,r),i=this.right.eval(e,r);return ti(n,i)}},Gt=class extends w{constructor(e,r){super("~",e,r)}eval(e,r){let n=this.left.eval(e,r),i=this.right.eval(e,r);return qr(n,i)}},Qt=class extends w{constructor(e,r){super("!~",e,r)}eval(e,r){let n=this.left.eval(e,r),i=this.right.eval(e,r);return Zn(qr(n,i))}},_e=class extends w{constructor(e,r){super("is",e,r)}eval(e,r){let n=this.left.eval(e,r);if(n.length!==1)return[];let i=Ft(this.right);return i?y(Qe(n[0],i)):[]}},zt=class extends w{constructor(e,r){super("and",e,r)}eval(e,r){let n=N(this.left.eval(e,r),"boolean"),i=N(this.right.eval(e,r),"boolean");return n?.value===!0&&i?.value===!0?y(!0):n?.value===!1||i?.value===!1?y(!1):[]}},Jt=class extends w{constructor(e,r){super("or",e,r)}eval(e,r){let n=N(this.left.eval(e,r),"boolean"),i=N(this.right.eval(e,r),"boolean");return n?.value===!1&&i?.value===!1?y(!1):n?.value||i?.value?y(!0):[]}},Kt=class extends w{constructor(e,r){super("xor",e,r)}eval(e,r){let n=N(this.left.eval(e,r),"boolean"),i=N(this.right.eval(e,r),"boolean");return!n||!i?[]:y(n.value!==i.value)}},Yt=class extends w{constructor(e,r){super("implies",e,r)}eval(e,r){let n=N(this.left.eval(e,r),"boolean"),i=N(this.right.eval(e,r),"boolean");return i?.value===!0||n?.value===!1?y(!0):!n||!i?[]:y(!1)}},ie=class{constructor(e,r){c(this,"name");c(this,"args");this.name=e,this.args=r}eval(e,r){let n=B[this.name];if(!n)throw new Error("Unrecognized function: "+this.name);return n(e,r,...this.args)}toString(){return`${this.name}(${this.args.map(e=>e.toString()).join(", ")})`}},Le=class{constructor(e,r){c(this,"left");c(this,"expr");this.left=e,this.expr=r}eval(e,r){let n=this.expr.eval(e,r);if(n.length!==1)return[];let i=n[0].value;if(typeof i!="number")throw new Error("Invalid indexer expression: should return integer}");let o=this.left.eval(e,r);return i in o?[o[i]]:[]}toString(){return`${this.left.toString()}[${this.expr.toString()}]`}};var gl=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],yl=/^\d{4}-\d{2}[\dT:.+\-Z]*(?=[\s)\]]|$)/,xl={"'":"'",'"':'"',"`":"`",r:"\r",n:`
`,t:" ",f:"\f","\\":"\\"},Pe=class{constructor(e,r,n,i){c(this,"str");c(this,"keywords");c(this,"operators");c(this,"dateTimeLiterals");c(this,"symbolRegex");c(this,"result",[]);c(this,"pos",{index:0,line:1,column:0});c(this,"markStack",[]);this.str=e,this.keywords=r,this.operators=n,this.dateTimeLiterals=!!i?.dateTimeLiterals,this.symbolRegex=i?.symbolRegex??/[$\w%]/}tokenize(){for(;this.pos.index<this.str.length;){let e=this.consumeToken();e&&this.result.push(e)}return this.result}prevToken(){return this.result.slice(-1)[0]}peekToken(){this.mark();let e=this.consumeToken();return this.reset(),e}consumeToken(){this.consumeWhitespace();let e=this.curr();if(!e)return;this.mark();let r=this.peek();return e==="/"&&r==="*"?this.consumeMultiLineComment():e==="/"&&r==="/"?this.consumeSingleLineComment():e==="'"||e==='"'||e==="`"?this.consumeString(e):e==="@"?this.consumeDateTime():/\d/.exec(e)?this.consumeNumber():/\w/.exec(e)?this.consumeSymbol():(e==="$"||e==="%")&&/\w/.exec(r)?this.consumeSymbol():(e==="$"||e==="%")&&(r==="'"||r==='"'||r==="`")?this.consumeQuotedSymbol(r):this.consumeOperator()}consumeWhitespace(){this.consumeWhile(()=>/\s/.exec(this.curr()))}consumeMultiLineComment(){let e=this.pos.index;return this.consumeWhile(()=>this.curr()!=="*"||this.peek()!=="/"),this.advance(),this.advance(),this.buildToken("Comment",this.str.substring(e,this.pos.index))}consumeSingleLineComment(){return this.buildToken("Comment",this.consumeWhile(()=>this.curr()!==`
`))}consumeString(e){this.advance();let r="",n;for(;n=this.consumeChar(e);)r+=n;let i=this.buildToken(e==="`"?"Symbol":"String",r);return this.advance(),i}consumeChar(e){let r=this.curr();if(r==="\\"){this.advance();let n=this.curr(),i=xl[n];if(i!==void 0)return this.advance(),i;if(n==="u"){this.advance();let o=/^[0-9a-fA-F]{4}$/.exec(this.str.substring(this.pos.index,this.pos.index+4))?.[0];return o?(this.advance(),this.advance(),this.advance(),this.advance(),String.fromCodePoint(Number.parseInt(o,16))):"u"}return this.consumeChar(e)}return r===e||!r?"":(this.advance(),r)}consumeQuotedSymbol(e){this.mark();let r=this.pos.index;this.advance(),this.consumeString(e);let n=this.str.substring(r,this.pos.index);return this.buildToken("Symbol",n)}consumeDateTime(){this.advance();let e=this.pos.index;this.consumeWhile(()=>/[\d-]/.exec(this.curr()));let r=!1,n=!1;if(this.curr()==="T"&&(r=!0,this.advance(),this.consumeWhile(()=>/[\d:]/.exec(this.curr())),this.curr()==="."&&/\d/.exec(this.peek())&&(this.advance(),this.consumeWhile(()=>/\d/.exec(this.curr()))),this.curr()==="Z"?(n=!0,this.advance()):(this.curr()==="+"||this.curr()==="-")&&(n=!0,this.advance(),this.consumeWhile(()=>/[\d:]/.exec(this.curr())))),this.pos.index===e)throw new Error("Invalid DateTime literal");let i=this.str.substring(e,this.pos.index);return i.endsWith("T")?i=i.substring(0,i.length-1):!i.startsWith("T")&&r&&!n&&(i+="Z"),this.buildToken("DateTime",i)}consumeNumber(){let e=this.pos.index,r="Number";this.consumeWhile(()=>/\d/.exec(this.curr())),this.curr()==="."&&/\d/.exec(this.peek())&&(this.advance(),this.consumeWhile(()=>/\d/.exec(this.curr())));let n=this.curr();if(n==="-"&&this.dateTimeLiterals)return yl.test(this.str.substring(e))?(this.pos.index=e-1,this.consumeDateTime()):this.consumeUnquotedString(e);if(n===" ")vl(this.peekToken())&&(r="Quantity",this.consumeToken());else if(n&&/[a-zA-Z_$]/.exec(n))return this.consumeUnquotedString(e);return this.buildToken(r,this.str.substring(e,this.pos.index))}consumeUnquotedString(e){return this.pos.index=e,this.buildToken("String",this.consumeWhile(()=>this.symbolRegex.exec(this.curr())))}consumeSymbol(){let e=this.consumeWhile(()=>this.symbolRegex.exec(this.curr()));return this.prevToken()?.value!=="."&&this.keywords.includes(e)?this.buildToken(e,e):this.buildToken("Symbol",e)}consumeOperator(){let e=this.curr(),r=this.peek(),n=e+r;return this.operators.includes(n)?(this.advance(),this.advance(),this.buildToken(n,n)):(this.advance(),this.buildToken(e,e))}consumeWhile(e){let r=this.pos.index;for(;this.pos.index<this.str.length&&e();)this.advance();return this.str.substring(r,this.pos.index)}curr(){return this.str[this.pos.index]}peek(){return this.str[this.pos.index+1]??""}mark(){this.markStack.push({...this.pos})}reset(){let e=this.markStack.pop();if(!e)throw new Error("No mark to reset to");this.pos.index=e.index,this.pos.line=e.line,this.pos.column=e.column}advance(){this.pos.index++,this.curr()===`
`?(this.pos.line++,this.pos.column=0):this.pos.column++}buildToken(e,r){let n=this.markStack.pop();if(!n)throw new Error("No mark for token");return{id:e,value:r,...n}}};function vl(t){return!!(t&&(t.id==="String"||t.id==="Symbol"&&gl.includes(t.value)))}var Xt=["true","false"],Zt=["!=","!~","<=",">=","{}","->"];function gs(t){return new Pe(t,Xt,Zt).tokenize()}var S={FunctionCall:0,Dot:1,Indexer:2,UnaryAdd:3,UnarySubtract:3,Multiply:4,Divide:4,IntegerDivide:4,Modulo:4,Add:5,Subtract:5,Ampersand:5,Is:6,As:6,Union:7,GreaterThan:8,GreaterThanOrEquals:8,LessThan:8,LessThanOrEquals:8,Equals:9,Equivalent:9,NotEquals:9,NotEquivalent:9,In:10,Contains:10,And:11,Xor:12,Or:12,Implies:13,Arrow:100,Semicolon:200},Tl={parse(t){let e=t.consumeAndParse();if(!t.match(")"))throw new Error("Parse error: expected `)` got `"+t.peek()?.value+"`");return e}},Sl={parse(t,e){let r=t.consumeAndParse();if(!t.match("]"))throw new Error("Parse error: expected `]`");return new Le(e,r)},precedence:S.Indexer},bl={parse(t,e){if(!(e instanceof F))throw new Error("Unexpected parentheses");let r=[];for(;!t.match(")");)r.push(t.consumeAndParse()),t.match(",");return new ie(e.name,r)},precedence:S.FunctionCall};function El(t){let e=t.split(" "),r=Number.parseFloat(e[0]),n=e[1];return n?.startsWith("'")&&n.endsWith("'")?n=n.substring(1,n.length-1):n="{"+n+"}",{value:r,unit:n}}function ft(){return new bt().registerPrefix("String",{parse:(t,e)=>new G({type:p.string,value:e.value})}).registerPrefix("DateTime",{parse:(t,e)=>new G({type:p.dateTime,value:pt(e.value)})}).registerPrefix("Quantity",{parse:(t,e)=>new G({type:p.Quantity,value:El(e.value)})}).registerPrefix("Number",{parse:(t,e)=>new G({type:e.value.includes(".")?p.decimal:p.integer,value:Number.parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new G({type:p.boolean,value:!0})}).registerPrefix("false",{parse:()=>new G({type:p.boolean,value:!1})}).registerPrefix("Symbol",{parse:(t,e)=>new F(e.value)}).registerPrefix("{}",{parse:()=>new Ut}).registerPrefix("(",Tl).registerInfix("[",Sl).registerInfix("(",bl).prefix("+",S.UnaryAdd,(t,e)=>new Bt("+",e,r=>r)).prefix("-",S.UnarySubtract,(t,e)=>new q("-",e,e,(r,n)=>-n)).infixLeft(".",S.Dot,(t,e,r)=>new ne(t,r)).infixLeft("/",S.Divide,(t,e,r)=>new q("/",t,r,(n,i)=>n/i)).infixLeft("*",S.Multiply,(t,e,r)=>new q("*",t,r,(n,i)=>n*i)).infixLeft("+",S.Add,(t,e,r)=>new q("+",t,r,(n,i)=>n+i)).infixLeft("-",S.Subtract,(t,e,r)=>new q("-",t,r,(n,i)=>n-i)).infixLeft("|",S.Union,(t,e,r)=>new Ve(t,r)).infixLeft("=",S.Equals,(t,e,r)=>new jt(t,r)).infixLeft("!=",S.NotEquals,(t,e,r)=>new Ht(t,r)).infixLeft("~",S.Equivalent,(t,e,r)=>new Gt(t,r)).infixLeft("!~",S.NotEquivalent,(t,e,r)=>new Qt(t,r)).infixLeft("<",S.LessThan,(t,e,r)=>new q("<",t,r,(n,i)=>n<i)).infixLeft("<=",S.LessThanOrEquals,(t,e,r)=>new q("<=",t,r,(n,i)=>n<=i)).infixLeft(">",S.GreaterThan,(t,e,r)=>new q(">",t,r,(n,i)=>n>i)).infixLeft(">=",S.GreaterThanOrEquals,(t,e,r)=>new q(">=",t,r,(n,i)=>n>=i)).infixLeft("&",S.Ampersand,(t,e,r)=>new qt(t,r)).infixLeft("and",S.And,(t,e,r)=>new zt(t,r)).infixLeft("as",S.As,(t,e,r)=>new Ce(t,r)).infixLeft("contains",S.Contains,(t,e,r)=>new Wt(t,r)).infixLeft("div",S.Divide,(t,e,r)=>new q("div",t,r,(n,i)=>Math.trunc(n/i))).infixLeft("in",S.In,(t,e,r)=>new $t(t,r)).infixLeft("is",S.Is,(t,e,r)=>new _e(t,r)).infixLeft("mod",S.Modulo,(t,e,r)=>new q("mod",t,r,(n,i)=>n%i)).infixLeft("or",S.Or,(t,e,r)=>new Jt(t,r)).infixLeft("xor",S.Xor,(t,e,r)=>new Kt(t,r)).infixLeft("implies",S.Implies,(t,e,r)=>new Yt(t,r))}var Rl=ft();function er(t){return new Re(t,Rl.construct(gs(t)).consumeAndParse())}function Cl(t,e,r={},n=void 0){let i=Array.isArray(e)?e:[e];for(let o=0;o<i.length;o++){let s=i[o];typeof s=="object"&&"type"in s&&"value"in s||(i[o]=E(i[o]))}return k(t,i,r,n).map(o=>o.value)}function k(t,e,r={},n=void 0){let i;if(typeof t=="string"){let o=n?.get(t);i=o??er(t),n&&!o&&n.set(t,i)}else i=t;return i.eval({variables:r},e).map(o=>{let s={type:o.type,value:o.value?.valueOf()};return"path"in o&&(s.path=o.path),s})}function Pl(t){let e=[];for(let r of t)r.type===p.Range?e.push([r.value?.low?.value,r.value?.high?.value]):typeof r.value=="number"&&e.push([r.value,r.value]);return e}function vi(t){let e=[];for(let r of t){let n=Ot(r.value);n&&e.push(n)}return e}function Ti(t){let e=new Set;for(let r of t){let n=mi(r);n&&e.add(n)}return Array.from(e)}function Si(t){let e=new Set;for(let r of t){let{value:n}=r;n&&(de(n)?e.add(n):J(n)?e.add(n.reference):ut(n)?e.add(I(n)):typeof n.identifier=="object"&&e.add(`identifier:${n.identifier.system}|${n.identifier.value}`))}return Array.from(e)}function wl(t){let e=[];for(let r of t){let{value:n}=r;typeof n=="number"?e.push({value:n}):L(n)&&e.push(n)}return e}function Al(t){let e=new Set;for(let r of t)de(r.value)&&e.add(r.value);return Array.from(e)}function bi(t,e={}){let r=[];for(let n of t)Ol(e,r,n);return r}function Ol(t,e,r){let{type:n,value:i}=r;switch(n){case p.Identifier:Il(e,t,i);break;case p.CodeableConcept:kl(e,t,i);break;case p.Coding:ys(e,t,i);break;case p.ContactPoint:Ml(e,t,i);break;default:Xe(e,t,void 0,i?.toString())}}function Il(t,e,r){r?.type?.text&&Xe(t,e,e.textSearchSystem,r.type.text),Xe(t,e,r?.system,r?.value)}function kl(t,e,r){r?.text&&Xe(t,e,e.textSearchSystem,r.text);for(let n of r?.coding??v)ys(t,e,n)}function ys(t,e,r){r&&(r.display&&Xe(t,e,e.textSearchSystem,r.display),Xe(t,e,r.system,r.code))}function Ml(t,e,r){r&&Xe(t,e,r.system,r.value?.toLocaleLowerCase())}function Xe(t,e,r,n){(r||n)&&!t.some(i=>i.system===r&&i.value===n)&&t.push({system:r,value:n&&e.caseInsensitive?n.toLocaleLowerCase():n})}var Dl=20,Vl=1e3,g={EQUALS:"eq",NOT_EQUALS:"ne",GREATER_THAN:"gt",LESS_THAN:"lt",GREATER_THAN_OR_EQUALS:"ge",LESS_THAN_OR_EQUALS:"le",STARTS_AFTER:"sa",ENDS_BEFORE:"eb",APPROXIMATELY:"ap",CONTAINS:"contains",STARTS_WITH:"sw",EXACT:"exact",TEXT:"text",NOT:"not",ABOVE:"above",BELOW:"below",IN:"in",NOT_IN:"not-in",OF_TYPE:"of-type",MISSING:"missing",PRESENT:"present",IDENTIFIER:"identifier",ITERATE:"iterate"},Ri={contains:g.CONTAINS,exact:g.EXACT,above:g.ABOVE,below:g.BELOW,text:g.TEXT,not:g.NOT,in:g.IN,"not-in":g.NOT_IN,"of-type":g.OF_TYPE,missing:g.MISSING,identifier:g.IDENTIFIER,iterate:g.ITERATE},Ci={eq:g.EQUALS,ne:g.NOT_EQUALS,lt:g.LESS_THAN,le:g.LESS_THAN_OR_EQUALS,gt:g.GREATER_THAN,ge:g.GREATER_THAN_OR_EQUALS,sa:g.STARTS_AFTER,eb:g.ENDS_BEFORE,ap:g.APPROXIMATELY,sw:g.STARTS_WITH};function mt(t,e){if(!t)throw new Error("Invalid search URL");let r="",n;if(typeof t=="string")if(t.includes("?")){let[s,a]=t.split("?");r=s,n=new URLSearchParams(a)}else r=t;else typeof t=="object"&&(r=t.pathname,n=t.searchParams);let i;r.includes("/")?i=r.split("/").filter(Boolean).pop():i=r;let o=[];if(n)for(let s of n)o.push(s);if(e)for(let[s,a]of Object.entries(e))if(Array.isArray(a))for(let u of a)o.push([s,u]);else o.push([s,a??""]);return _l(i,o)}function _l(t,e){let r={resourceType:t},n=new Set;for(let[i,o]of e)Ll(r,n,i,o);return r}function Ei(t,e,r){let n=`${r.code}\0${r.operator}\0${r.value}`;e.has(n)||(e.add(n),t.filters=ve(t.filters,r))}function Ll(t,e,r,n){let i,o,s=r.indexOf(":");if(s>=0?(i=r.substring(0,s),o=r.substring(s+1)):(i=r,o=""),i!=="_"){if(i==="_has"||r.includes(".")){Ei(t,e,{code:r,operator:g.EQUALS,value:n});return}switch(i){case"_sort":Nl(t,n);break;case"_cursor":t.cursor=n;break;case"_count":t.count=Number.parseInt(n,10);break;case"_offset":t.offset=Number.parseInt(n,10);break;case"_total":t.total=n;break;case"_summary":n==="count"?(t.total="accurate",t.count=0):(n==="true"||n==="data"||n==="text")&&(t.summary=n);break;case"_include":{let a=xs(n);o==="iterate"&&(a.modifier=g.ITERATE),t.include=ve(t.include,a);break}case"_revinclude":{let a=xs(n);o==="iterate"&&(a.modifier=g.ITERATE),t.revInclude=ve(t.revInclude,a);break}case"_fields":case"_elements":t.fields=n.split(",");break;case"_type":t.types=n.split(",");break;case"_format":t.format=n;break;case"_pretty":t.pretty=n==="true";break;default:{let a=H.types[t.resourceType]?.searchParams?.[i];a?Ei(t,e,Ss(a,g.EQUALS,o,n)):Ei(t,e,Ul(i,o,n))}}}}function Nl(t,e){for(let r of e.split(",")){let n,i=!1;r.startsWith("-")?(n=r.substring(1),i=!0):n=r,t.sortRules||(t.sortRules=[]),t.sortRules.push({code:n,descending:i})}}var Fl=[g.MISSING,g.PRESENT];function Ss(t,e,r,n){if(Fl.includes(r||e))return{code:t.code,operator:r||e,value:n};switch(t.type){case"number":case"date":case"quantity":{let{operator:i,value:o}=Bl(n,r||g.EQUALS);if(!vs(t,o))throw new m(A(`Invalid format for ${t.type} search parameter: ${o}`));return{code:t.code,operator:i,value:o}}case"reference":case"string":case"token":case"uri":{if(!vs(t,n))throw new m(A(`Invalid format for ${t.type} search parameter: ${n}`));return{code:t.code,operator:ql(r)??e,value:n}}default:throw new Error("Unrecognized search parameter type: "+t.type)}}function Ul(t,e,r){let n=g.EQUALS;if(e)n=e;else if(r.length>=2){let i=r.substring(0,2);i in Ci&&(r.length===2||r.at(2)?.match(/\d/))&&(n=i,r=r.substring(i.length))}return{code:t,operator:n,value:r}}function Bl(t,e){let r=t.substring(0,2),n=Ci[r];return n?{operator:n,value:t.substring(2)}:{operator:e,value:t}}function ql(t){return Ri[t]}function xs(t){let e=t.split(":");if(e.includes("*"))throw new m(A("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new m(A(`Invalid include value '${t}': must be of the form ResourceType:search-parameter`));if(e.length===2)return{resourceType:e[0],searchParam:e[1]};if(e.length===3)return{resourceType:e[0],searchParam:e[1],targetType:e[2]};throw new m(A(`Invalid include value '${t}'`))}function vs(t,e){return t.type==="date"?Ge(e):!0}var Wl=/{{([^{}]+)}}/g;function $l(t,e,r=[]){return t=t.replaceAll(Wl,(n,i)=>{let o=k(i,r,e);return o.length!==1?"":xi(o[0])}),mt(t)}function jl(t){let e=[];t.fields&&e.push("_fields="+t.fields.join(","));for(let r of t.filters??v)e.push(Hl(r));t.sortRules&&t.sortRules.length>0&&e.push(Gl(t.sortRules)),t.cursor!==void 0&&e.push("_cursor="+encodeURIComponent(t.cursor)),t.offset!==void 0&&t.offset!==0&&e.push("_offset="+t.offset),t.count!==void 0&&e.push("_count="+t.count),t.total!==void 0&&e.push("_total="+t.total),t.types&&t.types.length>0&&e.push("_type="+t.types.join(","));for(let r of t.include??v)e.push(Ts("_include",r));for(let r of t.revInclude??v)e.push(Ts("_revinclude",r));return e.length===0?"":(_t(e),"?"+e.join("&"))}function Hl(t){let e=t.operator in Ri?":"+t.operator:"",r=t.operator!==g.EQUALS&&t.operator in Ci?t.operator:"";return`${t.code}${e}=${r}${encodeURIComponent(t.value)}`}function Gl(t){return"_sort="+t.map(e=>e.descending?"-"+e.code:e.code).join(",")}function Ts(t,e){return t+(e.modifier?":"+e.modifier:"")+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function ht(t){let e=[],r="",n=!1;for(let i of t)n?(r+=i,n=!1):i==="\\"?n=!0:i===","?(e.push(r),r=""):r+=i;return e.push(r),e}function Ql(t,e){return A(`Invalid modifier :${t} for ${e}`)}function zl(t,e){return t in Ri?Ql(t,e):A(`Invalid operator ${t} for ${e}`)}function Jl(t){return t.types??[t.resourceType]}function tr(t,e){if(e.resourceType!==t.resourceType)return!1;for(let r of e.filters??v)if(!Yl(t,e,r))return!1;return!0}var Kl=new ee(1e3);function Yl(t,e,r){let n=H.types[e.resourceType]?.searchParams?.[r.code];if(!n)return!1;let i=k(n.expression,[E(t)],void 0,Kl);if(r.operator===g.MISSING||r.operator===g.PRESENT)return Xl(i,r);switch(n.type){case"reference":return Zl(n,i,r);case"string":case"uri":return rd(i,r);case"token":return ed(i,r);case"date":return id(i,r);default:return!1}}function Xl(t,e){let r=t.length>0;return(e.operator===g.MISSING&&e.value==="false"||e.operator===g.PRESENT&&e.value==="true")===r}function Zl(t,e,r){let n=Jr(r.operator);if(r.value===""&&e.length===0)return r.operator===g.EQUALS;let i=Si(e);for(let o of ht(r.value)){let s=!1;if(o.includes("/")?s=i.includes(o):(t.target?.length===1||r.code==="_compartment")&&(s=i.some(a=>a?.endsWith("/"+o))),s)return!n}return n}function ed(t,e){let r=bi(t),n=ht(e.value),i=Jr(e.operator);for(let o of r)for(let s of n)if(td(o,s))return!i;return i}function td(t,e){if(e.includes("|")){let[r,n]=e.split("|").map(i=>i.toLowerCase());return!r&&!n?!1:r?t.system?.toLowerCase()===r&&(!n||t.value?.toLowerCase()===n):!t.system&&t.value?.toLowerCase()===n}return t.value?.toLowerCase()===e.toLowerCase()}function rd(t,e){let r=Ti(t),n=ht(e.value),i=Jr(e.operator);for(let o of r)for(let s of n)if(nd(o,s))return!i;return i}function nd(t,e){return t.toLowerCase().includes(e.toLowerCase())}function id(t,e){let r=vi(t),n=ht(e.value),i=Jr(e.operator);for(let o of r)for(let s of n)if(od(o,e.operator,s))return!i;return i}function od(t,e,r){if(!t)return!1;let n=Ot(r);if(!n)return!1;let i=t.start??"0000",o=t.end??"9999",s=n.start,a=n.end;switch(e){case g.APPROXIMATELY:case g.EQUALS:case g.NOT_EQUALS:return i<a&&o>s;case g.LESS_THAN:return i<s;case g.GREATER_THAN:return o>a;case g.LESS_THAN_OR_EQUALS:return i<=a;case g.GREATER_THAN_OR_EQUALS:return o>=s;case g.STARTS_AFTER:return i>a;case g.ENDS_BEFORE:return o<s;default:return!1}}function Jr(t){return t===g.NOT_EQUALS||t===g.NOT}var sd={resourceType:"*"},bs=["DomainConfiguration","JsonWebKey","Login"],Es=["Package","PackageRelease","PackageInstallation","Project","ProjectMembership","User","UserSecurityRequest"],Ne={READ:"read",VREAD:"vread",UPDATE:"update",DELETE:"delete",HISTORY:"history",CREATE:"create",SEARCH:"search"},Rs=[Ne.READ,Ne.VREAD,Ne.HISTORY,Ne.SEARCH];function ad(t,e){return Pi(t,Ne.SEARCH,e)}function cd(t,e){return bs.includes(e)?!1:Pi(t,Ne.UPDATE,e)}function Pi(t,e,r){return!!t.resource?.some(n=>Ps(n,r,e))}function ud(t,e){return!!Cs(e,Ne.UPDATE,t)}function Cs(t,e,r){return r?r.resource?.find(n=>ld(t,e,n)):sd}function ld(t,e,r){let n=t.resourceType;return Ps(r,n,e)?n==="Binary"?!0:!(r.compartment&&!t.meta?.compartment?.some(i=>i.reference===r.compartment?.reference)||r.criteria&&!tr(t,mt(r.criteria))):!1}function Ps(t,e,r){return t.resourceType!==e&&(t.resourceType!=="*"||Es.includes(e))?!1:t.interaction?t.interaction.includes(r):!t.readonly||Rs.includes(r)}var dd={FIRST:"first",APPLICATION:"application"};function X(){return typeof window<"u"}function pd(){return typeof Buffer<"u"}function fd(){return typeof window<"u"?window:void 0}function Kr(){return typeof Buffer<"u"?Buffer:void 0}var me={assign(t){X()&&globalThis.location.assign(t)},reload(){X()&&globalThis.location.reload()},getSearch(){return X()?globalThis.location.search:""},getPathname(){return X()?globalThis.location.pathname:""},getLocation(){return X()?globalThis.location.toString():""},getOrigin(){return X()?globalThis.location.protocol+"//"+globalThis.location.host+"/":""}};function ws(t){if(X()){let r=window.atob(t),n=Uint8Array.from(r,i=>i.codePointAt(0));return new window.TextDecoder().decode(n)}let e=Kr();if(e)return e.from(t,"base64").toString("utf-8");throw new Error("Unable to decode base64")}function rr(t){if(X()){let r=new window.TextEncoder().encode(t),n=String.fromCodePoint.apply(null,r);return window.btoa(n)}let e=Kr();if(e)return e.from(t,"utf8").toString("base64");throw new Error("Unable to encode base64")}function wi(t){return rr(t).replaceAll("+","-").replaceAll("/","_").replace(/[=]{1,2}$/,"")}function nr(t){t=t.padEnd(t.length+(4-t.length%4)%4,"=");let e=t.replaceAll("-","+").replaceAll("_","/");return ws(e)}function Yr(){let t=new Uint32Array(28);return crypto.getRandomValues(t),ai(t.buffer)}async function Ai(t){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(t))}function oe(){return typeof crypto<"u"&&"randomUUID"in crypto?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replaceAll(/[xy]/g,t=>{let e=Math.trunc(Math.random()*16);return(t==="x"?e:e&3|8).toString(16)})}function As(t){let e={};t=le(t);for(let i of t.entry??v){let o=i.resource;if(!o)continue;o.meta!==void 0&&(delete o.meta.author,delete o.meta.compartment,delete o.meta.lastUpdated,delete o.meta.project,delete o.meta.versionId,Object.keys(o.meta).length===0&&delete o.meta);let s=o?.id;if(s)e[s]=oe(),i.fullUrl="urn:uuid:"+e[s],delete i.resource?.id;else if(i.fullUrl?.startsWith("resource:")){let a=i.fullUrl.slice(9);e[a]=oe(),i.fullUrl="urn:uuid:"+e[a]}}let r=t.entry,n=JSON.stringify({resourceType:"Bundle",type:"transaction",entry:r?.map(i=>({fullUrl:i.fullUrl,request:{method:"POST",url:i.resource?.resourceType},resource:i.resource}))},(i,o)=>md(i,o,e),2);return Os(JSON.parse(n))}function md(t,e,r){if((t==="reference"||t==="url")&&typeof e=="string"){let n;if(e.includes("/")?n=e.split("/")[1]:e.startsWith("urn:uuid:")||e.startsWith("resource:")?n=e.slice(9):e.startsWith("#")&&(n=e.slice(1)),n){let i=r[n];if(i)return"urn:uuid:"+i}}return e}function Os(t){let e=gd(t),{sorted:r,cycles:n}=hd(e),i={},o=[];for(let a of t.entry??v)a.fullUrl?i[a.fullUrl]=a:o.push(a);let s=r.map(a=>i[a]);for(let a of n)for(let u of a){let l=i[u],d={...l,request:{...l.request,method:"PUT"}};s.push(d)}return s.push(...o),{...t,entry:s}}var gt={NotVisited:"NotVisited",Visiting:"Visiting",Visited:"Visited"};function hd(t){let e=[],r={},n=[];for(let o of Object.keys(t))r[o]=gt.NotVisited;function i(o,s){if(r[o]===gt.Visited)return!0;if(r[o]===gt.Visiting){let u=s.lastIndexOf(o);return u!==-1&&n.push(s.slice(u)),!0}r[o]=gt.Visiting,s.push(o);let a=!1;for(let u of t[o]??v)i(u,s)||(a=!0);return r[o]=gt.Visited,s.pop(),e.unshift(o),!a}for(let o in t)r[o]===gt.NotVisited&&i(o,[]);return{sorted:e,cycles:n}}function Is(t,e){for(let r in t)if(t[r]&&typeof t[r]=="object"){let n=t[r];if(J(n)){let i=n.reference;(i.startsWith("urn:uuid:")||i.startsWith("resource:"))&&e(i)}else Is(n,e)}}function gd(t){let e={};for(let r of t.entry??v)r.fullUrl&&(e[r.fullUrl]=[]);for(let r of t.entry??v){let n=r.fullUrl;n&&r.resource&&Is(r.resource,i=>{i!==n&&e[i]&&e[i].push(n)})}return e}function yd(t){t=le(t);let e={resourceType:"Bundle",type:"transaction",entry:[{resource:t}]};if(t.contained){for(let r of t.contained)e.entry.push({resource:r});t.contained=void 0}for(let r of e.entry)r.resource&&!r.resource.id&&(r.resource.id=oe());return As(e)}function xd(t,e,r){return t.entry?.find(({resource:n})=>n?.resourceType===e&&n?.id===r)?.resource}async function vd(t,e,r,n){return{hook:r.hook,hookInstance:oe(),context:n,prefetch:await Td(t,e,r,n)}}async function Td(t,e,r,n){if(!r.prefetch)return{};let i={};for(let[o,s]of Object.entries(r.prefetch)){let a=await Sd(t,e,n,s);i[o]=a??null}return i}function Sd(t,e,r,n){if(n=ks(e,r,n),n.includes("{{"))return Promise.resolve(null);let i=/^(\w+)\/([0-9a-zA-Z-_]+)$/.exec(n);if(i){let[a,u]=i.slice(1);return t.readResource(a,u)}let[o,s]=Je(n,"?",2);return t.search(o,s)}var bd=new Set(["userPractitionerId","userPractitionerRoleId","userPatientId","userRelatedPersonId"]);function ks(t,e,r){return r.replaceAll(/\{\{([^}]+)\}\}/g,(n,i)=>{if(i=i.trim(),bd.has(i))return t.id;if(i.startsWith("context.")){let o=i.substring(8),s=Ed(e,o);if(de(s))return s;if(typeof s=="number"||typeof s=="boolean")return String(s)}return n})}function Ed(t,e){let r=e.split("."),n=t;for(let i of r)if(n&&C(n)&&i in n)n=n[i];else return;return n}var V={CSS:"text/css",DICOM:"application/dicom",DICOM_JSON:"application/dicom+json",EVENT_STREAM:"text/event-stream",FAVICON:"image/vnd.microsoft.icon",FHIR_JSON:"application/fhir+json",FORM_URL_ENCODED:"application/x-www-form-urlencoded",HL7_V2:"x-application/hl7-v2+er7",HTML:"text/html",JAVASCRIPT:"text/javascript",JOSE:"application/jose",JSON:"application/json",JSON_PATCH:"application/json-patch+json",JWT:"application/jwt",MULTIPART_FORM_DATA:"multipart/form-data",PNG:"image/png",SCIM_JSON:"application/scim+json",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript",PING:"x-application/ping",XML:"text/xml",CDA_XML:"application/cda+xml",OCTET_STREAM:"application/octet-stream"};var Xr=class{constructor(){c(this,"listeners");this.listeners={}}addEventListener(e,r){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(r)}removeEventListener(e,r){let n=this.listeners[e];if(n){for(let i=0;i<n.length;i++)if(n[i]===r){n.splice(i,1);return}}}dispatchEvent(e){let r=this.listeners[e.type];for(let n of r??v)try{n.call(this,e)}catch(i){console.error(`Unhandled error in "${e.type}" event listener`,i)}return!e.defaultPrevented}removeAllListeners(){this.listeners={}}listenerCount(e){return this.listeners[e]?.length??0}},se=class{constructor(){c(this,"emitter",new Xr)}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,r){this.emitter.addEventListener(e,r)}removeEventListener(e,r){this.emitter.removeEventListener(e,r)}removeAllListeners(){this.emitter.removeAllListeners()}listenerCount(e){return this.emitter.listenerCount(e)}};var Z={Event:typeof globalThis.Event<"u"?globalThis.Event:void 0,ErrorEvent:void 0,CloseEvent:void 0},Ms=!1;function Rd(){if(typeof globalThis.Event>"u")throw new Error("Unable to lazy init events for ReconnectingWebSocket. globalThis.Event is not defined yet");Z.Event=globalThis.Event,Z.ErrorEvent=class extends Event{constructor(r,n){super("error",n);c(this,"message");c(this,"error");this.message=r.message,this.error=r}},Z.CloseEvent=class extends Event{constructor(r=1e3,n="",i){super("close",i);c(this,"code");c(this,"reason");c(this,"wasClean",!0);this.code=r,this.reason=n}}}function Vs(t,e){if(!t)throw new Error(e)}function Cd(){}function Zr(t){if(t instanceof Z.CloseEvent){let e=t;return new Z.CloseEvent(e.code,e.reason,void 0)}if(t instanceof Z.ErrorEvent){let e=t;return new Z.ErrorEvent(e.error??new Error(e.message),void 0)}return new t.constructor(t.type,t)}function _s(t,e){let r=t;return r.error instanceof Error?new Z.ErrorEvent(r.error,e):new Z.ErrorEvent(new Error(r.message||"WebSocket error"),e)}var Ze={maxReconnectionDelay:1e4,minReconnectionDelay:1e3+Math.random()*4e3,minUptime:5e3,reconnectionDelayGrowFactor:1.3,connectionTimeout:4e3,maxRetries:1/0,maxEnqueuedMessages:1/0,startClosed:!1,debug:!1},Ds=!1,et=class t extends se{constructor(r,n,i={}){Ms||(Rd(),Ms=!0);super();c(this,"_ws");c(this,"_retryCount",-1);c(this,"_uptimeTimeout");c(this,"_connectTimeout");c(this,"_shouldReconnect",!0);c(this,"_connectLock",!1);c(this,"_binaryType");c(this,"_closeCalled",!1);c(this,"_messageQueue",[]);c(this,"_debugLogger",console.log.bind(console));c(this,"_url");c(this,"_protocols");c(this,"_options");c(this,"onclose",null);c(this,"onerror",null);c(this,"onmessage",null);c(this,"onopen",null);c(this,"_handleOpen",r=>{this._debug("open event");let{minUptime:n=Ze.minUptime}=this._options;clearTimeout(this._connectTimeout),this._uptimeTimeout=setTimeout(()=>this._acceptOpen(),n),Vs(this._ws,"WebSocket is not defined"),this._ws.binaryType=this._binaryType,this._messageQueue.forEach(i=>this._ws?.send(i)),this._messageQueue=[],this.onopen&&this.onopen(r),this.dispatchEvent(Zr(r))});c(this,"_handleMessage",r=>{this._debug("message event"),this.onmessage&&this.onmessage(r),this.dispatchEvent(Zr(r))});c(this,"_handleError",r=>{let n=_s(r,this);this._debug("error event",n.message),this._disconnect(void 0,n.message==="TIMEOUT"?"timeout":void 0),this.onerror&&this.onerror(n),this._debug("exec error listeners"),this.dispatchEvent(Zr(n)),this._connect()});c(this,"_handleClose",r=>{this._debug("close event"),this._clearTimeouts(),this._shouldReconnect&&this._connect(),this.onclose&&this.onclose(r),this.dispatchEvent(Zr(r))});this._url=r,this._protocols=n,this._options=i,this._options.startClosed&&(this._shouldReconnect=!1),this._options.binaryType?this._binaryType=this._options.binaryType:this._binaryType="blob",this._options.debugLogger&&(this._debugLogger=this._options.debugLogger),this._connect()}static get CONNECTING(){return 0}static get OPEN(){return 1}static get CLOSING(){return 2}static get CLOSED(){return 3}get CONNECTING(){return t.CONNECTING}get OPEN(){return t.OPEN}get CLOSING(){return t.CLOSING}get CLOSED(){return t.CLOSED}get binaryType(){return this._ws?this._ws.binaryType:this._binaryType}set binaryType(r){this._binaryType=r,this._ws&&(this._ws.binaryType=r)}get retryCount(){return Math.max(this._retryCount,0)}get bufferedAmount(){return this._messageQueue.reduce((n,i)=>(typeof i=="string"?n+=i.length:i instanceof Blob?n+=i.size:n+=i.byteLength,n),0)+(this._ws?.bufferedAmount??0)}get extensions(){return this._ws?.extensions??""}get protocol(){return this._ws?.protocol??""}get readyState(){return this._ws?this._ws.readyState:this._options.startClosed?t.CLOSED:t.CONNECTING}get url(){return this._ws?this._ws.url:""}get shouldReconnect(){return this._shouldReconnect}close(r=1e3,n){if(this._closeCalled=!0,this._shouldReconnect=!1,this._clearTimeouts(),!this._ws){this._debug("close enqueued: no ws instance");return}if(this._ws.readyState===this.CLOSED){this._debug("close: already closed");return}this._ws.close(r,n)}reconnect(r,n){this._shouldReconnect=!0,this._closeCalled=!1,this._retryCount=-1,!this._ws||this._ws.readyState===this.CLOSED?this._connect():(this._disconnect(r,n),this._connect())}send(r){if(this._ws?.readyState===this.OPEN)this._debug("send",r),this._ws.send(r);else{let{maxEnqueuedMessages:n=Ze.maxEnqueuedMessages}=this._options;this._messageQueue.length<n&&(this._debug("enqueue",r),this._messageQueue.push(r))}}_debug(...r){this._options.debug&&this._debugLogger("RWS>",...r)}_getNextDelay(){let{reconnectionDelayGrowFactor:r=Ze.reconnectionDelayGrowFactor,minReconnectionDelay:n=Ze.minReconnectionDelay,maxReconnectionDelay:i=Ze.maxReconnectionDelay}=this._options,o=0;return this._retryCount>0&&(o=n*Math.pow(r,this._retryCount-1),o>i&&(o=i)),this._debug("next delay",o),o}_wait(){return new Promise(r=>{setTimeout(r,this._getNextDelay())})}_connect(){if(this._connectLock||!this._shouldReconnect)return;this._connectLock=!0;let{maxRetries:r=Ze.maxRetries,connectionTimeout:n=Ze.connectionTimeout}=this._options;if(this._retryCount>=r){this._connectLock=!1,this._debug("max retries reached",this._retryCount,">=",r);return}this._retryCount++,this._debug("connect",this._retryCount),this._removeListeners(),this._wait().then(()=>{if(this._closeCalled){this._connectLock=!1;return}!this._options.WebSocket&&typeof WebSocket>"u"&&!Ds&&(console.error("\u203C\uFE0F No WebSocket implementation available. You should define options.WebSocket."),Ds=!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 Z.ErrorEvent(Error(i.message),this))})}_handleTimeout(){this._debug("timeout event"),this._handleError(new Z.ErrorEvent(Error("TIMEOUT"),this))}_disconnect(r=1e3,n){if(this._clearTimeouts(),!this._ws)return;let i=this._ws;this._removeListeners(),i.addEventListener("error",Cd);try{i.close(r,n),this._handleClose(new Z.CloseEvent(r,n,this))}catch{}}_acceptOpen(){this._debug("accept open"),this._retryCount=0}_removeListeners(){this._ws&&(this._debug("removeListeners"),this._ws.removeEventListener("open",this._handleOpen),this._ws.removeEventListener("close",this._handleClose),this._ws.removeEventListener("message",this._handleMessage),this._ws.removeEventListener("error",this._handleError))}_addListeners(){this._ws&&(this._debug("addListeners"),this._ws.addEventListener("open",this._handleOpen),this._ws.addEventListener("close",this._handleClose),this._ws.addEventListener("message",this._handleMessage),this._ws.addEventListener("error",this._handleError))}_clearTimeouts(){clearTimeout(this._connectTimeout),clearTimeout(this._uptimeTimeout)}};var en={"Patient-open":"Patient-open","Patient-close":"Patient-close","ImagingStudy-open":"ImagingStudy-open","ImagingStudy-close":"ImagingStudy-close","Encounter-open":"Encounter-open","Encounter-close":"Encounter-close","DiagnosticReport-open":"DiagnosticReport-open","DiagnosticReport-close":"DiagnosticReport-close","DiagnosticReport-select":"DiagnosticReport-select","DiagnosticReport-update":"DiagnosticReport-update",syncerror:"syncerror"},Ls=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],tn=["DiagnosticReport-update"];function Oi(t){return tn.includes(t)}function Ii(t){if(tn.includes(t))throw new m(T(`'context.version' is required for '${t}'.`))}var Ns={"Patient-open":{patient:{resourceType:"Patient"},encounter:{resourceType:"Encounter",optional:!0}},"Patient-close":{patient:{resourceType:"Patient"},encounter:{resourceType:"Encounter",optional:!0}},"ImagingStudy-open":{study:{resourceType:"ImagingStudy"},encounter:{resourceType:"Encounter",optional:!0},patient:{resourceType:"Patient",optional:!0}},"ImagingStudy-close":{study:{resourceType:"ImagingStudy"},encounter:{resourceType:"Encounter",optional:!0},patient:{resourceType:"Patient",optional:!0}},"Encounter-open":{encounter:{resourceType:"Encounter"},patient:{resourceType:"Patient"}},"Encounter-close":{encounter:{resourceType:"Encounter"},patient:{resourceType:"Patient"}},"DiagnosticReport-open":{report:{resourceType:"DiagnosticReport"},encounter:{resourceType:"Encounter",optional:!0},study:{resourceType:"ImagingStudy",optional:!0,manyAllowed:!0},patient:{resourceType:"Patient"}},"DiagnosticReport-close":{report:{resourceType:"DiagnosticReport"},encounter:{resourceType:"Encounter",optional:!0},study:{resourceType:"ImagingStudy",optional:!0,manyAllowed:!0},patient:{resourceType:"Patient"}},"DiagnosticReport-select":{report:{resourceType:"DiagnosticReport",reference:!0},patient:{resourceType:"Patient",optional:!0,reference:!0},select:{resourceType:"*",reference:!0,manyAllowed:!0}},"DiagnosticReport-update":{report:{resourceType:"DiagnosticReport",reference:!0},patient:{resourceType:"Patient",optional:!0,reference:!0},updates:{resourceType:"Bundle"}},syncerror:{operationoutcome:{resourceType:"OperationOutcome"}}};function Fs(t){return Ls.includes(t)}function ki(t){return!!t.endpoint}function rn(t){if(!or(t))throw new m(T("subscriptionRequest must be an object conforming to SubscriptionRequest type."));let{channelType:e,mode:r,topic:n,events:i}=t,o={"hub.channel.type":e,"hub.mode":r,"hub.topic":n};return r==="subscribe"&&(o["hub.events"]=i.join(",")),ki(t)&&(o["hub.channel.endpoint"]=t.endpoint),new URLSearchParams(o).toString()}function or(t){if(typeof t!="object")return!1;let{channelType:e,mode:r,topic:n,events:i}=t;if(!(e&&r&&n&&i)||typeof n!="string"||typeof i!="object"||!Array.isArray(i)||i.length<1||e!=="websocket"||r!=="subscribe"&&r!=="unsubscribe")return!1;for(let o of i)if(!en[o])return!1;return!(ki(t)&&!(typeof t.endpoint=="string"&&t.endpoint.startsWith("ws")))}function Pd(t,e,r,n){if(typeof e!="object")throw new m(T(`context[${r}] is invalid. Context must contain a single valid FHIR resource! Resource is not an object.`));if(!(e.id&&typeof e.id=="string"))throw new m(T(`context[${r}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new m(T(`context[${r}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!Fs(e.resourceType))throw new m(T(`context[${r}] is invalid. Resource must contain a valid FHIRcast resource type. Resource type is not a known resource type.`));if(i&&e.resourceType!==i)throw new m(T(`context[${r}] is invalid. context[${r}] for the '${t}' event should contain resource of type ${i}.`))}}function wd(t,e,r,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),n.reference){if(!J(e.reference))throw new m(T(`context[${r}] is invalid. Expected key '${e.key}' to be a reference.`))}else Pd(t,e.resource,r,n)}function Ad(t,e){let r=new Map,n=Ns[t];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new m(T(`Key '${o}' not found for event '${t}'. Make sure to add only valid keys.`));wd(t,e[i],i,n[o],r)}for(let[i,o]of Object.entries(n)){if(!(o.optional||r.has(i)))throw new m(T(`Missing required key '${i}' on context for '${t}' event.`));if(!o.manyAllowed&&(r.get(i)??0)>1)throw new m(T(`${r.get(i)} context entries with key '${i}' found for the '${t}' event when schema only allows for 1.`))}}function nn(t,e,r,n){if(!(t&&typeof t=="string"))throw new m(T("Must provide a topic."));if(!en[e])throw new m(T(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(en).join(", ")}`));if(typeof r!="object")throw new m(T("context must be a context object or array of context objects."));if(tn.includes(e)&&!n)throw new m(T(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(r)?r:[r];return Ad(e,i),{timestamp:new Date().toISOString(),id:oe(),event:{"hub.topic":t,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var ir=class extends se{constructor(r,n){super();c(this,"subRequest");c(this,"websocket");if(this.subRequest=r,!r.endpoint)throw new m(T("Subscription request should contain an endpoint."));if(!or(r))throw new m(T("Subscription request failed validation."));let{ReconnectingWebSocket:i=et,...o}=n??{},s=new i(r.endpoint,void 0,o);s.addEventListener("open",()=>{this.dispatchEvent({type:"connect"})}),s.addEventListener("message",a=>{let u=JSON.parse(a.data);if(!u.event){u["hub.mode"]==="denied"&&this.disconnect();return}let l=u;l.event["hub.event"]!=="heartbeat"&&(this.dispatchEvent({type:"message",payload:l}),s.send(JSON.stringify({id:u?.id,timestamp:new Date().toISOString()})))}),s.addEventListener("close",()=>{this.dispatchEvent({type:"disconnect"})}),this.websocket=s}disconnect(){this.websocket.close()}};function Od(t){return JSON.parse(nr(t))}function Mi(t){return t.split(".").length===3}function sr(t){let[e,r,n]=t.split(".");return Od(r)}function Di(t){try{return typeof sr(t).login_id=="string"}catch{return!1}}function Vi(t){try{let r=sr(t).exp;return typeof r=="number"?r*1e3:void 0}catch{return}}var ar=class{constructor(e){c(this,"medplum");this.medplum=e}async get(e){return this.medplum.get(`keyvalue/v1/${e}`)}async set(e,r){await this.medplum.put(`keyvalue/v1/${e}`,r,V.TEXT)}async delete(e){await this.medplum.delete(`keyvalue/v1/${e}`)}};var Us;Us=Symbol.toStringTag;var $=class{constructor(e){c(this,Us,"ReadablePromise");c(this,"suspender");c(this,"status","pending");c(this,"response");c(this,"error");this.suspender=e.then(r=>(this.status="success",this.response=r,r),r=>{throw this.status="error",this.error=r,r})}isPending(){return this.status==="pending"}isOk(){return this.status==="success"}read(){switch(this.status){case"pending":throw this.suspender;case"error":throw this.error;default:return this.response}}then(e,r){return this.suspender.then(e,r)}catch(e){return this.suspender.catch(e)}finally(e){return this.suspender.finally(e)}};var yt=class{constructor(e,r=""){c(this,"storage");c(this,"prefix","");this.storage=e??globalThis.localStorage??new on,this.prefix=r}makeKey(e){return this.prefix+e}clear(){if(this.storage===globalThis.localStorage&&this.prefix)for(let e=this.storage.length-1;e>=0;e--){let r=this.storage.key(e);r?.startsWith(this.prefix)&&this.storage.removeItem(r)}else this.storage.clear()}getString(e){return this.storage.getItem(this.makeKey(e))??void 0}setString(e,r){r?this.storage.setItem(this.makeKey(e),r):this.storage.removeItem(this.makeKey(e))}getObject(e){let r=this.getString(e);return r?JSON.parse(r):void 0}setObject(e,r){this.setString(e,r?Vt(r):void 0)}},on=class{constructor(){c(this,"data");this.data=new Map}get length(){return this.data.size}clear(){this.data.clear()}getItem(e){return this.data.get(e)??null}setItem(e,r){r?this.data.set(e,r):this.data.delete(e)}removeItem(e){this.data.delete(e)}key(e){return Array.from(this.data.keys())[e]}},_i=class extends yt{constructor(){super();c(this,"initialized");c(this,"initPromise");c(this,"initResolve",()=>{});this.initialized=!1,this.initPromise=new Promise(r=>{this.initResolve=r})}setInitialized(){this.initialized||(this.initResolve(),this.initialized=!0)}getInitPromise(){return this.initPromise}get isInitialized(){return this.initialized}};var Id=[WebSocket.CLOSING,WebSocket.CLOSED],xt=class extends se{constructor(...r){super();c(this,"criteria");this.criteria=new Set(r)}getCriteria(){return this.criteria}_addCriteria(r){this.criteria.add(r)}_removeCriteria(r){this.criteria.delete(r)}},Li=class{constructor(e,r){c(this,"criteria");c(this,"emitter");c(this,"refCount");c(this,"subscriptionProps");c(this,"subscriptionId");c(this,"token");c(this,"tokenExpiry");c(this,"state","idle");c(this,"generation",0);c(this,"lastUnrefTime");this.criteria=e,this.emitter=new xt(e),this.refCount=1,this.subscriptionProps=r?{...r}:void 0}nextGeneration(){return++this.generation}},ur=class{constructor(e,r,n){c(this,"medplum");c(this,"ws");c(this,"masterSubEmitter");c(this,"criteriaEntries");c(this,"criteriaEntriesBySubscriptionId");c(this,"wsClosed");c(this,"pingTimer");c(this,"tokenRefreshTimer");c(this,"pingIntervalMs");c(this,"waitingForPong",!1);c(this,"currentProfile");if(!(e instanceof lr))throw new m(T("First arg of constructor should be a `MedplumClient`"));let i;try{i=new URL(r).toString()}catch{throw new m(T("Not a valid URL"))}let o=n?.ReconnectingWebSocket?new n.ReconnectingWebSocket(i,void 0,{debug:n?.debug,debugLogger:n?.debugLogger}):new et(i,void 0,{debug:n?.debug,debugLogger:n?.debugLogger});this.medplum=e,this.ws=o,this.masterSubEmitter=new xt,this.criteriaEntries=new Map,this.criteriaEntriesBySubscriptionId=new Map,this.wsClosed=!1,this.pingIntervalMs=n?.pingIntervalMs??5e3,this.currentProfile=e.getProfile(),this.setupListeners()}setupListeners(){let e=this.ws;e.addEventListener("message",r=>{try{let n=JSON.parse(r.data);if(n.type==="pong"){this.waitingForPong=!1;return}let i=n,o=i?.entry?.[0]?.resource;if(!o){console.warn("Received WebSocket message without a SubscriptionStatus resource; ignoring",i);return}if(o.type==="heartbeat"){this.masterSubEmitter?.dispatchEvent({type:"heartbeat",payload:i});return}if(o.type==="handshake"){let a=K(o.subscription),u={type:"connect",payload:{subscriptionId:a}};this.masterSubEmitter?.dispatchEvent(u);let l=this.criteriaEntriesBySubscriptionId.get(a);if(!l){console.warn("Received handshake for criteria the SubscriptionManager is not listening for yet");return}(l.state==="connecting"||l.state==="refreshing")&&(l.state="active"),l.emitter.dispatchEvent({...u});return}this.masterSubEmitter?.dispatchEvent({type:"message",payload:i});let s=this.criteriaEntriesBySubscriptionId.get(K(o.subscription));if(!s){console.warn("Received notification for criteria the SubscriptionManager is not listening for");return}s.emitter.dispatchEvent({type:"message",payload:i})}catch(n){console.error(n);let i={type:"error",payload:n};this.masterSubEmitter?.dispatchEvent(i);for(let o of this.getAllCriteriaEmitters())o.dispatchEvent({...i})}}),e.addEventListener("error",r=>{let n={type:"error",payload:new m({resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"WebSocket connection closed due to an error"},diagnostics:r.error?Ie(r.error):r.message}]})};this.masterSubEmitter?.dispatchEvent(n);for(let i of this.getAllCriteriaEmitters())i.dispatchEvent({...n})}),e.addEventListener("close",()=>{let r={type:"close"};this.masterSubEmitter?.dispatchEvent(r);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent({...r});this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=void 0,this.waitingForPong=!1),this.tokenRefreshTimer&&(clearInterval(this.tokenRefreshTimer),this.tokenRefreshTimer=void 0),this.wsClosed&&(this.criteriaEntries.clear(),this.criteriaEntriesBySubscriptionId.clear(),this.masterSubEmitter?.removeAllListeners())}),e.addEventListener("open",()=>{let r={type:"open"};this.masterSubEmitter?.dispatchEvent(r);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent({...r});this.refreshAllSubscriptions().catch(console.error),this.pingTimer??=setInterval(()=>{this.waitingForPong?(this.waitingForPong=!1,e.reconnect()):(e.send(JSON.stringify({type:"ping"})),this.waitingForPong=!0),this.gcUnrefEntries()},this.pingIntervalMs),this.tokenRefreshTimer??=setInterval(()=>{this.checkTokenExpirations(),this.gcUnrefEntries()},6e4)}),this.medplum.addEventListener("change",()=>{let r=this.medplum.getProfile();this.currentProfile&&r===void 0?this.ws.close():r&&this.currentProfile?.id!==r.id&&this.ws.reconnect(),this.currentProfile=r})}sendBind(e){this.ws.send(JSON.stringify({type:"bind-with-token",payload:{token:e}}))}sendUnbind(e){this.ws.readyState===WebSocket.OPEN&&this.ws.send(JSON.stringify({type:"unbind-from-token",payload:{token:e}}))}emitError(e,r){let n={type:"error",payload:r};this.masterSubEmitter?.dispatchEvent(n),e.emitter.dispatchEvent({...n})}maybeEmitDisconnect(e){let{subscriptionId:r}=e;if(r){let n={type:"disconnect",payload:{subscriptionId:r}};this.masterSubEmitter?.dispatchEvent(n),e.emitter.dispatchEvent({...n})}else console.warn("Called disconnect for `CriteriaEntry` before `subscriptionId` was present.")}isStale(e,r){return this.isEntryGettingRemoved(e)||e.generation!==r}maybeGetCriteriaEntry(e,r){let n=this.criteriaEntries.get(e);if(n){if(!r)return n.bareCriteria;for(let i of n.criteriaWithProps)if(xe(r,i.subscriptionProps))return i}}getAllCriteriaEmitters(){let e=[];for(let r of this.criteriaEntries.values())for(let n of cr(r))n.refCount>0&&e.push(n.emitter);return e}addCriteriaEntry(e){let{criteria:r,subscriptionProps:n}=e,i;this.criteriaEntries.has(r)?i=this.criteriaEntries.get(r):(i={criteriaWithProps:[]},this.criteriaEntries.set(r,i)),n?i.criteriaWithProps.push(e):i.bareCriteria=e}removeCriteriaEntry(e){e.state="removed",e.generation++;let{criteria:r,subscriptionProps:n,subscriptionId:i,token:o}=e;if(!this.criteriaEntries.has(r))return;let s=this.criteriaEntries.get(r);n?s.criteriaWithProps=s.criteriaWithProps.filter(a=>{let u=a.subscriptionProps;return!xe(n,u)}):s.bareCriteria=void 0,!s.bareCriteria&&s.criteriaWithProps.length===0&&(this.criteriaEntries.delete(r),this.masterSubEmitter?._removeCriteria(r)),i&&this.criteriaEntriesBySubscriptionId.delete(i),o&&this.sendUnbind(o)}async subscribeToCriteria(e){this.wsClosed&&await this.reconnectIfNeeded(),this.ws.readyState===WebSocket.OPEN&&this.medplum.getProfile()&&e.state==="idle"&&(e.state="connecting",await this.rebindCriteriaEntry(e))}async refreshAllSubscriptions(){this.criteriaEntriesBySubscriptionId.clear();let e=[],r=[];for(let n of this.criteriaEntries.values())for(let i of cr(n))i.refCount===0?r.push(i):e.push(i);for(let n of r)this.removeCriteriaEntry(n);for(let n of e)n.token&&this.sendUnbind(n.token),n.token=void 0,n.tokenExpiry=void 0,n.subscriptionId=void 0,n.state="idle",n.generation++,await this.subscribeToCriteria(n)}async rebindCriteriaEntry(e){let r=e.nextGeneration();try{if(!e.subscriptionId){let a=await this.medplum.createResource({...e.subscriptionProps,resourceType:"Subscription",status:"active",reason:`WebSocket subscription for ${I(this.medplum.getProfile())}`,channel:{type:"websocket"},criteria:e.criteria});if(e.subscriptionId??=a.id,this.isStale(e,r))return}let{parameter:n}=await this.medplum.get(`fhir/R4/Subscription/${e.subscriptionId}/$get-ws-binding-token`,{cache:"no-cache"}),i=n?.find(a=>a.name==="token")?.valueString,o=n?.find(a=>a.name==="websocket-url")?.valueUrl,s=n?.find(a=>a.name==="expiration")?.valueDateTime;if(!i)throw new m(T("Failed to get token"));if(!o)throw new m(T("Failed to get URL from $get-ws-binding-token"));if(!s)throw new m(T("Failed to get expiration from $get-ws-binding-token"));if(this.isStale(e,r))return;e.token=i,e.tokenExpiry=new Date(s).getTime(),this.criteriaEntriesBySubscriptionId.set(e.subscriptionId,e),this.sendBind(i)}catch(n){console.error(Ie(n)),e.generation===r&&!this.isEntryGettingRemoved(e)&&(e.state=e.state==="refreshing"?"active":"idle"),this.emitError(e,n)}}checkTokenExpirations(){if(!this.medplum.getProfile())return;let e=Date.now();for(let r of this.criteriaEntries.values())for(let n of cr(r))n.refCount===0||!n.tokenExpiry||n.tokenExpiry-e<=3e5&&n.state==="active"&&this.ws.readyState===WebSocket.OPEN&&(n.state="refreshing",this.rebindCriteriaEntry(n).catch(i=>{this.masterSubEmitter?.dispatchEvent({type:"error",payload:i})}))}addCriteria(e,r){this.masterSubEmitter&&this.masterSubEmitter._addCriteria(e);let n=this.maybeGetCriteriaEntry(e,r);if(n)return n.refCount===0&&(n.lastUnrefTime=void 0,n.generation++,n.state!=="active"&&(n.state=n.token?"active":"idle")),n.refCount+=1,n.state==="idle"&&this.subscribeToCriteria(n).catch(console.error),n.emitter;let i=new Li(e,r);return this.addCriteriaEntry(i),this.subscribeToCriteria(i).catch(console.error),i.emitter}removeCriteria(e,r){let n=this.maybeGetCriteriaEntry(e,r);if(!n||this.isEntryGettingRemoved(n)){console.warn("Criteria not known to `SubscriptionManager`. Possibly called remove too many times.");return}n.refCount-=1,n.refCount===0&&(n.lastUnrefTime=Date.now(),n.generation++)}gcUnrefEntries(){let e=Date.now(),r=[];for(let n of this.criteriaEntries.values())for(let i of cr(n))i.refCount===0&&i.lastUnrefTime!==void 0&&e-i.lastUnrefTime>=1e4&&r.push(i);for(let n of r)this.maybeEmitDisconnect(n),this.removeCriteriaEntry(n);r.length>0&&this.criteriaEntries.size===0&&this.closeWebSocket()}isEntryGettingRemoved(e){return e.refCount===0||e.state==="removed"}getWebSocket(){return this.ws}closeWebSocket(){if(!this.wsClosed){if(this.ws.readyState===WebSocket.OPEN)for(let e of this.criteriaEntries.values())for(let r of cr(e))r.token&&this.sendUnbind(r.token);this.wsClosed=!0,this.ws.close()}}reconnectWebSocket(){this.ws.reconnect(),this.wsClosed=!1}getCriteriaCount(){return this.getAllCriteriaEmitters().length}getMasterEmitter(){return this.masterSubEmitter||(this.masterSubEmitter=new xt(...Array.from(this.criteriaEntries.keys()))),this.masterSubEmitter}async reconnectIfNeeded(){Id.includes(this.getWebSocket().readyState)&&await new Promise(e=>{let r=()=>{this.getWebSocket().removeEventListener("open",r),e()};this.getWebSocket().addEventListener("open",r),this.reconnectWebSocket()})}};function cr(t){return t.bareCriteria?[t.bareCriteria,...t.criteriaWithProps]:t.criteriaWithProps}var kd=new ee(1e3);async function Md({resource:t,subscription:e,context:r,getPreviousResource:n,logger:i}){if(!Dd(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=mt(o);if(t.resourceType!==s.resourceType)return i?.debug(`Ignore rest hook for different resourceType (wanted "${s.resourceType}", received "${t.resourceType}")`),!1;if(!await Bs(e,t,n))return i?.debug("Ignore rest hook for criteria returning false"),!1;let u=!1,l=!1;for(let h of e.extension??v)if(h.url==="https://medplum.com/fhir/StructureDefinition/subscription-supported-interaction"&&(u=!0,h.valueCode===r.interaction)){l=!0;break}if(u&&!l)return i?.debug("Ignored rest hook for unsupported interaction",{subscription:e.id,interaction:r.interaction}),!1;if(!tr(t,s))return!1;let d=jr(e.meta)??[],f=jr(t.meta)??[];return d.length&&!d.some(h=>f.some(b=>b.reference===h.reference))?(i?.debug("Subscription suppressed due to mismatched accounts",{subscriptionId:e.id,resource:I(t)}),!1):!0}function Dd(t,e){let r=t.channel?.type;return r==="rest-hook"?t.channel?.endpoint?!0:(e?.debug("Ignore rest-hook missing URL"),!1):r==="websocket"}async function Bs(t,e,r){let n=ae(t,"https://medplum.com/fhir/StructureDefinition/fhir-path-criteria-expression");if(!n?.valueString)return!0;let i=await r(e),o={"%current":E(e),"%previous":E(i??{})};return k(n.valueString,[E(e)],o,kd)?.[0]?.value===!0}var sn="5.1.31-b29db2f",Vd="medplum-cli",js=V.FHIR_JSON+", */*; q=0.1",_d="https://api.medplum.com/",Ld=1e3,Nd=6e4,Fd=0,Ud=3e5,Bd="Binary/",qs={resourceType:"Device",id:"system",deviceName:[{type:"model-name",name:"System"}]},qd=2,tt={ClientCredentials:"client_credentials",AuthorizationCode:"authorization_code",RefreshToken:"refresh_token",JwtBearer:"urn:ietf:params:oauth:grant-type:jwt-bearer",TokenExchange:"urn:ietf:params:oauth:grant-type:token-exchange",PreAuthorizedCode:"urn:ietf:params:oauth:grant-type:pre-authorized_code"},Hs={AccessToken:"urn:ietf:params:oauth:token-type:access_token",RefreshToken:"urn:ietf:params:oauth:token-type:refresh_token",IdToken:"urn:ietf:params:oauth:token-type:id_token",Saml1Token:"urn:ietf:params:oauth:token-type:saml1",Saml2Token:"urn:ietf:params:oauth:token-type:saml2"},Wd={ClientSecretBasic:"client_secret_basic",ClientSecretPost:"client_secret_post",ClientSecretJwt:"client_secret_jwt",PrivateKeyJwt:"private_key_jwt",None:"none"},Gs={JwtBearer:"urn:ietf:params:oauth:client-assertion-type:jwt-bearer"},$d={ES256:"ES256",ES384:"ES384",ES512:"ES512",HS256:"HS256",RS256:"RS256",RS384:"RS384",RS512:"RS512"},lr=class extends se{constructor(r){super();c(this,"options");c(this,"fetch");c(this,"createPdfImpl");c(this,"storage");c(this,"requestCache");c(this,"cacheTime");c(this,"baseUrl");c(this,"fhirBaseUrl");c(this,"authorizeUrl");c(this,"tokenUrl");c(this,"logoutUrl");c(this,"fhircastHubUrl");c(this,"cdsServicesUrl");c(this,"defaultHeaders");c(this,"onUnauthenticated");c(this,"autoBatchTime");c(this,"autoBatchQueue");c(this,"maxRetries");c(this,"maxRetryTime");c(this,"refreshGracePeriod");c(this,"subscriptionManager");c(this,"medplumServer");c(this,"clientId");c(this,"clientSecret");c(this,"credentialsInHeader");c(this,"autoBatchTimerId");c(this,"accessToken");c(this,"accessTokenExpires");c(this,"refreshToken");c(this,"refreshPromise");c(this,"profilePromise");c(this,"sessionDetails");c(this,"currentRateLimits");c(this,"basicAuth");c(this,"initPromise");c(this,"initComplete",!0);c(this,"keyValueClient");c(this,"logLevel");if(r?.baseUrl&&!r.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");this.options=r??{},this.fetch=r?.fetch??jd(),this.storage=r?.storage??new yt(void 0,r?.storagePrefix),this.createPdfImpl=r?.createPdf,this.baseUrl=lt(r?.baseUrl??_d),this.fhirBaseUrl=W(this.baseUrl,r?.fhirUrlPath??"fhir/R4"),this.authorizeUrl=W(this.baseUrl,r?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=W(this.baseUrl,r?.tokenUrl??"oauth2/token"),this.logoutUrl=W(this.baseUrl,r?.logoutUrl??"oauth2/logout"),this.fhircastHubUrl=W(this.baseUrl,r?.fhircastHubUrl??"fhircast/STU3"),this.cdsServicesUrl=W(this.baseUrl,r?.cdsServicesUrl??"cds-services"),this.clientId=r?.clientId??"",this.clientSecret=r?.clientSecret??"",this.credentialsInHeader=r?.authCredentialsMethod==="header",this.defaultHeaders=r?.defaultHeaders??{},this.onUnauthenticated=r?.onUnauthenticated,this.refreshGracePeriod=r?.refreshGracePeriod??Ud,this.logLevel=this.initializeLogLevel(r),this.maxRetries=r?.maxRetries??2,this.maxRetryTime=r?.maxRetryTime??2e3,this.cacheTime=r?.cacheTime??(X()?Nd:Fd),this.cacheTime>0?this.requestCache=new ee(r?.resourceCacheSize??Ld):this.requestCache=void 0,r?.autoBatchTime?(this.autoBatchTime=r.autoBatchTime,this.autoBatchQueue=[]):(this.autoBatchTime=0,this.autoBatchQueue=void 0),r?.accessToken&&this.setAccessToken(r.accessToken),this.storage.getInitPromise===void 0?(r?.accessToken||this.attemptResumeActiveLogin().catch(console.error),this.initPromise=Promise.resolve(),this.dispatchEvent({type:"storageInitialized"})):(this.initComplete=!1,this.initPromise=this.storage.getInitPromise(),this.initPromise.then(()=>{r?.accessToken||this.attemptResumeActiveLogin().catch(console.error),this.initComplete=!0,this.dispatchEvent({type:"storageInitialized"})}).catch(n=>{console.error(n),this.initComplete=!0,this.dispatchEvent({type:"storageInitFailed",payload:{error:n}})})),this.setupStorageListener()}get isInitialized(){return this.initComplete}getInitPromise(){return this.initPromise}initializeLogLevel(r){return r?.logLevel?r.logLevel:r?.verbose!==void 0&&r.verbose?"verbose":"none"}async attemptResumeActiveLogin(){let r=this.getActiveLogin();r&&(this.setAccessToken(r.accessToken,r.refreshToken),await this.refreshProfile())}getBaseUrl(){return this.baseUrl}getAuthorizeUrl(){return this.authorizeUrl}getTokenUrl(){return this.tokenUrl}getLogoutUrl(){return this.logoutUrl}getFhircastHubUrl(){return this.fhircastHubUrl}getCdsServicesUrl(){return this.cdsServicesUrl}getDefaultHeaders(){return this.defaultHeaders}clear(){this.storage.clear(),this.clearActiveLogin()}clearActiveLogin(){this.storage.setString("activeLogin",void 0),this.requestCache?.clear(),this.accessToken=void 0,this.refreshToken=void 0,this.refreshPromise=void 0,this.accessTokenExpires=void 0,this.sessionDetails=void 0,this.medplumServer=void 0,this.dispatchEvent({type:"change"})}invalidateUrl(r){r=r.toString(),this.requestCache?.delete(r)}invalidateAll(){this.requestCache?.clear()}invalidateSearches(r){let n=W(this.fhirBaseUrl,r);for(let i of this.requestCache?.keys()??v)(i.endsWith(n)||i.includes(n+"?"))&&this.requestCache?.delete(i)}notifyResourceModified(r){r.operation!=="delete"&&r.resource?this.cacheResource(r.resource,void 0):r.id&&this.deleteCacheEntry(this.fhirUrl(r.resourceType,r.id).toString()),this.invalidateSearches(r.resourceType),this.dispatchResourceModified(r)}get(r,n={}){r=r.toString();let i=this.getCacheEntry(r,n);if(i)return i.value;let o;r.startsWith(this.fhirBaseUrl)&&this.autoBatchQueue&&!n.disableAutoBatch?o=new Promise((a,u)=>{this.autoBatchQueue.push({method:"GET",url:r.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:u}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):(n.method="GET",o=this.request(r,n));let s=new $(o);return this.setCacheEntry(r,s,n),s}post(r,n,i,o={}){return r=r.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(r),o.method="POST",this.request(r,o)}put(r,n,i,o={}){return r=r.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(r),o.method="PUT",this.request(r,o)}patch(r,n,i={}){return r=r.toString(),this.setRequestBody(i,n),this.setRequestContentType(i,V.JSON_PATCH),this.invalidateUrl(r),i.method="PATCH",this.request(r,i)}delete(r,n={}){return r=r.toString(),this.invalidateUrl(r),n.method="DELETE",this.request(r,n)}async startNewUser(r,n){let{codeChallengeMethod:i,codeChallenge:o}=await this.startPkce();return this.post("auth/newuser",{...r,clientId:r.clientId??this.clientId,codeChallengeMethod:i,codeChallenge:o},void 0,n)}async startNewProject(r,n){return this.post("auth/newproject",r,void 0,n)}async startNewPatient(r,n){return this.post("auth/newpatient",r,void 0,n)}async startLogin(r,n){return this.post("auth/login",{...await this.ensureCodeChallenge(r),clientId:r.clientId??this.clientId,scope:r.scope},void 0,n)}async startGoogleLogin(r,n){return this.post("auth/google",{...await this.ensureCodeChallenge(r),clientId:r.clientId??this.clientId,scope:r.scope},void 0,n)}async ensureCodeChallenge(r){return r.codeChallenge?r:{...r,...await this.startPkce()}}async signOut(){await this.post(this.logoutUrl,{}),this.clear()}async signInWithRedirect(r){let i=new URLSearchParams(me.getSearch()).get("code");if(!i){await this.requestAuthorization(r);return}return this.processCode(i)}signOutWithRedirect(){me.assign(this.logoutUrl)}async signInWithExternalAuth(r,n,i,o,s=!0){let a=o;s&&(a=await this.ensureCodeChallenge(o)),me.assign(this.getExternalAuthRedirectUri(r,n,i,a,s))}async exchangeExternalAccessToken(r,n,i){if(n=n??this.clientId,!n)throw new Error("MedplumClient is missing clientId");let o={grant_type:tt.TokenExchange,subject_token_type:Hs.AccessToken,client_id:n,subject_token:r};return i&&(o.membership_id=i),this.fetchTokens(o)}getExternalAuthRedirectUri(r,n,i,o,s=!0){let a=new URL(r);if(a.searchParams.set("response_type","code"),a.searchParams.set("client_id",n),a.searchParams.set("redirect_uri",i),a.searchParams.set("scope",o.scope??"openid profile email"),a.searchParams.set("state",JSON.stringify(o)),s){let{codeChallenge:u,codeChallengeMethod:l}=o;if(!l)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!u)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");a.searchParams.set("code_challenge_method",l),a.searchParams.set("code_challenge",u)}return a.toString()}fhirUrl(...r){return new URL(W(this.fhirBaseUrl,r.join("/")))}fhirSearchUrl(r,n){let i=this.fhirUrl(r);return n&&(i.search=fi(n)),i}search(r,n,i){let o=this.fhirSearchUrl(r,n),s="search-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=this.getBundle(o,i);return this.setCacheEntry(s,u,i),u}searchOne(r,n,i){let o=this.fhirSearchUrl(r,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s="searchOne-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new $(this.search(r,o.searchParams,i).then(l=>l.entry?.[0]?.resource));return this.setCacheEntry(s,u,i),u}searchResources(r,n,i){let s="searchResources-"+this.fhirSearchUrl(r,n).toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let u=new $(this.search(r,n,i).then($s));return this.setCacheEntry(s,u,i),u}async*searchResourcePages(r,n,i){let o=this.fhirSearchUrl(r,n);for(;o;){let s=new URL(o).searchParams;s.has("_count")||s.set("_count","1000");let a=await this.search(r,s,i),u=a.link?.find(l=>l.relation==="next");if(!a.entry?.length&&!u)break;yield $s(a),o=u?.url?new URL(u.url):void 0}}valueSetExpand(r,n){let i=this.fhirUrl("ValueSet","$expand");return i.search=new URLSearchParams(r).toString(),this.get(i.toString(),n)}getCached(r,n){let i=this.requestCache?.get(this.fhirUrl(r,n).toString())?.value;return i?.isOk()?i.read():void 0}getCachedReference(r){let n=r.reference;if(!n)return;if(n==="system")return qs;let[i,o]=n.split("/");if(!(!i||!o))return this.getCached(i,o)}readResource(r,n,i){if(!n)throw new Error('The "id" parameter cannot be null, undefined, or an empty string.');return this.get(this.fhirUrl(r,n),i)}readReference(r,n){let i=r.reference;if(!i)return new $(Promise.reject(new Error("Missing reference")));if(i==="system")return new $(Promise.resolve(qs));let[o,s]=i.split("/");return!o||!s?new $(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}readCanonical(r,n,i){return Array.isArray(r)?this.searchOne("",{_type:r.join(","),url:n},i):this.searchOne(r,"url="+n,i)}requestSchema(r,n){if(jn(r))return Promise.resolve();let i=r+"-requestSchema",o=this.getCacheEntry(i,void 0);if(o)return o.value;let s=new $((async()=>{let a=`{
StructureDefinitionList(_filter: "name eq ${r}") {
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: "${r}", _count: 100) {
base,
code,
type,
expression,
target
}
}`.replaceAll(/\s+/g," "),u=await this.graphql(a);Dr(u.data.StructureDefinitionList);for(let l of u.data.SearchParameterList)zr(l)})());return this.setCacheEntry(i,s,n),s}requestProfileSchema(r,n){if(!n?.expandProfile&&Hn(r))return Promise.resolve();let i=r+"-requestSchema"+(n?.expandProfile?"-nested":""),o=this.getCacheEntry(i,void 0);if(o)return o.value;let s=new $((async()=>{if(n?.expandProfile){let a=this.fhirUrl("StructureDefinition","$expand-profile");a.search=new URLSearchParams({url:r}).toString();let u=await this.post(a.toString(),{});Dr(u)}else{let a=await this.searchOne("StructureDefinition",{url:r,_sort:"-_lastUpdated"});if(!a){console.warn(`No StructureDefinition found for ${r}!`);return}Vr(a)}})());return this.setCacheEntry(i,s,n),s}readHistory(r,n,i,o){let s=this.fhirUrl(r,n,"_history");return i?.count&&s.searchParams.set("_count",i.count.toString()),i?.offset&&s.searchParams.set("_offset",i.offset.toString()),this.get(s.toString(),o)}readVersion(r,n,i,o){return this.get(this.fhirUrl(r,n,"_history",i),o)}readPatientEverything(r,n){return this.getBundle(this.fhirUrl("Patient",r,"$everything"),n)}readPatientSummary(r,n){return this.getBundle(this.fhirUrl("Patient",r,"$summary"),n)}async createResource(r,n){if(!r.resourceType)throw new Error("Missing resourceType");this.invalidateSearches(r.resourceType);let i=await this.post(this.fhirUrl(r.resourceType),r,void 0,n);return this.dispatchResourceModified({resourceType:r.resourceType,operation:"create",id:i?.id,resource:i}),i}async createResourceIfNoneExist(r,n,i={}){let o=this.fhirUrl(r.resourceType);this.setRequestHeader(i,"If-None-Exist",n);let s=await this.post(o,r,void 0,i);return this.cacheResource(s,i),this.invalidateUrl(this.fhirUrl(r.resourceType,r.id,"_history")),this.invalidateSearches(r.resourceType),this.dispatchResourceModified({resourceType:r.resourceType,operation:"create",id:s?.id,resource:s}),s}async upsertResource(r,n,i){let o=this.fhirSearchUrl(r.resourceType,n),s=await this.put(o,r,void 0,i),a=s!==void 0;return s||(s=r),this.cacheResource(s,i),this.invalidateUrl(this.fhirUrl(r.resourceType,r.id,"_history")),this.invalidateSearches(r.resourceType),a&&this.dispatchResourceModified({resourceType:r.resourceType,operation:"update",id:s.id,resource:s}),s}async createAttachment(r,n,i,o,s){let a=Ni(r,n,i,o);if(a.contentType===V.XML){let d=a.data,f;d instanceof Blob?f=await new Promise((h,b)=>{let P=new FileReader;P.onload=()=>{if(!P.result){b(new Error("Failed to load file"));return}h(P.result)},P.readAsText(d,"utf-8")}):ArrayBuffer.isView(d)?f=new TextDecoder().decode(d):f=d,f.includes("<ClinicalDocument")&&f.includes("urn:hl7-org:v3")&&(a={...a,contentType:V.CDA_XML})}let u=s??(typeof n=="object"?n:{}),l=await this.createBinary(a,u);return{contentType:a.contentType,url:l.url,title:a.filename}}createBinary(r,n,i,o,s){let a=Ni(r,n,i,o),u=s??(typeof n=="object"?n:{}),{data:l,contentType:d,filename:f,securityContext:h,onProgress:b}=a,P=this.fhirUrl("Binary");return f&&P.searchParams.set("_filename",f),h?.reference&&this.setRequestHeader(u,"X-Security-Context",h.reference),b?this.uploadwithProgress(P,l,d,b,u):this.post(P,l,d,u)}uploadwithProgress(r,n,i,o,s){return new Promise((a,u)=>{let l=new XMLHttpRequest,d=()=>l.abort();s?.signal?.addEventListener("abort",d);let f=h=>{s?.signal?.removeEventListener("abort",d),h instanceof Error?u(h):a(h)};if(l.responseType="json",l.onabort=()=>f(new DOMException("Request aborted","AbortError")),l.onerror=()=>f(new Error("Request error")),o&&(l.upload.onprogress=h=>o(h),l.upload.onload=h=>o(h)),l.onload=()=>{l.status>=200&&l.status<300?f(l.response):f(new m(Rt(l.response||l.statusText)))},l.open("POST",r),l.withCredentials=!0,l.setRequestHeader("Authorization","Bearer "+this.accessToken),l.setRequestHeader("Cache-Control","no-cache, no-store, max-age=0"),l.setRequestHeader("Content-Type",i),this.options.extendedMode!==!1&&l.setRequestHeader("X-Medplum","extended"),s?.headers){let h=s.headers;for(let[b,P]of Object.entries(h))l.setRequestHeader(b,P)}l.send(n)})}async createPdf(r,n,i,o){if(!this.createPdfImpl)throw new Error("PDF creation not enabled");let s=Qs(r,n,i,o),a=typeof n=="object"?n:{},{docDefinition:u,tableLayouts:l,fonts:d,...f}=s,h=await this.createPdfImpl(u,l,d),b={...f,data:h,contentType:"application/pdf"};return this.createBinary(b,a)}createComment(r,n,i){let o=this.getProfile(),s,a;return r.resourceType==="Encounter"&&(s=re(r),a=r.subject),r.resourceType==="ServiceRequest"&&(s=r.encounter,a=r.subject),r.resourceType==="Patient"&&(a=re(r)),this.createResource({resourceType:"Communication",status:"completed",basedOn:[re(r)],encounter:s,subject:a,sender:o?re(o):void 0,sent:new Date().toISOString(),payload:[{contentString:n}]},i)}async updateResource(r,n){if(!r.resourceType)throw new Error("Missing resourceType");if(!r.id)throw new Error("Missing id");let i=await this.put(this.fhirUrl(r.resourceType,r.id),r,void 0,n),o=i!==void 0;return i||(i=r),this.cacheResource(i,n),this.invalidateUrl(this.fhirUrl(r.resourceType,r.id,"_history")),this.invalidateSearches(r.resourceType),o&&this.dispatchResourceModified({resourceType:r.resourceType,operation:"update",id:i.id,resource:i}),i}async patchResource(r,n,i,o){let s=await this.patch(this.fhirUrl(r,n),i,o);return this.cacheResource(s,o),this.invalidateUrl(this.fhirUrl(r,n,"_history")),this.invalidateSearches(r),this.dispatchResourceModified({resourceType:r,operation:"patch",id:n,resource:s}),s}async deleteResource(r,n,i){this.deleteCacheEntry(this.fhirUrl(r,n).toString()),this.invalidateSearches(r);let o=await this.delete(this.fhirUrl(r,n),i);return this.dispatchResourceModified({resourceType:r,operation:"delete",id:n}),o}validateResource(r,n){return this.post(this.fhirUrl(r.resourceType,"$validate"),r,void 0,n)}executeBot(r,n,i,o){let s;if(typeof r=="string"){let a=r;s=this.fhirUrl("Bot",a,"$execute")}else{let a=r;s=this.fhirUrl("Bot","$execute"),s.searchParams.set("identifier",a.system+"|"+a.value)}return this.post(s,n,i,o)}executeBatch(r,n){return this.post(this.fhirBaseUrl,r,void 0,n)}sendEmail(r,n){return this.post("email/v1/send",r,V.JSON,n)}graphql(r,n,i,o){return this.post(this.fhirUrl("$graphql"),{query:r,operationName:n,variables:i},V.JSON,o)}readResourceGraph(r,n,i,o){return this.get(`${this.fhirUrl(r,n)}/$graph?graph=${i}`,o)}pushToAgent(r,n,i,o,s,a){let{waitTimeout:u,returnAck:l,...d}=a??{};return this.post(this.fhirUrl("Agent",K(r),"$push"),{destination:typeof n=="string"?n:I(n),body:i,contentType:o,waitForResponse:s,...u!==void 0?{waitTimeout:u}:void 0,...l!==void 0?{returnAck:l}:void 0},V.FHIR_JSON,d)}getCdsServices(r){return this.get(this.cdsServicesUrl,r)}callCdsService(r,n,i){return this.post(W(this.cdsServicesUrl,r),n,V.JSON,i)}getActiveLogin(){return this.storage.getObject("activeLogin")}async setActiveLogin(r){(!this.sessionDetails?.profile||I(this.sessionDetails.profile)!==r.profile?.reference)&&this.clearActiveLogin(),this.setAccessToken(r.accessToken,r.refreshToken),this.storage.setObject("activeLogin",r),this.addLogin(r),this.refreshPromise=void 0,await this.refreshProfile()}getAccessToken(){return this.accessToken}isAuthenticated(r){return this.accessTokenExpires!==void 0&&Date.now()<this.accessTokenExpires-(r??this.refreshGracePeriod)}setAccessToken(r,n){this.accessToken=r,this.refreshToken=n,this.accessTokenExpires=Vi(r),this.medplumServer=Di(r)}getLogins(){return this.storage.getObject("logins")??[]}addLogin(r){let n=this.getLogins().filter(i=>i.profile?.reference!==r.profile?.reference);n.push(r),this.storage.setObject("logins",n)}async refreshProfile(){if(this.medplumServer)return this.profilePromise=new Promise((r,n)=>{this.get("auth/me",{cache:"no-cache"}).then(i=>{this.profilePromise=void 0;let o=this.sessionDetails?.profile?.id!==i.profile.id;this.sessionDetails=i,this.syncStoredLoginProject(),o&&this.dispatchEvent({type:"change"}),r(i.profile),this.dispatchEvent({type:"profileRefreshed"})}).catch(n)}),this.dispatchEvent({type:"profileRefreshing"}),this.profilePromise}syncStoredLoginProject(){let r=this.getActiveLogin(),n=this.sessionDetails?.project?.name;if(!r||!n||r.project.display===n)return;let i={...r,project:{...r.project,display:n}};this.storage.setObject("activeLogin",i),this.addLogin(i)}isLoading(){return!this.isInitialized||!!this.profilePromise&&!this.sessionDetails?.profile}isSuperAdmin(){return!!this.sessionDetails?.project.superAdmin}isProjectAdmin(){return!!this.sessionDetails?.membership.admin}getProject(){return this.sessionDetails?.project}getProjectMembership(){return this.sessionDetails?.membership}getProfile(){return this.sessionDetails?.profile}async getProfileAsync(){return this.profilePromise?this.profilePromise:this.sessionDetails?this.sessionDetails.profile:this.refreshProfile()}getUserConfiguration(){return this.sessionDetails?.config}getAccessPolicy(){return this.sessionDetails?.accessPolicy}async download(r,n={}){return(await this.downloadResponse(r,n)).blob()}async downloadResponse(r,n={}){this.refreshPromise&&await this.refreshPromise;let i=r.toString();i.startsWith(Bd)&&(r=this.fhirUrl(i));let o=n.headers;return o||(o={},n.headers=o),o.Accept||(o.Accept="*/*"),this.addFetchOptionsDefaults(n,r.toString()),this.fetchWithRetry(r.toString(),n)}async createMedia(r,n){let{additionalFields:i,...o}=r,s=await this.createResource({resourceType:"Media",status:"preparation",content:{contentType:r.contentType},...i});o.securityContext||(o.securityContext=re(s));let a=await this.createAttachment(o,n);return this.updateResource({...s,status:"completed",content:a})}async uploadMedia(r,n,i,o,s){return this.createMedia({data:r,contentType:n,filename:i,additionalFields:o},s)}async createDocumentReference(r,n){let{additionalFields:i,...o}=r,s=await this.createResource({resourceType:"DocumentReference",status:"current",content:[{attachment:{contentType:r.contentType}}],...i});o.securityContext||(o.securityContext=re(s));let a=await this.createAttachment(o,n);return this.updateResource({...s,content:[{attachment:a}]})}async bulkExport(r="",n,i,o){let s=r&&`${r}/`,a=this.fhirUrl(`${s}$export`);return n&&a.searchParams.set("_type",n),i&&a.searchParams.set("_since",i),this.startAsyncRequest(a.toString(),o)}async startAsyncRequest(r,n={}){this.addFetchOptionsDefaults(n,r);let i=n.headers;return i.Prefer="respond-async",n.method="POST",this.request(r,n)}async wrappedFetch(r,n){return await this.refreshIfExpired(),this.addFetchOptionsDefaults(n,r),this.fetchWithRetry(r,n)}get keyValue(){return this.keyValueClient||(this.keyValueClient=new ar(this)),this.keyValueClient}getBundle(r,n){return new $((async()=>{let i=await this.get(r,n);for(let o of i.entry??v)this.cacheResource(o.resource,n);return i})())}isCacheEnabled(r){return!!this.requestCache&&!this.getRequestHeader(r,"x-medplum-on-behalf-of")}getCacheEntry(r,n){if(!this.isCacheEnabled(n)||n?.cache==="no-cache"||n?.cache==="reload")return;let i=this.requestCache.get(r);if(!(!i||i.requestTime+this.cacheTime<Date.now()))return i}setCacheEntry(r,n,i){this.isCacheEnabled(i)&&(this.requestCache.set(r,{requestTime:Date.now(),value:n}),i?.signal&&i.signal.addEventListener("abort",()=>{this.requestCache.delete(r)}))}cacheResource(r,n){r?.id&&!r.meta?.tag?.some(i=>i.code==="SUBSETTED")&&this.setCacheEntry(this.fhirUrl(r.resourceType,r.id).toString(),new $(Promise.resolve(r)),n)}deleteCacheEntry(r){this.requestCache&&this.requestCache.delete(r)}dispatchResourceModified(r){this.listenerCount("resourceModified")>0&&this.dispatchEvent({type:"resourceModified",payload:r})}async request(r,n={},i={}){let o=await this.wrappedFetch(r,n);if(o.status===401)return this.handleUnauthenticated(r,n,i);if(o.status===204||o.status===304)return;let a=o.headers.get("content-type")?.includes("json");if(o.status===404&&!a)throw new m(Vn);let u=await this.parseBody(o,a);if(o.status===200&&n.followRedirectOnOk||o.status===201&&n.followRedirectOnCreated){let l=await Ws(o,u);if(l)return this.request(l,{...n,method:"GET",body:void 0})}if(o.status===202&&n.pollStatusOnAccepted){let d=await Ws(o,u)??i.statusUrl;if(d)return this.pollStatus(d,n,i)}if(o.status>=400)throw new m(Rt(u));return u}async parseBody(r,n){let i;if(r.headers.get("content-length")!=="0"){if(n)try{i=await r.json()}catch(o){throw console.error("Error parsing response",r.status,o),o}else i=await r.text();return i}}async fetchWithRetry(r,n){r.startsWith("http")||(r=W(this.baseUrl,r));let i=n?.maxRetries??this.maxRetries;for(let o=0;o<=i;o++)try{this.logLevel!=="none"&&this.logRequest(r,n);let s=await this.fetch(r,n);if(this.logLevel!=="none"&&this.logResponse(s),this.setCurrentRateLimit(s),o>=i||!Qd(s))return s;let a=this.getRetryDelay(o),u=n.maxRetryTime??this.maxRetryTime;if(a>u)return s;await Qr(a,{signal:n.signal})}catch(s){if(s.message==="Failed to fetch"&&o===0&&this.dispatchEvent({type:"offline"}),s.name==="AbortError"||o===i)throw s}throw new Error("Unreachable")}logRequest(r,n){if(console.log(`> ${n.method} ${r}`),this.logLevel==="verbose"&&n.headers){let i=n.headers;for(let o of _t(Object.keys(i)))console.log(`> ${o}: ${i[o]}`)}}logResponse(r){console.log(`< ${r.status} ${r.statusText}`),this.logLevel==="verbose"&&r.headers&&r.headers.forEach((n,i)=>console.log(`< ${i}: ${n}`))}setCurrentRateLimit(r){if(!r?.headers||typeof r.headers.get!="function")return;let n=r.headers.get("ratelimit");n&&(this.currentRateLimits=n)}rateLimitStatus(){if(!this.currentRateLimits)return[];let r=this.currentRateLimits;return r.split(",").map(n=>{let i=n.split(";").map(d=>d.trim());if(i.length!==3)throw new Error("Could not parse RateLimit header: "+r);let o=i[0].substring(1,i[0].length-1),s=i.find(d=>d.startsWith("r="))?.substring(2),a=s?Number.parseInt(s,10):Number.NaN,u=i.find(d=>d.startsWith("t="))?.substring(2),l=u?Number.parseInt(u,10):Number.NaN;if(!o||Number.isNaN(a)||Number.isNaN(l))throw new Error("Could not parse RateLimit header: "+r);return{name:o,remainingUnits:a,secondsUntilReset:l,resetsAfter:Math.ceil((Date.now()+1e3*l)/1e3)}})}getRetryDelay(r){let n=this.rateLimitStatus(),i=500*Math.pow(1.5,r);for(let o of n)o.remainingUnits||(i=Math.max(i,o.secondsUntilReset*1e3));return i}async pollStatus(r,n,i){let o={...n,method:"GET",body:void 0,redirect:"follow"};if(i.pollCount===void 0)n.headers&&typeof n.headers=="object"&&"Prefer"in n.headers&&(o.headers={...n.headers},delete o.headers.Prefer),i.statusUrl=r,i.pollCount=1;else{let s=n.pollStatusPeriod??1e3;await Qr(s,{signal:n.signal}),i.pollCount++}return this.request(r,o,i)}async executeAutoBatch(){if(this.autoBatchQueue===void 0)return;let r=[...this.autoBatchQueue];if(this.autoBatchQueue.length=0,this.autoBatchTimerId=void 0,r.length===1){let o=r[0];try{o.options.method=o.method,o.resolve(await this.request(W(this.fhirBaseUrl,o.url),o.options))}catch(s){o.reject(new m(Rt(s)))}return}let n={resourceType:"Bundle",type:"batch",entry:r.map(o=>({request:{method:o.method,url:o.url},resource:o.options.body?JSON.parse(o.options.body):void 0}))},i=await this.post(this.fhirBaseUrl,n);for(let o=0;o<r.length;o++){let s=r[o],a=i.entry?.[o];a?.response?.outcome&&!Ir(a.response.outcome)?s.reject(new m(a.response.outcome)):s.resolve(a?.resource)}}isInternalUrl(r){if(!r.startsWith("http://")&&!r.startsWith("https://"))return!0;try{let n=new URL(r);return r.startsWith(this.baseUrl)||r.startsWith(this.fhirBaseUrl)||n.origin===new URL(this.baseUrl).origin&<(n.pathname).startsWith(lt(new URL(this.baseUrl).pathname))}catch{return!1}}addFetchOptionsDefaults(r,n){Object.entries(this.defaultHeaders).forEach(([i,o])=>{this.setRequestHeader(r,i,o)}),this.setRequestHeader(r,"Accept",js,!0),this.options.extendedMode!==!1&&this.setRequestHeader(r,"X-Medplum","extended"),r.body&&this.setRequestHeader(r,"Content-Type",V.FHIR_JSON,!0),this.isInternalUrl(n)&&(this.accessToken?this.setRequestHeader(r,"Authorization","Bearer "+this.accessToken):this.basicAuth&&this.setRequestHeader(r,"Authorization","Basic "+this.basicAuth),r.credentials||(r.credentials="include"))}setRequestContentType(r,n){this.setRequestHeader(r,"Content-Type",n)}getRequestHeader(r,n){let i=r?.headers;if(i)if(Array.isArray(i)){let o=i.find(([s])=>s.toLowerCase()===n.toLowerCase());return o?o[1]:void 0}else{if(i instanceof Headers)return i.get(n)??void 0;if(C(i))return i[n]??void 0}else return}setRequestHeader(r,n,i,o=!1){let s=r.headers;s?Array.isArray(s)?(!o||!s.some(([a])=>a.toLowerCase()===n.toLowerCase()))&&s.push([n,i]):s instanceof Headers?(!o||!s.has(n))&&s.set(n,i):C(s)&&(!o||!s[n])&&(s[n]=i):r.headers={[n]:i}}setRequestBody(r,n){typeof n=="string"||typeof Blob<"u"&&(n instanceof Blob||n?.constructor.name==="Blob")||typeof File<"u"&&(n instanceof File||n?.constructor.name==="File")||typeof Uint8Array<"u"&&(n instanceof Uint8Array||n?.constructor.name==="Uint8Array")?r.body=n:typeof n=="object"&&n!==null&&(typeof n.getReader=="function"||typeof n.pipe=="function"&&typeof n.on=="function")?(r.body=n,r.duplex="half"):n&&(r.body=JSON.stringify(n))}async handleUnauthenticated(r,n,i){let o=i.authAttempt??0,s=o+1<qd?this.refresh(void 0,!0):void 0;if(s)return await s,this.request(r,n,{...i,authAttempt:o+1});throw this.clear(),this.onUnauthenticated?.(),new m(We)}async startPkce(){let r=Yr();this.storage.setString("pkceState",r);let n=Yr().slice(0,128);this.storage.setString("codeVerifier",n);try{let i=await Ai(n);return{codeChallengeMethod:"S256",codeChallenge:ci(i).replaceAll("+","-").replaceAll("/","_").replaceAll("=","")}}catch(i){return console.warn("Failed to hash code verifier. Falling back to 'plain' code challenge method",i),{codeChallengeMethod:"plain",codeChallenge:n}}}async requestAuthorization(r){let n=await this.ensureCodeChallenge(r??{}),i=new URL(this.authorizeUrl);i.searchParams.set("response_type","code"),i.searchParams.set("state",this.storage.getString("pkceState")),i.searchParams.set("client_id",n.clientId??this.clientId),i.searchParams.set("redirect_uri",n.redirectUri??me.getOrigin()),i.searchParams.set("code_challenge_method",n.codeChallengeMethod),i.searchParams.set("code_challenge",n.codeChallenge),i.searchParams.set("scope",n.scope??"openid profile"),me.assign(i.toString())}processCode(r,n){let i={grant_type:tt.AuthorizationCode,code:r,client_id:n?.clientId??this.clientId??"",redirect_uri:n?.redirectUri??me.getOrigin()},o=this.storage.getString("codeVerifier");return o&&(i.code_verifier=o),this.fetchTokens(i)}refreshIfExpired(r){return!this.refreshPromise&&this.accessTokenExpires!==void 0&&!this.isAuthenticated(r)&&this.refresh(r),this.refreshPromise??Promise.resolve()}refresh(r,n=!1){if(this.refreshPromise)return this.refreshPromise;if(!(!this.refreshToken&&!(this.clientId&&this.clientSecret)))return this.refreshPromise=this.runRefreshWithLock(r,n),this.refreshPromise}async runRefreshWithLock(r,n=!1){let i=()=>{let a=this.accessToken,u=this.getActiveLogin();u?.accessToken&&u.accessToken!==this.accessToken&&this.setAccessToken(u.accessToken,u.refreshToken);let l=this.accessToken!==a;return this.isAuthenticated(r)&&(!n||l)?Promise.resolve(this.getProfile()):this.refreshToken?this.fetchTokens({grant_type:tt.RefreshToken,client_id:this.clientId??"",refresh_token:this.refreshToken}):this.clientId&&this.clientSecret?this.startClientLogin(this.clientId,this.clientSecret):Promise.resolve(void 0)},o=typeof navigator<"u"?navigator.locks:void 0;if(!o?.request)return i();let s=`medplum-refresh:${this.storage.makeKey("activeLogin")}`;return o.request(s,i)}async startClientLogin(r,n){return this.clientId=r,this.clientSecret=n,this.fetchTokens({grant_type:tt.ClientCredentials,client_id:r,client_secret:n})}async startJwtBearerLogin(r,n,i){return this.clientId=r,this.fetchTokens({grant_type:tt.JwtBearer,client_id:r,assertion:n,scope:i})}async startJwtAssertionLogin(r){return this.fetchTokens({grant_type:tt.ClientCredentials,client_assertion_type:Gs.JwtBearer,client_assertion:r})}setBasicAuth(r,n){this.clientId=r,this.clientSecret=n,this.basicAuth=rr(r+":"+n)}setLogLevel(r){this.logLevel=r,this.options.verbose=r==="verbose"}getLogLevel(){return this.logLevel}setVerbose(r){this.logLevel=r?"verbose":"none",this.options.verbose=r}async fhircastSubscribe(r,n){if(!(typeof r=="string"&&r!==""))throw new m(T("Invalid topic provided. Topic must be a valid string."));if(!(typeof n=="object"&&Array.isArray(n)&&n.length>0))throw new m(T("Invalid events provided. Events must be an array of event names containing at least one event."));let i={channelType:"websocket",mode:"subscribe",topic:r,events:n},s=(await this.post(this.fhircastHubUrl,rn(i),V.FORM_URL_ENCODED))["hub.channel.endpoint"];if(!s)throw new Error("Invalid response!");return i.endpoint=s,i}async fhircastUnsubscribe(r){if(!or(r))throw new m(T("Invalid topic or subscriptionRequest. SubscriptionRequest must be an object."));if(!(r.endpoint&&typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))throw new m(T("Provided subscription request must have an endpoint in order to unsubscribe."));r.mode="unsubscribe",await this.post(this.fhircastHubUrl,rn(r),V.FORM_URL_ENCODED)}fhircastConnect(r,n){return new ir(r,n)}async fhircastPublish(r,n,i,o){return Oi(n)?this.post(this.fhircastHubUrl,nn(r,n,i,o),V.JSON):(Ii(n),this.post(this.fhircastHubUrl,nn(r,n,i),V.JSON))}async fhircastGetContext(r){return this.get(`${this.fhircastHubUrl}/${r}`,{cache:"no-cache"})}async invite(r,n){return this.post("admin/projects/"+r+"/invite",n)}async handleTokenError(r){try{let n=await r.json();throw ot(n)?new m(n):n.error_description?new m(A(n.error_description)):new Error(JSON.stringify(n))}catch(n){throw n instanceof m?(n.message=`Failed to fetch tokens: ${n.message}`,n):new m(A("Failed to fetch tokens"),{cause:n})}}async fetchTokens(r){let n=new URLSearchParams(r),i={...this.defaultHeaders,"Content-Type":V.FORM_URL_ENCODED};this.basicAuth&&(i.Authorization=`Basic ${this.basicAuth}`),this.credentialsInHeader&&(n.delete("client_id"),n.delete("client_secret"),!this.basicAuth&&r.client_id&&r.client_secret&&(i.Authorization=`Basic ${rr(r.client_id+":"+r.client_secret)}`));let o={method:"POST",headers:i,body:n.toString(),credentials:"include"},s;try{s=await this.fetchWithRetry(this.tokenUrl,o)}catch(u){throw this.refreshPromise=void 0,u}s.ok||(this.clearActiveLogin(),this.onUnauthenticated?.(),await this.handleTokenError(s));let a=await s.json();return await this.verifyTokens(a),this.getProfile()}async verifyTokens(r){let n=r.access_token;if(Mi(n)){let i=sr(n);if(Date.now()>=i.exp*1e3)throw this.clearActiveLogin(),new m(_n);if(i.cid){if(i.cid!==this.clientId)throw this.clearActiveLogin(),new m(Ar)}else if(this.clientId&&i.client_id!==this.clientId)throw this.clearActiveLogin(),new m(Ar)}return this.setActiveLogin({accessToken:n,refreshToken:r.refresh_token,project:r.project,profile:r.profile})}checkSessionDetailsMatchLogin(r){return this.sessionDetails&&r?r.profile?.reference?.endsWith(this.sessionDetails.profile.id)??!1:!0}setupStorageListener(){try{window.addEventListener("storage",r=>{if(r.key===null)me.reload();else if(r.key===this.storage.makeKey("activeLogin")){let n=r.oldValue?JSON.parse(r.oldValue):void 0,i=r.newValue?JSON.parse(r.newValue):void 0;n?.profile.reference!==i?.profile.reference||!this.checkSessionDetailsMatchLogin(i)?me.reload():i?this.setAccessToken(i.accessToken,i.refreshToken):this.clear()}})}catch{}}getSubscriptionManager(){return this.subscriptionManager||(this.subscriptionManager=new ur(this,pi(this.baseUrl,"/ws/subscriptions-r4"))),this.subscriptionManager}subscribeToCriteria(r,n){return this.getSubscriptionManager().addCriteria(r,n)}unsubscribeFromCriteria(r,n){this.subscriptionManager&&this.subscriptionManager.removeCriteria(r,n)}getMasterSubscriptionEmitter(){return this.getSubscriptionManager().getMasterEmitter()}};function jd(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}async function Ws(t,e){let r=t.headers.get("content-location");if(r)return r;let n=t.headers.get("location");if(n)return n;if(ot(e)&&e.issue?.[0]?.diagnostics)return e.issue[0].diagnostics}function $s(t){let e=t.entry?.map(r=>r.resource)??[];return Object.assign(e,{bundle:t})}function Hd(t){return C(t)&&"data"in t&&"contentType"in t}function Ni(t,e,r,n){return Hd(t)?t:{data:t,filename:e,contentType:r,onProgress:n}}function Gd(t){return C(t)&&"docDefinition"in t}function Qs(t,e,r,n){return Gd(t)?t:{docDefinition:t,filename:e,tableLayouts:r,fonts:n}}function Qd(t){return t.status===429||t.status>=500}var zd={aws_ssm_parameter_store:"aws_ssm_parameter_store"};function Jd(t,e,r){let n=new an;Array.isArray(t)||(t=t.entry?.map(i=>i.resource)??[]);for(let i of t)n.addObservation(i);return n.summarize(e,r)}var an=class{constructor(e){c(this,"code");c(this,"unit");c(this,"sampling");c(this,"dataPoints");this.dataPoints=[],this.code=e?.code,this.unit=e?.unit,this.sampling=e?.sampling}addObservation(e){if(!this.code)this.code=e.code;else if(!Kd(this.code,e.code))throw new Error("Observation does not match code of sampled data");e.valueQuantity?.value!==void 0?(this.checkUnit(e.valueQuantity),this.addData(e.valueQuantity.value)):e.valueInteger!==void 0?this.addData(e.valueInteger):e.valueSampledData?.data&&(this.checkUnit(e.valueSampledData.origin),this.addData(...Fi(e.valueSampledData)))}addData(...e){this.dataPoints.push(...e)}checkUnit(e){if(!this.unit)this.unit=e;else if(e.code&&e.system){if(this.unit.system!==e.system||this.unit.code!==e.code)throw new Error("Incorrect unit for Observation")}else if(e.unit&&this.unit.unit!==e.unit)throw new Error("Incorrect unit for Observation")}summarize(e,r){if(!this.code)throw new Error("Code is required for data points");let n=r(this.dataPoints);return{resourceType:"Observation",status:"final",code:e,valueQuantity:typeof n=="number"?{...this.unit,value:n}:n,component:[{code:this.code,valueSampledData:{origin:{...this.unit,value:0},dimensions:1,period:0,...this.sampling,data:Yd(this.dataPoints,this.sampling)}}]}}};function Kd(t,e){return!!t.coding?.some(r=>e.coding?.some(n=>r.system===n.system&&r.code===n.code))}function Fi(t){return t.data?.split(" ").map(e=>Number.parseFloat(e)*(t.factor??1)+(t.origin.value??0))??[]}function Yd(t,e){if(t.length)return t.map(r=>(r-(e?.origin.value??0))/(e?.factor??1)).join(" ")}function Xd(t){let e=[],r=t.effectiveInstant??t.effectiveDateTime??t.effectivePeriod?.start,n=r?Date.parse(r).valueOf():0;t.valueSampledData&&e.push(...zs(t.valueSampledData,n,t));for(let i of t.component??v)i.valueSampledData&&e.push(...zs(i.valueSampledData,n,{...t,...i}));return e}function zs(t,e,r){let n=[],i=Fi(t),o=I(r);for(let s=0;s<i.length;s++){let a=i[s],u=e+Math.floor(s/t.dimensions)*t.period;n.push({...r,id:void 0,effectiveInstant:void 0,effectivePeriod:void 0,effectiveTiming:void 0,effectiveDateTime:u?new Date(u).toISOString():void 0,valueQuantity:{...t.origin,value:a},valueSampledData:void 0,component:void 0,derivedFrom:o?[...r.derivedFrom??[],{reference:o}]:r.derivedFrom})}return n}function un({parentContext:t,path:e,elements:r,profileUrl:n,debugMode:i,accessPolicyResource:o}){if(e===t?.path)return;i??=t?.debugMode??!1,o??=t?.accessPolicyResource;let s=Zd(e,r,t,!!i),a=Je(e,".",2)[1];s=ep(s,o,a),s=tp(s,o,a);let u=Object.create(null);for(let[d,f]of Object.entries(s))u[e+"."+d]=f;let l;if(t&&!t.isDefaultContext)l=t.getExtendedProps;else{let d=Object.create(null);l=f=>{let h=Je(f,".",2)[1];if(h){if(!d[h]){let b=cn(h,o?.hiddenFields);d[h]={hidden:b,readonly:b||cn(h,o?.readonlyFields)}}return d[h]}}}return{path:e,elements:s,elementsByPath:u,profileUrl:n??t?.profileUrl,debugMode:i,getExtendedProps:l,accessPolicyResource:o}}function Zd(t,e,r,n){let i=Object.create(null);if(r)for(let[s,a]of Object.entries(r.elementsByPath)){let u=Se(t,s);u!==void 0&&(i[u]=a)}let o=!1;if(e)for(let[s,a]of Object.entries(e))s in i||(i[s]=a,o=!0);return n&&console.assert(o,"Unnecessary ElementsContext; not using any newly provided elements"),i}function ep(t,e,r){if(!e?.hiddenFields?.length)return t;let n=r?r+".":"";return Object.fromEntries(Object.entries(t).filter(([i])=>!cn(n+i,e.hiddenFields)))}function tp(t,e,r){if(!e?.readonlyFields?.length)return t;let n=Object.create(null),i=r?r+".":"";for(let[o,s]of Object.entries(t))cn(i+o,e.readonlyFields)?n[o]={...s,readonly:!0}:n[o]=s;return n}function cn(t,e){if(!e?.length)return!1;let r=t.split(".");for(let n=1;n<=r.length;n++){let i=r.slice(0,n).join(".");if(e.includes(i))return!0}return!1}function Ui(t){return t.type!==void 0&&t.type.length>0}function rp(t,e,r,n){let i=je(t,e.path,{profileUrl:n});if(i){let o=r.typeSchema?.elements??r.elements;return i.some(s=>Ur(s,e,r,o))??!1}return console.assert(!1,"getNestedProperty[%s] in isDiscriminatorComponentMatch missed",e.path),!1}function Bi(t,e,r,n){if(t)for(let i of e){let o={value:t,type:i.typeSchema?.type??i.type?.[0].code};if(r.every(s=>rp(o,s,i,i.typeSchema?.url??n)))return i.name}}var dr=class{constructor(e,r,n){c(this,"rootSchema");c(this,"visitor");c(this,"elementsContextStack");c(this,"sliceAllowList");if(e.type===void 0)throw new Error("schema must include a type");this.rootSchema=e;let i=un({parentContext:void 0,path:this.rootSchema.type,elements:n??this.rootSchema.elements,profileUrl:this.rootSchema.name===this.rootSchema.type?void 0:this.rootSchema.url});if(i===void 0)throw new Error("Could not create root elements context");this.elementsContextStack=[i],this.visitor=r}get elementsContext(){return this.elementsContextStack.at(-1)}crawlElement(e,r,n){this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema);let i=Object.fromEntries(Object.entries(this.elementsContext.elements).filter(([o])=>o.startsWith(r)));this.crawlElementsImpl(i,n),this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlSlice(e,r,n){let i=this.prepareSlices(n.slices,n);if(!ue(i.slices))throw new Error(`cannot crawl slice ${r.name} since it has no type information`);this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema),this.sliceAllowList=[r],this.crawlSliceImpl(i.slices[0],r.path,i),this.sliceAllowList=void 0,this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlResource(){this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema),this.crawlElementsImpl(this.rootSchema.elements,this.rootSchema.type),this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlElementsImpl(e,r){let n=np(e);for(let i of n)this.crawlElementNode(i,r)}crawlElementNode(e,r){let n=r+"."+e.key;this.visitor.onEnterElement&&this.visitor.onEnterElement(n,e.element,this.elementsContext);for(let i of e.children)this.crawlElementNode(i,r);ue(e.element?.slicing?.slices)&&this.crawlSlicingImpl(e.element.slicing,n),this.visitor.onExitElement&&this.visitor.onExitElement(n,e.element,this.elementsContext)}prepareSlices(e,r){let n=[];for(let o of e){if(!Ui(o))continue;let s=o.type.find(a=>ue(a.profile))?.profile?.[0];if(ue(s)){let a=Gn(s);a&&(o.typeSchema=a)}n.push(o)}return{...r,slices:n}}crawlSlicingImpl(e,r){let n=this.prepareSlices(e.slices,e);for(let i of n.slices)(this.sliceAllowList===void 0||this.sliceAllowList.includes(i))&&this.crawlSliceImpl(i,r,n)}crawlSliceImpl(e,r,n){let i=e.typeSchema;i&&this.visitor.onEnterSchema&&this.visitor.onEnterSchema(i),this.visitor.onEnterSlice&&this.visitor.onEnterSlice(r,e,n);let o,s=i?.elements??e.elements;ue(s)&&(o=un({path:r,parentContext:this.elementsContext,elements:s})),o&&this.elementsContextStack.push(o),this.crawlElementsImpl(s,r),o&&this.elementsContextStack.pop(),this.visitor.onExitSlice&&this.visitor.onExitSlice(r,e,n),i&&this.visitor.onExitSchema&&this.visitor.onExitSchema(i)}};function np(t){let e=[];function r(o,s){return s.startsWith(o+".")}function n(o,s){for(let a of o.children)if(r(a.key,s.key)){n(a,s);return}o.children.push(s)}let i=Object.entries(t);i.sort((o,s)=>o[0].localeCompare(s[0]));for(let[o,s]of i){let a={key:o,element:s,children:[]},u=!1;for(let l of e)if(r(l.key,o)){n(l,a),u=!0;break}u||e.push(a)}return e}var ln="__sliceName";function ip(t,e){let r=new dn(t,t.resourceType,"resource");return new dr(e,r).crawlResource(),r.getDefaultValue()}function op(t,e,r){for(let[n,i]of Object.entries(e)){if(r===void 0||r===n){pr(t,n,i,e);continue}let o=Se(r,n);o!==void 0&&pr(t,o,i,e)}return t}function sp(t,e,r,n){let i=new dn([{[ln]:e.name}],e.path,"element");return new dr(n,i).crawlSlice(t,e,r),i.getDefaultValue()[0]}var dn=class{constructor(e,r,n){c(this,"rootValue");c(this,"schemaStack");c(this,"valueStack");this.schemaStack=[],this.valueStack=[],this.rootValue=le(e),this.valueStack.splice(0,this.valueStack.length,{type:n,path:r,values:[this.rootValue]})}get schema(){return this.schemaStack.at(-1)}get value(){return this.valueStack.at(-1)}onEnterSchema(e){this.schemaStack.push(e)}onExitSchema(){this.schemaStack.pop()}onEnterElement(e,r,n){let i=this.value.values,o=this.value.path,s=Se(o,e);if(s===void 0)throw new Error(`Expected ${e} to be prefixed by ${o}`);let a=[];for(let u of i){if(u===void 0)continue;let l=Se(n.path,o),d=Array.isArray(u)?u:[u];for(let f of d){ap(f,s,r,n.elements,l),pr(f,s,r,n.elements);let h=Wi(f,s,n.elements,l);h!==void 0&&a.push(h)}}this.valueStack.push({type:"element",path:e,values:a})}onExitElement(e,r,n){if(!this.valueStack.pop())throw new Error("Expected value context to exist when exiting element");let o=Se(this.value.path,e);if(o===void 0)throw new Error(`Expected ${e} to be prefixed by ${this.value.path}`);let s=Se(n.path,this.value.path);for(let a of this.value.values){let u=Wi(a,o,n.elements,s);if(Array.isArray(u))for(let l=u.length-1;l>=0;l--){let d=u[l];ue(d)||u.splice(l,1)}O(u)&&qi(a,void 0,o,r)}}onEnterSlice(e,r,n){let i=this.value.values,o=[];for(let s of i)if(s!==void 0){let a=Array.isArray(s)?s:[s],u=this.getMatchingSliceValues(a,r,n);o.push(u)}this.valueStack.push({type:"slice",path:e,values:o})}getMatchingSliceValues(e,r,n){let i=[];for(let o of e)(o[ln]??Bi(o,[r],n.discriminator,this.schema.url))===r.name&&i.push(o);for(let o=i.length;o<r.min;o++)if(Gr(r.type[0].code)){let s=Object.create(null);i.push(s),e.push(s)}return i}onExitSlice(){let e=this.valueStack.pop();if(!e)throw new Error("Expected value context to exist in onExitSlice");for(let r of e.values)for(let n=r.length-1;n>=0;n--){let i=r[n];ln in i&&delete i[ln]}}getDefaultValue(){return this.rootValue}};function ap(t,e,r,n,i){let o=Wi(t,e,n,i);r.min>0&&o===void 0&&Gr(r.type[0].code)&&(r.isArray?qi(t,[Object.create(null)],e,r):qi(t,Object.create(null),e,r))}function qi(t,e,r,n){if(r.includes("."))throw new Error("key cannot be nested");let i=r;if(r.includes("[x]")){let o=n.type[0].code;i=r.replace("[x]",U(o))}e===void 0?delete t[i]:t[i]=e}function Wi(t,e,r,n){let i=e.split("."),o=t,s;for(let a=0;a<i.length;a++){let u=i[a];if(u.includes("[x]")){let l=(n?n+".":"")+i.slice(0,a+1).join("."),f=r[l].type[0].code;u=u.replace("[x]",U(f))}if(a===i.length-1){Array.isArray(o)?s=o.map(l=>l[u]):s=o[u];continue}if(Array.isArray(o))o=o.map(l=>l[u]);else if(C(o)){if(o[u]===void 0)return;o=o[u]}else return}return s}function pr(t,e,r,n){if(!(r.fixed||r.pattern))return t;if(Array.isArray(t))return t.map(a=>pr(a,e,r,n));t==null&&(t=Object.create(null));let i=t,o=e.split("."),s=i;for(let a=0;a<o.length;a++){let u=o[a];if(u.includes("[x]")){let d=n[o.slice(0,a+1).join(".")].type[0].code;u=u.replace("[x]",U(d))}if(a===o.length-1){let l=Array.isArray(s)?s:[s];for(let d of l)r.fixed?d[u]??=r.fixed.value:r.pattern&&(d[u]=Js(d[u],r.pattern.value))}else{if(!(u in s)){let l=o.slice(0,a+1).join(".");s[u]=n[l].isArray?[Object.create(null)]:Object.create(null)}s=s[u]}}return i}function Js(t,e){if(Array.isArray(e)&&(Array.isArray(t)||t===void 0))return(t?.length??0)>0?t:le(e);if(C(e)&&(C(t)&&!Array.isArray(t)||t===void 0)){let r=le(t)??Object.create(null);for(let n of Object.keys(e))r[n]=Js(r[n],e[n]);return r}return t}function $i(t,e){if(!t.group)throw new m(A("ConceptMap does not specify a mapping group","ConceptMap.group"));let r=Ks(e),n=cp(r,e.targetsystem?t.group.filter(o=>o.target===e.targetsystem):t.group),i=n.length>0;return{result:i,match:i?n:void 0}}function Ks(t){let e=Object.create(null);if(t.code&&!t.coding&&!t.codeableConcept){if(!t.system)throw new m(A("System parameter must be provided with code"));e[t.system]=[t.code]}else if(t.coding&&!t.code&&!t.codeableConcept)t.coding.code&&(e[t.coding.system??""]=[t.coding.code]);else if(t.codeableConcept&&!t.code&&!t.coding)for(let{system:r,code:n}of t.codeableConcept.coding??v)n&&(e[r??""]=ve(e[r??""],n));else throw t.code||t.coding||t.codeableConcept?new m(A("Ambiguous input: multiple source codings provided")):new m(A("Source Coding (system + code) must be specified"));return e}function cp(t,e){let r=[];for(let[n,i]of Object.entries(t))for(let o of e.filter(s=>(s.source??"")===n)){let s=o.element?.filter(a=>i.includes(a.code)).flatMap(a=>a.target?.map(u=>({equivalence:u.equivalence,concept:{system:o.target,code:u.code,display:u.display}}))??[]);s?.length||(s=up(i,o)),s&&r.push(...s)}return r}function up(t,e){switch(e.unmapped?.mode){case"provided":return t.map(r=>({equivalence:"equal",concept:{system:e.target,code:r}}));case"fixed":return[{equivalence:"equivalent",concept:{system:e.target,code:e.unmapped.code,display:e.unmapped.display}}];default:return}}var lp=[...Zt,"->","<<",">>","=="];function Ys(t){return new Pe(t,Xt,lp).tokenize()}var dp={"-":"disjoint","==":"equal"},ji=class{constructor(e){c(this,"parser");c(this,"structureMap",{resourceType:"StructureMap",status:"active"});this.parser=e}parse(){for(;this.parser.hasMore();){let e=this.parser.peek()?.value;switch(e){case"map":this.parseMap();break;case"uses":this.parseUses();break;case"imports":this.parseImport();break;case"group":this.parseGroup();break;case"conceptmap":this.parseConceptMap();break;default:throw new Error(`Unexpected token: ${e}`)}}return this.structureMap}parseMap(){this.parser.consume("Symbol","map"),this.structureMap.url=this.parser.consume("String").value,this.parser.consume("="),this.structureMap.name=this.parser.consume().value}parseUses(){this.parser.consume("Symbol","uses");let e={};e.url=this.parser.consume("String").value,this.parser.peek()?.value==="alias"&&(this.parser.consume("Symbol","alias"),e.alias=this.parser.consume("Symbol").value),this.parser.consume("Symbol","as"),e.mode=this.parser.consume().value,this.structureMap.structure||(this.structureMap.structure=[]),this.structureMap.structure.push(e)}parseImport(){this.parser.consume("Symbol","imports"),this.structureMap.import||(this.structureMap.import=[]),this.structureMap.import.push(this.parser.consume("String").value)}parseGroup(){let e={};this.parser.consume("Symbol","group"),e.name=this.parser.consume("Symbol").value,e.input=this.parseParameters(),this.parser.peek()?.value==="extends"&&(this.parser.consume("Symbol","extends"),e.extends=this.parser.consume("Symbol").value),this.parser.peek()?.value==="<<"?(this.parser.consume("<<"),e.typeMode=this.parser.consume().value,this.parser.peek()?.value==="+"&&(this.parser.consume("+"),e.typeMode="type-and-types"),this.parser.consume(">>")):e.typeMode="none",e.rule=this.parseRules(),this.structureMap.group||(this.structureMap.group=[]),this.structureMap.group.push(e)}parseParameters(){let e=[];for(this.parser.consume("(");this.parser.hasMore()&&this.parser.peek()?.value!==")";)e.push(this.parseParameter()),this.parser.peek()?.value===","&&this.parser.consume(",");return this.parser.consume(")"),e}parseParameter(){let e={};return e.mode=this.parser.consume().value,e.name=this.parser.consume("Symbol").value,this.parser.peek()?.value===":"&&(this.parser.consume(":"),e.type=this.parser.consume("Symbol").value),e}parseRules(){let e=[];for(this.parser.consume("{");this.parser.hasMore()&&this.parser.peek()?.value!=="}";)e.push(this.parseRule());return this.parser.consume("}"),e}parseRule(){let e={source:this.parseRuleSources()};return this.parser.peek()?.value==="->"&&(this.parser.consume("->"),e.target=this.parseRuleTargets()),this.parser.peek()?.value==="then"&&(this.parser.consume("Symbol","then"),this.parser.peek()?.id==="{"?e.rule=this.parseRules():e.dependent=this.parseRuleDependents()),this.parser.peek()?.id==="String"?e.name=this.parser.consume().value:e.name=e.source?.[0]?.element,this.parser.consume(";"),e}parseRuleSources(){this.parser.hasMore()&&this.parser.peek()?.value==="for"&&this.parser.consume("Symbol","for");let e=[this.parseRuleSource()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleSource());return e}parseRuleSource(){let e={},n=this.parseRuleContext().split(".");if(e.context=n[0],e.element=n[1],this.parser.hasMore()&&this.parser.peek()?.value===":"&&(this.parser.consume(":"),e.type=this.parser.consume().value),this.parser.hasMore()&&this.parser.peek()?.value==="default"&&(this.parser.consume("Symbol","default"),e.defaultValueString=this.parser.consume("String").value),(this.parser.peek()?.value==="first"||this.parser.peek()?.value==="not_first"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="not_last"||this.parser.peek()?.value==="only_one")&&(e.listMode=this.parser.consume().value),this.parser.peek()?.value==="as"&&(this.parser.consume("Symbol","as"),e.variable=this.parser.consume().value),this.parser.peek()?.value==="log"&&(this.parser.consume("Symbol","log"),e.logMessage=this.parser.consume().value),this.parser.peek()?.value==="where"){this.parser.consume("Symbol","where");let i=this.parser.consumeAndParse(S.Arrow);e.condition=i.toString()}if(this.parser.peek()?.value==="check"){this.parser.consume("Symbol","check");let i=this.parser.consumeAndParse(S.Arrow);e.check=i.toString()}return e}parseRuleTargets(){let e=[this.parseRuleTarget()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleTarget());return e}parseRuleTarget(){let e={},n=this.parseRuleContext().split(".");return e.contextType="variable",e.context=n[0],e.element=n[1],this.parser.peek()?.value==="="&&(this.parser.consume("="),this.parseRuleTargetTransform(e)),this.parser.peek()?.value==="as"&&(this.parser.consume("Symbol","as"),e.variable=this.parser.consume().value),this.parser.peek()?.value==="share"&&(this.parser.consume("Symbol","share"),e.listMode=["share"],this.parser.consume("Symbol")),(this.parser.peek()?.value==="first"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="collate")&&(e.listMode=[this.parser.consume().value]),e}parseRuleTargetTransform(e){let r=this.parser.consumeAndParse(S.As);r instanceof ie?(e.transform=r.name,e.parameter=r.args?.map(Xs)):r instanceof G||r instanceof F?(e.transform="copy",e.parameter=[Xs(r)]):(e.transform="evaluate",e.parameter=[{valueString:r.toString()}])}parseRuleContext(){let e=this.parser.consume().value;for(;this.parser.peek()?.value===".";)this.parser.consume("."),e+="."+this.parser.consume().value;return e}parseRuleDependents(){let e=this.parser.consumeAndParse(S.Arrow);return[{name:e.name,variable:e.args.map(r=>r.name)}]}parseConceptMap(){this.parser.consume("Symbol","conceptmap");let e={resourceType:"ConceptMap",status:"active",url:"#"+this.parser.consume("String").value};this.parser.consume("{");let r={},n=this.parser.peek()?.value;for(;n!=="}";)n==="prefix"?this.parseConceptMapPrefix(r):this.parseConceptMapRule(e,r),n=this.parser.peek()?.value;this.parser.consume("}"),this.structureMap.contained||(this.structureMap.contained=[]),this.structureMap.contained.push(e)}parseConceptMapPrefix(e){this.parser.consume("Symbol","prefix");let r=this.parser.consume().value;this.parser.consume("=");let n=this.parser.consume().value;e[r]=n}parseConceptMapRule(e,r){let n=this.parser.consume().value,i=r[n];this.parser.consume(":");let o=this.parser.consume().value,s=dp[this.parser.consume().value],a=this.parser.consume().value,u=r[a];this.parser.consume(":");let l=this.parser.consume().value,d=e?.group?.find(f=>f.source===i&&f.target===u);d||(d={source:i,target:u,element:[]},e.group||(e.group=[]),e.group.push(d)),d.element||(d.element=[]),d.element.push({code:o,target:[{code:l,equivalence:s}]})}};function Xs(t){if(t instanceof F)return{valueId:t.name};if(t instanceof G)return pp(t);throw new Error(`Unknown parameter atom type: ${t.constructor.name} (${t.toString()})`)}function pp(t){switch(t.value.type){case"boolean":return{valueBoolean:t.value.value};case"decimal":return{valueDecimal:t.value.value};case"integer":return{valueInteger:t.value.value};case"dateTime":case"string":return{valueString:t.value.value};default:throw new Error("Unknown target literal type: "+t.value.type)}}var fp=ft().registerInfix("->",{precedence:S.Arrow}).registerInfix(";",{precedence:S.Semicolon});function mp(t){let e=fp.construct(Ys(t));return e.removeComments(),new ji(e).parse()}var pn=class{constructor(e=[]){c(this,"resources");this.resources=e}get(e,r){let n=[];for(let i of this.resources)i.resourceType===e&&i.url&&this.matchesUrl(i.url,r)&&n.push(i);return n}matchesUrl(e,r){if(r.includes("*")){let n=r.split("*");return e.startsWith(n[0])&&e.endsWith(n[1])}else return e===r}};function hp(t,e,r=new pn){return gp({root:t,transformMaps:r},t,e)}function gp(t,e,r){return yp(t,e),ea(t,e),Gi(t,e.group[0],r)}function yp(t,e){let r=mn(t);if(r&&e.import)for(let n of e.import){let i=r.get("StructureMap",n);for(let o of i)ea(t,o)}}function ea(t,e){let r=mn(t);if(r&&e.contained)for(let n of e.contained)(n.resourceType==="StructureMap"||n.resourceType==="ConceptMap")&&r.resources.push(n);for(let n of e.group??v)fn(t,n.name,{type:"StructureMapGroup",value:n})}function Gi(t,e,r){let n=[],i=[];for(let l of e.input)l.mode==="source"&&n.push(l),l.mode==="target"&&i.push(l);if(n.length===0)throw new Error("Missing source definitions");if(i.length===0)throw new Error("Missing target definitions");if(r.length<n.length)throw new Error(`Not enough arguments (got ${r.length}, min ${n.length})`);if(r.length>n.length+i.length)throw new Error(`Too many arguments (got ${r.length}, max ${n.length+i.length})`);let o={},s=[],a=0;for(let l of n)fr(o,l.name,r[a++]);for(let l of i){let d=r[a++]??{type:l.type??"BackboneElement",value:{}};fr(o,l.name,d),s.push(d)}let u={root:t.root,parent:t,variables:o};for(let l of e.rule??v)ta(u,l);return s}function ta(t,e){e.source&&ra(t,e,0)}function ra(t,e,r){let n=e.source[r];for(let i of Sp(t,n))fn(t,"_",i),n.variable&&fn(t,n.variable,i),r<e.source.length-1?ra(t,e,r+1):xp(t,e)}function xp(t,e){if(!vp(t,e)){for(let r of e.target??v)na(t,r);for(let r of e.rule??v)ta(t,r);for(let r of e.dependent??v)kp(t,r)}}function vp(t,e){if(e.target?.length!==1||e.target[0].transform||e.rule||e.dependent)return!1;let r=Fe(t,"_");if(Array.isArray(r)&&(r=r[0]),!r)return!1;let n=Tp(t,r);if(!n)return na(t,{...e.target[0],transform:"copy",parameter:[{valueId:"_"}]}),!0;let i=e.target[0],o=Fe(t,i.context),s=o.value[i.element],a=oa(o,i.element)||Array.isArray(s),u={root:t.root,parent:t,variables:{}},l=Gi(u,n,[r]);return ia(t,i,o,l,a,s),!0}function Tp(t,e){let r=t;for(;r;){if(r.variables){for(let n of Object.values(r.variables))for(let i of Hi(n))if(i.type==="StructureMapGroup"){let o=i.value;if((o.typeMode==="types"||o.typeMode==="type-and-types")&&o.input.length===2&&o.input[0].mode==="source"&&o.input[0].type===e.type&&o.input[1].mode==="target")return o}}r=r.parent}}function Sp(t,e){let r=Fe(t,e.context);if(!r)return[];let n=e.element;if(!n)return[r];let i=k(n,[r]);if(!i||i.length===0)return[];if(e.condition&&!Zs(r,{[e.variable]:i[0]},e.condition))return[];if(e.check&&!Zs(r,{[e.variable]:i[0]},e.check))throw new Error("Check failed: "+e.check);return e.listMode&&(i=bp(e,i)),i}function Zs(t,e,r){return j(k(r,[t],e))}function bp(t,e){switch(t.listMode){case"first":return[e[0]];case"not_first":return e.slice(1);case"last":return[e.at(-1)];case"not_last":return e.slice(0,e.length-1);case"only_one":if(e.length!==1)throw new Error("Expected only one value");break}return e}function na(t,e){let r=Fe(t,e.context);if(!r)throw new Error("Target not found: "+e.context);let n=r.value[e.element],i,o=oa(r,e.element)||Array.isArray(n);if(e.transform)switch(e.transform){case"append":i=Ep(t,e);break;case"cast":i=Rp(t,e);break;case"cc":i=Cp(t,e);break;case"copy":i=Pp(t,e);break;case"create":i=wp(t,e);break;case"evaluate":i=Ap(t,e);break;case"translate":i=Op(t,e);break;case"truncate":i=Ip(t,e);break;case"uuid":i=[{type:"string",value:oe()}];break;default:throw new Error(`Unsupported transform: ${e.transform}`)}else{let s=sa(r,e.element)?.type,a=s?.length===1?s[0].code:void 0;o||n===void 0?i=[a?{type:a,value:{}}:E({})]:i=[a?{type:a,value:n}:E(n)]}ia(t,e,r,i,o,n)}function ia(t,e,r,n,i,o){if(n.length!==0){if(i){o||(o=[],fr(r.value,e.element,o));for(let s of n)o.push(s.value)}else fr(r.value,e.element,n[0].value);e.variable&&fn(t,e.variable,Mp(n))}}function oa(t,e){return sa(t,e)?.isArray}function sa(t,e){return Me(t.type)?.elements?.[e]}function Ep(t,e){let r=Q(t,e.parameter?.[0])?.[0]?.value,n=Q(t,e.parameter?.[1])?.[0]?.value;return[{type:"string",value:(r??"").toString()+(n??"").toString()}]}function Rp(t,e){let r=Q(t,e.parameter?.[0])?.[0];return Q(t,e.parameter?.[1])?.[0]?.value==="string"?[{type:"string",value:r?.value?.toString()}]:[r]}function Cp(t,e){let r=e.parameter;if(r.length===2){let n=Q(t,r[0])?.[0]?.value,i=Q(t,r[1])?.[0]?.value;return[{type:"CodeableConcept",value:{coding:[{system:n,code:i}]}}]}else return[{type:"CodeableConcept",value:{text:Q(t,r[0])?.[0]?.value}}]}function Pp(t,e){return e.parameter.flatMap(r=>Q(t,r))}function wp(t,e){let r={};return e.parameter&&e.parameter.length>0&&(r.resourceType=Q(t,e.parameter?.[0])?.[0]?.value),[E(r)]}function Ap(t,e){let n=Q(t,e.parameter?.[0])[0].value;return k(n,[],aa(t))}function Op(t,e){let r=e.parameter.flatMap(u=>Q(t,u)),n=r[0].value,i=r[1].value,s=mn(t)?.get("ConceptMap",i)[0];if(!s)throw new Error("ConceptMap not found: "+i);let a=$i(s,{system:s.group?.[0]?.source,code:n});return[E(a.match?.[0]?.concept?.code)]}function Ip(t,e){let r=Q(t,e.parameter?.[0])?.[0],n=Q(t,e.parameter?.[1])?.[0]?.value;return r.type==="string"?[{type:"string",value:r.value.substring(0,n)}]:[r]}function kp(t,e){let r=Fe(t,e.name);if(!r)throw new Error("Dependent group not found: "+e.name);let n=e.variable,i=[];for(let s of n){let a=Fe(t,s);if(!a)throw new Error("Dependent variable not found: "+s);i.push(a)}let o={root:t.root,parent:t,variables:{}};Gi(o,r.value,i)}function mn(t){if(t.transformMaps)return t.transformMaps;if(t.parent)return mn(t.parent)}function Q(t,e){let n=_({type:"StructureMapGroupRuleTargetParameter",value:e},"value");if(!n)throw new Error("Missing target parameter: "+JSON.stringify(e));if(n=Hi(n),n.length===1&&n[0].type==="id"){let i=Fe(t,n[0].value);if(!i)throw new Error("Variable not found: "+n[0].value);return Hi(i)}return n}function Fe(t,e){let r=t.variables?.[e];if(r)return r;if(t.parent)return Fe(t.parent,e)}function aa(t,e={}){if(t.parent&&aa(t.parent,e),t.variables)for(let[r,n]of Object.entries(t.variables))e[r]=n,e["%"+r]=n;return e}function fn(t,e,r){t.variables||(t.variables={}),fr(t.variables,e,r)}function fr(t,e,r){if(e==="__proto__"||e==="constructor"||e==="prototype")throw new Error("Invalid key: "+e);t[e]=r}function Hi(t){return Array.isArray(t)?t:[t]}function Mp(t){return t.length===1?t[0]:t}var rt=Object.prototype.hasOwnProperty;function mr(t){return t===void 0?"undefined":t===null?"null":Array.isArray(t)?"array":typeof t}function Dp(t){return t&&typeof t=="object"}function vt(t){if(!Dp(t))return t;if(t.constructor===Array){let r=t.length,n=new Array(r);for(let i=0;i<r;i++)n[i]=vt(t[i]);return n}if(t.constructor===Date)return new Date(+t);let e={};for(let r in t)rt.call(t,r)&&(e[r]=vt(t[r]));return e}function Ji({op:t}){return t==="remove"||t==="replace"||t==="copy"||t==="move"}function zi(t,e){let r=[];for(let n in t)rt.call(t,n)&&t[n]!==void 0&&!(rt.call(e,n)&&e[n]!==void 0)&&r.push(n);return r}function Vp(t){let e=t.length,r={};for(let n=0;n<e;n++){let i=t[n];for(let o in i)rt.call(i,o)&&i[o]!==void 0&&(r[o]=(r[o]||0)+1)}for(let n in r)r[n]<e&&delete r[n];return Object.keys(r)}function _p(t,e){let r=[];for(let n in t)rt.call(t,n)&&t[n]!==void 0&&rt.call(e,n)&&e[n]!==void 0&&r.push(n);return r}function Lp(t){return t.op==="add"}function Np(t){return t.op==="remove"}function Qi(t,e){return{operations:t.operations.concat(e),cost:t.cost+1}}function ca(t,e,r,n=we){let i=Math.max(t.length,e.length),o=new Map([[0,{operations:[],cost:0}]]);function s(f,h){let b=f*i+h,P=o.get(b);if(P===void 0){if(f>0&&h>0&&!n(t[f-1],e[h-1],r.add(String(f-1))).length)P=s(f-1,h-1);else{let Oe=[];if(f>0){let Be=s(f-1,h),qe={op:"remove",index:f-1};Oe.push(Qi(Be,qe))}if(h>0){let Be=s(f,h-1),qe={op:"add",index:f-1,value:e[h-1]};Oe.push(Qi(Be,qe))}if(f>0&&h>0){let Be=s(f-1,h-1),qe={op:"replace",index:f-1,original:t[f-1],value:e[h-1]};Oe.push(Qi(Be,qe))}P=Oe.sort((Be,qe)=>Be.cost-qe.cost)[0]}o.set(b,P)}return P}let a=isNaN(t.length)||t.length<=0?0:t.length,u=isNaN(e.length)||e.length<=0?0:e.length,l=s(a,u).operations,[d]=l.reduce(([f,h],b)=>{if(Lp(b)){let P=b.index+1+h,Oe=P<a+h?String(P):"-",vo={op:b.op,path:r.add(Oe).toString(),value:b.value};return[f.concat(vo),h+1]}else if(Np(b)){let P={op:b.op,path:r.add(String(b.index+h)).toString()};return[f.concat(P),h-1]}else{let P=r.add(String(b.index+h)),Oe=n(b.original,b.value,P);return[f.concat(...Oe),h]}},[[],0]);return d}function ua(t,e,r,n=we){let i=[];return zi(t,e).forEach(o=>{i.push({op:"remove",path:r.add(o).toString()})}),zi(e,t).forEach(o=>{i.push({op:"add",path:r.add(o).toString(),value:e[o]})}),_p(t,e).forEach(o=>{i.push(...n(t[o],e[o],r.add(o)))}),i}function we(t,e,r,n=we){if(t===e)return[];let i=mr(t),o=mr(e);return i==="array"&&o==="array"?ca(t,e,r,n):i==="object"&&o==="object"?ua(t,e,r,n):[{op:"replace",path:r.toString(),value:e}]}function la(t){return t.replace(/~1/g,"/").replace(/~0/g,"~")}function da(t){return t.replace(/~/g,"~0").replace(/\//g,"~1")}var M=class t{constructor(e=[""]){c(this,"tokens");this.tokens=e}static fromJSON(e){let r=e.split("/").map(la);if(r[0]!=="")throw new Error(`Invalid JSON Pointer: ${e}`);return new t(r)}toString(){return this.tokens.map(da).join("/")}evaluate(e){let r=null,n="",i=e;for(let o=1,s=this.tokens.length;o<s;o++){if(r=i,n=this.tokens[o],n==="__proto__"||n==="constructor"||n==="prototype")throw new Error("Invalid path: "+this.toString());if(r!=null&&(typeof r=="object"||typeof r=="function")&&!Object.hasOwn(r,n)&&n in r)throw new Error("Invalid inherited key: "+n);i=r?.[n]}return{parent:r,key:n,value:i}}get(e){return this.evaluate(e).value}set(e,r){let n=this.evaluate(e);n.parent&&(n.parent[n.key]=r)}push(e){this.tokens.push(e)}add(e){let r=this.tokens.concat(String(e));return new t(r)}parent(){let e=this.tokens.length>1?this.tokens.slice(0,-1):[""];return new t(e)}};var z=class extends Error{constructor(r){super(`Value required at path: ${r}`);c(this,"path");this.path=r,this.name="MissingError"}},hn=class extends Error{constructor(r,n){super(`Test failed: ${r} != ${n}`);c(this,"actual");c(this,"expected");this.actual=r,this.expected=n,this.name="TestError"}};function Ki(t,e,r){if(Array.isArray(t))if(e==="-")t.push(r);else{let n=parseInt(e,10);t.splice(n,0,r)}else t[e]=r}function pa(t,e){if(Array.isArray(t)){let r=parseInt(e,10);t.splice(r,1)}else delete t[e]}function hr(t,e,r){let n=M.fromJSON(e.path);if(r?.implicitArrayCreation&&n.tokens[n.tokens.length-1]==="-"){let o=n.parent().evaluate(t);o.value===void 0&&mr(o.parent)==="object"&&(o.parent[o.key]=[])}let i=n.evaluate(t);return i.parent===void 0?new z(e.path):r?.implicitArrayCreation&&i.key==="-"&&!Array.isArray(i.parent)?new z(e.path):(Ki(i.parent,i.key,vt(e.value)),null)}function yn(t,e,r){let n=M.fromJSON(e.path).evaluate(t);return n.value===void 0?new z(e.path):(pa(n.parent,n.key),null)}function xn(t,e,r){let n=M.fromJSON(e.path).evaluate(t);if(n.parent===null)return new z(e.path);if(Array.isArray(n.parent)){if(parseInt(n.key,10)>=n.parent.length)return new z(e.path)}else if(n.value===void 0)return new z(e.path);return n.parent[n.key]=vt(e.value),null}function vn(t,e,r){let n=M.fromJSON(e.from).evaluate(t);if(n.value===void 0)return new z(e.from);let i=M.fromJSON(e.path).evaluate(t);return i.parent===void 0?new z(e.path):(pa(n.parent,n.key),Ki(i.parent,i.key,n.value),null)}function fa(t,e,r){let n=M.fromJSON(e.from).evaluate(t);if(n.value===void 0)return new z(e.from);let i=M.fromJSON(e.path).evaluate(t);return i.parent===void 0?new z(e.path):(Ki(i.parent,i.key,vt(n.value)),null)}function ma(t,e,r){let n=M.fromJSON(e.path).evaluate(t);return we(n.value,e.value,new M).length?new hn(n.value,e.value):null}var gn=class extends Error{constructor(r){super(`Invalid operation: ${r.op}`);c(this,"operation");this.operation=r,this.name="InvalidOperationError"}};function Yi(t,e,r){switch(e.op){case"add":return hr(t,e,r);case"remove":return yn(t,e,r);case"replace":return xn(t,e,r);case"move":return vn(t,e,r);case"copy":return fa(t,e,r);case"test":return ma(t,e,r);default:return new gn(e)}}function Fp(t,e,r){return e.map(n=>Yi(t,n,r))}function Up(t){function e(r,n,i){let o=t(r,n,i);return Array.isArray(o)?o:we(r,n,i,e)}return e}function Bp(t,e,r){let n=new M;return(r?Up(r):we)(t,e,n)}function ha(t,e){let r=M.fromJSON(e).evaluate(t);if(r!==void 0)return{op:"test",path:e,value:r.value}}function qp(t,e){let r=new Array;return e.filter(Ji).forEach(n=>{let i=ha(t,n.path);if(i&&r.push(i),"from"in n){let o=ha(t,n.from);o&&r.push(o)}}),r}var Wp=Object.freeze({implicitArrayCreation:!0});function $p(t){let e=[];for(let r of t.parameter??[]){if(r.name!=="operation")continue;let n={};for(let i of r.part??[])switch(i.name){case"type":n.type=i.valueCode;break;case"path":n.path=i.valueString;break;case"name":n.name=i.valueString;break;case"index":n.index=i.valueInteger;break;case"source":n.source=i.valueInteger;break;case"destination":n.destination=i.valueInteger;break;case"value":n.value=_({type:"ParametersParameter",value:i},"value");break}e.push(n)}return e}function jp(t,e){for(let r of e){let n=k(r.path,[t]);switch(r.type){case"add":{let i=Xi(n,r);if(!C(i?.value))throw new Error(`Failed to resolve base object for add operation at path '${r.path}'`);if(gr(i,r),!r.name)throw new Error(`No name present for add operation at path '${r.path}'`);let o=M.fromJSON(He(i.path));o.push(r.name),yi(t.type,`${i.path}.${r.name}`)?.isArray&&o.push("-"),hr(t.value,{op:"add",path:o.toString(),value:r.value.value},Wp);break}case"replace":{let i=Xi(n,r);if(!i)throw new Error(`Failed to resolve target value for replace operation at path '${r.path}'`);gr(i,r),xn(t.value,{op:"replace",path:He(i.path),value:r.value.value});break}case"move":{let i=ga(n,r),o=M.fromJSON(He(i));vn(t.value,{op:"move",from:o.add(r.source.toString()).toString(),path:o.add(r.destination.toString()).toString()});break}case"insert":{if(typeof r.index!="number")throw new Error(`No index present for insert operation at path '${r.path}'`);let i=ga(n,r),o=M.fromJSON(He(i));o.push(r.index.toString()),hr(t.value,{op:"add",path:o.toString(),value:r.value.value});break}case"delete":{let i=Xi(n,r);i&&(gr(i,r),yn(t.value,{op:"remove",path:He(i.path)}))}}}}function gr(t,e){if(!("path"in t))throw new Error(`Cannot resolve pointer for value at path '${e.path}'`)}function Xi(t,e){if(t.length>1)throw new Error(`Resolved multiple base values for ${e.type} operation at path '${e.path}'`);return t[0]}var Hp=/\[(?<index>\d+)\]$/;function Zi(t){let e=Hp.exec(t)?.groups?.index;return e?Number.parseInt(e,10):-1}function ga(t,e){if(Zi(e.path)!==-1)throw new Error(`Failed to resolve base collection for ${e.type} operation at path '${e.path}'`);if(!t.length)throw new Error(`Failed to resolve base for ${e.type} operation at path '${e.path}'`);gr(t[0],e);let r=t[0].path;if(Zi(r)!==0)throw new Error(`Failed to resolve base collection for ${e.type} operation at path '${e.path}'`);let n=r.slice(0,r.lastIndexOf("["));for(let i=1;i<t.length;i++){let o=t[i];if(gr(o,e),!o.path.startsWith(n))throw new Error(`Cannot patch heterogeneous collection for ${e.type} operation at path '${e.path}'`);if(Zi(o.path)!==i)throw new Error(`Cannot patch misordered collection for ${e.type} operation at path '${e.path}'`)}if("index"in e&&!eo(e.index,t))throw new Error(`Index out of bounds for ${e.type} operation: ${e.index}`);if("source"in e&&!eo(e.source,t))throw new Error(`Source index out of bounds for ${e.type} operation: ${e.source}`);if("destination"in e&&!eo(e.destination,t))throw new Error(`Destination index out of bounds for ${e.type} operation: ${e.destination}`);return n}function eo(t,e){return t>=0&&t<=e.length}var Gp=" ".repeat(2),to=class{constructor(e=Gp,r=!0){c(this,"indent");c(this,"b");c(this,"indentCount");this.indent=e,this.b=[],this.indentCount=0,r&&(this.appendNoWrap("// SPDX-FileCopyrightText: Copyright Orangebot, Inc. and Medplum contributors"),this.appendNoWrap("// SPDX-License-Identifier: Apache-2.0"),this.appendNoWrap("/*"),this.appendNoWrap(" * This is a generated file"),this.appendNoWrap(" * Do not edit manually."),this.appendNoWrap(" */"),this.newLine())}newLine(){this.b.push(`
`)}appendNoWrap(e){this.b.push(this.indent.repeat(this.indentCount)),this.b.push(e),this.b.push(`
`)}append(e){let r=this.indent.repeat(this.indentCount)+e;if(r.length<160)this.b.push(r),this.b.push(`
`);else{let n=!0;for(let i of ya(r,120-this.indent.length*this.indentCount))n?this.b.push(this.indent.repeat(this.indentCount)):this.b.push(this.indent.repeat(this.indentCount+2)),this.b.push(i.trim()),this.b.push(`
`),n=!1}}toString(){return this.b.join("").replaceAll(`
`,`
`)}};function ya(t,e){let r=[],n=[],i=0;return t.split(" ").forEach(function(o){i+o.length>e&&(r.push(n.join(" ").trim()),n=[],i=0),i+=o.length+1,n.push(o)}),n.length>0&&r.push(n.join(" ").trim()),r}var Qp=[...Zt,"eq","ne","co"];function xa(t){return new Pe(t,Xt,Qp,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var yr=class{constructor(e,r,n){c(this,"path");c(this,"operator");c(this,"value");this.path=e,this.operator=r,this.value=n}},xr=class{constructor(e){c(this,"child");this.child=e}},vr=class{constructor(e,r,n){c(this,"keyword");c(this,"left");c(this,"right");this.keyword=e,this.left=r,this.right=n}};var zp={eq:g.EXACT,ne:g.NOT_EQUALS,co:g.CONTAINS,sw:g.STARTS_WITH,ew:void 0,gt:g.GREATER_THAN,lt:g.LESS_THAN,ge:g.GREATER_THAN_OR_EQUALS,le:g.LESS_THAN_OR_EQUALS,ap:g.APPROXIMATELY,sa:g.STARTS_AFTER,eb:g.ENDS_BEFORE,pr:g.PRESENT,po:void 0,ss:void 0,sb:void 0,in:g.IN,ni:g.NOT_IN,re:g.EQUALS,identifier:g.IDENTIFIER};function Jp(t){let e=zp[t];if(!e)throw new m(A("Invalid operator: "+t));return e}var ro=class{constructor(e){c(this,"parser");this.parser=e}parse(){let e;this.parser.peek()?.value==="("?(this.parser.consume("("),e=this.parse(),this.parser.consume(")")):this.parser.peek()?.value==="not"?(this.parser.consume("Symbol","not"),this.parser.consume("("),e=new xr(this.parse()),this.parser.consume(")")):e=new yr(this.parser.consume("Symbol").value,Jp(this.parser.consume("Symbol").value),this.parser.consume().value);let r=this.parser.peek()?.value;return r==="and"||r==="or"?(this.parser.consume("Symbol",r),new vr(r,e,this.parse())):e}},Kp=ft();function Yp(t){let e=Kp.construct(xa(t));e.removeComments();let r=new ro(e).parse(),n=e.peek();if(n)throw new m(A("Unexpected token in _filter expression: "+n.value));return r}var Ta={AA:"AA",AE:"AE",AR:"AR",CA:"CA",CE:"CE",CR:"CR"};function Sa(t){return t!==void 0&&Object.hasOwn(Ta,t)}var Xp={AA:"OK",AE:"Application Error",AR:"Application Reject",CA:"Commit Accept",CE:"Commit Error",CR:"Commit Reject"},Ae=class{constructor(e="\r",r="|",n="^",i="~",o="\\",s="&"){c(this,"segmentSeparator");c(this,"fieldSeparator");c(this,"componentSeparator");c(this,"repetitionSeparator");c(this,"escapeCharacter");c(this,"subcomponentSeparator");this.segmentSeparator=e,this.fieldSeparator=r,this.componentSeparator=n,this.repetitionSeparator=i,this.escapeCharacter=o,this.subcomponentSeparator=s}getMsh1(){return this.fieldSeparator}getMsh2(){return this.componentSeparator+this.repetitionSeparator+this.escapeCharacter+this.subcomponentSeparator}},no=class t{constructor(e,r=new Ae){c(this,"context");c(this,"_segments");c(this,"segmentsByName");c(this,"cachedString");c(this,"allSegmentsParsed");this.context=r,this._segments=e,this.segmentsByName=va(e),this.allSegmentsParsed=e.every(n=>typeof n!="string"),this.bindSegments()}get segments(){if(!this.allSegmentsParsed){for(let e=0;e<this._segments.length;e++)typeof this._segments[e]=="string"&&this.parseSegment(e);this.allSegmentsParsed=!0}return this._segments}get header(){let e=this.parseSegment(0);if(!e)throw new Error("Can't get header before first segment added");return e}get(e){return this.getSegment(e)}getAll(e){return this.getAllSegments(e)}getSegment(e){if(typeof e=="number")return this.parseSegment(e);let r=this.segmentsByName.get(e);if(r?.length)return this.parseSegment(r[0])}getAllSegments(e){let r=this.segmentsByName.get(e);return r?r.map(n=>this.parseSegment(n)):[]}parseSegment(e){let r=this._segments[e];if(r===void 0)return;if(typeof r!="string")return r;let n=Tt.parse(r,this.context);return n.onModified=()=>{this.cachedString=void 0},this._segments[e]=n,n}toString(){return this.cachedString??=this._segments.map(e=>typeof e=="string"?e:e.toString()).join(this.context.segmentSeparator),this.cachedString}getAckType(){let e=this.getSegment("MSA")?.getField(1)?.toString()?.toUpperCase();return Sa(e)?e:void 0}buildAck(e){let r=new Date,n=this.getSegment("MSH"),i=n?.getField(3)?.toString()??"",o=n?.getField(4)?.toString()??"",s=n?.getField(5)?.toString()??"",a=n?.getField(6)?.toString()??"",u=n?.getField(10)?.toString()??"",l=n?.getField(12)?.toString()??"2.5.1",d=e?.ackCode??"AA";return new t([new Tt(["MSH",this.context.getMsh2(),s,a,i,o,ba(r),"",this.buildAckMessageType(n),r.getTime().toString(),"P",l],this.context),new Tt(["MSA",d,u,Xp[d]],this.context),...e?.errSegment?[e.errSegment]:[]])}buildAckMessageType(e){let r=e?.getField(9),n=r?.getComponent(2),i=r?.getComponent(3),o="ACK";return n&&i?o=`ACK^${n}^ACK`:n&&(o=`ACK^${n}`),o}static parse(e){if(!e.startsWith("MSH")){let i=new Error("Invalid HL7 message");throw i.type="entity.parse.failed",i}let r=new Ae("\r",e.charAt(3),e.charAt(4),e.charAt(5),e.charAt(6),e.charAt(7)),n=new t(e.split(/[\r\n]+/),r);return n.cachedString=e,n}setSegment(e,r){if(r.name==="MSH"){if(typeof e=="number"){if(e!==0)return!1}else if(this.findSegmentIndexByName(e)!==0)return!1}else if(typeof e=="number"&&e===0&&r.name!=="MSH")return!1;if(typeof e=="number")return e>=this._segments.length?(this._segments.push(r),this.invalidateCache(),!0):(this._segments[e]=r,this.invalidateCache(),!0);let n=this.findSegmentIndexByName(e);return n===0&&r.name!=="MSH"?!1:n!==-1?(this._segments[n]=r,this.invalidateCache(),!0):!1}findSegmentIndexByName(e){return this.segmentsByName.get(e)?.[0]??-1}invalidateCache(){this.segmentsByName=va(this._segments),this.cachedString=void 0,this.bindSegments()}bindSegments(){let e=()=>{this.cachedString=void 0};for(let r of this._segments)typeof r!="string"&&(r.onModified=e)}};function va(t){let e=new Map;for(let r=0;r<t.length;r++){let n=t[r],i=typeof n=="string"?n.slice(0,3):n.name,o=e.get(i);o?o.push(r):e.set(i,[r])}return e}var Tt=class t{constructor(e,r=new Ae){c(this,"context");c(this,"name");c(this,"_fields");c(this,"allFieldsParsed");c(this,"cachedString");c(this,"onModified");this.context=r,this._fields=e,this.allFieldsParsed=e.every(i=>typeof i!="string");let n=e[0];this.name=typeof n=="string"?n:n.components[0][0],this.bindFields()}get fields(){if(!this.allFieldsParsed){for(let e=0;e<this._fields.length;e++)typeof this._fields[e]=="string"&&this.parseField(e);this.allFieldsParsed=!0}return this._fields}get(e){return this.parseField(e)}getField(e){if(this.name==="MSH"){if(e===1)return new he([[this.context.getMsh1()]],this.context);if(e===2)return new he([[this.context.getMsh2()]],this.context);if(e>2)return this.parseField(e-1)}return this.parseField(e)}parseField(e){let r=this._fields[e];if(r===void 0)return;if(typeof r!="string")return r;let n=he.parse(r,this.context);return n.onModified=()=>{this.cachedString=void 0,this.onModified?.()},this._fields[e]=n,n}getComponent(e,r,n,i=0){return this.getField(e)?.getComponent(r,n,i)??""}toString(){return this.cachedString??=this._fields.map(e=>typeof e=="string"?e:e.toString()).join(this.context.fieldSeparator),this.cachedString}static parse(e,r=new Ae){let n=new t(e.split(r.fieldSeparator),r);return n.cachedString=e,n}setField(e,r){if(this.name==="MSH"){if(e===1||e===2)return!1;if(e>2){let n=e-1;for(;this._fields.length<=n;)this._fields.push(new he([[""]],this.context));return this._fields[n]=typeof r=="string"?he.parse(r,this.context):r,this.invalidateCache(),!0}}for(;this._fields.length<=e;)this._fields.push(new he([[""]],this.context));return this._fields[e]=typeof r=="string"?he.parse(r,this.context):r,this.invalidateCache(),!0}setComponent(e,r,n,i,o=0){let s=this.getField(e);return s?s.setComponent(r,n,i,o):!1}invalidateCache(){this.cachedString=void 0,this.bindFields(),this.onModified?.()}bindFields(){let e=()=>{this.cachedString=void 0,this.onModified?.()};for(let r of this._fields)typeof r!="string"&&(r.onModified=e)}},he=class t{constructor(e,r=new Ae){c(this,"context");c(this,"components");c(this,"onModified");c(this,"cachedString");this.context=r,this.components=e}get(e,r,n=0){return this.getComponent(e+1,r,n)}getComponent(e,r,n=0){let i=this.components[n][e-1]??"";return r!==void 0&&(i=i.split(this.context.subcomponentSeparator)[r]??""),i}toString(){return this.cachedString??=this.components.map(e=>e.join(this.context.componentSeparator)).join(this.context.repetitionSeparator),this.cachedString}static parse(e,r=new Ae){let n=new t(e.split(r.repetitionSeparator).map(i=>i.split(r.componentSeparator)),r);return n.cachedString=e,n}setComponent(e,r,n,i=0){if(e<1)return!1;if(i>=this.components.length)for(;this.components.length<=i;)this.components.push([""]);if(n===void 0)this.components[i][e-1]=r;else{if(n<0)return!1;{let s=(this.components[i][e-1]||"").split(this.context.subcomponentSeparator);for(;s.length<=n;)s.push("");s[n]=r,this.components[i][e-1]=s.join(this.context.subcomponentSeparator)}}return this.invalidateCache(),!0}invalidateCache(){this.cachedString=void 0,this.onModified?.()}};function Zp(t,e){if(!t)return;let r=nt(t.slice(0,4),0),n=nt(t.slice(4,6),1)-1,i=nt(t.slice(6,8),1),o=nt(t.slice(8,10),0),s=nt(t.slice(10,12),0),a=nt(t.slice(12,14),0),u=0;t.includes(".")&&(u=nt(t.slice(15,19),0));let l=new Date(Date.UTC(r,n,i,o,s,a,u)),d=ef(t,e?.tzOffset);return d!==0&&(l=new Date(l.getTime()-d)),l.toISOString()}function nt(t,e){let r=Number.parseInt(t,10);return Number.isNaN(r)?e:r}function ef(t,e){let r=e,n=t.indexOf("+");n!==-1&&(r=t.slice(n));let i=t.indexOf("-");if(i!==-1&&(r=t.slice(i)),!r)return 0;let o=r.startsWith("-")?-1:1;r=r.slice(1).replace(":","");let s=Number.parseInt(r.slice(0,2),10),a=Number.parseInt(r.slice(2,4),10);return o*(s*60*60*1e3+a*60*1e3)}function ba(t){let e=t instanceof Date?t:new Date(t),n=e.toISOString().replaceAll(/[-:T]/g,"").replace(/(\.\d+)?Z$/,""),i=e.getUTCMilliseconds();return i>0&&(n+="."+i.toString()),n}var it={NONE:0,ERROR:1,WARN:2,INFO:3,DEBUG:4},Ea=["NONE","ERROR","WARN","INFO","DEBUG"],io=class t{constructor(e,r={},n=it.INFO,i={}){c(this,"write");c(this,"metadata");c(this,"options");c(this,"prefix");c(this,"level");this.write=e,this.metadata=r,this.level=n,this.options=i,i?.prefix&&(this.prefix=i.prefix),this.error=this.error.bind(this),this.warn=this.warn.bind(this),this.info=this.info.bind(this),this.debug=this.debug.bind(this),this.log=this.log.bind(this)}clone(e){let r=this.getLoggerConfig(),n=e?{...r,...e,options:{...r.options,...e.options}}:r;return new t(n.write,n.metadata,n.level,n.options)}getLoggerConfig(){let{write:e,metadata:r,level:n,options:i}=this;return{write:e,metadata:r,level:n,options:i}}error(e,r){this.log(it.ERROR,e,r)}warn(e,r){this.log(it.WARN,e,r)}info(e,r){this.log(it.INFO,e,r)}debug(e,r){this.log(it.DEBUG,e,r)}log(e,r,n){if(e>this.level)return;let i;if(Or(n))i=Tr(n);else if(n){i={...n};for(let[o,s]of Object.entries(i))s instanceof Error&&(i[o]=Tr(s))}this.write(JSON.stringify({level:Ea[e],timestamp:new Date().toISOString(),msg:this.prefix?`${this.prefix}${r}`:r,...i,...this.metadata}))}};function tf(t){let e=it[t.toUpperCase()];if(e===void 0)throw new Error(`Invalid log level: ${t}`);return e}function Tr(t,e=0,r=10){if(e>=r)return{error:"Max error depth reached"};let n={error:t.toString(),stack:t.stack?.split(`
`)};t.name&&t.name!=="Error"&&(n.name=t.name),t.message&&(n.message=t.message),"cause"in t&&t.cause!==void 0&&(t.cause instanceof Error?n.cause=Tr(t.cause,e+1,r):n.cause=t.cause);let i=Object.getOwnPropertyNames(t).filter(o=>!["name","message","stack","cause"].includes(o));for(let o of i)try{let s=t[o];s instanceof Error?n[o]=Tr(s,e+1,r):n[o]=s}catch{}return n}var Ra="Invalid response from order medication bot",rf="Invalid response from medication search bot",Ca="Invalid response from order-set bot",Pa="https://medplum.com/fhir/CodeSystem/medication-request-status-reason",wa="response-not-received";function nf(){return{coding:[{system:Pa,code:wa,display:"Order-medication response not received"}],text:"The order-medication operation did not return a verifiable response; vendor-side state is unknown."}}function Aa(t){if(typeof t!="object"||t===null)return!1;let e=t;return typeof e.orderId=="number"&&Number.isFinite(e.orderId)&&typeof e.vendorPatientId=="number"&&Number.isFinite(e.vendorPatientId)&&typeof e.launchUrl=="string"&&e.launchUrl.length>0}function Oa(t){if(typeof t!="object"||t===null)return!1;let e=t;return typeof e.launchUrl=="string"&&e.launchUrl.length>0}function of(t){return Array.isArray(t)?t.every(e=>D(e,"Medication")):!1}function sf(t,e){return Hr(t,e.pendingOrderIdSystem)}function af(t,e){let r=De(t,e.pendingOrderStatusUrl);return typeof r=="string"?r:void 0}function cf(t,e){let r=De(t,e.iframeUrlExtension);return typeof r=="string"?r:void 0}function x(t,e,r){return{name:t,[e]:r}}function Ue(t){if(t.resource!==void 0)return t.resource;if(t.part?.length)return t.part;for(let e of Object.keys(t))if(e.startsWith("value"))return t[e]}function uf(t){let e=[];t.term!==void 0&&e.push(x("term","valueString",t.term)),t.ndc!==void 0&&e.push(x("ndc","valueString",t.ndc)),t.rxNorm!==void 0&&e.push(x("rxNorm","valueString",t.rxNorm)),t.routedMedId!==void 0&&e.push(x("routedMedId","valueInteger",t.routedMedId));for(let r of t.gcnSeqnos??[])e.push(x("gcnSeqnos","valueInteger",r));return t.searchOtc!==void 0&&e.push(x("searchOtc","valueBoolean",t.searchOtc)),t.searchSupply!==void 0&&e.push(x("searchSupply","valueBoolean",t.searchSupply)),t.searchBrand!==void 0&&e.push(x("searchBrand","valueBoolean",t.searchBrand)),t.searchGeneric!==void 0&&e.push(x("searchGeneric","valueBoolean",t.searchGeneric)),t.includeCode!==void 0&&e.push(x("includeCode","valueBoolean",t.includeCode)),t.quantityQualifiers!==void 0&&e.push(x("quantityQualifiers","valueBoolean",t.quantityQualifiers)),{resourceType:"Parameters",parameter:e}}function lf(t,e){let r=[];return e.ndc!==void 0&&r.push(x("ndc","valueString",e.ndc)),e.rxNorm!==void 0&&r.push(x("rxNorm","valueString",e.rxNorm)),e.routedMedId!==void 0&&r.push(x("routedMedId","valueInteger",e.routedMedId)),e.gcnSeqno!==void 0&&r.push(x("gcnSeqno","valueInteger",e.gcnSeqno)),e.drugName!==void 0&&r.push(x("drugName","valueString",e.drugName)),e.line1!==void 0&&r.push(x("line1","valueString",e.line1)),r.push(x("quantity","valueDecimal",e.quantity)),e.quantityQualifier!==void 0&&r.push(x("quantityQualifier","valueString",e.quantityQualifier)),e.refill!==void 0&&r.push(x("refill","valueInteger",e.refill)),e.drugOrder!==void 0&&r.push(x("drugOrder","valueInteger",e.drugOrder)),e.sigLine3!==void 0&&r.push(x("sigLine3","valueString",e.sigLine3)),e.useSubstitution!==void 0&&r.push(x("useSubstitution","valueBoolean",e.useSubstitution)),{name:t,part:r}}function df(t){let e=[];if(e.push(x("patientId","valueId",t.patientId)),t.medicationRequestId!==void 0&&e.push(x("medicationRequestId","valueId",t.medicationRequestId)),t.combinationMed!==void 0&&e.push(x("combinationMed","valueBoolean",t.combinationMed)),t.drugs)for(let n of t.drugs)e.push(lf("drugs",n));if(t.compoundTitle!==void 0&&e.push(x("compoundTitle","valueString",t.compoundTitle)),t.compoundQuantity!==void 0&&e.push(x("compoundQuantity","valueDecimal",t.compoundQuantity)),t.compoundQuantityQualifier!==void 0&&e.push(x("compoundQuantityQualifier","valueString",t.compoundQuantityQualifier)),t.compoundSigs)for(let n of t.compoundSigs){let i=[x("sigOrder","valueInteger",n.sigOrder),x("line3","valueString",n.line3)];n.drugId!==void 0&&i.push(x("drugId","valueInteger",n.drugId)),e.push({name:"compoundSigs",part:i})}if(t.conditionIds)for(let n of t.conditionIds)e.push(x("conditionIds","valueId",n));if(t.coverageId!==void 0&&e.push(x("coverageId","valueId",t.coverageId)),t.payerOrganizationId!==void 0&&e.push(x("payerOrganizationId","valueId",t.payerOrganizationId)),t.pharmacyOrganizationId!==void 0&&e.push(x("pharmacyOrganizationId","valueId",t.pharmacyOrganizationId)),t.diagnoses)for(let n of t.diagnoses)e.push({name:"diagnoses",part:[x("icdId","valueString",n.icdId),x("name","valueString",n.name)]});t.pharmacyNcpdpId!==void 0&&e.push(x("pharmacyNcpdpId","valueString",t.pharmacyNcpdpId)),t.pharmacyName!==void 0&&e.push(x("pharmacyName","valueString",t.pharmacyName)),t.writtenDate!==void 0&&e.push(x("writtenDate","valueDate",t.writtenDate)),t.fillDate!==void 0&&e.push(x("fillDate","valueDate",t.fillDate)),t.durationDays!==void 0&&e.push(x("durationDays","valueInteger",t.durationDays)),t.pharmacyNote!==void 0&&e.push(x("pharmacyNote","valueString",t.pharmacyNote)),t.patientInstruction!==void 0&&e.push(x("patientInstruction","valueString",t.patientInstruction)),t.appId!==void 0&&e.push(x("appId","valueString",t.appId));let r=K(t.organization);return r!==void 0&&e.push(x("organizationId","valueString",r)),{resourceType:"Parameters",parameter:e}}function pf(t){let e={};for(let n of t.parameter??[])n.name&&(e[n.name]=Ue(n));let r={orderId:typeof e.orderId=="number"?e.orderId:Number.NaN,vendorPatientId:typeof e.vendorPatientId=="number"?e.vendorPatientId:Number.NaN,launchUrl:typeof e.launchUrl=="string"?e.launchUrl:"",medicationRequestId:typeof e.medicationRequestId=="string"?e.medicationRequestId:void 0,pendingOrderStatus:e.pendingOrderStatus==="queued"||e.pendingOrderStatus==="reused"?e.pendingOrderStatus:void 0};if(!Aa(r))throw new Error(Ra);return r}function ff(t){let e=[];e.push(x("patientId","valueId",t.patientId)),t.planDefinitionId!==void 0&&e.push(x("planDefinitionId","valueId",t.planDefinitionId)),t.vendorOrderSetId!==void 0&&(typeof t.vendorOrderSetId=="number"?e.push(x("vendorOrderSetId","valueInteger",t.vendorOrderSetId)):e.push(x("vendorOrderSetId","valueString",t.vendorOrderSetId))),t.appId!==void 0&&e.push(x("appId","valueString",t.appId));let r=K(t.organization);return r!==void 0&&e.push(x("organizationId","valueString",r)),{resourceType:"Parameters",parameter:e}}function mf(t){let e={};for(let n of t.parameter??[])n.name&&(e[n.name]=Ue(n));let r={launchUrl:typeof e.launchUrl=="string"?e.launchUrl:"",vendorPatientId:typeof e.vendorPatientId=="number"||typeof e.vendorPatientId=="string"?e.vendorPatientId:void 0,vendorOrderSetId:typeof e.vendorOrderSetId=="number"||typeof e.vendorOrderSetId=="string"?e.vendorOrderSetId:void 0,planDefinitionId:typeof e.planDefinitionId=="string"?e.planDefinitionId:void 0};if(!Oa(r))throw new Error(Ca);return r}var Ia="Invalid response from checkout-medications bot";function ka(t){if(typeof t!="object"||t===null)return!1;let e=t;return typeof e.approvalUrl=="string"&&e.approvalUrl.length>0&&typeof e.vendorPatientId=="number"&&Number.isFinite(e.vendorPatientId)&&Array.isArray(e.items)}function hf(t){let e=[];e.push(x("patientId","valueId",t.patientId));for(let n of t.medicationRequestIds)e.push(x("medicationRequestIds","valueId",n));t.appId!==void 0&&e.push(x("appId","valueString",t.appId));let r=K(t.organization);return r!==void 0&&e.push(x("organizationId","valueString",r)),{resourceType:"Parameters",parameter:e}}function gf(t){if(!t?.length)return;let e={};for(let i of t)i.name&&(e[i.name]=Ue(i));let r=typeof e.medicationRequestId=="string"?e.medicationRequestId:"",n=e.status==="queued"||e.status==="failed"?e.status:void 0;if(!(!r||!n))return{medicationRequestId:r,status:n,vendorLineId:typeof e.vendorLineId=="string"?e.vendorLineId:void 0,duplicate:e.duplicate===!0?!0:void 0,error:typeof e.error=="string"?e.error:void 0}}function yf(t){let e=[],r={};for(let i of t.parameter??[])if(i.name)if(i.name==="items"){let o=gf(i.part);o&&e.push(o)}else r[i.name]=Ue(i);let n={approvalUrl:typeof r.approvalUrl=="string"?r.approvalUrl:"",vendorPatientId:typeof r.vendorPatientId=="number"?r.vendorPatientId:Number.NaN,items:e};if(!ka(n))throw new Error(Ia);return n}var Ma="Invalid response from cart-management bot";function Da(t){if(typeof t!="object"||t===null)return!1;let e=t;return typeof e.vendorPatientId=="number"&&Number.isFinite(e.vendorPatientId)&&typeof e.removedCount=="number"&&Number.isFinite(e.removedCount)&&Array.isArray(e.items)}function xf(t){return{resourceType:"Parameters",parameter:[x("patientId","valueId",t.patientId),x("action","valueCode","remove"),x("medicationRequestId","valueId",t.medicationRequestId)]}}function vf(t){return{resourceType:"Parameters",parameter:[x("patientId","valueId",t.patientId),x("action","valueCode","clear")]}}function Tf(t){if(!t?.length)return;let e={};for(let n of t)n.name&&(e[n.name]=Ue(n));let r=e.status==="removed"||e.status==="not-in-cart"||e.status==="failed"?e.status:void 0;if(r)return{status:r,medicationRequestId:typeof e.medicationRequestId=="string"?e.medicationRequestId:void 0,vendorLineId:typeof e.vendorLineId=="string"?e.vendorLineId:void 0,error:typeof e.error=="string"?e.error:void 0}}function Sf(t){let e=[],r={};for(let i of t.parameter??[])if(i.name)if(i.name==="items"){let o=Tf(i.part);o&&e.push(o)}else r[i.name]=Ue(i);let n={vendorPatientId:typeof r.vendorPatientId=="number"?r.vendorPatientId:Number.NaN,removedCount:typeof r.removedCount=="number"?r.removedCount:Number.NaN,items:e};if(!Da(n))throw new Error(Ma);return n}function bf(t){let e={};for(let r of t)r.name&&(e[r.name]=Ue(r));return{actionTitle:typeof e.actionTitle=="string"?e.actionTitle:void 0,activityDefinitionUrl:typeof e.activityDefinitionUrl=="string"?e.activityDefinitionUrl:void 0,scriptSureSequenceId:typeof e.scriptSureSequenceId=="number"?e.scriptSureSequenceId:void 0,scriptSureOrderId:typeof e.scriptSureOrderId=="number"?e.scriptSureOrderId:void 0,status:e.status==="failed"?"failed":"synced",error:typeof e.error=="string"?e.error:void 0}}function Ef(t){let e={},r=[];for(let n of t.parameter??[])n.name&&(n.name==="results"&&n.part?.length?r.push(bf(n.part)):e[n.name]=Ue(n));return{mode:e.mode==="noop-already-synced"?"noop-already-synced":"created",planDefinitionId:typeof e.planDefinitionId=="string"?e.planDefinitionId:void 0,scriptSureOrdersetId:typeof e.scriptSureOrdersetId=="number"?e.scriptSureOrdersetId:void 0,syncedCount:typeof e.syncedCount=="number"?e.syncedCount:r.filter(n=>n.status==="synced").length,failedCount:typeof e.failedCount=="number"?e.failedCount:r.filter(n=>n.status==="failed").length,results:r}}var Sn=`${Et}/fhir/StructureDefinition/patient-preferredPharmacy`,ao="https://medplum.com/fhir/CodeSystem/pharmacy-preference-type",Tn="primary",co="preferred";function oo(t){let e=t.extension?.find(r=>r.url==="pharmacy");return e?.valueReference?I(e.valueReference):void 0}function so(t){return t.url===Sn&&!!t.extension}function Rf(t,e){let r=t.extension?.find(n=>n.url==="type");r&&(r.valueCodeableConcept={coding:[{system:e,code:co,display:"Preferred Pharmacy"}]})}function Cf(t,e){if(!t.extension)return[];let r=[];for(let n of t.extension){if(n.url!==Sn||!n.extension)continue;let i=n.extension.find(s=>s.url==="pharmacy"),o=n.extension.find(s=>s.url==="type");if(i?.valueReference){let s=e?o?.valueCodeableConcept?.coding?.some(a=>a.system===e&&a.code===Tn)??!1:o?.valueCodeableConcept?.coding?.some(a=>a.code===Tn)??!1;r.push({organizationRef:i.valueReference,isPrimary:s})}}return r}function Va(t,e,r=ao){return{url:Sn,extension:[{url:"pharmacy",valueReference:t},{url:"type",valueCodeableConcept:{coding:[{system:r,code:e?Tn:co,display:e?"Primary Pharmacy":"Preferred Pharmacy"}]}}]}}function Pf(t,e,r,n=ao){t.extension??=[];let i=I(e);if(r)for(let a of t.extension)so(a)&&oo(a)!==i&&Rf(a,n);let o=t.extension.findIndex(a=>so(a)&&oo(a)===i),s=Va(e,r,n);return o>=0?t.extension[o]=s:t.extension.push(s),t}function wf(t,e){if(!t.extension)return t;let r=I(e);return t.extension=t.extension.filter(n=>so(n)?oo(n)!==r:!0),t}function Af(t){if(!Array.isArray(t))return!1;if(t.length>0){let e=t[0];return typeof e=="object"&&e!==null&&e.resourceType==="Organization"}return!0}function Of(t){if(typeof t!="object"||t===null)return!1;let e=t;return typeof e.success=="boolean"&&typeof e.message=="string"}var Sr="https://medplum.com/fhir/StructureDefinition/SchedulingParameters",If="https://medplum.com/fhir/StructureDefinition/SchedulingEncounterCoding",kf="https://medplum.com/fhir/StructureDefinition/SchedulingPlanDefinition",bn="https://medplum.com/fhir/service-type-reference",_a="http://hl7.org/fhir/StructureDefinition/timezone",La=["mon","tue","wed","thu","fri","sat","sun"];function Mf(t){return La.includes(t)}function Df(t){return!!ae(t,Sr)}function Vf(t,e){if(!t?.reference)return!1;let[r,n]=t.reference.split("/");return`${r}/${n}`===e}function Na(t,e){return t.url===Sr&&(t.extension?.some(r=>r.url==="service"&&Vf(r.valueReference,e))??!1)}function Fa(t,e){let r=I(e);return t.extension?.filter(n=>Na(n,r))??[]}function Ua(t,e,r){return Fa(t,e).flatMap(n=>Dt(n,r))}function _f(t,e,r){let n=Ba(t,e,r.url),i=re(e);n.extension??=[];let o=n.extension.find(s=>Na(s,i.reference));return o||(o={url:Sr,extension:[{url:"service",valueReference:i}]},n.extension.push(o)),o.extension=[...o.extension??[],r],n}function Ba(t,e,r){let n=le(t);for(let i of Fa(n,e))i.extension&&(i.extension=i.extension.filter(o=>o.url!==r));return n}function Lf(t,e,r){let n=(e?Ua(e,t,"timezone"):[]).map(s=>s.valueCode).find(Lt);if(n)return n;let i=Dt(t,[Sr,"timezone"]).map(s=>s.valueCode).find(Lt);if(i)return i;let o=r&&De(r,_a);return typeof o=="string"?o:void 0}function Nf(t){let e=[{url:bn,valueReference:re(t)}];return t.type?.length?t.type.map(r=>({...r,extension:[...r.extension??[],...e]})):[{extension:e}]}function Ff(t,e){if(!t?.length)return!1;let r=I(e);return t.some(n=>De(n,bn)?.reference===r)}function Uf(t){return t?.length?t.map(e=>De(e,bn)).filter(Lt):[]}var Bf={wk:1440*7,d:1440,h:60,min:1};function qf(t){let e=t?.value;if(e===void 0||e<0)return;let r=t?.unit===void 0?void 0:Bf[t.unit];return r===void 0?void 0:e*r}function Wf(t){if(!t)throw new m(T("Resource type is null"));if(!Ct(t))throw new m(T("Unknown resource type"))}function uo(t,e,r){t===null?r.push(R(e,"Invalid null value")):Array.isArray(t)?$f(t,e,r):typeof t=="object"&&jf(t,e,r)}function $f(t,e,r){for(let n=0;n<t.length;n++)t[n]===void 0?r.push(R(`${e}[${n}]`,"Invalid undefined value")):uo(t[n],`${e}[${n}]`,r)}function jf(t,e,r){for(let[n,i]of Object.entries(t))uo(i,`${e}${e?".":""}${n}`,r)}var qa=new WeakMap;function Hf(t){let e=qa.get(t);return e||(e={resourceType:"SearchParameter",code:t.code+":identifier",base:t.base,type:"token",expression:`(${t.expression}).identifier`},qa.set(t,e)),e}function lo(t){return t.match(/^\((.+)\)\.identifier$/)?.[1]}function po(t,e){return new Re(t,new ne(e,new F("identifier")))}var ge={BOOLEAN:"BOOLEAN",NUMBER:"NUMBER",QUANTITY:"QUANTITY",TEXT:"TEXT",REFERENCE:"REFERENCE",CANONICAL:"CANONICAL",DATE:"DATE",DATETIME:"DATETIME",PERIOD:"PERIOD",UUID:"UUID"};function Gf(t,e){return H.types[t]?.searchParamsDetails?.[e.code]??zf(t,e)}function Qf(t,e,r){let n=H.types[t];n||(n={},H.types[t]=n),n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=r}function zf(t,e){let r=e.code,n=e.expression,i=mo(t,n),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let l of i){let d=En(l),f=di(()=>d.join("."));d.length===1&&d[0]instanceof w&&d[0].operator!=="."?o.propertyTypes.add("boolean"):e.code.endsWith(":identifier")?o.propertyTypes.add("Identifier"):f().endsWith("extension.value.code")||f().endsWith("extension.value.coding.code")?(o.array=!0,o.propertyTypes.clear(),o.propertyTypes.add("code")):Wa(o,d,t,1),f().endsWith("extension.valueDateTime")&&(o.array=!1,o.propertyTypes.clear(),o.propertyTypes.add("dateTime"))}let s;if(e.code.endsWith(":identifier")){let l=lo(n);if(l===void 0)throw new Error(`Unexpected expression for derived identifier search parameter: ${n}`);let d=fo(t,l);s=po(n,d)}else s=fo(t,n);let a=o.elementDefinitions.map(l=>({...l,type:l.type?.filter(d=>o.propertyTypes.has(d.code))})).filter(l=>l.type&&l.type.length>0),u={type:Yf(e,o.propertyTypes),elementDefinitions:a,parsedExpression:s,array:o.array,referenceTargetTypes:Zf(e,a)};return Qf(t,r,u),u}function Wa(t,e,r,n){let i=e[n];if(i instanceof Ce){t.propertyTypes.add(i.right.toString());return}if(i instanceof ie){Jf(t,i);return}let o=i.toString(),s=kt(r,o);if(!s)throw new Error(`Element definition not found for ${r} ${o}`);let a=!1,u=n+1;u<e.length&&e[u]instanceof Le&&(a=!0,u++);let l=e[u];if(s.isArray&&!a&&(t.array=!0),u===e.length-1){if(l instanceof Ce){t.elementDefinitions.push(s),t.propertyTypes.add(l.right.toString());return}if(l instanceof ie&&l.name==="ofType"){t.elementDefinitions.push(s),t.propertyTypes.add(l.args[0].toString());return}}if(u>=e.length){t.elementDefinitions.push(s);for(let d of s.type??v)t.propertyTypes.add(d.code);return}for(let d of s.type??v){let f=d.code;Kf(f)&&(f=s.type[0].code),Wa(t,e,f,u)}}function Jf(t,e){if(e.name==="as"){t.propertyTypes.add(e.args[0].toString());return}if(e.name==="ofType"){t.propertyTypes.add(e.args[0].toString());return}if(e.name==="resolve"){t.propertyTypes.add("string");return}if(e.name==="where"&&e.args[0]instanceof _e){t.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function Kf(t){return t==="Element"||t==="BackboneElement"}function Yf(t,e){switch(t.type){case"date":return e.size===1&&e.has(p.date)?ge.DATE:ge.DATETIME;case"number":return ge.NUMBER;case"quantity":return ge.QUANTITY;case"reference":return e.has(p.canonical)?ge.CANONICAL:ge.REFERENCE;case"token":return e.size===1&&e.has(p.boolean)?ge.BOOLEAN:ge.TEXT;default:return ge.TEXT}}function mo(t,e){let r=[],n=er(e);return Rn(t,n.child,r),r}function Xf(t,e){let r=mo(t,e);if(r.length!==0)return r.map(n=>n.toString()).join(" | ")}function fo(t,e){let r=[],n=er(e);if(Rn(t,n.child,r),r.length===0)return n;let i=r[0];for(let o=1;o<r.length;o++)i=new Ve(i,r[o]);return new Re("<original-not-available>",i)}function Rn(t,e,r){e instanceof Ve?(Rn(t,e.left,r),Rn(t,e.right,r)):e.toString().includes(t+".")&&r.push(e)}function En(t){if(t instanceof Ce||t instanceof Le)return[En(t.left),t].flat();if(t instanceof w&&t.operator!==".")return[t];if(t instanceof ne)return[En(t.left),En(t.right)].flat();if(t instanceof ie){if(t.name==="where"&&!(t.args[0]instanceof _e))return[];if(t.name==="last")return[]}return[t]}function Zf(t,e){if(t.target?.length===1)return t.target;if(e){let r=new Set;for(let n of e)for(let i of n.type)if(!(i.code!=="Reference"||!i.targetProfile))for(let o of i.targetProfile){let s=o.split("/").at(-1);s&&s!=="Resource"&&r.add(s)}if(r.size>0)return Array.from(r)}}function em(t){let e=[];return new Promise((r,n)=>{t.on("data",i=>e.push(Buffer.from(i))),t.on("error",i=>{t.destroy(),n(i)}),t.on("end",()=>{r(Buffer.concat(e))}),t.on("close",()=>{t.destroy()})})}function tm(t){return`shlink:/${wi(JSON.stringify(t))}`}function rm(t){let e=t.indexOf("#shlink:/"),r=e===-1?t:t.substring(e+1);if(!r.startsWith("shlink:/"))throw new Error("Invalid SMART Health Link URI");let n=JSON.parse(nr(r.substring(8)));if(!n||n.v!==void 0&&n.v!==1||!de(n.url)||!de(n.key))throw new Error("Invalid SMART Health Link payload");return n}function nm(t){return/\/shl\/([^/]+)\/(?:manifest|payload)$/.exec(t)?.[1]}function im(t,e){let r=[];for(let n of e)r.push(...om(t,n));return r}function om(t,e){if(!t.resource)throw new Error("Resource type is required");if(t.resource!==e.resourceType)return[];let r={};for(let i of t.constant??v){let o={type:"ViewDefinitionConstant",value:i};r["%"+i.name]=_(o,"value")}let n=E(e);for(let i of t.where??v){let o=k(i.path,[n],r);if(o.length!==1)return[];if(o[0].type!=="boolean")throw new Error("WHERE clause must evaluate to a boolean");if(!o[0].value)return[]}return ho(t,n,r)}function ho(t,e,r){let n=[],i;t.forEach?i=k(t.forEach,[e],r):t.forEachOrNull?i=k(t.forEachOrNull,[e],r):i=[e];for(let o of i){let s=[];for(let a of t.column??v){let u=k(a.path,[o],r),l;if(u.length===0)l={[a.name]:null};else if(a.collection)l={[a.name]:u.map(d=>d.value)};else if(u.length===1)l={[a.name]:u[0].value};else throw new Error("Multiple values found but not expected for column");s.push([l])}for(let a of t.select??v){let u=ho(a,o,r);s.push(u)}if(t.unionAll){let a=[];for(let u of t.unionAll)for(let l of ho(u,o,r))a.push(l);s.push(a)}n.push(...sm(s))}if(i.length===0&&t.forEachOrNull){let o={};for(let s of t.column??v)o[s.name]=null;n.push(o)}return n}function sm(t){if(t.length===0)return[];let e=t[0];for(let r=1;r<t.length;r++)e=am(e,t[r]);return e}function am(t,e){let r=[];for(let n of t)for(let i of e)r.push(cm(n,i));return r}function cm(t,e){let r={};return Object.assign(r,t),Object.assign(r,e),r}var yo=/^\d+\.\d+\.\d+(-[0-9a-z]{7})?$/,$a="https://meta.medplum.com/releases",go=new Map;function um(){go.clear()}function ja(t){let e=t;if(!e.tag_name?.startsWith("v"))throw new Error("Manifest missing valid tag_name starting with a 'v' (eg. v5.1.15)");let r=e.assets;if(!r?.length)throw new Error("Manifest missing assets list");for(let n of r){if(!n.browser_download_url)throw new Error("Asset missing browser download URL");if(!n.name)throw new Error("Asset missing name")}}async function Ha(t,e,r,n){let i=new URL(`${$a}/${t}`);if(i.searchParams.set("a",e),i.searchParams.set("c",sn),n)for(let[s,a]of Object.entries(n))i.searchParams.set(s,a);let o=await fetch(i.toString());if(o.status!==200){let s;try{s=(await o.json()).message}catch(a){console.error(`Failed to parse message from body: ${Ie(a)}`)}throw new Error(`Received status code ${o.status} while ${r}`,{cause:new Error(s)})}return await o.json()}async function Cn(t,e,r){let n=e?go.get(e):void 0;if(!n){let i=e?`v${e}`:"latest",o=await Ha(`${i}.json`,t,`fetching manifest for version '${e??"latest"}'`,r);ja(o),n=o,go.set(n.tag_name.slice(1),n)}return n}function xo(t){return yo.test(t)}function Ga(t){if(!yo.test(t))throw new TypeError(`Version is not a valid Medplum semver (eg. 1.1.1 or 1.1.1-a1bc): ${t}`)}function Qa(t,e){let r=t.split("-")[0].split(".").map(Number),n=e.split("-")[0].split(".").map(Number);for(let i=0;i<3;i++){let o=(r[i]??0)-(n[i]??0);if(o!==0)return o}return 0}async function lm(t,e){if(!xo(e))return!1;try{await Cn(t,e)}catch{return!1}return!0}async function dm(t){let e=await Cn(t);if(!e.tag_name.startsWith("v"))throw new Error(`Invalid release name found. Release tag '${e.tag_name}' did not start with 'v'`);let r=e.tag_name.slice(1);return Ga(r),r}async function pm(t,e){return((await Ha("all.json",t,"fetching all release versions",e)).versions??[]).map(i=>i.version).filter(xo).toSorted(Qa).reverse()}async function fm(t,e){try{let r=sn.split("-")[0],i=(await Cn(t,void 0,e)).tag_name.slice(1);r!==i&&console.warn(`A new version (v${i}) of Medplum is available. Your current version (v${r}) may be missing important updates and bug fixes.`)}catch(r){console.warn(`Failed to check for newer version: ${Ie(r)}`)}}0&&(module.exports={AccessPolicyInteraction,AckCode,AndAtom,ArithmeticOperatorAtom,AsAtom,CPT,ClientStorage,ConcatAtom,ContainsAtom,ContentType,DAYS_OF_WEEK,DEFAULT_ACCEPT,DEFAULT_MAX_SEARCH_COUNT,DEFAULT_SEARCH_COUNT,DataSampler,DotAtom,EMPTY,EmptySetAtom,EqualsAtom,EquivalentAtom,EventTarget,ExternalSecretSystems,FHIRCAST_EVENT_NAMES,FHIRCAST_EVENT_RESOURCES,FHIRCAST_EVENT_VERSION_REQUIRED,FHIRCAST_RESOURCE_TYPES,FhirFilterComparison,FhirFilterConnective,FhirFilterNegation,FhirPathAtom,FhircastConnection,FileBuilder,FunctionAtom,HL7_V2_0203,HTTP_HL7_ORG,HTTP_TERMINOLOGY_HL7_ORG,Hl7Context,Hl7Field,Hl7Message,Hl7Segment,ICD10,INVALID_MEDICATION_CART_RESPONSE,INVALID_MEDICATION_CHECKOUT_RESPONSE,INVALID_MEDICATION_ORDER_RESPONSE,INVALID_MEDICATION_ORDER_SET_RESPONSE,INVALID_MEDICATION_SEARCH_RESPONSE,ImpliesAtom,InAtom,IndexerAtom,InfixOperatorAtom,InvalidOperationError,IsAtom,LOINC,LRUCache,LiteralAtom,LogLevel,LogLevelNames,Logger,MEDICATION_REQUEST_STATUS_REASON_RESPONSE_NOT_RECEIVED,MEDICATION_REQUEST_STATUS_REASON_SYSTEM,MEDPLUM_CLI_CLIENT_ID,MEDPLUM_RELEASES_URL,MEDPLUM_SEMVER_REGEX,MEDPLUM_VERSION,MRN_IDENTIFIER_TYPE,MedplumClient,MedplumKeyValueClient,MemoryStorage,MissingError,MockAsyncClientStorage,NDC,NOOP,NotEqualsAtom,NotEquivalentAtom,OAuthClientAssertionType,OAuthGrantType,OAuthSigningAlgorithm,OAuthTokenAuthMethod,OAuthTokenType,OperationOutcomeError,Operator,OperatorPrecedence,OrAtom,PATIENT_PREFERRED_PHARMACY_URL,PHARMACY_PREFERENCE_TYPE_SYSTEM,PHARMACY_TYPE_PREFERRED,PHARMACY_TYPE_PRIMARY,Parser,ParserBuilder,Pointer,PrefixOperatorAtom,PropertyType,RATE_LIMIT_RESET_EXTENSION_URL,RXNORM,ReadablePromise,ReconnectingWebSocket,ReturnAckCategory,SNOMED,SchedulingEncounterCodingURI,SchedulingParametersURI,SchedulingPlanDefinitionURI,SearchParameterType,ServiceTypeReferenceURI,SubscriptionEmitter,SubscriptionManager,SymbolAtom,TestError,TimezoneExtensionURI,Tokenizer,TransformMapCollection,TypedEventTarget,UCUM,UnaryOperatorAtom,UnionAtom,VALID_HOSTNAME_REGEX,XorAtom,accepted,accessPolicySupportsInteraction,add,addPreferredPharmacyToPatient,addProfileToResource,allOk,append,apply,applyDefaultValuesToElement,applyDefaultValuesToResource,applyFixedOrPatternValue,applyPatch,arrayBufferToBase64,arrayBufferToHex,arrayify,assert,assertContextVersionOptional,assertNever,assertOk,assertReleaseManifest,assertValidMedplumSemver,badRequest,booleanToTypedValue,buildCdsRequest,buildElementsContext,buildMedicationRequestResponseLostStatusReason,buildTypeName,businessRule,calculateAge,calculateAgeString,canReadResourceType,canWriteResource,canWriteResourceType,capitalize,checkForNull,checkIfValidMedplumVersion,clearReleaseCache,clearScheduleParameter,codeableConceptMatchesToken,codingMatchesToken,compareVersions,compressElement,concatUrls,conceptMapTranslate,conflict,contentTooLarge,convertContainedResourcesToBundle,convertToSearchableDates,convertToSearchableNumbers,convertToSearchableQuantities,convertToSearchableReferences,convertToSearchableStrings,convertToSearchableTokens,convertToSearchableUris,convertToTransactionBundle,copy,countBy,countWhere,crawlTypedValue,crawlTypedValueAsync,createConstraintIssue,createFhircastMessagePayload,createOperationOutcomeIssue,createPatch,createPreferredPharmacyExtension,createProcessingIssue,createReference,createStructureIssue,createTests,created,decodeBase64,decodeBase64Url,deepClone,deepEquals,deepIncludes,deriveIdentifierSearchParameter,diffAny,diffArrays,diffObjects,encodeBase64,encodeBase64Url,encodeSmartHealthLink,encryptSHA256,ensureNoLeadingSlash,ensureTrailingSlash,escapeHtml,escapeToken,evalFhirPath,evalFhirPathTyped,evalSqlOnFhir,expandSampledData,expandSampledObservation,extractAccountReferences,extractServiceTypeReferences,fetchAllVersionStrings,fetchLatestVersionString,fetchVersionManifest,fhirPathArrayEquals,fhirPathArrayEquivalent,fhirPathArrayNotEquals,fhirPathEquals,fhirPathEquivalent,fhirPathIs,fhirPathNot,fhirTypeToJsType,fhirpathPatchTypedValue,findCodeBySystem,findObservationInterval,findObservationReferenceRange,findObservationReferenceRanges,findResourceByCode,findResourceInBundle,flatMapFilter,forbidden,formatAddress,formatCodeableConcept,formatCoding,formatDate,formatDateTime,formatFamilyName,formatGivenName,formatHl7DateTime,formatHumanName,formatMoney,formatObservationValue,formatPeriod,formatQuantity,formatRange,formatReferenceString,formatSearchQuery,formatTime,formatTiming,formatWallTime,generateId,getAllDataTypes,getAllQuestionnaireAnswers,getBuffer,getCodeBySystem,getDataType,getDateProperty,getDefaultValuesForNewSliceEntry,getDisplayString,getElementDefinition,getElementDefinitionForPath,getElementDefinitionFromElements,getElementDefinitionTypeName,getExpressionForResourceType,getExpressionsForResourceType,getExtension,getExtensionValue,getExtensions,getIdentifier,getIdentifierByType,getImageSrc,getInnerDerivedIdentifierExpression,getMedicationOrderIframeUrl,getNestedProperty,getOutcomeRedirectUrl,getParsedDerivedIdentifierExpression,getParsedExpressionForResourceType,getPathDifference,getPathDisplayName,getPendingMedicationOrderId,getPendingMedicationOrderStatus,getPreferredPharmaciesFromPatient,getPropertyDisplayName,getQueryString,getQuestionnaireAnswers,getRandomString,getRateLimitReset,getReferenceString,getResourceTypes,getScheduleParameters,getSchedulingTimezone,getSearchParameter,getSearchParameterDetails,getSearchParameters,getSearchResourceTypes,getSmartHealthLinkId,getStatus,getTypedPropertyValue,getTypedPropertyValueWithPath,getTypedPropertyValueWithSchema,getTypedPropertyValueWithoutSchema,getValueSliceName,getWebSocketUrl,getWindow,globalSchema,gone,hasSchedulingParameters,indexConceptMapCodings,indexDefaultSearchParameters,indexSearchParameter,indexSearchParameterBundle,indexStructureDefinitionBundle,inflateBaseSchema,inflateElement,initFhirPathParserBuilder,intersection,invalidSearchOperator,isAccepted,isAckCode,isAddPharmacyResponse,isBrowserEnvironment,isCodeableConcept,isCoding,isCompletedSubscriptionRequest,isComplexTypeCode,isConflict,isContextVersionRequired,isCreated,isDataTypeLoaded,isDateString,isDateTimeString,isDayOfWeek,isDefined,isDestructive,isEmpty,isError,isFhirCriteriaMet,isFhircastResourceType,isGone,isJwt,isLowerCase,isMedicationArray,isMedicationCartManageResponse,isMedicationCheckoutResponse,isMedicationOrderResponse,isMedicationOrderSetResponse,isMedplumAccessToken,isNodeEnvironment,isNotFound,isObject,isOk,isOperationOutcome,isOrganizationArray,isPeriod,isPopulated,isPrimitiveType,isProfileLoaded,isProfileResource,isQuantity,isQuantityEquivalent,isRedirect,isReference,isResource,isResourceType,isResourceTypeSchema,isResourceWithId,isSliceDefinitionWithTypes,isString,isStringArray,isTextObject,isTypedValue,isUUID,isUnauthenticated,isValidDate,isValidHostname,isValidMedplumSemver,lazy,loadDataType,locationUtils,mapByIdentifier,matchDiscriminant,matchesRange,matchesSearchRequest,medicationCartClearRequestToParameters,medicationCartRemoveRequestToParameters,medicationCheckoutRequestToParameters,medicationOrderRequestToParameters,medicationOrderSetRequestToParameters,medicationSearchParamsToParameters,move,multipleMatches,normalizeArrayBufferView,normalizeCreateBinaryOptions,normalizeCreatePdfOptions,normalizeErrorEvent,normalizeErrorString,normalizeOperationOutcome,notFound,notModified,operationOutcomeIssueToString,operationOutcomeToString,parametersToMedicationCartManageResponse,parametersToMedicationCheckoutResponse,parametersToMedicationOrderResponse,parametersToMedicationOrderSetResponse,parametersToOrderSetSyncResponse,parseFhirPath,parseFhirPathPatchParameters,parseFilterParameter,parseHl7DateTime,parseJWTPayload,parseLogLevel,parseMappingLanguage,parseParameter,parseReference,parseSearchRequest,parseSmartHealthLink,parseStructureDefinition,parseXFhirQuery,pathToJSONPointer,preciseEquals,preciseGreaterThan,preciseGreaterThanOrEquals,preciseLessThan,preciseLessThanOrEquals,preciseRound,preconditionFailed,projectAdminResourceTypes,protectedResourceTypes,readInteractions,redirect,redirectOk,remove,removeDuplicates,removePreferredPharmacyFromPatient,removeProfileFromResource,reorderBundle,replace,replaceQueryVariables,resolveId,resourceMatchesSubscriptionCriteria,satisfiedAccessPolicy,schedulingDurationToMinutes,serializeError,serializeFhircastSubscriptionRequest,serverError,serverTimeout,serviceTypeIncludesService,setCodeBySystem,setIdentifier,setRateLimitReset,setScheduleParameter,singleton,singularize,sleep,sortStringArray,splitN,splitSearchOnComma,streamToBuffer,stringify,stringifyTypedValue,structureMapTransform,subsetResource,subtract,sumBy,summarizeObservations,test,toJsBoolean,toPeriod,toServiceTypeCodeableConcepts,toTypedValue,tooManyRequests,trimTrailingEmptyElements,tryGetDataType,tryGetJwtExpiration,tryGetProfile,typedValueToString,unauthorized,unauthorizedTokenAudience,unauthorizedTokenExpired,unescapeToken,unsupportedMediaType,validateFhircastSubscriptionRequest,validateResource,validateResourceType,validateTypedValue,validationError,validationRegexes,warnIfNewerVersionAvailable,wordWrap});
/*!
* Reconnecting WebSocket
* by Pedro Ladaria <pedro.ladaria@gmail.com>
* 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