@medplum/core 5.1.37 → 5.1.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
- "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 hm={};Xa(hm,{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,SchedulingScheduleColorURI:()=>Mf,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:()=>dm,clearReleaseCache:()=>lm,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:()=>Gf,diffAny:()=>we,diffArrays:()=>ca,diffObjects:()=>ua,encodeBase64:()=>rr,encodeBase64Url:()=>wi,encodeSmartHealthLink:()=>rm,encryptSHA256:()=>Ai,ensureNoLeadingSlash:()=>ns,ensureTrailingSlash:()=>lt,escapeHtml:()=>Gu,escapeToken:()=>da,evalFhirPath:()=>Cl,evalFhirPathTyped:()=>k,evalSqlOnFhir:()=>om,expandSampledData:()=>Fi,expandSampledObservation:()=>Xd,extractAccountReferences:()=>jr,extractServiceTypeReferences:()=>Bf,fetchAllVersionStrings:()=>fm,fetchLatestVersionString:()=>pm,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:()=>Zf,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:()=>Nf,getSearchParameter:()=>dl,getSearchParameterDetails:()=>Qf,getSearchParameters:()=>ll,getSearchResourceTypes:()=>Jl,getSmartHealthLinkId:()=>im,getStatus:()=>Dc,getTypedPropertyValue:()=>_,getTypedPropertyValueWithPath:()=>Nr,getTypedPropertyValueWithSchema:()=>Wo,getTypedPropertyValueWithoutSchema:()=>$o,getValueSliceName:()=>Bi,getWebSocketUrl:()=>pi,getWindow:()=>fd,globalSchema:()=>H,gone:()=>dc,hasSchedulingParameters:()=>Vf,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:()=>Df,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:()=>nm,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:()=>Wf,serializeError:()=>Tr,serializeFhircastSubscriptionRequest:()=>rn,serverError:()=>Sc,serverTimeout:()=>bc,serviceTypeIncludesService:()=>Uf,setCodeBySystem:()=>Pu,setIdentifier:()=>fu,setRateLimitReset:()=>yc,setScheduleParameter:()=>Lf,singleton:()=>N,singularize:()=>Nu,sleep:()=>Qr,sortStringArray:()=>_t,splitN:()=>Je,splitSearchOnComma:()=>ht,streamToBuffer:()=>tm,stringify:()=>Vt,stringifyTypedValue:()=>xi,structureMapTransform:()=>hp,subsetResource:()=>Uc,subtract:()=>zi,sumBy:()=>$u,summarizeObservations:()=>Jd,test:()=>ma,toJsBoolean:()=>j,toPeriod:()=>Ot,toServiceTypeCodeableConcepts:()=>Ff,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:()=>$f,validateTypedValue:()=>Fo,validationError:()=>T,validationRegexes:()=>wt,warnIfNewerVersionAvailable:()=>mm,wordWrap:()=>ya});module.exports=ec(hm);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"}]},audience:{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("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("\u201C","&ldquo;").replaceAll("\u201D","&rdquo;").replaceAll("\u2018","&lsquo;").replaceAll("\u2019","&rsquo;").replaceAll("\u2026","&hellip;")}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:`
1
+ "use strict";var br=Object.defineProperty;var ec=Object.getOwnPropertyDescriptor;var tc=Object.getOwnPropertyNames;var rc=Object.prototype.hasOwnProperty;var nc=(t,e,r)=>e in t?br(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var ic=(t,e)=>{for(var r in e)br(t,r,{get:e[r],enumerable:!0})},oc=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of tc(e))!rc.call(t,i)&&i!==r&&br(t,i,{get:()=>e[i],enumerable:!(n=ec(e,i))||n.enumerable});return t};var sc=t=>oc(br({},"__esModule",{value:!0}),t);var c=(t,e,r)=>nc(t,typeof e!="symbol"?e+"":e,r);var Rm={};ic(Rm,{AccessPolicyInteraction:()=>Le,AckCode:()=>Ta,AndAtom:()=>zt,ArithmeticOperatorAtom:()=>q,AsAtom:()=>Ce,CPT:()=>dc,ClientStorage:()=>yt,ConcatAtom:()=>qt,ContainsAtom:()=>Wt,ContentType:()=>V,DAYS_OF_WEEK:()=>Wa,DEFAULT_ACCEPT:()=>js,DEFAULT_MAX_SEARCH_COUNT:()=>Bd,DEFAULT_SEARCH_COUNT:()=>Ud,DataSampler:()=>an,DotAtom:()=>ne,EMPTY:()=>v,EmptySetAtom:()=>Ut,EqualsAtom:()=>jt,EquivalentAtom:()=>Gt,EventTarget:()=>Xr,ExternalSecretSystems:()=>ep,FHIRCAST_EVENT_NAMES:()=>en,FHIRCAST_EVENT_RESOURCES:()=>Ls,FHIRCAST_EVENT_VERSION_REQUIRED:()=>tn,FHIRCAST_RESOURCE_TYPES:()=>Ns,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:()=>lc,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:()=>uf,ImpliesAtom:()=>Yt,InAtom:()=>$t,IndexerAtom:()=>Ne,InfixOperatorAtom:()=>w,InvalidOperationError:()=>gn,IsAtom:()=>_e,LOINC:()=>ac,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:()=>Bl,MEDPLUM_RELEASES_URL:()=>Ja,MEDPLUM_SEMVER_REGEX:()=>yo,MEDPLUM_VERSION:()=>sn,MRN_IDENTIFIER_TYPE:()=>yu,MedplumClient:()=>dr,MedplumKeyValueClient:()=>ar,MemoryStorage:()=>on,MissingError:()=>z,MockAsyncClientStorage:()=>_i,NDC:()=>pc,NOOP:()=>ed,NotEqualsAtom:()=>Ht,NotEquivalentAtom:()=>Qt,OAuthClientAssertionType:()=>Gs,OAuthGrantType:()=>tt,OAuthSigningAlgorithm:()=>Jl,OAuthTokenAuthMethod:()=>zl,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,REQUIRES_DIAGNOSIS_CODE:()=>La,REQUIRES_MEDICAL_NECESSITY_CODE:()=>Fa,REQUIRES_PROCEDURE_CODE:()=>Na,RXNORM:()=>uc,ReadablePromise:()=>$,ReconnectingWebSocket:()=>et,ReturnAckCategory:()=>yl,SCHEDULING_ELIGIBILITY_SYSTEM:()=>_a,SCHEDULING_REQUIREMENT_CODES:()=>Ua,SNOMED:()=>cc,SchedulingEncounterCodingURI:()=>Nf,SchedulingMedicalNecessityURI:()=>Uf,SchedulingParametersURI:()=>Sr,SchedulingPlanDefinitionURI:()=>Lf,SchedulingScheduleColorURI:()=>Ff,SchedulingSlotCapacityURI:()=>Bf,SearchParameterType:()=>ge,ServiceTypeReferenceURI:()=>bn,SubscriptionEmitter:()=>xt,SubscriptionManager:()=>ur,SymbolAtom:()=>F,TestError:()=>hn,TimezoneExtensionURI:()=>qa,Tokenizer:()=>Pe,TransformMapCollection:()=>pn,TypedEventTarget:()=>se,UCUM:()=>Pn,UnaryOperatorAtom:()=>Bt,UnionAtom:()=>Ve,VALID_HOSTNAME_REGEX:()=>is,XorAtom:()=>Kt,accepted:()=>Cc,accessPolicySupportsInteraction:()=>Pi,add:()=>hr,addPreferredPharmacyToPatient:()=>Mf,addProfileToResource:()=>Hu,allOk:()=>fc,append:()=>ve,apply:()=>Yi,applyDefaultValuesToElement:()=>lp,applyDefaultValuesToResource:()=>dp,applyFixedOrPatternValue:()=>pr,applyPatch:()=>jp,arrayBufferToBase64:()=>ci,arrayBufferToHex:()=>ai,arrayify:()=>te,assert:()=>Vs,assertContextVersionOptional:()=>Ii,assertNever:()=>Zu,assertOk:()=>Bc,assertReleaseManifest:()=>Ka,assertValidMedplumSemver:()=>Xa,badRequest:()=>A,booleanToTypedValue:()=>y,buildCdsRequest:()=>Cl,buildElementsContext:()=>un,buildMedicationRequestResponseLostStatusReason:()=>df,buildTypeName:()=>ps,businessRule:()=>kc,calculateAge:()=>Mt,calculateAgeString:()=>mu,canReadResourceType:()=>fl,canWriteResource:()=>hl,canWriteResourceType:()=>ml,capitalize:()=>U,checkForNull:()=>uo,checkIfValidMedplumVersion:()=>Tm,clearReleaseCache:()=>vm,clearScheduleParameter:()=>Ga,codeableConceptMatchesToken:()=>Iu,codingMatchesToken:()=>Ko,compareVersions:()=>Za,compressElement:()=>Wc,concatUrls:()=>W,conceptMapTranslate:()=>$i,conflict:()=>Pc,contentTooLarge:()=>vc,convertContainedResourcesToBundle:()=>El,convertToSearchableDates:()=>vi,convertToSearchableNumbers:()=>Md,convertToSearchableQuantities:()=>Dd,convertToSearchableReferences:()=>Si,convertToSearchableStrings:()=>Ti,convertToSearchableTokens:()=>bi,convertToSearchableUris:()=>Vd,convertToTransactionBundle:()=>As,copy:()=>fa,countBy:()=>Yu,countWhere:()=>Ku,crawlTypedValue:()=>Nr,crawlTypedValueAsync:()=>Kc,createConstraintIssue:()=>Ln,createFhircastMessagePayload:()=>nn,createOperationOutcomeIssue:()=>ke,createPatch:()=>Gp,createPreferredPharmacyExtension:()=>Va,createProcessingIssue:()=>Fn,createReference:()=>re,createStructureIssue:()=>R,createTests:()=>Qp,created:()=>mc,decodeBase64:()=>ws,decodeBase64Url:()=>nr,deepClone:()=>de,deepEquals:()=>xe,deepIncludes:()=>at,deriveIdentifierSearchParameter:()=>tm,diffAny:()=>we,diffArrays:()=>ca,diffObjects:()=>ua,encodeBase64:()=>rr,encodeBase64Url:()=>wi,encodeSmartHealthLink:()=>lm,encryptSHA256:()=>Ai,ensureNoLeadingSlash:()=>ns,ensureTrailingSlash:()=>dt,escapeHtml:()=>Xu,escapeToken:()=>la,evalFhirPath:()=>kd,evalFhirPathTyped:()=>k,evalSqlOnFhir:()=>mm,expandSampledData:()=>Fi,expandSampledObservation:()=>ip,extractAccountReferences:()=>jr,extractServiceTypeReferences:()=>Jf,fetchAllVersionStrings:()=>bm,fetchLatestVersionString:()=>Sm,fetchVersionManifest:()=>Cn,fhirPathArrayEquals:()=>ei,fhirPathArrayEquivalent:()=>qr,fhirPathArrayNotEquals:()=>ti,fhirPathEquals:()=>ct,fhirPathEquivalent:()=>jo,fhirPathIs:()=>Qe,fhirPathNot:()=>Zn,fhirTypeToJsType:()=>Fr,fhirpathPatchTypedValue:()=>Kp,findCodeBySystem:()=>Ou,findObservationInterval:()=>Du,findObservationReferenceRange:()=>Vu,findObservationReferenceRanges:()=>Zo,findResourceByCode:()=>Wu,findResourceInBundle:()=>Rl,flatMapFilter:()=>zu,forbidden:()=>gc,formatAddress:()=>ss,formatCodeableConcept:()=>Te,formatCoding:()=>hi,formatDate:()=>nd,formatDateTime:()=>ze,formatFamilyName:()=>rd,formatGivenName:()=>td,formatHl7DateTime:()=>ba,formatHumanName:()=>lt,formatMoney:()=>pd,formatObservationValue:()=>cs,formatPeriod:()=>od,formatQuantity:()=>be,formatRange:()=>ld,formatReferenceString:()=>os,formatSearchQuery:()=>Kd,formatTime:()=>id,formatTiming:()=>ud,formatWallTime:()=>as,generateId:()=>oe,getAllDataTypes:()=>$n,getAllQuestionnaireAnswers:()=>gu,getBuffer:()=>Kr,getCodeBySystem:()=>$r,getDataType:()=>ye,getDateProperty:()=>fu,getDefaultValuesForNewSliceEntry:()=>pp,getDisplayString:()=>Qo,getElementDefinition:()=>kt,getElementDefinitionForPath:()=>yi,getElementDefinitionFromElements:()=>gi,getElementDefinitionTypeName:()=>kr,getExpressionForResourceType:()=>cm,getExpressionsForResourceType:()=>mo,getExtension:()=>ae,getExtensionValue:()=>De,getExtensions:()=>Dt,getIdentifier:()=>Hr,getIdentifierByType:()=>xu,getImageSrc:()=>pu,getInnerDerivedIdentifierExpression:()=>lo,getMedicationOrderIframeUrl:()=>mf,getNestedProperty:()=>je,getOutcomeRedirectUrl:()=>Ic,getParsedDerivedIdentifierExpression:()=>po,getParsedExpressionForResourceType:()=>fo,getPathDifference:()=>Se,getPathDisplayName:()=>xd,getPendingMedicationOrderId:()=>pf,getPendingMedicationOrderStatus:()=>ff,getPreferredPharmaciesFromPatient:()=>kf,getPropertyDisplayName:()=>ms,getQueryString:()=>fi,getQuestionnaireAnswers:()=>hu,getRandomString:()=>Yr,getRateLimitReset:()=>Rc,getReferenceString:()=>I,getResourceTypes:()=>fs,getScheduleParameters:()=>Ha,getSchedulingRequirements:()=>$f,getSchedulingTimezone:()=>Gf,getSearchParameter:()=>yd,getSearchParameterDetails:()=>rm,getSearchParameters:()=>gd,getSearchResourceTypes:()=>tl,getSmartHealthLinkId:()=>fm,getStatus:()=>Uc,getTypedPropertyValue:()=>_,getTypedPropertyValueWithPath:()=>Lr,getTypedPropertyValueWithSchema:()=>Wo,getTypedPropertyValueWithoutSchema:()=>$o,getValueSliceName:()=>Bi,getWebSocketUrl:()=>pi,getWindow:()=>vl,globalSchema:()=>H,gone:()=>yc,hasSchedulingParameters:()=>Wf,indexConceptMapCodings:()=>Ks,indexDefaultSearchParameters:()=>Qn,indexSearchParameter:()=>zr,indexSearchParameterBundle:()=>hd,indexStructureDefinitionBundle:()=>Dr,inflateBaseSchema:()=>Un,inflateElement:()=>ko,initFhirPathParserBuilder:()=>ft,intersection:()=>Bp,invalidSearchOperator:()=>el,isAccepted:()=>Dc,isAckCode:()=>Sa,isAddPharmacyResponse:()=>_f,isBrowserEnvironment:()=>X,isCodeableConcept:()=>Wr,isCoding:()=>It,isCompletedSubscriptionRequest:()=>ki,isComplexTypeCode:()=>Gr,isConflict:()=>Nc,isContextVersionRequired:()=>Oi,isCreated:()=>Mc,isDataTypeLoaded:()=>jn,isDateString:()=>ri,isDateTimeString:()=>Ge,isDayOfWeek:()=>qf,isDefined:()=>Nt,isDestructive:()=>Ji,isEmpty:()=>O,isError:()=>Or,isFhirCriteriaMet:()=>Bs,isFhircastResourceType:()=>Fs,isGone:()=>Lc,isJwt:()=>Mi,isLowerCase:()=>ku,isMedicationArray:()=>lf,isMedicationCartManageResponse:()=>Da,isMedicationCheckoutResponse:()=>ka,isMedicationOrderResponse:()=>Aa,isMedicationOrderSetResponse:()=>Oa,isMedplumAccessToken:()=>Di,isNodeEnvironment:()=>xl,isNotFound:()=>_c,isObject:()=>C,isOk:()=>Ir,isOperationOutcome:()=>ot,isOrganizationArray:()=>Vf,isPeriod:()=>ni,isPopulated:()=>ue,isPrimitiveType:()=>Pt,isProfileLoaded:()=>Hn,isProfileResource:()=>Go,isQuantity:()=>N,isQuantityEquivalent:()=>ii,isRedirect:()=>Vc,isReference:()=>J,isResource:()=>D,isResourceType:()=>Ct,isResourceTypeSchema:()=>_r,isResourceWithId:()=>ut,isSchedulingRequirement:()=>Ba,isSliceDefinitionWithTypes:()=>Ui,isString:()=>le,isStringArray:()=>Au,isTextObject:()=>Yo,isTypedValue:()=>Sd,isUUID:()=>wu,isUnauthenticated:()=>Fc,isValidDate:()=>Lt,isValidHostname:()=>ju,isValidMedplumSemver:()=>xo,lazy:()=>li,loadDataType:()=>Vr,locationUtils:()=>me,mapByIdentifier:()=>Gu,matchDiscriminant:()=>Ur,matchesRange:()=>di,matchesSearchRequest:()=>tr,medicationCartClearRequestToParameters:()=>Cf,medicationCartRemoveRequestToParameters:()=>Rf,medicationCheckoutRequestToParameters:()=>Sf,medicationOrderRequestToParameters:()=>yf,medicationOrderSetRequestToParameters:()=>vf,medicationSearchParamsToParameters:()=>hf,move:()=>vn,multipleMatches:()=>Sc,normalizeArrayBufferView:()=>ui,normalizeCreateBinaryOptions:()=>Li,normalizeCreatePdfOptions:()=>Qs,normalizeErrorEvent:()=>_s,normalizeErrorString:()=>Ie,normalizeOperationOutcome:()=>Rt,notFound:()=>Vn,notModified:()=>hc,operationOutcomeIssueToString:()=>Io,operationOutcomeToString:()=>Nn,parametersToMedicationCartManageResponse:()=>wf,parametersToMedicationCheckoutResponse:()=>Ef,parametersToMedicationOrderResponse:()=>xf,parametersToMedicationOrderSetResponse:()=>Tf,parametersToOrderSetSyncResponse:()=>Of,parseFhirPath:()=>er,parseFhirPathPatchParameters:()=>Jp,parseFilterParameter:()=>nf,parseHl7DateTime:()=>sf,parseJWTPayload:()=>sr,parseLogLevel:()=>cf,parseMappingLanguage:()=>Tp,parseParameter:()=>Ss,parseReference:()=>uu,parseSearchRequest:()=>mt,parseSmartHealthLink:()=>pm,parseStructureDefinition:()=>Mr,parseXFhirQuery:()=>Jd,pathToJSONPointer:()=>He,preciseEquals:()=>Uu,preciseGreaterThan:()=>qu,preciseGreaterThanOrEquals:()=>rs,preciseLessThan:()=>Bu,preciseLessThanOrEquals:()=>ts,preciseRound:()=>Fu,preconditionFailed:()=>xc,projectAdminResourceTypes:()=>Es,protectedResourceTypes:()=>bs,readInteractions:()=>Rs,redirect:()=>Oo,redirectOk:()=>Oc,remove:()=>yn,removeDuplicates:()=>At,removePreferredPharmacyFromPatient:()=>Df,removeProfileFromResource:()=>Qu,reorderBundle:()=>Os,replace:()=>xn,replaceQueryVariables:()=>ks,resolveId:()=>K,resourceMatchesSubscriptionCriteria:()=>Fl,satisfiedAccessPolicy:()=>Cs,schedulingDurationToMinutes:()=>Yf,serializeError:()=>Tr,serializeFhircastSubscriptionRequest:()=>rn,serverError:()=>wc,serverTimeout:()=>Ac,serviceTypeIncludesService:()=>zf,setCodeBySystem:()=>Mu,setIdentifier:()=>vu,setRateLimitReset:()=>Ec,setScheduleParameter:()=>Hf,singleton:()=>L,singularize:()=>$u,sleep:()=>Qr,sortStringArray:()=>_t,splitN:()=>Je,splitSearchOnComma:()=>ht,streamToBuffer:()=>dm,stringify:()=>Vt,stringifyTypedValue:()=>xi,structureMapTransform:()=>Sp,subsetResource:()=>Hc,subtract:()=>zi,sumBy:()=>Ju,summarizeObservations:()=>tp,test:()=>ma,toJsBoolean:()=>j,toPeriod:()=>Ot,toServiceTypeCodeableConcepts:()=>Qf,toTypedValue:()=>E,tooManyRequests:()=>bc,trimTrailingEmptyElements:()=>bu,tryGetDataType:()=>Me,tryGetJwtExpiration:()=>Vi,tryGetProfile:()=>Gn,typedValueToString:()=>mi,unauthorized:()=>We,unauthorizedTokenAudience:()=>Ar,unauthorizedTokenExpired:()=>_n,unescapeToken:()=>da,unsupportedMediaType:()=>Tc,validateFhircastSubscriptionRequest:()=>or,validateResource:()=>eu,validateResourceType:()=>Xf,validateTypedValue:()=>Fo,validationError:()=>T,validationRegexes:()=>wt,warnIfNewerVersionAvailable:()=>Em,wordWrap:()=>ya});module.exports=sc(Rm);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",ac="http://loinc.org",cc="http://snomed.info/sct",uc="http://www.nlm.nih.gov/research/umls/rxnorm",dc="http://www.ama-assn.org/go/cpt",lc="http://hl7.org/fhir/sid/icd-10",pc="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",fc={resourceType:"OperationOutcome",id:Cr,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},mc={resourceType:"OperationOutcome",id:Pr,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},hc={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"}}]},gc={resourceType:"OperationOutcome",id:So,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},yc={resourceType:"OperationOutcome",id:An,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},xc={resourceType:"OperationOutcome",id:bo,issue:[{severity:"error",code:"processing",details:{text:"Precondition Failed"}}]};function vc(t){return{resourceType:"OperationOutcome",id:Eo,issue:[{severity:"error",code:"too-long",details:{text:t}}]}}var Tc={resourceType:"OperationOutcome",id:Ro,issue:[{severity:"error",code:"not-supported",details:{text:"Unsupported media type"}}]},Sc={resourceType:"OperationOutcome",id:Co,issue:[{severity:"error",code:"multiple-matches",details:{text:"Multiple resources found matching condition"}}]},bc={resourceType:"OperationOutcome",id:Po,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function Ec(t,e){t.extension=[...(t.extension??v).filter(r=>r.url!==Rr),{url:Rr,valueUnsignedInt:Math.ceil(e/1e3)}]}function Rc(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 Cc(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 Pc(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 wc(t){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:t.toString()}]}}function Ac(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 Oc(t){return{...Oo(t),id:Cr}}function Ic(t){return t?.issue?.[0]?.details?.coding?.find(e=>e.system==="urn:ietf:rfc:3986")?.code}function kc(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 Mc(t){return t.id===Pr}function Dc(t){return t.id===wr}function Vc(t){return t.id===In}function _c(t){return t.id===kn}function Nc(t){return t.id===Mn}function Lc(t){return t.id===An}function Fc(t){return t.id===Dn}function Uc(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 Bc(t,e){if(!Ir(t)||e===void 0)throw new m(t)}var m=class extends Error{constructor(r,n){super(Nn(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)?Nn(t):typeof t=="object"&&"code"in t&&typeof t.code=="string"?t.code:JSON.stringify(t):"Unknown error"}function Nn(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 Ln(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 qc={"http://hl7.org/fhirpath/System.String":"string"};function Wc(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:qc[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"}]},audience:{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),jc={"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 Lo(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=jc[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=Lo(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=Lo(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:Jc(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){zc(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:No(_(i,"fixed[x]")),pattern:No(_(i,"pattern[x]")),binding:e.binding}}};function Hc(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)&&!Gc.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"},Gc=["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 No(t){return Array.isArray(t)&&t.length>0?t[0]:O(t)?void 0:t}function zc(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 Jc(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 Nr(t,e,r){new zn(t,e,r).crawl()}function Kc(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?Lr:_,[i,...o]=e.split("."),s=[n(t,i,r)];for(let a of o){let u=[];for(let d of s)if(Array.isArray(d))for(let l of d)u.push(n(l,a,r));else(r?.withPath&&d?.value!==void 0||!r?.withPath&&d!==void 0)&&u.push(n(d,a,r));s=u}return s}function Lr(t,e,r){let n=t.path;return Yc(_(t,e,r),n,e)}function Yc(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"},Xc=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:/.*/},Zc={"ele-1":!0,"dom-3":!0,"org-1":!0,"sdf-19":!0};function eu(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),Nr(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}`)),nu(a,s)||this.issues.push(R(n,"Value did not match expected pattern"));let d=s.slicing?Object.fromEntries(s.slicing.slices.map(l=>[l.name,0])):void 0;for(let l of u){this.constraintsCheck(l,s),this.referenceTypeCheck(l,s),this.checkPropertyValue(l),this.collectValue(l,s);let f=iu(l,s.slicing);f&&d&&(d[f]+=1)}this.validateSlices(s.slicing?.slices,d,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=ru(e,s,r);if(a){let u,d;a.startsWith("_")?(u=a.slice(1),d=s.slice(1)):(u="_"+a,d="_"+s),u in o&&o[u]!==d&&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 Zc)&&!this.isExpressionTrue(i,e)){this.issues.push(Ln(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,d="https://medplum.com/fhir/StructureDefinition/",l=d+i;for(let f of o)if(f===a||f===u||f===l||!f.startsWith(s)&&!f.startsWith(d))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"&&su(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,Xc);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]=ou(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&&Nr(n,this,{schema:ye("Element"),initialPath:i})}validateBase64Binary(e,r){if(!au(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")):tu(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 tu(t){return t===p.integer||t===p.positiveInt||t===p.unsignedInt}function ru(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 nu(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 iu(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 ou(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 su(t){switch(t){case"CodeableConcept":case"Coding":case"code":case"Quantity":case"string":case"uri":return!0;default:return!1}}function au(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}:N(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 L(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("."),d=r.path.substring(u+1),l=d,f=!1;d.endsWith("[x]")&&(l=d.substring(0,d.length-3),f=!0);for(let h of i){let b=l;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):N(r)&&N(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):N(s)&&N(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 N(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 N(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 cu(t??{},e)}return t}function cu(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 uu(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=du(t);if(e)return e}if(t.resourceType==="Appointment"&&t.serviceType?.[0])return Te(t.serviceType[0]);if(t.resourceType==="Device"){let e=lu(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 du(t){let e=t.name;if(e&&e.length>0)return lt(e[0])}function lu(t){let e=t.deviceName;if(e&&e.length>0)return e[0].name}function pu(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 fu(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(),d=n.getUTCDate(),l=a-i;(u<o||u===o&&d<s)&&l--;let f=a*12+u-(i*12+o);d<s&&f--;let h=Math.floor((n.getTime()-r.getTime())/(1e3*60*60*24));return{years:l,months:f,days:h}}function mu(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 hu(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 gu(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 yu={system:wn,code:"MR"};function xu(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 vu(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)?Tu(t):Su(t):t}function Tu(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 Su(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 bu(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)?Eu(t,e):Array.isArray(t)||Array.isArray(e)?!1:C(t)&&C(e)?Ru(t,e,r):(C(t)||C(e),!1)}function Eu(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 Ru(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)?Cu(t,e):Array.isArray(t)||Array.isArray(e)?!1:C(t)&&C(e)?Pu(t,e):C(t)||C(e)?!1:t===e}function Cu(t,e){return e.every(r=>t.some(n=>at(n,r)))}function Pu(t,e){return Object.entries(e).every(([r,n])=>r in t&&at(t[r],n))}function de(t){return t===void 0?t:JSON.parse(JSON.stringify(t))}function wu(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 Au(t){return t.every(le)}function le(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 Ou(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 Iu(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 ku(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 Mu(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 Du(t,e,r,n){return t.qualifiedInterval?.find(i=>es(i,e)&&Lu(i,r,t.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function Vu(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 _u(t,e)&&Nu(t,e)}function _u(t,e){return!t.gender||t.gender===e.gender}function Nu(t,e){return!t.age||di(Mt(e.birthDate).years,t.age)}function Lu(t,e,r){return!!t.range&&di(e,t.range,r)}function di(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 Fu(t,e){return Number.parseFloat(t.toFixed(e))}function Uu(t,e,r){return ce(t,r)===ce(e,r)}function Bu(t,e,r){return ce(t,r)<ce(e,r)}function qu(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 Wu(t,e,r){return t.find(n=>typeof e=="string"?$r(n.code||{},r)===e:$r(n.code||{},r)===$r(e,r))}function $u(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 li(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 dt(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),dt(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 ju(t){return is.test(t)}function Hu(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 Gu(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 zu(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 Ju(t,e){let r=0;for(let n of t)r+=e(n);return r}function Ku(t,e){let r=0;for(let n of t)e(n)&&r++;return r}function Yu(t,e){let r={};for(let n of t){let i=e(n);r[i]=(r[i]??0)+1}return r}function Xu(t){return t.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;").replaceAll("\u201C","&ldquo;").replaceAll("\u201D","&rdquo;").replaceAll("\u2018","&lsquo;").replaceAll("\u2019","&rsquo;").replaceAll("\u2026","&hellip;")}function Nt(t){return t!=null}function Zu(t){throw new Error(`Unexpected value: ${JSON.stringify(t)}`)}var v=Object.freeze([]),ed=()=>{};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 lt(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 lt(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 td(t){let e=[];return t.given&&e.push(...t.given),e.join(" ").trim()}function rd(t){return Ke(t.family)??""}function Lt(t){return t instanceof Date&&!Number.isNaN(t.getTime())}function nd(t,e,r){if(!t)return"";let n=new Date(t);return Lt(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...r})):""}function id(t,e,r){if(!t)return"";let n=new Date("2000-01-01T"+t+"Z");return Lt(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 Lt(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 Lt(n)?n.toLocaleString(e,r):""}function od(t,e,r){return!t||!t.start&&!t.end?"":ze(t.start,e,r)+" - "+ze(t.end,e,r)}var sd={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},ad={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},cd={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function ud(t){if(!t)return"";let e=[];return dd(e,t.repeat),t.event&&e.push(t.event.map(r=>ze(r)).join(", ")),U(e.join(" ").trim())}function dd(t,e){if(!e?.periodUnit)return;let r=e.frequency??1,n=e.period??1,i=e.periodUnit;r===1&&n===1?t.push(sd[i]):(r===1?t.push("once"):t.push(r+" times"),n===1?t.push("per "+ad[i]):t.push("per "+n+" "+cd[i])),e.dayOfWeek&&t.push("on "+e.dayOfWeek.map(U).join(", ")),e.timeOfDay&&t.push("at "+e.timeOfDay.map(o=>as(o)).join(", "))}function ld(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=md(n.value,e),`> ${be(n,e)}`):`>= ${be(n,e)}`:n?.value===void 0&&i?.value!==void 0?r&&e!==void 0?(i.value=fd(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 pd(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 fd(t,e,r=1){return(us(t,e)+r)*Math.pow(10,-e)}function md(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 hd(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"&&ls(r.type)}function ls(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=ls(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 gd(t){return H.types[t]?.searchParams}function yd(t,e){return H.types[t]?.searchParams?.[e]}function xd(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(Td).join(" ").replace("_"," ").replaceAll(/\s+/g," ")}var vd=new Set(["CDS","ID","IP","JWKS","PKCE","OMB","OID","SOP","UDI","UID","URI","URL"]);function Td(t){let e=t.toUpperCase();return t===e?t:vd.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 d=gi(o.elements,a);if(!d)return;if(d.type.length>1)throw new Error("Multiple matching types in path "+e);u=Me(d.type[0].code),s=d}u&&(o=u)}return s}function Sd(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 ds(t.value);case p.CodeableConcept:return t.value.coding?.map(ds).join(",")??t.value.text;case p.HumanName:return t.value.text?t.value.text:lt(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 ds(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 N(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?[]:N(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=L(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=N(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(l=>l.eval(e,r)[0]?.value)),u=o?p.Quantity:r[0].type,d=o?{...i,value:a}:a;return[{type:u,value:d}]}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):Lr(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=L(i)?.value,a=L(o)?.value,u=N(s)?s.value:s,d=N(a)?a.value:a,l=this.impl(u,d);return typeof l=="boolean"?y(l):N(s)?[{type:p.Quantity,value:{...s,value:l}}]:[E(l)]}},hs=Object.freeze({type:"string",value:""}),qt=class extends w{constructor(e,r){super("&",e,r)}eval(e,r){let n=L(this.left.eval(e,r))??hs,i=L(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=L(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=L(this.left.eval(e,r),"boolean"),i=L(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=L(this.left.eval(e,r),"boolean"),i=L(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=L(this.left.eval(e,r),"boolean"),i=L(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=L(this.left.eval(e,r),"boolean"),i=L(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(", ")})`}},Ne=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 bd=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],Ed=/^\d{4}-\d{2}[\dT:.+\-Z]*(?=[\s)\]]|$)/,Rd={"'":"'",'"':'"',"`":"`",r:"\r",n:`
2
2
  `,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()!==`
3
- `))}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()===`
4
- `?(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","Enterprise","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",LINKSET_JSON:"application/linkset+json",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.37-82e609c",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=`{
3
+ `))}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=Rd[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 Ed.test(this.str.substring(e))?(this.pos.index=e-1,this.consumeDateTime()):this.consumeUnquotedString(e);if(n===" ")Cd(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()===`
4
+ `?(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 Cd(t){return!!(t&&(t.id==="String"||t.id==="Symbol"&&bd.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},Pd={parse(t){let e=t.consumeAndParse();if(!t.match(")"))throw new Error("Parse error: expected `)` got `"+t.peek()?.value+"`");return e}},wd={parse(t,e){let r=t.consumeAndParse();if(!t.match("]"))throw new Error("Parse error: expected `]`");return new Ne(e,r)},precedence:S.Indexer},Ad={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 Od(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:Od(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("(",Pd).registerInfix("[",wd).registerInfix("(",Ad).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 Id=ft();function er(t){return new Re(t,Id.construct(gs(t)).consumeAndParse())}function kd(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 Md(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&&(le(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 Dd(t){let e=[];for(let r of t){let{value:n}=r;typeof n=="number"?e.push({value:n}):N(n)&&e.push(n)}return e}function Vd(t){let e=new Set;for(let r of t)le(r.value)&&e.add(r.value);return Array.from(e)}function bi(t,e={}){let r=[];for(let n of t)_d(e,r,n);return r}function _d(t,e,r){let{type:n,value:i}=r;switch(n){case p.Identifier:Nd(e,t,i);break;case p.CodeableConcept:Ld(e,t,i);break;case p.Coding:ys(e,t,i);break;case p.ContactPoint:Fd(e,t,i);break;default:Xe(e,t,void 0,i?.toString())}}function Nd(t,e,r){r?.type?.text&&Xe(t,e,e.textSearchSystem,r.type.text),Xe(t,e,r?.system,r?.value)}function Ld(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 Fd(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 Ud=20,Bd=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 qd(i,o)}function qd(t,e){let r={resourceType:t},n=new Set;for(let[i,o]of e)Wd(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 Wd(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":$d(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,Hd(i,o,n))}}}}function $d(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 jd=[g.MISSING,g.PRESENT];function Ss(t,e,r,n){if(jd.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}=Gd(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:Qd(r)??e,value:n}}default:throw new Error("Unrecognized search parameter type: "+t.type)}}function Hd(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 Gd(t,e){let r=t.substring(0,2),n=Ci[r];return n?{operator:n,value:t.substring(2)}:{operator:e,value:t}}function Qd(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 zd=/{{([^{}]+)}}/g;function Jd(t,e,r=[]){return t=t.replaceAll(zd,(n,i)=>{let o=k(i,r,e);return o.length!==1?"":xi(o[0])}),mt(t)}function Kd(t){let e=[];t.fields&&e.push("_fields="+t.fields.join(","));for(let r of t.filters??v)e.push(Yd(r));t.sortRules&&t.sortRules.length>0&&e.push(Xd(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 Yd(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 Xd(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 Zd(t,e){return A(`Invalid modifier :${t} for ${e}`)}function el(t,e){return t in Ri?Zd(t,e):A(`Invalid operator ${t} for ${e}`)}function tl(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(!nl(t,e,r))return!1;return!0}var rl=new ee(1e3);function nl(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,rl);if(r.operator===g.MISSING||r.operator===g.PRESENT)return il(i,r);switch(n.type){case"reference":return ol(n,i,r);case"string":case"uri":return cl(i,r);case"token":return sl(i,r);case"date":return dl(i,r);default:return!1}}function il(t,e){let r=t.length>0;return(e.operator===g.MISSING&&e.value==="false"||e.operator===g.PRESENT&&e.value==="true")===r}function ol(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 sl(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(al(o,s))return!i;return i}function al(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 cl(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(ul(o,s))return!i;return i}function ul(t,e){return t.toLowerCase().includes(e.toLowerCase())}function dl(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(ll(o,e.operator,s))return!i;return i}function ll(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 pl={resourceType:"*"},bs=["DomainConfiguration","Enterprise","JsonWebKey","Login"],Es=["Cron","Package","PackageRelease","PackageInstallation","Project","ProjectMembership","User","UserSecurityRequest"],Le={READ:"read",VREAD:"vread",UPDATE:"update",DELETE:"delete",HISTORY:"history",CREATE:"create",SEARCH:"search"},Rs=[Le.READ,Le.VREAD,Le.HISTORY,Le.SEARCH];function fl(t,e){return Pi(t,Le.SEARCH,e)}function ml(t,e){return bs.includes(e)?!1:Pi(t,Le.UPDATE,e)}function Pi(t,e,r){return!!t.resource?.some(n=>Ps(n,r,e))}function hl(t,e){return!!Cs(e,Le.UPDATE,t)}function Cs(t,e,r){return r?r.resource?.find(n=>gl(t,e,n)):pl}function gl(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 yl={FIRST:"first",APPLICATION:"application"};function X(){return typeof window<"u"}function xl(){return typeof Buffer<"u"}function vl(){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=de(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)=>Tl(i,o,e),2);return Os(JSON.parse(n))}function Tl(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=bl(t),{sorted:r,cycles:n}=Sl(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 d=i[u],l={...d,request:{...d.request,method:"PUT"}};s.push(l)}return s.push(...o),{...t,entry:s}}var gt={NotVisited:"NotVisited",Visiting:"Visiting",Visited:"Visited"};function Sl(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 bl(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 El(t){t=de(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 Rl(t,e,r){return t.entry?.find(({resource:n})=>n?.resourceType===e&&n?.id===r)?.resource}async function Cl(t,e,r,n){return{hook:r.hook,hookInstance:oe(),context:n,prefetch:await Pl(t,e,r,n)}}async function Pl(t,e,r,n){if(!r.prefetch)return{};let i={};for(let[o,s]of Object.entries(r.prefetch)){let a=await wl(t,e,n,s);i[o]=a??null}return i}function wl(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 Al=new Set(["userPractitionerId","userPractitionerRoleId","userPatientId","userRelatedPersonId"]);function ks(t,e,r){return r.replaceAll(/\{\{([^}]+)\}\}/g,(n,i)=>{if(i=i.trim(),Al.has(i))return t.id;if(i.startsWith("context.")){let o=i.substring(8),s=Ol(e,o);if(le(s))return s;if(typeof s=="number"||typeof s=="boolean")return String(s)}return n})}function Ol(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",LINKSET_JSON:"application/linkset+json",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 Il(){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 kl(){}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||(Il(),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",kl);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"},Ns=["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 Ls={"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 Ns.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 Ml(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 Dl(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 Ml(t,e.resource,r,n)}function Vl(t,e){let r=new Map,n=Ls[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.`));Dl(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 Vl(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 d=u;d.event["hub.event"]!=="heartbeat"&&(this.dispatchEvent({type:"message",payload:d}),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 _l(t){return JSON.parse(nr(t))}function Mi(t){return t.split(".").length===3}function sr(t){let[e,r,n]=t.split(".");return _l(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 Nl=[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)}},Ni=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 dr))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 d=this.criteriaEntriesBySubscriptionId.get(a);if(!d){console.warn("Received handshake for criteria the SubscriptionManager is not listening for yet");return}(d.state==="connecting"||d.state==="refreshing")&&(d.state="active"),d.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 Ni(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(){Nl.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 Ll=new ee(1e3);async function Fl({resource:t,subscription:e,context:r,getPreviousResource:n,logger:i}){if(!Ul(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,d=!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)){d=!0;break}if(u&&!d)return i?.debug("Ignored rest hook for unsupported interaction",{subscription:e.id,interaction:r.interaction}),!1;if(!tr(t,s))return!1;let l=jr(e.meta)??[],f=jr(t.meta)??[];return l.length&&!l.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 Ul(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,Ll)?.[0]?.value===!0}var sn="5.1.39-a4523f7",Bl="medplum-cli",js=V.FHIR_JSON+", */*; q=0.1",ql="https://api.medplum.com/",Wl=1e3,$l=6e4,jl=0,Hl=3e5,Gl="Binary/",qs={resourceType:"Device",id:"system",deviceName:[{type:"model-name",name:"System"}]},Ql=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"},zl={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"},Jl={ES256:"ES256",ES384:"ES384",ES512:"ES512",HS256:"HS256",RS256:"RS256",RS384:"RS384",RS512:"RS512"},dr=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??Kl(),this.storage=r?.storage??new yt(void 0,r?.storagePrefix),this.createPdfImpl=r?.createPdf,this.baseUrl=dt(r?.baseUrl??ql),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??Hl,this.logLevel=this.initializeLogLevel(r),this.maxRetries=r?.maxRetries??2,this.maxRetryTime=r?.maxRetryTime??2e3,this.cacheTime=r?.cacheTime??(X()?$l:jl),this.cacheTime>0?this.requestCache=new ee(r?.resourceCacheSize??Wl):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:d}=o;if(!d)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",d),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(d=>d.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(d=>d.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=`{
5
5
  StructureDefinitionList(_filter: "name eq ${r}") {
6
6
  resourceType,
7
7
  name,
@@ -41,7 +41,7 @@
41
41
  expression,
42
42
  target
43
43
  }
44
- }`.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&&lt(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(`
44
+ }`.replaceAll(/\s+/g," "),u=await this.graphql(a);Dr(u.data.StructureDefinitionList);for(let d of u.data.SearchParameterList)zr(d)})());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=Li(r,n,i,o);if(a.contentType===V.XML){let l=a.data,f;l 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(l,"utf-8")}):ArrayBuffer.isView(l)?f=new TextDecoder().decode(l):f=l,f.includes("<ClinicalDocument")&&f.includes("urn:hl7-org:v3")&&(a={...a,contentType:V.CDA_XML})}let u=s??(typeof n=="object"?n:{}),d=await this.createBinary(a,u);return{contentType:a.contentType,url:d.url,title:a.filename}}createBinary(r,n,i,o,s){let a=Li(r,n,i,o),u=s??(typeof n=="object"?n:{}),{data:d,contentType:l,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,d,l,b,u):this.post(P,d,l,u)}uploadwithProgress(r,n,i,o,s){return new Promise((a,u)=>{let d=new XMLHttpRequest,l=()=>d.abort();s?.signal?.addEventListener("abort",l);let f=h=>{s?.signal?.removeEventListener("abort",l),h instanceof Error?u(h):a(h)};if(d.responseType="json",d.onabort=()=>f(new DOMException("Request aborted","AbortError")),d.onerror=()=>f(new Error("Request error")),o&&(d.upload.onprogress=h=>o(h),d.upload.onload=h=>o(h)),d.onload=()=>{d.status>=200&&d.status<300?f(d.response):f(new m(Rt(d.response||d.statusText)))},d.open("POST",r),d.withCredentials=!0,d.setRequestHeader("Authorization","Bearer "+this.accessToken),d.setRequestHeader("Cache-Control","no-cache, no-store, max-age=0"),d.setRequestHeader("Content-Type",i),this.options.extendedMode!==!1&&d.setRequestHeader("X-Medplum","extended"),s?.headers){let h=s.headers;for(let[b,P]of Object.entries(h))d.setRequestHeader(b,P)}d.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:d,fonts:l,...f}=s,h=await this.createPdfImpl(u,d,l),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:d,...l}=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,...d!==void 0?{returnAck:d}:void 0},V.FHIR_JSON,l)}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(Gl)&&(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 d=await Ws(o,u);if(d)return this.request(d,{...n,method:"GET",body:void 0})}if(o.status===202&&n.pollStatusOnAccepted){let l=await Ws(o,u)??i.statusUrl;if(l)return this.pollStatus(l,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||!Zl(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(l=>l.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(l=>l.startsWith("r="))?.substring(2),a=s?Number.parseInt(s,10):Number.NaN,u=i.find(l=>l.startsWith("t="))?.substring(2),d=u?Number.parseInt(u,10):Number.NaN;if(!o||Number.isNaN(a)||Number.isNaN(d))throw new Error("Could not parse RateLimit header: "+r);return{name:o,remainingUnits:a,secondsUntilReset:d,resetsAfter:Math.ceil((Date.now()+1e3*d)/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&&dt(n.pathname).startsWith(dt(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<Ql?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 d=this.accessToken!==a;return this.isAuthenticated(r)&&(!n||d)?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 Kl(){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 Yl(t){return C(t)&&"data"in t&&"contentType"in t}function Li(t,e,r,n){return Yl(t)?t:{data:t,filename:e,contentType:r,onProgress:n}}function Xl(t){return C(t)&&"docDefinition"in t}function Qs(t,e,r,n){return Xl(t)?t:{docDefinition:t,filename:e,tableLayouts:r,fonts:n}}function Zl(t){return t.status===429||t.status>=500}var ep={aws_ssm_parameter_store:"aws_ssm_parameter_store"};function tp(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(!rp(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:np(this.dataPoints,this.sampling)}}]}}};function rp(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 np(t,e){if(t.length)return t.map(r=>(r-(e?.origin.value??0))/(e?.factor??1)).join(" ")}function ip(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=op(e,r,t,!!i),a=Je(e,".",2)[1];s=sp(s,o,a),s=ap(s,o,a);let u=Object.create(null);for(let[l,f]of Object.entries(s))u[e+"."+l]=f;let d;if(t&&!t.isDefaultContext)d=t.getExtendedProps;else{let l=Object.create(null);d=f=>{let h=Je(f,".",2)[1];if(h){if(!l[h]){let b=cn(h,o?.hiddenFields);l[h]={hidden:b,readonly:b||cn(h,o?.readonlyFields)}}return l[h]}}}return{path:e,elements:s,elementsByPath:u,profileUrl:n??t?.profileUrl,debugMode:i,getExtendedProps:d,accessPolicyResource:o}}function op(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 sp(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 ap(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 cp(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=>cp(o,s,i,i.typeSchema?.url??n)))return i.name}}var lr=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=up(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 up(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 d of e)if(r(d.key,o)){n(d,a),u=!0;break}u||e.push(a)}return e}var dn="__sliceName";function dp(t,e){let r=new ln(t,t.resourceType,"resource");return new lr(e,r).crawlResource(),r.getDefaultValue()}function lp(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 pp(t,e,r,n){let i=new ln([{[dn]:e.name}],e.path,"element");return new lr(n,i).crawlSlice(t,e,r),i.getDefaultValue()[0]}var ln=class{constructor(e,r,n){c(this,"rootValue");c(this,"schemaStack");c(this,"valueStack");this.schemaStack=[],this.valueStack=[],this.rootValue=de(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 d=Se(n.path,o),l=Array.isArray(u)?u:[u];for(let f of l){fp(f,s,r,n.elements,d),pr(f,s,r,n.elements);let h=Wi(f,s,n.elements,d);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 d=u.length-1;d>=0;d--){let l=u[d];ue(l)||u.splice(d,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[dn]??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];dn in i&&delete i[dn]}}getDefaultValue(){return this.rootValue}};function fp(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 d=(n?n+".":"")+i.slice(0,a+1).join("."),f=r[d].type[0].code;u=u.replace("[x]",U(f))}if(a===i.length-1){Array.isArray(o)?s=o.map(d=>d[u]):s=o[u];continue}if(Array.isArray(o))o=o.map(d=>d[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 l=n[o.slice(0,a+1).join(".")].type[0].code;u=u.replace("[x]",U(l))}if(a===o.length-1){let d=Array.isArray(s)?s:[s];for(let l of d)r.fixed?l[u]??=r.fixed.value:r.pattern&&(l[u]=Js(l[u],r.pattern.value))}else{if(!(u in s)){let d=o.slice(0,a+1).join(".");s[u]=n[d].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:de(e);if(C(e)&&(C(t)&&!Array.isArray(t)||t===void 0)){let r=de(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=mp(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 mp(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=hp(i,o)),s&&r.push(...s)}return r}function hp(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 gp=[...Zt,"->","<<",">>","=="];function Ys(t){return new Pe(t,Xt,gp).tokenize()}var yp={"-":"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=yp[this.parser.consume().value],a=this.parser.consume().value,u=r[a];this.parser.consume(":");let d=this.parser.consume().value,l=e?.group?.find(f=>f.source===i&&f.target===u);l||(l={source:i,target:u,element:[]},e.group||(e.group=[]),e.group.push(l)),l.element||(l.element=[]),l.element.push({code:o,target:[{code:d,equivalence:s}]})}};function Xs(t){if(t instanceof F)return{valueId:t.name};if(t instanceof G)return xp(t);throw new Error(`Unknown parameter atom type: ${t.constructor.name} (${t.toString()})`)}function xp(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 vp=ft().registerInfix("->",{precedence:S.Arrow}).registerInfix(";",{precedence:S.Semicolon});function Tp(t){let e=vp.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 Sp(t,e,r=new pn){return bp({root:t,transformMaps:r},t,e)}function bp(t,e,r){return Ep(t,e),ea(t,e),Gi(t,e.group[0],r)}function Ep(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 d of e.input)d.mode==="source"&&n.push(d),d.mode==="target"&&i.push(d);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 d of n)fr(o,d.name,r[a++]);for(let d of i){let l=r[a++]??{type:d.type??"BackboneElement",value:{}};fr(o,d.name,l),s.push(l)}let u={root:t.root,parent:t,variables:o};for(let d of e.rule??v)ta(u,d);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 wp(t,n))fn(t,"_",i),n.variable&&fn(t,n.variable,i),r<e.source.length-1?ra(t,e,r+1):Rp(t,e)}function Rp(t,e){if(!Cp(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)Lp(t,r)}}function Cp(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=Pp(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:{}},d=Gi(u,n,[r]);return ia(t,i,o,d,a,s),!0}function Pp(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 wp(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=Ap(e,i)),i}function Zs(t,e,r){return j(k(r,[t],e))}function Ap(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=Op(t,e);break;case"cast":i=Ip(t,e);break;case"cc":i=kp(t,e);break;case"copy":i=Mp(t,e);break;case"create":i=Dp(t,e);break;case"evaluate":i=Vp(t,e);break;case"translate":i=_p(t,e);break;case"truncate":i=Np(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,Fp(n))}}function oa(t,e){return sa(t,e)?.isArray}function sa(t,e){return Me(t.type)?.elements?.[e]}function Op(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 Ip(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 kp(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 Mp(t,e){return e.parameter.flatMap(r=>Q(t,r))}function Dp(t,e){let r={};return e.parameter&&e.parameter.length>0&&(r.resourceType=Q(t,e.parameter?.[0])?.[0]?.value),[E(r)]}function Vp(t,e){let n=Q(t,e.parameter?.[0])[0].value;return k(n,[],aa(t))}function _p(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 Np(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 Lp(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 Fp(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 Up(t){return t&&typeof t=="object"}function vt(t){if(!Up(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 Bp(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 qp(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 Wp(t){return t.op==="add"}function $p(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,d=s(a,u).operations,[l]=d.reduce(([f,h],b)=>{if(Wp(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($p(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 l}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]})}),qp(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 da(t){return t.replace(/~1/g,"/").replace(/~0/g,"~")}function la(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(da);if(r[0]!=="")throw new Error(`Invalid JSON Pointer: ${e}`);return new t(r)}toString(){return this.tokens.map(la).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 jp(t,e,r){return e.map(n=>Yi(t,n,r))}function Hp(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 Gp(t,e,r){let n=new M;return(r?Hp(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 zp=Object.freeze({implicitArrayCreation:!0});function Jp(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 Kp(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},zp);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 Yp=/\[(?<index>\d+)\]$/;function Zi(t){let e=Yp.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 Xp=" ".repeat(2),to=class{constructor(e=Xp,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(`
45
45
  `)}appendNoWrap(e){this.b.push(this.indent.repeat(this.indentCount)),this.b.push(e),this.b.push(`
