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