@medplum/core 5.1.28 → 5.1.30

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 yr=Object.defineProperty;var Na=Object.getOwnPropertyDescriptor;var Fa=Object.getOwnPropertyNames;var Ua=Object.prototype.hasOwnProperty;var Ba=(t,e,r)=>e in t?yr(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var qa=(t,e)=>{for(var r in e)yr(t,r,{get:e[r],enumerable:!0})},Wa=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Fa(e))!Ua.call(t,i)&&i!==r&&yr(t,i,{get:()=>e[i],enumerable:!(n=Na(e,i))||n.enumerable});return t};var $a=t=>Wa(yr({},"__esModule",{value:!0}),t);var c=(t,e,r)=>Ba(t,typeof e!="symbol"?e+"":e,r);var Qf={};qa(Qf,{AccessPolicyInteraction:()=>Le,AckCode:()=>ma,AndAtom:()=>$t,ArithmeticOperatorAtom:()=>q,AsAtom:()=>Re,CPT:()=>Qa,ClientStorage:()=>ht,ConcatAtom:()=>Lt,ContainsAtom:()=>Nt,ContentType:()=>V,DAYS_OF_WEEK:()=>Ia,DEFAULT_ACCEPT:()=>Fs,DEFAULT_MAX_SEARCH_COUNT:()=>yl,DEFAULT_SEARCH_COUNT:()=>gl,DataSampler:()=>rn,DotAtom:()=>re,EMPTY:()=>v,EmptySetAtom:()=>Vt,EqualsAtom:()=>Ut,EquivalentAtom:()=>qt,EventTarget:()=>zr,ExternalSecretSystems:()=>kd,FHIRCAST_EVENT_NAMES:()=>Jr,FHIRCAST_EVENT_RESOURCES:()=>As,FHIRCAST_EVENT_VERSION_REQUIRED:()=>Kr,FHIRCAST_RESOURCE_TYPES:()=>Ps,FhirFilterComparison:()=>fr,FhirFilterConnective:()=>hr,FhirFilterNegation:()=>mr,FhirPathAtom:()=>Ee,FhircastConnection:()=>Zt,FileBuilder:()=>Ki,FunctionAtom:()=>ne,HTTP_HL7_ORG:()=>St,HTTP_TERMINOLOGY_HL7_ORG:()=>Ka,Hl7Context:()=>Ae,Hl7Field:()=>he,Hl7Message:()=>Xi,Hl7Segment:()=>xt,ICD10:()=>za,INVALID_MEDICATION_CART_RESPONSE:()=>Pa,INVALID_MEDICATION_CHECKOUT_RESPONSE:()=>Ra,INVALID_MEDICATION_ORDER_RESPONSE:()=>xa,INVALID_MEDICATION_ORDER_SET_RESPONSE:()=>va,INVALID_MEDICATION_SEARCH_RESPONSE:()=>Up,ImpliesAtom:()=>Gt,InAtom:()=>Ft,IndexerAtom:()=>_e,InfixOperatorAtom:()=>A,InvalidOperationError:()=>pn,IsAtom:()=>Ve,LOINC:()=>ja,LRUCache:()=>ee,LiteralAtom:()=>G,LogLevel:()=>nt,LogLevelNames:()=>ya,Logger:()=>Zi,MEDICATION_REQUEST_STATUS_REASON_RESPONSE_NOT_RECEIVED:()=>Sa,MEDICATION_REQUEST_STATUS_REASON_SYSTEM:()=>Ta,MEDPLUM_CLI_CLIENT_ID:()=>yd,MEDPLUM_RELEASES_URL:()=>Ma,MEDPLUM_SEMVER_REGEX:()=>po,MEDPLUM_VERSION:()=>tn,MedplumClient:()=>sr,MedplumKeyValueClient:()=>rr,MemoryStorage:()=>Zr,MissingError:()=>z,MockAsyncClientStorage:()=>Ii,NDC:()=>Ja,NOOP:()=>ku,NotEqualsAtom:()=>Bt,NotEquivalentAtom:()=>Wt,OAuthClientAssertionType:()=>Bs,OAuthGrantType:()=>et,OAuthSigningAlgorithm:()=>Pd,OAuthTokenAuthMethod:()=>Cd,OAuthTokenType:()=>Us,OperationOutcomeError:()=>m,Operator:()=>g,OperatorPrecedence:()=>S,OrAtom:()=>jt,PATIENT_PREFERRED_PHARMACY_URL:()=>yn,PHARMACY_PREFERENCE_TYPE_SYSTEM:()=>ro,PHARMACY_TYPE_PREFERRED:()=>no,PHARMACY_TYPE_PRIMARY:()=>gn,Parser:()=>xr,ParserBuilder:()=>Tt,Pointer:()=>M,PrefixOperatorAtom:()=>vt,PropertyType:()=>p,RXNORM:()=>Ga,ReadablePromise:()=>$,ReconnectingWebSocket:()=>nr,ReturnAckCategory:()=>zl,SNOMED:()=>Ha,SchedulingEncounterCodingURI:()=>ff,SchedulingParametersURI:()=>Oa,SchedulingPlanDefinitionURI:()=>mf,SearchParameterType:()=>ge,ServiceTypeReferenceURI:()=>xn,SubscriptionEmitter:()=>gt,SubscriptionManager:()=>or,SymbolAtom:()=>F,TestError:()=>dn,TimezoneExtensionURI:()=>hf,Tokenizer:()=>Ce,TransformMapCollection:()=>cn,TypedEventTarget:()=>oe,UCUM:()=>bn,UnaryOperatorAtom:()=>_t,UnionAtom:()=>De,VALID_HOSTNAME_REGEX:()=>Xo,XorAtom:()=>Ht,accepted:()=>ac,accessPolicySupportsInteraction:()=>Si,add:()=>dr,addPreferredPharmacyToPatient:()=>uf,addProfileToResource:()=>Cu,allOk:()=>Ya,append:()=>te,apply:()=>Gi,applyDefaultValuesToElement:()=>Wd,applyDefaultValuesToResource:()=>qd,applyFixedOrPatternValue:()=>cr,applyPatch:()=>Sp,arrayBufferToBase64:()=>ni,arrayBufferToHex:()=>ri,arrayify:()=>se,assert:()=>Ms,assertContextVersionOptional:()=>Ci,assertNever:()=>Iu,assertOk:()=>bc,assertReleaseManifest:()=>Da,assertValidMedplumSemver:()=>_a,badRequest:()=>w,booleanToTypedValue:()=>y,buildCdsRequest:()=>rd,buildElementsContext:()=>on,buildMedicationRequestResponseLostStatusReason:()=>Bp,buildTypeName:()=>ss,businessRule:()=>fc,calculateAge:()=>Ot,calculateAgeString:()=>Kc,canReadResourceType:()=>jl,canWriteResource:()=>Gl,canWriteResourceType:()=>Hl,capitalize:()=>U,checkForNull:()=>io,checkIfValidMedplumVersion:()=>$f,clearReleaseCache:()=>Wf,codeableConceptMatchesToken:()=>lu,codingMatchesToken:()=>jo,compareVersions:()=>La,compressElement:()=>Rc,concatUrls:()=>W,conceptMapTranslate:()=>Fi,conflict:()=>cc,contentTooLarge:()=>nc,convertContainedResourcesToBundle:()=>ed,convertToSearchableDates:()=>hi,convertToSearchableNumbers:()=>ul,convertToSearchableQuantities:()=>ll,convertToSearchableReferences:()=>yi,convertToSearchableStrings:()=>gi,convertToSearchableTokens:()=>xi,convertToSearchableUris:()=>dl,convertToTransactionBundle:()=>bs,copy:()=>aa,crawlTypedValue:()=>Ir,crawlTypedValueAsync:()=>Mc,createConstraintIssue:()=>Mn,createFhircastMessagePayload:()=>Xr,createOperationOutcomeIssue:()=>Ie,createPatch:()=>Ep,createPreferredPharmacyExtension:()=>wa,createProcessingIssue:()=>Dn,createReference:()=>ue,createStructureIssue:()=>R,createTests:()=>Rp,created:()=>Xa,decodeBase64:()=>Ss,decodeBase64Url:()=>Xt,deepClone:()=>Me,deepEquals:()=>xe,deepIncludes:()=>st,deriveIdentifierSearchParameter:()=>Rf,diffAny:()=>Pe,diffArrays:()=>ra,diffObjects:()=>na,encodeBase64:()=>Yt,encodeBase64Url:()=>bi,encodeSmartHealthLink:()=>Vf,encryptSHA256:()=>Ei,ensureNoLeadingSlash:()=>Yo,ensureTrailingSlash:()=>$r,escapeHtml:()=>Ou,escapeToken:()=>oa,evalFhirPath:()=>cl,evalFhirPathTyped:()=>I,evalSqlOnFhir:()=>Nf,expandSampledData:()=>Di,expandSampledObservation:()=>_d,extractAccountReferences:()=>Ur,extractServiceTypeReferences:()=>Tf,fetchAllVersionStrings:()=>Hf,fetchLatestVersionString:()=>jf,fetchVersionManifest:()=>Sn,fhirPathArrayEquals:()=>Jn,fhirPathArrayEquivalent:()=>_r,fhirPathArrayNotEquals:()=>Kn,fhirPathEquals:()=>at,fhirPathEquivalent:()=>Fo,fhirPathIs:()=>Ge,fhirPathNot:()=>zn,fhirTypeToJsType:()=>Mr,fhirpathPatchTypedValue:()=>Ap,findCodeBySystem:()=>uu,findObservationInterval:()=>fu,findObservationReferenceRange:()=>mu,findObservationReferenceRanges:()=>Qo,findResourceByCode:()=>bu,findResourceInBundle:()=>td,flatMapFilter:()=>wu,forbidden:()=>ec,formatAddress:()=>es,formatCodeableConcept:()=>ve,formatCoding:()=>di,formatDate:()=>Vu,formatDateTime:()=>Qe,formatFamilyName:()=>Du,formatGivenName:()=>Mu,formatHl7DateTime:()=>ga,formatHumanName:()=>ut,formatMoney:()=>$u,formatObservationValue:()=>rs,formatPeriod:()=>Lu,formatQuantity:()=>Se,formatRange:()=>Wu,formatReferenceString:()=>Zo,formatSearchQuery:()=>Al,formatTime:()=>_u,formatTiming:()=>Bu,formatWallTime:()=>ts,generateId:()=>ie,getAllDataTypes:()=>Fn,getAllQuestionnaireAnswers:()=>Xc,getBuffer:()=>Gr,getCodeBySystem:()=>Fr,getDataType:()=>ye,getDateProperty:()=>Jc,getDefaultValuesForNewSliceEntry:()=>$d,getDisplayString:()=>qo,getElementDefinition:()=>wt,getElementDefinitionForPath:()=>fi,getElementDefinitionFromElements:()=>pi,getElementDefinitionTypeName:()=>Cr,getExpressionForResourceType:()=>kf,getExpressionsForResourceType:()=>co,getExtension:()=>ae,getExtensionValue:()=>ze,getIdentifier:()=>Br,getImageSrc:()=>zc,getInnerDerivedIdentifierExpression:()=>oo,getMedicationOrderIframeUrl:()=>jp,getNestedProperty:()=>$e,getOutcomeRedirectUrl:()=>pc,getParsedDerivedIdentifierExpression:()=>so,getParsedExpressionForResourceType:()=>ao,getPathDifference:()=>Te,getPathDisplayName:()=>Ju,getPendingMedicationOrderId:()=>Wp,getPendingMedicationOrderStatus:()=>$p,getPreferredPharmaciesFromPatient:()=>cf,getPropertyDisplayName:()=>cs,getQueryString:()=>ci,getQuestionnaireAnswers:()=>Yc,getRandomString:()=>Qr,getReferenceString:()=>k,getResourceTypes:()=>as,getSearchParameter:()=>zu,getSearchParameterDetails:()=>Cf,getSearchParameters:()=>Qu,getSearchResourceTypes:()=>Ml,getSmartHealthLinkId:()=>Lf,getStatus:()=>Sc,getTypedPropertyValue:()=>_,getTypedPropertyValueWithPath:()=>kr,getTypedPropertyValueWithSchema:()=>Lo,getTypedPropertyValueWithoutSchema:()=>No,getValueSliceName:()=>_i,getWebSocketUrl:()=>ai,getWindow:()=>Kl,globalSchema:()=>H,gone:()=>tc,hasSchedulingParameters:()=>yf,indexConceptMapCodings:()=>js,indexDefaultSearchParameters:()=>Wn,indexSearchParameter:()=>jr,indexSearchParameterBundle:()=>Gu,indexStructureDefinitionBundle:()=>Ar,inflateBaseSchema:()=>Vn,inflateElement:()=>Co,initFhirPathParserBuilder:()=>dt,intersection:()=>yp,invalidSearchOperator:()=>kl,isAccepted:()=>hc,isAckCode:()=>ha,isAddPharmacyResponse:()=>pf,isBrowserEnvironment:()=>X,isCodeableConcept:()=>Nr,isCoding:()=>Lr,isCompletedSubscriptionRequest:()=>Pi,isComplexTypeCode:()=>qr,isConflict:()=>xc,isContextVersionRequired:()=>Ri,isCreated:()=>mc,isDataTypeLoaded:()=>Un,isDateString:()=>Yn,isDateTimeString:()=>He,isDayOfWeek:()=>gf,isDefined:()=>ui,isDestructive:()=>ji,isEmpty:()=>O,isError:()=>Er,isFhirCriteriaMet:()=>Vs,isFhircastResourceType:()=>ws,isGone:()=>vc,isJwt:()=>Ai,isLowerCase:()=>du,isMedicationArray:()=>qp,isMedicationCartManageResponse:()=>Aa,isMedicationCheckoutResponse:()=>Ca,isMedicationOrderResponse:()=>ba,isMedicationOrderSetResponse:()=>Ea,isMedplumAccessToken:()=>wi,isNodeEnvironment:()=>Jl,isNotFound:()=>yc,isObject:()=>C,isOk:()=>Rr,isOperationOutcome:()=>it,isOrganizationArray:()=>df,isPeriod:()=>Xn,isPopulated:()=>le,isPrimitiveType:()=>Rt,isProfileLoaded:()=>Bn,isProfileResource:()=>Bo,isQuantity:()=>L,isQuantityEquivalent:()=>Zn,isRedirect:()=>gc,isReference:()=>J,isResource:()=>D,isResourceType:()=>Et,isResourceTypeSchema:()=>Or,isResourceWithId:()=>ct,isSliceDefinitionWithTypes:()=>Vi,isString:()=>de,isStringArray:()=>cu,isTextObject:()=>Ho,isTypedValue:()=>Xu,isUUID:()=>au,isUnauthenticated:()=>Tc,isValidDate:()=>Mt,isValidHostname:()=>Ru,isValidMedplumSemver:()=>fo,lazy:()=>si,loadDataType:()=>wr,locationUtils:()=>me,mapByIdentifier:()=>Pu,matchDiscriminant:()=>Dr,matchesRange:()=>oi,matchesSearchRequest:()=>Kt,medicationCartClearRequestToParameters:()=>tf,medicationCartRemoveRequestToParameters:()=>ef,medicationCheckoutRequestToParameters:()=>Yp,medicationOrderRequestToParameters:()=>Qp,medicationOrderSetRequestToParameters:()=>Jp,medicationSearchParamsToParameters:()=>Hp,move:()=>hn,multipleMatches:()=>oc,normalizeArrayBufferView:()=>ii,normalizeCreateBinaryOptions:()=>Mi,normalizeCreatePdfOptions:()=>qs,normalizeErrorEvent:()=>Ds,normalizeErrorString:()=>Oe,normalizeOperationOutcome:()=>bt,notFound:()=>On,notModified:()=>Za,operationOutcomeIssueToString:()=>Ro,operationOutcomeToString:()=>kn,parametersToMedicationCartManageResponse:()=>nf,parametersToMedicationCheckoutResponse:()=>Zp,parametersToMedicationOrderResponse:()=>zp,parametersToMedicationOrderSetResponse:()=>Kp,parametersToOrderSetSyncResponse:()=>sf,parseFhirPath:()=>Jt,parseFhirPathPatchParameters:()=>Pp,parseFilterParameter:()=>Vp,parseHl7DateTime:()=>Lp,parseJWTPayload:()=>tr,parseLogLevel:()=>Fp,parseMappingLanguage:()=>Yd,parseParameter:()=>hs,parseReference:()=>Hc,parseSearchRequest:()=>pt,parseSmartHealthLink:()=>_f,parseStructureDefinition:()=>Pr,parseXFhirQuery:()=>Pl,pathToJSONPointer:()=>je,preciseEquals:()=>vu,preciseGreaterThan:()=>Su,preciseGreaterThanOrEquals:()=>Ko,preciseLessThan:()=>Tu,preciseLessThanOrEquals:()=>Jo,preciseRound:()=>xu,preconditionFailed:()=>rc,projectAdminResourceTypes:()=>ys,protectedResourceTypes:()=>gs,readInteractions:()=>xs,redirect:()=>Eo,redirectOk:()=>dc,remove:()=>fn,removeDuplicates:()=>Pt,removePreferredPharmacyFromPatient:()=>lf,removeProfileFromResource:()=>Au,reorderBundle:()=>Es,replace:()=>mn,replaceQueryVariables:()=>Cs,resolveId:()=>K,resourceMatchesSubscriptionCriteria:()=>hd,satisfiedAccessPolicy:()=>vs,serializeError:()=>gr,serializeFhircastSubscriptionRequest:()=>Yr,serverError:()=>uc,serverTimeout:()=>lc,serviceTypeIncludesService:()=>vf,setCodeBySystem:()=>pu,setIdentifier:()=>Zc,singleton:()=>N,singularize:()=>Eu,sleep:()=>Wr,sortStringArray:()=>kt,splitN:()=>Je,splitSearchOnComma:()=>ft,streamToBuffer:()=>Df,stringify:()=>It,stringifyTypedValue:()=>mi,structureMapTransform:()=>Xd,subsetResource:()=>Ac,subtract:()=>$i,summarizeObservations:()=>Md,test:()=>ca,toJsBoolean:()=>j,toPeriod:()=>At,toServiceTypeCodeableConcepts:()=>xf,toTypedValue:()=>E,tooManyRequests:()=>sc,trimTrailingEmptyElements:()=>ru,tryGetDataType:()=>ke,tryGetJwtExpiration:()=>Oi,tryGetProfile:()=>qn,typedValueToString:()=>li,unauthorized:()=>qe,unauthorizedTokenAudience:()=>br,unauthorizedTokenExpired:()=>In,unescapeToken:()=>ia,unsupportedMediaType:()=>ic,validateFhircastSubscriptionRequest:()=>er,validateResource:()=>Lc,validateResourceType:()=>Sf,validateTypedValue:()=>Mo,validationError:()=>T,validationRegexes:()=>Ct,warnIfNewerVersionAvailable:()=>Gf,wordWrap:()=>da});module.exports=$a(Qf);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 vt=class{constructor(e,r){c(this,"operator");c(this,"child");this.operator=e,this.child=r}toString(){return`${this.operator}(${this.child.toString()})`}},A=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()})`}},Tt=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 xr(e,this.prefixParselets,this.infixParselets)}},xr=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 se(t){if(t!==void 0)return Array.isArray(t)?t:[t]}var bn="http://unitsofmeasure.org",ja="http://loinc.org",Ha="http://snomed.info/sct",Ga="http://www.nlm.nih.gov/research/umls/rxnorm",Qa="http://www.ama-assn.org/go/cpt",za="http://hl7.org/fhir/sid/icd-10",Ja="http://hl7.org/fhir/sid/ndc",St="http://hl7.org",Ka="http://terminology.hl7.org";var vr="ok",Tr="created",En="gone",Rn="not-modified",Cn="found",Pn="not-found",An="conflict",wn="unauthorized",ho="forbidden",go="precondition-failed",yo="content-too-large",xo="unsupported-media-type",vo="multiple-matches",To="too-many-requests",Sr="accepted",So="server-timeout",bo="business-rule",Ya={resourceType:"OperationOutcome",id:vr,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},Xa={resourceType:"OperationOutcome",id:Tr,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},Za={resourceType:"OperationOutcome",id:Rn,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},On={resourceType:"OperationOutcome",id:Pn,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},qe={resourceType:"OperationOutcome",id:wn,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},In={...qe,issue:[...qe.issue,{severity:"error",code:"expired",details:{text:"Token expired"}}]},br={...qe,issue:[...qe.issue,{severity:"error",code:"invalid",details:{text:"Token not issued for this audience"}}]},ec={resourceType:"OperationOutcome",id:ho,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},tc={resourceType:"OperationOutcome",id:En,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},rc={resourceType:"OperationOutcome",id:go,issue:[{severity:"error",code:"processing",details:{text:"Precondition Failed"}}]};function nc(t){return{resourceType:"OperationOutcome",id:yo,issue:[{severity:"error",code:"too-long",details:{text:t}}]}}var ic={resourceType:"OperationOutcome",id:xo,issue:[{severity:"error",code:"not-supported",details:{text:"Unsupported media type"}}]},oc={resourceType:"OperationOutcome",id:vo,issue:[{severity:"error",code:"multiple-matches",details:{text:"Multiple resources found matching condition"}}]},sc={resourceType:"OperationOutcome",id:To,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function ac(t){return{resourceType:"OperationOutcome",id:Sr,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:t}]}}function w(t,e){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:t},...e?{expression:se(e)}:void 0}]}}function cc(t,e){return{resourceType:"OperationOutcome",id:An,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 uc(t){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:t.toString()}]}}function lc(t){return{resourceType:"OperationOutcome",id:So,issue:[{severity:"error",code:"timeout",details:{text:t??"Server timeout"}}]}}function Eo(t){let e=t.toString();return{resourceType:"OperationOutcome",id:Cn,issue:[{severity:"information",code:"informational",details:{coding:[{system:"urn:ietf:rfc:3986",code:e}],text:"Redirect to "+e}}]}}function dc(t){return{...Eo(t),id:vr}}function pc(t){return t?.issue?.[0]?.details?.coding?.find(e=>e.system==="urn:ietf:rfc:3986")?.code}function fc(t,e){return{resourceType:"OperationOutcome",id:bo,issue:[{severity:"error",code:"business-rule",details:{id:t,text:e}}]}}function Er(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 it(t){return typeof t=="object"&&t!==null&&t.resourceType==="OperationOutcome"}function Rr(t){return t.id===vr||t.id===Tr||t.id===Rn||t.id===Sr}function mc(t){return t.id===Tr}function hc(t){return t.id===Sr}function gc(t){return t.id===Cn}function yc(t){return t.id===Pn}function xc(t){return t.id===An}function vc(t){return t.id===En}function Tc(t){return t.id===wn}function Sc(t){switch(t.id){case vr:return 200;case Tr:return 201;case Sr:return 202;case Cn:return 302;case Rn:return 304;case wn:return 401;case ho:return 403;case Pn:return 404;case An:return 409;case En:return 410;case go:case vo:return 412;case yo:return 413;case xo:return 415;case bo:return 422;case To:return 429;case So:return 504;default:return t.issue?.[0]?.code==="exception"?500:400}}function bc(t,e){if(!Rr(t)||e===void 0)throw new m(t)}var m=class extends Error{constructor(r,n){super(kn(r),n);c(this,"outcome");this.name="OperationOutcomeError",this.outcome=r}};function bt(t){return t instanceof m?t.outcome:it(t)?t:w(Oe(t))}function Oe(t){return t?typeof t=="string"?t:Er(t)?t.message:it(t)?kn(t):typeof t=="object"&&"code"in t&&typeof t.code=="string"?t.code:JSON.stringify(t):"Unknown error"}function kn(t){let e=t.issue?.map(Ro)??[];return e.length>0?e.join("; "):"Unknown error"}function Ro(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 Ie(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 Ie("error","structure",e,t)}function Mn(t,e){return Ie("error","invariant",`Constraint ${e.key} not met: ${e.description}`,t,{fhirpath:e.expression})}function Dn(t,e,r,n){return Ie("error","processing",e,t,{...n,error:r})}var Ec={"http://hl7.org/fhirpath/System.String":"string"};function Rc(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:Ec[r.code]??r.code})),e}function Co(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 Vn(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,Co(i,o)])),constraints:[],innerTypes:[]};return e}var Po={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:{authorizeUrl:{min:1,type:[{code:"string"}]},tokenUrl:{min:1,type:[{code:"string"}]},tokenAuthMethod:{type:[{code:"code"}]},userInfoUrl:{min:1,type:[{code:"string"}]},userInfoMode:{type:[{code:"code"}]},userInfoApiKey:{type:[{code:"string"}]},clientId:{min:1,type:[{code:"string"}]},clientSecret:{min:1,type:[{code:"string"}]},usePkce:{type:[{code:"boolean"}]},useSubject:{type:[{code:"boolean"}]},identitySource:{type:[{code:"code"}]},identityMappingMode:{type:[{code:"code"}]}}}};function Pr(t){return new Ln(t).parse()}var We=Vn(Po),Nn=Object.create(null),Ao=Object.create(null),Pc={"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 ko(t){let e;return e=Ao[t],e||(e=Ao[t]=Object.create(null)),e}function Ar(t){let r=(Array.isArray(t)?t:t.entry?.map(n=>n.resource)??[]).filter(n=>n?.resourceType==="StructureDefinition");Wn(r);for(let n of r)wr(n)}function wr(t){if(!t?.name)throw new Error("Failed loading StructureDefinition from bundle");if(t.resourceType!=="StructureDefinition")return;let e=Pr(t),r=Pc[t.url],n,i;r?(n=We,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=We,i=t.type):(n=ko(t.url),i=t.type),n[i]=e;for(let o of e.innerTypes)o.parentType=e,n[o.name]=o;Nn[t.url]=e}function Fn(){return We}function Un(t){return!!We[t]}function ke(t,e){if(e){let r=ko(e)[t];if(r)return r}return We[t]}function ye(t,e){let r=ke(t,e);if(!r)throw new m(w("Unknown data type: "+t));return r}function Et(t){let e=We[t];return e&&Or(e)}function Bn(t){return!!Nn[t]}function qn(t){return Nn[t]}var Ln=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:kc(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=_n(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[_n(e,n.path)]=r;break}n=n.parent}if(!n){let i=_n(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&&!ot(this.slicingContext.path,e?.path)&&(this.slicingContext=void 0),e.slicing&&!this.slicingContext&&this.enterSlice(e,r)}enterInnerType(e){for(;this.backboneContext&&!ot(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;let r=Cr(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:ot(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,r){Ic(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&&!ot(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!ot(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!!(ot(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=Cr(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=Oo(e.max),n=e.base?.max?Oo(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:Io(_(i,"fixed[x]")),pattern:Io(_(i,"pattern[x]")),binding:e.binding}}};function Ac(t,e){if(!t)return;let r=[];for(let n of e){r.push("_"+n);let i=We[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)&&!wc.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(wo):[wo]},t}var wo={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},wc=["resourceType","id","meta"];function Oo(t){return t==="*"?Number.POSITIVE_INFINITY:Number.parseInt(t,10)}function _n(t,e=""){return Oc(t.path,e)}function Oc(t,e){return t?e&&t.startsWith(e)?t.substring(e.length+1):t:""}function ot(t,e){return!t||!e?!1:e.startsWith(t+".")||e===t}function Io(t){return Array.isArray(t)&&t.length>0?t[0]:O(t)?void 0:t}function Ic(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 kc(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 Ir(t,e,r){new $n(t,e,r).crawl()}function Mc(t,e,r){return new jn(t,e,r).crawl()}var $n=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=$e(e,r,{withPath:!0});this.visitor.visitProperty&&this.visitor.visitProperty(e,r,i,o,n);for(let s of o)for(let a of se(s))this.crawlPropertyValue(a,i,n)}crawlPropertyValue(e,r,n){if(!Rt(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=$e(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 se(s))await this.crawlPropertyValue(a,i,n)}async crawlPropertyValue(e,r,n){if(!Rt(e.type)){let i=n.innerTypes?.find(o=>o.name===e.type)??ye(e.type);await this.crawlObject(e,i,r)}}};function $e(t,e,r){if(t===void 0)return[void 0];if(e==="$this")return[t];let n=r?.withPath?kr:_,[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 kr(t,e,r){let n=t.path;return Dc(_(t,e,r),n,e)}function Dc(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 je(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 Mr={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"},Vc=new ee(1e3);function Rt(t){return t==="undefined"||t in Mr}var Ct={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:/.*/},_c={"ele-1":!0,"dom-3":!0,"org-1":!0,"sdf-19":!0};function Lc(t,e){if(!Et(t.resourceType))throw new m(T("Invalid resource type"));return Mo(E(t),e)}function Mo(t,e){return new Hn(t,e).validate()}var Hn=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=Pr(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(){Gn(this.root.value,this.schema.path,this.issues),this.constraintsCheck({...this.root,path:this.schema.path},this.schema),Ir(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}`)),Uc(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=Bc(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){Rt(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=Fc(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(Ie("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(Ie("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 _c)&&!this.isExpressionTrue(i,e)){this.issues.push(Mn(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=St+"/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(Ie("warning","structure",`Invalid reference: got "${i}", expected "${o.join('", "')}"`,e.path))}collectValue(e,r){r.binding?.valueSet&&r.binding.strength==="required"&&Wc(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]=te(n,r)}isExpressionTrue(e,r){let n={"%context":r,"%ucum":E(bn)},i=this.currentResource();i&&(n["%resource"]=E(i)),D(this.root.value)&&(n["%rootResource"]=this.root);try{let o=I(e.expression,[r],n,Vc);return o.length===1&&o[0].value===!0}catch(o){return this.issues.push(Dn(r.path,"Error evaluating invariant expression",o,{fhirpath:e.expression})),!1}}validatePrimitiveType(e){let[r,n]=qc(e),i=e.path;if(r){let{type:o,value:s}=r;if(!(o in Mr)){this.issues.push(R(i,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=Mr[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&&Ir(n,this,{schema:ye("Element"),initialPath:i})}validateBase64Binary(e,r){if(!$c(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=Ct[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")):Nc(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 Nc(t){return t===p.integer||t===p.positiveInt||t===p.unsignedInt}function Fc(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 Gn(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]&&Gn(i[a],`${o}[${a}]`,r);else typeof i=="object"&&Gn(i,o,r)}}function Uc(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&&!st(r,e.pattern)||e.fixed&&!xe(r,e.fixed))}function Dr(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 st(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 Bc(t,e){for(let r of e?.slices??v)if(e?.discriminator?.every(n=>se($e(t,n.path))?.some(i=>Dr(i,n,r))))return r.name}function qc(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 Wc(t){switch(t){case"CodeableConcept":case"Coding":case"code":case"Quantity":case"string":case"uri":return!0;default:return!1}}function $c(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}:Nr(t)?{type:p.CodeableConcept,value:t}:Lr(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=wt(t.type,e,r?.profileUrl);return n?Lo(t,e,n):No(t,e)}function Lo(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]=Qn(o[h],a[h])}else if(!o&&Array.isArray(a)){o=a.slice();for(let h=0;h<a.length;h++)o[h]=Qn(void 0,a[h])}else o=Qn(o,a);if(!O(o))return(s==="Element"||s==="BackboneElement")&&(s=r.type[0].code),Array.isArray(o)?o.map(h=>Do(h,s)):Do(o,s)}function Do(t,e){return e==="Resource"&&D(t)&&(e=t.resourceType),{type:e,value:t}}function No(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 Pt(t){let e=[];for(let r of t){let n=!1;for(let i of e)if(j(at(r,i))){n=!0;break}n||e.push(r)}return e}function zn(t){return y(!j(t))}function Jn(t,e){return t.length===0||e.length===0?[]:t.length!==e.length?y(!1):y(t.every((r,n)=>j(at(r,e[n]))))}function Kn(t,e){return t.length===0||e.length===0?[]:t.length!==e.length?y(!0):y(t.some((r,n)=>!j(at(r,e[n]))))}function at(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(Zn(r,n)):y(typeof r=="object"&&typeof n=="object"?ei(t,e):r===n)}function _r(t,e){return t.length===0&&e.length===0?y(!0):t.length!==e.length?y(!1):(t.sort(Vo),e.sort(Vo),y(t.every((r,n)=>j(Fo(r,e[n])))))}function Fo(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(Zn(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"?ei({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function Vo(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 Ge(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 Yn(r);case"DateTime":return He(r);case"Time":return typeof r=="string"&&!!/^T\d/.exec(r);case"Period":return Xn(r);case"Quantity":return L(r);default:return t.type===n||typeof r=="object"&&r?.resourceType===n}}function Yn(t){return typeof t=="string"&&!!Ct.date.exec(t)}function He(t){return typeof t=="string"&&!!Ct.dateTime.exec(t)}function Xn(t){return!!(t&&typeof t=="object"&&("start"in t&&He(t.start)||"end"in t&&He(t.end)))}function At(t){if(Yn(t)||He(t))return{start:Vr(t,"0000-01-01T00:00:00.000"),end:Vr(t,"xxxx-12-31T23:59:59.999")};if(Xn(t))return{start:t.start?Vr(t.start,"0000-01-01T00:00:00.000"):void 0,end:t.end?Vr(t.end,"xxxx-12-31T23:59:59.999"):void 0}}function Vr(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 Zn(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 ei(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(_o(o)&&_o(s)){if(!ei(o,s))return!1}else if(o!==s)return!1}return!0}function _o(t){return t!==null&&typeof t=="object"}function Qn(t,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return jc(t??{},e)}return t}function jc(t,e){return delete e.__proto__,delete e.constructor,Object.assign(t,e)}function ct(t,e){return D(t,e)&&"id"in t&&typeof t.id=="string"}function ue(t){let e=k(t)??"undefined/undefined",r=qo(t);return r===e?{reference:e}:{reference:e,display:r}}function k(t){if(J(t))return t.reference;if(ct(t))return`${t.resourceType}/${t.id}`}function K(t){if(t)return J(t)?t.reference.split("/")[1]:t.id}function Hc(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 Ur(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 se(t.accounts??t.account)}function Bo(t){return t.resourceType==="Patient"||t.resourceType==="Practitioner"||t.resourceType==="RelatedPerson"}function qo(t){if(Bo(t)){let e=Gc(t);if(e)return e}if(t.resourceType==="Appointment"&&t.serviceType?.[0])return ve(t.serviceType[0]);if(t.resourceType==="Device"){let e=Qc(t);if(e)return e}if(t.resourceType==="DocumentReference"){if(t.description)return t.description;if(t.type)return ve(t.type)}if(t.resourceType==="MedicationRequest"&&t.medicationCodeableConcept)return ve(t.medicationCodeableConcept);if(t.resourceType==="MedicationStatement"&&t.medicationCodeableConcept)return ve(t.medicationCodeableConcept);if(t.resourceType==="Slot"&&(t.start||t.end))return`${Qe(t.start)} - ${Qe(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]),Nr(e))return ve(e);if(Ho(e))return e.text}return k(t)??""}function Gc(t){let e=t.name;if(e&&e.length>0)return ut(e[0])}function Qc(t){let e=t.deviceName;if(e&&e.length>0)return e[0].name}function zc(t){if(!("photo"in t))return;let e=t.photo;if(e)if(Array.isArray(e))for(let r of e){let n=Uo(r);if(n)return n}else return Uo(e)}function Uo(t){if(t.url&&t.contentType?.startsWith("image/"))return t.url}function Jc(t){return t?new Date(t):void 0}function Ot(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 Kc(t,e){let{years:r,months:n,days:i}=Ot(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 Yc(t){let e={};return Wo(t.item,e),e}function Wo(t,e){for(let r of t??v)r.linkId&&r.answer&&r.answer.length>0&&(e[r.linkId]=r.answer[0]),Wo(r.item,e)}function Xc(t){let e={};return $o(t.item,e),e}function $o(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),$o(r.item,e)}function Br(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}function Zc(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 ze(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 It(t,e){let r=ti(t);return JSON.stringify(r,null,e?2:void 0)??""}function ti(t){if(!(t==null||t===""))return typeof t=="object"?Array.isArray(t)?eu(t):tu(t):t}function eu(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=ti(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 tu(t){let e,r=0;for(let n in t){let i=t[n],o=ti(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"?!le(t):!1}function le(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 ru(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)?nu(t,e):Array.isArray(t)||Array.isArray(e)?!1:C(t)&&C(e)?iu(t,e,r):(C(t)||C(e),!1)}function nu(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 iu(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 st(t,e){return O(t)?!0:O(e)?!1:Array.isArray(t)&&Array.isArray(e)?ou(t,e):Array.isArray(t)||Array.isArray(e)?!1:C(t)&&C(e)?su(t,e):C(t)||C(e)?!1:t===e}function ou(t,e){return e.every(r=>t.some(n=>st(n,r)))}function su(t,e){return Object.entries(e).every(([r,n])=>r in t&&st(t[r],n))}function Me(t){return t===void 0?t:JSON.parse(JSON.stringify(t))}function au(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 cu(t){return t.every(de)}function de(t){return typeof t=="string"}function Lr(t){return C(t)&&"code"in t&&typeof t.code=="string"}function Nr(t){return C(t)&&"coding"in t&&Array.isArray(t.coding)&&t.coding.every(Lr)}function uu(t,e){for(let r of t??v)for(let n of r.coding??v)if(n.system===e)return n.code}function jo(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 lu(t,e){return(t.coding??v).some(r=>jo(r,e))}function Ho(t){return C(t)&&"text"in t&&typeof t.text=="string"}var Go=[];for(let t=0;t<256;t++)Go.push(t.toString(16).padStart(2,"0"));function ri(t){let e=ii(t),r=new Uint8Array(e),n=new Array(r.length);for(let i=0;i<r.length;i++)n[i]=Go[r[i]];return n.join("")}function ni(t){let e=ii(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 ii(t){return ArrayBuffer.isView(t)?t.buffer:t}function U(t){return t?t.charAt(0).toUpperCase()+t.substring(1):""}function du(t){return t===t.toLowerCase()&&t!==t.toUpperCase()}function qr(t){return t.length>0&&t.startsWith(t[0].toUpperCase())}function Te(t,e){let r=t+".";if(e.startsWith(r))return e.slice(r.length)}function Fr(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 fu(t,e,r,n){return t.qualifiedInterval?.find(i=>zo(i,e)&&yu(i,r,t.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function mu(t,e,r){return Qo(t,e,r)[0]}function Qo(t,e,r){return t.qualifiedInterval?.filter(n=>zo(n,e)&&(!r||r.includes(n.condition)))??[]}function zo(t,e){return hu(t,e)&&gu(t,e)}function hu(t,e){return!t.gender||t.gender===e.gender}function gu(t,e){return!t.age||oi(Ot(e.birthDate).years,t.age)}function yu(t,e,r){return!!t.range&&oi(e,t.range,r)}function oi(t,e,r){return(e.low?.value===void 0||Ko(t,e.low.value,r))&&(e.high?.value===void 0||Jo(t,e.high.value,r))}function xu(t,e){return Number.parseFloat(t.toFixed(e))}function vu(t,e,r){return ce(t,r)===ce(e,r)}function Tu(t,e,r){return ce(t,r)<ce(e,r)}function Su(t,e,r){return ce(t,r)>ce(e,r)}function Jo(t,e,r){return ce(t,r)<=ce(e,r)}function Ko(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 bu(t,e,r){return t.find(n=>typeof e=="string"?Fr(n.code||{},r)===e:Fr(n.code||{},r)===Fr(e,r))}function Eu(t){return Array.isArray(t)?t[0]:t}var Wr=(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 si(t){let e,r=!1;return function(){return r||(e=t(),r=!0),e}}function te(t,e){return t?(t.push(e),t):[e]}function kt(t){return t.sort((e,r)=>e.localeCompare(r))}function $r(t){return t.endsWith("/")?t:t+"/"}function Yo(t){return t.startsWith("/")?t.slice(1):t}function W(t,e){return new URL(Yo(e),$r(t.toString())).toString()}function ai(t,e){return W(t,e).toString().replace("http://","ws://").replace("https://","wss://")}function ci(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 Xo=/^(([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 Ru(t){return Xo.test(t)}function Cu(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 Pu(t,e){return new Map(t.entry?.filter(n=>!!n.resource).map(n=>[Br(n.resource,e),n.resource]).filter(([n])=>n!==void 0))}function Au(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 Ou(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 ui(t){return t!=null}function Iu(t){throw new Error(`Unexpected value: ${JSON.stringify(t)}`)}var v=Object.freeze([]),ku=()=>{};function li(t){if(!t)return"";switch(t.type){case"Address":return es(t.value);case"CodeableConcept":return ve(t.value);case"Coding":return di(t.value);case"ContactPoint":return t.value.value;case"HumanName":return ut(t.value);case"Quantity":return Se(t.value);case"Reference":return Zo(t.value);default:return t.value?.toString()??""}}function Zo(t){return t?t.display??t.reference??It(t):""}function es(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 ut(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 Mu(t){let e=[];return t.given&&e.push(...t.given),e.join(" ").trim()}function Du(t){return Ke(t.family)??""}function Mt(t){return t instanceof Date&&!Number.isNaN(t.getTime())}function Vu(t,e,r){if(!t)return"";let n=new Date(t);return Mt(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...r})):""}function _u(t,e,r){if(!t)return"";let n=new Date("2000-01-01T"+t+"Z");return Mt(n)?n.toLocaleTimeString(e,r):""}function ts(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 Mt(s)?new Intl.DateTimeFormat(e,{hour:"numeric",minute:"2-digit",second:o===0?void 0:"numeric",...r,timeZone:"UTC"}).format(s):""}function Qe(t,e,r){if(!t)return"";let n=new Date(t);return Mt(n)?n.toLocaleString(e,r):""}function Lu(t,e,r){return!t||!t.start&&!t.end?"":Qe(t.start,e,r)+" - "+Qe(t.end,e,r)}var Nu={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},Fu={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},Uu={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function Bu(t){if(!t)return"";let e=[];return qu(e,t.repeat),t.event&&e.push(t.event.map(r=>Qe(r)).join(", ")),U(e.join(" ").trim())}function qu(t,e){if(!e?.periodUnit)return;let r=e.frequency??1,n=e.period??1,i=e.periodUnit;r===1&&n===1?t.push(Nu[i]):(r===1?t.push("once"):t.push(r+" times"),n===1?t.push("per "+Fu[i]):t.push("per "+n+" "+Uu[i])),e.dayOfWeek&&t.push("on "+e.dayOfWeek.map(U).join(", ")),e.timeOfDay&&t.push("at "+e.timeOfDay.map(o=>ts(o)).join(", "))}function Wu(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=Hu(n.value,e),`> ${Se(n,e)}`):`>= ${Se(n,e)}`:n?.value===void 0&&i?.value!==void 0?r&&e!==void 0?(i.value=ju(i.value,e),`< ${Se(i,e)}`):`<= ${Se(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${Se(n,e)} - ${Se(i,e)}`)}function Se(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 $u(t){return t?.value===void 0?"":t.value.toLocaleString(void 0,{style:"currency",currency:t.currency??"USD",currencyDisplay:"narrowSymbol"})}function ve(t){if(!t)return"";let e=Ke(t.text);return e||(t.coding?t.coding.map(r=>di(r)).join(", "):"")}function di(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 rs(t){if(!t)return"";let e=[];if(t.valueQuantity)e.push(Se(t.valueQuantity));else if(t.valueCodeableConcept)e.push(ve(t.valueCodeableConcept));else{let r=Ke(t.valueString);r&&e.push(r)}return"component"in t&&e.push(t.component.map(r=>rs(r)).join(" / ")),e.join(" / ").trim()}function Ke(t){return typeof t=="string"?t:void 0}function ju(t,e,r=1){return(ns(t,e)+r)*Math.pow(10,-e)}function Hu(t,e,r=1){return(ns(t,e)-r)*Math.pow(10,-e)}function ns(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 Gu(t){for(let e of t.entry??v){let r=e.resource;r.resourceType==="SearchParameter"&&jr(r)}}function Wn(t){let e=Array.isArray(t)?t:t.entry?.map(r=>r.resource)??[];for(let r of e)r?.resourceType==="StructureDefinition"&&r.kind==="resource"&&os(r.type)}function os(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??=as(),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 jr(t){for(let e of t.base??v){let r=os(e);r.searchParams||(r.searchParams={}),r.searchParams[t.code]=t}}function Cr(t){let e=t.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?ss((t.base?.path??t.path)?.split(".")):e}function ss(t){return t.length===1?t[0]:t.map(U).join("")}function Or(t){return t.kind==="resource"&&t.name!=="Resource"&&t.name!=="DomainResource"}function as(){return Object.values(Fn()).filter(Or).map(t=>t.name)}function Qu(t){return H.types[t]?.searchParams}function zu(t,e){return H.types[t]?.searchParams?.[e]}function Ju(t){let e=t.replaceAll("[x]","").split(".").pop();return cs(e)}function cs(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(Yu).join(" ").replace("_"," ").replaceAll(/\s+/g," ")}var Ku=new Set(["CDS","ID","IP","JWKS","PKCE","OMB","OID","SOP","UDI","UID","URI","URL"]);function Yu(t){let e=t.toUpperCase();return t===e?t:Ku.has(e)?e:e.charAt(0)+t.slice(1)}function wt(t,e,r){let n=ke(t,r);if(n)return pi(n.elements,e)}function pi(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 fi(t,e,r){let n=e.split(/[.[\]]/g),i=ke(t,r);if(!i)return;let o=i,s;for(let a of n){let u;if(a.match(/^[a-z]/)){let l=pi(o.elements,a);if(!l)return;if(l.type.length>1)throw new Error("Multiple matching types in path "+e);u=ke(l.type[0].code),s=l}u&&(o=u)}return s}function Xu(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 mi(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 is(t.value);case p.CodeableConcept:return t.value.coding?.map(is).join(",")??t.value.text;case p.HumanName:return t.value.text?t.value.text:ut(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 ct(t.value)?k(t.value):JSON.stringify(t)}}function is(t){return t?`${t.system??""}|${t.code}`:""}function lt(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 be=()=>[];function Dt(t){return t instanceof F?t.name:t instanceof re&&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:be,ofType:(t,e,r)=>{let n=Dt(r);return n?e.filter(i=>Ge(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 Pt([...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:lt(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:lt(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:lt("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:be,decode:be,escape:be,unescape:be,trim:be,split:be,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:be,descendants:be,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=Ot(o[0].value,s[0].value);return[{type:p.Quantity,value:{value:u[a],unit:a}}]},is:(t,e,r)=>{let n=Dt(r);return n?e.map(i=>({type:p.boolean,value:Ge(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=Dt(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&&Ge(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 Ee=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):kr(e,this.name)}toString(){return this.name}},Vt=class{eval(){return[]}toString(){return"{}"}},_t=class extends vt{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()}},Re=class extends A{constructor(e,r){super("as",e,r)}eval(e,r){return B.as(e,this.left.eval(e,r),this.right)}},q=class extends A{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)]}},us=Object.freeze({type:"string",value:""}),Lt=class extends A{constructor(e,r){super("&",e,r)}eval(e,r){let n=N(this.left.eval(e,r))??us,i=N(this.right.eval(e,r))??us;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}]}},Nt=class extends A{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))}},Ft=class extends A{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=>at(n,o)[0].value)):[]}},re=class extends A{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()}`}},De=class extends A{constructor(e,r){super("|",e,r)}eval(e,r){let n=this.left.eval(e,r),i=this.right.eval(e,r);return Pt([...n,...i])}},Ut=class extends A{constructor(e,r){super("=",e,r)}eval(e,r){let n=this.left.eval(e,r),i=this.right.eval(e,r);return Jn(n,i)}},Bt=class extends A{constructor(e,r){super("!=",e,r)}eval(e,r){let n=this.left.eval(e,r),i=this.right.eval(e,r);return Kn(n,i)}},qt=class extends A{constructor(e,r){super("~",e,r)}eval(e,r){let n=this.left.eval(e,r),i=this.right.eval(e,r);return _r(n,i)}},Wt=class extends A{constructor(e,r){super("!~",e,r)}eval(e,r){let n=this.left.eval(e,r),i=this.right.eval(e,r);return zn(_r(n,i))}},Ve=class extends A{constructor(e,r){super("is",e,r)}eval(e,r){let n=this.left.eval(e,r);if(n.length!==1)return[];let i=Dt(this.right);return i?y(Ge(n[0],i)):[]}},$t=class extends A{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 A{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):[]}},Ht=class extends A{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)}},Gt=class extends A{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)}},ne=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(", ")})`}},_e=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 Zu=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],el=/^\d{4}-\d{2}[\dT:.+\-Z]*(?=[\s)\]]|$)/,tl={"'":"'",'"':'"',"`":"`",r:"\r",n:`
2
- `,t:" ",f:"\f","\\":"\\"},Ce=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=tl[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 el.test(this.str.substring(e))?(this.pos.index=e-1,this.consumeDateTime()):this.consumeUnquotedString(e);if(n===" ")rl(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 rl(t){return!!(t&&(t.id==="String"||t.id==="Symbol"&&Zu.includes(t.value)))}var Qt=["true","false"],zt=["!=","!~","<=",">=","{}","->"];function ls(t){return new Ce(t,Qt,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},nl={parse(t){let e=t.consumeAndParse();if(!t.match(")"))throw new Error("Parse error: expected `)` got `"+t.peek()?.value+"`");return e}},il={parse(t,e){let r=t.consumeAndParse();if(!t.match("]"))throw new Error("Parse error: expected `]`");return new _e(e,r)},precedence:S.Indexer},ol={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 ne(e.name,r)},precedence:S.FunctionCall};function sl(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 dt(){return new Tt().registerPrefix("String",{parse:(t,e)=>new G({type:p.string,value:e.value})}).registerPrefix("DateTime",{parse:(t,e)=>new G({type:p.dateTime,value:lt(e.value)})}).registerPrefix("Quantity",{parse:(t,e)=>new G({type:p.Quantity,value:sl(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 Vt}).registerPrefix("(",nl).registerInfix("[",il).registerInfix("(",ol).prefix("+",S.UnaryAdd,(t,e)=>new _t("+",e,r=>r)).prefix("-",S.UnarySubtract,(t,e)=>new q("-",e,e,(r,n)=>-n)).infixLeft(".",S.Dot,(t,e,r)=>new re(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 De(t,r)).infixLeft("=",S.Equals,(t,e,r)=>new Ut(t,r)).infixLeft("!=",S.NotEquals,(t,e,r)=>new Bt(t,r)).infixLeft("~",S.Equivalent,(t,e,r)=>new qt(t,r)).infixLeft("!~",S.NotEquivalent,(t,e,r)=>new Wt(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 Lt(t,r)).infixLeft("and",S.And,(t,e,r)=>new $t(t,r)).infixLeft("as",S.As,(t,e,r)=>new Re(t,r)).infixLeft("contains",S.Contains,(t,e,r)=>new Nt(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 Ft(t,r)).infixLeft("is",S.Is,(t,e,r)=>new Ve(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 Ht(t,r)).infixLeft("implies",S.Implies,(t,e,r)=>new Gt(t,r))}var al=dt();function Jt(t){return new Ee(t,al.construct(ls(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 I(t,i,r,n).map(o=>o.value)}function I(t,e,r={},n=void 0){let i;if(typeof t=="string"){let o=n?.get(t);i=o??Jt(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 ul(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 hi(t){let e=[];for(let r of t){let n=At(r.value);n&&e.push(n)}return e}function gi(t){let e=new Set;for(let r of t){let n=li(r);n&&e.add(n)}return Array.from(e)}function yi(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):ct(n)?e.add(k(n)):typeof n.identifier=="object"&&e.add(`identifier:${n.identifier.system}|${n.identifier.value}`))}return Array.from(e)}function ll(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 dl(t){let e=new Set;for(let r of t)de(r.value)&&e.add(r.value);return Array.from(e)}function xi(t,e={}){let r=[];for(let n of t)pl(e,r,n);return r}function pl(t,e,r){let{type:n,value:i}=r;switch(n){case p.Identifier:fl(e,t,i);break;case p.CodeableConcept:ml(e,t,i);break;case p.Coding:ds(e,t,i);break;case p.ContactPoint:hl(e,t,i);break;default:Xe(e,t,void 0,i?.toString())}}function fl(t,e,r){r?.type?.text&&Xe(t,e,e.textSearchSystem,r.type.text),Xe(t,e,r?.system,r?.value)}function ml(t,e,r){r?.text&&Xe(t,e,e.textSearchSystem,r.text);for(let n of r?.coding??v)ds(t,e,n)}function ds(t,e,r){r&&(r.display&&Xe(t,e,e.textSearchSystem,r.display),Xe(t,e,r.system,r.code))}function hl(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 gl=20,yl=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"},vi={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},Ti={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 pt(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&&o.push(...n.entries()),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 xl(i,o)}function xl(t,e){let r={resourceType:t};for(let[n,i]of e)vl(r,n,i);return r}function vl(t,e,r){let n,i,o=e.indexOf(":");if(o>=0?(n=e.substring(0,o),i=e.substring(o+1)):(n=e,i=""),n!=="_"){if(n==="_has"||e.includes(".")){t.filters=te(t.filters,{code:e,operator:g.EQUALS,value:r});return}switch(n){case"_sort":Tl(t,r);break;case"_cursor":t.cursor=r;break;case"_count":t.count=Number.parseInt(r,10);break;case"_offset":t.offset=Number.parseInt(r,10);break;case"_total":t.total=r;break;case"_summary":r==="count"?(t.total="accurate",t.count=0):(r==="true"||r==="data"||r==="text")&&(t.summary=r);break;case"_include":{let s=ps(r);i==="iterate"&&(s.modifier=g.ITERATE),t.include=te(t.include,s);break}case"_revinclude":{let s=ps(r);i==="iterate"&&(s.modifier=g.ITERATE),t.revInclude=te(t.revInclude,s);break}case"_fields":case"_elements":t.fields=r.split(",");break;case"_type":t.types=r.split(",");break;case"_format":t.format=r;break;case"_pretty":t.pretty=r==="true";break;default:{let s=H.types[t.resourceType]?.searchParams?.[n];s?t.filters=te(t.filters,hs(s,g.EQUALS,i,r)):t.filters=te(t.filters,bl(n,i,r))}}}}function Tl(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 Sl=[g.MISSING,g.PRESENT];function hs(t,e,r,n){if(Sl.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}=El(n,r||g.EQUALS);if(!fs(t,o))throw new m(w(`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(!fs(t,n))throw new m(w(`Invalid format for ${t.type} search parameter: ${n}`));return{code:t.code,operator:Rl(r)??e,value:n}}default:throw new Error("Unrecognized search parameter type: "+t.type)}}function bl(t,e,r){let n=g.EQUALS;if(e)n=e;else if(r.length>=2){let i=r.substring(0,2);i in Ti&&(r.length===2||r.at(2)?.match(/\d/))&&(n=i,r=r.substring(i.length))}return{code:t,operator:n,value:r}}function El(t,e){let r=t.substring(0,2),n=Ti[r];return n?{operator:n,value:t.substring(2)}:{operator:e,value:t}}function Rl(t){return vi[t]}function ps(t){let e=t.split(":");if(e.includes("*"))throw new m(w("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new m(w(`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(w(`Invalid include value '${t}'`))}function fs(t,e){return t.type==="date"?He(e):!0}var Cl=/{{([^{}]+)}}/g;function Pl(t,e,r=[]){return t=t.replaceAll(Cl,(n,i)=>{let o=I(i,r,e);return o.length!==1?"":mi(o[0])}),pt(t)}function Al(t){let e=[];t.fields&&e.push("_fields="+t.fields.join(","));for(let r of t.filters??v)e.push(wl(r));t.sortRules&&t.sortRules.length>0&&e.push(Ol(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(ms("_include",r));for(let r of t.revInclude??v)e.push(ms("_revinclude",r));return e.length===0?"":(kt(e),"?"+e.join("&"))}function wl(t){let e=t.operator in vi?":"+t.operator:"",r=t.operator!==g.EQUALS&&t.operator in Ti?t.operator:"";return`${t.code}${e}=${r}${encodeURIComponent(t.value)}`}function Ol(t){return"_sort="+t.map(e=>e.descending?"-"+e.code:e.code).join(",")}function ms(t,e){return t+(e.modifier?":"+e.modifier:"")+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function ft(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 Il(t,e){return w(`Invalid modifier :${t} for ${e}`)}function kl(t,e){return t in vi?Il(t,e):w(`Invalid operator ${t} for ${e}`)}function Ml(t){return t.types??[t.resourceType]}function Kt(t,e){if(e.resourceType!==t.resourceType)return!1;for(let r of e.filters??v)if(!Vl(t,e,r))return!1;return!0}var Dl=new ee(1e3);function Vl(t,e,r){let n=H.types[e.resourceType]?.searchParams?.[r.code];if(!n)return!1;let i=I(n.expression,[E(t)],void 0,Dl);if(r.operator===g.MISSING||r.operator===g.PRESENT)return _l(i,r);switch(n.type){case"reference":return Ll(n,i,r);case"string":case"uri":return Ul(i,r);case"token":return Nl(i,r);case"date":return ql(i,r);default:return!1}}function _l(t,e){let r=t.length>0;return(e.operator===g.MISSING&&e.value==="false"||e.operator===g.PRESENT&&e.value==="true")===r}function Ll(t,e,r){let n=Hr(r.operator);if(r.value===""&&e.length===0)return r.operator===g.EQUALS;let i=yi(e);for(let o of ft(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 Nl(t,e){let r=xi(t),n=ft(e.value),i=Hr(e.operator);for(let o of r)for(let s of n)if(Fl(o,s))return!i;return i}function Fl(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 Ul(t,e){let r=gi(t),n=ft(e.value),i=Hr(e.operator);for(let o of r)for(let s of n)if(Bl(o,s))return!i;return i}function Bl(t,e){return t.toLowerCase().includes(e.toLowerCase())}function ql(t,e){let r=hi(t),n=ft(e.value),i=Hr(e.operator);for(let o of r)for(let s of n)if(Wl(o,e.operator,s))return!i;return i}function Wl(t,e,r){if(!t)return!1;let n=At(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 Hr(t){return t===g.NOT_EQUALS||t===g.NOT}var $l={resourceType:"*"},gs=["DomainConfiguration","JsonWebKey","Login"],ys=["Package","PackageRelease","PackageInstallation","Project","ProjectMembership","User","UserSecurityRequest"],Le={READ:"read",VREAD:"vread",UPDATE:"update",DELETE:"delete",HISTORY:"history",CREATE:"create",SEARCH:"search"},xs=[Le.READ,Le.VREAD,Le.HISTORY,Le.SEARCH];function jl(t,e){return Si(t,Le.SEARCH,e)}function Hl(t,e){return gs.includes(e)?!1:Si(t,Le.UPDATE,e)}function Si(t,e,r){return!!t.resource?.some(n=>Ts(n,r,e))}function Gl(t,e){return!!vs(e,Le.UPDATE,t)}function vs(t,e,r){return r?r.resource?.find(n=>Ql(t,e,n)):$l}function Ql(t,e,r){let n=t.resourceType;return Ts(r,n,e)?n==="Binary"?!0:!(r.compartment&&!t.meta?.compartment?.some(i=>i.reference===r.compartment?.reference)||r.criteria&&!Kt(t,pt(r.criteria))):!1}function Ts(t,e,r){return t.resourceType!==e&&(t.resourceType!=="*"||ys.includes(e))?!1:t.interaction?t.interaction.includes(r):!t.readonly||xs.includes(r)}var zl={FIRST:"first",APPLICATION:"application"};function X(){return typeof window<"u"}function Jl(){return typeof Buffer<"u"}function Kl(){return typeof window<"u"?window:void 0}function Gr(){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 Ss(t){if(X()){let r=window.atob(t),n=Uint8Array.from(r,i=>i.codePointAt(0));return new window.TextDecoder().decode(n)}let e=Gr();if(e)return e.from(t,"base64").toString("utf-8");throw new Error("Unable to decode base64")}function Yt(t){if(X()){let r=new window.TextEncoder().encode(t),n=String.fromCodePoint.apply(null,r);return window.btoa(n)}let e=Gr();if(e)return e.from(t,"utf8").toString("base64");throw new Error("Unable to encode base64")}function bi(t){return Yt(t).replaceAll("+","-").replaceAll("/","_").replace(/[=]{1,2}$/,"")}function Xt(t){t=t.padEnd(t.length+(4-t.length%4)%4,"=");let e=t.replaceAll("-","+").replaceAll("_","/");return Ss(e)}function Qr(){let t=new Uint32Array(28);return crypto.getRandomValues(t),ri(t.buffer)}async function Ei(t){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(t))}function ie(){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 bs(t){let e={};t=Me(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]=ie(),i.fullUrl="urn:uuid:"+e[s],delete i.resource?.id;else if(i.fullUrl?.startsWith("resource:")){let a=i.fullUrl.slice(9);e[a]=ie(),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)=>Yl(i,o,e),2);return Es(JSON.parse(n))}function Yl(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 Es(t){let e=Zl(t),{sorted:r,cycles:n}=Xl(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 mt={NotVisited:"NotVisited",Visiting:"Visiting",Visited:"Visited"};function Xl(t){let e=[],r={},n=[];for(let o of Object.keys(t))r[o]=mt.NotVisited;function i(o,s){if(r[o]===mt.Visited)return!0;if(r[o]===mt.Visiting){let u=s.lastIndexOf(o);return u!==-1&&n.push(s.slice(u)),!0}r[o]=mt.Visiting,s.push(o);let a=!1;for(let u of t[o]??v)i(u,s)||(a=!0);return r[o]=mt.Visited,s.pop(),e.unshift(o),!a}for(let o in t)r[o]===mt.NotVisited&&i(o,[]);return{sorted:e,cycles:n}}function Rs(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 Rs(n,e)}}function Zl(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&&Rs(r.resource,i=>{i!==n&&e[i]&&e[i].push(n)})}return e}function ed(t){t=Me(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=ie());return bs(e)}function td(t,e,r){return t.entry?.find(({resource:n})=>n?.resourceType===e&&n?.id===r)?.resource}async function rd(t,e,r,n){return{hook:r.hook,hookInstance:ie(),context:n,prefetch:await nd(t,e,r,n)}}async function nd(t,e,r,n){if(!r.prefetch)return{};let i={};for(let[o,s]of Object.entries(r.prefetch)){let a=await id(t,e,n,s);i[o]=a??null}return i}function id(t,e,r,n){if(n=Cs(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 od=new Set(["userPractitionerId","userPractitionerRoleId","userPatientId","userRelatedPersonId"]);function Cs(t,e,r){return r.replaceAll(/\{\{([^}]+)\}\}/g,(n,i)=>{if(i=i.trim(),od.has(i))return t.id;if(i.startsWith("context.")){let o=i.substring(8),s=sd(e,o);if(de(s))return s;if(typeof s=="number"||typeof s=="boolean")return String(s)}return n})}function sd(t,e){let r=e.split("."),n=t;for(let i of r)if(n&&C(n)&&i in n)n=n[i];else return;return n}var V={CSS:"text/css",DICOM:"application/dicom",DICOM_JSON:"application/dicom+json",EVENT_STREAM:"text/event-stream",FAVICON:"image/vnd.microsoft.icon",FHIR_JSON:"application/fhir+json",FORM_URL_ENCODED:"application/x-www-form-urlencoded",HL7_V2:"x-application/hl7-v2+er7",HTML:"text/html",JAVASCRIPT:"text/javascript",JOSE:"application/jose",JSON:"application/json",JSON_PATCH:"application/json-patch+json",JWT:"application/jwt",MULTIPART_FORM_DATA:"multipart/form-data",PNG:"image/png",SCIM_JSON:"application/scim+json",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript",PING:"x-application/ping",XML:"text/xml",CDA_XML:"application/cda+xml",OCTET_STREAM:"application/octet-stream"};var zr=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}},oe=class{constructor(){c(this,"emitter",new zr)}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 Jr={"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"},Ps=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],Kr=["DiagnosticReport-update"];function Ri(t){return Kr.includes(t)}function Ci(t){if(Kr.includes(t))throw new m(T(`'context.version' is required for '${t}'.`))}var As={"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 ws(t){return Ps.includes(t)}function Pi(t){return!!t.endpoint}function Yr(t){if(!er(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,"hub.events":i.join(",")};return Pi(t)&&(o.endpoint=t.endpoint),new URLSearchParams(o).toString()}function er(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(!Jr[o])return!1;return!(Pi(t)&&!(typeof t.endpoint=="string"&&t.endpoint.startsWith("ws")))}function ad(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(!ws(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 cd(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 ad(t,e.resource,r,n)}function ud(t,e){let r=new Map,n=As[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.`));cd(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 Xr(t,e,r,n){if(!(t&&typeof t=="string"))throw new m(T("Must provide a topic."));if(!Jr[e])throw new m(T(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(Jr).join(", ")}`));if(typeof r!="object")throw new m(T("context must be a context object or array of context objects."));if(Kr.includes(e)&&!n)throw new m(T(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(r)?r:[r];return ud(e,i),{timestamp:new Date().toISOString(),id:ie(),event:{"hub.topic":t,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var Zt=class extends oe{constructor(r){super();c(this,"subRequest");c(this,"websocket");if(this.subRequest=r,!r.endpoint)throw new m(T("Subscription request should contain an endpoint."));if(!er(r))throw new m(T("Subscription request failed validation."));let n=new WebSocket(r.endpoint);n.addEventListener("open",()=>{this.dispatchEvent({type:"connect"}),n.addEventListener("message",i=>{let o=JSON.parse(i.data);if(o["hub.topic"])return;let s=o;s.event["hub.event"]!=="heartbeat"&&(this.dispatchEvent({type:"message",payload:s}),n.send(JSON.stringify({id:o?.id,timestamp:new Date().toISOString()})))}),n.addEventListener("close",()=>{this.dispatchEvent({type:"disconnect"})})}),this.websocket=n}disconnect(){this.websocket.close()}};function ld(t){return JSON.parse(Xt(t))}function Ai(t){return t.split(".").length===3}function tr(t){let[e,r,n]=t.split(".");return ld(r)}function wi(t){try{return typeof tr(t).login_id=="string"}catch{return!1}}function Oi(t){try{let r=tr(t).exp;return typeof r=="number"?r*1e3:void 0}catch{return}}var rr=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 Os;Os=Symbol.toStringTag;var $=class{constructor(e){c(this,Os,"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 ht=class{constructor(e,r=""){c(this,"storage");c(this,"prefix","");this.storage=e??globalThis.localStorage??new Zr,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?It(r):void 0)}},Zr=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]}},Ii=class extends ht{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 Z={Event:typeof globalThis.Event<"u"?globalThis.Event:void 0,ErrorEvent:void 0,CloseEvent:void 0},Is=!1;function dd(){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 Ms(t,e){if(!t)throw new Error(e)}function pd(){}function en(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 Ds(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},ks=!1,nr=class t extends oe{constructor(r,n,i={}){Is||(dd(),Is=!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),Ms(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(en(r))});c(this,"_handleMessage",r=>{this._debug("message event"),this.onmessage&&this.onmessage(r),this.dispatchEvent(en(r))});c(this,"_handleError",r=>{let n=Ds(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(en(n)),this._connect()});c(this,"_handleClose",r=>{this._debug("close event"),this._clearTimeouts(),this._shouldReconnect&&this._connect(),this.onclose&&this.onclose(r),this.dispatchEvent(en(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"&&!ks&&(console.error("\u203C\uFE0F No WebSocket implementation available. You should define options.WebSocket."),ks=!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",pd);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 fd=[WebSocket.CLOSING,WebSocket.CLOSED],gt=class extends oe{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)}},ki=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 gt(e),this.refCount=1,this.subscriptionProps=r?{...r}:void 0}nextGeneration(){return++this.generation}},or=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 sr))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 nr(i,void 0,{debug:n?.debug,debugLogger:n?.debugLogger});this.medplum=e,this.ws=o,this.masterSubEmitter=new gt,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.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?Oe(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 ir(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 ir(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 ${k(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(Oe(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 ir(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 ki(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 ir(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 ir(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 gt(...Array.from(this.criteriaEntries.keys()))),this.masterSubEmitter}async reconnectIfNeeded(){fd.includes(this.getWebSocket().readyState)&&await new Promise(e=>{let r=()=>{this.getWebSocket().removeEventListener("open",r),e()};this.getWebSocket().addEventListener("open",r),this.reconnectWebSocket()})}};function ir(t){return t.bareCriteria?[t.bareCriteria,...t.criteriaWithProps]:t.criteriaWithProps}var md=new ee(1e3);async function hd({resource:t,subscription:e,context:r,getPreviousResource:n,logger:i}){if(!gd(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=pt(o);if(t.resourceType!==s.resourceType)return i?.debug(`Ignore rest hook for different resourceType (wanted "${s.resourceType}", received "${t.resourceType}")`),!1;if(!await Vs(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(!Kt(t,s))return!1;let d=Ur(e.meta)??[],f=Ur(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:k(t)}),!1):!0}function gd(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 Vs(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 I(n.valueString,[E(e)],o,md)?.[0]?.value===!0}var tn="5.1.28-9e40e9c",yd="medplum-cli",Fs=V.FHIR_JSON+", */*; q=0.1",xd="https://api.medplum.com/",vd=1e3,Td=6e4,Sd=0,bd=3e5,Ed="Binary/",_s={resourceType:"Device",id:"system",deviceName:[{type:"model-name",name:"System"}]},Rd=2,et={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"},Us={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"},Cd={ClientSecretBasic:"client_secret_basic",ClientSecretPost:"client_secret_post",ClientSecretJwt:"client_secret_jwt",PrivateKeyJwt:"private_key_jwt",None:"none"},Bs={JwtBearer:"urn:ietf:params:oauth:client-assertion-type:jwt-bearer"},Pd={ES256:"ES256",ES384:"ES384",ES512:"ES512",HS256:"HS256",RS256:"RS256",RS384:"RS384",RS512:"RS512"},sr=class extends oe{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??Ad(),this.storage=r?.storage??new ht(void 0,r?.storagePrefix),this.createPdfImpl=r?.createPdf,this.baseUrl=$r(r?.baseUrl??xd),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??bd,this.logLevel=this.initializeLogLevel(r),this.maxRetries=r?.maxRetries??2,this.maxRetryTime=r?.maxRetryTime??2e3,this.cacheTime=r?.cacheTime??(X()?Td:Sd),this.cacheTime>0?this.requestCache=new ee(r?.resourceCacheSize??vd):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:et.TokenExchange,subject_token_type:Us.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=ci(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(Ns));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 Ns(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 _s;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(_s));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(Un(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=`{
1
+ "use strict";var Tr=Object.defineProperty;var $a=Object.getOwnPropertyDescriptor;var ja=Object.getOwnPropertyNames;var Ha=Object.prototype.hasOwnProperty;var Ga=(t,e,r)=>e in t?Tr(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var Qa=(t,e)=>{for(var r in e)Tr(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))!Ha.call(t,i)&&i!==r&&Tr(t,i,{get:()=>e[i],enumerable:!(n=$a(e,i))||n.enumerable});return t};var Ja=t=>za(Tr({},"__esModule",{value:!0}),t);var c=(t,e,r)=>Ga(t,typeof e!="symbol"?e+"":e,r);var sm={};Qa(sm,{AccessPolicyInteraction:()=>Ne,AckCode:()=>ga,AndAtom:()=>Gt,ArithmeticOperatorAtom:()=>q,AsAtom:()=>Ce,CPT:()=>Za,ClientStorage:()=>gt,ConcatAtom:()=>Ut,ContainsAtom:()=>Bt,ContentType:()=>V,DAYS_OF_WEEK:()=>Ma,DEFAULT_ACCEPT:()=>Bs,DEFAULT_MAX_SEARCH_COUNT:()=>Pl,DEFAULT_SEARCH_COUNT:()=>Cl,DataSampler:()=>sn,DotAtom:()=>ie,EMPTY:()=>v,EmptySetAtom:()=>Nt,EqualsAtom:()=>Wt,EquivalentAtom:()=>jt,EventTarget:()=>Yr,ExternalSecretSystems:()=>Bd,FHIRCAST_EVENT_NAMES:()=>Zr,FHIRCAST_EVENT_RESOURCES:()=>Ds,FHIRCAST_EVENT_VERSION_REQUIRED:()=>en,FHIRCAST_RESOURCE_TYPES:()=>Ms,FhirFilterComparison:()=>hr,FhirFilterConnective:()=>yr,FhirFilterNegation:()=>gr,FhirPathAtom:()=>Re,FhircastConnection:()=>rr,FileBuilder:()=>Xi,FunctionAtom:()=>oe,HTTP_HL7_ORG:()=>bt,HTTP_TERMINOLOGY_HL7_ORG:()=>rc,Hl7Context:()=>we,Hl7Field:()=>ge,Hl7Message:()=>eo,Hl7Segment:()=>vt,ICD10:()=>ec,INVALID_MEDICATION_CART_RESPONSE:()=>wa,INVALID_MEDICATION_CHECKOUT_RESPONSE:()=>Pa,INVALID_MEDICATION_ORDER_RESPONSE:()=>Ta,INVALID_MEDICATION_ORDER_SET_RESPONSE:()=>Sa,INVALID_MEDICATION_SEARCH_RESPONSE:()=>zp,ImpliesAtom:()=>Jt,InAtom:()=>qt,IndexerAtom:()=>Le,InfixOperatorAtom:()=>A,InvalidOperationError:()=>hn,IsAtom:()=>_e,LOINC:()=>Ka,LRUCache:()=>ee,LiteralAtom:()=>G,LogLevel:()=>it,LogLevelNames:()=>va,Logger:()=>to,MEDICATION_REQUEST_STATUS_REASON_RESPONSE_NOT_RECEIVED:()=>Ea,MEDICATION_REQUEST_STATUS_REASON_SYSTEM:()=>ba,MEDPLUM_CLI_CLIENT_ID:()=>Pd,MEDPLUM_RELEASES_URL:()=>Fa,MEDPLUM_SEMVER_REGEX:()=>mo,MEDPLUM_VERSION:()=>on,MedplumClient:()=>cr,MedplumKeyValueClient:()=>or,MemoryStorage:()=>nn,MissingError:()=>z,MockAsyncClientStorage:()=>Mi,NDC:()=>tc,NOOP:()=>Bu,NotEqualsAtom:()=>$t,NotEquivalentAtom:()=>Ht,OAuthClientAssertionType:()=>Ws,OAuthGrantType:()=>tt,OAuthSigningAlgorithm:()=>_d,OAuthTokenAuthMethod:()=>Vd,OAuthTokenType:()=>qs,OperationOutcomeError:()=>m,Operator:()=>g,OperatorPrecedence:()=>S,OrAtom:()=>Qt,PATIENT_PREFERRED_PHARMACY_URL:()=>Tn,PHARMACY_PREFERENCE_TYPE_SYSTEM:()=>io,PHARMACY_TYPE_PREFERRED:()=>oo,PHARMACY_TYPE_PRIMARY:()=>vn,Parser:()=>Sr,ParserBuilder:()=>St,Pointer:()=>M,PrefixOperatorAtom:()=>Tt,PropertyType:()=>p,RXNORM:()=>Xa,ReadablePromise:()=>$,ReconnectingWebSocket:()=>et,ReturnAckCategory:()=>nd,SNOMED:()=>Ya,SchedulingEncounterCodingURI:()=>bf,SchedulingParametersURI:()=>vr,SchedulingPlanDefinitionURI:()=>Ef,SearchParameterType:()=>ye,ServiceTypeReferenceURI:()=>Sn,SubscriptionEmitter:()=>yt,SubscriptionManager:()=>ar,SymbolAtom:()=>F,TestError:()=>mn,TimezoneExtensionURI:()=>ka,Tokenizer:()=>Pe,TransformMapCollection:()=>dn,TypedEventTarget:()=>ae,UCUM:()=>Cn,UnaryOperatorAtom:()=>Ft,UnionAtom:()=>Ve,VALID_HOSTNAME_REGEX:()=>es,XorAtom:()=>zt,accepted:()=>fc,accessPolicySupportsInteraction:()=>Ei,add:()=>fr,addPreferredPharmacyToPatient:()=>xf,addProfileToResource:()=>ku,allOk:()=>nc,append:()=>re,apply:()=>zi,applyDefaultValuesToElement:()=>Yd,applyDefaultValuesToResource:()=>Kd,applyFixedOrPatternValue:()=>lr,applyPatch:()=>Ip,arrayBufferToBase64:()=>si,arrayBufferToHex:()=>oi,arrayify:()=>te,assert:()=>Is,assertContextVersionOptional:()=>Ai,assertNever:()=>Uu,assertOk:()=>wc,assertReleaseManifest:()=>Ua,assertValidMedplumSemver:()=>qa,badRequest:()=>w,booleanToTypedValue:()=>y,buildCdsRequest:()=>dd,buildElementsContext:()=>cn,buildMedicationRequestResponseLostStatusReason:()=>Jp,buildTypeName:()=>cs,businessRule:()=>vc,calculateAge:()=>It,calculateAgeString:()=>ru,canReadResourceType:()=>Zl,canWriteResource:()=>td,canWriteResourceType:()=>ed,capitalize:()=>U,checkForNull:()=>so,checkIfValidMedplumVersion:()=>rm,clearReleaseCache:()=>tm,clearScheduleParameter:()=>La,codeableConceptMatchesToken:()=>gu,codingMatchesToken:()=>Go,compareVersions:()=>Wa,compressElement:()=>Ic,concatUrls:()=>W,conceptMapTranslate:()=>Bi,conflict:()=>mc,contentTooLarge:()=>uc,convertContainedResourcesToBundle:()=>ud,convertToSearchableDates:()=>yi,convertToSearchableNumbers:()=>xl,convertToSearchableQuantities:()=>vl,convertToSearchableReferences:()=>vi,convertToSearchableStrings:()=>xi,convertToSearchableTokens:()=>Ti,convertToSearchableUris:()=>Tl,convertToTransactionBundle:()=>Rs,copy:()=>ua,countBy:()=>Nu,countWhere:()=>Lu,crawlTypedValue:()=>Dr,crawlTypedValueAsync:()=>Fc,createConstraintIssue:()=>_n,createFhircastMessagePayload:()=>rn,createOperationOutcomeIssue:()=>ke,createPatch:()=>Mp,createPreferredPharmacyExtension:()=>Ia,createProcessingIssue:()=>Ln,createReference:()=>ne,createStructureIssue:()=>R,createTests:()=>Dp,created:()=>ic,decodeBase64:()=>Es,decodeBase64Url:()=>tr,deepClone:()=>de,deepEquals:()=>ve,deepIncludes:()=>at,deriveIdentifierSearchParameter:()=>Nf,diffAny:()=>Ae,diffArrays:()=>ia,diffObjects:()=>oa,encodeBase64:()=>er,encodeBase64Url:()=>Ri,encodeSmartHealthLink:()=>Qf,encryptSHA256:()=>Ci,ensureNoLeadingSlash:()=>Zo,ensureTrailingSlash:()=>Gr,escapeHtml:()=>Fu,escapeToken:()=>aa,evalFhirPath:()=>yl,evalFhirPathTyped:()=>k,evalSqlOnFhir:()=>Kf,expandSampledData:()=>_i,expandSampledObservation:()=>jd,extractAccountReferences:()=>Wr,extractServiceTypeReferences:()=>kf,fetchAllVersionStrings:()=>im,fetchLatestVersionString:()=>nm,fetchVersionManifest:()=>Rn,fhirPathArrayEquals:()=>Xn,fhirPathArrayEquivalent:()=>Fr,fhirPathArrayNotEquals:()=>Zn,fhirPathEquals:()=>ct,fhirPathEquivalent:()=>Bo,fhirPathIs:()=>Qe,fhirPathNot:()=>Yn,fhirTypeToJsType:()=>_r,fhirpathPatchTypedValue:()=>Lp,findCodeBySystem:()=>hu,findObservationInterval:()=>vu,findObservationReferenceRange:()=>Tu,findObservationReferenceRanges:()=>Jo,findResourceByCode:()=>wu,findResourceInBundle:()=>ld,flatMapFilter:()=>Vu,forbidden:()=>sc,formatAddress:()=>rs,formatCodeableConcept:()=>Te,formatCoding:()=>fi,formatDate:()=>$u,formatDateTime:()=>ze,formatFamilyName:()=>Wu,formatGivenName:()=>qu,formatHl7DateTime:()=>xa,formatHumanName:()=>lt,formatMoney:()=>Xu,formatObservationValue:()=>is,formatPeriod:()=>Hu,formatQuantity:()=>be,formatRange:()=>Yu,formatReferenceString:()=>ts,formatSearchQuery:()=>Ll,formatTime:()=>ju,formatTiming:()=>Ju,formatWallTime:()=>ns,generateId:()=>se,getAllDataTypes:()=>qn,getAllQuestionnaireAnswers:()=>iu,getBuffer:()=>Jr,getCodeBySystem:()=>qr,getDataType:()=>xe,getDateProperty:()=>tu,getDefaultValuesForNewSliceEntry:()=>Xd,getDisplayString:()=>$o,getElementDefinition:()=>Ot,getElementDefinitionForPath:()=>hi,getElementDefinitionFromElements:()=>mi,getElementDefinitionTypeName:()=>wr,getExpressionForResourceType:()=>jf,getExpressionsForResourceType:()=>lo,getExtension:()=>ce,getExtensionValue:()=>De,getExtensions:()=>kt,getIdentifier:()=>$r,getImageSrc:()=>eu,getInnerDerivedIdentifierExpression:()=>ao,getMedicationOrderIframeUrl:()=>Zp,getNestedProperty:()=>je,getOutcomeRedirectUrl:()=>xc,getParsedDerivedIdentifierExpression:()=>co,getParsedExpressionForResourceType:()=>uo,getPathDifference:()=>Se,getPathDisplayName:()=>il,getPendingMedicationOrderId:()=>Yp,getPendingMedicationOrderStatus:()=>Xp,getPreferredPharmaciesFromPatient:()=>yf,getPropertyDisplayName:()=>ls,getQueryString:()=>di,getQuestionnaireAnswers:()=>nu,getRandomString:()=>Kr,getReferenceString:()=>I,getResourceTypes:()=>us,getScheduleParameters:()=>_a,getSchedulingTimezone:()=>wf,getSearchParameter:()=>nl,getSearchParameterDetails:()=>Ff,getSearchParameters:()=>rl,getSearchResourceTypes:()=>ql,getSmartHealthLinkId:()=>Jf,getStatus:()=>Ac,getTypedPropertyValue:()=>_,getTypedPropertyValueWithPath:()=>Vr,getTypedPropertyValueWithSchema:()=>Fo,getTypedPropertyValueWithoutSchema:()=>Uo,getValueSliceName:()=>Ni,getWebSocketUrl:()=>li,getWindow:()=>od,globalSchema:()=>H,gone:()=>ac,hasSchedulingParameters:()=>Cf,indexConceptMapCodings:()=>Gs,indexDefaultSearchParameters:()=>Hn,indexSearchParameter:()=>Qr,indexSearchParameterBundle:()=>tl,indexStructureDefinitionBundle:()=>Ir,inflateBaseSchema:()=>Nn,inflateElement:()=>Ao,initFhirPathParserBuilder:()=>pt,intersection:()=>Pp,invalidSearchOperator:()=>Bl,isAccepted:()=>Sc,isAckCode:()=>ya,isAddPharmacyResponse:()=>Sf,isBrowserEnvironment:()=>X,isCodeableConcept:()=>Br,isCoding:()=>Ur,isCompletedSubscriptionRequest:()=>wi,isComplexTypeCode:()=>jr,isConflict:()=>Rc,isContextVersionRequired:()=>Pi,isCreated:()=>Tc,isDataTypeLoaded:()=>Wn,isDateString:()=>ei,isDateTimeString:()=>Ge,isDayOfWeek:()=>Rf,isDefined:()=>Vt,isDestructive:()=>Gi,isEmpty:()=>O,isError:()=>Pr,isFhirCriteriaMet:()=>Ls,isFhircastResourceType:()=>Vs,isGone:()=>Cc,isJwt:()=>Oi,isLowerCase:()=>yu,isMedicationArray:()=>Kp,isMedicationCartManageResponse:()=>Oa,isMedicationCheckoutResponse:()=>Aa,isMedicationOrderResponse:()=>Ra,isMedicationOrderSetResponse:()=>Ca,isMedplumAccessToken:()=>Ii,isNodeEnvironment:()=>id,isNotFound:()=>Ec,isObject:()=>C,isOk:()=>Ar,isOperationOutcome:()=>ot,isOrganizationArray:()=>Tf,isPeriod:()=>ti,isPopulated:()=>le,isPrimitiveType:()=>Ct,isProfileLoaded:()=>$n,isProfileResource:()=>Wo,isQuantity:()=>L,isQuantityEquivalent:()=>ri,isRedirect:()=>bc,isReference:()=>J,isResource:()=>D,isResourceType:()=>Rt,isResourceTypeSchema:()=>Mr,isResourceWithId:()=>ut,isSliceDefinitionWithTypes:()=>Li,isString:()=>pe,isStringArray:()=>mu,isTextObject:()=>Qo,isTypedValue:()=>al,isUUID:()=>fu,isUnauthenticated:()=>Pc,isValidDate:()=>_t,isValidHostname:()=>Iu,isValidMedplumSemver:()=>ho,lazy:()=>ui,loadDataType:()=>kr,locationUtils:()=>he,mapByIdentifier:()=>Mu,matchDiscriminant:()=>Lr,matchesRange:()=>ci,matchesSearchRequest:()=>Zt,medicationCartClearRequestToParameters:()=>df,medicationCartRemoveRequestToParameters:()=>lf,medicationCheckoutRequestToParameters:()=>af,medicationOrderRequestToParameters:()=>rf,medicationOrderSetRequestToParameters:()=>of,medicationSearchParamsToParameters:()=>ef,move:()=>xn,multipleMatches:()=>dc,normalizeArrayBufferView:()=>ai,normalizeCreateBinaryOptions:()=>Vi,normalizeCreatePdfOptions:()=>$s,normalizeErrorEvent:()=>ks,normalizeErrorString:()=>Ie,normalizeOperationOutcome:()=>Et,notFound:()=>Mn,notModified:()=>oc,operationOutcomeIssueToString:()=>Po,operationOutcomeToString:()=>Vn,parametersToMedicationCartManageResponse:()=>ff,parametersToMedicationCheckoutResponse:()=>uf,parametersToMedicationOrderResponse:()=>nf,parametersToMedicationOrderSetResponse:()=>sf,parametersToOrderSetSyncResponse:()=>hf,parseFhirPath:()=>Xt,parseFhirPathPatchParameters:()=>_p,parseFilterParameter:()=>$p,parseHl7DateTime:()=>Hp,parseJWTPayload:()=>ir,parseLogLevel:()=>Qp,parseMappingLanguage:()=>sp,parseParameter:()=>ys,parseReference:()=>Yc,parseSearchRequest:()=>ft,parseSmartHealthLink:()=>zf,parseStructureDefinition:()=>Or,parseXFhirQuery:()=>_l,pathToJSONPointer:()=>He,preciseEquals:()=>Cu,preciseGreaterThan:()=>Au,preciseGreaterThanOrEquals:()=>Xo,preciseLessThan:()=>Pu,preciseLessThanOrEquals:()=>Yo,preciseRound:()=>Ru,preconditionFailed:()=>cc,projectAdminResourceTypes:()=>vs,protectedResourceTypes:()=>xs,readInteractions:()=>Ts,redirect:()=>Co,redirectOk:()=>yc,remove:()=>gn,removeDuplicates:()=>At,removePreferredPharmacyFromPatient:()=>vf,removeProfileFromResource:()=>Du,reorderBundle:()=>Cs,replace:()=>yn,replaceQueryVariables:()=>As,resolveId:()=>K,resourceMatchesSubscriptionCriteria:()=>Rd,satisfiedAccessPolicy:()=>Ss,schedulingDurationToMinutes:()=>Df,serializeError:()=>xr,serializeFhircastSubscriptionRequest:()=>tn,serverError:()=>hc,serverTimeout:()=>gc,serviceTypeIncludesService:()=>If,setCodeBySystem:()=>xu,setIdentifier:()=>ou,setScheduleParameter:()=>Af,singleton:()=>N,singularize:()=>Ou,sleep:()=>Hr,sortStringArray:()=>Dt,splitN:()=>Je,splitSearchOnComma:()=>mt,streamToBuffer:()=>Gf,stringify:()=>Mt,stringifyTypedValue:()=>gi,structureMapTransform:()=>ap,subsetResource:()=>Dc,subtract:()=>Hi,sumBy:()=>_u,summarizeObservations:()=>qd,test:()=>la,toJsBoolean:()=>j,toPeriod:()=>wt,toServiceTypeCodeableConcepts:()=>Of,toTypedValue:()=>E,tooManyRequests:()=>pc,trimTrailingEmptyElements:()=>cu,tryGetDataType:()=>Me,tryGetJwtExpiration:()=>ki,tryGetProfile:()=>jn,typedValueToString:()=>pi,unauthorized:()=>We,unauthorizedTokenAudience:()=>Cr,unauthorizedTokenExpired:()=>Dn,unescapeToken:()=>sa,unsupportedMediaType:()=>lc,validateFhircastSubscriptionRequest:()=>nr,validateResource:()=>Wc,validateResourceType:()=>Vf,validateTypedValue:()=>Vo,validationError:()=>T,validationRegexes:()=>Pt,warnIfNewerVersionAvailable:()=>om,wordWrap:()=>fa});module.exports=Ja(sm);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 Tt=class{constructor(e,r){c(this,"operator");c(this,"child");this.operator=e,this.child=r}toString(){return`${this.operator}(${this.child.toString()})`}},A=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()})`}},St=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 Sr(e,this.prefixParselets,this.infixParselets)}},Sr=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 Cn="http://unitsofmeasure.org",Ka="http://loinc.org",Ya="http://snomed.info/sct",Xa="http://www.nlm.nih.gov/research/umls/rxnorm",Za="http://www.ama-assn.org/go/cpt",ec="http://hl7.org/fhir/sid/icd-10",tc="http://hl7.org/fhir/sid/ndc",bt="http://hl7.org",rc="http://terminology.hl7.org";var br="ok",Er="created",Pn="gone",An="not-modified",wn="found",On="not-found",In="conflict",kn="unauthorized",yo="forbidden",xo="precondition-failed",vo="content-too-large",To="unsupported-media-type",So="multiple-matches",bo="too-many-requests",Rr="accepted",Eo="server-timeout",Ro="business-rule",nc={resourceType:"OperationOutcome",id:br,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},ic={resourceType:"OperationOutcome",id:Er,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},oc={resourceType:"OperationOutcome",id:An,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},Mn={resourceType:"OperationOutcome",id:On,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},We={resourceType:"OperationOutcome",id:kn,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},Dn={...We,issue:[...We.issue,{severity:"error",code:"expired",details:{text:"Token expired"}}]},Cr={...We,issue:[...We.issue,{severity:"error",code:"invalid",details:{text:"Token not issued for this audience"}}]},sc={resourceType:"OperationOutcome",id:yo,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},ac={resourceType:"OperationOutcome",id:Pn,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},cc={resourceType:"OperationOutcome",id:xo,issue:[{severity:"error",code:"processing",details:{text:"Precondition Failed"}}]};function uc(t){return{resourceType:"OperationOutcome",id:vo,issue:[{severity:"error",code:"too-long",details:{text:t}}]}}var lc={resourceType:"OperationOutcome",id:To,issue:[{severity:"error",code:"not-supported",details:{text:"Unsupported media type"}}]},dc={resourceType:"OperationOutcome",id:So,issue:[{severity:"error",code:"multiple-matches",details:{text:"Multiple resources found matching condition"}}]},pc={resourceType:"OperationOutcome",id:bo,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function fc(t){return{resourceType:"OperationOutcome",id:Rr,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:t}]}}function w(t,e){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:t},...e?{expression:te(e)}:void 0}]}}function mc(t,e){return{resourceType:"OperationOutcome",id:In,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 hc(t){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:t.toString()}]}}function gc(t){return{resourceType:"OperationOutcome",id:Eo,issue:[{severity:"error",code:"timeout",details:{text:t??"Server timeout"}}]}}function Co(t){let e=t.toString();return{resourceType:"OperationOutcome",id:wn,issue:[{severity:"information",code:"informational",details:{coding:[{system:"urn:ietf:rfc:3986",code:e}],text:"Redirect to "+e}}]}}function yc(t){return{...Co(t),id:br}}function xc(t){return t?.issue?.[0]?.details?.coding?.find(e=>e.system==="urn:ietf:rfc:3986")?.code}function vc(t,e){return{resourceType:"OperationOutcome",id:Ro,issue:[{severity:"error",code:"business-rule",details:{id:t,text:e}}]}}function Pr(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 Ar(t){return t.id===br||t.id===Er||t.id===An||t.id===Rr}function Tc(t){return t.id===Er}function Sc(t){return t.id===Rr}function bc(t){return t.id===wn}function Ec(t){return t.id===On}function Rc(t){return t.id===In}function Cc(t){return t.id===Pn}function Pc(t){return t.id===kn}function Ac(t){switch(t.id){case br:return 200;case Er:return 201;case Rr:return 202;case wn:return 302;case An:return 304;case kn:return 401;case yo:return 403;case On:return 404;case In:return 409;case Pn:return 410;case xo:case So:return 412;case vo:return 413;case To:return 415;case Ro:return 422;case bo:return 429;case Eo:return 504;default:return t.issue?.[0]?.code==="exception"?500:400}}function wc(t,e){if(!Ar(t)||e===void 0)throw new m(t)}var m=class extends Error{constructor(r,n){super(Vn(r),n);c(this,"outcome");this.name="OperationOutcomeError",this.outcome=r}};function Et(t){return t instanceof m?t.outcome:ot(t)?t:w(Ie(t))}function Ie(t){return t?typeof t=="string"?t:Pr(t)?t.message:ot(t)?Vn(t):typeof t=="object"&&"code"in t&&typeof t.code=="string"?t.code:JSON.stringify(t):"Unknown error"}function Vn(t){let e=t.issue?.map(Po)??[];return e.length>0?e.join("; "):"Unknown error"}function Po(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 _n(t,e){return ke("error","invariant",`Constraint ${e.key} not met: ${e.description}`,t,{fhirpath:e.expression})}function Ln(t,e,r,n){return ke("error","processing",e,t,{...n,error:r})}var Oc={"http://hl7.org/fhirpath/System.String":"string"};function Ic(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:Oc[r.code]??r.code})),e}function Ao(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 Nn(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,Ao(i,o)])),constraints:[],innerTypes:[]};return e}var wo={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:{authorizeUrl:{min:1,type:[{code:"string"}]},tokenUrl:{min:1,type:[{code:"string"}]},tokenAuthMethod:{type:[{code:"code"}]},userInfoUrl:{min:1,type:[{code:"string"}]},userInfoMode:{type:[{code:"code"}]},userInfoApiKey:{type:[{code:"string"}]},clientId:{min:1,type:[{code:"string"}]},clientSecret:{min:1,type:[{code:"string"}]},usePkce:{type:[{code:"boolean"}]},useSubject:{type:[{code:"boolean"}]},identitySource:{type:[{code:"code"}]},identityMappingMode:{type:[{code:"code"}]}}}};function Or(t){return new Un(t).parse()}var $e=Nn(wo),Bn=Object.create(null),Oo=Object.create(null),Mc={"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 Do(t){let e;return e=Oo[t],e||(e=Oo[t]=Object.create(null)),e}function Ir(t){let r=(Array.isArray(t)?t:t.entry?.map(n=>n.resource)??[]).filter(n=>n?.resourceType==="StructureDefinition");Hn(r);for(let n of r)kr(n)}function kr(t){if(!t?.name)throw new Error("Failed loading StructureDefinition from bundle");if(t.resourceType!=="StructureDefinition")return;let e=Or(t),r=Mc[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=Do(t.url),i=t.type),n[i]=e;for(let o of e.innerTypes)o.parentType=e,n[o.name]=o;Bn[t.url]=e}function qn(){return $e}function Wn(t){return!!$e[t]}function Me(t,e){if(e){let r=Do(e)[t];if(r)return r}return $e[t]}function xe(t,e){let r=Me(t,e);if(!r)throw new m(w("Unknown data type: "+t));return r}function Rt(t){let e=$e[t];return e&&Mr(e)}function $n(t){return!!Bn[t]}function jn(t){return Bn[t]}var Un=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:Nc(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=Fn(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[Fn(e,n.path)]=r;break}n=n.parent}if(!n){let i=Fn(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=wr(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){Lc(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=wr(e)),n||(n=ce(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=ko(e.max),n=e.base?.max?ko(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:Mo(_(i,"fixed[x]")),pattern:Mo(_(i,"pattern[x]")),binding:e.binding}}};function Dc(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)&&!Vc.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(Io):[Io]},t}var Io={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},Vc=["resourceType","id","meta"];function ko(t){return t==="*"?Number.POSITIVE_INFINITY:Number.parseInt(t,10)}function Fn(t,e=""){return _c(t.path,e)}function _c(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 Mo(t){return Array.isArray(t)&&t.length>0?t[0]:O(t)?void 0:t}function Lc(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 Nc(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 Dr(t,e,r){new Gn(t,e,r).crawl()}function Fc(t,e,r){return new Qn(t,e,r).crawl()}var Gn=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??xe(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(!Ct(e.type)){let i=n.innerTypes?.find(o=>o.name===e.type)??xe(e.type);this.crawlObject(e,i,r)}}},Qn=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??xe(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(!Ct(e.type)){let i=n.innerTypes?.find(o=>o.name===e.type)??xe(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?Vr:_,[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 Vr(t,e,r){let n=t.path;return Uc(_(t,e,r),n,e)}function Uc(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 _r={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"},Bc=new ee(1e3);function Ct(t){return t==="undefined"||t in _r}var Pt={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 Wc(t,e){if(!Rt(t.resourceType))throw new m(T("Invalid resource type"));return Vo(E(t),e)}function Vo(t,e){return new zn(t,e).validate()}var zn=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=Or(r.profile):this.schema=xe(e.type),this.base64BinaryMaxBytes=r?.base64BinaryMaxBytes??1*1024*1024,this.collect=r?.collect}currentResource(){return this.resourceStack.at(-1)}validate(){Jn(this.root.value,this.schema.path,this.issues),this.constraintsCheck({...this.root,path:this.schema.path},this.schema),Dr(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}`)),Hc(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=Gc(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){Ct(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=jc(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(_n(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=bt+"/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"&&zc(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]=re(n,r)}isExpressionTrue(e,r){let n={"%context":r,"%ucum":E(Cn)},i=this.currentResource();i&&(n["%resource"]=E(i)),D(this.root.value)&&(n["%rootResource"]=this.root);try{let o=k(e.expression,[r],n,Bc);return o.length===1&&o[0].value===!0}catch(o){return this.issues.push(Ln(r.path,"Error evaluating invariant expression",o,{fhirpath:e.expression})),!1}}validatePrimitiveType(e){let[r,n]=Qc(e),i=e.path;if(r){let{type:o,value:s}=r;if(!(o in _r)){this.issues.push(R(i,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=_r[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&&Dr(n,this,{schema:xe("Element"),initialPath:i})}validateBase64Binary(e,r){if(!Jc(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=Pt[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")):$c(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 $c(t){return t===p.integer||t===p.positiveInt||t===p.unsignedInt}function jc(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 Jn(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]&&Jn(i[a],`${o}[${a}]`,r);else typeof i=="object"&&Jn(i,o,r)}}function Hc(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&&!ve(r,e.fixed))}function Lr(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 ve(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 Gc(t,e){for(let r of e?.slices??v)if(e?.discriminator?.every(n=>te(je(t,n.path))?.some(i=>Lr(i,n,r))))return r.name}function Qc(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 zc(t){switch(t){case"CodeableConcept":case"Coding":case"code":case"Quantity":case"string":case"uri":return!0;default:return!1}}function Jc(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}:Br(t)?{type:p.CodeableConcept,value:t}:Ur(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=Ot(t.type,e,r?.profileUrl);return n?Fo(t,e,n):Uo(t,e)}function Fo(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]=Kn(o[h],a[h])}else if(!o&&Array.isArray(a)){o=a.slice();for(let h=0;h<a.length;h++)o[h]=Kn(void 0,a[h])}else o=Kn(o,a);if(!O(o))return(s==="Element"||s==="BackboneElement")&&(s=r.type[0].code),Array.isArray(o)?o.map(h=>_o(h,s)):_o(o,s)}function _o(t,e){return e==="Resource"&&D(t)&&(e=t.resourceType),{type:e,value:t}}function Uo(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 Yn(t){return y(!j(t))}function Xn(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 Zn(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(ri(r,n)):y(typeof r=="object"&&typeof n=="object"?ni(t,e):r===n)}function Fr(t,e){return t.length===0&&e.length===0?y(!0):t.length!==e.length?y(!1):(t.sort(Lo),e.sort(Lo),y(t.every((r,n)=>j(Bo(r,e[n])))))}function Bo(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(ri(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"?ni({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function Lo(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 ei(r);case"DateTime":return Ge(r);case"Time":return typeof r=="string"&&!!/^T\d/.exec(r);case"Period":return ti(r);case"Quantity":return L(r);default:return t.type===n||typeof r=="object"&&r?.resourceType===n}}function ei(t){return typeof t=="string"&&!!Pt.date.exec(t)}function Ge(t){return typeof t=="string"&&!!Pt.dateTime.exec(t)}function ti(t){return!!(t&&typeof t=="object"&&("start"in t&&Ge(t.start)||"end"in t&&Ge(t.end)))}function wt(t){if(ei(t)||Ge(t))return{start:Nr(t,"0000-01-01T00:00:00.000"),end:Nr(t,"xxxx-12-31T23:59:59.999")};if(ti(t))return{start:t.start?Nr(t.start,"0000-01-01T00:00:00.000"):void 0,end:t.end?Nr(t.end,"xxxx-12-31T23:59:59.999"):void 0}}function Nr(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 ri(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 ni(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(No(o)&&No(s)){if(!ni(o,s))return!1}else if(o!==s)return!1}return!0}function No(t){return t!==null&&typeof t=="object"}function Kn(t,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return Kc(t??{},e)}return t}function Kc(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 ne(t){let e=I(t)??"undefined/undefined",r=$o(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 Yc(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 Wr(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 Wo(t){return t.resourceType==="Patient"||t.resourceType==="Practitioner"||t.resourceType==="RelatedPerson"}function $o(t){if(Wo(t)){let e=Xc(t);if(e)return e}if(t.resourceType==="Appointment"&&t.serviceType?.[0])return Te(t.serviceType[0]);if(t.resourceType==="Device"){let e=Zc(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]),Br(e))return Te(e);if(Qo(e))return e.text}return I(t)??""}function Xc(t){let e=t.name;if(e&&e.length>0)return lt(e[0])}function Zc(t){let e=t.deviceName;if(e&&e.length>0)return e[0].name}function eu(t){if(!("photo"in t))return;let e=t.photo;if(e)if(Array.isArray(e))for(let r of e){let n=qo(r);if(n)return n}else return qo(e)}function qo(t){if(t.url&&t.contentType?.startsWith("image/"))return t.url}function tu(t){return t?new Date(t):void 0}function It(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 ru(t,e){let{years:r,months:n,days:i}=It(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 nu(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]=r.answer[0]),jo(r.item,e)}function iu(t){let e={};return Ho(t.item,e),e}function Ho(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),Ho(r.item,e)}function $r(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}function ou(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=ce(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 ce(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 kt(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=>kt(o,n)):i}function Mt(t,e){let r=ii(t);return JSON.stringify(r,null,e?2:void 0)??""}function ii(t){if(!(t==null||t===""))return typeof t=="object"?Array.isArray(t)?su(t):au(t):t}function su(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=ii(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 au(t){let e,r=0;for(let n in t){let i=t[n],o=ii(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"?!le(t):!1}function le(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 cu(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 ve(t,e,r){return t===e||O(t)&&O(e)?!0:O(t)||O(e)?!1:Array.isArray(t)&&Array.isArray(e)?uu(t,e):Array.isArray(t)||Array.isArray(e)?!1:C(t)&&C(e)?lu(t,e,r):(C(t)||C(e),!1)}function uu(t,e){if(t.length!==e.length)return!1;for(let r=0;r<t.length;r++)if(!ve(t[r],e[r]))return!1;return!0}function lu(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(!ve(o,s,i))return!1}return!0}function at(t,e){return O(t)?!0:O(e)?!1:Array.isArray(t)&&Array.isArray(e)?du(t,e):Array.isArray(t)||Array.isArray(e)?!1:C(t)&&C(e)?pu(t,e):C(t)||C(e)?!1:t===e}function du(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 fu(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 mu(t){return t.every(pe)}function pe(t){return typeof t=="string"}function Ur(t){return C(t)&&"code"in t&&typeof t.code=="string"}function Br(t){return C(t)&&"coding"in t&&Array.isArray(t.coding)&&t.coding.every(Ur)}function hu(t,e){for(let r of t??v)for(let n of r.coding??v)if(n.system===e)return n.code}function Go(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 gu(t,e){return(t.coding??v).some(r=>Go(r,e))}function Qo(t){return C(t)&&"text"in t&&typeof t.text=="string"}var zo=[];for(let t=0;t<256;t++)zo.push(t.toString(16).padStart(2,"0"));function oi(t){let e=ai(t),r=new Uint8Array(e),n=new Array(r.length);for(let i=0;i<r.length;i++)n[i]=zo[r[i]];return n.join("")}function si(t){let e=ai(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 ai(t){return ArrayBuffer.isView(t)?t.buffer:t}function U(t){return t?t.charAt(0).toUpperCase()+t.substring(1):""}function yu(t){return t===t.toLowerCase()&&t!==t.toUpperCase()}function jr(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 qr(t,e){return t.coding?.find(r=>r.system===e)?.code}function xu(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 vu(t,e,r,n){return t.qualifiedInterval?.find(i=>Ko(i,e)&&Eu(i,r,t.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function Tu(t,e,r){return Jo(t,e,r)[0]}function Jo(t,e,r){return t.qualifiedInterval?.filter(n=>Ko(n,e)&&(!r||r.includes(n.condition)))??[]}function Ko(t,e){return Su(t,e)&&bu(t,e)}function Su(t,e){return!t.gender||t.gender===e.gender}function bu(t,e){return!t.age||ci(It(e.birthDate).years,t.age)}function Eu(t,e,r){return!!t.range&&ci(e,t.range,r)}function ci(t,e,r){return(e.low?.value===void 0||Xo(t,e.low.value,r))&&(e.high?.value===void 0||Yo(t,e.high.value,r))}function Ru(t,e){return Number.parseFloat(t.toFixed(e))}function Cu(t,e,r){return ue(t,r)===ue(e,r)}function Pu(t,e,r){return ue(t,r)<ue(e,r)}function Au(t,e,r){return ue(t,r)>ue(e,r)}function Yo(t,e,r){return ue(t,r)<=ue(e,r)}function Xo(t,e,r){return ue(t,r)>=ue(e,r)}function ue(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"?qr(n.code||{},r)===e:qr(n.code||{},r)===qr(e,r))}function Ou(t){return Array.isArray(t)?t[0]:t}var Hr=(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 ui(t){let e,r=!1;return function(){return r||(e=t(),r=!0),e}}function re(t,e){return t?(t.push(e),t):[e]}function Dt(t){return t.sort((e,r)=>e.localeCompare(r))}function Gr(t){return t.endsWith("/")?t:t+"/"}function Zo(t){return t.startsWith("/")?t.slice(1):t}function W(t,e){return new URL(Zo(e),Gr(t.toString())).toString()}function li(t,e){return W(t,e).toString().replace("http://","ws://").replace("https://","wss://")}function di(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 es=/^(([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 Iu(t){return es.test(t)}function ku(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 Mu(t,e){return new Map(t.entry?.filter(n=>!!n.resource).map(n=>[$r(n.resource,e),n.resource]).filter(([n])=>n!==void 0))}function Du(t,e){if(t?.meta?.profile?.includes(e)){let r=t.meta.profile.indexOf(e);t.meta.profile.splice(r,1)}return t}function Vu(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 Lu(t,e){let r=0;for(let n of t)e(n)&&r++;return r}function Nu(t,e){let r={};for(let n of t){let i=e(n);r[i]=(r[i]??0)+1}return r}function Fu(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 Vt(t){return t!=null}function Uu(t){throw new Error(`Unexpected value: ${JSON.stringify(t)}`)}var v=Object.freeze([]),Bu=()=>{};function pi(t){if(!t)return"";switch(t.type){case"Address":return rs(t.value);case"CodeableConcept":return Te(t.value);case"Coding":return fi(t.value);case"ContactPoint":return t.value.value;case"HumanName":return lt(t.value);case"Quantity":return be(t.value);case"Reference":return ts(t.value);default:return t.value?.toString()??""}}function ts(t){return t?t.display??t.reference??Mt(t):""}function rs(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 qu(t){let e=[];return t.given&&e.push(...t.given),e.join(" ").trim()}function Wu(t){return Ke(t.family)??""}function _t(t){return t instanceof Date&&!Number.isNaN(t.getTime())}function $u(t,e,r){if(!t)return"";let n=new Date(t);return _t(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...r})):""}function ju(t,e,r){if(!t)return"";let n=new Date("2000-01-01T"+t+"Z");return _t(n)?n.toLocaleTimeString(e,r):""}function ns(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 _t(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 _t(n)?n.toLocaleString(e,r):""}function Hu(t,e,r){return!t||!t.start&&!t.end?"":ze(t.start,e,r)+" - "+ze(t.end,e,r)}var Gu={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},Qu={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},zu={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function Ju(t){if(!t)return"";let e=[];return Ku(e,t.repeat),t.event&&e.push(t.event.map(r=>ze(r)).join(", ")),U(e.join(" ").trim())}function Ku(t,e){if(!e?.periodUnit)return;let r=e.frequency??1,n=e.period??1,i=e.periodUnit;r===1&&n===1?t.push(Gu[i]):(r===1?t.push("once"):t.push(r+" times"),n===1?t.push("per "+Qu[i]):t.push("per "+n+" "+zu[i])),e.dayOfWeek&&t.push("on "+e.dayOfWeek.map(U).join(", ")),e.timeOfDay&&t.push("at "+e.timeOfDay.map(o=>ns(o)).join(", "))}function Yu(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=el(n.value,e),`> ${be(n,e)}`):`>= ${be(n,e)}`:n?.value===void 0&&i?.value!==void 0?r&&e!==void 0?(i.value=Zu(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 Xu(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=>fi(r)).join(", "):"")}function fi(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 is(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=>is(r)).join(" / ")),e.join(" / ").trim()}function Ke(t){return typeof t=="string"?t:void 0}function Zu(t,e,r=1){return(os(t,e)+r)*Math.pow(10,-e)}function el(t,e,r=1){return(os(t,e)-r)*Math.pow(10,-e)}function os(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 tl(t){for(let e of t.entry??v){let r=e.resource;r.resourceType==="SearchParameter"&&Qr(r)}}function Hn(t){let e=Array.isArray(t)?t:t.entry?.map(r=>r.resource)??[];for(let r of e)r?.resourceType==="StructureDefinition"&&r.kind==="resource"&&as(r.type)}function as(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??=us(),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 Qr(t){for(let e of t.base??v){let r=as(e);r.searchParams||(r.searchParams={}),r.searchParams[t.code]=t}}function wr(t){let e=t.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?cs((t.base?.path??t.path)?.split(".")):e}function cs(t){return t.length===1?t[0]:t.map(U).join("")}function Mr(t){return t.kind==="resource"&&t.name!=="Resource"&&t.name!=="DomainResource"}function us(){return Object.values(qn()).filter(Mr).map(t=>t.name)}function rl(t){return H.types[t]?.searchParams}function nl(t,e){return H.types[t]?.searchParams?.[e]}function il(t){let e=t.replaceAll("[x]","").split(".").pop();return ls(e)}function ls(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(sl).join(" ").replace("_"," ").replaceAll(/\s+/g," ")}var ol=new Set(["CDS","ID","IP","JWKS","PKCE","OMB","OID","SOP","UDI","UID","URI","URL"]);function sl(t){let e=t.toUpperCase();return t===e?t:ol.has(e)?e:e.charAt(0)+t.slice(1)}function Ot(t,e,r){let n=Me(t,r);if(n)return mi(n.elements,e)}function mi(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 hi(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=mi(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 al(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 gi(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 ss(t.value);case p.CodeableConcept:return t.value.coding?.map(ss).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 ss(t){return t?`${t.system??""}|${t.code}`:""}function dt(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 Lt(t){return t instanceof F?t.name:t instanceof ie&&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=Lt(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}]=me(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}]=me(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}]=me(e,1);return typeof r=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(r)?[{type:p.date,value:dt(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}]=me(e,1);return typeof r=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(r)?[{type:p.dateTime,value:dt(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}]=me(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}]=me(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}]=me(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}]=me(e,1);if(typeof r=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(r);if(n)return[{type:p.time,value:dt("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)=>fe(Math.abs,t,e),ceiling:(t,e)=>fe(Math.ceil,t,e),exp:(t,e)=>fe(Math.exp,t,e),floor:(t,e)=>fe(Math.floor,t,e),ln:(t,e)=>fe(Math.log,t,e),log:(t,e,r)=>fe((n,i)=>Math.log(n)/Math.log(i),t,e,r),power:(t,e,r)=>fe(Math.pow,t,e,r),round:(t,e,...r)=>fe((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)=>fe(Math.sqrt,t,e),truncate:(t,e)=>fe(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=It(o[0].value,s[0].value);return[{type:p.Quantity,value:{value:u[a],unit:a}}]},is:(t,e,r)=>{let n=Lt(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=Lt(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=ce(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}]=me(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 fe(t,e,r,...n){if(r.length===0)return[];let[{value:i}]=me(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 me(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):Vr(e,this.name)}toString(){return this.name}},Nt=class{eval(){return[]}toString(){return"{}"}},Ft=class extends Tt{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 A{constructor(e,r){super("as",e,r)}eval(e,r){return B.as(e,this.left.eval(e,r),this.right)}},q=class extends A{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)]}},ds=Object.freeze({type:"string",value:""}),Ut=class extends A{constructor(e,r){super("&",e,r)}eval(e,r){let n=N(this.left.eval(e,r))??ds,i=N(this.right.eval(e,r))??ds;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}]}},Bt=class extends A{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))}},qt=class extends A{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)):[]}},ie=class extends A{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 A{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])}},Wt=class extends A{constructor(e,r){super("=",e,r)}eval(e,r){let n=this.left.eval(e,r),i=this.right.eval(e,r);return Xn(n,i)}},$t=class extends A{constructor(e,r){super("!=",e,r)}eval(e,r){let n=this.left.eval(e,r),i=this.right.eval(e,r);return Zn(n,i)}},jt=class extends A{constructor(e,r){super("~",e,r)}eval(e,r){let n=this.left.eval(e,r),i=this.right.eval(e,r);return Fr(n,i)}},Ht=class extends A{constructor(e,r){super("!~",e,r)}eval(e,r){let n=this.left.eval(e,r),i=this.right.eval(e,r);return Yn(Fr(n,i))}},_e=class extends A{constructor(e,r){super("is",e,r)}eval(e,r){let n=this.left.eval(e,r);if(n.length!==1)return[];let i=Lt(this.right);return i?y(Qe(n[0],i)):[]}},Gt=class extends A{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):[]}},Qt=class extends A{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):[]}},zt=class extends A{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)}},Jt=class extends A{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)}},oe=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 cl=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],ul=/^\d{4}-\d{2}[\dT:.+\-Z]*(?=[\s)\]]|$)/,ll={"'":"'",'"':'"',"`":"`",r:"\r",n:`
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=ll[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 ul.test(this.str.substring(e))?(this.pos.index=e-1,this.consumeDateTime()):this.consumeUnquotedString(e);if(n===" ")dl(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 dl(t){return!!(t&&(t.id==="String"||t.id==="Symbol"&&cl.includes(t.value)))}var Kt=["true","false"],Yt=["!=","!~","<=",">=","{}","->"];function ps(t){return new Pe(t,Kt,Yt).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},pl={parse(t){let e=t.consumeAndParse();if(!t.match(")"))throw new Error("Parse error: expected `)` got `"+t.peek()?.value+"`");return e}},fl={parse(t,e){let r=t.consumeAndParse();if(!t.match("]"))throw new Error("Parse error: expected `]`");return new Le(e,r)},precedence:S.Indexer},ml={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 oe(e.name,r)},precedence:S.FunctionCall};function hl(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 pt(){return new St().registerPrefix("String",{parse:(t,e)=>new G({type:p.string,value:e.value})}).registerPrefix("DateTime",{parse:(t,e)=>new G({type:p.dateTime,value:dt(e.value)})}).registerPrefix("Quantity",{parse:(t,e)=>new G({type:p.Quantity,value:hl(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 Nt}).registerPrefix("(",pl).registerInfix("[",fl).registerInfix("(",ml).prefix("+",S.UnaryAdd,(t,e)=>new Ft("+",e,r=>r)).prefix("-",S.UnarySubtract,(t,e)=>new q("-",e,e,(r,n)=>-n)).infixLeft(".",S.Dot,(t,e,r)=>new ie(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 Wt(t,r)).infixLeft("!=",S.NotEquals,(t,e,r)=>new $t(t,r)).infixLeft("~",S.Equivalent,(t,e,r)=>new jt(t,r)).infixLeft("!~",S.NotEquivalent,(t,e,r)=>new Ht(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 Ut(t,r)).infixLeft("and",S.And,(t,e,r)=>new Gt(t,r)).infixLeft("as",S.As,(t,e,r)=>new Ce(t,r)).infixLeft("contains",S.Contains,(t,e,r)=>new Bt(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 qt(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 Qt(t,r)).infixLeft("xor",S.Xor,(t,e,r)=>new zt(t,r)).infixLeft("implies",S.Implies,(t,e,r)=>new Jt(t,r))}var gl=pt();function Xt(t){return new Re(t,gl.construct(ps(t)).consumeAndParse())}function yl(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??Xt(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 xl(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 yi(t){let e=[];for(let r of t){let n=wt(r.value);n&&e.push(n)}return e}function xi(t){let e=new Set;for(let r of t){let n=pi(r);n&&e.add(n)}return Array.from(e)}function vi(t){let e=new Set;for(let r of t){let{value:n}=r;n&&(pe(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 vl(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 Tl(t){let e=new Set;for(let r of t)pe(r.value)&&e.add(r.value);return Array.from(e)}function Ti(t,e={}){let r=[];for(let n of t)Sl(e,r,n);return r}function Sl(t,e,r){let{type:n,value:i}=r;switch(n){case p.Identifier:bl(e,t,i);break;case p.CodeableConcept:El(e,t,i);break;case p.Coding:fs(e,t,i);break;case p.ContactPoint:Rl(e,t,i);break;default:Xe(e,t,void 0,i?.toString())}}function bl(t,e,r){r?.type?.text&&Xe(t,e,e.textSearchSystem,r.type.text),Xe(t,e,r?.system,r?.value)}function El(t,e,r){r?.text&&Xe(t,e,e.textSearchSystem,r.text);for(let n of r?.coding??v)fs(t,e,n)}function fs(t,e,r){r&&(r.display&&Xe(t,e,e.textSearchSystem,r.display),Xe(t,e,r.system,r.code))}function Rl(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 Cl=20,Pl=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"},Si={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},bi={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 ft(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&&o.push(...n.entries()),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 Al(i,o)}function Al(t,e){let r={resourceType:t};for(let[n,i]of e)wl(r,n,i);return r}function wl(t,e,r){let n,i,o=e.indexOf(":");if(o>=0?(n=e.substring(0,o),i=e.substring(o+1)):(n=e,i=""),n!=="_"){if(n==="_has"||e.includes(".")){t.filters=re(t.filters,{code:e,operator:g.EQUALS,value:r});return}switch(n){case"_sort":Ol(t,r);break;case"_cursor":t.cursor=r;break;case"_count":t.count=Number.parseInt(r,10);break;case"_offset":t.offset=Number.parseInt(r,10);break;case"_total":t.total=r;break;case"_summary":r==="count"?(t.total="accurate",t.count=0):(r==="true"||r==="data"||r==="text")&&(t.summary=r);break;case"_include":{let s=ms(r);i==="iterate"&&(s.modifier=g.ITERATE),t.include=re(t.include,s);break}case"_revinclude":{let s=ms(r);i==="iterate"&&(s.modifier=g.ITERATE),t.revInclude=re(t.revInclude,s);break}case"_fields":case"_elements":t.fields=r.split(",");break;case"_type":t.types=r.split(",");break;case"_format":t.format=r;break;case"_pretty":t.pretty=r==="true";break;default:{let s=H.types[t.resourceType]?.searchParams?.[n];s?t.filters=re(t.filters,ys(s,g.EQUALS,i,r)):t.filters=re(t.filters,kl(n,i,r))}}}}function Ol(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 Il=[g.MISSING,g.PRESENT];function ys(t,e,r,n){if(Il.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}=Ml(n,r||g.EQUALS);if(!hs(t,o))throw new m(w(`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(!hs(t,n))throw new m(w(`Invalid format for ${t.type} search parameter: ${n}`));return{code:t.code,operator:Dl(r)??e,value:n}}default:throw new Error("Unrecognized search parameter type: "+t.type)}}function kl(t,e,r){let n=g.EQUALS;if(e)n=e;else if(r.length>=2){let i=r.substring(0,2);i in bi&&(r.length===2||r.at(2)?.match(/\d/))&&(n=i,r=r.substring(i.length))}return{code:t,operator:n,value:r}}function Ml(t,e){let r=t.substring(0,2),n=bi[r];return n?{operator:n,value:t.substring(2)}:{operator:e,value:t}}function Dl(t){return Si[t]}function ms(t){let e=t.split(":");if(e.includes("*"))throw new m(w("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new m(w(`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(w(`Invalid include value '${t}'`))}function hs(t,e){return t.type==="date"?Ge(e):!0}var Vl=/{{([^{}]+)}}/g;function _l(t,e,r=[]){return t=t.replaceAll(Vl,(n,i)=>{let o=k(i,r,e);return o.length!==1?"":gi(o[0])}),ft(t)}function Ll(t){let e=[];t.fields&&e.push("_fields="+t.fields.join(","));for(let r of t.filters??v)e.push(Nl(r));t.sortRules&&t.sortRules.length>0&&e.push(Fl(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(gs("_include",r));for(let r of t.revInclude??v)e.push(gs("_revinclude",r));return e.length===0?"":(Dt(e),"?"+e.join("&"))}function Nl(t){let e=t.operator in Si?":"+t.operator:"",r=t.operator!==g.EQUALS&&t.operator in bi?t.operator:"";return`${t.code}${e}=${r}${encodeURIComponent(t.value)}`}function Fl(t){return"_sort="+t.map(e=>e.descending?"-"+e.code:e.code).join(",")}function gs(t,e){return t+(e.modifier?":"+e.modifier:"")+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function mt(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 Ul(t,e){return w(`Invalid modifier :${t} for ${e}`)}function Bl(t,e){return t in Si?Ul(t,e):w(`Invalid operator ${t} for ${e}`)}function ql(t){return t.types??[t.resourceType]}function Zt(t,e){if(e.resourceType!==t.resourceType)return!1;for(let r of e.filters??v)if(!$l(t,e,r))return!1;return!0}var Wl=new ee(1e3);function $l(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,Wl);if(r.operator===g.MISSING||r.operator===g.PRESENT)return jl(i,r);switch(n.type){case"reference":return Hl(n,i,r);case"string":case"uri":return zl(i,r);case"token":return Gl(i,r);case"date":return Kl(i,r);default:return!1}}function jl(t,e){let r=t.length>0;return(e.operator===g.MISSING&&e.value==="false"||e.operator===g.PRESENT&&e.value==="true")===r}function Hl(t,e,r){let n=zr(r.operator);if(r.value===""&&e.length===0)return r.operator===g.EQUALS;let i=vi(e);for(let o of mt(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 Gl(t,e){let r=Ti(t),n=mt(e.value),i=zr(e.operator);for(let o of r)for(let s of n)if(Ql(o,s))return!i;return i}function Ql(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 zl(t,e){let r=xi(t),n=mt(e.value),i=zr(e.operator);for(let o of r)for(let s of n)if(Jl(o,s))return!i;return i}function Jl(t,e){return t.toLowerCase().includes(e.toLowerCase())}function Kl(t,e){let r=yi(t),n=mt(e.value),i=zr(e.operator);for(let o of r)for(let s of n)if(Yl(o,e.operator,s))return!i;return i}function Yl(t,e,r){if(!t)return!1;let n=wt(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 zr(t){return t===g.NOT_EQUALS||t===g.NOT}var Xl={resourceType:"*"},xs=["DomainConfiguration","JsonWebKey","Login"],vs=["Package","PackageRelease","PackageInstallation","Project","ProjectMembership","User","UserSecurityRequest"],Ne={READ:"read",VREAD:"vread",UPDATE:"update",DELETE:"delete",HISTORY:"history",CREATE:"create",SEARCH:"search"},Ts=[Ne.READ,Ne.VREAD,Ne.HISTORY,Ne.SEARCH];function Zl(t,e){return Ei(t,Ne.SEARCH,e)}function ed(t,e){return xs.includes(e)?!1:Ei(t,Ne.UPDATE,e)}function Ei(t,e,r){return!!t.resource?.some(n=>bs(n,r,e))}function td(t,e){return!!Ss(e,Ne.UPDATE,t)}function Ss(t,e,r){return r?r.resource?.find(n=>rd(t,e,n)):Xl}function rd(t,e,r){let n=t.resourceType;return bs(r,n,e)?n==="Binary"?!0:!(r.compartment&&!t.meta?.compartment?.some(i=>i.reference===r.compartment?.reference)||r.criteria&&!Zt(t,ft(r.criteria))):!1}function bs(t,e,r){return t.resourceType!==e&&(t.resourceType!=="*"||vs.includes(e))?!1:t.interaction?t.interaction.includes(r):!t.readonly||Ts.includes(r)}var nd={FIRST:"first",APPLICATION:"application"};function X(){return typeof window<"u"}function id(){return typeof Buffer<"u"}function od(){return typeof window<"u"?window:void 0}function Jr(){return typeof Buffer<"u"?Buffer:void 0}var he={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 Es(t){if(X()){let r=window.atob(t),n=Uint8Array.from(r,i=>i.codePointAt(0));return new window.TextDecoder().decode(n)}let e=Jr();if(e)return e.from(t,"base64").toString("utf-8");throw new Error("Unable to decode base64")}function er(t){if(X()){let r=new window.TextEncoder().encode(t),n=String.fromCodePoint.apply(null,r);return window.btoa(n)}let e=Jr();if(e)return e.from(t,"utf8").toString("base64");throw new Error("Unable to encode base64")}function Ri(t){return er(t).replaceAll("+","-").replaceAll("/","_").replace(/[=]{1,2}$/,"")}function tr(t){t=t.padEnd(t.length+(4-t.length%4)%4,"=");let e=t.replaceAll("-","+").replaceAll("_","/");return Es(e)}function Kr(){let t=new Uint32Array(28);return crypto.getRandomValues(t),oi(t.buffer)}async function Ci(t){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(t))}function se(){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 Rs(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]=se(),i.fullUrl="urn:uuid:"+e[s],delete i.resource?.id;else if(i.fullUrl?.startsWith("resource:")){let a=i.fullUrl.slice(9);e[a]=se(),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)=>sd(i,o,e),2);return Cs(JSON.parse(n))}function sd(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 Cs(t){let e=cd(t),{sorted:r,cycles:n}=ad(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 ht={NotVisited:"NotVisited",Visiting:"Visiting",Visited:"Visited"};function ad(t){let e=[],r={},n=[];for(let o of Object.keys(t))r[o]=ht.NotVisited;function i(o,s){if(r[o]===ht.Visited)return!0;if(r[o]===ht.Visiting){let u=s.lastIndexOf(o);return u!==-1&&n.push(s.slice(u)),!0}r[o]=ht.Visiting,s.push(o);let a=!1;for(let u of t[o]??v)i(u,s)||(a=!0);return r[o]=ht.Visited,s.pop(),e.unshift(o),!a}for(let o in t)r[o]===ht.NotVisited&&i(o,[]);return{sorted:e,cycles:n}}function Ps(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 Ps(n,e)}}function cd(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&&Ps(r.resource,i=>{i!==n&&e[i]&&e[i].push(n)})}return e}function ud(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=se());return Rs(e)}function ld(t,e,r){return t.entry?.find(({resource:n})=>n?.resourceType===e&&n?.id===r)?.resource}async function dd(t,e,r,n){return{hook:r.hook,hookInstance:se(),context:n,prefetch:await pd(t,e,r,n)}}async function pd(t,e,r,n){if(!r.prefetch)return{};let i={};for(let[o,s]of Object.entries(r.prefetch)){let a=await fd(t,e,n,s);i[o]=a??null}return i}function fd(t,e,r,n){if(n=As(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 md=new Set(["userPractitionerId","userPractitionerRoleId","userPatientId","userRelatedPersonId"]);function As(t,e,r){return r.replaceAll(/\{\{([^}]+)\}\}/g,(n,i)=>{if(i=i.trim(),md.has(i))return t.id;if(i.startsWith("context.")){let o=i.substring(8),s=hd(e,o);if(pe(s))return s;if(typeof s=="number"||typeof s=="boolean")return String(s)}return n})}function hd(t,e){let r=e.split("."),n=t;for(let i of r)if(n&&C(n)&&i in n)n=n[i];else return;return n}var V={CSS:"text/css",DICOM:"application/dicom",DICOM_JSON:"application/dicom+json",EVENT_STREAM:"text/event-stream",FAVICON:"image/vnd.microsoft.icon",FHIR_JSON:"application/fhir+json",FORM_URL_ENCODED:"application/x-www-form-urlencoded",HL7_V2:"x-application/hl7-v2+er7",HTML:"text/html",JAVASCRIPT:"text/javascript",JOSE:"application/jose",JSON:"application/json",JSON_PATCH:"application/json-patch+json",JWT:"application/jwt",MULTIPART_FORM_DATA:"multipart/form-data",PNG:"image/png",SCIM_JSON:"application/scim+json",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript",PING:"x-application/ping",XML:"text/xml",CDA_XML:"application/cda+xml",OCTET_STREAM:"application/octet-stream"};var Yr=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}},ae=class{constructor(){c(this,"emitter",new Yr)}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},ws=!1;function gd(){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 Is(t,e){if(!t)throw new Error(e)}function yd(){}function Xr(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 ks(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},Os=!1,et=class t extends ae{constructor(r,n,i={}){ws||(gd(),ws=!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),Is(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(Xr(r))});c(this,"_handleMessage",r=>{this._debug("message event"),this.onmessage&&this.onmessage(r),this.dispatchEvent(Xr(r))});c(this,"_handleError",r=>{let n=ks(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(Xr(n)),this._connect()});c(this,"_handleClose",r=>{this._debug("close event"),this._clearTimeouts(),this._shouldReconnect&&this._connect(),this.onclose&&this.onclose(r),this.dispatchEvent(Xr(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"&&!Os&&(console.error("\u203C\uFE0F No WebSocket implementation available. You should define options.WebSocket."),Os=!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",yd);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 Zr={"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"},Ms=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],en=["DiagnosticReport-update"];function Pi(t){return en.includes(t)}function Ai(t){if(en.includes(t))throw new m(T(`'context.version' is required for '${t}'.`))}var Ds={"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 Vs(t){return Ms.includes(t)}function wi(t){return!!t.endpoint}function tn(t){if(!nr(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(",")),wi(t)&&(o["hub.channel.endpoint"]=t.endpoint),new URLSearchParams(o).toString()}function nr(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(!Zr[o])return!1;return!(wi(t)&&!(typeof t.endpoint=="string"&&t.endpoint.startsWith("ws")))}function xd(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(!Vs(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 vd(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 xd(t,e.resource,r,n)}function Td(t,e){let r=new Map,n=Ds[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.`));vd(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 rn(t,e,r,n){if(!(t&&typeof t=="string"))throw new m(T("Must provide a topic."));if(!Zr[e])throw new m(T(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(Zr).join(", ")}`));if(typeof r!="object")throw new m(T("context must be a context object or array of context objects."));if(en.includes(e)&&!n)throw new m(T(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(r)?r:[r];return Td(e,i),{timestamp:new Date().toISOString(),id:se(),event:{"hub.topic":t,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var rr=class extends ae{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(!nr(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 Sd(t){return JSON.parse(tr(t))}function Oi(t){return t.split(".").length===3}function ir(t){let[e,r,n]=t.split(".");return Sd(r)}function Ii(t){try{return typeof ir(t).login_id=="string"}catch{return!1}}function ki(t){try{let r=ir(t).exp;return typeof r=="number"?r*1e3:void 0}catch{return}}var or=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 _s;_s=Symbol.toStringTag;var $=class{constructor(e){c(this,_s,"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 gt=class{constructor(e,r=""){c(this,"storage");c(this,"prefix","");this.storage=e??globalThis.localStorage??new nn,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?Mt(r):void 0)}},nn=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]}},Mi=class extends gt{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 bd=[WebSocket.CLOSING,WebSocket.CLOSED],yt=class extends ae{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)}},Di=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 yt(e),this.refCount=1,this.subscriptionProps=r?{...r}:void 0}nextGeneration(){return++this.generation}},ar=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 cr))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 yt,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(ve(r,i.subscriptionProps))return i}}getAllCriteriaEmitters(){let e=[];for(let r of this.criteriaEntries.values())for(let n of sr(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!ve(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 sr(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 sr(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 Di(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 sr(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 sr(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 yt(...Array.from(this.criteriaEntries.keys()))),this.masterSubEmitter}async reconnectIfNeeded(){bd.includes(this.getWebSocket().readyState)&&await new Promise(e=>{let r=()=>{this.getWebSocket().removeEventListener("open",r),e()};this.getWebSocket().addEventListener("open",r),this.reconnectWebSocket()})}};function sr(t){return t.bareCriteria?[t.bareCriteria,...t.criteriaWithProps]:t.criteriaWithProps}var Ed=new ee(1e3);async function Rd({resource:t,subscription:e,context:r,getPreviousResource:n,logger:i}){if(!Cd(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=ft(o);if(t.resourceType!==s.resourceType)return i?.debug(`Ignore rest hook for different resourceType (wanted "${s.resourceType}", received "${t.resourceType}")`),!1;if(!await Ls(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(!Zt(t,s))return!1;let d=Wr(e.meta)??[],f=Wr(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 Cd(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 Ls(t,e,r){let n=ce(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,Ed)?.[0]?.value===!0}var on="5.1.30-9b1bd92",Pd="medplum-cli",Bs=V.FHIR_JSON+", */*; q=0.1",Ad="https://api.medplum.com/",wd=1e3,Od=6e4,Id=0,kd=3e5,Md="Binary/",Ns={resourceType:"Device",id:"system",deviceName:[{type:"model-name",name:"System"}]},Dd=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"},qs={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"},Vd={ClientSecretBasic:"client_secret_basic",ClientSecretPost:"client_secret_post",ClientSecretJwt:"client_secret_jwt",PrivateKeyJwt:"private_key_jwt",None:"none"},Ws={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"},cr=class extends ae{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??Ld(),this.storage=r?.storage??new gt(void 0,r?.storagePrefix),this.createPdfImpl=r?.createPdf,this.baseUrl=Gr(r?.baseUrl??Ad),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??kd,this.logLevel=this.initializeLogLevel(r),this.maxRetries=r?.maxRetries??2,this.maxRetryTime=r?.maxRetryTime??2e3,this.cacheTime=r?.cacheTime??(X()?Od:Id),this.cacheTime>0?this.requestCache=new ee(r?.resourceCacheSize??wd):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(he.getSearch()).get("code");if(!i){await this.requestAuthorization(r);return}return this.processCode(i)}signOutWithRedirect(){he.assign(this.logoutUrl)}async signInWithExternalAuth(r,n,i,o,s=!0){let a=o;s&&(a=await this.ensureCodeChallenge(o)),he.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:qs.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=di(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(Us));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 Us(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 Ns;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(Ns));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(Wn(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,17 +41,17 @@
41
41
  expression,
42
42
  target
43
43
  }
44
- }`.replaceAll(/\s+/g," "),u=await this.graphql(a);Ar(u.data.StructureDefinitionList);for(let l of u.data.SearchParameterList)jr(l)})());return this.setCacheEntry(i,s,n),s}requestProfileSchema(r,n){if(!n?.expandProfile&&Bn(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(),{});Ar(u)}else{let a=await this.searchOne("StructureDefinition",{url:r,_sort:"-_lastUpdated"});if(!a){console.warn(`No StructureDefinition found for ${r}!`);return}wr(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=Mi(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=Mi(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(bt(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=ue(r),a=r.subject),r.resourceType==="ServiceRequest"&&(s=r.encounter,a=r.subject),r.resourceType==="Patient"&&(a=ue(r)),this.createResource({resourceType:"Communication",status:"completed",basedOn:[ue(r)],encounter:s,subject:a,sender:o?ue(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:k(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||k(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=Oi(r),this.medplumServer=wi(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(Ed)&&(r=this.fhirUrl(i));let o=n.headers;return o||(o={},n.headers=o),o.Accept||(o.Accept="*/*"),this.addFetchOptionsDefaults(n),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=ue(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=ue(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);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),this.fetchWithRetry(r,n)}get keyValue(){return this.keyValueClient||(this.keyValueClient=new rr(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(On);let u=await this.parseBody(o,a);if(o.status===200&&n.followRedirectOnOk||o.status===201&&n.followRedirectOnCreated){let l=await Ls(o,u);if(l)return this.request(l,{...n,method:"GET",body:void 0})}if(o.status===202&&n.pollStatusOnAccepted){let d=await Ls(o,u)??i.statusUrl;if(d)return this.pollStatus(d,n,i)}if(o.status>=400)throw new m(bt(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||!Id(s))return s;let a=this.getRetryDelay(o),u=n.maxRetryTime??this.maxRetryTime;if(a>u)return s;await Wr(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 kt(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 Wr(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(bt(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&&!Rr(a.response.outcome)?s.reject(new m(a.response.outcome)):s.resolve(a?.resource)}}addFetchOptionsDefaults(r){Object.entries(this.defaultHeaders).forEach(([n,i])=>{this.setRequestHeader(r,n,i)}),this.setRequestHeader(r,"Accept",Fs,!0),this.options.extendedMode!==!1&&this.setRequestHeader(r,"X-Medplum","extended"),r.body&&this.setRequestHeader(r,"Content-Type",V.FHIR_JSON,!0),this.accessToken?this.setRequestHeader(r,"Authorization","Bearer "+this.accessToken):this.basicAuth&&this.setRequestHeader(r,"Authorization","Basic "+this.basicAuth),r.cache||(r.cache="no-cache"),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<Rd?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(qe)}async startPkce(){let r=Qr();this.storage.setString("pkceState",r);let n=Qr().slice(0,128);this.storage.setString("codeVerifier",n);try{let i=await Ei(n);return{codeChallengeMethod:"S256",codeChallenge:ni(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:et.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:et.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:et.ClientCredentials,client_id:r,client_secret:n})}async startJwtBearerLogin(r,n,i){return this.clientId=r,this.fetchTokens({grant_type:et.JwtBearer,client_id:r,assertion:n,scope:i})}async startJwtAssertionLogin(r){return this.fetchTokens({grant_type:et.ClientCredentials,client_assertion_type:Bs.JwtBearer,client_assertion:r})}setBasicAuth(r,n){this.clientId=r,this.clientSecret=n,this.basicAuth=Yt(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,Yr(i),V.FORM_URL_ENCODED))["hub.channel.endpoint"];if(!s)throw new Error("Invalid response!");return i.endpoint=s,i}async fhircastUnsubscribe(r){if(!er(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,Yr(r),V.FORM_URL_ENCODED)}fhircastConnect(r){return new Zt(r)}async fhircastPublish(r,n,i,o){return Ri(n)?this.post(this.fhircastHubUrl,Xr(r,n,i,o),V.JSON):(Ci(n),this.post(this.fhircastHubUrl,Xr(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 it(n)?new m(n):n.error_description?new m(w(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(w("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 ${Yt(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(Ai(n)){let i=tr(n);if(Date.now()>=i.exp*1e3)throw this.clearActiveLogin(),new m(In);if(i.cid){if(i.cid!==this.clientId)throw this.clearActiveLogin(),new m(br)}else if(this.clientId&&i.client_id!==this.clientId)throw this.clearActiveLogin(),new m(br)}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 or(this,ai(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 Ad(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}async function Ls(t,e){let r=t.headers.get("content-location");if(r)return r;let n=t.headers.get("location");if(n)return n;if(it(e)&&e.issue?.[0]?.diagnostics)return e.issue[0].diagnostics}function Ns(t){let e=t.entry?.map(r=>r.resource)??[];return Object.assign(e,{bundle:t})}function wd(t){return C(t)&&"data"in t&&"contentType"in t}function Mi(t,e,r,n){return wd(t)?t:{data:t,filename:e,contentType:r,onProgress:n}}function Od(t){return C(t)&&"docDefinition"in t}function qs(t,e,r,n){return Od(t)?t:{docDefinition:t,filename:e,tableLayouts:r,fonts:n}}function Id(t){return t.status===429||t.status>=500}var kd={aws_ssm_parameter_store:"aws_ssm_parameter_store"};function Md(t,e,r){let n=new rn;Array.isArray(t)||(t=t.entry?.map(i=>i.resource)??[]);for(let i of t)n.addObservation(i);return n.summarize(e,r)}var rn=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(!Dd(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(...Di(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:Vd(this.dataPoints,this.sampling)}}]}}};function Dd(t,e){return!!t.coding?.some(r=>e.coding?.some(n=>r.system===n.system&&r.code===n.code))}function Di(t){return t.data?.split(" ").map(e=>Number.parseFloat(e)*(t.factor??1)+(t.origin.value??0))??[]}function Vd(t,e){if(t.length)return t.map(r=>(r-(e?.origin.value??0))/(e?.factor??1)).join(" ")}function _d(t){let e=[],r=t.effectiveInstant??t.effectiveDateTime??t.effectivePeriod?.start,n=r?Date.parse(r).valueOf():0;t.valueSampledData&&e.push(...Ws(t.valueSampledData,n,t));for(let i of t.component??v)i.valueSampledData&&e.push(...Ws(i.valueSampledData,n,{...t,...i}));return e}function Ws(t,e,r){let n=[],i=Di(t),o=k(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 on({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=Ld(e,r,t,!!i),a=Je(e,".",2)[1];s=Nd(s,o,a),s=Fd(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=nn(h,o?.hiddenFields);d[h]={hidden:b,readonly:b||nn(h,o?.readonlyFields)}}return d[h]}}}return{path:e,elements:s,elementsByPath:u,profileUrl:n??t?.profileUrl,debugMode:i,getExtendedProps:l,accessPolicyResource:o}}function Ld(t,e,r,n){let i=Object.create(null);if(r)for(let[s,a]of Object.entries(r.elementsByPath)){let u=Te(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 Nd(t,e,r){if(!e?.hiddenFields?.length)return t;let n=r?r+".":"";return Object.fromEntries(Object.entries(t).filter(([i])=>!nn(n+i,e.hiddenFields)))}function Fd(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))nn(i+o,e.readonlyFields)?n[o]={...s,readonly:!0}:n[o]=s;return n}function nn(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 Vi(t){return t.type!==void 0&&t.type.length>0}function Ud(t,e,r,n){let i=$e(t,e.path,{profileUrl:n});if(i){let o=r.typeSchema?.elements??r.elements;return i.some(s=>Dr(s,e,r,o))??!1}return console.assert(!1,"getNestedProperty[%s] in isDiscriminatorComponentMatch missed",e.path),!1}function _i(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=>Ud(o,s,i,i.typeSchema?.url??n)))return i.name}}var ar=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=on({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(!le(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=Bd(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);le(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(!Vi(o))continue;let s=o.type.find(a=>le(a.profile))?.profile?.[0];if(le(s)){let a=qn(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;le(s)&&(o=on({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 Bd(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 sn="__sliceName";function qd(t,e){let r=new an(t,t.resourceType,"resource");return new ar(e,r).crawlResource(),r.getDefaultValue()}function Wd(t,e,r){for(let[n,i]of Object.entries(e)){if(r===void 0||r===n){cr(t,n,i,e);continue}let o=Te(r,n);o!==void 0&&cr(t,o,i,e)}return t}function $d(t,e,r,n){let i=new an([{[sn]:e.name}],e.path,"element");return new ar(n,i).crawlSlice(t,e,r),i.getDefaultValue()[0]}var an=class{constructor(e,r,n){c(this,"rootValue");c(this,"schemaStack");c(this,"valueStack");this.schemaStack=[],this.valueStack=[],this.rootValue=Me(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=Te(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=Te(n.path,o),d=Array.isArray(u)?u:[u];for(let f of d){jd(f,s,r,n.elements,l),cr(f,s,r,n.elements);let h=Ni(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=Te(this.value.path,e);if(o===void 0)throw new Error(`Expected ${e} to be prefixed by ${this.value.path}`);let s=Te(n.path,this.value.path);for(let a of this.value.values){let u=Ni(a,o,n.elements,s);if(Array.isArray(u))for(let l=u.length-1;l>=0;l--){let d=u[l];le(d)||u.splice(l,1)}O(u)&&Li(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[sn]??_i(o,[r],n.discriminator,this.schema.url))===r.name&&i.push(o);for(let o=i.length;o<r.min;o++)if(qr(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];sn in i&&delete i[sn]}}getDefaultValue(){return this.rootValue}};function jd(t,e,r,n,i){let o=Ni(t,e,n,i);r.min>0&&o===void 0&&qr(r.type[0].code)&&(r.isArray?Li(t,[Object.create(null)],e,r):Li(t,Object.create(null),e,r))}function Li(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 Ni(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 cr(t,e,r,n){if(!(r.fixed||r.pattern))return t;if(Array.isArray(t))return t.map(a=>cr(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]=$s(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 $s(t,e){if(Array.isArray(e)&&(Array.isArray(t)||t===void 0))return(t?.length??0)>0?t:Me(e);if(C(e)&&(C(t)&&!Array.isArray(t)||t===void 0)){let r=Me(t)??Object.create(null);for(let n of Object.keys(e))r[n]=$s(r[n],e[n]);return r}return t}function Fi(t,e){if(!t.group)throw new m(w("ConceptMap does not specify a mapping group","ConceptMap.group"));let r=js(e),n=Hd(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 js(t){let e=Object.create(null);if(t.code&&!t.coding&&!t.codeableConcept){if(!t.system)throw new m(w("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??""]=te(e[r??""],n));else throw t.code||t.coding||t.codeableConcept?new m(w("Ambiguous input: multiple source codings provided")):new m(w("Source Coding (system + code) must be specified"));return e}function Hd(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=Gd(i,o)),s&&r.push(...s)}return r}function Gd(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 Qd=[...zt,"->","<<",">>","=="];function Hs(t){return new Ce(t,Qt,Qd).tokenize()}var zd={"-":"disjoint","==":"equal"},Ui=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 ne?(e.transform=r.name,e.parameter=r.args?.map(Gs)):r instanceof G||r instanceof F?(e.transform="copy",e.parameter=[Gs(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=zd[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 Gs(t){if(t instanceof F)return{valueId:t.name};if(t instanceof G)return Jd(t);throw new Error(`Unknown parameter atom type: ${t.constructor.name} (${t.toString()})`)}function Jd(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 Kd=dt().registerInfix("->",{precedence:S.Arrow}).registerInfix(";",{precedence:S.Semicolon});function Yd(t){let e=Kd.construct(Hs(t));return e.removeComments(),new Ui(e).parse()}var cn=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 Xd(t,e,r=new cn){return Zd({root:t,transformMaps:r},t,e)}function Zd(t,e,r){return ep(t,e),zs(t,e),qi(t,e.group[0],r)}function ep(t,e){let r=ln(t);if(r&&e.import)for(let n of e.import){let i=r.get("StructureMap",n);for(let o of i)zs(t,o)}}function zs(t,e){let r=ln(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)un(t,n.name,{type:"StructureMapGroup",value:n})}function qi(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)ur(o,l.name,r[a++]);for(let l of i){let d=r[a++]??{type:l.type??"BackboneElement",value:{}};ur(o,l.name,d),s.push(d)}let u={root:t.root,parent:t,variables:o};for(let l of e.rule??v)Js(u,l);return s}function Js(t,e){e.source&&Ks(t,e,0)}function Ks(t,e,r){let n=e.source[r];for(let i of ip(t,n))un(t,"_",i),n.variable&&un(t,n.variable,i),r<e.source.length-1?Ks(t,e,r+1):tp(t,e)}function tp(t,e){if(!rp(t,e)){for(let r of e.target??v)Ys(t,r);for(let r of e.rule??v)Js(t,r);for(let r of e.dependent??v)mp(t,r)}}function rp(t,e){if(e.target?.length!==1||e.target[0].transform||e.rule||e.dependent)return!1;let r=Ne(t,"_");if(Array.isArray(r)&&(r=r[0]),!r)return!1;let n=np(t,r);if(!n)return Ys(t,{...e.target[0],transform:"copy",parameter:[{valueId:"_"}]}),!0;let i=e.target[0],o=Ne(t,i.context),s=o.value[i.element],a=Zs(o,i.element)||Array.isArray(s),u={root:t.root,parent:t,variables:{}},l=qi(u,n,[r]);return Xs(t,i,o,l,a,s),!0}function np(t,e){let r=t;for(;r;){if(r.variables){for(let n of Object.values(r.variables))for(let i of Bi(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 ip(t,e){let r=Ne(t,e.context);if(!r)return[];let n=e.element;if(!n)return[r];let i=I(n,[r]);if(!i||i.length===0)return[];if(e.condition&&!Qs(r,{[e.variable]:i[0]},e.condition))return[];if(e.check&&!Qs(r,{[e.variable]:i[0]},e.check))throw new Error("Check failed: "+e.check);return e.listMode&&(i=op(e,i)),i}function Qs(t,e,r){return j(I(r,[t],e))}function op(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 Ys(t,e){let r=Ne(t,e.context);if(!r)throw new Error("Target not found: "+e.context);let n=r.value[e.element],i,o=Zs(r,e.element)||Array.isArray(n);if(e.transform)switch(e.transform){case"append":i=sp(t,e);break;case"cast":i=ap(t,e);break;case"cc":i=cp(t,e);break;case"copy":i=up(t,e);break;case"create":i=lp(t,e);break;case"evaluate":i=dp(t,e);break;case"translate":i=pp(t,e);break;case"truncate":i=fp(t,e);break;case"uuid":i=[{type:"string",value:ie()}];break;default:throw new Error(`Unsupported transform: ${e.transform}`)}else{let s=ea(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)]}Xs(t,e,r,i,o,n)}function Xs(t,e,r,n,i,o){if(n.length!==0){if(i){o||(o=[],ur(r.value,e.element,o));for(let s of n)o.push(s.value)}else ur(r.value,e.element,n[0].value);e.variable&&un(t,e.variable,hp(n))}}function Zs(t,e){return ea(t,e)?.isArray}function ea(t,e){return ke(t.type)?.elements?.[e]}function sp(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 ap(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 up(t,e){return e.parameter.flatMap(r=>Q(t,r))}function lp(t,e){let r={};return e.parameter&&e.parameter.length>0&&(r.resourceType=Q(t,e.parameter?.[0])?.[0]?.value),[E(r)]}function dp(t,e){let n=Q(t,e.parameter?.[0])[0].value;return I(n,[],ta(t))}function pp(t,e){let r=e.parameter.flatMap(u=>Q(t,u)),n=r[0].value,i=r[1].value,s=ln(t)?.get("ConceptMap",i)[0];if(!s)throw new Error("ConceptMap not found: "+i);let a=Fi(s,{system:s.group?.[0]?.source,code:n});return[E(a.match?.[0]?.concept?.code)]}function fp(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 mp(t,e){let r=Ne(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=Ne(t,s);if(!a)throw new Error("Dependent variable not found: "+s);i.push(a)}let o={root:t.root,parent:t,variables:{}};qi(o,r.value,i)}function ln(t){if(t.transformMaps)return t.transformMaps;if(t.parent)return ln(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=Bi(n),n.length===1&&n[0].type==="id"){let i=Ne(t,n[0].value);if(!i)throw new Error("Variable not found: "+n[0].value);return Bi(i)}return n}function Ne(t,e){let r=t.variables?.[e];if(r)return r;if(t.parent)return Ne(t.parent,e)}function ta(t,e={}){if(t.parent&&ta(t.parent,e),t.variables)for(let[r,n]of Object.entries(t.variables))e[r]=n,e["%"+r]=n;return e}function un(t,e,r){t.variables||(t.variables={}),ur(t.variables,e,r)}function ur(t,e,r){if(e==="__proto__"||e==="constructor"||e==="prototype")throw new Error("Invalid key: "+e);t[e]=r}function Bi(t){return Array.isArray(t)?t:[t]}function hp(t){return t.length===1?t[0]:t}var tt=Object.prototype.hasOwnProperty;function lr(t){return t===void 0?"undefined":t===null?"null":Array.isArray(t)?"array":typeof t}function gp(t){return t&&typeof t=="object"}function yt(t){if(!gp(t))return t;if(t.constructor===Array){let r=t.length,n=new Array(r);for(let i=0;i<r;i++)n[i]=yt(t[i]);return n}if(t.constructor===Date)return new Date(+t);let e={};for(let r in t)tt.call(t,r)&&(e[r]=yt(t[r]));return e}function ji({op:t}){return t==="remove"||t==="replace"||t==="copy"||t==="move"}function $i(t,e){let r=[];for(let n in t)tt.call(t,n)&&t[n]!==void 0&&!(tt.call(e,n)&&e[n]!==void 0)&&r.push(n);return r}function yp(t){let e=t.length,r={};for(let n=0;n<e;n++){let i=t[n];for(let o in i)tt.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 xp(t,e){let r=[];for(let n in t)tt.call(t,n)&&t[n]!==void 0&&tt.call(e,n)&&e[n]!==void 0&&r.push(n);return r}function vp(t){return t.op==="add"}function Tp(t){return t.op==="remove"}function Wi(t,e){return{operations:t.operations.concat(e),cost:t.cost+1}}function ra(t,e,r,n=Pe){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 we=[];if(f>0){let Ue=s(f-1,h),Be={op:"remove",index:f-1};we.push(Wi(Ue,Be))}if(h>0){let Ue=s(f,h-1),Be={op:"add",index:f-1,value:e[h-1]};we.push(Wi(Ue,Be))}if(f>0&&h>0){let Ue=s(f-1,h-1),Be={op:"replace",index:f-1,original:t[f-1],value:e[h-1]};we.push(Wi(Ue,Be))}P=we.sort((Ue,Be)=>Ue.cost-Be.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(vp(b)){let P=b.index+1+h,we=P<a+h?String(P):"-",mo={op:b.op,path:r.add(we).toString(),value:b.value};return[f.concat(mo),h+1]}else if(Tp(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)),we=n(b.original,b.value,P);return[f.concat(...we),h]}},[[],0]);return d}function na(t,e,r,n=Pe){let i=[];return $i(t,e).forEach(o=>{i.push({op:"remove",path:r.add(o).toString()})}),$i(e,t).forEach(o=>{i.push({op:"add",path:r.add(o).toString(),value:e[o]})}),xp(t,e).forEach(o=>{i.push(...n(t[o],e[o],r.add(o)))}),i}function Pe(t,e,r,n=Pe){if(t===e)return[];let i=lr(t),o=lr(e);return i==="array"&&o==="array"?ra(t,e,r,n):i==="object"&&o==="object"?na(t,e,r,n):[{op:"replace",path:r.toString(),value:e}]}function ia(t){return t.replace(/~1/g,"/").replace(/~0/g,"~")}function oa(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(ia);if(r[0]!=="")throw new Error(`Invalid JSON Pointer: ${e}`);return new t(r)}toString(){return this.tokens.map(oa).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"}},dn=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 Hi(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 sa(t,e){if(Array.isArray(t)){let r=parseInt(e,10);t.splice(r,1)}else delete t[e]}function dr(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&&lr(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):(Hi(i.parent,i.key,yt(e.value)),null)}function fn(t,e,r){let n=M.fromJSON(e.path).evaluate(t);return n.value===void 0?new z(e.path):(sa(n.parent,n.key),null)}function mn(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]=yt(e.value),null}function hn(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):(sa(n.parent,n.key),Hi(i.parent,i.key,n.value),null)}function aa(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):(Hi(i.parent,i.key,yt(n.value)),null)}function ca(t,e,r){let n=M.fromJSON(e.path).evaluate(t);return Pe(n.value,e.value,new M).length?new dn(n.value,e.value):null}var pn=class extends Error{constructor(r){super(`Invalid operation: ${r.op}`);c(this,"operation");this.operation=r,this.name="InvalidOperationError"}};function Gi(t,e,r){switch(e.op){case"add":return dr(t,e,r);case"remove":return fn(t,e,r);case"replace":return mn(t,e,r);case"move":return hn(t,e,r);case"copy":return aa(t,e,r);case"test":return ca(t,e,r);default:return new pn(e)}}function Sp(t,e,r){return e.map(n=>Gi(t,n,r))}function bp(t){function e(r,n,i){let o=t(r,n,i);return Array.isArray(o)?o:Pe(r,n,i,e)}return e}function Ep(t,e,r){let n=new M;return(r?bp(r):Pe)(t,e,n)}function ua(t,e){let r=M.fromJSON(e).evaluate(t);if(r!==void 0)return{op:"test",path:e,value:r.value}}function Rp(t,e){let r=new Array;return e.filter(ji).forEach(n=>{let i=ua(t,n.path);if(i&&r.push(i),"from"in n){let o=ua(t,n.from);o&&r.push(o)}}),r}var Cp=Object.freeze({implicitArrayCreation:!0});function Pp(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 Ap(t,e){for(let r of e){let n=I(r.path,[t]);switch(r.type){case"add":{let i=Qi(n,r);if(!C(i?.value))throw new Error(`Failed to resolve base object for add operation at path '${r.path}'`);if(pr(i,r),!r.name)throw new Error(`No name present for add operation at path '${r.path}'`);let o=M.fromJSON(je(i.path));o.push(r.name),fi(t.type,`${i.path}.${r.name}`)?.isArray&&o.push("-"),dr(t.value,{op:"add",path:o.toString(),value:r.value.value},Cp);break}case"replace":{let i=Qi(n,r);if(!i)throw new Error(`Failed to resolve target value for replace operation at path '${r.path}'`);pr(i,r),mn(t.value,{op:"replace",path:je(i.path),value:r.value.value});break}case"move":{let i=la(n,r),o=M.fromJSON(je(i));hn(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=la(n,r),o=M.fromJSON(je(i));o.push(r.index.toString()),dr(t.value,{op:"add",path:o.toString(),value:r.value.value});break}case"delete":{let i=Qi(n,r);i&&(pr(i,r),fn(t.value,{op:"remove",path:je(i.path)}))}}}}function pr(t,e){if(!("path"in t))throw new Error(`Cannot resolve pointer for value at path '${e.path}'`)}function Qi(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 wp=/\[(?<index>\d+)\]$/;function zi(t){let e=wp.exec(t)?.groups?.index;return e?Number.parseInt(e,10):-1}function la(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}'`);pr(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(pr(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&&!Ji(e.index,t))throw new Error(`Index out of bounds for ${e.type} operation: ${e.index}`);if("source"in e&&!Ji(e.source,t))throw new Error(`Source index out of bounds for ${e.type} operation: ${e.source}`);if("destination"in e&&!Ji(e.destination,t))throw new Error(`Destination index out of bounds for ${e.type} operation: ${e.destination}`);return n}function Ji(t,e){return t>=0&&t<=e.length}var Op=" ".repeat(2),Ki=class{constructor(e=Op,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);Ir(u.data.StructureDefinitionList);for(let l of u.data.SearchParameterList)Qr(l)})());return this.setCacheEntry(i,s,n),s}requestProfileSchema(r,n){if(!n?.expandProfile&&$n(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(),{});Ir(u)}else{let a=await this.searchOne("StructureDefinition",{url:r,_sort:"-_lastUpdated"});if(!a){console.warn(`No StructureDefinition found for ${r}!`);return}kr(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=Vi(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=Vi(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(Et(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=$s(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=ne(r),a=r.subject),r.resourceType==="ServiceRequest"&&(s=r.encounter,a=r.subject),r.resourceType==="Patient"&&(a=ne(r)),this.createResource({resourceType:"Communication",status:"completed",basedOn:[ne(r)],encounter:s,subject:a,sender:o?ne(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=ki(r),this.medplumServer=Ii(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(Md)&&(r=this.fhirUrl(i));let o=n.headers;return o||(o={},n.headers=o),o.Accept||(o.Accept="*/*"),this.addFetchOptionsDefaults(n),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=ne(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=ne(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);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),this.fetchWithRetry(r,n)}get keyValue(){return this.keyValueClient||(this.keyValueClient=new or(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(Mn);let u=await this.parseBody(o,a);if(o.status===200&&n.followRedirectOnOk||o.status===201&&n.followRedirectOnCreated){let l=await Fs(o,u);if(l)return this.request(l,{...n,method:"GET",body:void 0})}if(o.status===202&&n.pollStatusOnAccepted){let d=await Fs(o,u)??i.statusUrl;if(d)return this.pollStatus(d,n,i)}if(o.status>=400)throw new m(Et(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||!Ud(s))return s;let a=this.getRetryDelay(o),u=n.maxRetryTime??this.maxRetryTime;if(a>u)return s;await Hr(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 Dt(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 Hr(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(Et(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&&!Ar(a.response.outcome)?s.reject(new m(a.response.outcome)):s.resolve(a?.resource)}}addFetchOptionsDefaults(r){Object.entries(this.defaultHeaders).forEach(([n,i])=>{this.setRequestHeader(r,n,i)}),this.setRequestHeader(r,"Accept",Bs,!0),this.options.extendedMode!==!1&&this.setRequestHeader(r,"X-Medplum","extended"),r.body&&this.setRequestHeader(r,"Content-Type",V.FHIR_JSON,!0),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<Dd?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=Kr();this.storage.setString("pkceState",r);let n=Kr().slice(0,128);this.storage.setString("codeVerifier",n);try{let i=await Ci(n);return{codeChallengeMethod:"S256",codeChallenge:si(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??he.getOrigin()),i.searchParams.set("code_challenge_method",n.codeChallengeMethod),i.searchParams.set("code_challenge",n.codeChallenge),i.searchParams.set("scope",n.scope??"openid profile"),he.assign(i.toString())}processCode(r,n){let i={grant_type:tt.AuthorizationCode,code:r,client_id:n?.clientId??this.clientId??"",redirect_uri:n?.redirectUri??he.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:Ws.JwtBearer,client_assertion:r})}setBasicAuth(r,n){this.clientId=r,this.clientSecret=n,this.basicAuth=er(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,tn(i),V.FORM_URL_ENCODED))["hub.channel.endpoint"];if(!s)throw new Error("Invalid response!");return i.endpoint=s,i}async fhircastUnsubscribe(r){if(!nr(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,tn(r),V.FORM_URL_ENCODED)}fhircastConnect(r,n){return new rr(r,n)}async fhircastPublish(r,n,i,o){return Pi(n)?this.post(this.fhircastHubUrl,rn(r,n,i,o),V.JSON):(Ai(n),this.post(this.fhircastHubUrl,rn(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(w(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(w("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 ${er(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(Oi(n)){let i=ir(n);if(Date.now()>=i.exp*1e3)throw this.clearActiveLogin(),new m(Dn);if(i.cid){if(i.cid!==this.clientId)throw this.clearActiveLogin(),new m(Cr)}else if(this.clientId&&i.client_id!==this.clientId)throw this.clearActiveLogin(),new m(Cr)}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)he.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)?he.reload():i?this.setAccessToken(i.accessToken,i.refreshToken):this.clear()}})}catch{}}getSubscriptionManager(){return this.subscriptionManager||(this.subscriptionManager=new ar(this,li(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 Ld(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}async function Fs(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 Us(t){let e=t.entry?.map(r=>r.resource)??[];return Object.assign(e,{bundle:t})}function Nd(t){return C(t)&&"data"in t&&"contentType"in t}function Vi(t,e,r,n){return Nd(t)?t:{data:t,filename:e,contentType:r,onProgress:n}}function Fd(t){return C(t)&&"docDefinition"in t}function $s(t,e,r,n){return Fd(t)?t:{docDefinition:t,filename:e,tableLayouts:r,fonts:n}}function Ud(t){return t.status===429||t.status>=500}var Bd={aws_ssm_parameter_store:"aws_ssm_parameter_store"};function qd(t,e,r){let n=new sn;Array.isArray(t)||(t=t.entry?.map(i=>i.resource)??[]);for(let i of t)n.addObservation(i);return n.summarize(e,r)}var sn=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(!Wd(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(..._i(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:$d(this.dataPoints,this.sampling)}}]}}};function Wd(t,e){return!!t.coding?.some(r=>e.coding?.some(n=>r.system===n.system&&r.code===n.code))}function _i(t){return t.data?.split(" ").map(e=>Number.parseFloat(e)*(t.factor??1)+(t.origin.value??0))??[]}function $d(t,e){if(t.length)return t.map(r=>(r-(e?.origin.value??0))/(e?.factor??1)).join(" ")}function jd(t){let e=[],r=t.effectiveInstant??t.effectiveDateTime??t.effectivePeriod?.start,n=r?Date.parse(r).valueOf():0;t.valueSampledData&&e.push(...js(t.valueSampledData,n,t));for(let i of t.component??v)i.valueSampledData&&e.push(...js(i.valueSampledData,n,{...t,...i}));return e}function js(t,e,r){let n=[],i=_i(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 cn({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=Hd(e,r,t,!!i),a=Je(e,".",2)[1];s=Gd(s,o,a),s=Qd(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=an(h,o?.hiddenFields);d[h]={hidden:b,readonly:b||an(h,o?.readonlyFields)}}return d[h]}}}return{path:e,elements:s,elementsByPath:u,profileUrl:n??t?.profileUrl,debugMode:i,getExtendedProps:l,accessPolicyResource:o}}function Hd(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 Gd(t,e,r){if(!e?.hiddenFields?.length)return t;let n=r?r+".":"";return Object.fromEntries(Object.entries(t).filter(([i])=>!an(n+i,e.hiddenFields)))}function Qd(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))an(i+o,e.readonlyFields)?n[o]={...s,readonly:!0}:n[o]=s;return n}function an(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 Li(t){return t.type!==void 0&&t.type.length>0}function zd(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=>Lr(s,e,r,o))??!1}return console.assert(!1,"getNestedProperty[%s] in isDiscriminatorComponentMatch missed",e.path),!1}function Ni(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=>zd(o,s,i,i.typeSchema?.url??n)))return i.name}}var ur=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=cn({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(!le(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=Jd(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);le(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(!Li(o))continue;let s=o.type.find(a=>le(a.profile))?.profile?.[0];if(le(s)){let a=jn(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;le(s)&&(o=cn({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 Jd(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 un="__sliceName";function Kd(t,e){let r=new ln(t,t.resourceType,"resource");return new ur(e,r).crawlResource(),r.getDefaultValue()}function Yd(t,e,r){for(let[n,i]of Object.entries(e)){if(r===void 0||r===n){lr(t,n,i,e);continue}let o=Se(r,n);o!==void 0&&lr(t,o,i,e)}return t}function Xd(t,e,r,n){let i=new ln([{[un]:e.name}],e.path,"element");return new ur(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 l=Se(n.path,o),d=Array.isArray(u)?u:[u];for(let f of d){Zd(f,s,r,n.elements,l),lr(f,s,r,n.elements);let h=Ui(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=Ui(a,o,n.elements,s);if(Array.isArray(u))for(let l=u.length-1;l>=0;l--){let d=u[l];le(d)||u.splice(l,1)}O(u)&&Fi(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[un]??Ni(o,[r],n.discriminator,this.schema.url))===r.name&&i.push(o);for(let o=i.length;o<r.min;o++)if(jr(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];un in i&&delete i[un]}}getDefaultValue(){return this.rootValue}};function Zd(t,e,r,n,i){let o=Ui(t,e,n,i);r.min>0&&o===void 0&&jr(r.type[0].code)&&(r.isArray?Fi(t,[Object.create(null)],e,r):Fi(t,Object.create(null),e,r))}function Fi(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 Ui(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 lr(t,e,r,n){if(!(r.fixed||r.pattern))return t;if(Array.isArray(t))return t.map(a=>lr(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]=Hs(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 Hs(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]=Hs(r[n],e[n]);return r}return t}function Bi(t,e){if(!t.group)throw new m(w("ConceptMap does not specify a mapping group","ConceptMap.group"));let r=Gs(e),n=ep(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 Gs(t){let e=Object.create(null);if(t.code&&!t.coding&&!t.codeableConcept){if(!t.system)throw new m(w("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??""]=re(e[r??""],n));else throw t.code||t.coding||t.codeableConcept?new m(w("Ambiguous input: multiple source codings provided")):new m(w("Source Coding (system + code) must be specified"));return e}function ep(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=tp(i,o)),s&&r.push(...s)}return r}function tp(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 rp=[...Yt,"->","<<",">>","=="];function Qs(t){return new Pe(t,Kt,rp).tokenize()}var np={"-":"disjoint","==":"equal"},qi=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 oe?(e.transform=r.name,e.parameter=r.args?.map(zs)):r instanceof G||r instanceof F?(e.transform="copy",e.parameter=[zs(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=np[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 zs(t){if(t instanceof F)return{valueId:t.name};if(t instanceof G)return ip(t);throw new Error(`Unknown parameter atom type: ${t.constructor.name} (${t.toString()})`)}function ip(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 op=pt().registerInfix("->",{precedence:S.Arrow}).registerInfix(";",{precedence:S.Semicolon});function sp(t){let e=op.construct(Qs(t));return e.removeComments(),new qi(e).parse()}var dn=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 ap(t,e,r=new dn){return cp({root:t,transformMaps:r},t,e)}function cp(t,e,r){return up(t,e),Ks(t,e),$i(t,e.group[0],r)}function up(t,e){let r=fn(t);if(r&&e.import)for(let n of e.import){let i=r.get("StructureMap",n);for(let o of i)Ks(t,o)}}function Ks(t,e){let r=fn(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)pn(t,n.name,{type:"StructureMapGroup",value:n})}function $i(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)dr(o,l.name,r[a++]);for(let l of i){let d=r[a++]??{type:l.type??"BackboneElement",value:{}};dr(o,l.name,d),s.push(d)}let u={root:t.root,parent:t,variables:o};for(let l of e.rule??v)Ys(u,l);return s}function Ys(t,e){e.source&&Xs(t,e,0)}function Xs(t,e,r){let n=e.source[r];for(let i of fp(t,n))pn(t,"_",i),n.variable&&pn(t,n.variable,i),r<e.source.length-1?Xs(t,e,r+1):lp(t,e)}function lp(t,e){if(!dp(t,e)){for(let r of e.target??v)Zs(t,r);for(let r of e.rule??v)Ys(t,r);for(let r of e.dependent??v)Ep(t,r)}}function dp(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 Zs(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=ta(o,i.element)||Array.isArray(s),u={root:t.root,parent:t,variables:{}},l=$i(u,n,[r]);return ea(t,i,o,l,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 Wi(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 fp(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&&!Js(r,{[e.variable]:i[0]},e.condition))return[];if(e.check&&!Js(r,{[e.variable]:i[0]},e.check))throw new Error("Check failed: "+e.check);return e.listMode&&(i=mp(e,i)),i}function Js(t,e,r){return j(k(r,[t],e))}function mp(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 Zs(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=ta(r,e.element)||Array.isArray(n);if(e.transform)switch(e.transform){case"append":i=hp(t,e);break;case"cast":i=gp(t,e);break;case"cc":i=yp(t,e);break;case"copy":i=xp(t,e);break;case"create":i=vp(t,e);break;case"evaluate":i=Tp(t,e);break;case"translate":i=Sp(t,e);break;case"truncate":i=bp(t,e);break;case"uuid":i=[{type:"string",value:se()}];break;default:throw new Error(`Unsupported transform: ${e.transform}`)}else{let s=ra(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)]}ea(t,e,r,i,o,n)}function ea(t,e,r,n,i,o){if(n.length!==0){if(i){o||(o=[],dr(r.value,e.element,o));for(let s of n)o.push(s.value)}else dr(r.value,e.element,n[0].value);e.variable&&pn(t,e.variable,Rp(n))}}function ta(t,e){return ra(t,e)?.isArray}function ra(t,e){return Me(t.type)?.elements?.[e]}function hp(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 gp(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 yp(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 xp(t,e){return e.parameter.flatMap(r=>Q(t,r))}function vp(t,e){let r={};return e.parameter&&e.parameter.length>0&&(r.resourceType=Q(t,e.parameter?.[0])?.[0]?.value),[E(r)]}function Tp(t,e){let n=Q(t,e.parameter?.[0])[0].value;return k(n,[],na(t))}function Sp(t,e){let r=e.parameter.flatMap(u=>Q(t,u)),n=r[0].value,i=r[1].value,s=fn(t)?.get("ConceptMap",i)[0];if(!s)throw new Error("ConceptMap not found: "+i);let a=Bi(s,{system:s.group?.[0]?.source,code:n});return[E(a.match?.[0]?.concept?.code)]}function bp(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 Ep(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:{}};$i(o,r.value,i)}function fn(t){if(t.transformMaps)return t.transformMaps;if(t.parent)return fn(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=Wi(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 Wi(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 na(t,e={}){if(t.parent&&na(t.parent,e),t.variables)for(let[r,n]of Object.entries(t.variables))e[r]=n,e["%"+r]=n;return e}function pn(t,e,r){t.variables||(t.variables={}),dr(t.variables,e,r)}function dr(t,e,r){if(e==="__proto__"||e==="constructor"||e==="prototype")throw new Error("Invalid key: "+e);t[e]=r}function Wi(t){return Array.isArray(t)?t:[t]}function Rp(t){return t.length===1?t[0]:t}var rt=Object.prototype.hasOwnProperty;function pr(t){return t===void 0?"undefined":t===null?"null":Array.isArray(t)?"array":typeof t}function Cp(t){return t&&typeof t=="object"}function xt(t){if(!Cp(t))return t;if(t.constructor===Array){let r=t.length,n=new Array(r);for(let i=0;i<r;i++)n[i]=xt(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]=xt(t[r]));return e}function Gi({op:t}){return t==="remove"||t==="replace"||t==="copy"||t==="move"}function Hi(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 Pp(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 Ap(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 Op(t){return t.op==="remove"}function ji(t,e){return{operations:t.operations.concat(e),cost:t.cost+1}}function ia(t,e,r,n=Ae){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(ji(Be,qe))}if(h>0){let Be=s(f,h-1),qe={op:"add",index:f-1,value:e[h-1]};Oe.push(ji(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(ji(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(wp(b)){let P=b.index+1+h,Oe=P<a+h?String(P):"-",go={op:b.op,path:r.add(Oe).toString(),value:b.value};return[f.concat(go),h+1]}else if(Op(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 oa(t,e,r,n=Ae){let i=[];return Hi(t,e).forEach(o=>{i.push({op:"remove",path:r.add(o).toString()})}),Hi(e,t).forEach(o=>{i.push({op:"add",path:r.add(o).toString(),value:e[o]})}),Ap(t,e).forEach(o=>{i.push(...n(t[o],e[o],r.add(o)))}),i}function Ae(t,e,r,n=Ae){if(t===e)return[];let i=pr(t),o=pr(e);return i==="array"&&o==="array"?ia(t,e,r,n):i==="object"&&o==="object"?oa(t,e,r,n):[{op:"replace",path:r.toString(),value:e}]}function sa(t){return t.replace(/~1/g,"/").replace(/~0/g,"~")}function aa(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(sa);if(r[0]!=="")throw new Error(`Invalid JSON Pointer: ${e}`);return new t(r)}toString(){return this.tokens.map(aa).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"}},mn=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 Qi(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 ca(t,e){if(Array.isArray(t)){let r=parseInt(e,10);t.splice(r,1)}else delete t[e]}function fr(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&&pr(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):(Qi(i.parent,i.key,xt(e.value)),null)}function gn(t,e,r){let n=M.fromJSON(e.path).evaluate(t);return n.value===void 0?new z(e.path):(ca(n.parent,n.key),null)}function yn(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]=xt(e.value),null}function xn(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):(ca(n.parent,n.key),Qi(i.parent,i.key,n.value),null)}function ua(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):(Qi(i.parent,i.key,xt(n.value)),null)}function la(t,e,r){let n=M.fromJSON(e.path).evaluate(t);return Ae(n.value,e.value,new M).length?new mn(n.value,e.value):null}var hn=class extends Error{constructor(r){super(`Invalid operation: ${r.op}`);c(this,"operation");this.operation=r,this.name="InvalidOperationError"}};function zi(t,e,r){switch(e.op){case"add":return fr(t,e,r);case"remove":return gn(t,e,r);case"replace":return yn(t,e,r);case"move":return xn(t,e,r);case"copy":return ua(t,e,r);case"test":return la(t,e,r);default:return new hn(e)}}function Ip(t,e,r){return e.map(n=>zi(t,n,r))}function kp(t){function e(r,n,i){let o=t(r,n,i);return Array.isArray(o)?o:Ae(r,n,i,e)}return e}function Mp(t,e,r){let n=new M;return(r?kp(r):Ae)(t,e,n)}function da(t,e){let r=M.fromJSON(e).evaluate(t);if(r!==void 0)return{op:"test",path:e,value:r.value}}function Dp(t,e){let r=new Array;return e.filter(Gi).forEach(n=>{let i=da(t,n.path);if(i&&r.push(i),"from"in n){let o=da(t,n.from);o&&r.push(o)}}),r}var Vp=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 Lp(t,e){for(let r of e){let n=k(r.path,[t]);switch(r.type){case"add":{let i=Ji(n,r);if(!C(i?.value))throw new Error(`Failed to resolve base object for add operation at path '${r.path}'`);if(mr(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),hi(t.type,`${i.path}.${r.name}`)?.isArray&&o.push("-"),fr(t.value,{op:"add",path:o.toString(),value:r.value.value},Vp);break}case"replace":{let i=Ji(n,r);if(!i)throw new Error(`Failed to resolve target value for replace operation at path '${r.path}'`);mr(i,r),yn(t.value,{op:"replace",path:He(i.path),value:r.value.value});break}case"move":{let i=pa(n,r),o=M.fromJSON(He(i));xn(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=pa(n,r),o=M.fromJSON(He(i));o.push(r.index.toString()),fr(t.value,{op:"add",path:o.toString(),value:r.value.value});break}case"delete":{let i=Ji(n,r);i&&(mr(i,r),gn(t.value,{op:"remove",path:He(i.path)}))}}}}function mr(t,e){if(!("path"in t))throw new Error(`Cannot resolve pointer for value at path '${e.path}'`)}function Ji(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 Np=/\[(?<index>\d+)\]$/;function Ki(t){let e=Np.exec(t)?.groups?.index;return e?Number.parseInt(e,10):-1}function pa(t,e){if(Ki(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}'`);mr(t[0],e);let r=t[0].path;if(Ki(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(mr(o,e),!o.path.startsWith(n))throw new Error(`Cannot patch heterogeneous collection for ${e.type} operation at path '${e.path}'`);if(Ki(o.path)!==i)throw new Error(`Cannot patch misordered collection for ${e.type} operation at path '${e.path}'`)}if("index"in e&&!Yi(e.index,t))throw new Error(`Index out of bounds for ${e.type} operation: ${e.index}`);if("source"in e&&!Yi(e.source,t))throw new Error(`Source index out of bounds for ${e.type} operation: ${e.source}`);if("destination"in e&&!Yi(e.destination,t))throw new Error(`Destination index out of bounds for ${e.type} operation: ${e.destination}`);return n}function Yi(t,e){return t>=0&&t<=e.length}var Fp=" ".repeat(2),Xi=class{constructor(e=Fp,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
- `);else{let n=!0;for(let i of da(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(`
47
+ `);else{let n=!0;for(let i of fa(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(`
48
48
  `),n=!1}}toString(){return this.b.join("").replaceAll(`
49
49
 
50
50
 
51
51
  `,`
52
52
 
53
- `)}};function da(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 Ip=[...zt,"eq","ne","co"];function pa(t){return new Ce(t,Qt,Ip,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var fr=class{constructor(e,r,n){c(this,"path");c(this,"operator");c(this,"value");this.path=e,this.operator=r,this.value=n}},mr=class{constructor(e){c(this,"child");this.child=e}},hr=class{constructor(e,r,n){c(this,"keyword");c(this,"left");c(this,"right");this.keyword=e,this.left=r,this.right=n}};var kp={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 Mp(t){let e=kp[t];if(!e)throw new m(w("Invalid operator: "+t));return e}var Yi=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 mr(this.parse()),this.parser.consume(")")):e=new fr(this.parser.consume("Symbol").value,Mp(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 hr(r,e,this.parse())):e}},Dp=dt();function Vp(t){let e=Dp.construct(pa(t));e.removeComments();let r=new Yi(e).parse(),n=e.peek();if(n)throw new m(w("Unexpected token in _filter expression: "+n.value));return r}var ma={AA:"AA",AE:"AE",AR:"AR",CA:"CA",CE:"CE",CR:"CR"};function ha(t){return t!==void 0&&Object.hasOwn(ma,t)}var _p={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}},Xi=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=fa(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=xt.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 ha(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 xt(["MSH",this.context.getMsh2(),s,a,i,o,ga(r),"",this.buildAckMessageType(n),r.getTime().toString(),"P",l],this.context),new xt(["MSA",d,u,_p[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=fa(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 fa(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 xt=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 Lp(t,e){if(!t)return;let r=rt(t.slice(0,4),0),n=rt(t.slice(4,6),1)-1,i=rt(t.slice(6,8),1),o=rt(t.slice(8,10),0),s=rt(t.slice(10,12),0),a=rt(t.slice(12,14),0),u=0;t.includes(".")&&(u=rt(t.slice(15,19),0));let l=new Date(Date.UTC(r,n,i,o,s,a,u)),d=Np(t,e?.tzOffset);return d!==0&&(l=new Date(l.getTime()-d)),l.toISOString()}function rt(t,e){let r=Number.parseInt(t,10);return Number.isNaN(r)?e:r}function Np(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 ga(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 nt={NONE:0,ERROR:1,WARN:2,INFO:3,DEBUG:4},ya=["NONE","ERROR","WARN","INFO","DEBUG"],Zi=class t{constructor(e,r={},n=nt.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(nt.ERROR,e,r)}warn(e,r){this.log(nt.WARN,e,r)}info(e,r){this.log(nt.INFO,e,r)}debug(e,r){this.log(nt.DEBUG,e,r)}log(e,r,n){if(e>this.level)return;let i;if(Er(n))i=gr(n);else if(n){i={...n};for(let[o,s]of Object.entries(i))s instanceof Error&&(i[o]=gr(s))}this.write(JSON.stringify({level:ya[e],timestamp:new Date().toISOString(),msg:this.prefix?`${this.prefix}${r}`:r,...i,...this.metadata}))}};function Fp(t){let e=nt[t.toUpperCase()];if(e===void 0)throw new Error(`Invalid log level: ${t}`);return e}function gr(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=gr(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]=gr(s,e+1,r):n[o]=s}catch{}return n}var xa="Invalid response from order medication bot",Up="Invalid response from medication search bot",va="Invalid response from order-set bot",Ta="https://medplum.com/fhir/CodeSystem/medication-request-status-reason",Sa="response-not-received";function Bp(){return{coding:[{system:Ta,code:Sa,display:"Order-medication response not received"}],text:"The order-medication operation did not return a verifiable response; vendor-side state is unknown."}}function ba(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 Ea(t){if(typeof t!="object"||t===null)return!1;let e=t;return typeof e.launchUrl=="string"&&e.launchUrl.length>0}function qp(t){return Array.isArray(t)?t.every(e=>D(e,"Medication")):!1}function Wp(t,e){return Br(t,e.pendingOrderIdSystem)}function $p(t,e){let r=ze(t,e.pendingOrderStatusUrl);return typeof r=="string"?r:void 0}function jp(t,e){let r=ze(t,e.iframeUrlExtension);return typeof r=="string"?r:void 0}function x(t,e,r){return{name:t,[e]:r}}function Fe(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 Hp(t){let e=[];return 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)),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 Gp(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)),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 Qp(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(Gp("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 zp(t){let e={};for(let n of t.parameter??[])n.name&&(e[n.name]=Fe(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(!ba(r))throw new Error(xa);return r}function Jp(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 Kp(t){let e={};for(let n of t.parameter??[])n.name&&(e[n.name]=Fe(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(!Ea(r))throw new Error(va);return r}var Ra="Invalid response from checkout-medications bot";function Ca(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 Yp(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 Xp(t){if(!t?.length)return;let e={};for(let i of t)i.name&&(e[i.name]=Fe(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 Zp(t){let e=[],r={};for(let i of t.parameter??[])if(i.name)if(i.name==="items"){let o=Xp(i.part);o&&e.push(o)}else r[i.name]=Fe(i);let n={approvalUrl:typeof r.approvalUrl=="string"?r.approvalUrl:"",vendorPatientId:typeof r.vendorPatientId=="number"?r.vendorPatientId:Number.NaN,items:e};if(!Ca(n))throw new Error(Ra);return n}var Pa="Invalid response from cart-management bot";function Aa(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 ef(t){return{resourceType:"Parameters",parameter:[x("patientId","valueId",t.patientId),x("action","valueCode","remove"),x("medicationRequestId","valueId",t.medicationRequestId)]}}function tf(t){return{resourceType:"Parameters",parameter:[x("patientId","valueId",t.patientId),x("action","valueCode","clear")]}}function rf(t){if(!t?.length)return;let e={};for(let n of t)n.name&&(e[n.name]=Fe(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 nf(t){let e=[],r={};for(let i of t.parameter??[])if(i.name)if(i.name==="items"){let o=rf(i.part);o&&e.push(o)}else r[i.name]=Fe(i);let n={vendorPatientId:typeof r.vendorPatientId=="number"?r.vendorPatientId:Number.NaN,removedCount:typeof r.removedCount=="number"?r.removedCount:Number.NaN,items:e};if(!Aa(n))throw new Error(Pa);return n}function of(t){let e={};for(let r of t)r.name&&(e[r.name]=Fe(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 sf(t){let e={},r=[];for(let n of t.parameter??[])n.name&&(n.name==="results"&&n.part?.length?r.push(of(n.part)):e[n.name]=Fe(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 yn=`${St}/fhir/StructureDefinition/patient-preferredPharmacy`,ro="https://medplum.com/fhir/CodeSystem/pharmacy-preference-type",gn="primary",no="preferred";function eo(t){let e=t.extension?.find(r=>r.url==="pharmacy");return e?.valueReference?k(e.valueReference):void 0}function to(t){return t.url===yn&&!!t.extension}function af(t,e){let r=t.extension?.find(n=>n.url==="type");r&&(r.valueCodeableConcept={coding:[{system:e,code:no,display:"Preferred Pharmacy"}]})}function cf(t,e){if(!t.extension)return[];let r=[];for(let n of t.extension){if(n.url!==yn||!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===gn)??!1:o?.valueCodeableConcept?.coding?.some(a=>a.code===gn)??!1;r.push({organizationRef:i.valueReference,isPrimary:s})}}return r}function wa(t,e,r=ro){return{url:yn,extension:[{url:"pharmacy",valueReference:t},{url:"type",valueCodeableConcept:{coding:[{system:r,code:e?gn:no,display:e?"Primary Pharmacy":"Preferred Pharmacy"}]}}]}}function uf(t,e,r,n=ro){t.extension??=[];let i=k(e);if(r)for(let a of t.extension)to(a)&&eo(a)!==i&&af(a,n);let o=t.extension.findIndex(a=>to(a)&&eo(a)===i),s=wa(e,r,n);return o>=0?t.extension[o]=s:t.extension.push(s),t}function lf(t,e){if(!t.extension)return t;let r=k(e);return t.extension=t.extension.filter(n=>to(n)?eo(n)!==r:!0),t}function df(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 pf(t){if(typeof t!="object"||t===null)return!1;let e=t;return typeof e.success=="boolean"&&typeof e.message=="string"}var Oa="https://medplum.com/fhir/StructureDefinition/SchedulingParameters",ff="https://medplum.com/fhir/StructureDefinition/SchedulingEncounterCoding",mf="https://medplum.com/fhir/StructureDefinition/SchedulingPlanDefinition",xn="https://medplum.com/fhir/service-type-reference",hf="http://hl7.org/fhir/StructureDefinition/timezone",Ia=["mon","tue","wed","thu","fri","sat","sun"];function gf(t){return Ia.includes(t)}function yf(t){return!!ae(t,Oa)}function xf(t){let e=[{url:xn,valueReference:ue(t)}];return t.type?.length?t.type.map(r=>({...r,extension:[...r.extension??[],...e]})):[{extension:e}]}function vf(t,e){if(!t?.length)return!1;let r=k(e);return t.some(n=>ze(n,xn)?.reference===r)}function Tf(t){return t?.length?t.map(e=>ze(e,xn)).filter(ui):[]}function Sf(t){if(!t)throw new m(T("Resource type is null"));if(!Et(t))throw new m(T("Unknown resource type"))}function io(t,e,r){t===null?r.push(R(e,"Invalid null value")):Array.isArray(t)?bf(t,e,r):typeof t=="object"&&Ef(t,e,r)}function bf(t,e,r){for(let n=0;n<t.length;n++)t[n]===void 0?r.push(R(`${e}[${n}]`,"Invalid undefined value")):io(t[n],`${e}[${n}]`,r)}function Ef(t,e,r){for(let[n,i]of Object.entries(t))io(i,`${e}${e?".":""}${n}`,r)}function Rf(t){return{resourceType:"SearchParameter",code:t.code+":identifier",base:t.base,type:"token",expression:`(${t.expression}).identifier`}}function oo(t){return t.match(/^\((.+)\)\.identifier$/)?.[1]}function so(t,e){return new Ee(t,new re(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 Cf(t,e){return H.types[t]?.searchParamsDetails?.[e.code]??Af(t,e)}function Pf(t,e,r){let n=H.types[t];n||(n={},H.types[t]=n),n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=r}function Af(t,e){let r=e.code,n=e.expression,i=co(t,n),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let l of i){let d=vn(l),f=si(()=>d.join("."));d.length===1&&d[0]instanceof A&&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")):ka(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=oo(n);if(l===void 0)throw new Error(`Unexpected expression for derived identifier search parameter: ${n}`);let d=ao(t,l);s=so(n,d)}else s=ao(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:If(e,o.propertyTypes),elementDefinitions:a,parsedExpression:s,array:o.array,referenceTargetTypes:Mf(e,a)};return Pf(t,r,u),u}function ka(t,e,r,n){let i=e[n];if(i instanceof Re){t.propertyTypes.add(i.right.toString());return}if(i instanceof ne){wf(t,i);return}let o=i.toString(),s=wt(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 _e&&(a=!0,u++);let l=e[u];if(s.isArray&&!a&&(t.array=!0),u===e.length-1){if(l instanceof Re){t.elementDefinitions.push(s),t.propertyTypes.add(l.right.toString());return}if(l instanceof ne&&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;Of(f)&&(f=s.type[0].code),ka(t,e,f,u)}}function wf(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 Ve){t.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function Of(t){return t==="Element"||t==="BackboneElement"}function If(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 co(t,e){let r=[],n=Jt(e);return Tn(t,n.child,r),r}function kf(t,e){let r=co(t,e);if(r.length!==0)return r.map(n=>n.toString()).join(" | ")}function ao(t,e){let r=[],n=Jt(e);if(Tn(t,n.child,r),r.length===0)return n;let i=r[0];for(let o=1;o<r.length;o++)i=new De(i,r[o]);return new Ee("<original-not-available>",i)}function Tn(t,e,r){e instanceof De?(Tn(t,e.left,r),Tn(t,e.right,r)):e.toString().includes(t+".")&&r.push(e)}function vn(t){if(t instanceof Re||t instanceof _e)return[vn(t.left),t].flat();if(t instanceof A&&t.operator!==".")return[t];if(t instanceof re)return[vn(t.left),vn(t.right)].flat();if(t instanceof ne){if(t.name==="where"&&!(t.args[0]instanceof Ve))return[];if(t.name==="last")return[]}return[t]}function Mf(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 Df(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 Vf(t){return`shlink:/${bi(JSON.stringify(t))}`}function _f(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(Xt(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 Lf(t){return/\/shl\/([^/]+)\/(?:manifest|payload)$/.exec(t)?.[1]}function Nf(t,e){let r=[];for(let n of e)r.push(...Ff(t,n));return r}function Ff(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=I(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 uo(t,n,r)}function uo(t,e,r){let n=[],i;t.forEach?i=I(t.forEach,[e],r):t.forEachOrNull?i=I(t.forEachOrNull,[e],r):i=[e];for(let o of i){let s=[];for(let a of t.column??v){let u=I(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=uo(a,o,r);s.push(u)}if(t.unionAll){let a=[];for(let u of t.unionAll)for(let l of uo(u,o,r))a.push(l);s.push(a)}n.push(...Uf(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 Uf(t){if(t.length===0)return[];let e=t[0];for(let r=1;r<t.length;r++)e=Bf(e,t[r]);return e}function Bf(t,e){let r=[];for(let n of t)for(let i of e)r.push(qf(n,i));return r}function qf(t,e){let r={};return Object.assign(r,t),Object.assign(r,e),r}var po=/^\d+\.\d+\.\d+(-[0-9a-z]{7})?$/,Ma="https://meta.medplum.com/releases",lo=new Map;function Wf(){lo.clear()}function Da(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 Va(t,e,r,n){let i=new URL(`${Ma}/${t}`);if(i.searchParams.set("a",e),i.searchParams.set("c",tn),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: ${Oe(a)}`)}throw new Error(`Received status code ${o.status} while ${r}`,{cause:new Error(s)})}return await o.json()}async function Sn(t,e,r){let n=e?lo.get(e):void 0;if(!n){let i=e?`v${e}`:"latest",o=await Va(`${i}.json`,t,`fetching manifest for version '${e??"latest"}'`,r);Da(o),n=o,lo.set(n.tag_name.slice(1),n)}return n}function fo(t){return po.test(t)}function _a(t){if(!po.test(t))throw new TypeError(`Version is not a valid Medplum semver (eg. 1.1.1 or 1.1.1-a1bc): ${t}`)}function La(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 $f(t,e){if(!fo(e))return!1;try{await Sn(t,e)}catch{return!1}return!0}async function jf(t){let e=await Sn(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 _a(r),r}async function Hf(t,e){return((await Va("all.json",t,"fetching all release versions",e)).versions??[]).map(i=>i.version).filter(fo).toSorted(La).reverse()}async function Gf(t,e){try{let r=tn.split("-")[0],i=(await Sn(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: ${Oe(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,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,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,RXNORM,ReadablePromise,ReconnectingWebSocket,ReturnAckCategory,SNOMED,SchedulingEncounterCodingURI,SchedulingParametersURI,SchedulingPlanDefinitionURI,SearchParameterType,ServiceTypeReferenceURI,SubscriptionEmitter,SubscriptionManager,SymbolAtom,TestError,TimezoneExtensionURI,Tokenizer,TransformMapCollection,TypedEventTarget,UCUM,UnaryOperatorAtom,UnionAtom,VALID_HOSTNAME_REGEX,XorAtom,accepted,accessPolicySupportsInteraction,add,addPreferredPharmacyToPatient,addProfileToResource,allOk,append,apply,applyDefaultValuesToElement,applyDefaultValuesToResource,applyFixedOrPatternValue,applyPatch,arrayBufferToBase64,arrayBufferToHex,arrayify,assert,assertContextVersionOptional,assertNever,assertOk,assertReleaseManifest,assertValidMedplumSemver,badRequest,booleanToTypedValue,buildCdsRequest,buildElementsContext,buildMedicationRequestResponseLostStatusReason,buildTypeName,businessRule,calculateAge,calculateAgeString,canReadResourceType,canWriteResource,canWriteResourceType,capitalize,checkForNull,checkIfValidMedplumVersion,clearReleaseCache,codeableConceptMatchesToken,codingMatchesToken,compareVersions,compressElement,concatUrls,conceptMapTranslate,conflict,contentTooLarge,convertContainedResourcesToBundle,convertToSearchableDates,convertToSearchableNumbers,convertToSearchableQuantities,convertToSearchableReferences,convertToSearchableStrings,convertToSearchableTokens,convertToSearchableUris,convertToTransactionBundle,copy,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,getIdentifier,getImageSrc,getInnerDerivedIdentifierExpression,getMedicationOrderIframeUrl,getNestedProperty,getOutcomeRedirectUrl,getParsedDerivedIdentifierExpression,getParsedExpressionForResourceType,getPathDifference,getPathDisplayName,getPendingMedicationOrderId,getPendingMedicationOrderStatus,getPreferredPharmaciesFromPatient,getPropertyDisplayName,getQueryString,getQuestionnaireAnswers,getRandomString,getReferenceString,getResourceTypes,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,serializeError,serializeFhircastSubscriptionRequest,serverError,serverTimeout,serviceTypeIncludesService,setCodeBySystem,setIdentifier,singleton,singularize,sleep,sortStringArray,splitN,splitSearchOnComma,streamToBuffer,stringify,stringifyTypedValue,structureMapTransform,subsetResource,subtract,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 fa(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 Up=[...Yt,"eq","ne","co"];function ma(t){return new Pe(t,Kt,Up,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var hr=class{constructor(e,r,n){c(this,"path");c(this,"operator");c(this,"value");this.path=e,this.operator=r,this.value=n}},gr=class{constructor(e){c(this,"child");this.child=e}},yr=class{constructor(e,r,n){c(this,"keyword");c(this,"left");c(this,"right");this.keyword=e,this.left=r,this.right=n}};var Bp={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 qp(t){let e=Bp[t];if(!e)throw new m(w("Invalid operator: "+t));return e}var Zi=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 gr(this.parse()),this.parser.consume(")")):e=new hr(this.parser.consume("Symbol").value,qp(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 yr(r,e,this.parse())):e}},Wp=pt();function $p(t){let e=Wp.construct(ma(t));e.removeComments();let r=new Zi(e).parse(),n=e.peek();if(n)throw new m(w("Unexpected token in _filter expression: "+n.value));return r}var ga={AA:"AA",AE:"AE",AR:"AR",CA:"CA",CE:"CE",CR:"CR"};function ya(t){return t!==void 0&&Object.hasOwn(ga,t)}var jp={AA:"OK",AE:"Application Error",AR:"Application Reject",CA:"Commit Accept",CE:"Commit Error",CR:"Commit Reject"},we=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}},eo=class t{constructor(e,r=new we){c(this,"context");c(this,"_segments");c(this,"segmentsByName");c(this,"cachedString");c(this,"allSegmentsParsed");this.context=r,this._segments=e,this.segmentsByName=ha(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=vt.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 ya(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 vt(["MSH",this.context.getMsh2(),s,a,i,o,xa(r),"",this.buildAckMessageType(n),r.getTime().toString(),"P",l],this.context),new vt(["MSA",d,u,jp[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 we("\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=ha(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 ha(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 vt=class t{constructor(e,r=new we){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 ge([[this.context.getMsh1()]],this.context);if(e===2)return new ge([[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=ge.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 we){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 ge([[""]],this.context));return this._fields[n]=typeof r=="string"?ge.parse(r,this.context):r,this.invalidateCache(),!0}}for(;this._fields.length<=e;)this._fields.push(new ge([[""]],this.context));return this._fields[e]=typeof r=="string"?ge.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)}},ge=class t{constructor(e,r=new we){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 we){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 Hp(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=Gp(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 Gp(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 xa(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},va=["NONE","ERROR","WARN","INFO","DEBUG"],to=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(Pr(n))i=xr(n);else if(n){i={...n};for(let[o,s]of Object.entries(i))s instanceof Error&&(i[o]=xr(s))}this.write(JSON.stringify({level:va[e],timestamp:new Date().toISOString(),msg:this.prefix?`${this.prefix}${r}`:r,...i,...this.metadata}))}};function Qp(t){let e=it[t.toUpperCase()];if(e===void 0)throw new Error(`Invalid log level: ${t}`);return e}function xr(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=xr(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]=xr(s,e+1,r):n[o]=s}catch{}return n}var Ta="Invalid response from order medication bot",zp="Invalid response from medication search bot",Sa="Invalid response from order-set bot",ba="https://medplum.com/fhir/CodeSystem/medication-request-status-reason",Ea="response-not-received";function Jp(){return{coding:[{system:ba,code:Ea,display:"Order-medication response not received"}],text:"The order-medication operation did not return a verifiable response; vendor-side state is unknown."}}function Ra(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 Ca(t){if(typeof t!="object"||t===null)return!1;let e=t;return typeof e.launchUrl=="string"&&e.launchUrl.length>0}function Kp(t){return Array.isArray(t)?t.every(e=>D(e,"Medication")):!1}function Yp(t,e){return $r(t,e.pendingOrderIdSystem)}function Xp(t,e){let r=De(t,e.pendingOrderStatusUrl);return typeof r=="string"?r:void 0}function Zp(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 ef(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 tf(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 rf(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(tf("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 nf(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(!Ra(r))throw new Error(Ta);return r}function of(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 sf(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(!Ca(r))throw new Error(Sa);return r}var Pa="Invalid response from checkout-medications bot";function Aa(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 af(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 cf(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 uf(t){let e=[],r={};for(let i of t.parameter??[])if(i.name)if(i.name==="items"){let o=cf(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(!Aa(n))throw new Error(Pa);return n}var wa="Invalid response from cart-management bot";function Oa(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 lf(t){return{resourceType:"Parameters",parameter:[x("patientId","valueId",t.patientId),x("action","valueCode","remove"),x("medicationRequestId","valueId",t.medicationRequestId)]}}function df(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 ff(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(!Oa(n))throw new Error(wa);return n}function mf(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 hf(t){let e={},r=[];for(let n of t.parameter??[])n.name&&(n.name==="results"&&n.part?.length?r.push(mf(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 Tn=`${bt}/fhir/StructureDefinition/patient-preferredPharmacy`,io="https://medplum.com/fhir/CodeSystem/pharmacy-preference-type",vn="primary",oo="preferred";function ro(t){let e=t.extension?.find(r=>r.url==="pharmacy");return e?.valueReference?I(e.valueReference):void 0}function no(t){return t.url===Tn&&!!t.extension}function gf(t,e){let r=t.extension?.find(n=>n.url==="type");r&&(r.valueCodeableConcept={coding:[{system:e,code:oo,display:"Preferred Pharmacy"}]})}function yf(t,e){if(!t.extension)return[];let r=[];for(let n of t.extension){if(n.url!==Tn||!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===vn)??!1:o?.valueCodeableConcept?.coding?.some(a=>a.code===vn)??!1;r.push({organizationRef:i.valueReference,isPrimary:s})}}return r}function Ia(t,e,r=io){return{url:Tn,extension:[{url:"pharmacy",valueReference:t},{url:"type",valueCodeableConcept:{coding:[{system:r,code:e?vn:oo,display:e?"Primary Pharmacy":"Preferred Pharmacy"}]}}]}}function xf(t,e,r,n=io){t.extension??=[];let i=I(e);if(r)for(let a of t.extension)no(a)&&ro(a)!==i&&gf(a,n);let o=t.extension.findIndex(a=>no(a)&&ro(a)===i),s=Ia(e,r,n);return o>=0?t.extension[o]=s:t.extension.push(s),t}function vf(t,e){if(!t.extension)return t;let r=I(e);return t.extension=t.extension.filter(n=>no(n)?ro(n)!==r:!0),t}function Tf(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 Sf(t){if(typeof t!="object"||t===null)return!1;let e=t;return typeof e.success=="boolean"&&typeof e.message=="string"}var vr="https://medplum.com/fhir/StructureDefinition/SchedulingParameters",bf="https://medplum.com/fhir/StructureDefinition/SchedulingEncounterCoding",Ef="https://medplum.com/fhir/StructureDefinition/SchedulingPlanDefinition",Sn="https://medplum.com/fhir/service-type-reference",ka="http://hl7.org/fhir/StructureDefinition/timezone",Ma=["mon","tue","wed","thu","fri","sat","sun"];function Rf(t){return Ma.includes(t)}function Cf(t){return!!ce(t,vr)}function Pf(t,e){if(!t?.reference)return!1;let[r,n]=t.reference.split("/");return`${r}/${n}`===e}function Da(t,e){return t.url===vr&&(t.extension?.some(r=>r.url==="service"&&Pf(r.valueReference,e))??!1)}function Va(t,e){let r=I(e);return t.extension?.filter(n=>Da(n,r))??[]}function _a(t,e,r){return Va(t,e).flatMap(n=>kt(n,r))}function Af(t,e,r){let n=La(t,e,r.url),i=ne(e);n.extension??=[];let o=n.extension.find(s=>Da(s,i.reference));return o||(o={url:vr,extension:[{url:"service",valueReference:i}]},n.extension.push(o)),o.extension=[...o.extension??[],r],n}function La(t,e,r){let n=de(t);for(let i of Va(n,e))i.extension&&(i.extension=i.extension.filter(o=>o.url!==r));return n}function wf(t,e,r){let n=(e?_a(e,t,"timezone"):[]).map(s=>s.valueCode).find(Vt);if(n)return n;let i=kt(t,[vr,"timezone"]).map(s=>s.valueCode).find(Vt);if(i)return i;let o=r&&De(r,ka);return typeof o=="string"?o:void 0}function Of(t){let e=[{url:Sn,valueReference:ne(t)}];return t.type?.length?t.type.map(r=>({...r,extension:[...r.extension??[],...e]})):[{extension:e}]}function If(t,e){if(!t?.length)return!1;let r=I(e);return t.some(n=>De(n,Sn)?.reference===r)}function kf(t){return t?.length?t.map(e=>De(e,Sn)).filter(Vt):[]}var Mf={wk:1440*7,d:1440,h:60,min:1};function Df(t){let e=t?.value;if(e===void 0||e<0)return;let r=t?.unit===void 0?void 0:Mf[t.unit];return r===void 0?void 0:e*r}function Vf(t){if(!t)throw new m(T("Resource type is null"));if(!Rt(t))throw new m(T("Unknown resource type"))}function so(t,e,r){t===null?r.push(R(e,"Invalid null value")):Array.isArray(t)?_f(t,e,r):typeof t=="object"&&Lf(t,e,r)}function _f(t,e,r){for(let n=0;n<t.length;n++)t[n]===void 0?r.push(R(`${e}[${n}]`,"Invalid undefined value")):so(t[n],`${e}[${n}]`,r)}function Lf(t,e,r){for(let[n,i]of Object.entries(t))so(i,`${e}${e?".":""}${n}`,r)}function Nf(t){return{resourceType:"SearchParameter",code:t.code+":identifier",base:t.base,type:"token",expression:`(${t.expression}).identifier`}}function ao(t){return t.match(/^\((.+)\)\.identifier$/)?.[1]}function co(t,e){return new Re(t,new ie(e,new F("identifier")))}var ye={BOOLEAN:"BOOLEAN",NUMBER:"NUMBER",QUANTITY:"QUANTITY",TEXT:"TEXT",REFERENCE:"REFERENCE",CANONICAL:"CANONICAL",DATE:"DATE",DATETIME:"DATETIME",PERIOD:"PERIOD",UUID:"UUID"};function Ff(t,e){return H.types[t]?.searchParamsDetails?.[e.code]??Bf(t,e)}function Uf(t,e,r){let n=H.types[t];n||(n={},H.types[t]=n),n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=r}function Bf(t,e){let r=e.code,n=e.expression,i=lo(t,n),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let l of i){let d=bn(l),f=ui(()=>d.join("."));d.length===1&&d[0]instanceof A&&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")):Na(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=ao(n);if(l===void 0)throw new Error(`Unexpected expression for derived identifier search parameter: ${n}`);let d=uo(t,l);s=co(n,d)}else s=uo(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:$f(e,o.propertyTypes),elementDefinitions:a,parsedExpression:s,array:o.array,referenceTargetTypes:Hf(e,a)};return Uf(t,r,u),u}function Na(t,e,r,n){let i=e[n];if(i instanceof Ce){t.propertyTypes.add(i.right.toString());return}if(i instanceof oe){qf(t,i);return}let o=i.toString(),s=Ot(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 oe&&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;Wf(f)&&(f=s.type[0].code),Na(t,e,f,u)}}function qf(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 Wf(t){return t==="Element"||t==="BackboneElement"}function $f(t,e){switch(t.type){case"date":return e.size===1&&e.has(p.date)?ye.DATE:ye.DATETIME;case"number":return ye.NUMBER;case"quantity":return ye.QUANTITY;case"reference":return e.has(p.canonical)?ye.CANONICAL:ye.REFERENCE;case"token":return e.size===1&&e.has(p.boolean)?ye.BOOLEAN:ye.TEXT;default:return ye.TEXT}}function lo(t,e){let r=[],n=Xt(e);return En(t,n.child,r),r}function jf(t,e){let r=lo(t,e);if(r.length!==0)return r.map(n=>n.toString()).join(" | ")}function uo(t,e){let r=[],n=Xt(e);if(En(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 En(t,e,r){e instanceof Ve?(En(t,e.left,r),En(t,e.right,r)):e.toString().includes(t+".")&&r.push(e)}function bn(t){if(t instanceof Ce||t instanceof Le)return[bn(t.left),t].flat();if(t instanceof A&&t.operator!==".")return[t];if(t instanceof ie)return[bn(t.left),bn(t.right)].flat();if(t instanceof oe){if(t.name==="where"&&!(t.args[0]instanceof _e))return[];if(t.name==="last")return[]}return[t]}function Hf(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 Gf(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 Qf(t){return`shlink:/${Ri(JSON.stringify(t))}`}function zf(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(tr(r.substring(8)));if(!n||n.v!==void 0&&n.v!==1||!pe(n.url)||!pe(n.key))throw new Error("Invalid SMART Health Link payload");return n}function Jf(t){return/\/shl\/([^/]+)\/(?:manifest|payload)$/.exec(t)?.[1]}function Kf(t,e){let r=[];for(let n of e)r.push(...Yf(t,n));return r}function Yf(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 po(t,n,r)}function po(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=po(a,o,r);s.push(u)}if(t.unionAll){let a=[];for(let u of t.unionAll)for(let l of po(u,o,r))a.push(l);s.push(a)}n.push(...Xf(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 Xf(t){if(t.length===0)return[];let e=t[0];for(let r=1;r<t.length;r++)e=Zf(e,t[r]);return e}function Zf(t,e){let r=[];for(let n of t)for(let i of e)r.push(em(n,i));return r}function em(t,e){let r={};return Object.assign(r,t),Object.assign(r,e),r}var mo=/^\d+\.\d+\.\d+(-[0-9a-z]{7})?$/,Fa="https://meta.medplum.com/releases",fo=new Map;function tm(){fo.clear()}function Ua(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 Ba(t,e,r,n){let i=new URL(`${Fa}/${t}`);if(i.searchParams.set("a",e),i.searchParams.set("c",on),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 Rn(t,e,r){let n=e?fo.get(e):void 0;if(!n){let i=e?`v${e}`:"latest",o=await Ba(`${i}.json`,t,`fetching manifest for version '${e??"latest"}'`,r);Ua(o),n=o,fo.set(n.tag_name.slice(1),n)}return n}function ho(t){return mo.test(t)}function qa(t){if(!mo.test(t))throw new TypeError(`Version is not a valid Medplum semver (eg. 1.1.1 or 1.1.1-a1bc): ${t}`)}function Wa(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 rm(t,e){if(!ho(e))return!1;try{await Rn(t,e)}catch{return!1}return!0}async function nm(t){let e=await Rn(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 qa(r),r}async function im(t,e){return((await Ba("all.json",t,"fetching all release versions",e)).versions??[]).map(i=>i.version).filter(ho).toSorted(Wa).reverse()}async function om(t,e){try{let r=on.split("-")[0],i=(await Rn(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,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,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,RXNORM,ReadablePromise,ReconnectingWebSocket,ReturnAckCategory,SNOMED,SchedulingEncounterCodingURI,SchedulingParametersURI,SchedulingPlanDefinitionURI,SearchParameterType,ServiceTypeReferenceURI,SubscriptionEmitter,SubscriptionManager,SymbolAtom,TestError,TimezoneExtensionURI,Tokenizer,TransformMapCollection,TypedEventTarget,UCUM,UnaryOperatorAtom,UnionAtom,VALID_HOSTNAME_REGEX,XorAtom,accepted,accessPolicySupportsInteraction,add,addPreferredPharmacyToPatient,addProfileToResource,allOk,append,apply,applyDefaultValuesToElement,applyDefaultValuesToResource,applyFixedOrPatternValue,applyPatch,arrayBufferToBase64,arrayBufferToHex,arrayify,assert,assertContextVersionOptional,assertNever,assertOk,assertReleaseManifest,assertValidMedplumSemver,badRequest,booleanToTypedValue,buildCdsRequest,buildElementsContext,buildMedicationRequestResponseLostStatusReason,buildTypeName,businessRule,calculateAge,calculateAgeString,canReadResourceType,canWriteResource,canWriteResourceType,capitalize,checkForNull,checkIfValidMedplumVersion,clearReleaseCache,clearScheduleParameter,codeableConceptMatchesToken,codingMatchesToken,compareVersions,compressElement,concatUrls,conceptMapTranslate,conflict,contentTooLarge,convertContainedResourcesToBundle,convertToSearchableDates,convertToSearchableNumbers,convertToSearchableQuantities,convertToSearchableReferences,convertToSearchableStrings,convertToSearchableTokens,convertToSearchableUris,convertToTransactionBundle,copy,countBy,countWhere,crawlTypedValue,crawlTypedValueAsync,createConstraintIssue,createFhircastMessagePayload,createOperationOutcomeIssue,createPatch,createPreferredPharmacyExtension,createProcessingIssue,createReference,createStructureIssue,createTests,created,decodeBase64,decodeBase64Url,deepClone,deepEquals,deepIncludes,deriveIdentifierSearchParameter,diffAny,diffArrays,diffObjects,encodeBase64,encodeBase64Url,encodeSmartHealthLink,encryptSHA256,ensureNoLeadingSlash,ensureTrailingSlash,escapeHtml,escapeToken,evalFhirPath,evalFhirPathTyped,evalSqlOnFhir,expandSampledData,expandSampledObservation,extractAccountReferences,extractServiceTypeReferences,fetchAllVersionStrings,fetchLatestVersionString,fetchVersionManifest,fhirPathArrayEquals,fhirPathArrayEquivalent,fhirPathArrayNotEquals,fhirPathEquals,fhirPathEquivalent,fhirPathIs,fhirPathNot,fhirTypeToJsType,fhirpathPatchTypedValue,findCodeBySystem,findObservationInterval,findObservationReferenceRange,findObservationReferenceRanges,findResourceByCode,findResourceInBundle,flatMapFilter,forbidden,formatAddress,formatCodeableConcept,formatCoding,formatDate,formatDateTime,formatFamilyName,formatGivenName,formatHl7DateTime,formatHumanName,formatMoney,formatObservationValue,formatPeriod,formatQuantity,formatRange,formatReferenceString,formatSearchQuery,formatTime,formatTiming,formatWallTime,generateId,getAllDataTypes,getAllQuestionnaireAnswers,getBuffer,getCodeBySystem,getDataType,getDateProperty,getDefaultValuesForNewSliceEntry,getDisplayString,getElementDefinition,getElementDefinitionForPath,getElementDefinitionFromElements,getElementDefinitionTypeName,getExpressionForResourceType,getExpressionsForResourceType,getExtension,getExtensionValue,getExtensions,getIdentifier,getImageSrc,getInnerDerivedIdentifierExpression,getMedicationOrderIframeUrl,getNestedProperty,getOutcomeRedirectUrl,getParsedDerivedIdentifierExpression,getParsedExpressionForResourceType,getPathDifference,getPathDisplayName,getPendingMedicationOrderId,getPendingMedicationOrderStatus,getPreferredPharmaciesFromPatient,getPropertyDisplayName,getQueryString,getQuestionnaireAnswers,getRandomString,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,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>