46
46
  `)}append(e){let r=this.indent.repeat(this.indentCount)+e;if(r.length<160)this.b.push(r),this.b.push(`
47
47
  `);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(`
@@ -50,8 +50,8 @@
50
50
 
51
51
  `,`
52
52
 
53
- `)}};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(`
54
- `)};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",Mf="https://medplum.com/fhir/StructureDefinition/SchedulingColor",bn="https://medplum.com/fhir/service-type-reference",_a="http://hl7.org/fhir/StructureDefinition/timezone",La=["mon","tue","wed","thu","fri","sat","sun"];function Df(t){return La.includes(t)}function Vf(t){return!!ae(t,Sr)}function _f(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"&&_f(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 Lf(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 Nf(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 Ff(t){let e=[{url:bn,valueReference:re(t)}];return t.type?.length?t.type.map(r=>({...r,extension:[...r.extension??[],...e]})):[{extension:e}]}function Uf(t,e){if(!t?.length)return!1;let r=I(e);return t.some(n=>De(n,bn)?.reference===r)}function Bf(t){return t?.length?t.map(e=>De(e,bn)).filter(Lt):[]}var qf={wk:1440*7,d:1440,h:60,min:1};function Wf(t){let e=t?.value;if(e===void 0||e<0)return;let r=t?.unit===void 0?void 0:qf[t.unit];return r===void 0?void 0:e*r}function $f(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)?jf(t,e,r):typeof t=="object"&&Hf(t,e,r)}function jf(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 Hf(t,e,r){for(let[n,i]of Object.entries(t))uo(i,`${e}${e?".":""}${n}`,r)}var qa=new WeakMap;function Gf(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 Qf(t,e){return H.types[t]?.searchParamsDetails?.[e.code]??Jf(t,e)}function zf(t,e,r){let n=H.types[t];n||(n={},H.types[t]=n),n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=r}function Jf(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:Xf(e,o.propertyTypes),elementDefinitions:a,parsedExpression:s,array:o.array,referenceTargetTypes:em(e,a)};return zf(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){Kf(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;Yf(f)&&(f=s.type[0].code),Wa(t,e,f,u)}}function Kf(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 Yf(t){return t==="Element"||t==="BackboneElement"}function Xf(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 Zf(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 em(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 tm(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 rm(t){return`shlink:/${wi(JSON.stringify(t))}`}function nm(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 im(t){return/\/shl\/([^/]+)\/(?:manifest|payload)$/.exec(t)?.[1]}function om(t,e){let r=[];for(let n of e)r.push(...sm(t,n));return r}function sm(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(...am(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 am(t){if(t.length===0)return[];let e=t[0];for(let r=1;r<t.length;r++)e=cm(e,t[r]);return e}function cm(t,e){let r=[];for(let n of t)for(let i of e)r.push(um(n,i));return r}function um(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 lm(){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 dm(t,e){if(!xo(e))return!1;try{await Cn(t,e)}catch{return!1}return!0}async function pm(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 fm(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 mm(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,SchedulingScheduleColorURI,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});
53
+ `)}};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 Zp=[...Zt,"eq","ne","co"];function xa(t){return new Pe(t,Xt,Zp,{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 ef={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 tf(t){let e=ef[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,tf(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}},rf=ft();function nf(t){let e=rf.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 of={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()??"",d=n?.getField(12)?.toString()??"2.5.1",l=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",d],this.context),new Tt(["MSA",l,u,of[l]],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 sf(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 d=new Date(Date.UTC(r,n,i,o,s,a,u)),l=af(t,e?.tzOffset);return l!==0&&(d=new Date(d.getTime()-l)),d.toISOString()}function nt(t,e){let r=Number.parseInt(t,10);return Number.isNaN(r)?e:r}function af(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 cf(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(`
54
+ `)};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",uf="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 df(){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 lf(t){return Array.isArray(t)?t.every(e=>D(e,"Medication")):!1}function pf(t,e){return Hr(t,e.pendingOrderIdSystem)}function ff(t,e){let r=De(t,e.pendingOrderStatusUrl);return typeof r=="string"?r:void 0}function mf(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 hf(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 gf(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 yf(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(gf("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 xf(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 vf(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 Tf(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 Sf(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 bf(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 Ef(t){let e=[],r={};for(let i of t.parameter??[])if(i.name)if(i.name==="items"){let o=bf(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 Rf(t){return{resourceType:"Parameters",parameter:[x("patientId","valueId",t.patientId),x("action","valueCode","remove"),x("medicationRequestId","valueId",t.medicationRequestId)]}}function Cf(t){return{resourceType:"Parameters",parameter:[x("patientId","valueId",t.patientId),x("action","valueCode","clear")]}}function Pf(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 wf(t){let e=[],r={};for(let i of t.parameter??[])if(i.name)if(i.name==="items"){let o=Pf(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 Af(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 Of(t){let e={},r=[];for(let n of t.parameter??[])n.name&&(n.name==="results"&&n.part?.length?r.push(Af(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 If(t,e){let r=t.extension?.find(n=>n.url==="type");r&&(r.valueCodeableConcept={coding:[{system:e,code:co,display:"Preferred Pharmacy"}]})}function kf(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 Mf(t,e,r,n=ao){t.extension??=[];let i=I(e);if(r)for(let a of t.extension)so(a)&&oo(a)!==i&&If(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 Df(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 Vf(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 _f(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",Nf="https://medplum.com/fhir/StructureDefinition/SchedulingEncounterCoding",Lf="https://medplum.com/fhir/StructureDefinition/SchedulingPlanDefinition",Ff="https://medplum.com/fhir/StructureDefinition/SchedulingColor",_a="https://medplum.com/fhir/CodeSystem/scheduling-eligibility",Na="requires-procedure",La="requires-diagnosis",Fa="requires-medical-necessity",Ua=[Na,La,Fa];function Ba(t){return Ua.includes(t)}var Uf="https://medplum.com/fhir/StructureDefinition/SchedulingMedicalNecessity",Bf="https://medplum.com/fhir/StructureDefinition/SchedulingSlotCapacity",bn="https://medplum.com/fhir/service-type-reference",qa="http://hl7.org/fhir/StructureDefinition/timezone",Wa=["mon","tue","wed","thu","fri","sat","sun"];function qf(t){return Wa.includes(t)}function Wf(t){return!!ae(t,Sr)}function $f(t){let e=new Set;for(let r of t?.eligibility??[])for(let n of r.code?.coding??[])n.system===_a&&Ba(n.code)&&e.add(n.code);return e}function jf(t,e){if(!t?.reference)return!1;let[r,n]=t.reference.split("/");return`${r}/${n}`===e}function $a(t,e){return t.url===Sr&&(t.extension?.some(r=>r.url==="service"&&jf(r.valueReference,e))??!1)}function ja(t,e){let r=I(e);return t.extension?.filter(n=>$a(n,r))??[]}function Ha(t,e,r){return ja(t,e).flatMap(n=>Dt(n,r))}function Hf(t,e,r){let n=Ga(t,e,r.url),i=re(e);n.extension??=[];let o=n.extension.find(s=>$a(s,i.reference));return o||(o={url:Sr,extension:[{url:"service",valueReference:i}]},n.extension.push(o)),o.extension=[...o.extension??[],r],n}function Ga(t,e,r){let n=de(t);for(let i of ja(n,e))i.extension&&(i.extension=i.extension.filter(o=>o.url!==r));return n}function Gf(t,e,r){let n=(e?Ha(e,t,"timezone"):[]).map(s=>s.valueCode).find(Nt);if(n)return n;let i=Dt(t,[Sr,"timezone"]).map(s=>s.valueCode).find(Nt);if(i)return i;let o=r&&De(r,qa);return typeof o=="string"?o:void 0}function Qf(t){let e=[{url:bn,valueReference:re(t)}];return t.type?.length?t.type.map(r=>({...r,extension:[...r.extension??[],...e]})):[{extension:e}]}function zf(t,e){if(!t?.length)return!1;let r=I(e);return t.some(n=>De(n,bn)?.reference===r)}function Jf(t){return t?.length?t.map(e=>De(e,bn)).filter(Nt):[]}var Kf={wk:1440*7,d:1440,h:60,min:1};function Yf(t){let e=t?.value;if(e===void 0||e<0)return;let r=t?.unit===void 0?void 0:Kf[t.unit];return r===void 0?void 0:e*r}function Xf(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)?Zf(t,e,r):typeof t=="object"&&em(t,e,r)}function Zf(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 em(t,e,r){for(let[n,i]of Object.entries(t))uo(i,`${e}${e?".":""}${n}`,r)}var Qa=new WeakMap;function tm(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 rm(t,e){return H.types[t]?.searchParamsDetails?.[e.code]??im(t,e)}function nm(t,e,r){let n=H.types[t];n||(n={},H.types[t]=n),n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=r}function im(t,e){let r=e.code,n=e.expression,i=mo(t,n),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let d of i){let l=En(d),f=li(()=>l.join("."));l.length===1&&l[0]instanceof w&&l[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")):za(o,l,t,1),f().endsWith("extension.valueDateTime")&&(o.array=!1,o.propertyTypes.clear(),o.propertyTypes.add("dateTime"))}let s;if(e.code.endsWith(":identifier")){let d=lo(n);if(d===void 0)throw new Error(`Unexpected expression for derived identifier search parameter: ${n}`);let l=fo(t,d);s=po(n,l)}else s=fo(t,n);let a=o.elementDefinitions.map(d=>({...d,type:d.type?.filter(l=>o.propertyTypes.has(l.code))})).filter(d=>d.type&&d.type.length>0),u={type:am(e,o.propertyTypes),elementDefinitions:a,parsedExpression:s,array:o.array,referenceTargetTypes:um(e,a)};return nm(t,r,u),u}function za(t,e,r,n){let i=e[n];if(i instanceof Ce){t.propertyTypes.add(i.right.toString());return}if(i instanceof ie){om(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 Ne&&(a=!0,u++);let d=e[u];if(s.isArray&&!a&&(t.array=!0),u===e.length-1){if(d instanceof Ce){t.elementDefinitions.push(s),t.propertyTypes.add(d.right.toString());return}if(d instanceof ie&&d.name==="ofType"){t.elementDefinitions.push(s),t.propertyTypes.add(d.args[0].toString());return}}if(u>=e.length){t.elementDefinitions.push(s);for(let l of s.type??v)t.propertyTypes.add(l.code);return}for(let l of s.type??v){let f=l.code;sm(f)&&(f=s.type[0].code),za(t,e,f,u)}}function om(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 sm(t){return t==="Element"||t==="BackboneElement"}function am(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 cm(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 Ne)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 um(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 dm(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 lm(t){return`shlink:/${wi(JSON.stringify(t))}`}function pm(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||!le(n.url)||!le(n.key))throw new Error("Invalid SMART Health Link payload");return n}function fm(t){return/\/shl\/([^/]+)\/(?:manifest|payload)$/.exec(t)?.[1]}function mm(t,e){let r=[];for(let n of e)r.push(...hm(t,n));return r}function hm(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),d;if(u.length===0)d={[a.name]:null};else if(a.collection)d={[a.name]:u.map(l=>l.value)};else if(u.length===1)d={[a.name]:u[0].value};else throw new Error("Multiple values found but not expected for column");s.push([d])}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 d of ho(u,o,r))a.push(d);s.push(a)}n.push(...gm(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 gm(t){if(t.length===0)return[];let e=t[0];for(let r=1;r<t.length;r++)e=ym(e,t[r]);return e}function ym(t,e){let r=[];for(let n of t)for(let i of e)r.push(xm(n,i));return r}function xm(t,e){let r={};return Object.assign(r,t),Object.assign(r,e),r}var yo=/^\d+\.\d+\.\d+(-[0-9a-z]{7})?$/,Ja="https://meta.medplum.com/releases",go=new Map;function vm(){go.clear()}function Ka(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 Ya(t,e,r,n){let i=new URL(`${Ja}/${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 Ya(`${i}.json`,t,`fetching manifest for version '${e??"latest"}'`,r);Ka(o),n=o,go.set(n.tag_name.slice(1),n)}return n}function xo(t){return yo.test(t)}function Xa(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 Za(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 Tm(t,e){if(!xo(e))return!1;try{await Cn(t,e)}catch{return!1}return!0}async function Sm(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 Xa(r),r}async function bm(t,e){return((await Ya("all.json",t,"fetching all release versions",e)).versions??[]).map(i=>i.version).filter(xo).toSorted(Za).reverse()}async function Em(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,REQUIRES_DIAGNOSIS_CODE,REQUIRES_MEDICAL_NECESSITY_CODE,REQUIRES_PROCEDURE_CODE,RXNORM,ReadablePromise,ReconnectingWebSocket,ReturnAckCategory,SCHEDULING_ELIGIBILITY_SYSTEM,SCHEDULING_REQUIREMENT_CODES,SNOMED,SchedulingEncounterCodingURI,SchedulingMedicalNecessityURI,SchedulingParametersURI,SchedulingPlanDefinitionURI,SchedulingScheduleColorURI,SchedulingSlotCapacityURI,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,getSchedulingRequirements,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,isSchedulingRequirement,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});
55
55
  /*!
56
56
  * Reconnecting WebSocket
57
57
  * by Pedro Ladaria <pedro.ladaria@gmail.com>