@medplum/core 3.2.3 → 3.2.5
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 +3 -3
- package/dist/cjs/index.cjs.map +3 -3
- package/dist/cjs/index.d.ts +2 -2
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.mjs +3 -3
- package/dist/esm/index.mjs.map +3 -3
- package/package.json +3 -3
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
"use strict";var yr=Object.defineProperty;var To=Object.getOwnPropertyDescriptor;var So=Object.getOwnPropertyNames;var Eo=Object.prototype.hasOwnProperty;var bo=(r,e)=>{for(var t in e)yr(r,t,{get:e[t],enumerable:!0})},Ro=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of So(e))!Eo.call(r,i)&&i!==t&&yr(r,i,{get:()=>e[i],enumerable:!(n=To(e,i))||n.enumerable});return r};var Po=r=>Ro(yr({},"__esModule",{value:!0}),r);var Au={};bo(Au,{AccessPolicyInteraction:()=>_i,AndAtom:()=>ct,ArithemticOperatorAtom:()=>V,AsAtom:()=>pe,BooleanInfixOperatorAtom:()=>P,CPT:()=>Oo,ClientStorage:()=>Me,ConcatAtom:()=>tt,ContainsAtom:()=>rt,ContentType:()=>D,DEFAULT_ACCEPT:()=>Xi,DEFAULT_MAX_SEARCH_COUNT:()=>Va,DEFAULT_SEARCH_COUNT:()=>ka,DotAtom:()=>te,EmptySetAtom:()=>Xe,EqualsAtom:()=>it,EquivalentAtom:()=>st,EventTarget:()=>rr,ExternalSecretSystems:()=>Ac,FHIRCAST_EVENT_NAMES:()=>nr,FHIRCAST_EVENT_RESOURCES:()=>Hi,FHIRCAST_EVENT_VERSION_REQUIRED:()=>ir,FHIRCAST_RESOURCE_TYPES:()=>Gi,FhirFilterComparison:()=>wt,FhirFilterConnective:()=>Ot,FhirFilterNegation:()=>At,FhirPathAtom:()=>Ze,FhircastConnection:()=>xt,FunctionAtom:()=>H,HTTP_HL7_ORG:()=>xr,HTTP_TERMINOLOGY_HL7_ORG:()=>ko,Hl7Context:()=>oe,Hl7Field:()=>Pe,Hl7Message:()=>Vn,Hl7Segment:()=>_e,ICD10:()=>Io,ImpliesAtom:()=>pt,InAtom:()=>nt,IndexerAtom:()=>fe,InfixOperatorAtom:()=>z,IsAtom:()=>de,LOINC:()=>Co,LRUCache:()=>gt,LiteralAtom:()=>_,LogLevel:()=>hr,Logger:()=>Dn,MEDPLUM_CLI_CLIENT_ID:()=>vc,MEDPLUM_VERSION:()=>xc,MedplumClient:()=>bt,MedplumKeyValueClient:()=>St,MemoryStorage:()=>ar,MockAsyncClientStorage:()=>Sn,NotEqualsAtom:()=>ot,NotEquivalentAtom:()=>at,OAuthClientAssertionType:()=>no,OAuthGrantType:()=>eo,OAuthTokenAuthMethod:()=>ro,OAuthTokenType:()=>to,OperationOutcomeError:()=>f,Operator:()=>cn,OperatorPrecedence:()=>y,OrAtom:()=>ut,Parser:()=>It,ParserBuilder:()=>Be,PrefixOperatorAtom:()=>Ue,PropertyType:()=>l,RXNORM:()=>Ao,ReadablePromise:()=>M,RobustWebSocket:()=>cr,SNOMED:()=>wo,SearchParameterType:()=>sn,SubscriptionEmitter:()=>Ne,SubscriptionManager:()=>Et,SymbolAtom:()=>U,Tokenizer:()=>re,TypedEventTarget:()=>Q,UCUM:()=>gr,UnaryOperatorAtom:()=>et,UnionAtom:()=>Ee,VALID_HOSTNAME_REGEX:()=>vi,XorAtom:()=>lt,accepted:()=>qo,addProfileToResource:()=>Hs,allOk:()=>Vo,append:()=>Te,applyDefaultValuesToElement:()=>Nc,applyDefaultValuesToElementWithVisitor:()=>Fc,applyDefaultValuesToResource:()=>Mc,applyFixedOrPatternValue:()=>Pt,arrayBufferToBase64:()=>Zr,arrayBufferToHex:()=>Yr,arrayify:()=>Oe,assertContextVersionOptional:()=>yn,assertOk:()=>Ko,badRequest:()=>R,booleanToTypedValue:()=>d,buildElementsContext:()=>lr,buildTypeName:()=>Pi,calculateAge:()=>ze,calculateAgeString:()=>Es,canReadResourceType:()=>sc,canWriteResource:()=>ac,canWriteResourceType:()=>Li,capitalize:()=>w,checkForNull:()=>Mn,compressElement:()=>Jo,concatUrls:()=>q,conceptMapTranslate:()=>wn,conflict:()=>jo,convertContainedResourcesToBundle:()=>dc,convertToTransactionBundle:()=>qi,crawlResource:()=>Ut,createConstraintIssue:()=>Cr,createFhircastMessagePayload:()=>sr,createOperationOutcomeIssue:()=>se,createProcessingIssue:()=>wr,createReference:()=>X,createStructureIssue:()=>v,created:()=>Do,decodeBase64:()=>dn,deepClone:()=>ue,deepEquals:()=>Z,deepIncludes:()=>Ie,encodeBase64:()=>fn,encryptSHA256:()=>mn,ensureNoLeadingSlash:()=>xi,ensureTrailingSlash:()=>Kt,evalFhirPath:()=>be,evalFhirPathTyped:()=>A,evalSqlOnFhir:()=>bu,fhirPathArrayEquals:()=>$r,fhirPathArrayEquivalent:()=>$t,fhirPathArrayNotEquals:()=>Wr,fhirPathEquals:()=>jt,fhirPathEquivalent:()=>ni,fhirPathIs:()=>He,fhirPathNot:()=>jr,fhirTypeToJsType:()=>Br,findObservationInterval:()=>Ns,findObservationReferenceRange:()=>Fs,findResourceByCode:()=>Ws,forbidden:()=>Fo,formatAddress:()=>Js,formatCodeableConcept:()=>Ke,formatCoding:()=>Si,formatDate:()=>Xs,formatDateTime:()=>zt,formatFamilyName:()=>Zs,formatGivenName:()=>Ys,formatHl7DateTime:()=>vo,formatHumanName:()=>Ye,formatMoney:()=>aa,formatObservationValue:()=>Ei,formatPeriod:()=>ea,formatQuantity:()=>le,formatRange:()=>sa,formatSearchQuery:()=>Ha,formatTime:()=>Ti,formatTiming:()=>ia,generateId:()=>me,getAllDataTypes:()=>Dr,getAllQuestionnaireAnswers:()=>Rs,getCodeBySystem:()=>Wt,getDataType:()=>J,getDateProperty:()=>Ss,getDefaultValuesForNewSliceEntry:()=>_c,getDisplayString:()=>si,getElementDefinition:()=>Qe,getElementDefinitionFromElements:()=>wi,getElementDefinitionTypeName:()=>Mt,getExpressionForResourceType:()=>Ia,getExpressionsForResourceType:()=>an,getExtension:()=>Y,getExtensionValue:()=>Cs,getIdentifier:()=>ui,getImageSrc:()=>Ts,getNestedProperty:()=>ge,getPathDifference:()=>ve,getPathDisplayName:()=>ma,getPropertyDisplayName:()=>Ci,getQueryString:()=>rn,getQuestionnaireAnswers:()=>bs,getRandomString:()=>tr,getReferenceString:()=>ce,getResourceTypes:()=>pa,getSearchParameter:()=>fa,getSearchParameterDetails:()=>Xt,getSearchParameters:()=>da,getStatus:()=>Qo,getTypedPropertyValue:()=>C,getTypedPropertyValueWithPath:()=>Jn,getTypedPropertyValueWithSchema:()=>ri,getValueSliceName:()=>Cn,getWebSocketUrl:()=>tn,globalSchema:()=>F,gone:()=>_o,indexSearchParameter:()=>Yt,indexSearchParameterBundle:()=>la,indexStructureDefinitionBundle:()=>Ft,inflateBaseSchema:()=>Ar,inflateElement:()=>Wn,initFhirPathParserBuilder:()=>De,isAccepted:()=>Wo,isCodeableConcept:()=>di,isCoding:()=>pi,isCompletedSubscriptionRequest:()=>gn,isComplexTypeCode:()=>Gt,isContextVersionRequired:()=>hn,isCreated:()=>$o,isDataTypeLoaded:()=>Mr,isDateString:()=>Gr,isDateTimeString:()=>We,isEmpty:()=>S,isFhirCriteriaMet:()=>zi,isFhircastResourceType:()=>Qi,isGone:()=>Ho,isJwt:()=>xn,isLowerCase:()=>Ae,isMedplumAccessToken:()=>vn,isNotFound:()=>Go,isObject:()=>E,isOk:()=>Dt,isOperationOutcome:()=>ye,isPeriod:()=>Hr,isPopulated:()=>$,isProfileLoaded:()=>Fr,isProfileResource:()=>oi,isQuantity:()=>I,isQuantityEquivalent:()=>Qr,isReference:()=>ae,isResource:()=>O,isResourceType:()=>Nr,isResourceTypeSchema:()=>Lt,isSliceDefinitionWithTypes:()=>Pn,isString:()=>li,isStringArray:()=>Jr,isTextObject:()=>fi,isUUID:()=>Ds,isValidDate:()=>Jt,isValidHostname:()=>Gs,lazy:()=>en,loadDataType:()=>_t,mapByIdentifier:()=>Qs,mapFilter:()=>zs,matchDiscriminant:()=>qt,matchesAccessPolicy:()=>Ui,matchesRange:()=>Xr,matchesSearchRequest:()=>yt,multipleMatches:()=>Uo,normalizeCreateBinaryOptions:()=>Rn,normalizeCreatePdfOptions:()=>io,normalizeErrorString:()=>jn,normalizeOperationOutcome:()=>qe,notFound:()=>br,notModified:()=>Mo,operationOutcomeIssueToString:()=>$n,operationOutcomeToString:()=>Pr,parseCriteriaAsSearchRequest:()=>Na,parseFhirPath:()=>Zt,parseFilterParameter:()=>hu,parseHl7DateTime:()=>yu,parseJWTPayload:()=>Tt,parseLogLevel:()=>xu,parseMappingLanguage:()=>Kc,parseParameter:()=>Di,parseReference:()=>gs,parseSearchDefinition:()=>Ma,parseSearchRequest:()=>ne,parseSearchUrl:()=>Da,parseStructureDefinition:()=>Nt,parseXFhirQuery:()=>Ga,preciseEquals:()=>qs,preciseGreaterThan:()=>$s,preciseGreaterThanOrEquals:()=>gi,preciseLessThan:()=>js,preciseLessThanOrEquals:()=>yi,preciseRound:()=>Bs,preconditionFailed:()=>Lo,projectAdminResourceTypes:()=>Fi,protectedResourceTypes:()=>Ni,removeDuplicates:()=>Ge,removeProfileFromResource:()=>Ks,reorderBundle:()=>ji,resolveId:()=>xe,resourceMatchesSubscriptionCriteria:()=>yc,satisfiedAccessPolicy:()=>cc,serializeFhircastSubscriptionRequest:()=>or,serverError:()=>Rr,setCodeBySystem:()=>Ms,setIdentifier:()=>Ps,singleton:()=>B,sleep:()=>Ht,sortStringArray:()=>Je,splitN:()=>Qt,splitSearchOnComma:()=>ht,streamToBuffer:()=>Eu,stringify:()=>zr,stringifyTypedValue:()=>nn,structureMapTransform:()=>zc,subsetResource:()=>Zo,toJsBoolean:()=>N,toPeriod:()=>hs,toTypedValue:()=>x,tooManyRequests:()=>Bo,tryGetDataType:()=>we,tryGetJwtExpiration:()=>Tn,tryGetProfile:()=>_r,unauthorized:()=>No,validateFhircastSubscriptionRequest:()=>vt,validateResource:()=>as,validateResourceType:()=>vu,validateTypedValue:()=>cs,validationError:()=>h,validationRegexes:()=>$e});module.exports=Po(Au);var Ue=class{constructor(e,t){this.operator=e;this.child=t}toString(){return`${this.operator}(${this.child.toString()})`}},z=class{constructor(e,t,n){this.operator=e;this.left=t;this.right=n}toString(){return`${this.left.toString()} ${this.operator} ${this.right.toString()}`}},Be=class{constructor(){this.prefixParselets={};this.infixParselets={}}registerInfix(e,t){return this.infixParselets[e]=t,this}registerPrefix(e,t){return this.prefixParselets[e]=t,this}prefix(e,t,n){return this.registerPrefix(e,{parse(i,o){let s=i.consumeAndParse(t);return n(o,s)}})}infixLeft(e,t,n){return this.registerInfix(e,{parse(i,o,s){let a=i.consumeAndParse(t);return n(o,s,a)},precedence:t})}construct(e){return new It(e,this.prefixParselets,this.infixParselets)}},It=class{constructor(e,t,n){this.tokens=e,this.prefixParselets=t,this.infixParselets=n}hasMore(){return this.tokens.length>0}match(e){return this.peek()?.id!==e?!1:(this.consume(),!0)}consumeAndParse(e=1/0){let t=this.consume(),n=this.prefixParselets[t.id];if(!n)throw Error(`Parse error at "${t.value}" (line ${t.line}, column ${t.column}). No matching prefix parselet.`);let i=n.parse(this,t);for(;e>this.getPrecedence();){let o=this.consume();i=this.getInfixParselet(o).parse(this,i,o)}return i}getPrecedence(){let e=this.peek();if(!e)return 1/0;let t=this.getInfixParselet(e);return t?t.precedence:1/0}consume(e,t){if(!this.tokens.length)throw Error("Cant consume unknown more tokens.");if(e&&this.peek()?.id!==e){let n=this.peek();throw Error(`Expected ${e} but got "${n.id}" (${n.value}) at line ${n.line} column ${n.column}.`)}if(t&&this.peek()?.value!==t){let n=this.peek();throw Error(`Expected "${t}" but got "${n.value}" at line ${n.line} column ${n.column}.`)}return this.tokens.shift()}peek(){return this.tokens.length>0?this.tokens[0]:void 0}removeComments(){this.tokens=this.tokens.filter(e=>e.id!=="Comment")}getInfixParselet(e){return this.infixParselets[e.id==="Symbol"?e.value:e.id]}};var gr="http://unitsofmeasure.org",Co="http://loinc.org",wo="http://snomed.info/sct",Ao="http://www.nlm.nih.gov/research/umls/rxnorm",Oo="http://www.ama-assn.org/go/cpt",Io="http://hl7.org/fhir/sid/icd-10",xr="http://hl7.org",ko="http://terminology.hl7.org";var vr="ok",kt="created",Tr="gone",Sr="not-modified",Er="not-found",Fn="conflict",_n="unauthorized",Ln="forbidden",Un="precondition-failed",Bn="multiple-matches",qn="too-many-requests",Vt="accepted",Vo={resourceType:"OperationOutcome",id:vr,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},Do={resourceType:"OperationOutcome",id:kt,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},Mo={resourceType:"OperationOutcome",id:Sr,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},br={resourceType:"OperationOutcome",id:Er,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},No={resourceType:"OperationOutcome",id:_n,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},Fo={resourceType:"OperationOutcome",id:Ln,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},_o={resourceType:"OperationOutcome",id:Tr,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},Lo={resourceType:"OperationOutcome",id:Un,issue:[{severity:"error",code:"processing",details:{text:"Precondition Failed"}}]},Uo={resourceType:"OperationOutcome",id:Bn,issue:[{severity:"error",code:"multiple-matches",details:{text:"Multiple resources found matching condition"}}]},Bo={resourceType:"OperationOutcome",id:qn,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function qo(r){return{resourceType:"OperationOutcome",id:Vt,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:r}]}}function R(r,e){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:r},...e?{expression:[e]}:void 0}]}}function jo(r){return{resourceType:"OperationOutcome",id:Fn,issue:[{severity:"error",code:"conflict",details:{text:r}}]}}function h(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"structure",details:{text:r}}]}}function Rr(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function ye(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function Dt(r){return r.id===vr||r.id===kt||r.id===Sr||r.id===Vt}function $o(r){return r.id===kt}function Wo(r){return r.id===Vt}function Go(r){return r.id===Er}function Ho(r){return r.id===Tr}function Qo(r){switch(r.id){case vr:return 200;case kt:return 201;case Vt:return 202;case Sr:return 304;case _n:return 401;case Ln:return 403;case Er:return 404;case Fn:return 409;case Tr:return 410;case Un:case Bn:return 412;case qn:return 429;default:return r.issue?.[0]?.code==="exception"?500:400}}function Ko(r,e){if(!Dt(r)||e===void 0)throw new f(r)}var f=class extends Error{constructor(e,t){super(Pr(e)),this.outcome=e,this.cause=t}};function qe(r){return r instanceof f?r.outcome:ye(r)?r:R(jn(r))}function jn(r){return r?typeof r=="string"?r:r instanceof Error?r.message:ye(r)?Pr(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function Pr(r){let e=r.issue?.map($n)??[];return e.length>0?e.join("; "):"Unknown error"}function $n(r){let e;return r.details?.text?r.diagnostics?e=`${r.details.text} (${r.diagnostics})`:e=r.details.text:r.diagnostics?e=r.diagnostics:e="Unknown error",r.expression?.length&&(e+=` (${r.expression.join(", ")})`),e}function se(r,e,t,n,i){let o={severity:r,code:e,details:{text:t},expression:[n]};return i&&(o.diagnostics=JSON.stringify(i)),o}function v(r,e){return se("error","structure",e,r)}function Cr(r,e){return se("error","invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function wr(r,e,t,n){return se("error","processing",e,r,{...n,error:t})}var zo={"http://hl7.org/fhirpath/System.String":"string"};function Jo(r){let e={};return r.min!==0&&(e.min=r.min),r.max!==1&&Number.isFinite(r.max)?e.max=r.max:r.max===Number.POSITIVE_INFINITY&&(e.max=Number.MAX_SAFE_INTEGER),e.type=r.type?.map(t=>({...t,extension:void 0,code:zo[t.code]??t.code})),e}function Wn(r,e){let t=e.max&&e.max===Number.MAX_SAFE_INTEGER?Number.POSITIVE_INFINITY:e.max;return{path:r,description:"",type:e.type??[],min:e.min??0,max:t??1,isArray:!!t&&t>1,constraints:[]}}function Ar(r){let e=Object.create(null);for(let[t,n]of Object.entries(r))e[t]={name:t,elements:Object.fromEntries(Object.entries(n.elements).map(([i,o])=>[i,Wn(i,o)])),constraints:[],innerTypes:[]};return e}var Gn={Element:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]}}},BackboneElement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]}}},Address:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"code"}]},text:{type:[{code:"string"}]},line:{max:9007199254740991,type:[{code:"string"}]},city:{type:[{code:"string"}]},district:{type:[{code:"string"}]},state:{type:[{code:"string"}]},postalCode:{type:[{code:"string"}]},country:{type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Age:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Annotation:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},"author[x]":{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Organization"]},{code:"string"}]},time:{type:[{code:"dateTime"}]},text:{min:1,type:[{code:"markdown"}]}}},Attachment:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},contentType:{type:[{code:"code"}]},language:{type:[{code:"code"}]},data:{type:[{code:"base64Binary"}]},url:{type:[{code:"url"}]},size:{type:[{code:"unsignedInt"}]},hash:{type:[{code:"base64Binary"}]},title:{type:[{code:"string"}]},creation:{type:[{code:"dateTime"}]}}},CodeableConcept:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},coding:{max:9007199254740991,type:[{code:"Coding"}]},text:{type:[{code:"string"}]}}},Coding:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},code:{type:[{code:"code"}]},display:{type:[{code:"string"}]},userSelected:{type:[{code:"boolean"}]}}},ContactDetail:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},name:{type:[{code:"string"}]},telecom:{max:9007199254740991,type:[{code:"ContactPoint"}]}}},ContactPoint:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"code"}]},value:{type:[{code:"string"}]},use:{type:[{code:"code"}]},rank:{type:[{code:"positiveInt"}]},period:{type:[{code:"Period"}]}}},Contributor:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{min:1,type:[{code:"string"}]},contact:{max:9007199254740991,type:[{code:"ContactDetail"}]}}},Count:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},DataRequirement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},"subject[x]":{type:[{code:"CodeableConcept"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Group"]}]},mustSupport:{max:9007199254740991,type:[{code:"string"}]},codeFilter:{max:9007199254740991,type:[{code:"DataRequirementCodeFilter"}]},dateFilter:{max:9007199254740991,type:[{code:"DataRequirementDateFilter"}]},limit:{type:[{code:"positiveInt"}]},sort:{max:9007199254740991,type:[{code:"DataRequirementSort"}]}}},Distance:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Dosage:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},sequence:{type:[{code:"integer"}]},text:{type:[{code:"string"}]},additionalInstruction:{max:9007199254740991,type:[{code:"CodeableConcept"}]},patientInstruction:{type:[{code:"string"}]},timing:{type:[{code:"Timing"}]},"asNeeded[x]":{type:[{code:"boolean"},{code:"CodeableConcept"}]},site:{type:[{code:"CodeableConcept"}]},route:{type:[{code:"CodeableConcept"}]},method:{type:[{code:"CodeableConcept"}]},doseAndRate:{max:9007199254740991,type:[{code:"DosageDoseAndRate"}]},maxDosePerPeriod:{type:[{code:"Ratio"}]},maxDosePerAdministration:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},maxDosePerLifetime:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},Duration:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},ElementDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},representation:{max:9007199254740991,type:[{code:"code"}]},sliceName:{type:[{code:"string"}]},sliceIsConstraining:{type:[{code:"boolean"}]},label:{type:[{code:"string"}]},code:{max:9007199254740991,type:[{code:"Coding"}]},slicing:{type:[{code:"ElementDefinitionSlicing"}]},short:{type:[{code:"string"}]},definition:{type:[{code:"markdown"}]},comment:{type:[{code:"markdown"}]},requirements:{type:[{code:"markdown"}]},alias:{max:9007199254740991,type:[{code:"string"}]},min:{type:[{code:"unsignedInt"}]},max:{type:[{code:"string"}]},base:{type:[{code:"ElementDefinitionBase"}]},contentReference:{type:[{code:"uri"}]},type:{max:9007199254740991,type:[{code:"ElementDefinitionType"}]},"defaultValue[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},meaningWhenMissing:{type:[{code:"markdown"}]},orderMeaning:{type:[{code:"string"}]},"fixed[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},"pattern[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},example:{max:9007199254740991,type:[{code:"ElementDefinitionExample"}]},"minValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},"maxValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},maxLength:{type:[{code:"integer"}]},condition:{max:9007199254740991,type:[{code:"id"}]},constraint:{max:9007199254740991,type:[{code:"ElementDefinitionConstraint"}]},mustSupport:{type:[{code:"boolean"}]},isModifier:{type:[{code:"boolean"}]},isModifierReason:{type:[{code:"string"}]},isSummary:{type:[{code:"boolean"}]},binding:{type:[{code:"ElementDefinitionBinding"}]},mapping:{max:9007199254740991,type:[{code:"ElementDefinitionMapping"}]}}},Expression:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},description:{type:[{code:"string"}]},name:{type:[{code:"id"}]},language:{min:1,type:[{code:"code"}]},expression:{type:[{code:"string"}]},reference:{type:[{code:"uri"}]}}},Extension:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},url:{min:1,type:[{code:"uri"}]},"value[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]}}},HumanName:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},text:{type:[{code:"string"}]},family:{type:[{code:"string"}]},given:{max:9007199254740991,type:[{code:"string"}]},prefix:{max:9007199254740991,type:[{code:"string"}]},suffix:{max:9007199254740991,type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Identifier:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"CodeableConcept"}]},system:{type:[{code:"uri"}]},value:{type:[{code:"string"}]},period:{type:[{code:"Period"}]},assigner:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Organization"]}]}}},MarketingStatus:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},country:{min:1,type:[{code:"CodeableConcept"}]},jurisdiction:{type:[{code:"CodeableConcept"}]},status:{min:1,type:[{code:"CodeableConcept"}]},dateRange:{min:1,type:[{code:"Period"}]},restoreDate:{type:[{code:"dateTime"}]}}},Meta:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},versionId:{type:[{code:"id"}]},lastUpdated:{type:[{code:"instant"}]},source:{type:[{code:"uri"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},security:{max:9007199254740991,type:[{code:"Coding"}]},tag:{max:9007199254740991,type:[{code:"Coding"}]},project:{type:[{code:"uri"}]},author:{type:[{code:"Reference"}]},onBehalfOf:{type:[{code:"Reference"}]},account:{type:[{code:"Reference"}]},compartment:{max:9007199254740991,type:[{code:"Reference"}]}}},Money:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},currency:{type:[{code:"code"}]}}},Narrative:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},status:{min:1,type:[{code:"code"}]},div:{min:1,type:[{code:"xhtml"}]}}},ParameterDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},name:{type:[{code:"code"}]},use:{min:1,type:[{code:"code"}]},min:{type:[{code:"integer"}]},max:{type:[{code:"string"}]},documentation:{type:[{code:"string"}]},type:{min:1,type:[{code:"code"}]},profile:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]}}},Period:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},start:{type:[{code:"dateTime"}]},end:{type:[{code:"dateTime"}]}}},Population:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"age[x]":{type:[{code:"Range"},{code:"CodeableConcept"}]},gender:{type:[{code:"CodeableConcept"}]},race:{type:[{code:"CodeableConcept"}]},physiologicalCondition:{type:[{code:"CodeableConcept"}]}}},ProdCharacteristic:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},height:{type:[{code:"Quantity"}]},width:{type:[{code:"Quantity"}]},depth:{type:[{code:"Quantity"}]},weight:{type:[{code:"Quantity"}]},nominalVolume:{type:[{code:"Quantity"}]},externalDiameter:{type:[{code:"Quantity"}]},shape:{type:[{code:"string"}]},color:{max:9007199254740991,type:[{code:"string"}]},imprint:{max:9007199254740991,type:[{code:"string"}]},image:{max:9007199254740991,type:[{code:"Attachment"}]},scoring:{type:[{code:"CodeableConcept"}]}}},ProductShelfLife:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},identifier:{type:[{code:"Identifier"}]},type:{min:1,type:[{code:"CodeableConcept"}]},period:{min:1,type:[{code:"Quantity"}]},specialPrecautionsForStorage:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},Quantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Range:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},low:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},high:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},Ratio:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},numerator:{type:[{code:"Quantity"}]},denominator:{type:[{code:"Quantity"}]}}},Reference:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},reference:{type:[{code:"string"}]},type:{type:[{code:"uri"}]},identifier:{type:[{code:"Identifier"}]},display:{type:[{code:"string"}]}}},RelatedArtifact:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},label:{type:[{code:"string"}]},display:{type:[{code:"string"}]},citation:{type:[{code:"markdown"}]},url:{type:[{code:"url"}]},document:{type:[{code:"Attachment"}]},resource:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/Resource"]}]}}},SampledData:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},origin:{min:1,type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},period:{min:1,type:[{code:"decimal"}]},factor:{type:[{code:"decimal"}]},lowerLimit:{type:[{code:"decimal"}]},upperLimit:{type:[{code:"decimal"}]},dimensions:{min:1,type:[{code:"positiveInt"}]},data:{type:[{code:"string"}]}}},Signature:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,max:9007199254740991,type:[{code:"Coding"}]},when:{min:1,type:[{code:"instant"}]},who:{min:1,type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},onBehalfOf:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},targetFormat:{type:[{code:"code"}]},sigFormat:{type:[{code:"code"}]},data:{type:[{code:"base64Binary"}]}}},SubstanceAmount:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"amount[x]":{type:[{code:"Quantity"},{code:"Range"},{code:"string"}]},amountType:{type:[{code:"CodeableConcept"}]},amountText:{type:[{code:"string"}]},referenceRange:{type:[{code:"SubstanceAmountReferenceRange"}]}}},Timing:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},event:{max:9007199254740991,type:[{code:"dateTime"}]},repeat:{type:[{code:"TimingRepeat"}]},code:{type:[{code:"CodeableConcept"}]}}},TriggerDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{type:[{code:"string"}]},"timing[x]":{type:[{code:"Timing"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Schedule"]},{code:"date"},{code:"dateTime"}]},data:{max:9007199254740991,type:[{code:"DataRequirement"}]},condition:{type:[{code:"Expression"}]}}},UsageContext:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},code:{min:1,type:[{code:"Coding"}]},"value[x]":{min:1,type:[{code:"CodeableConcept"},{code:"Quantity"},{code:"Range"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/PlanDefinition","http://hl7.org/fhir/StructureDefinition/ResearchStudy","http://hl7.org/fhir/StructureDefinition/InsurancePlan","http://hl7.org/fhir/StructureDefinition/HealthcareService","http://hl7.org/fhir/StructureDefinition/Group","http://hl7.org/fhir/StructureDefinition/Location","http://hl7.org/fhir/StructureDefinition/Organization"]}]}}},MoneyQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},SimpleQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{max:0,type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},IdentityProvider:{elements:{authorizeUrl:{min:1,type:[{code:"string"}]},tokenUrl:{min:1,type:[{code:"string"}]},tokenAuthMethod:{type:[{code:"code"}]},userInfoUrl:{min:1,type:[{code:"string"}]},clientId:{min:1,type:[{code:"string"}]},clientSecret:{min:1,type:[{code:"string"}]},usePkce:{type:[{code:"boolean"}]},useSubject:{type:[{code:"boolean"}]}}}};function Nt(r){return new kr(r).parse()}var je=Ar(Gn),Vr=Object.create(null),Hn=Object.create(null);function Ir(r){let e;return r?(e=Hn[r],e||(e=Hn[r]=Object.create(null))):e=je,e}function Ft(r,e){let t=Array.isArray(r)?r:r.entry?.map(n=>n.resource)??[];for(let n of t)_t(n,e)}function _t(r,e){if(!r?.name)throw new Error("Failed loading StructureDefinition from bundle");if(r.resourceType!=="StructureDefinition")return;let t=Nt(r),n=Ir(e);n[r.name]=t,e&&r.url===e&&(Vr[e]=t);for(let i of t.innerTypes)i.parentType=t,n[i.name]=i}function Dr(){return je}function Mr(r){return!!je[r]}function we(r,e){let t=Ir(e)[r];return!t&&e&&(t=Ir()[r]),t}function J(r,e){let t=we(r,e);if(!t)throw new f(R("Unknown data type: "+r));return t}function Nr(r){let e=je[r];return e&&Lt(e)}function Fr(r){return!!Vr[r]}function _r(r){return Vr[r]}var kr=class{constructor(e){if(!e.snapshot?.element||e.snapshot.element.length===0)throw new Error(`No snapshot defined for StructureDefinition '${e.name}'`);this.root=e.snapshot.element[0],this.elements=e.snapshot.element.slice(1),this.elementIndex=Object.create(null),this.index=0,this.resourceSchema={name:e.name,title:e.title,type:e.type,url:e.url,kind:e.kind,description:rs(e),elements:{},constraints:this.parseElementDefinition(this.root).constraints,innerTypes:[],summaryProperties:new Set,mandatoryProperties:new Set},this.innerTypes=[]}parse(){let e=this.next();for(;e;){if(e.sliceName)this.parseSliceStart(e);else if(e.id?.includes(":")){if(this.slicingContext?.current){let t=Or(e,this.slicingContext.path);this.slicingContext.current.elements[t]=this.parseElementDefinition(e)}}else{let t=this.parseElementDefinition(e);this.checkFieldEnter(e,t);let n=this.backboneContext;for(;n;){if(e.path?.startsWith(n.path+".")){n.type.elements[Or(e,n.path)]=t;break}n=n.parent}if(!n){let i=Or(e,this.root.path);e.isSummary&&this.resourceSchema.summaryProperties?.add(i.replace("[x]","")),t.min>0&&this.resourceSchema.mandatoryProperties?.add(i.replace("[x]","")),this.resourceSchema.elements[i]=t}this.checkFieldExit(e)}e=this.next()}return this.checkFieldExit(),this.innerTypes.length>0&&(this.resourceSchema.innerTypes=this.innerTypes),this.resourceSchema}checkFieldEnter(e,t){this.isInnerType(e)&&this.enterInnerType(e),e.slicing&&!this.slicingContext&&this.enterSlice(e,t)}enterInnerType(e){for(;this.backboneContext&&!Ce(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;this.backboneContext={type:{name:Mt(e),title:e.label,description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path??"",parent:Ce(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,t){ts(e)&&!this.peek()?.sliceName||(t.slicing={discriminator:(e.slicing?.discriminator??[]).map(n=>{if(n.type!=="value"&&n.type!=="pattern"&&n.type!=="type")throw new Error(`Unsupported slicing discriminator type: ${n.type}`);return{path:n.path,type:n.type}}),slices:[],ordered:e.slicing?.ordered??!1,rule:e.slicing?.rules},this.slicingContext={field:t.slicing,path:e.path??""})}checkFieldExit(e=void 0){if(this.backboneContext&&!Ce(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!Ce(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),this.backboneContext=void 0;this.slicingContext&&!Ce(this.slicingContext.path,e?.path)&&(this.slicingContext?.current&&this.slicingContext.field.slices.push(this.slicingContext.current),this.slicingContext=void 0)}next(){let e=this.peek();if(e)return this.index++,e}peek(){let e=this.elements[this.index];if(e){if(this.elementIndex[e.path??""]=e,e.contentReference){let t=e.contentReference.slice(e.contentReference.indexOf("#")+1),n=this.elementIndex[t];return n?{...n,id:e.id,path:e.path,min:e.min??n.min,max:e.max??n.max,base:{path:n.base?.path??t,min:e.base?.min??n.base?.min??n.min,max:e.base?.max??n.base?.max??n.max},contentReference:e.contentReference,definition:e.definition}:void 0}return e}}isInnerType(e){let t=this.peek();return!!(Ce(e?.path,t?.path)&&e.type?.some(n=>["BackboneElement","Element"].includes(n.code)))}parseSliceStart(e){if(!this.slicingContext)throw new Error(`Invalid slice start before discriminator: ${e.sliceName} (${e.id})`);this.slicingContext.current&&this.slicingContext.field.slices.push(this.slicingContext.current),this.slicingContext.current={...this.parseElementDefinition(e),name:e.sliceName??"",definition:e.definition,elements:{}}}parseElementDefinitionType(e){return(e.type??[]).map(t=>{let n;return(t.code==="BackboneElement"||t.code==="Element")&&(n=Mt(e)),n||(n=Y(t,"http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type")?.valueUrl),n||(n=t.code??""),{code:n,targetProfile:t.targetProfile,profile:t.profile}})}parseElementDefinition(e){let t=Kn(e.max),n=e.base?.max?Kn(e.base.max):t,i={type:"ElementDefinition",value:e};return{description:e.definition||"",path:e.path||e.base?.path||"",min:e.min??0,max:t,isArray:n>1,constraints:(e.constraint??[]).map(o=>({key:o.key??"",severity:o.severity??"error",expression:o.expression??"",description:o.human??""})),type:this.parseElementDefinitionType(e),fixed:zn(C(i,"fixed[x]")),pattern:zn(C(i,"pattern[x]")),binding:e.binding}}};function Zo(r,e){if(!r)return;let t=[];for(let n of e){t.push("_"+n);let i=je[r.resourceType].elements[n+"[x]"];i&&t.push(...i.type.map(o=>n+w(o.code)))}for(let n of Object.getOwnPropertyNames(r))!e.includes(n)&&!t.includes(n)&&!Xo.includes(n)&&Object.defineProperty(r,n,{enumerable:!1,writable:!1,value:void 0});return r.meta={...r.meta,tag:r.meta?.tag?r.meta.tag.concat(Qn):[Qn]},r}var Qn={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},Xo=["resourceType","id","meta"];function Kn(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function Or(r,e=""){return es(r.path,e)}function es(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function Ce(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function zn(r){return Array.isArray(r)&&r.length>0?r[0]:S(r)?void 0:r}function ts(r){let e=r.slicing?.discriminator;return!!(r.type?.some(t=>t.code==="Extension")&&e?.length===1&&e[0].type==="value"&&e[0].path==="url")}function rs(r){let e=r.description;return e?.startsWith(`Base StructureDefinition for ${r.name} Type: `)&&(e=e.substring(`Base StructureDefinition for ${r.name} Type: `.length)),e}function ns(r){return"elements"in r}function is(r){return!!r.visitPropertyAsync}function Ut(r,e,t,n){let i;if(t&&ns(t)?i={schema:t,initialPath:n}:i=t,is(e))return new Ur(r,e,i).crawl();new Lr(r,e,i).crawl()}var Lr=class{constructor(e,t,n){this.rootResource=e,this.visitor=t,this.schema=n?.schema??J(e.resourceType),this.initialPath=n?.initialPath??e.resourceType,this.excludeMissingProperties=n?.skipMissingProperties}crawl(){this.crawlObject({...x(this.rootResource),path:this.initialPath},this.schema,this.initialPath)}crawlObject(e,t,n){let i=O(e.value);if(i&&this.visitor.onEnterResource&&this.visitor.onEnterResource(n,e,t),this.visitor.onEnterObject&&this.visitor.onEnterObject(n,e,t),this.excludeMissingProperties)for(let o of Object.keys(e.value))this.crawlProperty(e,o,t,`${n}.${o}`);else for(let o of Object.keys(t.elements))this.crawlProperty(e,o,t,`${n}.${o}`);this.visitor.onExitObject&&this.visitor.onExitObject(n,e,t),i&&this.visitor.onExitResource&&this.visitor.onExitResource(n,e,t)}crawlProperty(e,t,n,i){let o=ge(e,t,{withPath:!0});this.visitor.visitProperty&&this.visitor.visitProperty(e,t,i,o,n);for(let s of o)if(s)for(let a of Oe(s))this.crawlPropertyValue(a,i)}crawlPropertyValue(e,t){if(!Ae(e.type.charAt(0))){let n=J(e.type);this.crawlObject(e,n,t)}}},Ur=class{constructor(e,t,n){this.rootResource=e,this.visitor=t,this.schema=n?.schema??J(e.resourceType),this.initialPath=n?.initialPath??e.resourceType,this.excludeMissingProperties=n?.skipMissingProperties}async crawl(){return this.crawlObject({...x(this.rootResource),path:this.initialPath},this.schema,this.initialPath)}async crawlObject(e,t,n){let i=O(e.value);if(i&&this.visitor.onEnterResource&&await this.visitor.onEnterResource(n,e,t),this.visitor.onEnterObject&&await this.visitor.onEnterObject(n,e,t),this.excludeMissingProperties)for(let o of Object.keys(e.value))await this.crawlProperty(e,o,t,`${n}.${o}`);else for(let o of Object.keys(t.elements))await this.crawlProperty(e,o,t,`${n}.${o}`);this.visitor.onExitObject&&await this.visitor.onExitObject(n,e,t),i&&this.visitor.onExitResource&&await this.visitor.onExitResource(n,e,t)}async crawlProperty(e,t,n,i){let o=ge(e,t,{withPath:!0});if(this.visitor.visitPropertyAsync)for(let s of o)await this.visitor.visitPropertyAsync(e,t,i,s,n);for(let s of o)if(s)for(let a of Oe(s))await this.crawlPropertyValue(a,i)}async crawlPropertyValue(e,t){if(!Ae(e.type.charAt(0))){let n=J(e.type);await this.crawlObject(e,n,t)}}};function ge(r,e,t){if(r===void 0)return[void 0];if(e==="$this")return[r];let n=t?.withPath?Jn:C,[i,...o]=e.split("."),s=[n(r,i,t)];for(let a of o){let c=[];for(let u of s)if(Array.isArray(u))for(let p of u)c.push(n(p,a,t));else(t?.withPath&&u&&u.value!==void 0||!t?.withPath&&u!==void 0)&&c.push(n(u,a,t));s=c}return s}function Jn(r,e,t){let n=r.path;return os(C(r,e,t),n,e)}function os(r,e,t){let n=e?e+".":"";return r===void 0?{type:"undefined",value:void 0,path:`${n}${t}`}:Array.isArray(r)?r.map((i,o)=>({...i,path:`${n}${t}[${o}]`})):{...r,path:`${n}${t}`}}var Br={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"},$e={base64Binary:/^([A-Za-z\d+/]{4})*([A-Za-z\d+/]{2}==|[A-Za-z\d+/]{3}=)?$/,canonical:/^\S*$/,code:/^[^\s]+( [^\s]+)*$/,date:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2]\d|3[0-1]))?)?$/,dateTime:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2]\d|3[0-1])(T([01]\d|2[0-3])(:[0-5]\d:([0-5]\d|60)(\.\d{1,9})?)?)?)?(Z|[+-]((0\d|1[0-3]):[0-5]\d|14:00)?)?)?$/,id:/^[A-Za-z0-9\-.]{1,64}$/,instant:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\d|3[0-1])T([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?(Z|[+-]((0\d|1[0-3]):[0-5]\d|14:00))$/,markdown:/^[\s\S]+$/,oid:/^urn:oid:[0-2](\.(0|[1-9]\d*))+$/,string:/^[\s\S]+$/,time:/^([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?$/,uri:/^\S*$/,url:/^\S*$/,uuid:/^urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,xhtml:/.*/},ss={"ele-1":!0,"dom-3":!0,"org-1":!0,"sdf-19":!0};function as(r,e){if(!r.resourceType)throw new f(h("Missing resource type"));return new Bt(x(r),e).validate()}function cs(r,e){return new Bt(r,e).validate()}var Bt=class{constructor(e,t){this.issues=[],this.root=e,this.currentResource=[],O(e.value)&&this.currentResource.push(e.value),t?.profile?this.schema=Nt(t.profile):this.schema=J(e.type)}validate(){this.constraintsCheck(this.root,this.schema,this.root.type),qr(this.root.value,this.root.type,this.issues),Ut(this.root.value,this,this.schema,this.root.type);let e=this.issues,t=!1;for(let n of e)n.severity==="error"&&(t=!0);if(t)throw new f({resourceType:"OperationOutcome",issue:e});return e}onExitObject(e,t,n){this.checkAdditionalProperties(t,n.elements,e)}onEnterResource(e,t){this.currentResource.push(t.value)}onExitResource(){this.currentResource.pop()}visitProperty(e,t,n,i,o){let s=o.elements[t];if(!s)throw new Error(`Missing element validation schema for ${t}`);for(let a of i){if(!this.checkPresence(a,s,n))return;let c;if(s.isArray){if(!Array.isArray(a)){this.issues.push(v(n,"Expected array of values for property"));return}c=a}else{if(Array.isArray(a)){this.issues.push(v(n,"Expected single value for property"));return}c=[a]}(c.length<s.min||c.length>s.max)&&this.issues.push(v(s.path,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${c.length}`)),ps(a,s)||this.issues.push(v(n,"Value did not match expected pattern"));let u=s.slicing?Object.fromEntries(s.slicing.slices.map(p=>[p.name,0])):void 0;for(let p of c){this.constraintsCheck(p,s,n),this.referenceTypeCheck(p,s,n),this.checkPropertyValue(p,n);let m=ds(p,s.slicing);m&&u&&(u[m]+=1)}this.validateSlices(s.slicing?.slices,u,n)}}checkPresence(e,t,n){return!Array.isArray(e)&&e.value===void 0?(t.min>0&&this.issues.push(v(e.path,"Missing required property")),!1):S(e)?(this.issues.push(v(n,"Invalid empty value")),!1):!0}checkPropertyValue(e,t){Ae(e.type.charAt(0))&&this.validatePrimitiveType(e,t)}validateSlices(e,t,n){if(!(!e||!t))for(let i of e){let o=t[i.name];(o<i.min||o>i.max)&&this.issues.push(v(n,`Incorrect number of values provided for slice '${i.name}': expected ${i.min}..${Number.isFinite(i.max)?i.max:"*"}, but found ${o}`))}}checkAdditionalProperties(e,t,n){let i=e.value;if(!i)return;let o={};for(let s of Object.keys(i)){if(s==="resourceType")continue;let a=ls(e,s,t);if(a){let c,u;a.startsWith("_")?(c=a.slice(1),u=s.slice(1)):(c="_"+a,u="_"+s),c in o&&o[c]!==u&&this.issues.push(se("warning","structure",`Type of primitive extension does not match the type of property "${a.startsWith("_")?a.slice(1):a}"`,a)),o[a]&&this.issues.push(se("warning","structure",`Duplicate choice of type property "${a}"`,a)),o[a]=s;continue}!(s in t)&&!(s.startsWith("_")&&s.slice(1)in t)&&this.issues.push(v(`${n}.${s}`,`Invalid additional property "${s}"`))}}constraintsCheck(e,t,n){let i=t.constraints;if(i){for(let o of i)if(o.severity==="error"&&!(o.key in ss)&&!this.isExpressionTrue(o,e,n)){this.issues.push(Cr(n,o));return}}}referenceTypeCheck(e,t,n){if(e.type!=="Reference")return;let i=e.value;if(!ae(i))return;let o=i.reference.split("/")[0];if(!o)return;let s=t.type.find(g=>g.code==="Reference")?.targetProfile;if(!s)return;let a=xr+"/fhir/StructureDefinition/",c=a+"Resource",u=a+o,p="https://medplum.com/fhir/StructureDefinition/",m=p+o;for(let g of s)if(g===c||g===u||g===m||!g.startsWith(a)&&!g.startsWith(p))return;this.issues.push(se("warning","structure",`Invalid reference for "${n}", got "${o}", expected "${s.join('", "')}"`,n))}isExpressionTrue(e,t,n){let i={"%context":t,"%ucum":x(gr)};this.currentResource.length>0&&(i["%resource"]=x(this.currentResource[this.currentResource.length-1])),O(this.root.value)&&(i["%rootResource"]=this.root);try{let o=A(e.expression,[t],i);return o.length===1&&o[0].value===!0}catch(o){return this.issues.push(wr(n,"Error evaluating invariant expression",o,{fhirpath:e.expression})),!1}}validatePrimitiveType(e,t){let[n,i]=fs(e);if(n){let{type:o,value:s}=n;if(!(o in Br)){this.issues.push(v(t,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=Br[o];if(typeof s!==a){s!==null&&this.issues.push(v(t,`Invalid JSON type: expected ${a}, but got ${typeof s}`));return}a==="string"?this.validateString(s,o,t):a==="number"&&this.validateNumber(s,o,t)}i&&Ut(i.value,this,J("Element"),t)}validateString(e,t,n){if(!e.trim()){this.issues.push(v(n,"String must contain non-whitespace content"));return}let i=$e[t];i&&!i.exec(e)&&this.issues.push(v(n,"Invalid "+t+" format"))}validateNumber(e,t,n){Number.isNaN(e)||!Number.isFinite(e)?this.issues.push(v(n,"Invalid numeric value")):us(t)&&!Number.isInteger(e)?this.issues.push(v(n,"Expected number to be an integer")):t===l.positiveInt&&e<=0?this.issues.push(v(n,"Expected number to be positive")):t===l.unsignedInt&&e<0&&this.issues.push(v(n,"Expected number to be non-negative"))}};function us(r){return r===l.integer||r===l.positiveInt||r===l.unsignedInt}function ls(r,e,t){let n="";e.startsWith("_")&&(e=e.slice(1),n="_");let i=e.split(/(?=[A-Z])/g),o="";for(let s of i){o+=s;let a=o+"[x]";if(t[a])return C(r,o)?n+a:void 0}}function qr(r,e,t){for(let[n,i]of Object.entries(r)){let o=`${e}.${n}`,s=n.startsWith("_")?n.slice(1):`_${n}`;if(i===null)t.push(v(o,"Invalid null value"));else if(Array.isArray(i))for(let a=0;a<i.length;a++)i[a]===void 0?t.push(v(`${o}[${a}]`,"Invalid undefined value")):i[a]===null&&!r[s]?.[a]?t.push(v(`${o}[${a}]`,"Invalid null value")):i[a]&&qr(i[a],`${o}[${a}]`,t);else typeof i=="object"&&qr(i,o,t)}}function ps(r,e){let t=Array.isArray(r)?r.map(n=>({type:n.type,value:n.value})):{type:r.type,value:r.value};return!(e.pattern&&!Ie(t,e.pattern)||e.fixed&&!Z(t,e.fixed))}function qt(r,e,t,n){if(Array.isArray(r))return!1;let i;e.path==="$this"?i=t:i=(n??t.elements)[e.path];let o=t.type;switch(e.type){case"value":case"pattern":if(!r||!i)return!1;if(i.pattern)return Ie(r,i.pattern);if(i.fixed)return Z(r,i.fixed);if(i.binding?.strength==="required"&&i.binding.valueSet)return!0;break;case"type":return!r||!o?.length?!1:o.some(s=>s.code===r.type)}return!1}function ds(r,e){if(e){for(let t of e.slices)if(e.discriminator.every(n=>Oe(ge(r,n.path))?.some(i=>qt(i,n,t))))return t.name}}function fs(r){if(typeof r.value!="object"||!r.value)return[r,void 0];let e=r.value.valueOf();if(e===r.value)return[void 0,{type:"Element",value:r.value}];let t=new Set(Object.keys(e)),n=Object.entries(r.value).filter(([o,s])=>!t.has(o)),i=n.length>0?Object.fromEntries(n):void 0;return[{type:r.type,value:e},{type:"Element",value:i}]}function d(r){return[{type:l.boolean,value:r}]}function x(r){return r==null?{type:"undefined",value:void 0}:Number.isSafeInteger(r)?{type:l.integer,value:r}:typeof r=="number"?{type:l.decimal,value:r}:typeof r=="boolean"?{type:l.boolean,value:r}:typeof r=="string"?{type:l.string,value:r}:I(r)?{type:l.Quantity,value:r}:O(r)?{type:r.resourceType,value:r}:{type:l.BackboneElement,value:r}}function N(r){return r.length===0?!1:!!r[0].value}function B(r,e){if(r.length!==0){if(r.length===1&&(!e||r[0].type===e))return r[0];throw new Error(`Expected singleton of type ${e}, but found ${JSON.stringify(r)}`)}}function C(r,e,t){if(!r.value)return;let n=Qe(r.type,e,t?.profileUrl);return n?ri(r,e,n):ms(r,e)}function ri(r,e,t){let n=r.value,i=t.type;if(!i||i.length===0)return;let o,s="undefined",a;if(t.path.endsWith("[x]")){let c=t.path.split(".").pop().replace("[x]","");for(let u of i){let p=c+w(u.code);if(o=n[p],a=n["_"+p],o!==void 0||a!==void 0){s=u.code;break}}}else console.assert(i.length===1,"Expected single type",t.path),o=n[e],s=i[0].code,a=n["_"+e];if(a)if(Array.isArray(o)){o=o.slice();for(let c=0;c<Math.max(o.length,a.length);c++)o[c]=ti(o[c],a[c])}else o=ti(o,a);if(!S(o))return(s==="Element"||s==="BackboneElement")&&(s=t.type[0].code),Array.isArray(o)?o.map(c=>Yn(c,s)):Yn(o,s)}function Yn(r,e){return e==="Resource"&&O(r)&&(e=r.resourceType),{type:e,value:r}}function ms(r,e){let t=r.value;if(!t||typeof t!="object")return;let n;if(e in t)n=t[e];else for(let i in l){let o=e+w(i);if(o in t){n=t[o];break}}if(!S(n))return Array.isArray(n)?n.map(x):x(n)}function Ge(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(N(jt(t,i))){n=!0;break}n||e.push(t)}return e}function jr(r){return d(!N(r))}function $r(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?d(!1):d(r.every((t,n)=>N(jt(t,e[n]))))}function Wr(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?d(!0):d(r.some((t,n)=>!N(jt(t,e[n]))))}function jt(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?d(Math.abs(t-n)<1e-8):I(t)&&I(n)?d(Qr(t,n)):d(typeof t=="object"&&typeof n=="object"?Kr(r,e):t===n)}function $t(r,e){return r.length===0&&e.length===0?d(!0):r.length!==e.length?d(!1):(r.sort(Zn),e.sort(Zn),d(r.every((t,n)=>N(ni(t,e[n])))))}function ni(r,e){let{type:t,value:n}=r,{type:i,value:o}=e,s=n?.valueOf(),a=o?.valueOf();return typeof s=="number"&&typeof a=="number"?d(Math.abs(s-a)<.01):I(s)&&I(a)?d(Qr(s,a)):d(t==="Coding"&&i==="Coding"?typeof s!="object"||typeof a!="object"?!1:s.code===a.code&&s.system===a.system:typeof s=="object"&&typeof a=="object"?Kr({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function Zn(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?t-n:typeof t=="string"&&typeof n=="string"?t.localeCompare(n):0}function He(r,e){let{value:t}=r;if(t==null)return!1;switch(e){case"Boolean":return typeof t=="boolean";case"Decimal":case"Integer":return typeof t=="number";case"Date":return Gr(t);case"DateTime":return We(t);case"Time":return typeof t=="string"&&!!/^T\d/.exec(t);case"Period":return Hr(t);case"Quantity":return I(t);default:return typeof t=="object"&&t?.resourceType===e}}function Gr(r){return typeof r=="string"&&!!$e.date.exec(r)}function We(r){return typeof r=="string"&&!!$e.dateTime.exec(r)}function Hr(r){return!!(r&&typeof r=="object"&&("start"in r&&We(r.start)||"end"in r&&We(r.end)))}function hs(r){if(r){if(Gr(r))return{start:Xn(r,"0000-00-00T00:00:00.000Z"),end:Xn(r,"xxxx-12-31T23:59:59.999Z")};if(We(r))return{start:r,end:r};if(Hr(r))return r}}function Xn(r,e){return r+e.substring(r.length)}function I(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function Qr(r,e){return Math.abs(r.value-e.value)<.01&&(r.unit===e.unit||r.code===e.code||r.unit===e.code||r.code===e.unit)}function Kr(r,e){let t=Object.keys(r),n=Object.keys(e);if(t.length!==n.length)return!1;for(let i of t){let o=r[i],s=e[i];if(ei(o)&&ei(s)){if(!Kr(o,s))return!1}else if(o!==s)return!1}return!0}function ei(r){return r!==null&&typeof r=="object"}function ti(r,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return ys(r??{},e)}return r}function ys(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}function X(r){let e=ce(r),t=si(r);return t===e?{reference:e}:{reference:e,display:t}}function ce(r){return ae(r)?r.reference:`${r.resourceType}/${r.id}`}function xe(r){if(r)return ae(r)?r.reference.split("/")[1]:r.id}function gs(r){if(r?.reference===void 0)throw new f(h("Reference missing reference property."));let[e,t]=r.reference.split("/");if(e===""||t===""||t===void 0)throw new f(h("Unable to parse reference string."));return[e,t]}function oi(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function si(r){if(oi(r)){let e=xs(r);if(e)return e}if(r.resourceType==="Device"){let e=vs(r);if(e)return e}if(r.resourceType==="MedicationRequest"&&r.medicationCodeableConcept)return Ke(r.medicationCodeableConcept);if(r.resourceType==="Subscription"&&r.criteria)return r.criteria;if(r.resourceType==="User"&&r.email)return r.email;if("name"in r&&r.name&&typeof r.name=="string")return r.name;if("code"in r&&r.code){let e=r.code;if(Array.isArray(e)&&(e=e[0]),di(e))return Ke(e);if(fi(e))return e.text}return ce(r)}function xs(r){let e=r.name;if(e&&e.length>0)return Ye(e[0])}function vs(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function Ts(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=ii(t);if(n)return n}else return ii(e)}function ii(r){if(r.url&&r.contentType?.startsWith("image/"))return r.url}function Ss(r){return r?new Date(r):void 0}function ze(r,e){let t=new Date(r);t.setUTCHours(0,0,0,0);let n=e?new Date(e):new Date;n.setUTCHours(0,0,0,0);let i=t.getUTCFullYear(),o=t.getUTCMonth(),s=t.getUTCDate(),a=n.getUTCFullYear(),c=n.getUTCMonth(),u=n.getUTCDate(),p=a-i;(c<o||c===o&&u<s)&&p--;let m=a*12+c-(i*12+o);u<s&&m--;let g=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:p,months:m,days:g}}function Es(r,e){let{years:t,months:n,days:i}=ze(r,e);return t>=2?t.toString().padStart(3,"0")+"Y":n>=1?n.toString().padStart(3,"0")+"M":i.toString().padStart(3,"0")+"D"}function bs(r){let e={};return ai(r.item,e),e}function ai(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),ai(t.item,e)}function Rs(r){let e={};return ci(r.item,e),e}function ci(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]?e[t.linkId]=[...e[t.linkId],...t.answer]:e[t.linkId]=t.answer),ci(t.item,e)}function ui(r,e){let t=r.identifier;if(!t)return;let n=Array.isArray(t)?t:[t];for(let i of n)if(i.system===e)return i.value}function Ps(r,e,t){let n=r.identifier;if(!n){r.identifier=[{system:e,value:t}];return}for(let i of n)if(i.system===e){i.value=t;return}n.push({system:e,value:t})}function Cs(r,...e){let t=Y(r,...e);if(!t)return;let n=C({type:"Extension",value:t},"value[x]");if(n)return Array.isArray(n)?n[0].value:n.value}function Y(r,...e){let t=r;for(let n=0;n<e.length&&t;n++)t=t?.extension?.find(i=>i.url===e[n]);return t}function zr(r,e){return JSON.stringify(r,ws,e?2:void 0)}function ws(r,e){return!As(r)&&S(e)?void 0:e}function As(r){return!!/\d+$/.exec(r)}function S(r){if(r==null)return!0;let e=typeof r;return e==="string"||e==="object"?!$(r):!1}function $(r){if(r==null)return!1;let e=typeof r;return e==="string"&&r!==""||e==="object"&&("length"in r&&r.length>0||Object.keys(r).length>0)}function Z(r,e,t){return r===e||S(r)&&S(e)?!0:S(r)||S(e)?!1:Array.isArray(r)&&Array.isArray(e)?Os(r,e):Array.isArray(r)||Array.isArray(e)?!1:E(r)&&E(e)?Is(r,e,t):(E(r)||E(e),!1)}function Os(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!Z(r[t],e[t]))return!1;return!0}function Is(r,e,t){let n=new Set;Object.keys(r).forEach(i=>n.add(i)),Object.keys(e).forEach(i=>n.add(i)),t==="meta"&&(n.delete("versionId"),n.delete("lastUpdated"),n.delete("author"));for(let i of n){let o=r[i],s=e[i];if(!Z(o,s,i))return!1}return!0}function Ie(r,e){return S(r)?!0:S(e)?!1:Array.isArray(r)&&Array.isArray(e)?ks(r,e):Array.isArray(r)||Array.isArray(e)?!1:E(r)&&E(e)?Vs(r,e):E(r)||E(e)?!1:r===e}function ks(r,e){return e.every(t=>r.some(n=>Ie(n,t)))}function Vs(r,e){return Object.entries(e).every(([t,n])=>t in r&&Ie(r[t],n))}function ue(r){return r===void 0?r:JSON.parse(JSON.stringify(r))}function Ds(r){return!!/^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/i.exec(r)}function E(r){return r!==null&&typeof r=="object"}function Jr(r){return r.every(li)}function li(r){return typeof r=="string"}function pi(r){return E(r)&&"code"in r&&typeof r.code=="string"}function di(r){return E(r)&&"coding"in r&&Array.isArray(r.coding)&&r.coding.every(pi)}function fi(r){return E(r)&&"text"in r&&typeof r.text=="string"}var mi=[];for(let r=0;r<256;r++)mi.push(r.toString(16).padStart(2,"0"));function Yr(r){let e=new Uint8Array(r),t=new Array(e.length);for(let n=0;n<e.length;n++)t[n]=mi[e[n]];return t.join("")}function Zr(r){let e=new Uint8Array(r),t=[];for(let n=0;n<e.length;n++)t[n]=String.fromCharCode(e[n]);return window.btoa(t.join(""))}function w(r){return r?r.charAt(0).toUpperCase()+r.substring(1):""}function Ae(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function Gt(r){return r.length>0&&r.startsWith(r[0].toUpperCase())}function ve(r,e){let t=r+".";if(e.startsWith(t))return e.slice(t.length)}function Wt(r,e){return r.coding?.find(t=>t.system===e)?.code}function Ms(r,e,t){r.coding||(r.coding=[]);let n=r.coding.find(i=>i.system===e);n?n.code=t:r.coding.push({system:e,code:t})}function Ns(r,e,t,n){return r.qualifiedInterval?.find(i=>hi(i,e)&&Us(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function Fs(r,e,t){return r.qualifiedInterval?.find(n=>hi(n,e)&&t.includes(n.condition))}function hi(r,e){return _s(r,e)&&Ls(r,e)}function _s(r,e){return!r.gender||r.gender===e.gender}function Ls(r,e){return!r.age||Xr(ze(e.birthDate).years,r.age)}function Us(r,e,t){return!!r.range&&Xr(e,r.range,t)}function Xr(r,e,t){return(e.low?.value===void 0||gi(r,e.low.value,t))&&(e.high?.value===void 0||yi(r,e.high.value,t))}function Bs(r,e){return parseFloat(r.toFixed(e))}function qs(r,e,t){return j(r,t)===j(e,t)}function js(r,e,t){return j(r,t)<j(e,t)}function $s(r,e,t){return j(r,t)>j(e,t)}function yi(r,e,t){return j(r,t)<=j(e,t)}function gi(r,e,t){return j(r,t)>=j(e,t)}function j(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function Ws(r,e,t){return r.find(n=>typeof e=="string"?Wt(n.code||{},t)===e:Wt(n.code||{},t)===Wt(e,t))}function Oe(r){if(r)return Array.isArray(r)?r:[r]}var Ht=r=>new Promise(e=>{setTimeout(e,r)});function Qt(r,e,t){let n=[];for(let i=0;i<t-1;i++){let o=r.indexOf(e);if(o<0)break;n.push(r.slice(0,o)),r=r.slice(o+e.length)}return n.push(r),n}function en(r){let e,t=!1;return function(){return t||(e=r(),t=!0),e}}function Te(r,e){return r?(r.push(e),r):[e]}function Je(r){return r.sort((e,t)=>e.localeCompare(t))}function Kt(r){return r.endsWith("/")?r:r+"/"}function xi(r){return r.startsWith("/")?r.slice(1):r}function q(r,e){return new URL(xi(e),Kt(r.toString())).toString()}function tn(r,e){return q(r,e).toString().replace("http://","ws://").replace("https://","wss://")}function rn(r){return typeof r=="object"&&!Array.isArray(r)&&!(r instanceof URLSearchParams)&&(r=Object.fromEntries(Object.entries(r).filter(e=>e[1]!==void 0))),new URLSearchParams(r).toString()}var vi=/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-_]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-_]*[A-Za-z0-9])$/;function Gs(r){return vi.test(r)}function Hs(r,e){return r?.meta?.profile?.includes(e)||(r.meta=r.meta??{},r.meta.profile=r.meta.profile??[],r.meta.profile.push(e)),r}function Qs(r,e){return new Map(r.entry?.filter(n=>!!n.resource).map(n=>[ui(n.resource,e),n.resource]).filter(([n])=>n!==void 0))}function Ks(r,e){if(r?.meta?.profile?.includes(e)){let t=r.meta.profile.indexOf(e);r.meta.profile.splice(t,1)}return r}function zs(r,e){let t=[];for(let n=0;n<r.length;n++){let i=e(r[n],n);i!==void 0&&t.push(i)}return t}function Js(r,e){let t=[];if(r.line&&t.push(...r.line),r.city||r.state||r.postalCode){let n=[];r.city&&n.push(r.city),r.state&&n.push(r.state),r.postalCode&&n.push(r.postalCode),t.push(n.join(", "))}return r.use&&(e?.all||e?.use)&&t.push("["+r.use+"]"),t.join(e?.lineSeparator??", ").trim()}function Ye(r,e){let t=[];if(r.prefix&&e?.prefix!==!1&&t.push(...r.prefix),r.given&&t.push(...r.given),r.family&&t.push(r.family),r.suffix&&e?.suffix!==!1&&t.push(...r.suffix),r.use&&(e?.all||e?.use)&&t.push("["+r.use+"]"),t.length===0){let n=ke(r.text);if(n)return n}return t.join(" ").trim()}function Ys(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function Zs(r){return ke(r.family)??""}function Jt(r){return r instanceof Date&&!isNaN(r.getTime())}function Xs(r,e,t){if(!r)return"";let n=new Date(r);return Jt(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function Ti(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return Jt(n)?n.toLocaleTimeString(e,t):""}function zt(r,e,t){if(!r)return"";let n=new Date(r);return Jt(n)?n.toLocaleString(e,t):""}function ea(r,e,t){return!r||!r.start&&!r.end?"":zt(r.start,e,t)+" - "+zt(r.end,e,t)}var ta={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},ra={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},na={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function ia(r){if(!r)return"";let e=[];return oa(e,r.repeat),r.event&&e.push(r.event.map(t=>zt(t)).join(", ")),w(e.join(" ").trim())}function oa(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(ta[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+ra[i]):r.push("per "+n+" "+na[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(w).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>Ti(o)).join(", "))}function sa(r,e,t=!1){if(t&&e===void 0)throw new Error("Precision must be specified for exclusive ranges");let n=r?.low&&{...r.low,comparator:void 0},i=r?.high&&{...r.high,comparator:void 0};return n?.value===void 0&&i?.value===void 0?"":n?.value!==void 0&&i?.value===void 0?t&&e!==void 0?(n.value=ua(n.value,e),`> ${le(n,e)}`):`>= ${le(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=ca(i.value,e),`< ${le(i,e)}`):`<= ${le(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${le(n,e)} - ${le(i,e)}`)}function le(r,e){if(!r)return"";let t=[];return r.comparator&&(t.push(r.comparator),t.push(" ")),r.value!==void 0&&(e!==void 0?t.push(r.value.toFixed(e)):t.push(r.value)),r.unit&&(r.unit!=="%"&&t[t.length-1]!==" "&&t.push(" "),t.push(r.unit)),t.join("").trim()}function aa(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function Ke(r){if(!r)return"";let e=ke(r.text);return e||(r.coding?r.coding.map(t=>Si(t)).join(", "):"")}function Si(r){return ke(r?.display)??ke(r?.code)??""}function Ei(r){if(!r)return"";let e=[];if(r.valueQuantity)e.push(le(r.valueQuantity));else if(r.valueCodeableConcept)e.push(Ke(r.valueCodeableConcept));else{let t=ke(r.valueString);t&&e.push(t)}return"component"in r&&e.push(r.component.map(t=>Ei(t)).join(" / ")),e.join(" / ").trim()}function ke(r){return typeof r=="string"?r:void 0}function ca(r,e,t=1){return(bi(r,e)+t)*Math.pow(10,-e)}function ua(r,e,t=1){return(bi(r,e)-t)*Math.pow(10,-e)}function bi(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}var l={Address:"Address",Age:"Age",Annotation:"Annotation",Attachment:"Attachment",BackboneElement:"BackboneElement",CodeableConcept:"CodeableConcept",Coding:"Coding",ContactDetail:"ContactDetail",ContactPoint:"ContactPoint",Contributor:"Contributor",Count:"Count",DataRequirement:"DataRequirement",Distance:"Distance",Dosage:"Dosage",Duration:"Duration",Expression:"Expression",Extension:"Extension",HumanName:"HumanName",Identifier:"Identifier",MarketingStatus:"MarketingStatus",Meta:"Meta",Money:"Money",Narrative:"Narrative",ParameterDefinition:"ParameterDefinition",Period:"Period",Population:"Population",ProdCharacteristic:"ProdCharacteristic",ProductShelfLife:"ProductShelfLife",Quantity:"Quantity",Range:"Range",Ratio:"Ratio",Reference:"Reference",RelatedArtifact:"RelatedArtifact",SampledData:"SampledData",Signature:"Signature",SubstanceAmount:"SubstanceAmount",SystemString:"http://hl7.org/fhirpath/System.String",Timing:"Timing",TriggerDefinition:"TriggerDefinition",UsageContext:"UsageContext",base64Binary:"base64Binary",boolean:"boolean",canonical:"canonical",code:"code",date:"date",dateTime:"dateTime",decimal:"decimal",id:"id",instant:"instant",integer:"integer",markdown:"markdown",oid:"oid",positiveInt:"positiveInt",string:"string",time:"time",unsignedInt:"unsignedInt",uri:"uri",url:"url",uuid:"uuid"};function la(r){for(let e of r.entry){let t=e.resource;t.resourceType==="SearchParameter"&&Yt(t)}}function Yt(r){for(let e of r.base??[]){let t=F.types[e];t||(t={searchParamsDetails:{}},F.types[e]=t),t.searchParams||(t.searchParams={_id:{base:[e],code:"_id",type:"token",expression:e+".id"},_lastUpdated:{base:[e],code:"_lastUpdated",type:"date",expression:e+".meta.lastUpdated"},_compartment:{base:[e],code:"_compartment",type:"reference",expression:e+".meta.compartment"},_profile:{base:[e],code:"_profile",type:"uri",expression:e+".meta.profile"},_security:{base:[e],code:"_security",type:"token",expression:e+".meta.security"},_source:{base:[e],code:"_source",type:"uri",expression:e+".meta.source"},_tag:{base:[e],code:"_tag",type:"token",expression:e+".meta.tag"}}),t.searchParams[r.code]=r}}function Mt(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?Pi((r.base?.path??r.path)?.split(".")):e}function Pi(r){return r.length===1?r[0]:r.map(w).join("")}function Lt(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function pa(){return Object.values(Dr()).filter(Lt).map(r=>r.name)}function da(r){return F.types[r]?.searchParams}function fa(r,e){return F.types[r]?.searchParams?.[e]}function ma(r){let e=r.replaceAll("[x]","").split(".").pop();return Ci(e)}function Ci(r){let e;return r.length<100?e=r.match(/[A-Z]+(?![a-z])|[A-Z]?[a-z]+|\d+/g)??[]:e=r.split(/(?=[A-Z])/),e.map(ya).join(" ").replace("_"," ").replace(/\s+/g," ")}var ha=new Set(["ID","IP","PKCE","JWKS","URI","URL","OMB","UDI"]);function ya(r){let e=r.toUpperCase();return r===e?r:ha.has(e)?e:e.charAt(0)+r.slice(1)}function Qe(r,e,t){let n=we(r,t);if(n)return wi(n.elements,e)}function wi(r,e){let t=r[e]??r[e+"[x]"];if(t)return t;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=r[o];if(s)return s}}}function O(r){return!!(r&&typeof r=="object"&&"resourceType"in r)}function ae(r){return!!(r&&typeof r=="object"&&"reference"in r&&typeof r.reference=="string")}var F={types:{}};function nn(r){switch(r.type){case l.uuid:case l.uri:case l.url:case l.string:case l.oid:case l.markdown:case l.id:case l.code:case l.canonical:case l.base64Binary:case l.SystemString:case l.date:case l.dateTime:case l.instant:return r.value;case l.Identifier:return`${r.value.system??""}|${r.value.value}`;case l.Coding:return Ri(r.value);case l.CodeableConcept:return r.value.coding?.map(Ri).join(",")??r.value.text;case l.HumanName:return r.value.text?r.value.text:Ye(r.value);case l.unsignedInt:case l.positiveInt:case l.integer:case l.decimal:return r.value.toString();case l.boolean:return r.value?"true":"false";case l.Extension:return r.value.url;case l.ContactPoint:return r.value.value;case l.Quantity:case l.Age:case l.Count:case l.Duration:return`${r.value.value}|${r.value.system??""}|${r.value.code??r.value.unit??""}`;case l.Reference:return r.value.reference;default:return O(r.value)?X(r.value).reference:JSON.stringify(r)}}function Ri(r){return r?`${r.system??""}|${r.code}`:""}function Ve(r){if(r.startsWith("T"))return r+"T00:00:00.000Z".substring(r.length);if(r.length<=10)return r;try{return new Date(r).toISOString()}catch{return r}}var ee=()=>[],k={empty:(r,e)=>d(e.length===0||e.every(t=>S(t.value))),hasValue:(r,e)=>d(e.length!==0),exists:(r,e,t)=>t?d(e.filter(n=>N(t.eval(r,[n]))).length>0):d(e.length>0&&e.every(n=>!S(n.value))),all:(r,e,t)=>d(e.every(n=>N(t.eval(r,[n])))),allTrue:(r,e)=>{for(let t of e)if(!t.value)return d(!1);return d(!0)},anyTrue:(r,e)=>{for(let t of e)if(t.value)return d(!0);return d(!1)},allFalse:(r,e)=>{for(let t of e)if(t.value)return d(!1);return d(!0)},anyFalse:(r,e)=>{for(let t of e)if(!t.value)return d(!0);return d(!1)},subsetOf:(r,e,t)=>{if(e.length===0)return d(!0);let n=t.eval(r,Se(r));return n.length===0?d(!1):d(e.every(i=>n.some(o=>o.value===i.value)))},supersetOf:(r,e,t)=>{let n=t.eval(r,Se(r));return n.length===0?d(!0):e.length===0?d(!1):d(n.every(i=>e.some(o=>o.value===i.value)))},count:(r,e)=>[{type:l.integer,value:e.length}],distinct:(r,e)=>{let t=[];for(let n of e)t.some(i=>i.value===n.value)||t.push(n);return t},isDistinct:(r,e)=>d(e.length===k.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>N(t.eval(r,[n]))),select:(r,e,t)=>e.map(n=>t.eval(r,[n])).flat(),repeat:ee,ofType:(r,e,t)=>e.filter(n=>n.type===t.name),single:(r,e)=>{if(e.length>1)throw new Error("Expected input length one for single()");return e.length===0?[]:e.slice(0,1)},first:(r,e)=>e.length===0?[]:e.slice(0,1),last:(r,e)=>e.length===0?[]:e.slice(e.length-1,e.length),tail:(r,e)=>e.length===0?[]:e.slice(1,e.length),skip:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for skip(num)");return n>=e.length?[]:n<=0?e:e.slice(n,e.length)},take:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for take(num)");return n>=e.length?e:n<=0?[]:e.slice(0,n)},intersect:(r,e,t)=>{if(!t)return e;let n=t.eval(r,Se(r)),i=[];for(let o of e)!i.some(s=>s.value===o.value)&&n.some(s=>s.value===o.value)&&i.push(o);return i},exclude:(r,e,t)=>{if(!t)return e;let n=t.eval(r,Se(r)),i=[];for(let o of e)n.some(s=>s.value===o.value)||i.push(o);return i},union:(r,e,t)=>{if(!t)return e;let n=t.eval(r,Se(r));return Ge([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,Se(r));return[...e,...n]},htmlChecks:(r,e,t)=>[x(!0)],iif:(r,e,t,n,i)=>{let o=t.eval(r,e);if(o.length>1||o.length===1&&typeof o[0].value!="boolean")throw new Error("Expected criterion to evaluate to a Boolean");return N(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);if(typeof t=="boolean")return[{type:l.boolean,value:t}];if(typeof t=="number"&&(t===0||t===1))return d(!!t);if(typeof t=="string"){let n=t.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return d(!0);if(["false","f","no","n","0","0.0"].includes(n))return d(!1)}return[]},convertsToBoolean:(r,e)=>e.length===0?[]:d(k.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);return typeof t=="number"?[{type:l.integer,value:t}]:typeof t=="string"&&/^[+-]?\d+$/.exec(t)?[{type:l.integer,value:parseInt(t,10)}]:typeof t=="boolean"?[{type:l.integer,value:t?1:0}]:[]},convertsToInteger:(r,e)=>e.length===0?[]:d(k.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:l.date,value:Ve(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:d(k.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:l.dateTime,value:Ve(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:d(k.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);return typeof t=="number"?[{type:l.decimal,value:t}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(t)?[{type:l.decimal,value:parseFloat(t)}]:typeof t=="boolean"?[{type:l.decimal,value:t?1:0}]:[]},convertsToDecimal:(r,e)=>e.length===0?[]:d(k.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);return I(t)?[{type:l.Quantity,value:t}]:typeof t=="number"?[{type:l.Quantity,value:{value:t,unit:"1"}}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(t)?[{type:l.Quantity,value:{value:parseFloat(t),unit:"1"}}]:typeof t=="boolean"?[{type:l.Quantity,value:{value:t?1:0,unit:"1"}}]:[]},convertsToQuantity:(r,e)=>e.length===0?[]:d(k.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);return t==null?[]:I(t)?[{type:l.string,value:`${t.value} '${t.unit}'`}]:[{type:l.string,value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:d(k.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:l.time,value:Ve("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:d(k.toTime(r,e).length===1),indexOf:(r,e,t)=>L((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>L((i,o,s)=>{let a=o,c=s?a+s:i.length;return a<0||a>=i.length?void 0:i.substring(a,c)},r,e,t,n),startsWith:(r,e,t)=>L((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>L((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>L((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>L(t=>t.toUpperCase(),r,e),lower:(r,e)=>L(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>L((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>L((n,i)=>!!new RegExp(i).exec(n),r,e,t),replaceMatches:(r,e,t,n)=>L((i,o,s)=>i.replaceAll(o,s),r,e,t,n),length:(r,e)=>L(t=>t.length,r,e),toChars:(r,e)=>L(t=>t?t.split(""):void 0,r,e),encode:ee,decode:ee,escape:ee,unescape:ee,trim:ee,split:ee,join:(r,e,t)=>{let n=t?.eval(r,Se(r))[0]?.value??"";if(typeof n!="string")throw new Error("Separator must be a string.");return[{type:l.string,value:e.map(i=>i.value?.toString()??"").join(n)}]},abs:(r,e)=>W(Math.abs,r,e),ceiling:(r,e)=>W(Math.ceil,r,e),exp:(r,e)=>W(Math.exp,r,e),floor:(r,e)=>W(Math.floor,r,e),ln:(r,e)=>W(Math.log,r,e),log:(r,e,t)=>W((n,i)=>Math.log(n)/Math.log(i),r,e,t),power:(r,e,t)=>W(Math.pow,r,e,t),round:(r,e)=>W(Math.round,r,e),sqrt:(r,e)=>W(Math.sqrt,r,e),truncate:(r,e)=>W(t=>t|0,r,e),children:ee,descendants:ee,trace:(r,e,t)=>e,now:()=>[{type:l.dateTime,value:new Date().toISOString()}],timeOfDay:()=>[{type:l.time,value:new Date().toISOString().substring(11)}],today:()=>[{type:l.date,value:new Date().toISOString().substring(0,10)}],between:(r,e,t,n,i)=>{let o=k.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=k.toDateTime(r,n.eval(r,e));if(s.length===0)throw new Error("Invalid end date");let a=i.eval(r,e)[0]?.value;if(a!=="years"&&a!=="months"&&a!=="days")throw new Error("Invalid units");let c=ze(o[0].value,s[0].value);return[{type:l.Quantity,value:{value:c[a],unit:a}}]},is:(r,e,t)=>{let n="";return t instanceof U?n=t.name:t instanceof te&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:l.boolean,value:He(i,n)})):[]},not:(r,e)=>k.toBoolean(r,e).map(t=>({type:l.boolean,value:!t.value})),resolve:(r,e)=>e.map(t=>{let n=t.value,i;if(typeof n=="string")i=n;else if(typeof n=="object"){let o=n;if(o.resource)return x(o.resource);o.reference?i=o.reference:o.type&&o.identifier&&(i=`${o.type}?identifier=${o.identifier.system}|${o.identifier.value}`)}if(i?.includes("?")){let[o]=i.split("?");return{type:o,value:{resourceType:o}}}if(i?.includes("/")){let[o,s]=i.split("/");return{type:o,value:{resourceType:o,id:s}}}return{type:l.BackboneElement,value:void 0}}).filter(t=>!!t.value),as:(r,e)=>e,type:(r,e)=>e.map(({value:t})=>typeof t=="boolean"?{type:l.BackboneElement,value:{namespace:"System",name:"Boolean"}}:typeof t=="number"?{type:l.BackboneElement,value:{namespace:"System",name:"Integer"}}:O(t)?{type:l.BackboneElement,value:{namespace:"FHIR",name:t.resourceType}}:{type:l.BackboneElement,value:null}),conformsTo:(r,e,t)=>{let n=t.eval(r,e)[0].value;if(!n.startsWith("http://hl7.org/fhir/StructureDefinition/"))throw new Error("Expected a StructureDefinition URL");let i=n.replace("http://hl7.org/fhir/StructureDefinition/","");return e.map(o=>({type:l.boolean,value:o.value?.resourceType===i}))},getResourceKey:(r,e)=>{let t=e[0].value;return t?.id?[{type:l.id,value:t.id}]:[]},getReferenceKey:(r,e,t)=>{let n=e[0].value;if(!n?.reference)return[];let i="";return t instanceof U&&(i=t.name),i&&!n.reference.startsWith(i+"/")?[]:[{type:l.id,value:xe(n)}]},extension:(r,e,t)=>{let n=t.eval(r,e)[0].value,i=e?.[0]?.value;if(i){let o=Y(i,n);if(o)return[{type:l.Extension,value:o}]}return[]}};function L(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=G(t,1);if(typeof i!="string")throw new Error("String function cannot be called with non-string");let o=r(i,...n.map(s=>s?.eval(e,t)[0]?.value));return o===void 0?[]:Array.isArray(o)?o.map(x):[x(o)]}function W(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=G(t,1),o=I(i),s=o?i.value:i;if(typeof s!="number")throw new Error("Math function cannot be called with non-number");let a=r(s,...n.map(p=>p.eval(e,t)[0]?.value)),c=o?l.Quantity:t[0].type,u=o?{...i,value:a}:a;return[{type:c,value:u}]}function G(r,e){if(r.length!==e)throw new Error(`Expected ${e} arguments`);for(let t of r)if(t==null)throw new Error("Expected non-null argument");return r}function Se(r){let e=r;for(;e.parent?.variables.$this;)e=e.parent;return[e.variables.$this]}var Ze=class{constructor(e,t){this.original=e;this.child=t}eval(e,t){try{if(t.length>0){let n=[];for(let i of t)n.push(this.child.eval({parent:e,variables:{$this:i}},[i]));return n.flat()}else return this.child.eval(e,[])}catch(n){throw new Error(`FhirPathError on "${this.original}": ${n}`,{cause:n})}}toString(){return this.child.toString()}},_=class{constructor(e){this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},U=class{constructor(e){this.name=e}eval(e,t){if(this.name==="$this")return t;let n=this.getVariable(e);if(n)return[n];if(this.name.startsWith("%"))throw new Error(`Undefined variable ${this.name}`);return t.flatMap(i=>this.evalValue(i)).filter(i=>i?.value!==void 0)}getVariable(e){let t=e.variables[this.name];if(t!==void 0)return t;if(e.parent)return this.getVariable(e.parent)}evalValue(e){let t=e.value;if(!(!t||typeof t!="object"))return O(t)&&t.resourceType===this.name?e:C(e,this.name)}toString(){return this.name}},Xe=class{eval(){return[]}toString(){return"{}"}},et=class extends Ue{constructor(t,n,i){super(t,n);this.impl=i}eval(t,n){return this.impl(this.child.eval(t,n))}toString(){return this.operator+this.child.toString()}},pe=class extends z{constructor(e,t){super("as",e,t)}eval(e,t){return k.ofType(e,this.left.eval(e,t),this.right)}},P=class extends z{},V=class extends P{constructor(t,n,i,o){super(t,n,i);this.impl=o}eval(t,n){let i=this.left.eval(t,n);if(i.length!==1)return[];let o=this.right.eval(t,n);if(o.length!==1)return[];let s=i[0].value,a=o[0].value,c=I(s)?s.value:s,u=I(a)?a.value:a,p=this.impl(c,u);return typeof p=="boolean"?d(p):I(s)?[{type:l.Quantity,value:{...s,value:p}}]:[x(p)]}},tt=class extends z{constructor(e,t){super("&",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t),o=[...n,...i];return o.length>0&&o.every(s=>typeof s.value=="string")?[{type:l.string,value:o.map(s=>s.value).join("")}]:o}},rt=class extends P{constructor(e,t){super("contains",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return d(n.some(o=>o.value===i[0].value))}},nt=class extends P{constructor(e,t){super("in",e,t)}eval(e,t){let n=B(this.left.eval(e,t)),i=this.right.eval(e,t);return n?d(i.some(o=>o.value===n.value)):[]}},te=class extends z{constructor(e,t){super(".",e,t)}eval(e,t){return this.right.eval(e,this.left.eval(e,t))}toString(){return`${this.left.toString()}.${this.right.toString()}`}},Ee=class extends z{constructor(e,t){super("|",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Ge([...n,...i])}},it=class extends P{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return $r(n,i)}},ot=class extends P{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Wr(n,i)}},st=class extends P{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return $t(n,i)}},at=class extends P{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return jr($t(n,i))}},de=class extends P{constructor(e,t){super("is",e,t)}eval(e,t){let n=this.left.eval(e,t);if(n.length!==1)return[];let i=this.right.name;return d(He(n[0],i))}},ct=class extends P{constructor(e,t){super("and",e,t)}eval(e,t){let n=B(this.left.eval(e,t),"boolean"),i=B(this.right.eval(e,t),"boolean");return n?.value===!0&&i?.value===!0?d(!0):n?.value===!1||i?.value===!1?d(!1):[]}},ut=class extends P{constructor(e,t){super("or",e,t)}eval(e,t){let n=B(this.left.eval(e,t),"boolean"),i=B(this.right.eval(e,t),"boolean");return n?.value===!1&&i?.value===!1?d(!1):n?.value||i?.value?d(!0):[]}},lt=class extends P{constructor(e,t){super("xor",e,t)}eval(e,t){let n=B(this.left.eval(e,t),"boolean"),i=B(this.right.eval(e,t),"boolean");return!n||!i?[]:d(n.value!==i.value)}},pt=class extends P{constructor(e,t){super("implies",e,t)}eval(e,t){let n=B(this.left.eval(e,t),"boolean"),i=B(this.right.eval(e,t),"boolean");return i?.value===!0||n?.value===!1?d(!0):!n||!i?[]:d(!1)}},H=class{constructor(e,t){this.name=e;this.args=t}eval(e,t){let n=k[this.name];if(!n)throw new Error("Unrecognized function: "+this.name);return n(e,t,...this.args)}toString(){return`${this.name}(${this.args.map(e=>e.toString()).join(", ")})`}},fe=class{constructor(e,t){this.left=e;this.expr=t}eval(e,t){let n=this.expr.eval(e,t);if(n.length!==1)return[];let i=n[0].value;if(typeof i!="number")throw new Error("Invalid indexer expression: should return integer}");let o=this.left.eval(e,t);return i in o?[o[i]]:[]}toString(){return`${this.left.toString()}[${this.expr.toString()}]`}};var ga=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],re=class{constructor(e,t,n,i){this.result=[];this.pos={index:0,line:1,column:0};this.markStack=[];this.str=e,this.keywords=t,this.operators=n,this.dateTimeLiterals=!!i?.dateTimeLiterals,this.symbolRegex=i?.symbolRegex??/[$\w%]/}tokenize(){for(;this.pos.index<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 t=this.peek();return e==="/"&&t==="*"?this.consumeMultiLineComment():e==="/"&&t==="/"?this.consumeSingleLineComment():e==="'"||e==='"'?this.consumeString(e):e==="`"?this.consumeBacktickSymbol():e==="@"?this.consumeDateTime():/\d/.exec(e)?this.consumeNumber():/\w/.exec(e)?this.consumeSymbol():(e==="$"||e==="%")&&/\w/.exec(t)?this.consumeSymbol():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()!==`
|
|
1
|
+
"use strict";var yr=Object.defineProperty;var To=Object.getOwnPropertyDescriptor;var So=Object.getOwnPropertyNames;var Eo=Object.prototype.hasOwnProperty;var bo=(r,e)=>{for(var t in e)yr(r,t,{get:e[t],enumerable:!0})},Ro=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of So(e))!Eo.call(r,i)&&i!==t&&yr(r,i,{get:()=>e[i],enumerable:!(n=To(e,i))||n.enumerable});return r};var Po=r=>Ro(yr({},"__esModule",{value:!0}),r);var Au={};bo(Au,{AccessPolicyInteraction:()=>_i,AndAtom:()=>ct,ArithemticOperatorAtom:()=>V,AsAtom:()=>pe,BooleanInfixOperatorAtom:()=>P,CPT:()=>Oo,ClientStorage:()=>Me,ConcatAtom:()=>tt,ContainsAtom:()=>rt,ContentType:()=>D,DEFAULT_ACCEPT:()=>Xi,DEFAULT_MAX_SEARCH_COUNT:()=>Va,DEFAULT_SEARCH_COUNT:()=>ka,DotAtom:()=>te,EmptySetAtom:()=>Xe,EqualsAtom:()=>it,EquivalentAtom:()=>st,EventTarget:()=>rr,ExternalSecretSystems:()=>Ac,FHIRCAST_EVENT_NAMES:()=>nr,FHIRCAST_EVENT_RESOURCES:()=>Hi,FHIRCAST_EVENT_VERSION_REQUIRED:()=>ir,FHIRCAST_RESOURCE_TYPES:()=>Gi,FhirFilterComparison:()=>wt,FhirFilterConnective:()=>Ot,FhirFilterNegation:()=>At,FhirPathAtom:()=>Ze,FhircastConnection:()=>xt,FunctionAtom:()=>H,HTTP_HL7_ORG:()=>xr,HTTP_TERMINOLOGY_HL7_ORG:()=>ko,Hl7Context:()=>oe,Hl7Field:()=>Pe,Hl7Message:()=>Vn,Hl7Segment:()=>_e,ICD10:()=>Io,ImpliesAtom:()=>pt,InAtom:()=>nt,IndexerAtom:()=>fe,InfixOperatorAtom:()=>z,IsAtom:()=>de,LOINC:()=>Co,LRUCache:()=>gt,LiteralAtom:()=>_,LogLevel:()=>hr,Logger:()=>Dn,MEDPLUM_CLI_CLIENT_ID:()=>vc,MEDPLUM_VERSION:()=>xc,MedplumClient:()=>bt,MedplumKeyValueClient:()=>St,MemoryStorage:()=>ar,MockAsyncClientStorage:()=>Sn,NotEqualsAtom:()=>ot,NotEquivalentAtom:()=>at,OAuthClientAssertionType:()=>no,OAuthGrantType:()=>eo,OAuthTokenAuthMethod:()=>ro,OAuthTokenType:()=>to,OperationOutcomeError:()=>f,Operator:()=>cn,OperatorPrecedence:()=>y,OrAtom:()=>ut,Parser:()=>It,ParserBuilder:()=>Be,PrefixOperatorAtom:()=>Ue,PropertyType:()=>l,RXNORM:()=>Ao,ReadablePromise:()=>M,RobustWebSocket:()=>cr,SNOMED:()=>wo,SearchParameterType:()=>sn,SubscriptionEmitter:()=>Ne,SubscriptionManager:()=>Et,SymbolAtom:()=>U,Tokenizer:()=>re,TypedEventTarget:()=>Q,UCUM:()=>gr,UnaryOperatorAtom:()=>et,UnionAtom:()=>Ee,VALID_HOSTNAME_REGEX:()=>vi,XorAtom:()=>lt,accepted:()=>qo,addProfileToResource:()=>Hs,allOk:()=>Vo,append:()=>Te,applyDefaultValuesToElement:()=>Nc,applyDefaultValuesToElementWithVisitor:()=>Fc,applyDefaultValuesToResource:()=>Mc,applyFixedOrPatternValue:()=>Pt,arrayBufferToBase64:()=>Zr,arrayBufferToHex:()=>Yr,arrayify:()=>Oe,assertContextVersionOptional:()=>yn,assertOk:()=>Ko,badRequest:()=>R,booleanToTypedValue:()=>d,buildElementsContext:()=>lr,buildTypeName:()=>Pi,calculateAge:()=>ze,calculateAgeString:()=>Es,canReadResourceType:()=>sc,canWriteResource:()=>ac,canWriteResourceType:()=>Li,capitalize:()=>w,checkForNull:()=>Mn,compressElement:()=>Jo,concatUrls:()=>q,conceptMapTranslate:()=>wn,conflict:()=>jo,convertContainedResourcesToBundle:()=>dc,convertToTransactionBundle:()=>qi,crawlResource:()=>Ut,createConstraintIssue:()=>Cr,createFhircastMessagePayload:()=>sr,createOperationOutcomeIssue:()=>se,createProcessingIssue:()=>wr,createReference:()=>X,createStructureIssue:()=>v,created:()=>Do,decodeBase64:()=>dn,deepClone:()=>ue,deepEquals:()=>Z,deepIncludes:()=>Ie,encodeBase64:()=>fn,encryptSHA256:()=>mn,ensureNoLeadingSlash:()=>xi,ensureTrailingSlash:()=>Kt,evalFhirPath:()=>be,evalFhirPathTyped:()=>A,evalSqlOnFhir:()=>bu,fhirPathArrayEquals:()=>$r,fhirPathArrayEquivalent:()=>$t,fhirPathArrayNotEquals:()=>Wr,fhirPathEquals:()=>jt,fhirPathEquivalent:()=>ni,fhirPathIs:()=>He,fhirPathNot:()=>jr,fhirTypeToJsType:()=>Br,findObservationInterval:()=>Ns,findObservationReferenceRange:()=>Fs,findResourceByCode:()=>Ws,flatMapFilter:()=>zs,forbidden:()=>Fo,formatAddress:()=>Js,formatCodeableConcept:()=>Ke,formatCoding:()=>Si,formatDate:()=>Xs,formatDateTime:()=>zt,formatFamilyName:()=>Zs,formatGivenName:()=>Ys,formatHl7DateTime:()=>vo,formatHumanName:()=>Ye,formatMoney:()=>aa,formatObservationValue:()=>Ei,formatPeriod:()=>ea,formatQuantity:()=>le,formatRange:()=>sa,formatSearchQuery:()=>Ha,formatTime:()=>Ti,formatTiming:()=>ia,generateId:()=>me,getAllDataTypes:()=>Dr,getAllQuestionnaireAnswers:()=>Rs,getCodeBySystem:()=>Wt,getDataType:()=>J,getDateProperty:()=>Ss,getDefaultValuesForNewSliceEntry:()=>_c,getDisplayString:()=>si,getElementDefinition:()=>Qe,getElementDefinitionFromElements:()=>wi,getElementDefinitionTypeName:()=>Mt,getExpressionForResourceType:()=>Ia,getExpressionsForResourceType:()=>an,getExtension:()=>Y,getExtensionValue:()=>Cs,getIdentifier:()=>ui,getImageSrc:()=>Ts,getNestedProperty:()=>ge,getPathDifference:()=>ve,getPathDisplayName:()=>ma,getPropertyDisplayName:()=>Ci,getQueryString:()=>rn,getQuestionnaireAnswers:()=>bs,getRandomString:()=>tr,getReferenceString:()=>ce,getResourceTypes:()=>pa,getSearchParameter:()=>fa,getSearchParameterDetails:()=>Xt,getSearchParameters:()=>da,getStatus:()=>Qo,getTypedPropertyValue:()=>C,getTypedPropertyValueWithPath:()=>Jn,getTypedPropertyValueWithSchema:()=>ri,getValueSliceName:()=>Cn,getWebSocketUrl:()=>tn,globalSchema:()=>F,gone:()=>_o,indexSearchParameter:()=>Yt,indexSearchParameterBundle:()=>la,indexStructureDefinitionBundle:()=>Ft,inflateBaseSchema:()=>Ar,inflateElement:()=>Wn,initFhirPathParserBuilder:()=>De,isAccepted:()=>Wo,isCodeableConcept:()=>di,isCoding:()=>pi,isCompletedSubscriptionRequest:()=>gn,isComplexTypeCode:()=>Gt,isContextVersionRequired:()=>hn,isCreated:()=>$o,isDataTypeLoaded:()=>Mr,isDateString:()=>Gr,isDateTimeString:()=>We,isEmpty:()=>S,isFhirCriteriaMet:()=>zi,isFhircastResourceType:()=>Qi,isGone:()=>Ho,isJwt:()=>xn,isLowerCase:()=>Ae,isMedplumAccessToken:()=>vn,isNotFound:()=>Go,isObject:()=>E,isOk:()=>Dt,isOperationOutcome:()=>ye,isPeriod:()=>Hr,isPopulated:()=>$,isProfileLoaded:()=>Fr,isProfileResource:()=>oi,isQuantity:()=>I,isQuantityEquivalent:()=>Qr,isReference:()=>ae,isResource:()=>O,isResourceType:()=>Nr,isResourceTypeSchema:()=>Lt,isSliceDefinitionWithTypes:()=>Pn,isString:()=>li,isStringArray:()=>Jr,isTextObject:()=>fi,isUUID:()=>Ds,isValidDate:()=>Jt,isValidHostname:()=>Gs,lazy:()=>en,loadDataType:()=>_t,mapByIdentifier:()=>Qs,matchDiscriminant:()=>qt,matchesAccessPolicy:()=>Ui,matchesRange:()=>Xr,matchesSearchRequest:()=>yt,multipleMatches:()=>Uo,normalizeCreateBinaryOptions:()=>Rn,normalizeCreatePdfOptions:()=>io,normalizeErrorString:()=>jn,normalizeOperationOutcome:()=>qe,notFound:()=>br,notModified:()=>Mo,operationOutcomeIssueToString:()=>$n,operationOutcomeToString:()=>Pr,parseCriteriaAsSearchRequest:()=>Na,parseFhirPath:()=>Zt,parseFilterParameter:()=>hu,parseHl7DateTime:()=>yu,parseJWTPayload:()=>Tt,parseLogLevel:()=>xu,parseMappingLanguage:()=>Kc,parseParameter:()=>Di,parseReference:()=>gs,parseSearchDefinition:()=>Ma,parseSearchRequest:()=>ne,parseSearchUrl:()=>Da,parseStructureDefinition:()=>Nt,parseXFhirQuery:()=>Ga,preciseEquals:()=>qs,preciseGreaterThan:()=>$s,preciseGreaterThanOrEquals:()=>gi,preciseLessThan:()=>js,preciseLessThanOrEquals:()=>yi,preciseRound:()=>Bs,preconditionFailed:()=>Lo,projectAdminResourceTypes:()=>Fi,protectedResourceTypes:()=>Ni,removeDuplicates:()=>Ge,removeProfileFromResource:()=>Ks,reorderBundle:()=>ji,resolveId:()=>xe,resourceMatchesSubscriptionCriteria:()=>yc,satisfiedAccessPolicy:()=>cc,serializeFhircastSubscriptionRequest:()=>or,serverError:()=>Rr,setCodeBySystem:()=>Ms,setIdentifier:()=>Ps,singleton:()=>B,sleep:()=>Ht,sortStringArray:()=>Je,splitN:()=>Qt,splitSearchOnComma:()=>ht,streamToBuffer:()=>Eu,stringify:()=>zr,stringifyTypedValue:()=>nn,structureMapTransform:()=>zc,subsetResource:()=>Zo,toJsBoolean:()=>N,toPeriod:()=>hs,toTypedValue:()=>x,tooManyRequests:()=>Bo,tryGetDataType:()=>we,tryGetJwtExpiration:()=>Tn,tryGetProfile:()=>_r,unauthorized:()=>No,validateFhircastSubscriptionRequest:()=>vt,validateResource:()=>as,validateResourceType:()=>vu,validateTypedValue:()=>cs,validationError:()=>h,validationRegexes:()=>$e});module.exports=Po(Au);var Ue=class{constructor(e,t){this.operator=e;this.child=t}toString(){return`${this.operator}(${this.child.toString()})`}},z=class{constructor(e,t,n){this.operator=e;this.left=t;this.right=n}toString(){return`${this.left.toString()} ${this.operator} ${this.right.toString()}`}},Be=class{constructor(){this.prefixParselets={};this.infixParselets={}}registerInfix(e,t){return this.infixParselets[e]=t,this}registerPrefix(e,t){return this.prefixParselets[e]=t,this}prefix(e,t,n){return this.registerPrefix(e,{parse(i,o){let s=i.consumeAndParse(t);return n(o,s)}})}infixLeft(e,t,n){return this.registerInfix(e,{parse(i,o,s){let a=i.consumeAndParse(t);return n(o,s,a)},precedence:t})}construct(e){return new It(e,this.prefixParselets,this.infixParselets)}},It=class{constructor(e,t,n){this.tokens=e,this.prefixParselets=t,this.infixParselets=n}hasMore(){return this.tokens.length>0}match(e){return this.peek()?.id!==e?!1:(this.consume(),!0)}consumeAndParse(e=1/0){let t=this.consume(),n=this.prefixParselets[t.id];if(!n)throw Error(`Parse error at "${t.value}" (line ${t.line}, column ${t.column}). No matching prefix parselet.`);let i=n.parse(this,t);for(;e>this.getPrecedence();){let o=this.consume();i=this.getInfixParselet(o).parse(this,i,o)}return i}getPrecedence(){let e=this.peek();if(!e)return 1/0;let t=this.getInfixParselet(e);return t?t.precedence:1/0}consume(e,t){if(!this.tokens.length)throw Error("Cant consume unknown more tokens.");if(e&&this.peek()?.id!==e){let n=this.peek();throw Error(`Expected ${e} but got "${n.id}" (${n.value}) at line ${n.line} column ${n.column}.`)}if(t&&this.peek()?.value!==t){let n=this.peek();throw Error(`Expected "${t}" but got "${n.value}" at line ${n.line} column ${n.column}.`)}return this.tokens.shift()}peek(){return this.tokens.length>0?this.tokens[0]:void 0}removeComments(){this.tokens=this.tokens.filter(e=>e.id!=="Comment")}getInfixParselet(e){return this.infixParselets[e.id==="Symbol"?e.value:e.id]}};var gr="http://unitsofmeasure.org",Co="http://loinc.org",wo="http://snomed.info/sct",Ao="http://www.nlm.nih.gov/research/umls/rxnorm",Oo="http://www.ama-assn.org/go/cpt",Io="http://hl7.org/fhir/sid/icd-10",xr="http://hl7.org",ko="http://terminology.hl7.org";var vr="ok",kt="created",Tr="gone",Sr="not-modified",Er="not-found",Fn="conflict",_n="unauthorized",Ln="forbidden",Un="precondition-failed",Bn="multiple-matches",qn="too-many-requests",Vt="accepted",Vo={resourceType:"OperationOutcome",id:vr,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},Do={resourceType:"OperationOutcome",id:kt,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},Mo={resourceType:"OperationOutcome",id:Sr,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},br={resourceType:"OperationOutcome",id:Er,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},No={resourceType:"OperationOutcome",id:_n,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},Fo={resourceType:"OperationOutcome",id:Ln,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},_o={resourceType:"OperationOutcome",id:Tr,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},Lo={resourceType:"OperationOutcome",id:Un,issue:[{severity:"error",code:"processing",details:{text:"Precondition Failed"}}]},Uo={resourceType:"OperationOutcome",id:Bn,issue:[{severity:"error",code:"multiple-matches",details:{text:"Multiple resources found matching condition"}}]},Bo={resourceType:"OperationOutcome",id:qn,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function qo(r){return{resourceType:"OperationOutcome",id:Vt,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:r}]}}function R(r,e){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:r},...e?{expression:[e]}:void 0}]}}function jo(r){return{resourceType:"OperationOutcome",id:Fn,issue:[{severity:"error",code:"conflict",details:{text:r}}]}}function h(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"structure",details:{text:r}}]}}function Rr(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function ye(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function Dt(r){return r.id===vr||r.id===kt||r.id===Sr||r.id===Vt}function $o(r){return r.id===kt}function Wo(r){return r.id===Vt}function Go(r){return r.id===Er}function Ho(r){return r.id===Tr}function Qo(r){switch(r.id){case vr:return 200;case kt:return 201;case Vt:return 202;case Sr:return 304;case _n:return 401;case Ln:return 403;case Er:return 404;case Fn:return 409;case Tr:return 410;case Un:case Bn:return 412;case qn:return 429;default:return r.issue?.[0]?.code==="exception"?500:400}}function Ko(r,e){if(!Dt(r)||e===void 0)throw new f(r)}var f=class extends Error{constructor(e,t){super(Pr(e)),this.outcome=e,this.cause=t}};function qe(r){return r instanceof f?r.outcome:ye(r)?r:R(jn(r))}function jn(r){return r?typeof r=="string"?r:r instanceof Error?r.message:ye(r)?Pr(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function Pr(r){let e=r.issue?.map($n)??[];return e.length>0?e.join("; "):"Unknown error"}function $n(r){let e;return r.details?.text?r.diagnostics?e=`${r.details.text} (${r.diagnostics})`:e=r.details.text:r.diagnostics?e=r.diagnostics:e="Unknown error",r.expression?.length&&(e+=` (${r.expression.join(", ")})`),e}function se(r,e,t,n,i){let o={severity:r,code:e,details:{text:t},expression:[n]};return i&&(o.diagnostics=JSON.stringify(i)),o}function v(r,e){return se("error","structure",e,r)}function Cr(r,e){return se("error","invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function wr(r,e,t,n){return se("error","processing",e,r,{...n,error:t})}var zo={"http://hl7.org/fhirpath/System.String":"string"};function Jo(r){let e={};return r.min!==0&&(e.min=r.min),r.max!==1&&Number.isFinite(r.max)?e.max=r.max:r.max===Number.POSITIVE_INFINITY&&(e.max=Number.MAX_SAFE_INTEGER),e.type=r.type?.map(t=>({...t,extension:void 0,code:zo[t.code]??t.code})),e}function Wn(r,e){let t=e.max&&e.max===Number.MAX_SAFE_INTEGER?Number.POSITIVE_INFINITY:e.max;return{path:r,description:"",type:e.type??[],min:e.min??0,max:t??1,isArray:!!t&&t>1,constraints:[]}}function Ar(r){let e=Object.create(null);for(let[t,n]of Object.entries(r))e[t]={name:t,elements:Object.fromEntries(Object.entries(n.elements).map(([i,o])=>[i,Wn(i,o)])),constraints:[],innerTypes:[]};return e}var Gn={Element:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]}}},BackboneElement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]}}},Address:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"code"}]},text:{type:[{code:"string"}]},line:{max:9007199254740991,type:[{code:"string"}]},city:{type:[{code:"string"}]},district:{type:[{code:"string"}]},state:{type:[{code:"string"}]},postalCode:{type:[{code:"string"}]},country:{type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Age:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Annotation:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},"author[x]":{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Organization"]},{code:"string"}]},time:{type:[{code:"dateTime"}]},text:{min:1,type:[{code:"markdown"}]}}},Attachment:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},contentType:{type:[{code:"code"}]},language:{type:[{code:"code"}]},data:{type:[{code:"base64Binary"}]},url:{type:[{code:"url"}]},size:{type:[{code:"unsignedInt"}]},hash:{type:[{code:"base64Binary"}]},title:{type:[{code:"string"}]},creation:{type:[{code:"dateTime"}]}}},CodeableConcept:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},coding:{max:9007199254740991,type:[{code:"Coding"}]},text:{type:[{code:"string"}]}}},Coding:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},code:{type:[{code:"code"}]},display:{type:[{code:"string"}]},userSelected:{type:[{code:"boolean"}]}}},ContactDetail:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},name:{type:[{code:"string"}]},telecom:{max:9007199254740991,type:[{code:"ContactPoint"}]}}},ContactPoint:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},system:{type:[{code:"code"}]},value:{type:[{code:"string"}]},use:{type:[{code:"code"}]},rank:{type:[{code:"positiveInt"}]},period:{type:[{code:"Period"}]}}},Contributor:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{min:1,type:[{code:"string"}]},contact:{max:9007199254740991,type:[{code:"ContactDetail"}]}}},Count:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},DataRequirement:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},"subject[x]":{type:[{code:"CodeableConcept"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Group"]}]},mustSupport:{max:9007199254740991,type:[{code:"string"}]},codeFilter:{max:9007199254740991,type:[{code:"DataRequirementCodeFilter"}]},dateFilter:{max:9007199254740991,type:[{code:"DataRequirementDateFilter"}]},limit:{type:[{code:"positiveInt"}]},sort:{max:9007199254740991,type:[{code:"DataRequirementSort"}]}}},Distance:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Dosage:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},sequence:{type:[{code:"integer"}]},text:{type:[{code:"string"}]},additionalInstruction:{max:9007199254740991,type:[{code:"CodeableConcept"}]},patientInstruction:{type:[{code:"string"}]},timing:{type:[{code:"Timing"}]},"asNeeded[x]":{type:[{code:"boolean"},{code:"CodeableConcept"}]},site:{type:[{code:"CodeableConcept"}]},route:{type:[{code:"CodeableConcept"}]},method:{type:[{code:"CodeableConcept"}]},doseAndRate:{max:9007199254740991,type:[{code:"DosageDoseAndRate"}]},maxDosePerPeriod:{type:[{code:"Ratio"}]},maxDosePerAdministration:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},maxDosePerLifetime:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},Duration:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},ElementDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},representation:{max:9007199254740991,type:[{code:"code"}]},sliceName:{type:[{code:"string"}]},sliceIsConstraining:{type:[{code:"boolean"}]},label:{type:[{code:"string"}]},code:{max:9007199254740991,type:[{code:"Coding"}]},slicing:{type:[{code:"ElementDefinitionSlicing"}]},short:{type:[{code:"string"}]},definition:{type:[{code:"markdown"}]},comment:{type:[{code:"markdown"}]},requirements:{type:[{code:"markdown"}]},alias:{max:9007199254740991,type:[{code:"string"}]},min:{type:[{code:"unsignedInt"}]},max:{type:[{code:"string"}]},base:{type:[{code:"ElementDefinitionBase"}]},contentReference:{type:[{code:"uri"}]},type:{max:9007199254740991,type:[{code:"ElementDefinitionType"}]},"defaultValue[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},meaningWhenMissing:{type:[{code:"markdown"}]},orderMeaning:{type:[{code:"string"}]},"fixed[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},"pattern[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]},example:{max:9007199254740991,type:[{code:"ElementDefinitionExample"}]},"minValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},"maxValue[x]":{type:[{code:"date"},{code:"dateTime"},{code:"instant"},{code:"time"},{code:"decimal"},{code:"integer"},{code:"positiveInt"},{code:"unsignedInt"},{code:"Quantity"}]},maxLength:{type:[{code:"integer"}]},condition:{max:9007199254740991,type:[{code:"id"}]},constraint:{max:9007199254740991,type:[{code:"ElementDefinitionConstraint"}]},mustSupport:{type:[{code:"boolean"}]},isModifier:{type:[{code:"boolean"}]},isModifierReason:{type:[{code:"string"}]},isSummary:{type:[{code:"boolean"}]},binding:{type:[{code:"ElementDefinitionBinding"}]},mapping:{max:9007199254740991,type:[{code:"ElementDefinitionMapping"}]}}},Expression:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},description:{type:[{code:"string"}]},name:{type:[{code:"id"}]},language:{min:1,type:[{code:"code"}]},expression:{type:[{code:"string"}]},reference:{type:[{code:"uri"}]}}},Extension:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},url:{min:1,type:[{code:"uri"}]},"value[x]":{type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]}}},HumanName:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},text:{type:[{code:"string"}]},family:{type:[{code:"string"}]},given:{max:9007199254740991,type:[{code:"string"}]},prefix:{max:9007199254740991,type:[{code:"string"}]},suffix:{max:9007199254740991,type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Identifier:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"CodeableConcept"}]},system:{type:[{code:"uri"}]},value:{type:[{code:"string"}]},period:{type:[{code:"Period"}]},assigner:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Organization"]}]}}},MarketingStatus:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},country:{min:1,type:[{code:"CodeableConcept"}]},jurisdiction:{type:[{code:"CodeableConcept"}]},status:{min:1,type:[{code:"CodeableConcept"}]},dateRange:{min:1,type:[{code:"Period"}]},restoreDate:{type:[{code:"dateTime"}]}}},Meta:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},versionId:{type:[{code:"id"}]},lastUpdated:{type:[{code:"instant"}]},source:{type:[{code:"uri"}]},profile:{max:9007199254740991,type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},security:{max:9007199254740991,type:[{code:"Coding"}]},tag:{max:9007199254740991,type:[{code:"Coding"}]},project:{type:[{code:"uri"}]},author:{type:[{code:"Reference"}]},onBehalfOf:{type:[{code:"Reference"}]},account:{type:[{code:"Reference"}]},compartment:{max:9007199254740991,type:[{code:"Reference"}]}}},Money:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},currency:{type:[{code:"code"}]}}},Narrative:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},status:{min:1,type:[{code:"code"}]},div:{min:1,type:[{code:"xhtml"}]}}},ParameterDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},name:{type:[{code:"code"}]},use:{min:1,type:[{code:"code"}]},min:{type:[{code:"integer"}]},max:{type:[{code:"string"}]},documentation:{type:[{code:"string"}]},type:{min:1,type:[{code:"code"}]},profile:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]}}},Period:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},start:{type:[{code:"dateTime"}]},end:{type:[{code:"dateTime"}]}}},Population:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"age[x]":{type:[{code:"Range"},{code:"CodeableConcept"}]},gender:{type:[{code:"CodeableConcept"}]},race:{type:[{code:"CodeableConcept"}]},physiologicalCondition:{type:[{code:"CodeableConcept"}]}}},ProdCharacteristic:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},height:{type:[{code:"Quantity"}]},width:{type:[{code:"Quantity"}]},depth:{type:[{code:"Quantity"}]},weight:{type:[{code:"Quantity"}]},nominalVolume:{type:[{code:"Quantity"}]},externalDiameter:{type:[{code:"Quantity"}]},shape:{type:[{code:"string"}]},color:{max:9007199254740991,type:[{code:"string"}]},imprint:{max:9007199254740991,type:[{code:"string"}]},image:{max:9007199254740991,type:[{code:"Attachment"}]},scoring:{type:[{code:"CodeableConcept"}]}}},ProductShelfLife:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},identifier:{type:[{code:"Identifier"}]},type:{min:1,type:[{code:"CodeableConcept"}]},period:{min:1,type:[{code:"Quantity"}]},specialPrecautionsForStorage:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},Quantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Range:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},low:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},high:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},Ratio:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},numerator:{type:[{code:"Quantity"}]},denominator:{type:[{code:"Quantity"}]}}},Reference:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},reference:{type:[{code:"string"}]},type:{type:[{code:"uri"}]},identifier:{type:[{code:"Identifier"}]},display:{type:[{code:"string"}]}}},RelatedArtifact:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},label:{type:[{code:"string"}]},display:{type:[{code:"string"}]},citation:{type:[{code:"markdown"}]},url:{type:[{code:"url"}]},document:{type:[{code:"Attachment"}]},resource:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/Resource"]}]}}},SampledData:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},origin:{min:1,type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},period:{min:1,type:[{code:"decimal"}]},factor:{type:[{code:"decimal"}]},lowerLimit:{type:[{code:"decimal"}]},upperLimit:{type:[{code:"decimal"}]},dimensions:{min:1,type:[{code:"positiveInt"}]},data:{type:[{code:"string"}]}}},Signature:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,max:9007199254740991,type:[{code:"Coding"}]},when:{min:1,type:[{code:"instant"}]},who:{min:1,type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},onBehalfOf:{type:[{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Practitioner","http://hl7.org/fhir/StructureDefinition/PractitionerRole","http://hl7.org/fhir/StructureDefinition/RelatedPerson","http://hl7.org/fhir/StructureDefinition/Patient","http://hl7.org/fhir/StructureDefinition/Device","http://hl7.org/fhir/StructureDefinition/Organization"]}]},targetFormat:{type:[{code:"code"}]},sigFormat:{type:[{code:"code"}]},data:{type:[{code:"base64Binary"}]}}},SubstanceAmount:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},"amount[x]":{type:[{code:"Quantity"},{code:"Range"},{code:"string"}]},amountType:{type:[{code:"CodeableConcept"}]},amountText:{type:[{code:"string"}]},referenceRange:{type:[{code:"SubstanceAmountReferenceRange"}]}}},Timing:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},event:{max:9007199254740991,type:[{code:"dateTime"}]},repeat:{type:[{code:"TimingRepeat"}]},code:{type:[{code:"CodeableConcept"}]}}},TriggerDefinition:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{type:[{code:"string"}]},"timing[x]":{type:[{code:"Timing"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/Schedule"]},{code:"date"},{code:"dateTime"}]},data:{max:9007199254740991,type:[{code:"DataRequirement"}]},condition:{type:[{code:"Expression"}]}}},UsageContext:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},code:{min:1,type:[{code:"Coding"}]},"value[x]":{min:1,type:[{code:"CodeableConcept"},{code:"Quantity"},{code:"Range"},{code:"Reference",targetProfile:["http://hl7.org/fhir/StructureDefinition/PlanDefinition","http://hl7.org/fhir/StructureDefinition/ResearchStudy","http://hl7.org/fhir/StructureDefinition/InsurancePlan","http://hl7.org/fhir/StructureDefinition/HealthcareService","http://hl7.org/fhir/StructureDefinition/Group","http://hl7.org/fhir/StructureDefinition/Location","http://hl7.org/fhir/StructureDefinition/Organization"]}]}}},MoneyQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},SimpleQuantity:{elements:{id:{type:[{code:"string"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{max:0,type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},IdentityProvider:{elements:{authorizeUrl:{min:1,type:[{code:"string"}]},tokenUrl:{min:1,type:[{code:"string"}]},tokenAuthMethod:{type:[{code:"code"}]},userInfoUrl:{min:1,type:[{code:"string"}]},clientId:{min:1,type:[{code:"string"}]},clientSecret:{min:1,type:[{code:"string"}]},usePkce:{type:[{code:"boolean"}]},useSubject:{type:[{code:"boolean"}]}}}};function Nt(r){return new kr(r).parse()}var je=Ar(Gn),Vr=Object.create(null),Hn=Object.create(null);function Ir(r){let e;return r?(e=Hn[r],e||(e=Hn[r]=Object.create(null))):e=je,e}function Ft(r,e){let t=Array.isArray(r)?r:r.entry?.map(n=>n.resource)??[];for(let n of t)_t(n,e)}function _t(r,e){if(!r?.name)throw new Error("Failed loading StructureDefinition from bundle");if(r.resourceType!=="StructureDefinition")return;let t=Nt(r),n=Ir(e);n[r.name]=t,e&&r.url===e&&(Vr[e]=t);for(let i of t.innerTypes)i.parentType=t,n[i.name]=i}function Dr(){return je}function Mr(r){return!!je[r]}function we(r,e){let t=Ir(e)[r];return!t&&e&&(t=Ir()[r]),t}function J(r,e){let t=we(r,e);if(!t)throw new f(R("Unknown data type: "+r));return t}function Nr(r){let e=je[r];return e&&Lt(e)}function Fr(r){return!!Vr[r]}function _r(r){return Vr[r]}var kr=class{constructor(e){if(!e.snapshot?.element||e.snapshot.element.length===0)throw new Error(`No snapshot defined for StructureDefinition '${e.name}'`);this.root=e.snapshot.element[0],this.elements=e.snapshot.element.slice(1),this.elementIndex=Object.create(null),this.index=0,this.resourceSchema={name:e.name,title:e.title,type:e.type,url:e.url,kind:e.kind,description:rs(e),elements:{},constraints:this.parseElementDefinition(this.root).constraints,innerTypes:[],summaryProperties:new Set,mandatoryProperties:new Set},this.innerTypes=[]}parse(){let e=this.next();for(;e;){if(e.sliceName)this.parseSliceStart(e);else if(e.id?.includes(":")){if(this.slicingContext?.current){let t=Or(e,this.slicingContext.path);this.slicingContext.current.elements[t]=this.parseElementDefinition(e)}}else{let t=this.parseElementDefinition(e);this.checkFieldEnter(e,t);let n=this.backboneContext;for(;n;){if(e.path?.startsWith(n.path+".")){n.type.elements[Or(e,n.path)]=t;break}n=n.parent}if(!n){let i=Or(e,this.root.path);e.isSummary&&this.resourceSchema.summaryProperties?.add(i.replace("[x]","")),t.min>0&&this.resourceSchema.mandatoryProperties?.add(i.replace("[x]","")),this.resourceSchema.elements[i]=t}this.checkFieldExit(e)}e=this.next()}return this.checkFieldExit(),this.innerTypes.length>0&&(this.resourceSchema.innerTypes=this.innerTypes),this.resourceSchema}checkFieldEnter(e,t){this.isInnerType(e)&&this.enterInnerType(e),e.slicing&&!this.slicingContext&&this.enterSlice(e,t)}enterInnerType(e){for(;this.backboneContext&&!Ce(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;this.backboneContext={type:{name:Mt(e),title:e.label,description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path??"",parent:Ce(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,t){ts(e)&&!this.peek()?.sliceName||(t.slicing={discriminator:(e.slicing?.discriminator??[]).map(n=>{if(n.type!=="value"&&n.type!=="pattern"&&n.type!=="type")throw new Error(`Unsupported slicing discriminator type: ${n.type}`);return{path:n.path,type:n.type}}),slices:[],ordered:e.slicing?.ordered??!1,rule:e.slicing?.rules},this.slicingContext={field:t.slicing,path:e.path??""})}checkFieldExit(e=void 0){if(this.backboneContext&&!Ce(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!Ce(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),this.backboneContext=void 0;this.slicingContext&&!Ce(this.slicingContext.path,e?.path)&&(this.slicingContext?.current&&this.slicingContext.field.slices.push(this.slicingContext.current),this.slicingContext=void 0)}next(){let e=this.peek();if(e)return this.index++,e}peek(){let e=this.elements[this.index];if(e){if(this.elementIndex[e.path??""]=e,e.contentReference){let t=e.contentReference.slice(e.contentReference.indexOf("#")+1),n=this.elementIndex[t];return n?{...n,id:e.id,path:e.path,min:e.min??n.min,max:e.max??n.max,base:{path:n.base?.path??t,min:e.base?.min??n.base?.min??n.min,max:e.base?.max??n.base?.max??n.max},contentReference:e.contentReference,definition:e.definition}:void 0}return e}}isInnerType(e){let t=this.peek();return!!(Ce(e?.path,t?.path)&&e.type?.some(n=>["BackboneElement","Element"].includes(n.code)))}parseSliceStart(e){if(!this.slicingContext)throw new Error(`Invalid slice start before discriminator: ${e.sliceName} (${e.id})`);this.slicingContext.current&&this.slicingContext.field.slices.push(this.slicingContext.current),this.slicingContext.current={...this.parseElementDefinition(e),name:e.sliceName??"",definition:e.definition,elements:{}}}parseElementDefinitionType(e){return(e.type??[]).map(t=>{let n;return(t.code==="BackboneElement"||t.code==="Element")&&(n=Mt(e)),n||(n=Y(t,"http://hl7.org/fhir/StructureDefinition/structuredefinition-fhir-type")?.valueUrl),n||(n=t.code??""),{code:n,targetProfile:t.targetProfile,profile:t.profile}})}parseElementDefinition(e){let t=Kn(e.max),n=e.base?.max?Kn(e.base.max):t,i={type:"ElementDefinition",value:e};return{description:e.definition||"",path:e.path||e.base?.path||"",min:e.min??0,max:t,isArray:n>1,constraints:(e.constraint??[]).map(o=>({key:o.key??"",severity:o.severity??"error",expression:o.expression??"",description:o.human??""})),type:this.parseElementDefinitionType(e),fixed:zn(C(i,"fixed[x]")),pattern:zn(C(i,"pattern[x]")),binding:e.binding}}};function Zo(r,e){if(!r)return;let t=[];for(let n of e){t.push("_"+n);let i=je[r.resourceType].elements[n+"[x]"];i&&t.push(...i.type.map(o=>n+w(o.code)))}for(let n of Object.getOwnPropertyNames(r))!e.includes(n)&&!t.includes(n)&&!Xo.includes(n)&&Object.defineProperty(r,n,{enumerable:!1,writable:!1,value:void 0});return r.meta={...r.meta,tag:r.meta?.tag?r.meta.tag.concat(Qn):[Qn]},r}var Qn={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},Xo=["resourceType","id","meta"];function Kn(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function Or(r,e=""){return es(r.path,e)}function es(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function Ce(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function zn(r){return Array.isArray(r)&&r.length>0?r[0]:S(r)?void 0:r}function ts(r){let e=r.slicing?.discriminator;return!!(r.type?.some(t=>t.code==="Extension")&&e?.length===1&&e[0].type==="value"&&e[0].path==="url")}function rs(r){let e=r.description;return e?.startsWith(`Base StructureDefinition for ${r.name} Type: `)&&(e=e.substring(`Base StructureDefinition for ${r.name} Type: `.length)),e}function ns(r){return"elements"in r}function is(r){return!!r.visitPropertyAsync}function Ut(r,e,t,n){let i;if(t&&ns(t)?i={schema:t,initialPath:n}:i=t,is(e))return new Ur(r,e,i).crawl();new Lr(r,e,i).crawl()}var Lr=class{constructor(e,t,n){this.rootResource=e,this.visitor=t,this.schema=n?.schema??J(e.resourceType),this.initialPath=n?.initialPath??e.resourceType,this.excludeMissingProperties=n?.skipMissingProperties}crawl(){this.crawlObject({...x(this.rootResource),path:this.initialPath},this.schema,this.initialPath)}crawlObject(e,t,n){let i=O(e.value);if(i&&this.visitor.onEnterResource&&this.visitor.onEnterResource(n,e,t),this.visitor.onEnterObject&&this.visitor.onEnterObject(n,e,t),this.excludeMissingProperties)for(let o of Object.keys(e.value))this.crawlProperty(e,o,t,`${n}.${o}`);else for(let o of Object.keys(t.elements))this.crawlProperty(e,o,t,`${n}.${o}`);this.visitor.onExitObject&&this.visitor.onExitObject(n,e,t),i&&this.visitor.onExitResource&&this.visitor.onExitResource(n,e,t)}crawlProperty(e,t,n,i){let o=ge(e,t,{withPath:!0});this.visitor.visitProperty&&this.visitor.visitProperty(e,t,i,o,n);for(let s of o)if(s)for(let a of Oe(s))this.crawlPropertyValue(a,i)}crawlPropertyValue(e,t){if(!Ae(e.type.charAt(0))){let n=J(e.type);this.crawlObject(e,n,t)}}},Ur=class{constructor(e,t,n){this.rootResource=e,this.visitor=t,this.schema=n?.schema??J(e.resourceType),this.initialPath=n?.initialPath??e.resourceType,this.excludeMissingProperties=n?.skipMissingProperties}async crawl(){return this.crawlObject({...x(this.rootResource),path:this.initialPath},this.schema,this.initialPath)}async crawlObject(e,t,n){let i=O(e.value);if(i&&this.visitor.onEnterResource&&await this.visitor.onEnterResource(n,e,t),this.visitor.onEnterObject&&await this.visitor.onEnterObject(n,e,t),this.excludeMissingProperties)for(let o of Object.keys(e.value))await this.crawlProperty(e,o,t,`${n}.${o}`);else for(let o of Object.keys(t.elements))await this.crawlProperty(e,o,t,`${n}.${o}`);this.visitor.onExitObject&&await this.visitor.onExitObject(n,e,t),i&&this.visitor.onExitResource&&await this.visitor.onExitResource(n,e,t)}async crawlProperty(e,t,n,i){let o=ge(e,t,{withPath:!0});if(this.visitor.visitPropertyAsync)for(let s of o)await this.visitor.visitPropertyAsync(e,t,i,s,n);for(let s of o)if(s)for(let a of Oe(s))await this.crawlPropertyValue(a,i)}async crawlPropertyValue(e,t){if(!Ae(e.type.charAt(0))){let n=J(e.type);await this.crawlObject(e,n,t)}}};function ge(r,e,t){if(r===void 0)return[void 0];if(e==="$this")return[r];let n=t?.withPath?Jn:C,[i,...o]=e.split("."),s=[n(r,i,t)];for(let a of o){let c=[];for(let u of s)if(Array.isArray(u))for(let p of u)c.push(n(p,a,t));else(t?.withPath&&u&&u.value!==void 0||!t?.withPath&&u!==void 0)&&c.push(n(u,a,t));s=c}return s}function Jn(r,e,t){let n=r.path;return os(C(r,e,t),n,e)}function os(r,e,t){let n=e?e+".":"";return r===void 0?{type:"undefined",value:void 0,path:`${n}${t}`}:Array.isArray(r)?r.map((i,o)=>({...i,path:`${n}${t}[${o}]`})):{...r,path:`${n}${t}`}}var Br={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"},$e={base64Binary:/^([A-Za-z\d+/]{4})*([A-Za-z\d+/]{2}==|[A-Za-z\d+/]{3}=)?$/,canonical:/^\S*$/,code:/^[^\s]+( [^\s]+)*$/,date:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2]\d|3[0-1]))?)?$/,dateTime:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)(-(0[1-9]|1[0-2])(-(0[1-9]|[1-2]\d|3[0-1])(T([01]\d|2[0-3])(:[0-5]\d:([0-5]\d|60)(\.\d{1,9})?)?)?)?(Z|[+-]((0\d|1[0-3]):[0-5]\d|14:00)?)?)?$/,id:/^[A-Za-z0-9\-.]{1,64}$/,instant:/^(\d(\d(\d[1-9]|[1-9]0)|[1-9]00)|[1-9]000)-(0[1-9]|1[0-2])-(0[1-9]|[1-2]\d|3[0-1])T([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?(Z|[+-]((0\d|1[0-3]):[0-5]\d|14:00))$/,markdown:/^[\s\S]+$/,oid:/^urn:oid:[0-2](\.(0|[1-9]\d*))+$/,string:/^[\s\S]+$/,time:/^([01]\d|2[0-3]):[0-5]\d:([0-5]\d|60)(\.\d{1,9})?$/,uri:/^\S*$/,url:/^\S*$/,uuid:/^urn:uuid:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/,xhtml:/.*/},ss={"ele-1":!0,"dom-3":!0,"org-1":!0,"sdf-19":!0};function as(r,e){if(!r.resourceType)throw new f(h("Missing resource type"));return new Bt(x(r),e).validate()}function cs(r,e){return new Bt(r,e).validate()}var Bt=class{constructor(e,t){this.issues=[],this.root=e,this.currentResource=[],O(e.value)&&this.currentResource.push(e.value),t?.profile?this.schema=Nt(t.profile):this.schema=J(e.type)}validate(){this.constraintsCheck(this.root,this.schema,this.root.type),qr(this.root.value,this.root.type,this.issues),Ut(this.root.value,this,this.schema,this.root.type);let e=this.issues,t=!1;for(let n of e)n.severity==="error"&&(t=!0);if(t)throw new f({resourceType:"OperationOutcome",issue:e});return e}onExitObject(e,t,n){this.checkAdditionalProperties(t,n.elements,e)}onEnterResource(e,t){this.currentResource.push(t.value)}onExitResource(){this.currentResource.pop()}visitProperty(e,t,n,i,o){let s=o.elements[t];if(!s)throw new Error(`Missing element validation schema for ${t}`);for(let a of i){if(!this.checkPresence(a,s,n))return;let c;if(s.isArray){if(!Array.isArray(a)){this.issues.push(v(n,"Expected array of values for property"));return}c=a}else{if(Array.isArray(a)){this.issues.push(v(n,"Expected single value for property"));return}c=[a]}(c.length<s.min||c.length>s.max)&&this.issues.push(v(s.path,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${c.length}`)),ps(a,s)||this.issues.push(v(n,"Value did not match expected pattern"));let u=s.slicing?Object.fromEntries(s.slicing.slices.map(p=>[p.name,0])):void 0;for(let p of c){this.constraintsCheck(p,s,n),this.referenceTypeCheck(p,s,n),this.checkPropertyValue(p,n);let m=ds(p,s.slicing);m&&u&&(u[m]+=1)}this.validateSlices(s.slicing?.slices,u,n)}}checkPresence(e,t,n){return!Array.isArray(e)&&e.value===void 0?(t.min>0&&this.issues.push(v(e.path,"Missing required property")),!1):S(e)?(this.issues.push(v(n,"Invalid empty value")),!1):!0}checkPropertyValue(e,t){Ae(e.type.charAt(0))&&this.validatePrimitiveType(e,t)}validateSlices(e,t,n){if(!(!e||!t))for(let i of e){let o=t[i.name];(o<i.min||o>i.max)&&this.issues.push(v(n,`Incorrect number of values provided for slice '${i.name}': expected ${i.min}..${Number.isFinite(i.max)?i.max:"*"}, but found ${o}`))}}checkAdditionalProperties(e,t,n){let i=e.value;if(!i)return;let o={};for(let s of Object.keys(i)){if(s==="resourceType")continue;let a=ls(e,s,t);if(a){let c,u;a.startsWith("_")?(c=a.slice(1),u=s.slice(1)):(c="_"+a,u="_"+s),c in o&&o[c]!==u&&this.issues.push(se("warning","structure",`Type of primitive extension does not match the type of property "${a.startsWith("_")?a.slice(1):a}"`,a)),o[a]&&this.issues.push(se("warning","structure",`Duplicate choice of type property "${a}"`,a)),o[a]=s;continue}!(s in t)&&!(s.startsWith("_")&&s.slice(1)in t)&&this.issues.push(v(`${n}.${s}`,`Invalid additional property "${s}"`))}}constraintsCheck(e,t,n){let i=t.constraints;if(i){for(let o of i)if(o.severity==="error"&&!(o.key in ss)&&!this.isExpressionTrue(o,e,n)){this.issues.push(Cr(n,o));return}}}referenceTypeCheck(e,t,n){if(e.type!=="Reference")return;let i=e.value;if(!ae(i))return;let o=i.reference.split("/")[0];if(!o)return;let s=t.type.find(g=>g.code==="Reference")?.targetProfile;if(!s)return;let a=xr+"/fhir/StructureDefinition/",c=a+"Resource",u=a+o,p="https://medplum.com/fhir/StructureDefinition/",m=p+o;for(let g of s)if(g===c||g===u||g===m||!g.startsWith(a)&&!g.startsWith(p))return;this.issues.push(se("warning","structure",`Invalid reference for "${n}", got "${o}", expected "${s.join('", "')}"`,n))}isExpressionTrue(e,t,n){let i={"%context":t,"%ucum":x(gr)};this.currentResource.length>0&&(i["%resource"]=x(this.currentResource[this.currentResource.length-1])),O(this.root.value)&&(i["%rootResource"]=this.root);try{let o=A(e.expression,[t],i);return o.length===1&&o[0].value===!0}catch(o){return this.issues.push(wr(n,"Error evaluating invariant expression",o,{fhirpath:e.expression})),!1}}validatePrimitiveType(e,t){let[n,i]=fs(e);if(n){let{type:o,value:s}=n;if(!(o in Br)){this.issues.push(v(t,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=Br[o];if(typeof s!==a){s!==null&&this.issues.push(v(t,`Invalid JSON type: expected ${a}, but got ${typeof s}`));return}a==="string"?this.validateString(s,o,t):a==="number"&&this.validateNumber(s,o,t)}i&&Ut(i.value,this,J("Element"),t)}validateString(e,t,n){if(!e.trim()){this.issues.push(v(n,"String must contain non-whitespace content"));return}let i=$e[t];i&&!i.exec(e)&&this.issues.push(v(n,"Invalid "+t+" format"))}validateNumber(e,t,n){Number.isNaN(e)||!Number.isFinite(e)?this.issues.push(v(n,"Invalid numeric value")):us(t)&&!Number.isInteger(e)?this.issues.push(v(n,"Expected number to be an integer")):t===l.positiveInt&&e<=0?this.issues.push(v(n,"Expected number to be positive")):t===l.unsignedInt&&e<0&&this.issues.push(v(n,"Expected number to be non-negative"))}};function us(r){return r===l.integer||r===l.positiveInt||r===l.unsignedInt}function ls(r,e,t){let n="";e.startsWith("_")&&(e=e.slice(1),n="_");let i=e.split(/(?=[A-Z])/g),o="";for(let s of i){o+=s;let a=o+"[x]";if(t[a])return C(r,o)?n+a:void 0}}function qr(r,e,t){for(let[n,i]of Object.entries(r)){let o=`${e}.${n}`,s=n.startsWith("_")?n.slice(1):`_${n}`;if(i===null)t.push(v(o,"Invalid null value"));else if(Array.isArray(i))for(let a=0;a<i.length;a++)i[a]===void 0?t.push(v(`${o}[${a}]`,"Invalid undefined value")):i[a]===null&&!r[s]?.[a]?t.push(v(`${o}[${a}]`,"Invalid null value")):i[a]&&qr(i[a],`${o}[${a}]`,t);else typeof i=="object"&&qr(i,o,t)}}function ps(r,e){let t=Array.isArray(r)?r.map(n=>({type:n.type,value:n.value})):{type:r.type,value:r.value};return!(e.pattern&&!Ie(t,e.pattern)||e.fixed&&!Z(t,e.fixed))}function qt(r,e,t,n){if(Array.isArray(r))return!1;let i;e.path==="$this"?i=t:i=(n??t.elements)[e.path];let o=t.type;switch(e.type){case"value":case"pattern":if(!r||!i)return!1;if(i.pattern)return Ie(r,i.pattern);if(i.fixed)return Z(r,i.fixed);if(i.binding?.strength==="required"&&i.binding.valueSet)return!0;break;case"type":return!r||!o?.length?!1:o.some(s=>s.code===r.type)}return!1}function ds(r,e){if(e){for(let t of e.slices)if(e.discriminator.every(n=>Oe(ge(r,n.path))?.some(i=>qt(i,n,t))))return t.name}}function fs(r){if(typeof r.value!="object"||!r.value)return[r,void 0];let e=r.value.valueOf();if(e===r.value)return[void 0,{type:"Element",value:r.value}];let t=new Set(Object.keys(e)),n=Object.entries(r.value).filter(([o,s])=>!t.has(o)),i=n.length>0?Object.fromEntries(n):void 0;return[{type:r.type,value:e},{type:"Element",value:i}]}function d(r){return[{type:l.boolean,value:r}]}function x(r){return r==null?{type:"undefined",value:void 0}:Number.isSafeInteger(r)?{type:l.integer,value:r}:typeof r=="number"?{type:l.decimal,value:r}:typeof r=="boolean"?{type:l.boolean,value:r}:typeof r=="string"?{type:l.string,value:r}:I(r)?{type:l.Quantity,value:r}:O(r)?{type:r.resourceType,value:r}:{type:l.BackboneElement,value:r}}function N(r){return r.length===0?!1:!!r[0].value}function B(r,e){if(r.length!==0){if(r.length===1&&(!e||r[0].type===e))return r[0];throw new Error(`Expected singleton of type ${e}, but found ${JSON.stringify(r)}`)}}function C(r,e,t){if(!r.value)return;let n=Qe(r.type,e,t?.profileUrl);return n?ri(r,e,n):ms(r,e)}function ri(r,e,t){let n=r.value,i=t.type;if(!i||i.length===0)return;let o,s="undefined",a;if(t.path.endsWith("[x]")){let c=t.path.split(".").pop().replace("[x]","");for(let u of i){let p=c+w(u.code);if(o=n[p],a=n["_"+p],o!==void 0||a!==void 0){s=u.code;break}}}else console.assert(i.length===1,"Expected single type",t.path),o=n[e],s=i[0].code,a=n["_"+e];if(a)if(Array.isArray(o)){o=o.slice();for(let c=0;c<Math.max(o.length,a.length);c++)o[c]=ti(o[c],a[c])}else o=ti(o,a);if(!S(o))return(s==="Element"||s==="BackboneElement")&&(s=t.type[0].code),Array.isArray(o)?o.map(c=>Yn(c,s)):Yn(o,s)}function Yn(r,e){return e==="Resource"&&O(r)&&(e=r.resourceType),{type:e,value:r}}function ms(r,e){let t=r.value;if(!t||typeof t!="object")return;let n;if(e in t)n=t[e];else for(let i in l){let o=e+w(i);if(o in t){n=t[o];break}}if(!S(n))return Array.isArray(n)?n.map(x):x(n)}function Ge(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(N(jt(t,i))){n=!0;break}n||e.push(t)}return e}function jr(r){return d(!N(r))}function $r(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?d(!1):d(r.every((t,n)=>N(jt(t,e[n]))))}function Wr(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?d(!0):d(r.some((t,n)=>!N(jt(t,e[n]))))}function jt(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?d(Math.abs(t-n)<1e-8):I(t)&&I(n)?d(Qr(t,n)):d(typeof t=="object"&&typeof n=="object"?Kr(r,e):t===n)}function $t(r,e){return r.length===0&&e.length===0?d(!0):r.length!==e.length?d(!1):(r.sort(Zn),e.sort(Zn),d(r.every((t,n)=>N(ni(t,e[n])))))}function ni(r,e){let{type:t,value:n}=r,{type:i,value:o}=e,s=n?.valueOf(),a=o?.valueOf();return typeof s=="number"&&typeof a=="number"?d(Math.abs(s-a)<.01):I(s)&&I(a)?d(Qr(s,a)):d(t==="Coding"&&i==="Coding"?typeof s!="object"||typeof a!="object"?!1:s.code===a.code&&s.system===a.system:typeof s=="object"&&typeof a=="object"?Kr({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function Zn(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?t-n:typeof t=="string"&&typeof n=="string"?t.localeCompare(n):0}function He(r,e){let{value:t}=r;if(t==null)return!1;switch(e){case"Boolean":return typeof t=="boolean";case"Decimal":case"Integer":return typeof t=="number";case"Date":return Gr(t);case"DateTime":return We(t);case"Time":return typeof t=="string"&&!!/^T\d/.exec(t);case"Period":return Hr(t);case"Quantity":return I(t);default:return typeof t=="object"&&t?.resourceType===e}}function Gr(r){return typeof r=="string"&&!!$e.date.exec(r)}function We(r){return typeof r=="string"&&!!$e.dateTime.exec(r)}function Hr(r){return!!(r&&typeof r=="object"&&("start"in r&&We(r.start)||"end"in r&&We(r.end)))}function hs(r){if(r){if(Gr(r))return{start:Xn(r,"0000-00-00T00:00:00.000Z"),end:Xn(r,"xxxx-12-31T23:59:59.999Z")};if(We(r))return{start:r,end:r};if(Hr(r))return r}}function Xn(r,e){return r+e.substring(r.length)}function I(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function Qr(r,e){return Math.abs(r.value-e.value)<.01&&(r.unit===e.unit||r.code===e.code||r.unit===e.code||r.code===e.unit)}function Kr(r,e){let t=Object.keys(r),n=Object.keys(e);if(t.length!==n.length)return!1;for(let i of t){let o=r[i],s=e[i];if(ei(o)&&ei(s)){if(!Kr(o,s))return!1}else if(o!==s)return!1}return!0}function ei(r){return r!==null&&typeof r=="object"}function ti(r,e){if(e){if(typeof e!="object")throw new Error("Primitive extension must be an object");return ys(r??{},e)}return r}function ys(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}function X(r){let e=ce(r),t=si(r);return t===e?{reference:e}:{reference:e,display:t}}function ce(r){return ae(r)?r.reference:`${r.resourceType}/${r.id}`}function xe(r){if(r)return ae(r)?r.reference.split("/")[1]:r.id}function gs(r){if(r?.reference===void 0)throw new f(h("Reference missing reference property."));let[e,t]=r.reference.split("/");if(e===""||t===""||t===void 0)throw new f(h("Unable to parse reference string."));return[e,t]}function oi(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function si(r){if(oi(r)){let e=xs(r);if(e)return e}if(r.resourceType==="Device"){let e=vs(r);if(e)return e}if(r.resourceType==="MedicationRequest"&&r.medicationCodeableConcept)return Ke(r.medicationCodeableConcept);if(r.resourceType==="Subscription"&&r.criteria)return r.criteria;if(r.resourceType==="User"&&r.email)return r.email;if("name"in r&&r.name&&typeof r.name=="string")return r.name;if("code"in r&&r.code){let e=r.code;if(Array.isArray(e)&&(e=e[0]),di(e))return Ke(e);if(fi(e))return e.text}return ce(r)}function xs(r){let e=r.name;if(e&&e.length>0)return Ye(e[0])}function vs(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function Ts(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=ii(t);if(n)return n}else return ii(e)}function ii(r){if(r.url&&r.contentType?.startsWith("image/"))return r.url}function Ss(r){return r?new Date(r):void 0}function ze(r,e){let t=new Date(r);t.setUTCHours(0,0,0,0);let n=e?new Date(e):new Date;n.setUTCHours(0,0,0,0);let i=t.getUTCFullYear(),o=t.getUTCMonth(),s=t.getUTCDate(),a=n.getUTCFullYear(),c=n.getUTCMonth(),u=n.getUTCDate(),p=a-i;(c<o||c===o&&u<s)&&p--;let m=a*12+c-(i*12+o);u<s&&m--;let g=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:p,months:m,days:g}}function Es(r,e){let{years:t,months:n,days:i}=ze(r,e);return t>=2?t.toString().padStart(3,"0")+"Y":n>=1?n.toString().padStart(3,"0")+"M":i.toString().padStart(3,"0")+"D"}function bs(r){let e={};return ai(r.item,e),e}function ai(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),ai(t.item,e)}function Rs(r){let e={};return ci(r.item,e),e}function ci(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]?e[t.linkId]=[...e[t.linkId],...t.answer]:e[t.linkId]=t.answer),ci(t.item,e)}function ui(r,e){let t=r.identifier;if(!t)return;let n=Array.isArray(t)?t:[t];for(let i of n)if(i.system===e)return i.value}function Ps(r,e,t){let n=r.identifier;if(!n){r.identifier=[{system:e,value:t}];return}for(let i of n)if(i.system===e){i.value=t;return}n.push({system:e,value:t})}function Cs(r,...e){let t=Y(r,...e);if(!t)return;let n=C({type:"Extension",value:t},"value[x]");if(n)return Array.isArray(n)?n[0].value:n.value}function Y(r,...e){let t=r;for(let n=0;n<e.length&&t;n++)t=t?.extension?.find(i=>i.url===e[n]);return t}function zr(r,e){return JSON.stringify(r,ws,e?2:void 0)}function ws(r,e){return!As(r)&&S(e)?void 0:e}function As(r){return!!/\d+$/.exec(r)}function S(r){if(r==null)return!0;let e=typeof r;return e==="string"||e==="object"?!$(r):!1}function $(r){if(r==null)return!1;let e=typeof r;return e==="string"&&r!==""||e==="object"&&("length"in r&&r.length>0||Object.keys(r).length>0)}function Z(r,e,t){return r===e||S(r)&&S(e)?!0:S(r)||S(e)?!1:Array.isArray(r)&&Array.isArray(e)?Os(r,e):Array.isArray(r)||Array.isArray(e)?!1:E(r)&&E(e)?Is(r,e,t):(E(r)||E(e),!1)}function Os(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!Z(r[t],e[t]))return!1;return!0}function Is(r,e,t){let n=new Set;Object.keys(r).forEach(i=>n.add(i)),Object.keys(e).forEach(i=>n.add(i)),t==="meta"&&(n.delete("versionId"),n.delete("lastUpdated"),n.delete("author"));for(let i of n){let o=r[i],s=e[i];if(!Z(o,s,i))return!1}return!0}function Ie(r,e){return S(r)?!0:S(e)?!1:Array.isArray(r)&&Array.isArray(e)?ks(r,e):Array.isArray(r)||Array.isArray(e)?!1:E(r)&&E(e)?Vs(r,e):E(r)||E(e)?!1:r===e}function ks(r,e){return e.every(t=>r.some(n=>Ie(n,t)))}function Vs(r,e){return Object.entries(e).every(([t,n])=>t in r&&Ie(r[t],n))}function ue(r){return r===void 0?r:JSON.parse(JSON.stringify(r))}function Ds(r){return!!/^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/i.exec(r)}function E(r){return r!==null&&typeof r=="object"}function Jr(r){return r.every(li)}function li(r){return typeof r=="string"}function pi(r){return E(r)&&"code"in r&&typeof r.code=="string"}function di(r){return E(r)&&"coding"in r&&Array.isArray(r.coding)&&r.coding.every(pi)}function fi(r){return E(r)&&"text"in r&&typeof r.text=="string"}var mi=[];for(let r=0;r<256;r++)mi.push(r.toString(16).padStart(2,"0"));function Yr(r){let e=new Uint8Array(r),t=new Array(e.length);for(let n=0;n<e.length;n++)t[n]=mi[e[n]];return t.join("")}function Zr(r){let e=new Uint8Array(r),t=[];for(let n=0;n<e.length;n++)t[n]=String.fromCharCode(e[n]);return window.btoa(t.join(""))}function w(r){return r?r.charAt(0).toUpperCase()+r.substring(1):""}function Ae(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function Gt(r){return r.length>0&&r.startsWith(r[0].toUpperCase())}function ve(r,e){let t=r+".";if(e.startsWith(t))return e.slice(t.length)}function Wt(r,e){return r.coding?.find(t=>t.system===e)?.code}function Ms(r,e,t){r.coding||(r.coding=[]);let n=r.coding.find(i=>i.system===e);n?n.code=t:r.coding.push({system:e,code:t})}function Ns(r,e,t,n){return r.qualifiedInterval?.find(i=>hi(i,e)&&Us(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function Fs(r,e,t){return r.qualifiedInterval?.find(n=>hi(n,e)&&t.includes(n.condition))}function hi(r,e){return _s(r,e)&&Ls(r,e)}function _s(r,e){return!r.gender||r.gender===e.gender}function Ls(r,e){return!r.age||Xr(ze(e.birthDate).years,r.age)}function Us(r,e,t){return!!r.range&&Xr(e,r.range,t)}function Xr(r,e,t){return(e.low?.value===void 0||gi(r,e.low.value,t))&&(e.high?.value===void 0||yi(r,e.high.value,t))}function Bs(r,e){return parseFloat(r.toFixed(e))}function qs(r,e,t){return j(r,t)===j(e,t)}function js(r,e,t){return j(r,t)<j(e,t)}function $s(r,e,t){return j(r,t)>j(e,t)}function yi(r,e,t){return j(r,t)<=j(e,t)}function gi(r,e,t){return j(r,t)>=j(e,t)}function j(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function Ws(r,e,t){return r.find(n=>typeof e=="string"?Wt(n.code||{},t)===e:Wt(n.code||{},t)===Wt(e,t))}function Oe(r){if(r)return Array.isArray(r)?r:[r]}var Ht=r=>new Promise(e=>{setTimeout(e,r)});function Qt(r,e,t){let n=[];for(let i=0;i<t-1;i++){let o=r.indexOf(e);if(o<0)break;n.push(r.slice(0,o)),r=r.slice(o+e.length)}return n.push(r),n}function en(r){let e,t=!1;return function(){return t||(e=r(),t=!0),e}}function Te(r,e){return r?(r.push(e),r):[e]}function Je(r){return r.sort((e,t)=>e.localeCompare(t))}function Kt(r){return r.endsWith("/")?r:r+"/"}function xi(r){return r.startsWith("/")?r.slice(1):r}function q(r,e){return new URL(xi(e),Kt(r.toString())).toString()}function tn(r,e){return q(r,e).toString().replace("http://","ws://").replace("https://","wss://")}function rn(r){return typeof r=="object"&&!Array.isArray(r)&&!(r instanceof URLSearchParams)&&(r=Object.fromEntries(Object.entries(r).filter(e=>e[1]!==void 0))),new URLSearchParams(r).toString()}var vi=/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-_]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-_]*[A-Za-z0-9])$/;function Gs(r){return vi.test(r)}function Hs(r,e){return r?.meta?.profile?.includes(e)||(r.meta=r.meta??{},r.meta.profile=r.meta.profile??[],r.meta.profile.push(e)),r}function Qs(r,e){return new Map(r.entry?.filter(n=>!!n.resource).map(n=>[ui(n.resource,e),n.resource]).filter(([n])=>n!==void 0))}function Ks(r,e){if(r?.meta?.profile?.includes(e)){let t=r.meta.profile.indexOf(e);r.meta.profile.splice(t,1)}return r}function zs(r,e){let t=[];for(let n=0;n<r.length;n++){let i=e(r[n],n);Array.isArray(i)?t.push(...i.flat()):i!==void 0&&t.push(i)}return t}function Js(r,e){let t=[];if(r.line&&t.push(...r.line),r.city||r.state||r.postalCode){let n=[];r.city&&n.push(r.city),r.state&&n.push(r.state),r.postalCode&&n.push(r.postalCode),t.push(n.join(", "))}return r.use&&(e?.all||e?.use)&&t.push("["+r.use+"]"),t.join(e?.lineSeparator??", ").trim()}function Ye(r,e){let t=[];if(r.prefix&&e?.prefix!==!1&&t.push(...r.prefix),r.given&&t.push(...r.given),r.family&&t.push(r.family),r.suffix&&e?.suffix!==!1&&t.push(...r.suffix),r.use&&(e?.all||e?.use)&&t.push("["+r.use+"]"),t.length===0){let n=ke(r.text);if(n)return n}return t.join(" ").trim()}function Ys(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function Zs(r){return ke(r.family)??""}function Jt(r){return r instanceof Date&&!isNaN(r.getTime())}function Xs(r,e,t){if(!r)return"";let n=new Date(r);return Jt(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function Ti(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return Jt(n)?n.toLocaleTimeString(e,t):""}function zt(r,e,t){if(!r)return"";let n=new Date(r);return Jt(n)?n.toLocaleString(e,t):""}function ea(r,e,t){return!r||!r.start&&!r.end?"":zt(r.start,e,t)+" - "+zt(r.end,e,t)}var ta={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},ra={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},na={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function ia(r){if(!r)return"";let e=[];return oa(e,r.repeat),r.event&&e.push(r.event.map(t=>zt(t)).join(", ")),w(e.join(" ").trim())}function oa(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(ta[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+ra[i]):r.push("per "+n+" "+na[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(w).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>Ti(o)).join(", "))}function sa(r,e,t=!1){if(t&&e===void 0)throw new Error("Precision must be specified for exclusive ranges");let n=r?.low&&{...r.low,comparator:void 0},i=r?.high&&{...r.high,comparator:void 0};return n?.value===void 0&&i?.value===void 0?"":n?.value!==void 0&&i?.value===void 0?t&&e!==void 0?(n.value=ua(n.value,e),`> ${le(n,e)}`):`>= ${le(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=ca(i.value,e),`< ${le(i,e)}`):`<= ${le(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${le(n,e)} - ${le(i,e)}`)}function le(r,e){if(!r)return"";let t=[];return r.comparator&&(t.push(r.comparator),t.push(" ")),r.value!==void 0&&(e!==void 0?t.push(r.value.toFixed(e)):t.push(r.value)),r.unit&&(r.unit!=="%"&&t[t.length-1]!==" "&&t.push(" "),t.push(r.unit)),t.join("").trim()}function aa(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function Ke(r){if(!r)return"";let e=ke(r.text);return e||(r.coding?r.coding.map(t=>Si(t)).join(", "):"")}function Si(r){return ke(r?.display)??ke(r?.code)??""}function Ei(r){if(!r)return"";let e=[];if(r.valueQuantity)e.push(le(r.valueQuantity));else if(r.valueCodeableConcept)e.push(Ke(r.valueCodeableConcept));else{let t=ke(r.valueString);t&&e.push(t)}return"component"in r&&e.push(r.component.map(t=>Ei(t)).join(" / ")),e.join(" / ").trim()}function ke(r){return typeof r=="string"?r:void 0}function ca(r,e,t=1){return(bi(r,e)+t)*Math.pow(10,-e)}function ua(r,e,t=1){return(bi(r,e)-t)*Math.pow(10,-e)}function bi(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}var l={Address:"Address",Age:"Age",Annotation:"Annotation",Attachment:"Attachment",BackboneElement:"BackboneElement",CodeableConcept:"CodeableConcept",Coding:"Coding",ContactDetail:"ContactDetail",ContactPoint:"ContactPoint",Contributor:"Contributor",Count:"Count",DataRequirement:"DataRequirement",Distance:"Distance",Dosage:"Dosage",Duration:"Duration",Expression:"Expression",Extension:"Extension",HumanName:"HumanName",Identifier:"Identifier",MarketingStatus:"MarketingStatus",Meta:"Meta",Money:"Money",Narrative:"Narrative",ParameterDefinition:"ParameterDefinition",Period:"Period",Population:"Population",ProdCharacteristic:"ProdCharacteristic",ProductShelfLife:"ProductShelfLife",Quantity:"Quantity",Range:"Range",Ratio:"Ratio",Reference:"Reference",RelatedArtifact:"RelatedArtifact",SampledData:"SampledData",Signature:"Signature",SubstanceAmount:"SubstanceAmount",SystemString:"http://hl7.org/fhirpath/System.String",Timing:"Timing",TriggerDefinition:"TriggerDefinition",UsageContext:"UsageContext",base64Binary:"base64Binary",boolean:"boolean",canonical:"canonical",code:"code",date:"date",dateTime:"dateTime",decimal:"decimal",id:"id",instant:"instant",integer:"integer",markdown:"markdown",oid:"oid",positiveInt:"positiveInt",string:"string",time:"time",unsignedInt:"unsignedInt",uri:"uri",url:"url",uuid:"uuid"};function la(r){for(let e of r.entry){let t=e.resource;t.resourceType==="SearchParameter"&&Yt(t)}}function Yt(r){for(let e of r.base??[]){let t=F.types[e];t||(t={searchParamsDetails:{}},F.types[e]=t),t.searchParams||(t.searchParams={_id:{base:[e],code:"_id",type:"token",expression:e+".id"},_lastUpdated:{base:[e],code:"_lastUpdated",type:"date",expression:e+".meta.lastUpdated"},_compartment:{base:[e],code:"_compartment",type:"reference",expression:e+".meta.compartment"},_profile:{base:[e],code:"_profile",type:"uri",expression:e+".meta.profile"},_security:{base:[e],code:"_security",type:"token",expression:e+".meta.security"},_source:{base:[e],code:"_source",type:"uri",expression:e+".meta.source"},_tag:{base:[e],code:"_tag",type:"token",expression:e+".meta.tag"}}),t.searchParams[r.code]=r}}function Mt(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?Pi((r.base?.path??r.path)?.split(".")):e}function Pi(r){return r.length===1?r[0]:r.map(w).join("")}function Lt(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function pa(){return Object.values(Dr()).filter(Lt).map(r=>r.name)}function da(r){return F.types[r]?.searchParams}function fa(r,e){return F.types[r]?.searchParams?.[e]}function ma(r){let e=r.replaceAll("[x]","").split(".").pop();return Ci(e)}function Ci(r){let e;return r.length<100?e=r.match(/[A-Z]+(?![a-z])|[A-Z]?[a-z]+|\d+/g)??[]:e=r.split(/(?=[A-Z])/),e.map(ya).join(" ").replace("_"," ").replace(/\s+/g," ")}var ha=new Set(["ID","IP","PKCE","JWKS","URI","URL","OMB","UDI"]);function ya(r){let e=r.toUpperCase();return r===e?r:ha.has(e)?e:e.charAt(0)+r.slice(1)}function Qe(r,e,t){let n=we(r,t);if(n)return wi(n.elements,e)}function wi(r,e){let t=r[e]??r[e+"[x]"];if(t)return t;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=r[o];if(s)return s}}}function O(r){return!!(r&&typeof r=="object"&&"resourceType"in r)}function ae(r){return!!(r&&typeof r=="object"&&"reference"in r&&typeof r.reference=="string")}var F={types:{}};function nn(r){switch(r.type){case l.uuid:case l.uri:case l.url:case l.string:case l.oid:case l.markdown:case l.id:case l.code:case l.canonical:case l.base64Binary:case l.SystemString:case l.date:case l.dateTime:case l.instant:return r.value;case l.Identifier:return`${r.value.system??""}|${r.value.value}`;case l.Coding:return Ri(r.value);case l.CodeableConcept:return r.value.coding?.map(Ri).join(",")??r.value.text;case l.HumanName:return r.value.text?r.value.text:Ye(r.value);case l.unsignedInt:case l.positiveInt:case l.integer:case l.decimal:return r.value.toString();case l.boolean:return r.value?"true":"false";case l.Extension:return r.value.url;case l.ContactPoint:return r.value.value;case l.Quantity:case l.Age:case l.Count:case l.Duration:return`${r.value.value}|${r.value.system??""}|${r.value.code??r.value.unit??""}`;case l.Reference:return r.value.reference;default:return O(r.value)?X(r.value).reference:JSON.stringify(r)}}function Ri(r){return r?`${r.system??""}|${r.code}`:""}function Ve(r){if(r.startsWith("T"))return r+"T00:00:00.000Z".substring(r.length);if(r.length<=10)return r;try{return new Date(r).toISOString()}catch{return r}}var ee=()=>[],k={empty:(r,e)=>d(e.length===0||e.every(t=>S(t.value))),hasValue:(r,e)=>d(e.length!==0),exists:(r,e,t)=>t?d(e.filter(n=>N(t.eval(r,[n]))).length>0):d(e.length>0&&e.every(n=>!S(n.value))),all:(r,e,t)=>d(e.every(n=>N(t.eval(r,[n])))),allTrue:(r,e)=>{for(let t of e)if(!t.value)return d(!1);return d(!0)},anyTrue:(r,e)=>{for(let t of e)if(t.value)return d(!0);return d(!1)},allFalse:(r,e)=>{for(let t of e)if(t.value)return d(!1);return d(!0)},anyFalse:(r,e)=>{for(let t of e)if(!t.value)return d(!0);return d(!1)},subsetOf:(r,e,t)=>{if(e.length===0)return d(!0);let n=t.eval(r,Se(r));return n.length===0?d(!1):d(e.every(i=>n.some(o=>o.value===i.value)))},supersetOf:(r,e,t)=>{let n=t.eval(r,Se(r));return n.length===0?d(!0):e.length===0?d(!1):d(n.every(i=>e.some(o=>o.value===i.value)))},count:(r,e)=>[{type:l.integer,value:e.length}],distinct:(r,e)=>{let t=[];for(let n of e)t.some(i=>i.value===n.value)||t.push(n);return t},isDistinct:(r,e)=>d(e.length===k.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>N(t.eval(r,[n]))),select:(r,e,t)=>e.map(n=>t.eval(r,[n])).flat(),repeat:ee,ofType:(r,e,t)=>e.filter(n=>n.type===t.name),single:(r,e)=>{if(e.length>1)throw new Error("Expected input length one for single()");return e.length===0?[]:e.slice(0,1)},first:(r,e)=>e.length===0?[]:e.slice(0,1),last:(r,e)=>e.length===0?[]:e.slice(e.length-1,e.length),tail:(r,e)=>e.length===0?[]:e.slice(1,e.length),skip:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for skip(num)");return n>=e.length?[]:n<=0?e:e.slice(n,e.length)},take:(r,e,t)=>{let n=t.eval(r,e)[0]?.value;if(typeof n!="number")throw new Error("Expected a number for take(num)");return n>=e.length?e:n<=0?[]:e.slice(0,n)},intersect:(r,e,t)=>{if(!t)return e;let n=t.eval(r,Se(r)),i=[];for(let o of e)!i.some(s=>s.value===o.value)&&n.some(s=>s.value===o.value)&&i.push(o);return i},exclude:(r,e,t)=>{if(!t)return e;let n=t.eval(r,Se(r)),i=[];for(let o of e)n.some(s=>s.value===o.value)||i.push(o);return i},union:(r,e,t)=>{if(!t)return e;let n=t.eval(r,Se(r));return Ge([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,Se(r));return[...e,...n]},htmlChecks:(r,e,t)=>[x(!0)],iif:(r,e,t,n,i)=>{let o=t.eval(r,e);if(o.length>1||o.length===1&&typeof o[0].value!="boolean")throw new Error("Expected criterion to evaluate to a Boolean");return N(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);if(typeof t=="boolean")return[{type:l.boolean,value:t}];if(typeof t=="number"&&(t===0||t===1))return d(!!t);if(typeof t=="string"){let n=t.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return d(!0);if(["false","f","no","n","0","0.0"].includes(n))return d(!1)}return[]},convertsToBoolean:(r,e)=>e.length===0?[]:d(k.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);return typeof t=="number"?[{type:l.integer,value:t}]:typeof t=="string"&&/^[+-]?\d+$/.exec(t)?[{type:l.integer,value:parseInt(t,10)}]:typeof t=="boolean"?[{type:l.integer,value:t?1:0}]:[]},convertsToInteger:(r,e)=>e.length===0?[]:d(k.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:l.date,value:Ve(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:d(k.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:l.dateTime,value:Ve(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:d(k.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);return typeof t=="number"?[{type:l.decimal,value:t}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(t)?[{type:l.decimal,value:parseFloat(t)}]:typeof t=="boolean"?[{type:l.decimal,value:t?1:0}]:[]},convertsToDecimal:(r,e)=>e.length===0?[]:d(k.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);return I(t)?[{type:l.Quantity,value:t}]:typeof t=="number"?[{type:l.Quantity,value:{value:t,unit:"1"}}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(t)?[{type:l.Quantity,value:{value:parseFloat(t),unit:"1"}}]:typeof t=="boolean"?[{type:l.Quantity,value:{value:t?1:0,unit:"1"}}]:[]},convertsToQuantity:(r,e)=>e.length===0?[]:d(k.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);return t==null?[]:I(t)?[{type:l.string,value:`${t.value} '${t.unit}'`}]:[{type:l.string,value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:d(k.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=G(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:l.time,value:Ve("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:d(k.toTime(r,e).length===1),indexOf:(r,e,t)=>L((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>L((i,o,s)=>{let a=o,c=s?a+s:i.length;return a<0||a>=i.length?void 0:i.substring(a,c)},r,e,t,n),startsWith:(r,e,t)=>L((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>L((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>L((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>L(t=>t.toUpperCase(),r,e),lower:(r,e)=>L(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>L((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>L((n,i)=>!!new RegExp(i).exec(n),r,e,t),replaceMatches:(r,e,t,n)=>L((i,o,s)=>i.replaceAll(o,s),r,e,t,n),length:(r,e)=>L(t=>t.length,r,e),toChars:(r,e)=>L(t=>t?t.split(""):void 0,r,e),encode:ee,decode:ee,escape:ee,unescape:ee,trim:ee,split:ee,join:(r,e,t)=>{let n=t?.eval(r,Se(r))[0]?.value??"";if(typeof n!="string")throw new Error("Separator must be a string.");return[{type:l.string,value:e.map(i=>i.value?.toString()??"").join(n)}]},abs:(r,e)=>W(Math.abs,r,e),ceiling:(r,e)=>W(Math.ceil,r,e),exp:(r,e)=>W(Math.exp,r,e),floor:(r,e)=>W(Math.floor,r,e),ln:(r,e)=>W(Math.log,r,e),log:(r,e,t)=>W((n,i)=>Math.log(n)/Math.log(i),r,e,t),power:(r,e,t)=>W(Math.pow,r,e,t),round:(r,e)=>W(Math.round,r,e),sqrt:(r,e)=>W(Math.sqrt,r,e),truncate:(r,e)=>W(t=>t|0,r,e),children:ee,descendants:ee,trace:(r,e,t)=>e,now:()=>[{type:l.dateTime,value:new Date().toISOString()}],timeOfDay:()=>[{type:l.time,value:new Date().toISOString().substring(11)}],today:()=>[{type:l.date,value:new Date().toISOString().substring(0,10)}],between:(r,e,t,n,i)=>{let o=k.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=k.toDateTime(r,n.eval(r,e));if(s.length===0)throw new Error("Invalid end date");let a=i.eval(r,e)[0]?.value;if(a!=="years"&&a!=="months"&&a!=="days")throw new Error("Invalid units");let c=ze(o[0].value,s[0].value);return[{type:l.Quantity,value:{value:c[a],unit:a}}]},is:(r,e,t)=>{let n="";return t instanceof U?n=t.name:t instanceof te&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:l.boolean,value:He(i,n)})):[]},not:(r,e)=>k.toBoolean(r,e).map(t=>({type:l.boolean,value:!t.value})),resolve:(r,e)=>e.map(t=>{let n=t.value,i;if(typeof n=="string")i=n;else if(typeof n=="object"){let o=n;if(o.resource)return x(o.resource);o.reference?i=o.reference:o.type&&o.identifier&&(i=`${o.type}?identifier=${o.identifier.system}|${o.identifier.value}`)}if(i?.includes("?")){let[o]=i.split("?");return{type:o,value:{resourceType:o}}}if(i?.includes("/")){let[o,s]=i.split("/");return{type:o,value:{resourceType:o,id:s}}}return{type:l.BackboneElement,value:void 0}}).filter(t=>!!t.value),as:(r,e)=>e,type:(r,e)=>e.map(({value:t})=>typeof t=="boolean"?{type:l.BackboneElement,value:{namespace:"System",name:"Boolean"}}:typeof t=="number"?{type:l.BackboneElement,value:{namespace:"System",name:"Integer"}}:O(t)?{type:l.BackboneElement,value:{namespace:"FHIR",name:t.resourceType}}:{type:l.BackboneElement,value:null}),conformsTo:(r,e,t)=>{let n=t.eval(r,e)[0].value;if(!n.startsWith("http://hl7.org/fhir/StructureDefinition/"))throw new Error("Expected a StructureDefinition URL");let i=n.replace("http://hl7.org/fhir/StructureDefinition/","");return e.map(o=>({type:l.boolean,value:o.value?.resourceType===i}))},getResourceKey:(r,e)=>{let t=e[0].value;return t?.id?[{type:l.id,value:t.id}]:[]},getReferenceKey:(r,e,t)=>{let n=e[0].value;if(!n?.reference)return[];let i="";return t instanceof U&&(i=t.name),i&&!n.reference.startsWith(i+"/")?[]:[{type:l.id,value:xe(n)}]},extension:(r,e,t)=>{let n=t.eval(r,e)[0].value,i=e?.[0]?.value;if(i){let o=Y(i,n);if(o)return[{type:l.Extension,value:o}]}return[]}};function L(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=G(t,1);if(typeof i!="string")throw new Error("String function cannot be called with non-string");let o=r(i,...n.map(s=>s?.eval(e,t)[0]?.value));return o===void 0?[]:Array.isArray(o)?o.map(x):[x(o)]}function W(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=G(t,1),o=I(i),s=o?i.value:i;if(typeof s!="number")throw new Error("Math function cannot be called with non-number");let a=r(s,...n.map(p=>p.eval(e,t)[0]?.value)),c=o?l.Quantity:t[0].type,u=o?{...i,value:a}:a;return[{type:c,value:u}]}function G(r,e){if(r.length!==e)throw new Error(`Expected ${e} arguments`);for(let t of r)if(t==null)throw new Error("Expected non-null argument");return r}function Se(r){let e=r;for(;e.parent?.variables.$this;)e=e.parent;return[e.variables.$this]}var Ze=class{constructor(e,t){this.original=e;this.child=t}eval(e,t){try{if(t.length>0){let n=[];for(let i of t)n.push(this.child.eval({parent:e,variables:{$this:i}},[i]));return n.flat()}else return this.child.eval(e,[])}catch(n){throw new Error(`FhirPathError on "${this.original}": ${n}`,{cause:n})}}toString(){return this.child.toString()}},_=class{constructor(e){this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},U=class{constructor(e){this.name=e}eval(e,t){if(this.name==="$this")return t;let n=this.getVariable(e);if(n)return[n];if(this.name.startsWith("%"))throw new Error(`Undefined variable ${this.name}`);return t.flatMap(i=>this.evalValue(i)).filter(i=>i?.value!==void 0)}getVariable(e){let t=e.variables[this.name];if(t!==void 0)return t;if(e.parent)return this.getVariable(e.parent)}evalValue(e){let t=e.value;if(!(!t||typeof t!="object"))return O(t)&&t.resourceType===this.name?e:C(e,this.name)}toString(){return this.name}},Xe=class{eval(){return[]}toString(){return"{}"}},et=class extends Ue{constructor(t,n,i){super(t,n);this.impl=i}eval(t,n){return this.impl(this.child.eval(t,n))}toString(){return this.operator+this.child.toString()}},pe=class extends z{constructor(e,t){super("as",e,t)}eval(e,t){return k.ofType(e,this.left.eval(e,t),this.right)}},P=class extends z{},V=class extends P{constructor(t,n,i,o){super(t,n,i);this.impl=o}eval(t,n){let i=this.left.eval(t,n);if(i.length!==1)return[];let o=this.right.eval(t,n);if(o.length!==1)return[];let s=i[0].value,a=o[0].value,c=I(s)?s.value:s,u=I(a)?a.value:a,p=this.impl(c,u);return typeof p=="boolean"?d(p):I(s)?[{type:l.Quantity,value:{...s,value:p}}]:[x(p)]}},tt=class extends z{constructor(e,t){super("&",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t),o=[...n,...i];return o.length>0&&o.every(s=>typeof s.value=="string")?[{type:l.string,value:o.map(s=>s.value).join("")}]:o}},rt=class extends P{constructor(e,t){super("contains",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return d(n.some(o=>o.value===i[0].value))}},nt=class extends P{constructor(e,t){super("in",e,t)}eval(e,t){let n=B(this.left.eval(e,t)),i=this.right.eval(e,t);return n?d(i.some(o=>o.value===n.value)):[]}},te=class extends z{constructor(e,t){super(".",e,t)}eval(e,t){return this.right.eval(e,this.left.eval(e,t))}toString(){return`${this.left.toString()}.${this.right.toString()}`}},Ee=class extends z{constructor(e,t){super("|",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Ge([...n,...i])}},it=class extends P{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return $r(n,i)}},ot=class extends P{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Wr(n,i)}},st=class extends P{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return $t(n,i)}},at=class extends P{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return jr($t(n,i))}},de=class extends P{constructor(e,t){super("is",e,t)}eval(e,t){let n=this.left.eval(e,t);if(n.length!==1)return[];let i=this.right.name;return d(He(n[0],i))}},ct=class extends P{constructor(e,t){super("and",e,t)}eval(e,t){let n=B(this.left.eval(e,t),"boolean"),i=B(this.right.eval(e,t),"boolean");return n?.value===!0&&i?.value===!0?d(!0):n?.value===!1||i?.value===!1?d(!1):[]}},ut=class extends P{constructor(e,t){super("or",e,t)}eval(e,t){let n=B(this.left.eval(e,t),"boolean"),i=B(this.right.eval(e,t),"boolean");return n?.value===!1&&i?.value===!1?d(!1):n?.value||i?.value?d(!0):[]}},lt=class extends P{constructor(e,t){super("xor",e,t)}eval(e,t){let n=B(this.left.eval(e,t),"boolean"),i=B(this.right.eval(e,t),"boolean");return!n||!i?[]:d(n.value!==i.value)}},pt=class extends P{constructor(e,t){super("implies",e,t)}eval(e,t){let n=B(this.left.eval(e,t),"boolean"),i=B(this.right.eval(e,t),"boolean");return i?.value===!0||n?.value===!1?d(!0):!n||!i?[]:d(!1)}},H=class{constructor(e,t){this.name=e;this.args=t}eval(e,t){let n=k[this.name];if(!n)throw new Error("Unrecognized function: "+this.name);return n(e,t,...this.args)}toString(){return`${this.name}(${this.args.map(e=>e.toString()).join(", ")})`}},fe=class{constructor(e,t){this.left=e;this.expr=t}eval(e,t){let n=this.expr.eval(e,t);if(n.length!==1)return[];let i=n[0].value;if(typeof i!="number")throw new Error("Invalid indexer expression: should return integer}");let o=this.left.eval(e,t);return i in o?[o[i]]:[]}toString(){return`${this.left.toString()}[${this.expr.toString()}]`}};var ga=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],re=class{constructor(e,t,n,i){this.result=[];this.pos={index:0,line:1,column:0};this.markStack=[];this.str=e,this.keywords=t,this.operators=n,this.dateTimeLiterals=!!i?.dateTimeLiterals,this.symbolRegex=i?.symbolRegex??/[$\w%]/}tokenize(){for(;this.pos.index<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 t=this.peek();return e==="/"&&t==="*"?this.consumeMultiLineComment():e==="/"&&t==="/"?this.consumeSingleLineComment():e==="'"||e==='"'?this.consumeString(e):e==="`"?this.consumeBacktickSymbol():e==="@"?this.consumeDateTime():/\d/.exec(e)?this.consumeNumber():/\w/.exec(e)?this.consumeSymbol():(e==="$"||e==="%")&&/\w/.exec(t)?this.consumeSymbol():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()!==`
|
|
2
2
|
`))}consumeString(e){this.advance();let t=this.buildToken("String",this.consumeWhile(()=>this.prev()==="\\"||this.curr()!==e));return this.advance(),t}consumeBacktickSymbol(){this.advance();let e=this.buildToken("Symbol",this.consumeWhile(()=>this.curr()!=="`"));return this.advance(),e}consumeDateTime(){this.advance();let e=this.pos.index;this.consumeWhile(()=>/[\d-]/.exec(this.curr()));let t=!1,n=!1;if(this.curr()==="T"&&(t=!0,this.advance(),this.consumeWhile(()=>/[\d:]/.exec(this.curr())),this.curr()==="."&&/\d/.exec(this.peek())&&(this.advance(),this.consumeWhile(()=>/\d/.exec(this.curr()))),this.curr()==="Z"?(n=!0,this.advance()):(this.curr()==="+"||this.curr()==="-")&&(n=!0,this.advance(),this.consumeWhile(()=>/[\d:]/.exec(this.curr())))),this.pos.index===e)throw new Error("Invalid DateTime literal");let i=this.str.substring(e,this.pos.index);return i.endsWith("T")?i=i.substring(0,i.length-1):!i.startsWith("T")&&t&&!n&&(i+="Z"),this.buildToken("DateTime",i)}consumeNumber(){let e=this.pos.index,t="Number";return this.consumeWhile(()=>/\d/.exec(this.curr())),this.curr()==="."&&/\d/.exec(this.peek())&&(this.advance(),this.consumeWhile(()=>/\d/.exec(this.curr()))),this.curr()==="-"&&this.dateTimeLiterals?(this.pos.index=e-1,this.consumeDateTime()):(this.curr()===" "&&xa(this.peekToken())&&(t="Quantity",this.consumeToken()),this.buildToken(t,this.str.substring(e,this.pos.index)))}consumeSymbol(){let e=this.consumeWhile(()=>this.symbolRegex.exec(this.curr()));return this.prevToken()?.value!=="."&&this.keywords.includes(e)?this.buildToken(e,e):this.buildToken("Symbol",e)}consumeOperator(){let e=this.curr(),t=this.peek(),n=e+t;return this.operators.includes(n)?(this.advance(),this.advance(),this.buildToken(n,n)):(this.advance(),this.buildToken(e,e))}consumeWhile(e){let t=this.pos.index;for(;this.pos.index<this.str.length&&e();)this.advance();return this.str.substring(t,this.pos.index)}curr(){return this.str[this.pos.index]}prev(){return this.str[this.pos.index-1]??""}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()===`
|
|
3
|
-
`?(this.pos.line++,this.pos.column=0):this.pos.column++}buildToken(e,t){let n=this.markStack.pop();if(!n)throw new Error("No mark for token");return{id:e,value:t,...n}}};function xa(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&ga.includes(r.value)))}var dt=["true","false"],ft=["!=","!~","<=",">=","{}","->"];function Ai(r){return new re(r,dt,ft).tokenize()}var y={FunctionCall:0,Dot:1,Indexer:2,UnaryAdd:3,UnarySubtract:3,Multiply:4,Divide:4,IntegerDivide:4,Modulo:4,Add:5,Subtract:5,Ampersand:5,Is:6,As:6,Union:7,GreaterThan:8,GreaterThanOrEquals:8,LessThan:8,LessThanOrEquals:8,Equals:9,Equivalent:9,NotEquals:9,NotEquivalent:9,In:10,Contains:10,And:11,Xor:12,Or:12,Implies:13,Arrow:100,Semicolon:200},va={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},Ta={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new fe(e,t)},precedence:y.Indexer},Sa={parse(r,e){if(!(e instanceof U))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new H(e.name,t)},precedence:y.FunctionCall};function Ea(r){let e=r.split(" "),t=parseFloat(e[0]),n=e[1];return n?.startsWith("'")&&n.endsWith("'")?n=n.substring(1,n.length-1):n="{"+n+"}",{value:t,unit:n}}function De(){return new Be().registerPrefix("String",{parse:(r,e)=>new _({type:l.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new _({type:l.dateTime,value:Ve(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new _({type:l.Quantity,value:Ea(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new _({type:e.value.includes(".")?l.decimal:l.integer,value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new _({type:l.boolean,value:!0})}).registerPrefix("false",{parse:()=>new _({type:l.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new U(e.value)}).registerPrefix("{}",{parse:()=>new Xe}).registerPrefix("(",va).registerInfix("[",Ta).registerInfix("(",Sa).prefix("+",y.UnaryAdd,(r,e)=>new et("+",e,t=>t)).prefix("-",y.UnarySubtract,(r,e)=>new V("-",e,e,(t,n)=>-n)).infixLeft(".",y.Dot,(r,e,t)=>new te(r,t)).infixLeft("/",y.Divide,(r,e,t)=>new V("/",r,t,(n,i)=>n/i)).infixLeft("*",y.Multiply,(r,e,t)=>new V("*",r,t,(n,i)=>n*i)).infixLeft("+",y.Add,(r,e,t)=>new V("+",r,t,(n,i)=>n+i)).infixLeft("-",y.Subtract,(r,e,t)=>new V("-",r,t,(n,i)=>n-i)).infixLeft("|",y.Union,(r,e,t)=>new Ee(r,t)).infixLeft("=",y.Equals,(r,e,t)=>new it(r,t)).infixLeft("!=",y.NotEquals,(r,e,t)=>new ot(r,t)).infixLeft("~",y.Equivalent,(r,e,t)=>new st(r,t)).infixLeft("!~",y.NotEquivalent,(r,e,t)=>new at(r,t)).infixLeft("<",y.LessThan,(r,e,t)=>new V("<",r,t,(n,i)=>n<i)).infixLeft("<=",y.LessThanOrEquals,(r,e,t)=>new V("<=",r,t,(n,i)=>n<=i)).infixLeft(">",y.GreaterThan,(r,e,t)=>new V(">",r,t,(n,i)=>n>i)).infixLeft(">=",y.GreaterThanOrEquals,(r,e,t)=>new V(">=",r,t,(n,i)=>n>=i)).infixLeft("&",y.Ampersand,(r,e,t)=>new tt(r,t)).infixLeft("and",y.And,(r,e,t)=>new ct(r,t)).infixLeft("as",y.As,(r,e,t)=>new pe(r,t)).infixLeft("contains",y.Contains,(r,e,t)=>new rt(r,t)).infixLeft("div",y.Divide,(r,e,t)=>new V("div",r,t,(n,i)=>n/i|0)).infixLeft("in",y.In,(r,e,t)=>new nt(r,t)).infixLeft("is",y.Is,(r,e,t)=>new de(r,t)).infixLeft("mod",y.Modulo,(r,e,t)=>new V("mod",r,t,(n,i)=>n%i)).infixLeft("or",y.Or,(r,e,t)=>new ut(r,t)).infixLeft("xor",y.Xor,(r,e,t)=>new lt(r,t)).infixLeft("implies",y.Implies,(r,e,t)=>new pt(r,t))}var ba=De();function Zt(r){return new Ze(r,ba.construct(Ai(r)).consumeAndParse())}function be(r,e){let t=Array.isArray(e)?e:[e];for(let n=0;n<t.length;n++){let i=t[n];typeof i=="object"&&"type"in i&&"value"in i||(t[n]=x(t[n]))}return A(r,t).map(n=>n.value)}function A(r,e,t={}){return Zt(r).eval({variables:t},e).map(i=>({type:i.type,value:i.value?.valueOf()}))}var sn=(p=>(p.BOOLEAN="BOOLEAN",p.NUMBER="NUMBER",p.QUANTITY="QUANTITY",p.TEXT="TEXT",p.REFERENCE="REFERENCE",p.CANONICAL="CANONICAL",p.DATE="DATE",p.DATETIME="DATETIME",p.PERIOD="PERIOD",p.UUID="UUID",p))(sn||{});function Xt(r,e){let t=F.types[r]?.searchParamsDetails?.[e.code];return t||(t=Pa(r,e)),t}function Ra(r,e,t){let n=F.types[r];n||(n={},F.types[r]=n),n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function Pa(r,e){let t=e.code,n=Aa(t),i=an(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let c=mt(a),u=en(()=>c.join("."));c.length===1&&c[0]instanceof P?o.propertyTypes.add("boolean"):u().endsWith("extension.value.code")||u().endsWith("extension.value.coding.code")?(o.array=!0,o.propertyTypes.add("code")):Oi(o,mt(a),r,1),u().endsWith("extension.valueDateTime")&&(o.array=!1)}let s={columnName:n,type:Oa(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return Ra(r,t,s),s}function Oi(r,e,t,n){let i=e[n];if(i instanceof pe){r.propertyTypes.add(i.right.toString());return}if(i instanceof H){Ca(r,i);return}let o=i.toString(),s=Qe(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,c=n+1;if(c<e.length&&e[c]instanceof fe&&(a=!0,c++),s.isArray&&!a&&(r.array=!0),c>=e.length){r.elementDefinitions.push(s);for(let u of s.type)r.propertyTypes.add(u.code);return}for(let u of s.type){let p=u.code;wa(p)&&(p=s.type[0].code),Oi(r,e,p,c)}}function Ca(r,e){if(e.name==="as"){r.propertyTypes.add(e.args[0].toString());return}if(e.name==="resolve"){r.propertyTypes.add("string");return}if(e.name==="where"&&e.args[0]instanceof de){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function wa(r){return r==="Element"||r==="BackboneElement"}function Aa(r){return r.split("-").reduce((e,t,n)=>e+(n?w(t):t),"")}function Oa(r,e){switch(r.type){case"date":return e.size===1&&e.has(l.date)?"DATE":"DATETIME";case"number":return"NUMBER";case"quantity":return"QUANTITY";case"reference":return e.has(l.canonical)?"CANONICAL":"REFERENCE";case"token":return e.size===1&&e.has(l.boolean)?"BOOLEAN":"TEXT";default:return"TEXT"}}function an(r,e){let t=[],n=Zt(e);return on(r,n.child,t),t}function Ia(r,e){let t=an(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function on(r,e,t){e instanceof Ee?(on(r,e.left,t),on(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function mt(r){if(r instanceof pe||r instanceof fe)return[mt(r.left),r].flat();if(r instanceof P)return[r];if(r instanceof te)return[mt(r.left),mt(r.right)].flat();if(r instanceof H){if(r.name==="where"&&!(r.args[0]instanceof de))return[];if(r.name==="last")return[]}return[r]}var ka=20,Va=1e3,cn=(T=>(T.EQUALS="eq",T.NOT_EQUALS="ne",T.GREATER_THAN="gt",T.LESS_THAN="lt",T.GREATER_THAN_OR_EQUALS="ge",T.LESS_THAN_OR_EQUALS="le",T.STARTS_AFTER="sa",T.ENDS_BEFORE="eb",T.APPROXIMATELY="ap",T.CONTAINS="contains",T.EXACT="exact",T.TEXT="text",T.NOT="not",T.ABOVE="above",T.BELOW="below",T.IN="in",T.NOT_IN="not-in",T.OF_TYPE="of-type",T.MISSING="missing",T.PRESENT="present",T.IDENTIFIER="identifier",T.ITERATE="iterate",T))(cn||{}),Vi={contains:"contains",exact:"exact",above:"above",below:"below",text:"text",not:"not",in:"in","not-in":"not-in","of-type":"of-type",missing:"missing",identifier:"identifier",iterate:"iterate"},un={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function ne(r,e){if(!r)throw new Error("Invalid search URL");let t="",n;if(typeof r=="string")if(r.includes("?")){let[s,a]=r.split("?");t=s,n=new URLSearchParams(a)}else t=r;else typeof r=="object"&&(t=r.pathname,n=r.searchParams);let i;t.includes("/")?i=t.split("/").filter(Boolean).pop():i=t;let o=[];if(n&&o.push(...n.entries()),e)for(let[s,a]of Object.entries(e))if(Array.isArray(a))for(let c of a)o.push([s,c]);else o.push([s,a??""]);return Fa(i,o)}function Da(r){return ne(r)}function Ma(r){return ne(r)}function Na(r){return ne(r)}function Fa(r,e){let t={resourceType:r};for(let[n,i]of e)_a(t,n,i);return t}function _a(r,e,t){let n,i,o=e.indexOf(":");if(o>=0?(n=e.substring(0,o),i=e.substring(o+1)):(n=e,i=""),n!=="_"){if(n==="_has"||e.includes(".")){r.filters=Te(r.filters,{code:e,operator:"eq",value:t});return}switch(n){case"_sort":La(r,t);break;case"_count":r.count=parseInt(t,10);break;case"_offset":r.offset=parseInt(t,10);break;case"_total":r.total=t;break;case"_summary":t==="count"?(r.total="accurate",r.count=0):(t==="true"||t==="data"||t==="text")&&(r.summary=t);break;case"_include":{let s=Ii(t);i==="iterate"&&(s.modifier="iterate"),r.include=Te(r.include,s);break}case"_revinclude":{let s=Ii(t);i==="iterate"&&(s.modifier="iterate"),r.revInclude=Te(r.revInclude,s);break}case"_fields":case"_elements":r.fields=t.split(",");break;case"_type":r.types=t.split(",");break;case"_format":r.format=t;break;case"_pretty":r.pretty=t==="true";break;default:{let s=F.types[r.resourceType]?.searchParams?.[n];s?r.filters=Te(r.filters,Di(s,i,t)):r.filters=Te(r.filters,qa(n,i,t))}}}}function La(r,e){for(let t of e.split(",")){let n,i=!1;t.startsWith("-")?(n=t.substring(1),i=!0):n=t,r.sortRules||(r.sortRules=[]),r.sortRules.push({code:n,descending:i})}}function Di(r,e,t){if(e==="missing")return{code:r.code,operator:"missing",value:t};switch(r.type){case"number":case"date":case"quantity":return Ua(r,t);case"reference":case"string":case"token":case"uri":return Ba(r,e,t);default:throw new Error("Unrecognized search parameter type: "+r.type)}}function Ua(r,e){let{operator:t,value:n}=ja(e);return{code:r.code,operator:t,value:n}}function Ba(r,e,t){return{code:r.code,operator:$a(e),value:t}}function qa(r,e,t){let n="eq";if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in un&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function ja(r){let e=r.substring(0,2),t=un[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function $a(r){return Vi[r]??"eq"}function Ii(r){let e=r.split(":");if(e.includes("*"))throw new f(R("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new f(R(`Invalid include value '${r}': must be of the form ResourceType:search-parameter`));if(e.length===2)return{resourceType:e[0],searchParam:e[1]};if(e.length===3)return{resourceType:e[0],searchParam:e[1],targetType:e[2]};throw new f(R(`Invalid include value '${r}'`))}var Wa=/{{([^{}]+)}}/g;function Ga(r,e){return r=r.replaceAll(Wa,(t,n)=>{let i=A(n,[],e);return i.length!==1?"":nn(i[0])}),ne(r)}function Ha(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(Qa(t))),r.sortRules&&r.sortRules.length>0&&e.push(Ka(r.sortRules)),r.offset!==void 0&&e.push("_offset="+r.offset),r.count!==void 0&&e.push("_count="+r.count),r.total!==void 0&&e.push("_total="+r.total),r.include&&r.include.forEach(t=>e.push(ki("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(ki("_revinclude",t))),e.length===0?"":(Je(e),"?"+e.join("&"))}function Qa(r){let e=r.operator in Vi?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in un?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function Ka(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function ki(r,e){return r+(e.modifier?":"+e.modifier:"")+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function ht(r){let e=[],t="",n=!1;for(let i of r)n?(t+=i,n=!1):i==="\\"?n=!0:i===","?(e.push(t),t=""):t+=i;return e.push(t),e}function yt(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!za(r,e,t))return!1}return!0}function za(r,e,t){let n=F.types[e.resourceType]?.searchParams?.[t.code];if(!n)return!1;if(t.operator==="missing"||t.operator==="present")return Ja(r,t,n);switch(n.type){case"reference":return Ya(r,t,n);case"string":case"uri":return Mi(r,t,n);case"token":return Za(r,t,n);case"date":return rc(r,t,n);default:return!1}}function Ja(r,e,t){let i=be(t.expression,r).length>0;return(e.operator==="missing"&&e.value==="false"||e.operator==="present"&&e.value==="true")===i}function Ya(r,e,t){let n=be(t.expression,r),i=er(e.operator);if(e.value===""&&n.length===0)return e.operator==="eq";let o=n.map(s=>typeof s=="string"?s:s.reference);for(let s of ht(e.value)){let a=o.includes(s);if(!a&&e.code==="_compartment"&&(a=o.some(c=>c?.endsWith("/"+s))),a)return!i}return i}function Za(r,e,t){return Xt(r.resourceType,t).type==="BOOLEAN"?Xa(r,e,t):Mi(r,e,t,!0)}function Xa(r,e,t){let n=be(t.expression,r),i=e.value==="true",o=n.includes(i);return er(e.operator)?!o:o}function Mi(r,e,t,n){let o=Xt(r.resourceType,t).elementDefinitions?.[0]?.type?.[0]?.code,s=be(t.expression,r),a=ht(e.value),c=er(e.operator);for(let u of s)for(let p of a){let m;if(o===l.Identifier?m=ec(u,e.operator,p):o===l.CodeableConcept?m=tc(u,e.operator,p):m=ln(u,e.operator,p,n),m)return!c}return c}function ln(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return ln(r,e,o,!1)&&(!s||ln(r,e,s,!1))}let i="";return r&&(typeof r=="string"?i=r:typeof r=="object"&&(i=JSON.stringify(r))),i.toLowerCase().includes(t.toLowerCase())}function ec(r,e,t){if(t.includes("|")){let[n,i]=t.split("|");return r.system?.toLowerCase()===n.toLowerCase()&&r.value?.toLowerCase()===i.toLowerCase()}return r.value?.toLowerCase()===t.toLowerCase()}function tc(r,e,t){if(t.includes("|")){let[n,i]=t.split("|");return r.coding?.some(o=>o.system?.toLowerCase()===n.toLowerCase()&&o.code?.toLowerCase()===i.toLowerCase())??!1}return r.text?.toLowerCase()===t.toLowerCase()||(r.coding?.some(n=>n.code?.toLowerCase()===t.toLowerCase())??!1)}function rc(r,e,t){let n=be(t.expression,r),i=ht(e.value),o=er(e.operator);for(let s of n)for(let a of i)if(nc(s,e.operator,a))return!o;return o}function nc(r,e,t){switch(e){case"sa":case"gt":return r>t;case"ge":return r>=t;case"eb":case"lt":return r<t;case"le":return r<=t;case"eq":case"ne":return r===t;default:return!1}}function er(r){return r==="ne"||r==="not"}var ic={resourceType:"*"},Ni=["DomainConfiguration","JsonWebKey","Login"],Fi=["PasswordChangeRequest","UserSecurityRequest","Project","ProjectMembership","User"],_i=(b=>(b.READ="read",b.VREAD="vread",b.UPDATE="update",b.PATCH="patch",b.DELETE="delete",b.HISTORY="history",b.HISTORY_INSTANCE="history-instance",b.HISTORY_TYPE="history-type",b.HISTORY_SYSTEM="history-system",b.CREATE="create",b.SEARCH="search",b.SEARCH_TYPE="search-type",b.SEARCH_SYSTEM="search-system",b.SEARCH_COMPARTMENT="search-compartment",b.CAPABILITIES="capabilities",b.TRANSACTION="transaction",b.BATCH="batch",b.OPERATION="operation",b))(_i||{}),oc=["read","vread","history","history-instance"];function sc(r,e){if(r.resource){for(let t of r.resource)if(pn(t.resourceType,e))return!0}return!1}function Li(r,e){if(Ni.includes(e))return!1;if(r.resource){for(let t of r.resource)if(pn(t.resourceType,e)&&!t.readonly)return!0}return!1}function ac(r,e){let t=e.resourceType;return Li(r,t)?Ui(r,e,!1):!1}function Ui(r,e,t){if(r.resource){for(let n of r.resource)if(Bi(e,t?"read":"update",n))return!0}return!1}function cc(r,e,t){if(!t)return ic;if(t.resource){for(let n of t.resource)if(Bi(r,e,n))return n}}function Bi(r,e,t){let n=r.resourceType;return!(!pn(t.resourceType,n)||t.readonly&&!oc.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!yt(r,ne(t.criteria)))}function pn(r,e){return r===e||r==="*"&&!Fi.includes(e)}function dn(r){if(typeof window<"u")return window.atob(r);if(typeof Buffer<"u")return Buffer.from(r,"base64").toString("binary");throw new Error("Unable to decode base64")}function fn(r){if(typeof window<"u")return window.btoa(r);if(typeof Buffer<"u")return Buffer.from(r,"binary").toString("base64");throw new Error("Unable to encode base64")}function tr(){let r=new Uint32Array(28);return crypto.getRandomValues(r),Yr(r.buffer)}async function mn(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function me(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,r=>{let e=Math.random()*16|0;return(r==="x"?e:e&3|8).toString(16)})}function qi(r){let e={};r=ue(r);for(let i of r.entry||[]){i.resource?.meta!==void 0&&(delete i.resource.meta.author,delete i.resource.meta.compartment,delete i.resource.meta.lastUpdated,delete i.resource.meta.project,delete i.resource.meta.versionId);let o=i.resource?.id;o&&(e[o]=me(),i.fullUrl="urn:uuid:"+e[o],delete i.resource?.id)}let t=r.entry,n=JSON.stringify({resourceType:"Bundle",type:"transaction",entry:t?.map(i=>({fullUrl:i.fullUrl,request:{method:"POST",url:i.resource.resourceType},resource:i.resource}))},(i,o)=>uc(i,o,e),2);return ji(JSON.parse(n))}function uc(r,e,t){if(r==="reference"&&typeof e=="string"){let n;if(e.includes("/")?n=e.split("/")[1]:e.startsWith("urn:uuid:")?n=e.slice(9):e.startsWith("#")&&(n=e.slice(1)),n){let i=t[n];if(i)return"urn:uuid:"+i}}return e}function ji(r){let e=pc(r),{sorted:t,cycles:n}=lc(e),i={};for(let s of r.entry||[])s.fullUrl&&(i[s.fullUrl]=s);let o=t.map(s=>i[s]);for(let s of n)for(let a of s){let c=i[a],u={...c,request:{...c.request,method:"PUT"}};o.push(u)}return{...r,entry:o}}function lc(r){let e=[],t={},n=[];for(let o of Object.keys(r))t[o]=0;function i(o,s){if(t[o]===2)return!0;if(t[o]===1){let c=s.lastIndexOf(o);return c!==-1&&n.push(s.slice(c)),!0}t[o]=1,s.push(o);let a=!1;for(let c of r[o])i(c,s)||(a=!0);return t[o]=2,s.pop(),e.unshift(o),!a}for(let o in r)t[o]===0&&i(o,[]);return{sorted:e,cycles:n}}function $i(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(ae(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else $i(n,e)}}function pc(r){let e={};for(let t of r.entry||[])t.fullUrl&&(e[t.fullUrl]=[]);for(let t of r.entry||[]){let n=t.fullUrl;t.resource&&$i(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function dc(r){r=ue(r);let e={resourceType:"Bundle",type:"transaction",entry:[{resource:r}]};if(r.contained){for(let t of r.contained)e.entry.push({resource:t});r.contained=void 0}for(let t of e.entry)t.resource&&!t.resource.id&&(t.resource.id=me());return qi(e)}var gt=class{constructor(e=10){this.max=e,this.cache=new Map}clear(){this.cache.clear()}get(e){let t=this.cache.get(e);return t&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size>=this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}delete(e){this.cache.delete(e)}keys(){return this.cache.keys()}first(){return this.cache.keys().next().value}};var D={CSS:"text/css",DICOM:"application/dicom",FAVICON:"image/vnd.microsoft.icon",FHIR_JSON:"application/fhir+json",FORM_URL_ENCODED:"application/x-www-form-urlencoded",HL7_V2:"x-application/hl7-v2+er7",HTML:"text/html",JAVASCRIPT:"text/javascript",JSON:"application/json",JSON_PATCH:"application/json-patch+json",PNG:"image/png",SCIM_JSON:"application/scim+json",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript",PING:"x-application/ping"};var rr=class{constructor(){this.listeners={}}addEventListener(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)}removeEventListener(e,t){let n=this.listeners[e];if(n){for(let i=0;i<n.length;i++)if(n[i]===t){n.splice(i,1);return}}}dispatchEvent(e){let t=this.listeners[e.type];if(t)for(let n of t)n.call(this,e);return!e.defaultPrevented}removeAllListeners(){this.listeners={}}},Q=class{constructor(){this.emitter=new rr}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}removeAllListeners(){this.emitter.removeAllListeners()}};var nr={"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"},Gi=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],ir=["DiagnosticReport-update"];function hn(r){return ir.includes(r)}function yn(r){if(ir.includes(r))throw new f(h(`'context.version' is required for '${r}'.`))}var Hi={"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"},select:{resourceType:"*",isArray:!0}},"DiagnosticReport-update":{report:{resourceType:"DiagnosticReport"},patient:{resourceType:"Patient",optional:!0},study:{resourceType:"ImagingStudy",optional:!0},updates:{resourceType:"Bundle"}},syncerror:{operationoutcome:{resourceType:"OperationOutcome"}}};function Qi(r){return Gi.includes(r)}function gn(r){return!!r.endpoint}function or(r){if(!vt(r))throw new f(h("subscriptionRequest must be an object conforming to SubscriptionRequest type."));let{channelType:e,mode:t,topic:n,events:i}=r,o={"hub.channel.type":e,"hub.mode":t,"hub.topic":n,"hub.events":i.join(",")};return gn(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function vt(r){if(typeof r!="object")return!1;let{channelType:e,mode:t,topic:n,events:i}=r;if(!(e&&t&&n&&i)||typeof n!="string"||typeof i!="object"||!Array.isArray(i)||i.length<1||e!=="websocket"||t!=="subscribe"&&t!=="unsubscribe")return!1;for(let o of i)if(!nr[o])return!1;return!(gn(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function Wi(r,e,t,n){if(typeof e!="object")throw new f(h(`context[${t}] is invalid. Context must contain a single valid FHIR resource! Resource is not an object.`));if(!(e.id&&typeof e.id=="string"))throw new f(h(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new f(h(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!Qi(e.resourceType))throw new f(h(`context[${t}] 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 f(h(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${i}.`))}}function fc(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),!n.isArray)Wi(r,e.resource,t,n);else{let{resources:o}=e;if(!o)throw new f(h(`context[${t}] is invalid. context[${t}] for the '${r}' with key '${String(e.key)}' should contain an array of resources on the key 'resources'.`));for(let s of o)Wi(r,s,t,n)}}function mc(r,e){let t=new Map,n=Hi[r];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new f(h(`Key '${o}' not found for event '${r}'. Make sure to add only valid keys.`));fc(r,e[i],i,n[o],t)}for(let[i,o]of Object.entries(n)){if(!(o.optional||t.has(i)))throw new f(h(`Missing required key '${i}' on context for '${r}' event.`));if(!o.manyAllowed&&(t.get(i)||0)>1)throw new f(h(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function sr(r,e,t,n){if(!(r&&typeof r=="string"))throw new f(h("Must provide a topic."));if(!nr[e])throw new f(h(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(nr).join(", ")}`));if(typeof t!="object")throw new f(h("context must be a context object or array of context objects."));if(ir.includes(e)&&!n)throw new f(h(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return mc(e,i),{timestamp:new Date().toISOString(),id:me(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var xt=class extends Q{constructor(e){if(super(),this.subRequest=e,!e.endpoint)throw new f(h("Subscription request should contain an endpoint."));if(!vt(e))throw new f(h("Subscription request failed validation."));let t=new WebSocket(e.endpoint);t.addEventListener("open",()=>{this.dispatchEvent({type:"connect"}),t.addEventListener("message",n=>{let i=JSON.parse(n.data);if(i["hub.topic"])return;let o=i;o.event["hub.event"]!=="heartbeat"&&(this.dispatchEvent({type:"message",payload:o}),t.send(JSON.stringify({id:i?.id,timestamp:new Date().toISOString()})))}),t.addEventListener("close",()=>{this.dispatchEvent({type:"disconnect"})})}),this.websocket=t}disconnect(){this.websocket.close()}};function hc(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=dn(e),n=Array.from(t).reduce((o,s)=>{let a=("00"+s.charCodeAt(0).toString(16)).slice(-2);return`${o}%${a}`},""),i=decodeURIComponent(n);return JSON.parse(i)}function xn(r){return r.split(".").length===3}function Tt(r){let[e,t,n]=r.split(".");return hc(t)}function vn(r){try{return typeof Tt(r).login_id=="string"}catch{return!1}}function Tn(r){try{let t=Tt(r).exp;return typeof t=="number"?t*1e3:void 0}catch{return}}var St=class{constructor(e){this.medplum=e}async get(e){return this.medplum.get(`keyvalue/v1/${e}`)}async set(e,t){await this.medplum.put(`keyvalue/v1/${e}`,t,D.TEXT)}async delete(e){await this.medplum.delete(`keyvalue/v1/${e}`)}};var Ki;Ki=Symbol.toStringTag;var M=class{constructor(e){this[Ki]="ReadablePromise";this.status="pending";this.suspender=e.then(t=>(this.status="success",this.response=t,t),t=>{throw this.status="error",this.error=t,t})}isPending(){return this.status==="pending"}isOk(){return this.status==="success"}read(){switch(this.status){case"pending":throw this.suspender;case"error":throw this.error;default:return this.response}}then(e,t){return this.suspender.then(e,t)}catch(e){return this.suspender.catch(e)}finally(e){return this.suspender.finally(e)}};var Me=class{constructor(e){this.storage=e??(typeof localStorage<"u"?localStorage:new ar)}clear(){this.storage.clear()}getString(e){return this.storage.getItem(e)??void 0}setString(e,t){t?this.storage.setItem(e,t):this.storage.removeItem(e)}getObject(e){let t=this.getString(e);return t?JSON.parse(t):void 0}setObject(e,t){this.setString(e,t?zr(t):void 0)}},ar=class{constructor(){this.data=new Map}get length(){return this.data.size}clear(){this.data.clear()}getItem(e){return this.data.get(e)??null}setItem(e,t){t?this.data.set(e,t):this.data.delete(e)}removeItem(e){this.data.delete(e)}key(e){return Array.from(this.data.keys())[e]}},Sn=class extends Me{constructor(){super();this.initResolve=()=>{};this.initialized=!1,this.initPromise=new Promise(t=>{this.initResolve=t})}setInitialized(){this.initialized||(this.initResolve(),this.initialized=!0)}getInitPromise(){return this.initPromise}get isInitialized(){return this.initialized}};var cr=class extends Q{constructor(t){super();this.bufferedAmount=-1/0;this.extensions="NOT_IMPLEMENTED";this.messageBuffer=[];let n=new WebSocket(t);n.addEventListener("open",()=>{if(this.messageBuffer.length){let i=this.messageBuffer;for(let o of i)n.send(o)}this.dispatchEvent(new Event("open"))}),n.addEventListener("error",i=>{this.dispatchEvent(i)}),n.addEventListener("message",i=>{this.dispatchEvent(i)}),n.addEventListener("close",i=>{this.dispatchEvent(i)}),this.ws=n}get readyState(){return this.ws.readyState}close(){this.ws.close()}send(t){if(this.ws.readyState!==WebSocket.OPEN){this.messageBuffer.push(t);return}try{this.ws.send(t)}catch(n){this.dispatchEvent(new ErrorEvent("error",{error:n,message:n.message})),this.messageBuffer.push(t)}}},Ne=class extends Q{constructor(...e){super(),this.criteria=new Set(e)}getCriteria(){return this.criteria}_addCriteria(e){this.criteria.add(e)}_removeCriteria(e){this.criteria.delete(e)}},En=class{constructor(e,t){this.criteria=e,this.emitter=new Ne(e),this.refCount=1,this.subscriptionProps=t?{...t}:void 0}},Et=class{constructor(e,t,n){if(!(e instanceof bt))throw new f(h("First arg of constructor should be a `MedplumClient`"));let i;try{i=new URL(t).toString()}catch{throw new f(h("Not a valid URL"))}let o=n?.RobustWebSocket?new n.RobustWebSocket(i):new cr(i);this.medplum=e,this.ws=o,this.masterSubEmitter=new Ne,this.criteriaEntries=new Map,this.criteriaEntriesBySubscriptionId=new Map,this.wsClosed=!1,this.setupWebSocketListeners()}setupWebSocketListeners(){let e=this.ws;e.addEventListener("message",t=>{try{let n=JSON.parse(t.data),i=n?.entry?.[0]?.resource;if(i.type==="heartbeat"){this.masterSubEmitter?.dispatchEvent({type:"heartbeat",payload:n});return}this.masterSubEmitter?.dispatchEvent({type:"message",payload:n});let o=this.criteriaEntriesBySubscriptionId.get(xe(i.subscription));if(!o){console.warn("Received notification for criteria the SubscriptionManager is not listening for");return}o.emitter.dispatchEvent({type:"message",payload:n})}catch(n){console.error(n);let i={type:"error",payload:n};this.masterSubEmitter?.dispatchEvent(i);for(let o of this.getAllCriteriaEmitters())o.dispatchEvent(i)}}),e.addEventListener("error",()=>{let t={type:"error",payload:new f(Rr(new Error("WebSocket error")))};this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent(t)}),e.addEventListener("close",()=>{let t={type:"close"};this.wsClosed&&this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent(t)})}emitConnect(e){let t={type:"connect",payload:{subscriptionId:e.subscriptionId}};this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent(t)}emitError(e,t){let n={type:"error",payload:t};this.masterSubEmitter?.dispatchEvent(n),e.emitter.dispatchEvent(n)}maybeEmitDisconnect(e){let{subscriptionId:t}=e;if(t){let n={type:"disconnect",payload:{subscriptionId:t}};this.masterSubEmitter?.dispatchEvent(n),e.emitter.dispatchEvent(n)}else console.warn("Called disconnect for `CriteriaEntry` before `subscriptionId` was present.")}async getTokenForCriteria(e){let t=e?.subscriptionId;t||(t=(await this.medplum.createResource({...e.subscriptionProps,resourceType:"Subscription",status:"active",reason:`WebSocket subscription for ${ce(this.medplum.getProfile())}`,channel:{type:"websocket"},criteria:e.criteria})).id);let{parameter:n}=await this.medplum.get(`fhir/R4/Subscription/${t}/$get-ws-binding-token`),i=n?.find(s=>s.name==="token")?.valueString,o=n?.find(s=>s.name==="websocket-url")?.valueUrl;if(!i)throw new f(h("Failed to get token"));if(!o)throw new f(h("Failed to get URL from $get-ws-binding-token"));return[t,i]}maybeGetCriteriaEntry(e,t){let n=this.criteriaEntries.get(e);if(n){if(!t)return n.bareCriteria;for(let i of n.criteriaWithProps)if(Z(t,i.subscriptionProps))return i}}getAllCriteriaEmitters(){let e=[];for(let t of this.criteriaEntries.values()){t.bareCriteria&&e.push(t.bareCriteria.emitter);for(let n of t.criteriaWithProps)e.push(n.emitter)}return e}addCriteriaEntry(e){let{criteria:t,subscriptionProps:n}=e,i;this.criteriaEntries.has(t)?i=this.criteriaEntries.get(t):(i={criteriaWithProps:[]},this.criteriaEntries.set(t,i)),n?i.criteriaWithProps.push(e):i.bareCriteria=e}removeCriteriaEntry(e){let{criteria:t,subscriptionProps:n,subscriptionId:i,token:o}=e;if(!this.criteriaEntries.has(t))return;let s=this.criteriaEntries.get(t);n?s.criteriaWithProps=s.criteriaWithProps.filter(a=>{let c=a.subscriptionProps;return!Z(n,c)}):s.bareCriteria=void 0,!s.bareCriteria&&s.criteriaWithProps.length===0&&(this.criteriaEntries.delete(t),this.masterSubEmitter?._removeCriteria(t)),i&&this.criteriaEntriesBySubscriptionId.delete(i),o&&this.ws.send(JSON.stringify({type:"unbind-from-token",payload:{token:o}}))}addCriteria(e,t){this.masterSubEmitter&&this.masterSubEmitter._addCriteria(e);let n=this.maybeGetCriteriaEntry(e,t);if(n)return n.refCount+=1,n.emitter;let i=new En(e,t);return this.addCriteriaEntry(i),this.getTokenForCriteria(i).then(([o,s])=>{i.subscriptionId=o,i.token=s,this.criteriaEntriesBySubscriptionId.set(o,i),this.emitConnect(i),this.ws.send(JSON.stringify({type:"bind-with-token",payload:{token:s}}))}).catch(o=>{console.error(o.message),this.emitError(i,o),this.removeCriteriaEntry(i)}),i.emitter}removeCriteria(e,t){let n=this.maybeGetCriteriaEntry(e,t);if(!n){console.warn("Criteria not known to `SubscriptionManager`. Possibly called remove too many times.");return}n.refCount-=1,!(n.refCount>0)&&(this.maybeEmitDisconnect(n),this.removeCriteriaEntry(n))}closeWebSocket(){this.wsClosed||(this.wsClosed=!0,this.ws.close())}getCriteriaCount(){return this.getAllCriteriaEmitters().length}getMasterEmitter(){return this.masterSubEmitter||(this.masterSubEmitter=new Ne(...Array.from(this.criteriaEntries.keys()))),this.masterSubEmitter}};async function yc({resource:r,subscription:e,context:t,getPreviousResource:n,logger:i}){if(e.meta?.account&&r.meta?.account?.reference!==e.meta.account.reference)return i?.debug("Ignore resource in different account compartment"),!1;if(!gc(e,i))return i?.debug("Ignore subscription without recognized channel type"),!1;let o=e.criteria;if(!o)return i?.debug("Ignore rest hook missing criteria"),!1;let s=ne(o);if(r.resourceType!==s.resourceType)return i?.debug(`Ignore rest hook for different resourceType (wanted "${s.resourceType}", received "${r.resourceType}")`),!1;if(!await zi(e,r,n))return i?.debug("Ignore rest hook for criteria returning false"),!1;let c=Y(e,"https://medplum.com/fhir/StructureDefinition/subscription-supported-interaction");return c&&c.valueCode!==t.interaction?(i?.debug(`Ignore rest hook for different interaction (wanted "${c.valueCode}", received "${t.interaction}")`),!1):yt(r,s)}function gc(r,e){let t=r.channel?.type;return t==="rest-hook"?r.channel?.endpoint?!0:(e?.debug("Ignore rest-hook missing URL"),!1):t==="websocket"}async function zi(r,e,t){let n=Y(r,"https://medplum.com/fhir/StructureDefinition/fhir-path-criteria-expression");if(!n?.valueString)return!0;let i=await t(e),o={"%current":x(e),"%previous":x(i??{})};return A(n.valueString,[x(e)],o)?.[0]?.value===!0}var xc="3.2.3-3f9cbed69",vc="medplum-cli",Xi=D.FHIR_JSON+", */*; q=0.1",Tc="https://api.medplum.com/",Sc=1e3,Ec=6e4,bc=0,Rc="Binary/",Ji={resourceType:"Device",id:"system",deviceName:[{type:"model-name",name:"System"}]},eo=(o=>(o.ClientCredentials="client_credentials",o.AuthorizationCode="authorization_code",o.RefreshToken="refresh_token",o.JwtBearer="urn:ietf:params:oauth:grant-type:jwt-bearer",o.TokenExchange="urn:ietf:params:oauth:grant-type:token-exchange",o))(eo||{}),to=(o=>(o.AccessToken="urn:ietf:params:oauth:token-type:access_token",o.RefreshToken="urn:ietf:params:oauth:token-type:refresh_token",o.IdToken="urn:ietf:params:oauth:token-type:id_token",o.Saml1Token="urn:ietf:params:oauth:token-type:saml1",o.Saml2Token="urn:ietf:params:oauth:token-type:saml2",o))(to||{}),ro=(o=>(o.ClientSecretBasic="client_secret_basic",o.ClientSecretPost="client_secret_post",o.ClientSecretJwt="client_secret_jwt",o.PrivateKeyJwt="private_key_jwt",o.None="none",o))(ro||{}),no=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(no||{}),bt=class extends Q{constructor(t){super();this.initComplete=!0;if(t?.baseUrl&&!t.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");this.options=t??{},this.fetch=t?.fetch??Pc(),this.storage=t?.storage??new Me,this.createPdfImpl=t?.createPdf,this.baseUrl=Kt(t?.baseUrl??Tc),this.fhirBaseUrl=q(this.baseUrl,t?.fhirUrlPath??"fhir/R4"),this.authorizeUrl=q(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=q(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=q(this.baseUrl,t?.logoutUrl??"oauth2/logout"),this.clientId=t?.clientId??"",this.clientSecret=t?.clientSecret??"",this.onUnauthenticated=t?.onUnauthenticated,this.cacheTime=t?.cacheTime??(typeof window>"u"?bc:Ec),this.cacheTime>0?this.requestCache=new gt(t?.resourceCacheSize??Sc):this.requestCache=void 0,t?.autoBatchTime?(this.autoBatchTime=t.autoBatchTime,this.autoBatchQueue=[]):(this.autoBatchTime=0,this.autoBatchQueue=void 0),t?.accessToken&&this.setAccessToken(t.accessToken),this.storage.getInitPromise===void 0?(t?.accessToken||this.attemptResumeActiveLogin().catch(console.error),this.initPromise=Promise.resolve(),this.dispatchEvent({type:"storageInitialized"})):(this.initComplete=!1,this.initPromise=this.storage.getInitPromise(),this.initPromise.then(()=>{t?.accessToken||this.attemptResumeActiveLogin().catch(console.error),this.initComplete=!0,this.dispatchEvent({type:"storageInitialized"})}).catch(n=>{console.error(n),this.initComplete=!0,this.dispatchEvent({type:"storageInitFailed",payload:{error:n}})})),this.setupStorageListener()}get isInitialized(){return this.initComplete}getInitPromise(){return this.initPromise}async attemptResumeActiveLogin(){let t=this.getActiveLogin();t&&(this.setAccessToken(t.accessToken,t.refreshToken),await this.refreshProfile())}getBaseUrl(){return this.baseUrl}getAuthorizeUrl(){return this.authorizeUrl}getTokenUrl(){return this.tokenUrl}getLogoutUrl(){return this.logoutUrl}clear(){this.storage.clear(),typeof window<"u"&&sessionStorage.clear(),this.clearActiveLogin()}clearActiveLogin(){this.storage.setString("activeLogin",void 0),this.requestCache?.clear(),this.accessToken=void 0,this.refreshToken=void 0,this.refreshPromise=void 0,this.accessTokenExpires=void 0,this.sessionDetails=void 0,this.medplumServer=void 0,this.dispatchEvent({type:"change"})}invalidateUrl(t){t=t.toString(),this.requestCache?.delete(t)}invalidateAll(){this.requestCache?.clear()}invalidateSearches(t){let n=q(this.fhirBaseUrl,t);if(this.requestCache)for(let i of this.requestCache.keys())(i.endsWith(n)||i.includes(n+"?"))&&this.requestCache.delete(i)}get(t,n={}){t=t.toString();let i=this.getCacheEntry(t,n);if(i)return i.value;let o;t.startsWith(this.fhirBaseUrl)&&this.autoBatchQueue?o=new Promise((a,c)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:c}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new M(o);return this.setCacheEntry(t,s),s}post(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("POST",t,o)}put(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("PUT",t,o)}patch(t,n,i={}){return t=t.toString(),this.setRequestBody(i,n),this.setRequestContentType(i,D.JSON_PATCH),this.invalidateUrl(t),this.request("PATCH",t,i)}delete(t,n){return t=t.toString(),this.invalidateUrl(t),this.request("DELETE",t,n)}async startNewUser(t,n){let{codeChallengeMethod:i,codeChallenge:o}=await this.startPkce();return this.post("auth/newuser",{...t,clientId:t.clientId??this.clientId,codeChallengeMethod:i,codeChallenge:o},void 0,n)}async startNewProject(t,n){return this.post("auth/newproject",t,void 0,n)}async startNewPatient(t,n){return this.post("auth/newpatient",t,void 0,n)}async startLogin(t,n){return this.post("auth/login",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async startGoogleLogin(t,n){return this.post("auth/google",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async ensureCodeChallenge(t){return t.codeChallenge?t:{...t,...await this.startPkce()}}async signOut(){await this.post(this.logoutUrl,{}),this.clear()}async signInWithRedirect(t){let i=new URLSearchParams(window.location.search).get("code");if(!i){await this.requestAuthorization(t);return}return this.processCode(i)}signOutWithRedirect(){window.location.assign(this.logoutUrl)}async signInWithExternalAuth(t,n,i,o,s=!0){let a=o;s&&(a=await this.ensureCodeChallenge(o)),window.location.assign(this.getExternalAuthRedirectUri(t,n,i,a,s))}async exchangeExternalAccessToken(t,n){if(n=n??this.clientId,!n)throw new Error("MedplumClient is missing clientId");let i=new URLSearchParams;return i.set("grant_type","urn:ietf:params:oauth:grant-type:token-exchange"),i.set("subject_token_type","urn:ietf:params:oauth:token-type:access_token"),i.set("client_id",n),i.set("subject_token",t),this.fetchTokens(i)}getExternalAuthRedirectUri(t,n,i,o,s=!0){let a=new URL(t);if(a.searchParams.set("response_type","code"),a.searchParams.set("client_id",n),a.searchParams.set("redirect_uri",i),a.searchParams.set("scope",o.scope??"openid profile email"),a.searchParams.set("state",JSON.stringify(o)),s){let{codeChallenge:c,codeChallengeMethod:u}=o;if(!u)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!c)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");a.searchParams.set("code_challenge_method",u),a.searchParams.set("code_challenge",c)}return a.toString()}fhirUrl(...t){return new URL(q(this.fhirBaseUrl,t.join("/")))}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=rn(n)),i}search(t,n,i){let o=this.fhirSearchUrl(t,n),s="search-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let c=new M((async()=>{let u=await this.get(o,i);if(u.entry)for(let p of u.entry)this.cacheResource(p.resource);return u})());return this.setCacheEntry(s,c),c}searchOne(t,n,i){let o=this.fhirSearchUrl(t,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s="searchOne-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let c=new M(this.search(t,o.searchParams,i).then(u=>u.entry?.[0]?.resource));return this.setCacheEntry(s,c),c}searchResources(t,n,i){let s="searchResources-"+this.fhirSearchUrl(t,n).toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let c=new M(this.search(t,n,i).then(bn));return this.setCacheEntry(s,c),c}async*searchResourcePages(t,n,i){let o=this.fhirSearchUrl(t,n);for(;o;){let s=new URL(o).searchParams,a=await this.search(t,s,i),c=a.link?.find(u=>u.relation==="next");if(!a.entry?.length&&!c)break;yield bn(a),o=c?.url?new URL(c.url):void 0}}searchValueSet(t,n,i){return this.valueSetExpand({url:t,filter:n},i)}valueSetExpand(t,n){let i=this.fhirUrl("ValueSet","$expand");return i.search=new URLSearchParams(t).toString(),this.get(i.toString(),n)}getCached(t,n){let i=this.requestCache?.get(this.fhirUrl(t,n).toString())?.value;return i?.isOk()?i.read():void 0}getCachedReference(t){let n=t.reference;if(!n)return;if(n==="system")return Ji;let[i,o]=n.split("/");if(!(!i||!o))return this.getCached(i,o)}readResource(t,n,i){return this.get(this.fhirUrl(t,n),i)}readReference(t,n){let i=t.reference;if(!i)return new M(Promise.reject(new Error("Missing reference")));if(i==="system")return new M(Promise.resolve(Ji));let[o,s]=i.split("/");return!o||!s?new M(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(Mr(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new M((async()=>{let s=`{
|
|
3
|
+
`?(this.pos.line++,this.pos.column=0):this.pos.column++}buildToken(e,t){let n=this.markStack.pop();if(!n)throw new Error("No mark for token");return{id:e,value:t,...n}}};function xa(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&ga.includes(r.value)))}var dt=["true","false"],ft=["!=","!~","<=",">=","{}","->"];function Ai(r){return new re(r,dt,ft).tokenize()}var y={FunctionCall:0,Dot:1,Indexer:2,UnaryAdd:3,UnarySubtract:3,Multiply:4,Divide:4,IntegerDivide:4,Modulo:4,Add:5,Subtract:5,Ampersand:5,Is:6,As:6,Union:7,GreaterThan:8,GreaterThanOrEquals:8,LessThan:8,LessThanOrEquals:8,Equals:9,Equivalent:9,NotEquals:9,NotEquivalent:9,In:10,Contains:10,And:11,Xor:12,Or:12,Implies:13,Arrow:100,Semicolon:200},va={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},Ta={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new fe(e,t)},precedence:y.Indexer},Sa={parse(r,e){if(!(e instanceof U))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new H(e.name,t)},precedence:y.FunctionCall};function Ea(r){let e=r.split(" "),t=parseFloat(e[0]),n=e[1];return n?.startsWith("'")&&n.endsWith("'")?n=n.substring(1,n.length-1):n="{"+n+"}",{value:t,unit:n}}function De(){return new Be().registerPrefix("String",{parse:(r,e)=>new _({type:l.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new _({type:l.dateTime,value:Ve(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new _({type:l.Quantity,value:Ea(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new _({type:e.value.includes(".")?l.decimal:l.integer,value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new _({type:l.boolean,value:!0})}).registerPrefix("false",{parse:()=>new _({type:l.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new U(e.value)}).registerPrefix("{}",{parse:()=>new Xe}).registerPrefix("(",va).registerInfix("[",Ta).registerInfix("(",Sa).prefix("+",y.UnaryAdd,(r,e)=>new et("+",e,t=>t)).prefix("-",y.UnarySubtract,(r,e)=>new V("-",e,e,(t,n)=>-n)).infixLeft(".",y.Dot,(r,e,t)=>new te(r,t)).infixLeft("/",y.Divide,(r,e,t)=>new V("/",r,t,(n,i)=>n/i)).infixLeft("*",y.Multiply,(r,e,t)=>new V("*",r,t,(n,i)=>n*i)).infixLeft("+",y.Add,(r,e,t)=>new V("+",r,t,(n,i)=>n+i)).infixLeft("-",y.Subtract,(r,e,t)=>new V("-",r,t,(n,i)=>n-i)).infixLeft("|",y.Union,(r,e,t)=>new Ee(r,t)).infixLeft("=",y.Equals,(r,e,t)=>new it(r,t)).infixLeft("!=",y.NotEquals,(r,e,t)=>new ot(r,t)).infixLeft("~",y.Equivalent,(r,e,t)=>new st(r,t)).infixLeft("!~",y.NotEquivalent,(r,e,t)=>new at(r,t)).infixLeft("<",y.LessThan,(r,e,t)=>new V("<",r,t,(n,i)=>n<i)).infixLeft("<=",y.LessThanOrEquals,(r,e,t)=>new V("<=",r,t,(n,i)=>n<=i)).infixLeft(">",y.GreaterThan,(r,e,t)=>new V(">",r,t,(n,i)=>n>i)).infixLeft(">=",y.GreaterThanOrEquals,(r,e,t)=>new V(">=",r,t,(n,i)=>n>=i)).infixLeft("&",y.Ampersand,(r,e,t)=>new tt(r,t)).infixLeft("and",y.And,(r,e,t)=>new ct(r,t)).infixLeft("as",y.As,(r,e,t)=>new pe(r,t)).infixLeft("contains",y.Contains,(r,e,t)=>new rt(r,t)).infixLeft("div",y.Divide,(r,e,t)=>new V("div",r,t,(n,i)=>n/i|0)).infixLeft("in",y.In,(r,e,t)=>new nt(r,t)).infixLeft("is",y.Is,(r,e,t)=>new de(r,t)).infixLeft("mod",y.Modulo,(r,e,t)=>new V("mod",r,t,(n,i)=>n%i)).infixLeft("or",y.Or,(r,e,t)=>new ut(r,t)).infixLeft("xor",y.Xor,(r,e,t)=>new lt(r,t)).infixLeft("implies",y.Implies,(r,e,t)=>new pt(r,t))}var ba=De();function Zt(r){return new Ze(r,ba.construct(Ai(r)).consumeAndParse())}function be(r,e){let t=Array.isArray(e)?e:[e];for(let n=0;n<t.length;n++){let i=t[n];typeof i=="object"&&"type"in i&&"value"in i||(t[n]=x(t[n]))}return A(r,t).map(n=>n.value)}function A(r,e,t={}){return Zt(r).eval({variables:t},e).map(i=>({type:i.type,value:i.value?.valueOf()}))}var sn=(p=>(p.BOOLEAN="BOOLEAN",p.NUMBER="NUMBER",p.QUANTITY="QUANTITY",p.TEXT="TEXT",p.REFERENCE="REFERENCE",p.CANONICAL="CANONICAL",p.DATE="DATE",p.DATETIME="DATETIME",p.PERIOD="PERIOD",p.UUID="UUID",p))(sn||{});function Xt(r,e){let t=F.types[r]?.searchParamsDetails?.[e.code];return t||(t=Pa(r,e)),t}function Ra(r,e,t){let n=F.types[r];n||(n={},F.types[r]=n),n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function Pa(r,e){let t=e.code,n=Aa(t),i=an(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let c=mt(a),u=en(()=>c.join("."));c.length===1&&c[0]instanceof P?o.propertyTypes.add("boolean"):u().endsWith("extension.value.code")||u().endsWith("extension.value.coding.code")?(o.array=!0,o.propertyTypes.add("code")):Oi(o,mt(a),r,1),u().endsWith("extension.valueDateTime")&&(o.array=!1)}let s={columnName:n,type:Oa(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return Ra(r,t,s),s}function Oi(r,e,t,n){let i=e[n];if(i instanceof pe){r.propertyTypes.add(i.right.toString());return}if(i instanceof H){Ca(r,i);return}let o=i.toString(),s=Qe(t,o);if(!s)throw new Error(`Element definition not found for ${t} ${o}`);let a=!1,c=n+1;if(c<e.length&&e[c]instanceof fe&&(a=!0,c++),s.isArray&&!a&&(r.array=!0),c>=e.length){r.elementDefinitions.push(s);for(let u of s.type)r.propertyTypes.add(u.code);return}for(let u of s.type){let p=u.code;wa(p)&&(p=s.type[0].code),Oi(r,e,p,c)}}function Ca(r,e){if(e.name==="as"){r.propertyTypes.add(e.args[0].toString());return}if(e.name==="resolve"){r.propertyTypes.add("string");return}if(e.name==="where"&&e.args[0]instanceof de){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function wa(r){return r==="Element"||r==="BackboneElement"}function Aa(r){return r.split("-").reduce((e,t,n)=>e+(n?w(t):t),"")}function Oa(r,e){switch(r.type){case"date":return e.size===1&&e.has(l.date)?"DATE":"DATETIME";case"number":return"NUMBER";case"quantity":return"QUANTITY";case"reference":return e.has(l.canonical)?"CANONICAL":"REFERENCE";case"token":return e.size===1&&e.has(l.boolean)?"BOOLEAN":"TEXT";default:return"TEXT"}}function an(r,e){let t=[],n=Zt(e);return on(r,n.child,t),t}function Ia(r,e){let t=an(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function on(r,e,t){e instanceof Ee?(on(r,e.left,t),on(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function mt(r){if(r instanceof pe||r instanceof fe)return[mt(r.left),r].flat();if(r instanceof P)return[r];if(r instanceof te)return[mt(r.left),mt(r.right)].flat();if(r instanceof H){if(r.name==="where"&&!(r.args[0]instanceof de))return[];if(r.name==="last")return[]}return[r]}var ka=20,Va=1e3,cn=(T=>(T.EQUALS="eq",T.NOT_EQUALS="ne",T.GREATER_THAN="gt",T.LESS_THAN="lt",T.GREATER_THAN_OR_EQUALS="ge",T.LESS_THAN_OR_EQUALS="le",T.STARTS_AFTER="sa",T.ENDS_BEFORE="eb",T.APPROXIMATELY="ap",T.CONTAINS="contains",T.EXACT="exact",T.TEXT="text",T.NOT="not",T.ABOVE="above",T.BELOW="below",T.IN="in",T.NOT_IN="not-in",T.OF_TYPE="of-type",T.MISSING="missing",T.PRESENT="present",T.IDENTIFIER="identifier",T.ITERATE="iterate",T))(cn||{}),Vi={contains:"contains",exact:"exact",above:"above",below:"below",text:"text",not:"not",in:"in","not-in":"not-in","of-type":"of-type",missing:"missing",identifier:"identifier",iterate:"iterate"},un={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function ne(r,e){if(!r)throw new Error("Invalid search URL");let t="",n;if(typeof r=="string")if(r.includes("?")){let[s,a]=r.split("?");t=s,n=new URLSearchParams(a)}else t=r;else typeof r=="object"&&(t=r.pathname,n=r.searchParams);let i;t.includes("/")?i=t.split("/").filter(Boolean).pop():i=t;let o=[];if(n&&o.push(...n.entries()),e)for(let[s,a]of Object.entries(e))if(Array.isArray(a))for(let c of a)o.push([s,c]);else o.push([s,a??""]);return Fa(i,o)}function Da(r){return ne(r)}function Ma(r){return ne(r)}function Na(r){return ne(r)}function Fa(r,e){let t={resourceType:r};for(let[n,i]of e)_a(t,n,i);return t}function _a(r,e,t){let n,i,o=e.indexOf(":");if(o>=0?(n=e.substring(0,o),i=e.substring(o+1)):(n=e,i=""),n!=="_"){if(n==="_has"||e.includes(".")){r.filters=Te(r.filters,{code:e,operator:"eq",value:t});return}switch(n){case"_sort":La(r,t);break;case"_count":r.count=parseInt(t,10);break;case"_offset":r.offset=parseInt(t,10);break;case"_total":r.total=t;break;case"_summary":t==="count"?(r.total="accurate",r.count=0):(t==="true"||t==="data"||t==="text")&&(r.summary=t);break;case"_include":{let s=Ii(t);i==="iterate"&&(s.modifier="iterate"),r.include=Te(r.include,s);break}case"_revinclude":{let s=Ii(t);i==="iterate"&&(s.modifier="iterate"),r.revInclude=Te(r.revInclude,s);break}case"_fields":case"_elements":r.fields=t.split(",");break;case"_type":r.types=t.split(",");break;case"_format":r.format=t;break;case"_pretty":r.pretty=t==="true";break;default:{let s=F.types[r.resourceType]?.searchParams?.[n];s?r.filters=Te(r.filters,Di(s,i,t)):r.filters=Te(r.filters,qa(n,i,t))}}}}function La(r,e){for(let t of e.split(",")){let n,i=!1;t.startsWith("-")?(n=t.substring(1),i=!0):n=t,r.sortRules||(r.sortRules=[]),r.sortRules.push({code:n,descending:i})}}function Di(r,e,t){if(e==="missing")return{code:r.code,operator:"missing",value:t};switch(r.type){case"number":case"date":case"quantity":return Ua(r,t);case"reference":case"string":case"token":case"uri":return Ba(r,e,t);default:throw new Error("Unrecognized search parameter type: "+r.type)}}function Ua(r,e){let{operator:t,value:n}=ja(e);return{code:r.code,operator:t,value:n}}function Ba(r,e,t){return{code:r.code,operator:$a(e),value:t}}function qa(r,e,t){let n="eq";if(e)n=e;else if(t.length>=2){let i=t.substring(0,2);i in un&&(t.length===2||t.at(2)?.match(/\d/))&&(n=i,t=t.substring(i.length))}return{code:r,operator:n,value:t}}function ja(r){let e=r.substring(0,2),t=un[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function $a(r){return Vi[r]??"eq"}function Ii(r){let e=r.split(":");if(e.includes("*"))throw new f(R("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new f(R(`Invalid include value '${r}': must be of the form ResourceType:search-parameter`));if(e.length===2)return{resourceType:e[0],searchParam:e[1]};if(e.length===3)return{resourceType:e[0],searchParam:e[1],targetType:e[2]};throw new f(R(`Invalid include value '${r}'`))}var Wa=/{{([^{}]+)}}/g;function Ga(r,e){return r=r.replaceAll(Wa,(t,n)=>{let i=A(n,[],e);return i.length!==1?"":nn(i[0])}),ne(r)}function Ha(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(Qa(t))),r.sortRules&&r.sortRules.length>0&&e.push(Ka(r.sortRules)),r.offset!==void 0&&e.push("_offset="+r.offset),r.count!==void 0&&e.push("_count="+r.count),r.total!==void 0&&e.push("_total="+r.total),r.include&&r.include.forEach(t=>e.push(ki("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(ki("_revinclude",t))),e.length===0?"":(Je(e),"?"+e.join("&"))}function Qa(r){let e=r.operator in Vi?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in un?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function Ka(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function ki(r,e){return r+(e.modifier?":"+e.modifier:"")+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}function ht(r){let e=[],t="",n=!1;for(let i of r)n?(t+=i,n=!1):i==="\\"?n=!0:i===","?(e.push(t),t=""):t+=i;return e.push(t),e}function yt(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!za(r,e,t))return!1}return!0}function za(r,e,t){let n=F.types[e.resourceType]?.searchParams?.[t.code];if(!n)return!1;if(t.operator==="missing"||t.operator==="present")return Ja(r,t,n);switch(n.type){case"reference":return Ya(r,t,n);case"string":case"uri":return Mi(r,t,n);case"token":return Za(r,t,n);case"date":return rc(r,t,n);default:return!1}}function Ja(r,e,t){let i=be(t.expression,r).length>0;return(e.operator==="missing"&&e.value==="false"||e.operator==="present"&&e.value==="true")===i}function Ya(r,e,t){let n=be(t.expression,r),i=er(e.operator);if(e.value===""&&n.length===0)return e.operator==="eq";let o=n.map(s=>typeof s=="string"?s:s.reference);for(let s of ht(e.value)){let a=o.includes(s);if(!a&&e.code==="_compartment"&&(a=o.some(c=>c?.endsWith("/"+s))),a)return!i}return i}function Za(r,e,t){return Xt(r.resourceType,t).type==="BOOLEAN"?Xa(r,e,t):Mi(r,e,t,!0)}function Xa(r,e,t){let n=be(t.expression,r),i=e.value==="true",o=n.includes(i);return er(e.operator)?!o:o}function Mi(r,e,t,n){let o=Xt(r.resourceType,t).elementDefinitions?.[0]?.type?.[0]?.code,s=be(t.expression,r),a=ht(e.value),c=er(e.operator);for(let u of s)for(let p of a){let m;if(o===l.Identifier?m=ec(u,e.operator,p):o===l.CodeableConcept?m=tc(u,e.operator,p):m=ln(u,e.operator,p,n),m)return!c}return c}function ln(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return ln(r,e,o,!1)&&(!s||ln(r,e,s,!1))}let i="";return r&&(typeof r=="string"?i=r:typeof r=="object"&&(i=JSON.stringify(r))),i.toLowerCase().includes(t.toLowerCase())}function ec(r,e,t){if(t.includes("|")){let[n,i]=t.split("|");return r.system?.toLowerCase()===n.toLowerCase()&&r.value?.toLowerCase()===i.toLowerCase()}return r.value?.toLowerCase()===t.toLowerCase()}function tc(r,e,t){if(t.includes("|")){let[n,i]=t.split("|");return r.coding?.some(o=>o.system?.toLowerCase()===n.toLowerCase()&&o.code?.toLowerCase()===i.toLowerCase())??!1}return r.text?.toLowerCase()===t.toLowerCase()||(r.coding?.some(n=>n.code?.toLowerCase()===t.toLowerCase())??!1)}function rc(r,e,t){let n=be(t.expression,r),i=ht(e.value),o=er(e.operator);for(let s of n)for(let a of i)if(nc(s,e.operator,a))return!o;return o}function nc(r,e,t){switch(e){case"sa":case"gt":return r>t;case"ge":return r>=t;case"eb":case"lt":return r<t;case"le":return r<=t;case"eq":case"ne":return r===t;default:return!1}}function er(r){return r==="ne"||r==="not"}var ic={resourceType:"*"},Ni=["DomainConfiguration","JsonWebKey","Login"],Fi=["PasswordChangeRequest","UserSecurityRequest","Project","ProjectMembership","User"],_i=(b=>(b.READ="read",b.VREAD="vread",b.UPDATE="update",b.PATCH="patch",b.DELETE="delete",b.HISTORY="history",b.HISTORY_INSTANCE="history-instance",b.HISTORY_TYPE="history-type",b.HISTORY_SYSTEM="history-system",b.CREATE="create",b.SEARCH="search",b.SEARCH_TYPE="search-type",b.SEARCH_SYSTEM="search-system",b.SEARCH_COMPARTMENT="search-compartment",b.CAPABILITIES="capabilities",b.TRANSACTION="transaction",b.BATCH="batch",b.OPERATION="operation",b))(_i||{}),oc=["read","vread","history","history-instance"];function sc(r,e){if(r.resource){for(let t of r.resource)if(pn(t.resourceType,e))return!0}return!1}function Li(r,e){if(Ni.includes(e))return!1;if(r.resource){for(let t of r.resource)if(pn(t.resourceType,e)&&!t.readonly)return!0}return!1}function ac(r,e){let t=e.resourceType;return Li(r,t)?Ui(r,e,!1):!1}function Ui(r,e,t){if(r.resource){for(let n of r.resource)if(Bi(e,t?"read":"update",n))return!0}return!1}function cc(r,e,t){if(!t)return ic;if(t.resource){for(let n of t.resource)if(Bi(r,e,n))return n}}function Bi(r,e,t){let n=r.resourceType;return!(!pn(t.resourceType,n)||t.readonly&&!oc.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!yt(r,ne(t.criteria)))}function pn(r,e){return r===e||r==="*"&&!Fi.includes(e)}function dn(r){if(typeof window<"u")return window.atob(r);if(typeof Buffer<"u")return Buffer.from(r,"base64").toString("binary");throw new Error("Unable to decode base64")}function fn(r){if(typeof window<"u")return window.btoa(r);if(typeof Buffer<"u")return Buffer.from(r,"binary").toString("base64");throw new Error("Unable to encode base64")}function tr(){let r=new Uint32Array(28);return crypto.getRandomValues(r),Yr(r.buffer)}async function mn(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function me(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,r=>{let e=Math.random()*16|0;return(r==="x"?e:e&3|8).toString(16)})}function qi(r){let e={};r=ue(r);for(let i of r.entry||[]){i.resource?.meta!==void 0&&(delete i.resource.meta.author,delete i.resource.meta.compartment,delete i.resource.meta.lastUpdated,delete i.resource.meta.project,delete i.resource.meta.versionId);let o=i.resource?.id;o&&(e[o]=me(),i.fullUrl="urn:uuid:"+e[o],delete i.resource?.id)}let t=r.entry,n=JSON.stringify({resourceType:"Bundle",type:"transaction",entry:t?.map(i=>({fullUrl:i.fullUrl,request:{method:"POST",url:i.resource.resourceType},resource:i.resource}))},(i,o)=>uc(i,o,e),2);return ji(JSON.parse(n))}function uc(r,e,t){if(r==="reference"&&typeof e=="string"){let n;if(e.includes("/")?n=e.split("/")[1]:e.startsWith("urn:uuid:")?n=e.slice(9):e.startsWith("#")&&(n=e.slice(1)),n){let i=t[n];if(i)return"urn:uuid:"+i}}return e}function ji(r){let e=pc(r),{sorted:t,cycles:n}=lc(e),i={};for(let s of r.entry||[])s.fullUrl&&(i[s.fullUrl]=s);let o=t.map(s=>i[s]);for(let s of n)for(let a of s){let c=i[a],u={...c,request:{...c.request,method:"PUT"}};o.push(u)}return{...r,entry:o}}function lc(r){let e=[],t={},n=[];for(let o of Object.keys(r))t[o]=0;function i(o,s){if(t[o]===2)return!0;if(t[o]===1){let c=s.lastIndexOf(o);return c!==-1&&n.push(s.slice(c)),!0}t[o]=1,s.push(o);let a=!1;for(let c of r[o])i(c,s)||(a=!0);return t[o]=2,s.pop(),e.unshift(o),!a}for(let o in r)t[o]===0&&i(o,[]);return{sorted:e,cycles:n}}function $i(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(ae(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else $i(n,e)}}function pc(r){let e={};for(let t of r.entry||[])t.fullUrl&&(e[t.fullUrl]=[]);for(let t of r.entry||[]){let n=t.fullUrl;t.resource&&$i(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function dc(r){r=ue(r);let e={resourceType:"Bundle",type:"transaction",entry:[{resource:r}]};if(r.contained){for(let t of r.contained)e.entry.push({resource:t});r.contained=void 0}for(let t of e.entry)t.resource&&!t.resource.id&&(t.resource.id=me());return qi(e)}var gt=class{constructor(e=10){this.max=e,this.cache=new Map}clear(){this.cache.clear()}get(e){let t=this.cache.get(e);return t&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){this.cache.has(e)?this.cache.delete(e):this.cache.size>=this.max&&this.cache.delete(this.first()),this.cache.set(e,t)}delete(e){this.cache.delete(e)}keys(){return this.cache.keys()}first(){return this.cache.keys().next().value}};var D={CSS:"text/css",DICOM:"application/dicom",FAVICON:"image/vnd.microsoft.icon",FHIR_JSON:"application/fhir+json",FORM_URL_ENCODED:"application/x-www-form-urlencoded",HL7_V2:"x-application/hl7-v2+er7",HTML:"text/html",JAVASCRIPT:"text/javascript",JSON:"application/json",JSON_PATCH:"application/json-patch+json",PNG:"image/png",SCIM_JSON:"application/scim+json",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript",PING:"x-application/ping"};var rr=class{constructor(){this.listeners={}}addEventListener(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)}removeEventListener(e,t){let n=this.listeners[e];if(n){for(let i=0;i<n.length;i++)if(n[i]===t){n.splice(i,1);return}}}dispatchEvent(e){let t=this.listeners[e.type];if(t)for(let n of t)n.call(this,e);return!e.defaultPrevented}removeAllListeners(){this.listeners={}}},Q=class{constructor(){this.emitter=new rr}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}removeAllListeners(){this.emitter.removeAllListeners()}};var nr={"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"},Gi=["Patient","Encounter","ImagingStudy","DiagnosticReport","OperationOutcome","Bundle"],ir=["DiagnosticReport-update"];function hn(r){return ir.includes(r)}function yn(r){if(ir.includes(r))throw new f(h(`'context.version' is required for '${r}'.`))}var Hi={"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"},select:{resourceType:"*",isArray:!0}},"DiagnosticReport-update":{report:{resourceType:"DiagnosticReport"},patient:{resourceType:"Patient",optional:!0},study:{resourceType:"ImagingStudy",optional:!0},updates:{resourceType:"Bundle"}},syncerror:{operationoutcome:{resourceType:"OperationOutcome"}}};function Qi(r){return Gi.includes(r)}function gn(r){return!!r.endpoint}function or(r){if(!vt(r))throw new f(h("subscriptionRequest must be an object conforming to SubscriptionRequest type."));let{channelType:e,mode:t,topic:n,events:i}=r,o={"hub.channel.type":e,"hub.mode":t,"hub.topic":n,"hub.events":i.join(",")};return gn(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function vt(r){if(typeof r!="object")return!1;let{channelType:e,mode:t,topic:n,events:i}=r;if(!(e&&t&&n&&i)||typeof n!="string"||typeof i!="object"||!Array.isArray(i)||i.length<1||e!=="websocket"||t!=="subscribe"&&t!=="unsubscribe")return!1;for(let o of i)if(!nr[o])return!1;return!(gn(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function Wi(r,e,t,n){if(typeof e!="object")throw new f(h(`context[${t}] is invalid. Context must contain a single valid FHIR resource! Resource is not an object.`));if(!(e.id&&typeof e.id=="string"))throw new f(h(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resourceType)throw new f(h(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=n.resourceType;if(i!=="*"){if(!Qi(e.resourceType))throw new f(h(`context[${t}] 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 f(h(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${i}.`))}}function fc(r,e,t,n,i){if(i.set(e.key,(i.get(e.key)??0)+1),!n.isArray)Wi(r,e.resource,t,n);else{let{resources:o}=e;if(!o)throw new f(h(`context[${t}] is invalid. context[${t}] for the '${r}' with key '${String(e.key)}' should contain an array of resources on the key 'resources'.`));for(let s of o)Wi(r,s,t,n)}}function mc(r,e){let t=new Map,n=Hi[r];for(let i=0;i<e.length;i++){let o=e[i].key;if(!n[o])throw new f(h(`Key '${o}' not found for event '${r}'. Make sure to add only valid keys.`));fc(r,e[i],i,n[o],t)}for(let[i,o]of Object.entries(n)){if(!(o.optional||t.has(i)))throw new f(h(`Missing required key '${i}' on context for '${r}' event.`));if(!o.manyAllowed&&(t.get(i)||0)>1)throw new f(h(`${t.get(i)} context entries with key '${i}' found for the '${r}' event when schema only allows for 1.`))}}function sr(r,e,t,n){if(!(r&&typeof r=="string"))throw new f(h("Must provide a topic."));if(!nr[e])throw new f(h(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(nr).join(", ")}`));if(typeof t!="object")throw new f(h("context must be a context object or array of context objects."));if(ir.includes(e)&&!n)throw new f(h(`The '${e}' event must contain a 'context.versionId'.`));let i=Array.isArray(t)?t:[t];return mc(e,i),{timestamp:new Date().toISOString(),id:me(),event:{"hub.topic":r,"hub.event":e,context:i,...n?{"context.versionId":n}:{}}}}var xt=class extends Q{constructor(e){if(super(),this.subRequest=e,!e.endpoint)throw new f(h("Subscription request should contain an endpoint."));if(!vt(e))throw new f(h("Subscription request failed validation."));let t=new WebSocket(e.endpoint);t.addEventListener("open",()=>{this.dispatchEvent({type:"connect"}),t.addEventListener("message",n=>{let i=JSON.parse(n.data);if(i["hub.topic"])return;let o=i;o.event["hub.event"]!=="heartbeat"&&(this.dispatchEvent({type:"message",payload:o}),t.send(JSON.stringify({id:i?.id,timestamp:new Date().toISOString()})))}),t.addEventListener("close",()=>{this.dispatchEvent({type:"disconnect"})})}),this.websocket=t}disconnect(){this.websocket.close()}};function hc(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=dn(e),n=Array.from(t).reduce((o,s)=>{let a=("00"+s.charCodeAt(0).toString(16)).slice(-2);return`${o}%${a}`},""),i=decodeURIComponent(n);return JSON.parse(i)}function xn(r){return r.split(".").length===3}function Tt(r){let[e,t,n]=r.split(".");return hc(t)}function vn(r){try{return typeof Tt(r).login_id=="string"}catch{return!1}}function Tn(r){try{let t=Tt(r).exp;return typeof t=="number"?t*1e3:void 0}catch{return}}var St=class{constructor(e){this.medplum=e}async get(e){return this.medplum.get(`keyvalue/v1/${e}`)}async set(e,t){await this.medplum.put(`keyvalue/v1/${e}`,t,D.TEXT)}async delete(e){await this.medplum.delete(`keyvalue/v1/${e}`)}};var Ki;Ki=Symbol.toStringTag;var M=class{constructor(e){this[Ki]="ReadablePromise";this.status="pending";this.suspender=e.then(t=>(this.status="success",this.response=t,t),t=>{throw this.status="error",this.error=t,t})}isPending(){return this.status==="pending"}isOk(){return this.status==="success"}read(){switch(this.status){case"pending":throw this.suspender;case"error":throw this.error;default:return this.response}}then(e,t){return this.suspender.then(e,t)}catch(e){return this.suspender.catch(e)}finally(e){return this.suspender.finally(e)}};var Me=class{constructor(e){this.storage=e??(typeof localStorage<"u"?localStorage:new ar)}clear(){this.storage.clear()}getString(e){return this.storage.getItem(e)??void 0}setString(e,t){t?this.storage.setItem(e,t):this.storage.removeItem(e)}getObject(e){let t=this.getString(e);return t?JSON.parse(t):void 0}setObject(e,t){this.setString(e,t?zr(t):void 0)}},ar=class{constructor(){this.data=new Map}get length(){return this.data.size}clear(){this.data.clear()}getItem(e){return this.data.get(e)??null}setItem(e,t){t?this.data.set(e,t):this.data.delete(e)}removeItem(e){this.data.delete(e)}key(e){return Array.from(this.data.keys())[e]}},Sn=class extends Me{constructor(){super();this.initResolve=()=>{};this.initialized=!1,this.initPromise=new Promise(t=>{this.initResolve=t})}setInitialized(){this.initialized||(this.initResolve(),this.initialized=!0)}getInitPromise(){return this.initPromise}get isInitialized(){return this.initialized}};var cr=class extends Q{constructor(t){super();this.bufferedAmount=-1/0;this.extensions="NOT_IMPLEMENTED";this.messageBuffer=[];let n=new WebSocket(t);n.addEventListener("open",()=>{if(this.messageBuffer.length){let i=this.messageBuffer;for(let o of i)n.send(o)}this.dispatchEvent(new Event("open"))}),n.addEventListener("error",i=>{this.dispatchEvent(i)}),n.addEventListener("message",i=>{this.dispatchEvent(i)}),n.addEventListener("close",i=>{this.dispatchEvent(i)}),this.ws=n}get readyState(){return this.ws.readyState}close(){this.ws.close()}send(t){if(this.ws.readyState!==WebSocket.OPEN){this.messageBuffer.push(t);return}try{this.ws.send(t)}catch(n){this.dispatchEvent(new ErrorEvent("error",{error:n,message:n.message})),this.messageBuffer.push(t)}}},Ne=class extends Q{constructor(...e){super(),this.criteria=new Set(e)}getCriteria(){return this.criteria}_addCriteria(e){this.criteria.add(e)}_removeCriteria(e){this.criteria.delete(e)}},En=class{constructor(e,t){this.criteria=e,this.emitter=new Ne(e),this.refCount=1,this.subscriptionProps=t?{...t}:void 0}},Et=class{constructor(e,t,n){if(!(e instanceof bt))throw new f(h("First arg of constructor should be a `MedplumClient`"));let i;try{i=new URL(t).toString()}catch{throw new f(h("Not a valid URL"))}let o=n?.RobustWebSocket?new n.RobustWebSocket(i):new cr(i);this.medplum=e,this.ws=o,this.masterSubEmitter=new Ne,this.criteriaEntries=new Map,this.criteriaEntriesBySubscriptionId=new Map,this.wsClosed=!1,this.setupWebSocketListeners()}setupWebSocketListeners(){let e=this.ws;e.addEventListener("message",t=>{try{let n=JSON.parse(t.data),i=n?.entry?.[0]?.resource;if(i.type==="heartbeat"){this.masterSubEmitter?.dispatchEvent({type:"heartbeat",payload:n});return}this.masterSubEmitter?.dispatchEvent({type:"message",payload:n});let o=this.criteriaEntriesBySubscriptionId.get(xe(i.subscription));if(!o){console.warn("Received notification for criteria the SubscriptionManager is not listening for");return}o.emitter.dispatchEvent({type:"message",payload:n})}catch(n){console.error(n);let i={type:"error",payload:n};this.masterSubEmitter?.dispatchEvent(i);for(let o of this.getAllCriteriaEmitters())o.dispatchEvent(i)}}),e.addEventListener("error",()=>{let t={type:"error",payload:new f(Rr(new Error("WebSocket error")))};this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent(t)}),e.addEventListener("close",()=>{let t={type:"close"};this.wsClosed&&this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent(t)})}emitConnect(e){let t={type:"connect",payload:{subscriptionId:e.subscriptionId}};this.masterSubEmitter?.dispatchEvent(t);for(let n of this.getAllCriteriaEmitters())n.dispatchEvent(t)}emitError(e,t){let n={type:"error",payload:t};this.masterSubEmitter?.dispatchEvent(n),e.emitter.dispatchEvent(n)}maybeEmitDisconnect(e){let{subscriptionId:t}=e;if(t){let n={type:"disconnect",payload:{subscriptionId:t}};this.masterSubEmitter?.dispatchEvent(n),e.emitter.dispatchEvent(n)}else console.warn("Called disconnect for `CriteriaEntry` before `subscriptionId` was present.")}async getTokenForCriteria(e){let t=e?.subscriptionId;t||(t=(await this.medplum.createResource({...e.subscriptionProps,resourceType:"Subscription",status:"active",reason:`WebSocket subscription for ${ce(this.medplum.getProfile())}`,channel:{type:"websocket"},criteria:e.criteria})).id);let{parameter:n}=await this.medplum.get(`fhir/R4/Subscription/${t}/$get-ws-binding-token`),i=n?.find(s=>s.name==="token")?.valueString,o=n?.find(s=>s.name==="websocket-url")?.valueUrl;if(!i)throw new f(h("Failed to get token"));if(!o)throw new f(h("Failed to get URL from $get-ws-binding-token"));return[t,i]}maybeGetCriteriaEntry(e,t){let n=this.criteriaEntries.get(e);if(n){if(!t)return n.bareCriteria;for(let i of n.criteriaWithProps)if(Z(t,i.subscriptionProps))return i}}getAllCriteriaEmitters(){let e=[];for(let t of this.criteriaEntries.values()){t.bareCriteria&&e.push(t.bareCriteria.emitter);for(let n of t.criteriaWithProps)e.push(n.emitter)}return e}addCriteriaEntry(e){let{criteria:t,subscriptionProps:n}=e,i;this.criteriaEntries.has(t)?i=this.criteriaEntries.get(t):(i={criteriaWithProps:[]},this.criteriaEntries.set(t,i)),n?i.criteriaWithProps.push(e):i.bareCriteria=e}removeCriteriaEntry(e){let{criteria:t,subscriptionProps:n,subscriptionId:i,token:o}=e;if(!this.criteriaEntries.has(t))return;let s=this.criteriaEntries.get(t);n?s.criteriaWithProps=s.criteriaWithProps.filter(a=>{let c=a.subscriptionProps;return!Z(n,c)}):s.bareCriteria=void 0,!s.bareCriteria&&s.criteriaWithProps.length===0&&(this.criteriaEntries.delete(t),this.masterSubEmitter?._removeCriteria(t)),i&&this.criteriaEntriesBySubscriptionId.delete(i),o&&this.ws.send(JSON.stringify({type:"unbind-from-token",payload:{token:o}}))}addCriteria(e,t){this.masterSubEmitter&&this.masterSubEmitter._addCriteria(e);let n=this.maybeGetCriteriaEntry(e,t);if(n)return n.refCount+=1,n.emitter;let i=new En(e,t);return this.addCriteriaEntry(i),this.getTokenForCriteria(i).then(([o,s])=>{i.subscriptionId=o,i.token=s,this.criteriaEntriesBySubscriptionId.set(o,i),this.emitConnect(i),this.ws.send(JSON.stringify({type:"bind-with-token",payload:{token:s}}))}).catch(o=>{console.error(o.message),this.emitError(i,o),this.removeCriteriaEntry(i)}),i.emitter}removeCriteria(e,t){let n=this.maybeGetCriteriaEntry(e,t);if(!n){console.warn("Criteria not known to `SubscriptionManager`. Possibly called remove too many times.");return}n.refCount-=1,!(n.refCount>0)&&(this.maybeEmitDisconnect(n),this.removeCriteriaEntry(n))}closeWebSocket(){this.wsClosed||(this.wsClosed=!0,this.ws.close())}getCriteriaCount(){return this.getAllCriteriaEmitters().length}getMasterEmitter(){return this.masterSubEmitter||(this.masterSubEmitter=new Ne(...Array.from(this.criteriaEntries.keys()))),this.masterSubEmitter}};async function yc({resource:r,subscription:e,context:t,getPreviousResource:n,logger:i}){if(e.meta?.account&&r.meta?.account?.reference!==e.meta.account.reference)return i?.debug("Ignore resource in different account compartment"),!1;if(!gc(e,i))return i?.debug("Ignore subscription without recognized channel type"),!1;let o=e.criteria;if(!o)return i?.debug("Ignore rest hook missing criteria"),!1;let s=ne(o);if(r.resourceType!==s.resourceType)return i?.debug(`Ignore rest hook for different resourceType (wanted "${s.resourceType}", received "${r.resourceType}")`),!1;if(!await zi(e,r,n))return i?.debug("Ignore rest hook for criteria returning false"),!1;let c=Y(e,"https://medplum.com/fhir/StructureDefinition/subscription-supported-interaction");return c&&c.valueCode!==t.interaction?(i?.debug(`Ignore rest hook for different interaction (wanted "${c.valueCode}", received "${t.interaction}")`),!1):yt(r,s)}function gc(r,e){let t=r.channel?.type;return t==="rest-hook"?r.channel?.endpoint?!0:(e?.debug("Ignore rest-hook missing URL"),!1):t==="websocket"}async function zi(r,e,t){let n=Y(r,"https://medplum.com/fhir/StructureDefinition/fhir-path-criteria-expression");if(!n?.valueString)return!0;let i=await t(e),o={"%current":x(e),"%previous":x(i??{})};return A(n.valueString,[x(e)],o)?.[0]?.value===!0}var xc="3.2.5-30739a930",vc="medplum-cli",Xi=D.FHIR_JSON+", */*; q=0.1",Tc="https://api.medplum.com/",Sc=1e3,Ec=6e4,bc=0,Rc="Binary/",Ji={resourceType:"Device",id:"system",deviceName:[{type:"model-name",name:"System"}]},eo=(o=>(o.ClientCredentials="client_credentials",o.AuthorizationCode="authorization_code",o.RefreshToken="refresh_token",o.JwtBearer="urn:ietf:params:oauth:grant-type:jwt-bearer",o.TokenExchange="urn:ietf:params:oauth:grant-type:token-exchange",o))(eo||{}),to=(o=>(o.AccessToken="urn:ietf:params:oauth:token-type:access_token",o.RefreshToken="urn:ietf:params:oauth:token-type:refresh_token",o.IdToken="urn:ietf:params:oauth:token-type:id_token",o.Saml1Token="urn:ietf:params:oauth:token-type:saml1",o.Saml2Token="urn:ietf:params:oauth:token-type:saml2",o))(to||{}),ro=(o=>(o.ClientSecretBasic="client_secret_basic",o.ClientSecretPost="client_secret_post",o.ClientSecretJwt="client_secret_jwt",o.PrivateKeyJwt="private_key_jwt",o.None="none",o))(ro||{}),no=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(no||{}),bt=class extends Q{constructor(t){super();this.initComplete=!0;if(t?.baseUrl&&!t.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");this.options=t??{},this.fetch=t?.fetch??Pc(),this.storage=t?.storage??new Me,this.createPdfImpl=t?.createPdf,this.baseUrl=Kt(t?.baseUrl??Tc),this.fhirBaseUrl=q(this.baseUrl,t?.fhirUrlPath??"fhir/R4"),this.authorizeUrl=q(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=q(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=q(this.baseUrl,t?.logoutUrl??"oauth2/logout"),this.clientId=t?.clientId??"",this.clientSecret=t?.clientSecret??"",this.onUnauthenticated=t?.onUnauthenticated,this.cacheTime=t?.cacheTime??(typeof window>"u"?bc:Ec),this.cacheTime>0?this.requestCache=new gt(t?.resourceCacheSize??Sc):this.requestCache=void 0,t?.autoBatchTime?(this.autoBatchTime=t.autoBatchTime,this.autoBatchQueue=[]):(this.autoBatchTime=0,this.autoBatchQueue=void 0),t?.accessToken&&this.setAccessToken(t.accessToken),this.storage.getInitPromise===void 0?(t?.accessToken||this.attemptResumeActiveLogin().catch(console.error),this.initPromise=Promise.resolve(),this.dispatchEvent({type:"storageInitialized"})):(this.initComplete=!1,this.initPromise=this.storage.getInitPromise(),this.initPromise.then(()=>{t?.accessToken||this.attemptResumeActiveLogin().catch(console.error),this.initComplete=!0,this.dispatchEvent({type:"storageInitialized"})}).catch(n=>{console.error(n),this.initComplete=!0,this.dispatchEvent({type:"storageInitFailed",payload:{error:n}})})),this.setupStorageListener()}get isInitialized(){return this.initComplete}getInitPromise(){return this.initPromise}async attemptResumeActiveLogin(){let t=this.getActiveLogin();t&&(this.setAccessToken(t.accessToken,t.refreshToken),await this.refreshProfile())}getBaseUrl(){return this.baseUrl}getAuthorizeUrl(){return this.authorizeUrl}getTokenUrl(){return this.tokenUrl}getLogoutUrl(){return this.logoutUrl}clear(){this.storage.clear(),typeof window<"u"&&sessionStorage.clear(),this.clearActiveLogin()}clearActiveLogin(){this.storage.setString("activeLogin",void 0),this.requestCache?.clear(),this.accessToken=void 0,this.refreshToken=void 0,this.refreshPromise=void 0,this.accessTokenExpires=void 0,this.sessionDetails=void 0,this.medplumServer=void 0,this.dispatchEvent({type:"change"})}invalidateUrl(t){t=t.toString(),this.requestCache?.delete(t)}invalidateAll(){this.requestCache?.clear()}invalidateSearches(t){let n=q(this.fhirBaseUrl,t);if(this.requestCache)for(let i of this.requestCache.keys())(i.endsWith(n)||i.includes(n+"?"))&&this.requestCache.delete(i)}get(t,n={}){t=t.toString();let i=this.getCacheEntry(t,n);if(i)return i.value;let o;t.startsWith(this.fhirBaseUrl)&&this.autoBatchQueue?o=new Promise((a,c)=>{this.autoBatchQueue.push({method:"GET",url:t.replace(this.fhirBaseUrl,""),options:n,resolve:a,reject:c}),this.autoBatchTimerId||(this.autoBatchTimerId=setTimeout(()=>this.executeAutoBatch(),this.autoBatchTime))}):o=this.request("GET",t,n);let s=new M(o);return this.setCacheEntry(t,s),s}post(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("POST",t,o)}put(t,n,i,o={}){return t=t.toString(),this.setRequestBody(o,n),i&&this.setRequestContentType(o,i),this.invalidateUrl(t),this.request("PUT",t,o)}patch(t,n,i={}){return t=t.toString(),this.setRequestBody(i,n),this.setRequestContentType(i,D.JSON_PATCH),this.invalidateUrl(t),this.request("PATCH",t,i)}delete(t,n){return t=t.toString(),this.invalidateUrl(t),this.request("DELETE",t,n)}async startNewUser(t,n){let{codeChallengeMethod:i,codeChallenge:o}=await this.startPkce();return this.post("auth/newuser",{...t,clientId:t.clientId??this.clientId,codeChallengeMethod:i,codeChallenge:o},void 0,n)}async startNewProject(t,n){return this.post("auth/newproject",t,void 0,n)}async startNewPatient(t,n){return this.post("auth/newpatient",t,void 0,n)}async startLogin(t,n){return this.post("auth/login",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async startGoogleLogin(t,n){return this.post("auth/google",{...await this.ensureCodeChallenge(t),clientId:t.clientId??this.clientId,scope:t.scope},void 0,n)}async ensureCodeChallenge(t){return t.codeChallenge?t:{...t,...await this.startPkce()}}async signOut(){await this.post(this.logoutUrl,{}),this.clear()}async signInWithRedirect(t){let i=new URLSearchParams(window.location.search).get("code");if(!i){await this.requestAuthorization(t);return}return this.processCode(i)}signOutWithRedirect(){window.location.assign(this.logoutUrl)}async signInWithExternalAuth(t,n,i,o,s=!0){let a=o;s&&(a=await this.ensureCodeChallenge(o)),window.location.assign(this.getExternalAuthRedirectUri(t,n,i,a,s))}async exchangeExternalAccessToken(t,n){if(n=n??this.clientId,!n)throw new Error("MedplumClient is missing clientId");let i=new URLSearchParams;return i.set("grant_type","urn:ietf:params:oauth:grant-type:token-exchange"),i.set("subject_token_type","urn:ietf:params:oauth:token-type:access_token"),i.set("client_id",n),i.set("subject_token",t),this.fetchTokens(i)}getExternalAuthRedirectUri(t,n,i,o,s=!0){let a=new URL(t);if(a.searchParams.set("response_type","code"),a.searchParams.set("client_id",n),a.searchParams.set("redirect_uri",i),a.searchParams.set("scope",o.scope??"openid profile email"),a.searchParams.set("state",JSON.stringify(o)),s){let{codeChallenge:c,codeChallengeMethod:u}=o;if(!u)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!c)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");a.searchParams.set("code_challenge_method",u),a.searchParams.set("code_challenge",c)}return a.toString()}fhirUrl(...t){return new URL(q(this.fhirBaseUrl,t.join("/")))}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=rn(n)),i}search(t,n,i){let o=this.fhirSearchUrl(t,n),s="search-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let c=new M((async()=>{let u=await this.get(o,i);if(u.entry)for(let p of u.entry)this.cacheResource(p.resource);return u})());return this.setCacheEntry(s,c),c}searchOne(t,n,i){let o=this.fhirSearchUrl(t,n);o.searchParams.set("_count","1"),o.searchParams.sort();let s="searchOne-"+o.toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let c=new M(this.search(t,o.searchParams,i).then(u=>u.entry?.[0]?.resource));return this.setCacheEntry(s,c),c}searchResources(t,n,i){let s="searchResources-"+this.fhirSearchUrl(t,n).toString(),a=this.getCacheEntry(s,i);if(a)return a.value;let c=new M(this.search(t,n,i).then(bn));return this.setCacheEntry(s,c),c}async*searchResourcePages(t,n,i){let o=this.fhirSearchUrl(t,n);for(;o;){let s=new URL(o).searchParams,a=await this.search(t,s,i),c=a.link?.find(u=>u.relation==="next");if(!a.entry?.length&&!c)break;yield bn(a),o=c?.url?new URL(c.url):void 0}}searchValueSet(t,n,i){return this.valueSetExpand({url:t,filter:n},i)}valueSetExpand(t,n){let i=this.fhirUrl("ValueSet","$expand");return i.search=new URLSearchParams(t).toString(),this.get(i.toString(),n)}getCached(t,n){let i=this.requestCache?.get(this.fhirUrl(t,n).toString())?.value;return i?.isOk()?i.read():void 0}getCachedReference(t){let n=t.reference;if(!n)return;if(n==="system")return Ji;let[i,o]=n.split("/");if(!(!i||!o))return this.getCached(i,o)}readResource(t,n,i){return this.get(this.fhirUrl(t,n),i)}readReference(t,n){let i=t.reference;if(!i)return new M(Promise.reject(new Error("Missing reference")));if(i==="system")return new M(Promise.resolve(Ji));let[o,s]=i.split("/");return!o||!s?new M(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(Mr(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new M((async()=>{let s=`{
|
|
4
4
|
StructureDefinitionList(name: "${t}") {
|
|
5
5
|
resourceType,
|
|
6
6
|
name,
|
|
@@ -40,5 +40,5 @@
|
|
|
40
40
|
target
|
|
41
41
|
}
|
|
42
42
|
}`.replace(/\s+/g," "),a=await this.graphql(s);Ft(a.data.StructureDefinitionList);for(let c of a.data.SearchParameterList)Yt(c)})());return this.setCacheEntry(n,o),o}requestProfileSchema(t,n){if(!n?.expandProfile&&Fr(t))return Promise.resolve([t]);let i=t+"-requestSchema"+(n?.expandProfile?"-nested":""),o=this.getCacheEntry(i,void 0);if(o)return o.value;let s=new M((async()=>{if(n?.expandProfile){let a=this.fhirUrl("StructureDefinition","$expand-profile");a.search=new URLSearchParams({url:t}).toString();let c=await this.post(a.toString(),{});return bn(c).map(u=>(_t(u,u.url),u.url))}else{let a=await this.searchOne("StructureDefinition",{url:t,_sort:"-_lastUpdated"});return a?(Ft([a],t),[t]):(console.warn(`No StructureDefinition found for ${t}!`),[])}})());return this.setCacheEntry(i,s),s}readHistory(t,n,i){return this.get(this.fhirUrl(t,n,"_history"),i)}readVersion(t,n,i,o){return this.get(this.fhirUrl(t,n,"_history",i),o)}readPatientEverything(t,n){return this.get(this.fhirUrl("Patient",t,"$everything"),n)}createResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");return this.invalidateSearches(t.resourceType),this.post(this.fhirUrl(t.resourceType),t,void 0,n)}async createResourceIfNoneExist(t,n,i){return await this.searchOne(t.resourceType,n,i)??this.createResource(t,i)}async upsertResource(t,n,i){let o=this.fhirSearchUrl(t.resourceType,n),s=await this.put(o,t,void 0,i);return s||(s=t),this.cacheResource(s),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),s}async createAttachment(t,n,i,o,s){let a=Rn(t,n,i,o),c=s??(typeof n=="object"?n:{}),u=await this.createBinary(a,c);return{contentType:a.contentType,url:u.url,title:a.filename}}createBinary(t,n,i,o,s){let a=Rn(t,n,i,o),c=s??(typeof n=="object"?n:{}),{data:u,contentType:p,filename:m,securityContext:g,onProgress:K}=a,Le=this.fhirUrl("Binary");return m&&Le.searchParams.set("_filename",m),g?.reference&&this.setRequestHeader(c,"X-Security-Context",g.reference),K?this.uploadwithProgress(Le,u,p,K,c):this.post(Le,u,p,c)}uploadwithProgress(t,n,i,o,s){return new Promise((a,c)=>{let u=new XMLHttpRequest,p=()=>u.abort();s?.signal?.addEventListener("abort",p);let m=g=>{s?.signal?.removeEventListener("abort",p),g instanceof Error?c(g):a(g)};if(u.responseType="json",u.onabort=()=>m(new Error("Request aborted")),u.onerror=()=>m(new Error("Request error")),o&&(u.upload.onprogress=g=>o(g),u.upload.onload=g=>o(g)),u.onload=()=>{u.status>=200&&u.status<300?m(u.response):m(new f(qe(u.response||u.statusText)))},u.open("POST",t),u.withCredentials=!0,u.setRequestHeader("Authorization","Bearer "+this.accessToken),u.setRequestHeader("Cache-Control","no-cache, no-store, max-age=0"),u.setRequestHeader("Content-Type",i),u.setRequestHeader("X-Medplum","extended"),s?.headers){let g=s.headers;for(let[K,Le]of Object.entries(g))u.setRequestHeader(K,Le)}u.send(n)})}async createPdf(t,n,i,o){if(!this.createPdfImpl)throw new Error("PDF creation not enabled");let s=io(t,n,i,o),a=typeof n=="object"?n:{},{docDefinition:c,tableLayouts:u,fonts:p,...m}=s,g=await this.createPdfImpl(c,u,p),K={...m,data:g,contentType:"application/pdf"};return this.createBinary(K,a)}createComment(t,n,i){let o=this.getProfile(),s,a;return t.resourceType==="Encounter"&&(s=X(t),a=t.subject),t.resourceType==="ServiceRequest"&&(s=t.encounter,a=t.subject),t.resourceType==="Patient"&&(a=X(t)),this.createResource({resourceType:"Communication",status:"completed",basedOn:[X(t)],encounter:s,subject:a,sender:o?X(o):void 0,sent:new Date().toISOString(),payload:[{contentString:n}]},i)}async updateResource(t,n){if(!t.resourceType)throw new Error("Missing resourceType");if(!t.id)throw new Error("Missing id");let i=await this.put(this.fhirUrl(t.resourceType,t.id),t,void 0,n);return i||(i=t),this.cacheResource(i),this.invalidateUrl(this.fhirUrl(t.resourceType,t.id,"_history")),this.invalidateSearches(t.resourceType),i}async patchResource(t,n,i,o){let s=await this.patch(this.fhirUrl(t,n),i,o);return this.cacheResource(s),this.invalidateUrl(this.fhirUrl(t,n,"_history")),this.invalidateSearches(t),s}deleteResource(t,n,i){return this.deleteCacheEntry(this.fhirUrl(t,n).toString()),this.invalidateSearches(t),this.delete(this.fhirUrl(t,n),i)}validateResource(t,n){return this.post(this.fhirUrl(t.resourceType,"$validate"),t,void 0,n)}executeBot(t,n,i,o){let s;if(typeof t=="string"){let a=t;s=this.fhirUrl("Bot",a,"$execute")}else{let a=t;s=this.fhirUrl("Bot","$execute"),s.searchParams.set("identifier",a.system+"|"+a.value)}return this.post(s,n,i,o)}executeBatch(t,n){return this.post(this.fhirBaseUrl,t,void 0,n)}sendEmail(t,n){return this.post("email/v1/send",t,D.JSON,n)}graphql(t,n,i,o){return this.post(this.fhirUrl("$graphql"),{query:t,operationName:n,variables:i},D.JSON,o)}readResourceGraph(t,n,i,o){return this.get(`${this.fhirUrl(t,n)}/$graph?graph=${i}`,o)}pushToAgent(t,n,i,o,s,a){return this.post(this.fhirUrl("Agent",xe(t),"$push"),{destination:typeof n=="string"?n:ce(n),body:i,contentType:o,waitForResponse:s},D.FHIR_JSON,a)}getActiveLogin(){return this.storage.getObject("activeLogin")}async setActiveLogin(t){(!this.sessionDetails?.profile||ce(this.sessionDetails.profile)!==t.profile?.reference)&&this.clearActiveLogin(),this.setAccessToken(t.accessToken,t.refreshToken),this.storage.setObject("activeLogin",t),this.addLogin(t),this.refreshPromise=void 0,await this.refreshProfile()}getAccessToken(){return this.accessToken}setAccessToken(t,n){this.accessToken=t,this.refreshToken=n,this.sessionDetails=void 0,this.accessTokenExpires=Tn(t),this.medplumServer=vn(t)}getLogins(){return this.storage.getObject("logins")??[]}addLogin(t){let n=this.getLogins().filter(i=>i.profile?.reference!==t.profile?.reference);n.push(t),this.storage.setObject("logins",n)}async refreshProfile(){return this.medplumServer?(this.profilePromise=new Promise((t,n)=>{this.dispatchEvent({type:"profileRefreshing"}),this.get("auth/me").then(i=>{this.profilePromise=void 0;let o=this.sessionDetails?.profile?.id!==i.profile.id;this.sessionDetails=i,o&&this.dispatchEvent({type:"change"}),this.dispatchEvent({type:"profileRefreshed"}),t(i.profile)}).catch(n)}),this.profilePromise):Promise.resolve(void 0)}isLoading(){return!this.isInitialized||!!this.profilePromise}isSuperAdmin(){return!!this.sessionDetails?.project.superAdmin}isProjectAdmin(){return!!this.sessionDetails?.membership.admin}getProject(){return this.sessionDetails?.project}getProjectMembership(){return this.sessionDetails?.membership}getProfile(){return this.sessionDetails?.profile}async getProfileAsync(){return this.profilePromise?this.profilePromise:this.sessionDetails?this.sessionDetails.profile:this.refreshProfile()}getUserConfiguration(){return this.sessionDetails?.config}getAccessPolicy(){return this.sessionDetails?.accessPolicy}async download(t,n={}){this.refreshPromise&&await this.refreshPromise;let i=t.toString();i.startsWith(Rc)&&(t=this.fhirUrl(i));let o=n.headers;return o||(o={},n.headers=o),o.Accept||(o.Accept="*/*"),this.addFetchOptionsDefaults(n),(await this.fetchWithRetry(t.toString(),n)).blob()}async createMedia(t,n){let{additionalFields:i,...o}=t,s=await this.createResource({resourceType:"Media",status:"preparation",content:{contentType:t.contentType},...i});o.securityContext||(o.securityContext=X(s));let a=await this.createAttachment(o,n);return this.updateResource({...s,status:"completed",content:a})}async uploadMedia(t,n,i,o,s){return this.createMedia({data:t,contentType:n,filename:i,additionalFields:o},s)}async bulkExport(t="",n,i,o){let s=t&&`${t}/`,a=this.fhirUrl(`${s}$export`);return n&&a.searchParams.set("_type",n),i&&a.searchParams.set("_since",i),this.startAsyncRequest(a.toString(),o)}async startAsyncRequest(t,n={}){this.addFetchOptionsDefaults(n);let i=n.headers;return i.Prefer="respond-async",this.request("POST",t,n)}get keyValue(){return this.keyValueClient||(this.keyValueClient=new St(this)),this.keyValueClient}getCacheEntry(t,n){if(!this.requestCache||n?.cache==="no-cache"||n?.cache==="reload")return;let i=this.requestCache.get(t);if(!(!i||i.requestTime+this.cacheTime<Date.now()))return i}setCacheEntry(t,n){this.requestCache&&this.requestCache.set(t,{requestTime:Date.now(),value:n})}cacheResource(t){t?.id&&!t.meta?.tag?.some(n=>n.code==="SUBSETTED")&&this.setCacheEntry(this.fhirUrl(t.resourceType,t.id).toString(),new M(Promise.resolve(t)))}deleteCacheEntry(t){this.requestCache&&this.requestCache.delete(t)}async request(t,n,i={},o={}){await this.refreshIfExpired(),i.method=t,this.addFetchOptionsDefaults(i);let s=await this.fetchWithRetry(n,i);if(s.status===401)return this.handleUnauthenticated(t,n,i);if(s.status===204||s.status===304)return;let c=s.headers.get("content-type")?.includes("json");if(s.status===404&&!c)throw new f(br);let u=await this.parseBody(s,c);if(s.status===200&&i.followRedirectOnOk||s.status===201&&i.followRedirectOnCreated){let p=await Zi(s,u);if(p)return this.request("GET",p,{...i,body:void 0})}if(s.status===202&&i.pollStatusOnAccepted){let m=await Zi(s,u)??o.statusUrl;if(m)return this.pollStatus(m,i,o)}if(s.status>=400)throw new f(qe(u));return u}async parseBody(t,n){let i;if(n)try{i=await t.json()}catch(o){throw console.error("Error parsing response",t.status,o),o}else i=await t.text();return i}async fetchWithRetry(t,n){t.startsWith("http")||(t=q(this.baseUrl,t));let i=n?.maxRetries??2,o=200;for(let s=0;s<=i;s++){try{this.options.verbose&&this.logRequest(t,n);let a=await this.fetch(t,n);if(this.options.verbose&&this.logResponse(a),a.status<500||s===i)return a}catch(a){if(a.message==="Failed to fetch"&&s===0&&this.dispatchEvent({type:"offline"}),a.name==="AbortError"||s===i)throw a}await Ht(o)}throw new Error("Unreachable")}logRequest(t,n){if(console.log(`> ${n.method} ${t}`),n.headers){let i=n.headers;for(let o of Je(Object.keys(i)))console.log(`> ${o}: ${i[o]}`)}}logResponse(t){console.log(`< ${t.status} ${t.statusText}`),t.headers&&t.headers.forEach((n,i)=>console.log(`< ${i}: ${n}`))}async pollStatus(t,n,i){let o={...n,method:"GET",body:void 0,redirect:"follow"};if(i.pollCount===void 0)n.headers&&typeof n.headers=="object"&&"Prefer"in n.headers&&(o.headers={...n.headers},delete o.headers.Prefer),i.statusUrl=t,i.pollCount=1;else{let s=n.pollStatusPeriod??1e3;await Ht(s),i.pollCount++}return this.request("GET",t,o,i)}async executeAutoBatch(){let t=[...this.autoBatchQueue];if(this.autoBatchQueue.length=0,this.autoBatchTimerId=void 0,t.length===1){let o=t[0];try{o.resolve(await this.request(o.method,q(this.fhirBaseUrl,o.url),o.options))}catch(s){o.reject(new f(qe(s)))}return}let n={resourceType:"Bundle",type:"batch",entry:t.map(o=>({request:{method:o.method,url:o.url},resource:o.options.body?JSON.parse(o.options.body):void 0}))},i=await this.post(this.fhirBaseUrl,n);for(let o=0;o<t.length;o++){let s=t[o],a=i.entry?.[o];a?.response?.outcome&&!Dt(a.response.outcome)?s.reject(new f(a.response.outcome)):s.resolve(a?.resource)}}addFetchOptionsDefaults(t){this.setRequestHeader(t,"X-Medplum","extended"),this.setRequestHeader(t,"Accept",Xi,!0),t.body&&this.setRequestHeader(t,"Content-Type",D.FHIR_JSON,!0),this.accessToken?this.setRequestHeader(t,"Authorization","Bearer "+this.accessToken):this.basicAuth&&this.setRequestHeader(t,"Authorization","Basic "+this.basicAuth),t.cache||(t.cache="no-cache"),t.credentials||(t.credentials="include")}setRequestContentType(t,n){this.setRequestHeader(t,"Content-Type",n)}setRequestHeader(t,n,i,o=!1){t.headers||(t.headers={});let s=t.headers;o&&s[n]||(s[n]=i)}setRequestBody(t,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")?t.body=n:n&&(t.body=JSON.stringify(n))}handleUnauthenticated(t,n,i){return this.refresh()?this.request(t,n,i):(this.clear(),this.onUnauthenticated&&this.onUnauthenticated(),Promise.reject(new Error("Unauthenticated")))}async startPkce(){let t=tr();sessionStorage.setItem("pkceState",t);let n=tr();sessionStorage.setItem("codeVerifier",n);let i=await mn(n),o=Zr(i).replaceAll("+","-").replaceAll("/","_").replaceAll("=","");return sessionStorage.setItem("codeChallenge",o),{codeChallengeMethod:"S256",codeChallenge:o}}async requestAuthorization(t){let n=await this.ensureCodeChallenge(t??{}),i=new URL(this.authorizeUrl);i.searchParams.set("response_type","code"),i.searchParams.set("state",sessionStorage.getItem("pkceState")),i.searchParams.set("client_id",n.clientId??this.clientId),i.searchParams.set("redirect_uri",n.redirectUri??Yi()),i.searchParams.set("code_challenge_method",n.codeChallengeMethod),i.searchParams.set("code_challenge",n.codeChallenge),i.searchParams.set("scope",n.scope??"openid profile"),window.location.assign(i.toString())}processCode(t,n){let i=new URLSearchParams;if(i.set("grant_type","authorization_code"),i.set("code",t),i.set("client_id",n?.clientId??this.clientId),i.set("redirect_uri",n?.redirectUri??Yi()),typeof sessionStorage<"u"){let o=sessionStorage.getItem("codeVerifier");o&&i.set("code_verifier",o)}return this.fetchTokens(i)}refreshIfExpired(){return!this.refreshPromise&&this.accessTokenExpires!==void 0&&this.accessTokenExpires<Date.now()&&this.refresh(),this.refreshPromise??Promise.resolve()}refresh(){if(this.refreshPromise)return this.refreshPromise;if(this.refreshToken){let t=new URLSearchParams;return t.set("grant_type","refresh_token"),t.set("client_id",this.clientId),t.set("refresh_token",this.refreshToken),this.refreshPromise=this.fetchTokens(t),this.refreshPromise}if(this.clientId&&this.clientSecret)return this.refreshPromise=this.startClientLogin(this.clientId,this.clientSecret),this.refreshPromise}async startClientLogin(t,n){this.clientId=t,this.clientSecret=n;let i=new URLSearchParams;return i.set("grant_type","client_credentials"),i.set("client_id",t),i.set("client_secret",n),this.fetchTokens(i)}async startJwtBearerLogin(t,n,i){this.clientId=t;let o=new URLSearchParams;return o.set("grant_type","urn:ietf:params:oauth:grant-type:jwt-bearer"),o.set("client_id",t),o.set("assertion",n),o.set("scope",i),this.fetchTokens(o)}async startJwtAssertionLogin(t){let n=new URLSearchParams;return n.append("grant_type","client_credentials"),n.append("client_assertion_type","urn:ietf:params:oauth:client-assertion-type:jwt-bearer"),n.append("client_assertion",t),this.fetchTokens(n)}setBasicAuth(t,n){this.clientId=t,this.clientSecret=n,this.basicAuth=fn(t+":"+n)}async fhircastSubscribe(t,n){if(!(typeof t=="string"&&t!==""))throw new f(h("Invalid topic provided. Topic must be a valid string."));if(!(typeof n=="object"&&Array.isArray(n)&&n.length>0))throw new f(h("Invalid events provided. Events must be an array of event names containing at least one event."));let i={channelType:"websocket",mode:"subscribe",topic:t,events:n},s=(await this.post("/fhircast/STU3",or(i),D.FORM_URL_ENCODED))["hub.channel.endpoint"];if(!s)throw new Error("Invalid response!");return i.endpoint=s,i}async fhircastUnsubscribe(t){if(!vt(t))throw new f(h("Invalid topic or subscriptionRequest. SubscriptionRequest must be an object."));if(!(t.endpoint&&typeof t.endpoint=="string"&&t.endpoint.startsWith("ws")))throw new f(h("Provided subscription request must have an endpoint in order to unsubscribe."));t.mode="unsubscribe",await this.post("/fhircast/STU3",or(t),D.FORM_URL_ENCODED)}fhircastConnect(t){return new xt(t)}async fhircastPublish(t,n,i,o){return hn(n)?this.post(`/fhircast/STU3/${t}`,sr(t,n,i,o),D.JSON):(yn(n),this.post(`/fhircast/STU3/${t}`,sr(t,n,i),D.JSON))}async fhircastGetContext(t){return this.get(`/fhircast/STU3/${t}`)}async invite(t,n){return this.post("admin/projects/"+t+"/invite",n)}async fetchTokens(t){let n={method:"POST",headers:{"Content-Type":D.FORM_URL_ENCODED},body:t.toString(),credentials:"include"},i=n.headers;this.basicAuth&&(i.Authorization=`Basic ${this.basicAuth}`);let o;try{o=await this.fetchWithRetry(this.tokenUrl,n)}catch(a){throw this.refreshPromise=void 0,a}if(!o.ok){this.clearActiveLogin();try{let a=await o.json();throw new f(R(a.error_description))}catch(a){throw new f(R("Failed to fetch tokens"),a)}}let s=await o.json();return await this.verifyTokens(s),this.getProfile()}async verifyTokens(t){let n=t.access_token;if(xn(n)){let i=Tt(n);if(Date.now()>=i.exp*1e3)throw this.clearActiveLogin(),new Error("Token expired");if(i.cid){if(i.cid!==this.clientId)throw this.clearActiveLogin(),new Error("Token was not issued for this audience")}else if(this.clientId&&i.client_id!==this.clientId)throw this.clearActiveLogin(),new Error("Token was not issued for this audience")}return this.setActiveLogin({accessToken:n,refreshToken:t.refresh_token,project:t.project,profile:t.profile})}setupStorageListener(){try{window.addEventListener("storage",t=>{(t.key===null||t.key==="activeLogin")&&window.location.reload()})}catch{}}getSubscriptionManager(){return this.subscriptionManager||(this.subscriptionManager=new Et(this,tn(this.baseUrl,"/ws/subscriptions-r4"))),this.subscriptionManager}subscribeToCriteria(t,n){return this.getSubscriptionManager().addCriteria(t,n)}unsubscribeFromCriteria(t,n){this.subscriptionManager&&(this.subscriptionManager.removeCriteria(t,n),this.subscriptionManager.getCriteriaCount()===0&&this.subscriptionManager.closeWebSocket())}getMasterSubscriptionEmitter(){return this.getSubscriptionManager().getMasterEmitter()}};function Pc(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}function Yi(){return typeof window>"u"?"":window.location.protocol+"//"+window.location.host+"/"}async function Zi(r,e){let t=r.headers.get("content-location");if(t)return t;let n=r.headers.get("location");if(n)return n;if(ye(e)&&e.issue?.[0]?.diagnostics)return e.issue[0].diagnostics}function bn(r){let e=r.entry?.map(t=>t.resource)??[];return Object.assign(e,{bundle:r})}function Cc(r){return E(r)&&"data"in r&&"contentType"in r}function Rn(r,e,t,n){return Cc(r)?r:{data:r,filename:e,contentType:t,onProgress:n}}function wc(r){return E(r)&&"docDefinition"in r}function io(r,e,t,n){return wc(r)?r:{docDefinition:r,filename:e,tableLayouts:t,fonts:n}}var Ac={aws_ssm_parameter_store:"aws_ssm_parameter_store"};function lr({parentContext:r,path:e,elements:t,profileUrl:n,debugMode:i,accessPolicyResource:o}){if(e===r?.path)return;i??=r?.debugMode??!1,o??=r?.accessPolicyResource;let s=Oc(e,t,r,!!i),a=Qt(e,".",2)[1];s=Ic(s,o,a),s=kc(s,o,a);let c=Object.create(null);for(let[p,m]of Object.entries(s))c[e+"."+p]=m;let u;if(r&&!r.isDefaultContext)u=r.getExtendedProps;else{let p=Object.create(null);u=m=>{let g=Qt(m,".",2)[1];if(g){if(!p[g]){let K=ur(g,o?.hiddenFields);p[g]={hidden:K,readonly:K||ur(g,o?.readonlyFields)}}return p[g]}}}return{path:e,elements:s,elementsByPath:c,profileUrl:n??r?.profileUrl,debugMode:i,getExtendedProps:u,accessPolicyResource:o}}function Oc(r,e,t,n){let i=Object.create(null);if(t)for(let[s,a]of Object.entries(t.elementsByPath)){let c=ve(r,s);c!==void 0&&(i[c]=a)}let o=!1;if(e)for(let[s,a]of Object.entries(e))s in i||(i[s]=a,o=!0);return n&&console.assert(o,"Unnecessary ElementsContext; not using any newly provided elements"),i}function Ic(r,e,t){if(!e?.hiddenFields?.length)return r;let n=t?t+".":"";return Object.fromEntries(Object.entries(r).filter(([i])=>!ur(n+i,e.hiddenFields)))}function kc(r,e,t){if(!e?.readonlyFields?.length)return r;let n=Object.create(null),i=t?t+".":"";for(let[o,s]of Object.entries(r))ur(i+o,e.readonlyFields)?n[o]={...s,readonly:!0}:n[o]=s;return n}function ur(r,e){if(!e?.length)return!1;let t=r.split(".");for(let n=1;n<=t.length;n++){let i=t.slice(0,n).join(".");if(e.includes(i))return!0}return!1}function Pn(r){return r.type!==void 0&&r.type.length>0}function Vc(r,e,t,n){let i=ge(r,e.path,{profileUrl:n});if(i){let o=t.typeSchema?.elements??t.elements;return i.some(s=>qt(s,e,t,o))??!1}return console.assert(!1,"getNestedProperty[%s] in isDiscriminatorComponentMatch missed",e.path),!1}function Cn(r,e,t,n){if(r)for(let i of e){let o={value:r,type:i.typeSchema?.name??i.type?.[0].code};if(t.every(s=>Vc(o,s,i,i.typeSchema?.url??n)))return i.name}}var Fe=class{constructor(e,t,n){if(e.type===void 0)throw new Error("schema must include a type");this.rootSchema=e;let i=lr({parentContext:void 0,path:this.rootSchema.type,elements:n??this.rootSchema.elements,profileUrl:this.rootSchema.name===this.rootSchema.type?void 0:this.rootSchema.url});if(i===void 0)throw new Error("Could not create root elements context");this.elementsContextStack=[i],this.visitor=t}get elementsContext(){return this.elementsContextStack[this.elementsContextStack.length-1]}crawlElement(e,t,n){this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema);let i=Object.fromEntries(Object.entries(this.elementsContext.elements).filter(([o])=>o.startsWith(t)));this.crawlElementsImpl(i,n),this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlSlice(e,t,n){let i=this.prepareSlices(n.slices,n);if(!$(i.slices))throw new Error(`cannot crawl slice ${t.name} since it has no type information`);this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema),this.sliceAllowList=[t],this.crawlSliceImpl(i.slices[0],t.path,i),this.sliceAllowList=void 0,this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlResource(){this.visitor.onEnterSchema&&this.visitor.onEnterSchema(this.rootSchema),this.crawlElementsImpl(this.rootSchema.elements,this.rootSchema.type),this.visitor.onExitSchema&&this.visitor.onExitSchema(this.rootSchema)}crawlElementsImpl(e,t){let n=Dc(e);for(let i of n)this.crawlElementNode(i,t)}crawlElementNode(e,t){let n=t+"."+e.key;this.visitor.onEnterElement&&this.visitor.onEnterElement(n,e.element,this.elementsContext);for(let i of e.children)this.crawlElementNode(i,t);$(e.element?.slicing?.slices)&&this.crawlSlicingImpl(e.element.slicing,n),this.visitor.onExitElement&&this.visitor.onExitElement(n,e.element,this.elementsContext)}prepareSlices(e,t){let n=[];for(let o of e){if(!Pn(o))continue;let s=o.type.find(a=>$(a.profile))?.profile?.[0];if($(s)){let a=_r(s);a&&(o.typeSchema=a)}n.push(o)}return{...t,slices:n}}crawlSlicingImpl(e,t){let n=this.prepareSlices(e.slices,e);for(let i of n.slices)(this.sliceAllowList===void 0||this.sliceAllowList.includes(i))&&this.crawlSliceImpl(i,t,n)}crawlSliceImpl(e,t,n){let i=e.typeSchema;i&&this.visitor.onEnterSchema&&this.visitor.onEnterSchema(i),this.visitor.onEnterSlice&&this.visitor.onEnterSlice(t,e,n);let o,s=i?.elements??e.elements;$(s)&&(o=lr({path:t,parentContext:this.elementsContext,elements:s})),o&&this.elementsContextStack.push(o),this.crawlElementsImpl(s,t),o&&this.elementsContextStack.pop(),this.visitor.onExitSlice&&this.visitor.onExitSlice(t,e,n),i&&this.visitor.onExitSchema&&this.visitor.onExitSchema(i)}};function Dc(r){let e=[];function t(o,s){return s.startsWith(o+".")}function n(o,s){for(let a of o.children)if(t(a.key,s.key)){n(a,s);return}o.children.push(s)}let i=Object.entries(r);i.sort((o,s)=>o[0].localeCompare(s[0]));for(let[o,s]of i){let a={key:o,element:s,children:[]},c=!1;for(let u of e)if(t(u.key,o)){n(u,a),c=!0;break}c||e.push(a)}return e}var pr="__sliceName";function Mc(r,e){let t=new Rt(r,r.resourceType,"resource");return new Fe(e,t).crawlResource(),t.getDefaultValue()}function Nc(r,e,t){for(let[n,i]of Object.entries(e)){if(t===void 0||t===n){Pt(r,n,i,e);continue}let o=ve(t,n);o!==void 0&&Pt(r,o,i,e)}return r}function Fc(r,e,t,n,i){let o=r??Object.create(null),[s,a]=Uc(e,"."),c=Object.create(null);dr(c,o,a,t);let u=new Rt(c,s,"element");new Fe(i,u,n).crawlElement(t,a,s);let m=u.getDefaultValue();return fr(m,a,t,n)}function _c(r,e,t,n){let i=new Rt([{[pr]:e.name}],e.path,"element");return new Fe(n,i).crawlSlice(r,e,t),i.getDefaultValue()[0]}var Rt=class{constructor(e,t,n){this.schemaStack=[],this.valueStack=[],this.rootValue=ue(e),this.valueStack.splice(0,this.valueStack.length,{type:n,path:t,values:[this.rootValue]})}get schema(){return this.schemaStack[this.schemaStack.length-1]}get value(){return this.valueStack[this.valueStack.length-1]}onEnterSchema(e){this.schemaStack.push(e)}onExitSchema(){this.schemaStack.pop()}onEnterElement(e,t,n){let i=this.value.values,o=this.value.path,s=ve(o,e);if(s===void 0)throw new Error(`Expected ${e} to be prefixed by ${o}`);let a=[];for(let c of i){if(c===void 0)continue;let u=Array.isArray(c)?c:[c];for(let p of u){Lc(p,s,t,n.elements),Pt(p,s,t,n.elements);let m=fr(p,s,t,n.elements);m!==void 0&&a.push(m)}}this.valueStack.push({type:"element",path:e,values:a})}onExitElement(e,t,n){if(!this.valueStack.pop())throw new Error("Expected value context to exist when exiting element");let o=ve(this.value.path,e);if(o===void 0)throw new Error(`Expected ${e} to be prefixed by ${this.value.path}`);for(let s of this.value.values){let a=fr(s,o,t,n.elements);if(Array.isArray(a))for(let c=a.length-1;c>=0;c--){let u=a[c];$(u)||a.splice(c,1)}S(a)&&dr(s,void 0,o,t)}}onEnterSlice(e,t,n){let i=this.value.values,o=[];for(let s of i){if(s===void 0)continue;if(!Array.isArray(s))throw new Error("Expected array value for sliced element");let a=this.getMatchingSliceValues(s,t,n);o.push(a)}this.valueStack.push({type:"slice",path:e,values:o})}getMatchingSliceValues(e,t,n){let i=[];for(let o of e)(o[pr]??Cn(o,[t],n.discriminator,this.schema.url))===t.name&&i.push(o);for(let o=i.length;o<t.min;o++)if(Gt(t.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 t of e.values)for(let n=t.length-1;n>=0;n--){let i=t[n];pr in i&&delete i[pr]}}getDefaultValue(){return this.rootValue}};function Lc(r,e,t,n){let i=fr(r,e,t,n);t.min>0&&i===void 0&&Gt(t.type[0].code)&&(t.isArray?dr(r,[Object.create(null)],e,t):dr(r,Object.create(null),e,t))}function dr(r,e,t,n){if(t.includes("."))throw new Error("key cannot be nested");let i=t;if(t.includes("[x]")){let o=n.type[0].code;i=t.replace("[x]",w(o))}e===void 0?delete r[i]:r[i]=e}function fr(r,e,t,n){let i=e.split("."),o=r,s;for(let a=0;a<i.length;a++){let c=i[a];if(c.includes("[x]")){let p=n[i.slice(0,a+1).join(".")].type[0].code;c=c.replace("[x]",w(p))}if(a===i.length-1){Array.isArray(o)?s=o.map(u=>u[c]):s=o[c];continue}if(Array.isArray(o))o=o.map(u=>u[c]);else if(E(o)){if(o[c]===void 0)return;o=o[c]}else return}return s}function Pt(r,e,t,n){if(!(t.fixed||t.pattern))return r;if(Array.isArray(r))return r.map(a=>Pt(a,e,t,n));r==null&&(r=Object.create(null));let i=r,o=e.split("."),s=i;for(let a=0;a<o.length;a++){let c=o[a];if(c.includes("[x]")){let p=n[o.slice(0,a+1).join(".")].type[0].code;c=c.replace("[x]",w(p))}if(a===o.length-1){let u=Array.isArray(s)?s:[s];for(let p of u)t.fixed?p[c]??=t.fixed.value:t.pattern&&(p[c]=oo(p[c],t.pattern.value))}else{if(!(c in s)){let u=o.slice(0,a+1).join(".");s[c]=n[u].isArray?[Object.create(null)]:Object.create(null)}s=s[c]}}return i}function oo(r,e){if(Array.isArray(e)&&(Array.isArray(r)||r===void 0))return(r?.length??0)>0?r:ue(e);if(E(e)&&(E(r)&&!Array.isArray(r)||r===void 0)){let t=ue(r)??Object.create(null);for(let n of Object.keys(e))t[n]=oo(t[n],e[n]);return t}return r}function Uc(r,e){let t=r.lastIndexOf(e);if(t===-1)return["",r];let n=r.substring(0,t),i=r.substring(t+e.length);return[n,i]}function wn(r,e){if(!r.group)throw new f(R("ConceptMap does not specify a mapping group","ConceptMap.group"));let t=Bc(e);if(ye(t))throw new f(t);let n=jc(t,e.targetsystem?r.group.filter(o=>o.target===e.targetsystem):r.group),i=n.length>0;return{result:i,match:i?n:void 0}}function Bc(r){return r.code&&!r.coding&&!r.codeableConcept?r.system===void 0?R("Missing required 'system' input parameter with 'code' parameter"):{[r.system]:[r.code]}:r.coding&&!r.code&&!r.codeableConcept?{[r.coding.system??""]:[r.coding.code??""]}:r.codeableConcept&&!r.code&&!r.coding?qc(r.codeableConcept):r.code||r.coding||r.codeableConcept?R("Ambiguous input: multiple source codings provided"):R("No source provided: 'code'+'system', 'coding', or 'codeableConcept' input parameter is required")}function qc(r){let e=Object.create(null);if(!r.coding?.length)return e;for(let{system:t,code:n}of r.coding){if(!n)continue;let i=t??"";e[i]=e[i]?[...e[i],n]:[n]}return e}function jc(r,e){let t=[];for(let[n,i]of Object.entries(r))for(let o of e.filter(s=>(s.source??"")===n)){let s=o.element?.filter(a=>i.includes(a.code)).flatMap(a=>a.target?.map(c=>({equivalence:c.equivalence,concept:{system:o.target,code:c.code,display:c.display}}))??[]);s?.length||(s=$c(i,o)),s&&t.push(...s)}return t}function $c(r,e){switch(e.unmapped?.mode){case"provided":return r.map(t=>({equivalence:"equal",concept:{system:e.target,code:t}}));case"fixed":return[{equivalence:"equivalent",concept:{system:e.target,code:e.unmapped.code,display:e.unmapped.display}}];default:return}}var Wc=[...ft,"->","<<",">>","=="];function so(r){return new re(r,dt,Wc).tokenize()}var Gc={"-":"disjoint","==":"equal"},An=class{constructor(e){this.parser=e;this.structureMap={resourceType:"StructureMap",status:"active"}}parse(){for(;this.parser.hasMore();){let e=this.parser.peek()?.value;switch(e){case"map":this.parseMap();break;case"uses":this.parseUses();break;case"imports":this.parseImport();break;case"group":this.parseGroup();break;case"conceptmap":this.parseConceptMap();break;default:throw new Error(`Unexpected token: ${e}`)}}return this.structureMap}parseMap(){this.parser.consume("Symbol","map"),this.structureMap.url=this.parser.consume("String").value,this.parser.consume("="),this.structureMap.name=this.parser.consume().value}parseUses(){this.parser.consume("Symbol","uses");let e={};e.url=this.parser.consume("String").value,this.parser.peek()?.value==="alias"&&(this.parser.consume("Symbol","alias"),e.alias=this.parser.consume("Symbol").value),this.parser.consume("Symbol","as"),e.mode=this.parser.consume().value,this.structureMap.structure||(this.structureMap.structure=[]),this.structureMap.structure.push(e)}parseImport(){this.parser.consume("Symbol","imports"),this.structureMap.import||(this.structureMap.import=[]),this.structureMap.import.push(this.parser.consume("String").value)}parseGroup(){let e={};this.parser.consume("Symbol","group"),e.name=this.parser.consume("Symbol").value,e.input=this.parseParameters(),this.parser.peek()?.value==="extends"&&(this.parser.consume("Symbol","extends"),e.extends=this.parser.consume("Symbol").value),this.parser.peek()?.value==="<<"?(this.parser.consume("<<"),e.typeMode=this.parser.consume().value,this.parser.peek()?.value==="+"&&(this.parser.consume("+"),e.typeMode="type-and-types"),this.parser.consume(">>")):e.typeMode="none",e.rule=this.parseRules(),this.structureMap.group||(this.structureMap.group=[]),this.structureMap.group.push(e)}parseParameters(){let e=[];for(this.parser.consume("(");this.parser.hasMore()&&this.parser.peek()?.value!==")";)e.push(this.parseParameter()),this.parser.peek()?.value===","&&this.parser.consume(",");return this.parser.consume(")"),e}parseParameter(){let e={};return e.mode=this.parser.consume().value,e.name=this.parser.consume("Symbol").value,this.parser.peek()?.value===":"&&(this.parser.consume(":"),e.type=this.parser.consume("Symbol").value),e}parseRules(){let e=[];for(this.parser.consume("{");this.parser.hasMore()&&this.parser.peek()?.value!=="}";)e.push(this.parseRule());return this.parser.consume("}"),e}parseRule(){let e={source:this.parseRuleSources()};return this.parser.peek()?.value==="->"&&(this.parser.consume("->"),e.target=this.parseRuleTargets()),this.parser.peek()?.value==="then"&&(this.parser.consume("Symbol","then"),this.parser.peek()?.id==="{"?e.rule=this.parseRules():e.dependent=this.parseRuleDependents()),this.parser.peek()?.id==="String"?e.name=this.parser.consume().value:e.name=e.source?.[0]?.element,this.parser.consume(";"),e}parseRuleSources(){this.parser.hasMore()&&this.parser.peek()?.value==="for"&&this.parser.consume("Symbol","for");let e=[this.parseRuleSource()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleSource());return e}parseRuleSource(){let e={},n=this.parseRuleContext().split(".");if(e.context=n[0],e.element=n[1],this.parser.hasMore()&&this.parser.peek()?.value===":"&&(this.parser.consume(":"),e.type=this.parser.consume().value),this.parser.hasMore()&&this.parser.peek()?.value==="default"&&(this.parser.consume("Symbol","default"),e.defaultValueString=this.parser.consume("String").value),(this.parser.peek()?.value==="first"||this.parser.peek()?.value==="not_first"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="not_last"||this.parser.peek()?.value==="only_one")&&(e.listMode=this.parser.consume().value),this.parser.peek()?.value==="as"&&(this.parser.consume("Symbol","as"),e.variable=this.parser.consume().value),this.parser.peek()?.value==="log"&&(this.parser.consume("Symbol","log"),e.logMessage=this.parser.consume().value),this.parser.peek()?.value==="where"){this.parser.consume("Symbol","where");let i=this.parser.consumeAndParse(y.Arrow);e.condition=i.toString()}if(this.parser.peek()?.value==="check"){this.parser.consume("Symbol","check");let i=this.parser.consumeAndParse(y.Arrow);e.check=i.toString()}return e}parseRuleTargets(){let e=[this.parseRuleTarget()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleTarget());return e}parseRuleTarget(){let e={},n=this.parseRuleContext().split(".");return e.contextType="variable",e.context=n[0],e.element=n[1],this.parser.peek()?.value==="="&&(this.parser.consume("="),this.parseRuleTargetTransform(e)),this.parser.peek()?.value==="as"&&(this.parser.consume("Symbol","as"),e.variable=this.parser.consume().value),this.parser.peek()?.value==="share"&&(this.parser.consume("Symbol","share"),e.listMode=["share"],this.parser.consume("Symbol")),(this.parser.peek()?.value==="first"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="collate")&&(e.listMode=[this.parser.consume().value]),e}parseRuleTargetTransform(e){let t=this.parser.consumeAndParse(y.As);t instanceof H?(e.transform=t.name,e.parameter=t.args?.map(ao)):t instanceof _||t instanceof U?(e.transform="copy",e.parameter=[ao(t)]):(e.transform="evaluate",e.parameter=[{valueString:t.toString()}])}parseRuleContext(){let e=this.parser.consume().value;for(;this.parser.peek()?.value===".";)this.parser.consume("."),e+="."+this.parser.consume().value;return e}parseRuleDependents(){let e=this.parser.consumeAndParse(y.Arrow);return[{name:e.name,variable:e.args.map(t=>t.name)}]}parseConceptMap(){this.parser.consume("Symbol","conceptmap");let e={resourceType:"ConceptMap",status:"active"};e.url=this.parser.consume("String").value,this.parser.consume("{");let t={},n=this.parser.peek()?.value;for(;n!=="}";)n==="prefix"?this.parseConceptMapPrefix(t):this.parseConceptMapRule(e,t),n=this.parser.peek()?.value;this.parser.consume("}"),this.structureMap.contained||(this.structureMap.contained=[]),this.structureMap.contained.push(e)}parseConceptMapPrefix(e){this.parser.consume("Symbol","prefix");let t=this.parser.consume().value;this.parser.consume("=");let n=this.parser.consume().value;e[t]=n}parseConceptMapRule(e,t){let n=this.parser.consume().value,i=t[n];this.parser.consume(":");let o=this.parser.consume().value,s=Gc[this.parser.consume().value],a=this.parser.consume().value,c=t[a];this.parser.consume(":");let u=this.parser.consume().value,p=e?.group?.find(m=>m.source===i&&m.target===c);p||(p={source:i,target:c,element:[]},e.group||(e.group=[]),e.group.push(p)),p.element||(p.element=[]),p.element.push({code:o,target:[{code:u,equivalence:s}]})}};function ao(r){if(r instanceof U)return{valueId:r.name};if(r instanceof _)return Hc(r);throw new Error(`Unknown parameter atom type: ${r.constructor.name} (${r.toString()})`)}function Hc(r){switch(r.value.type){case"boolean":return{valueBoolean:r.value.value};case"decimal":return{valueDecimal:r.value.value};case"integer":return{valueInteger:r.value.value};case"dateTime":case"string":return{valueString:r.value.value};default:throw new Error("Unknown target literal type: "+r.value.type)}}var Qc=De().registerInfix("->",{precedence:y.Arrow}).registerInfix(";",{precedence:y.Semicolon});function Kc(r){let e=Qc.construct(so(r));return e.removeComments(),new An(e).parse()}function zc(r,e,t){return Jc({root:r,loader:t},r,e)}function Jc(r,e,t){return Yc(r,e),uo(r,e),In(r,e.group[0],t)}function Yc(r,e){if(r.loader&&e.import)for(let t of e.import){let n=r.loader(t);for(let i of n)uo(r,i)}}function uo(r,e){if(e.group)for(let t of e.group)mr(r,t.name,{type:"StructureMapGroup",value:t})}function In(r,e,t){let n=[],i=[];for(let u of e.input)u.mode==="source"&&n.push(u),u.mode==="target"&&i.push(u);if(n.length===0)throw new Error("Missing source definitions");if(i.length===0)throw new Error("Missing target definitions");if(t.length<n.length)throw new Error(`Not enough arguments (got ${t.length}, min ${n.length})`);if(t.length>n.length+i.length)throw new Error(`Too many arguments (got ${t.length}, max ${n.length+i.length})`);let o={},s=[],a=0;for(let u of n)Ct(o,u.name,t[a++]);for(let u of i){let p=t[a++]??{type:u.type??"BackboneElement",value:{}};Ct(o,u.name,p),s.push(p)}let c={root:r.root,parent:r,variables:o};if(e.rule)for(let u of e.rule)lo(c,u);return s}function lo(r,e){e.source&&po(r,e,0)}function po(r,e,t){let n=e.source[t];for(let i of tu(r,n))mr(r,"_",i),n.variable&&mr(r,n.variable,i),t<e.source.length-1?po(r,e,t+1):Zc(r,e)}function Zc(r,e){if(!Xc(r,e)){if(e.target)for(let t of e.target)fo(r,t);if(e.rule)for(let t of e.rule)lo(r,t);if(e.dependent)for(let t of e.dependent)uu(r,t)}}function Xc(r,e){if(!e.target||e.target.length!==1||e.target[0].transform||e.rule||e.dependent)return!1;let t=ie(r,"_");if(Array.isArray(t)&&(t=t[0]),!t)return!1;let n=eu(r,e);if(!n)return fo(r,{...e.target[0],transform:"copy",parameter:[{valueId:"_"}]}),!0;let i=e.target[0],o=ie(r,i.context),s=o.value[i.element],a=ho(o,i.element)||Array.isArray(s),c={root:r.root,parent:r,variables:{}},u=In(c,n,[t]);return mo(r,i,o,u,a,s),!0}function eu(r,e){let t=ie(r,"_");if(Array.isArray(t)&&(t=t[0]),!t)return;let n=t.type;n.includes("/")&&(n=n.split("/").pop());let i=r;for(;i;){if(i.variables)for(let o of Object.values(i.variables)){let s=On(o);for(let a of s)if(a.type==="StructureMapGroup"){let c=a.value;if((c.typeMode==="types"||c.typeMode==="type-and-types")&&c.input.length===2&&c.input[0].mode==="source"&&c.input[0].type===n&&c.input[1].mode==="target")return c}}i=i.parent}}function tu(r,e){let t=ie(r,e.context);if(!t)return[];let n=e.element;if(!n)return[t];let i=A(n,[t]);if(!i||i.length===0)return[];if(e.condition&&!co(t,{[e.variable]:i[0]},e.condition))return[];if(e.check&&!co(t,{[e.variable]:i[0]},e.check))throw new Error("Check failed: "+e.check);return e.listMode&&(i=ru(e,i)),i}function co(r,e,t){return N(A(t,[r],e))}function ru(r,e){switch(r.listMode){case"first":return[e[0]];case"not_first":return e.slice(1);case"last":return[e[e.length-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 fo(r,e){let t=ie(r,e.context);if(!t)throw new Error("Target not found: "+e.context);let n=t.value[e.element],i,o=ho(t,e.element)||Array.isArray(n);if(e.transform)switch(e.transform){case"append":i=nu(r,e);break;case"copy":i=iu(r,e);break;case"create":i=ou(r,e);break;case"evaluate":i=su(r,e);break;case"translate":i=au(r,e);break;case"truncate":i=cu(r,e);break;case"uuid":i=[{type:"string",value:me()}];break;default:throw new Error(`Unsupported transform: ${e.transform}`)}else{let s=yo(t,e.element)?.type,a=s?.length===1?s[0].code:void 0;o||n===void 0?i=[a?{type:a,value:{}}:x({})]:i=[a?{type:a,value:n}:x(n)]}mo(r,e,t,i,o,n)}function mo(r,e,t,n,i,o){if(n.length!==0){if(i){o||(o=[],Ct(t.value,e.element,o));for(let s of n)o.push(s.value)}else Ct(t.value,e.element,n[0].value);e.variable&&mr(r,e.variable,lu(n))}}function ho(r,e){return yo(r,e)?.isArray}function yo(r,e){return we(r.type)?.elements?.[e]}function nu(r,e){let t=he(r,e.parameter?.[0])?.[0]?.value,n=he(r,e.parameter?.[1])?.[0]?.value;return[{type:"string",value:(t??"").toString()+(n??"").toString()}]}function iu(r,e){return e.parameter.flatMap(t=>he(r,t))}function ou(r,e){let t={};return e.parameter&&e.parameter.length>0&&(t.resourceType=he(r,e.parameter?.[0])?.[0]?.value),[x(t)]}function su(r,e){let n=he(r,e.parameter?.[0])[0].value;return A(n,[],go(r))}function au(r,e){let t=e.parameter.flatMap(a=>he(r,a)),n=t[0].value,i=t[1].value,o=r.root.contained?.find(a=>a.resourceType==="ConceptMap"&&a.url===i),s=wn(o,{system:o.group?.[0]?.source,code:n});return[x(s.match?.[0]?.concept?.code)]}function cu(r,e){let t=he(r,e.parameter?.[0])?.[0],n=he(r,e.parameter?.[1])?.[0]?.value;return t.type==="string"?[{type:"string",value:t.value.substring(0,n)}]:[t]}function uu(r,e){let t=ie(r,e.name);if(!t)throw new Error("Dependent group not found: "+e.name);let n=e.variable,i=[];for(let s of n){let a=ie(r,s);if(!a)throw new Error("Dependent variable not found: "+s);i.push(a)}let o={root:r.root,parent:r,variables:{}};In(o,t.value,i)}function he(r,e){let n=C({type:"StructureMapGroupRuleTargetParameter",value:e},"value");if(!n)throw new Error("Missing target parameter: "+JSON.stringify(e));if(n=On(n),n.length===1&&n[0].type==="id"){let i=ie(r,n[0].value);if(!i)throw new Error("Variable not found: "+n[0].value);return On(i)}return n}function ie(r,e){let t=r.variables?.[e];if(t)return t;if(r.parent)return ie(r.parent,e)}function go(r,e={}){if(r.parent&&go(r.parent,e),r.variables)for(let[t,n]of Object.entries(r.variables))e[t]=n,e["%"+t]=n;return e}function mr(r,e,t){r.variables||(r.variables={}),Ct(r.variables,e,t)}function Ct(r,e,t){if(e==="__proto__"||e==="constructor"||e==="prototype")throw new Error("Invalid key: "+e);r[e]=t}function On(r){return Array.isArray(r)?r:[r]}function lu(r){return r.length===1?r[0]:r}var pu=[...ft,"eq","ne","co"];function xo(r){return new re(r,dt,pu,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var wt=class{constructor(e,t,n){this.path=e;this.operator=t;this.value=n}},At=class{constructor(e){this.child=e}},Ot=class{constructor(e,t,n){this.keyword=e;this.left=t;this.right=n}};var du={eq:"eq",ne:"ne",co:"contains",sw:void 0,ew:void 0,gt:"gt",lt:"lt",ge:"ge",le:"le",ap:"ap",sa:"sa",eb:"eb",pr:"present",po:void 0,ss:void 0,sb:void 0,in:"in",ni:"not-in",re:"eq",identifier:"identifier"};function fu(r){let e=du[r];if(!e)throw new f(R("Invalid operator: "+r));return e}var kn=class{constructor(e){this.parser=e}parse(){let e;this.parser.peek()?.value==="("?(this.parser.consume("("),e=this.parse(),this.parser.consume(")")):this.parser.peek()?.value==="not"?(this.parser.consume("Symbol","not"),this.parser.consume("("),e=new At(this.parse()),this.parser.consume(")")):e=new wt(this.parser.consume("Symbol").value,fu(this.parser.consume("Symbol").value),this.parser.consume().value);let t=this.parser.peek()?.value;return t==="and"||t==="or"?(this.parser.consume("Symbol",t),new Ot(t,e,this.parse())):e}},mu=De();function hu(r){let e=mu.construct(xo(r));return e.removeComments(),new kn(e).parse()}var oe=class{constructor(e="\r",t="|",n="^",i="~",o="\\",s="&"){this.segmentSeparator=e;this.fieldSeparator=t;this.componentSeparator=n;this.repetitionSeparator=i;this.escapeCharacter=o;this.subcomponentSeparator=s}getMsh1(){return this.fieldSeparator}getMsh2(){return this.componentSeparator+this.repetitionSeparator+this.escapeCharacter+this.subcomponentSeparator}},Vn=class r{constructor(e,t=new oe){this.context=t,this.segments=e}get header(){return this.segments[0]}get(e){return this.getSegment(e)}getAll(e){return this.getAllSegments(e)}getSegment(e){return typeof e=="number"?this.segments[e]:this.segments.find(t=>t.name===e)}getAllSegments(e){return this.segments.filter(t=>t.name===e)}toString(){return this.segments.map(e=>e.toString()).join(this.context.segmentSeparator)}buildAck(){let e=new Date,t=this.getSegment("MSH"),n=t?.getField(3)?.toString()??"",i=t?.getField(4)?.toString()??"",o=t?.getField(5)?.toString()??"",s=t?.getField(6)?.toString()??"",a=t?.getField(10)?.toString()??"",c=t?.getField(12)?.toString()??"2.5.1";return new r([new _e(["MSH",this.context.getMsh2(),o,s,n,i,vo(e),"",this.buildAckMessageType(t),e.getTime().toString(),"P",c],this.context),new _e(["MSA","AA",a,"OK"],this.context)])}buildAckMessageType(e){let t=e?.getField(9),n=t?.getComponent(2),i=t?.getComponent(3),o="ACK";return n&&i?o=`ACK^${n}^ACK`:n&&(o=`ACK^${n}`),o}static parse(e){if(!e.startsWith("MSH")){let n=new Error("Invalid HL7 message");throw n.type="entity.parse.failed",n}let t=new oe("\r",e.charAt(3),e.charAt(4),e.charAt(5),e.charAt(6),e.charAt(7));return new r(e.split(/[\r\n]+/).map(n=>_e.parse(n,t)),t)}},_e=class r{constructor(e,t=new oe){this.context=t,Jr(e)?this.fields=e.map(n=>Pe.parse(n,t)):this.fields=e,this.name=this.fields[0].components[0][0]}get(e){return this.fields[e]}getField(e){if(this.name==="MSH"){if(e===1)return new Pe([[this.context.getMsh1()]],this.context);if(e===2)return new Pe([[this.context.getMsh2()]],this.context);if(e>2)return this.fields[e-1]}return this.fields[e]}getComponent(e,t,n,i=0){return this.getField(e)?.getComponent(t,n,i)??""}toString(){return this.fields.map(e=>e.toString()).join(this.context.fieldSeparator)}static parse(e,t=new oe){return new r(e.split(t.fieldSeparator).map(n=>Pe.parse(n,t)),t)}},Pe=class r{constructor(e,t=new oe){this.context=t,this.components=e}get(e,t,n=0){return this.getComponent(e+1,t,n)}getComponent(e,t,n=0){let i=this.components[n][e-1]??"";return t!==void 0&&(i=i.split(this.context.subcomponentSeparator)[t]??""),i}toString(){return this.components.map(e=>e.join(this.context.componentSeparator)).join(this.context.repetitionSeparator)}static parse(e,t=new oe){return new r(e.split(t.repetitionSeparator).map(n=>n.split(t.componentSeparator)),t)}};function yu(r,e){if(!r)return;let t=Re(r.slice(0,4),0),n=Re(r.slice(4,6),1)-1,i=Re(r.slice(6,8),1),o=Re(r.slice(8,10),0),s=Re(r.slice(10,12),0),a=Re(r.slice(12,14),0),c=0;r.includes(".")&&(c=Re(r.slice(15,19),0));let u=new Date(Date.UTC(t,n,i,o,s,a,c)),p=gu(r,e?.tzOffset);return p!==0&&(u=new Date(u.getTime()-p)),u.toISOString()}function Re(r,e){let t=parseInt(r,10);return isNaN(t)?e:t}function gu(r,e){let t=e,n=r.indexOf("+");n!==-1&&(t=r.slice(n));let i=r.indexOf("-");if(i!==-1&&(t=r.slice(i)),!t)return 0;let o=t.startsWith("-")?-1:1;t=t.slice(1).replace(":","");let s=parseInt(t.slice(0,2),10),a=parseInt(t.slice(2,4),10);return o*(s*60*60*1e3+a*60*1e3)}function vo(r){let e=r instanceof Date?r:new Date(r),n=e.toISOString().replace(/[-:T]/g,"").replace(/(\.\d+)?Z$/,""),i=e.getUTCMilliseconds();return i>0&&(n+="."+i.toString()),n}var hr=(o=>(o[o.NONE=0]="NONE",o[o.ERROR=1]="ERROR",o[o.WARN=2]="WARN",o[o.INFO=3]="INFO",o[o.DEBUG=4]="DEBUG",o))(hr||{}),Dn=class r{constructor(e,t={},n=3,i){this.write=e;this.metadata=t;this.level=n;this.options=i;i?.prefix&&(this.prefix=i.prefix),this.error=this.error.bind(this),this.warn=this.warn.bind(this),this.info=this.info.bind(this),this.debug=this.debug.bind(this),this.log=this.log.bind(this)}clone(e){let t=this.getLoggerConfig(),n=e?{...t,override:e,options:{...t.options,...e.options}}:t;return new r(n.write,n.metadata,n.level,n.options)}getLoggerConfig(){let{write:e,metadata:t,level:n,options:i}=this;return{write:e,metadata:t,level:n,options:i}}error(e,t){this.log(1,e,t)}warn(e,t){this.log(2,e,t)}info(e,t){this.log(3,e,t)}debug(e,t){this.log(4,e,t)}log(e,t,n){e>this.level||(n instanceof Error&&(n={error:n.toString(),stack:n.stack?.split(`
|
|
43
|
-
`)}),this.write(JSON.stringify({level:hr[e],timestamp:new Date().toISOString(),msg:this.prefix?`${this.prefix}${t}`:t,...n,...this.metadata})))}};function xu(r){let e=hr[r.toUpperCase()];if(e===void 0)throw new Error(`Invalid log level: ${r}`);return e}function vu(r){if(!r)throw new f(h("Resource type is null"));if(!Nr(r))throw new f(h("Unknown resource type"))}function Mn(r,e,t){r===null?t.push(v(e,"Invalid null value")):Array.isArray(r)?Tu(r,e,t):typeof r=="object"&&Su(r,e,t)}function Tu(r,e,t){for(let n=0;n<r.length;n++)r[n]===void 0?t.push(v(`${e}[${n}]`,"Invalid undefined value")):Mn(r[n],`${e}[${n}]`,t)}function Su(r,e,t){for(let[n,i]of Object.entries(r))Mn(i,`${e}${e?".":""}${n}`,t)}function Eu(r){let e=[];return new Promise((t,n)=>{r.on("data",i=>e.push(Buffer.from(i))),r.on("error",i=>{r.destroy(),n(i)}),r.on("end",()=>{t(Buffer.concat(e))}),r.on("close",()=>{r.destroy()})})}function bu(r,e){let t=[];for(let n of e)t.push(...Ru(r,n));return t}function Ru(r,e){if(!r.resource)throw new Error("Resource type is required");if(r.resource!==e.resourceType)return[];let t={};if(r.constant)for(let i of r.constant){let o={type:"ViewDefinitionConstant",value:i};t["%"+i.name]=C(o,"value")}let n=x(e);if(r.where)for(let i of r.where){let o=A(i.path,[n],t);if(o.length!==1)return[];if(o[0].type!=="boolean")throw new Error("WHERE clause must evaluate to a boolean");if(!o[0].value)return[]}return Nn(r,n,t)}function Nn(r,e,t){let n=[],i;r.forEach?i=A(r.forEach,[e],t):r.forEachOrNull?i=A(r.forEachOrNull,[e],t):i=[e];for(let o of i){let s=[];for(let a of r.column??[]){let c=A(a.path,[o],t),u;if(c.length===0)u={[a.name]:null};else if(a.collection)u={[a.name]:c.map(p=>p.value)};else if(c.length===1)u={[a.name]:c[0].value};else throw new Error("Multiple values found but not expected for column");s.push([u])}for(let a of r.select??[]){let c=Nn(a,o,t);s.push(c)}if(r.unionAll){let a=[];for(let c of r.unionAll)for(let u of Nn(c,o,t))a.push(u);s.push(a)}n.push(...Pu(s))}if(i.length===0&&r.forEachOrNull){let o={};for(let s of r.column??[])o[s.name]=null;n.push(o)}return n}function Pu(r){if(r.length===0)return[];let e=r[0];for(let t=1;t<r.length;t++)e=Cu(e,r[t]);return e}function Cu(r,e){let t=[];for(let n of r)for(let i of e)t.push(wu(n,i));return t}function wu(r,e){let t={};return Object.assign(t,r),Object.assign(t,e),t}0&&(module.exports={AccessPolicyInteraction,AndAtom,ArithemticOperatorAtom,AsAtom,BooleanInfixOperatorAtom,CPT,ClientStorage,ConcatAtom,ContainsAtom,ContentType,DEFAULT_ACCEPT,DEFAULT_MAX_SEARCH_COUNT,DEFAULT_SEARCH_COUNT,DotAtom,EmptySetAtom,EqualsAtom,EquivalentAtom,EventTarget,ExternalSecretSystems,FHIRCAST_EVENT_NAMES,FHIRCAST_EVENT_RESOURCES,FHIRCAST_EVENT_VERSION_REQUIRED,FHIRCAST_RESOURCE_TYPES,FhirFilterComparison,FhirFilterConnective,FhirFilterNegation,FhirPathAtom,FhircastConnection,FunctionAtom,HTTP_HL7_ORG,HTTP_TERMINOLOGY_HL7_ORG,Hl7Context,Hl7Field,Hl7Message,Hl7Segment,ICD10,ImpliesAtom,InAtom,IndexerAtom,InfixOperatorAtom,IsAtom,LOINC,LRUCache,LiteralAtom,LogLevel,Logger,MEDPLUM_CLI_CLIENT_ID,MEDPLUM_VERSION,MedplumClient,MedplumKeyValueClient,MemoryStorage,MockAsyncClientStorage,NotEqualsAtom,NotEquivalentAtom,OAuthClientAssertionType,OAuthGrantType,OAuthTokenAuthMethod,OAuthTokenType,OperationOutcomeError,Operator,OperatorPrecedence,OrAtom,Parser,ParserBuilder,PrefixOperatorAtom,PropertyType,RXNORM,ReadablePromise,RobustWebSocket,SNOMED,SearchParameterType,SubscriptionEmitter,SubscriptionManager,SymbolAtom,Tokenizer,TypedEventTarget,UCUM,UnaryOperatorAtom,UnionAtom,VALID_HOSTNAME_REGEX,XorAtom,accepted,addProfileToResource,allOk,append,applyDefaultValuesToElement,applyDefaultValuesToElementWithVisitor,applyDefaultValuesToResource,applyFixedOrPatternValue,arrayBufferToBase64,arrayBufferToHex,arrayify,assertContextVersionOptional,assertOk,badRequest,booleanToTypedValue,buildElementsContext,buildTypeName,calculateAge,calculateAgeString,canReadResourceType,canWriteResource,canWriteResourceType,capitalize,checkForNull,compressElement,concatUrls,conceptMapTranslate,conflict,convertContainedResourcesToBundle,convertToTransactionBundle,crawlResource,createConstraintIssue,createFhircastMessagePayload,createOperationOutcomeIssue,createProcessingIssue,createReference,createStructureIssue,created,decodeBase64,deepClone,deepEquals,deepIncludes,encodeBase64,encryptSHA256,ensureNoLeadingSlash,ensureTrailingSlash,evalFhirPath,evalFhirPathTyped,evalSqlOnFhir,fhirPathArrayEquals,fhirPathArrayEquivalent,fhirPathArrayNotEquals,fhirPathEquals,fhirPathEquivalent,fhirPathIs,fhirPathNot,fhirTypeToJsType,findObservationInterval,findObservationReferenceRange,findResourceByCode,forbidden,formatAddress,formatCodeableConcept,formatCoding,formatDate,formatDateTime,formatFamilyName,formatGivenName,formatHl7DateTime,formatHumanName,formatMoney,formatObservationValue,formatPeriod,formatQuantity,formatRange,formatSearchQuery,formatTime,formatTiming,generateId,getAllDataTypes,getAllQuestionnaireAnswers,getCodeBySystem,getDataType,getDateProperty,getDefaultValuesForNewSliceEntry,getDisplayString,getElementDefinition,getElementDefinitionFromElements,getElementDefinitionTypeName,getExpressionForResourceType,getExpressionsForResourceType,getExtension,getExtensionValue,getIdentifier,getImageSrc,getNestedProperty,getPathDifference,getPathDisplayName,getPropertyDisplayName,getQueryString,getQuestionnaireAnswers,getRandomString,getReferenceString,getResourceTypes,getSearchParameter,getSearchParameterDetails,getSearchParameters,getStatus,getTypedPropertyValue,getTypedPropertyValueWithPath,getTypedPropertyValueWithSchema,getValueSliceName,getWebSocketUrl,globalSchema,gone,indexSearchParameter,indexSearchParameterBundle,indexStructureDefinitionBundle,inflateBaseSchema,inflateElement,initFhirPathParserBuilder,isAccepted,isCodeableConcept,isCoding,isCompletedSubscriptionRequest,isComplexTypeCode,isContextVersionRequired,isCreated,isDataTypeLoaded,isDateString,isDateTimeString,isEmpty,isFhirCriteriaMet,isFhircastResourceType,isGone,isJwt,isLowerCase,isMedplumAccessToken,isNotFound,isObject,isOk,isOperationOutcome,isPeriod,isPopulated,isProfileLoaded,isProfileResource,isQuantity,isQuantityEquivalent,isReference,isResource,isResourceType,isResourceTypeSchema,isSliceDefinitionWithTypes,isString,isStringArray,isTextObject,isUUID,isValidDate,isValidHostname,lazy,loadDataType,mapByIdentifier,
|
|
43
|
+
`)}),this.write(JSON.stringify({level:hr[e],timestamp:new Date().toISOString(),msg:this.prefix?`${this.prefix}${t}`:t,...n,...this.metadata})))}};function xu(r){let e=hr[r.toUpperCase()];if(e===void 0)throw new Error(`Invalid log level: ${r}`);return e}function vu(r){if(!r)throw new f(h("Resource type is null"));if(!Nr(r))throw new f(h("Unknown resource type"))}function Mn(r,e,t){r===null?t.push(v(e,"Invalid null value")):Array.isArray(r)?Tu(r,e,t):typeof r=="object"&&Su(r,e,t)}function Tu(r,e,t){for(let n=0;n<r.length;n++)r[n]===void 0?t.push(v(`${e}[${n}]`,"Invalid undefined value")):Mn(r[n],`${e}[${n}]`,t)}function Su(r,e,t){for(let[n,i]of Object.entries(r))Mn(i,`${e}${e?".":""}${n}`,t)}function Eu(r){let e=[];return new Promise((t,n)=>{r.on("data",i=>e.push(Buffer.from(i))),r.on("error",i=>{r.destroy(),n(i)}),r.on("end",()=>{t(Buffer.concat(e))}),r.on("close",()=>{r.destroy()})})}function bu(r,e){let t=[];for(let n of e)t.push(...Ru(r,n));return t}function Ru(r,e){if(!r.resource)throw new Error("Resource type is required");if(r.resource!==e.resourceType)return[];let t={};if(r.constant)for(let i of r.constant){let o={type:"ViewDefinitionConstant",value:i};t["%"+i.name]=C(o,"value")}let n=x(e);if(r.where)for(let i of r.where){let o=A(i.path,[n],t);if(o.length!==1)return[];if(o[0].type!=="boolean")throw new Error("WHERE clause must evaluate to a boolean");if(!o[0].value)return[]}return Nn(r,n,t)}function Nn(r,e,t){let n=[],i;r.forEach?i=A(r.forEach,[e],t):r.forEachOrNull?i=A(r.forEachOrNull,[e],t):i=[e];for(let o of i){let s=[];for(let a of r.column??[]){let c=A(a.path,[o],t),u;if(c.length===0)u={[a.name]:null};else if(a.collection)u={[a.name]:c.map(p=>p.value)};else if(c.length===1)u={[a.name]:c[0].value};else throw new Error("Multiple values found but not expected for column");s.push([u])}for(let a of r.select??[]){let c=Nn(a,o,t);s.push(c)}if(r.unionAll){let a=[];for(let c of r.unionAll)for(let u of Nn(c,o,t))a.push(u);s.push(a)}n.push(...Pu(s))}if(i.length===0&&r.forEachOrNull){let o={};for(let s of r.column??[])o[s.name]=null;n.push(o)}return n}function Pu(r){if(r.length===0)return[];let e=r[0];for(let t=1;t<r.length;t++)e=Cu(e,r[t]);return e}function Cu(r,e){let t=[];for(let n of r)for(let i of e)t.push(wu(n,i));return t}function wu(r,e){let t={};return Object.assign(t,r),Object.assign(t,e),t}0&&(module.exports={AccessPolicyInteraction,AndAtom,ArithemticOperatorAtom,AsAtom,BooleanInfixOperatorAtom,CPT,ClientStorage,ConcatAtom,ContainsAtom,ContentType,DEFAULT_ACCEPT,DEFAULT_MAX_SEARCH_COUNT,DEFAULT_SEARCH_COUNT,DotAtom,EmptySetAtom,EqualsAtom,EquivalentAtom,EventTarget,ExternalSecretSystems,FHIRCAST_EVENT_NAMES,FHIRCAST_EVENT_RESOURCES,FHIRCAST_EVENT_VERSION_REQUIRED,FHIRCAST_RESOURCE_TYPES,FhirFilterComparison,FhirFilterConnective,FhirFilterNegation,FhirPathAtom,FhircastConnection,FunctionAtom,HTTP_HL7_ORG,HTTP_TERMINOLOGY_HL7_ORG,Hl7Context,Hl7Field,Hl7Message,Hl7Segment,ICD10,ImpliesAtom,InAtom,IndexerAtom,InfixOperatorAtom,IsAtom,LOINC,LRUCache,LiteralAtom,LogLevel,Logger,MEDPLUM_CLI_CLIENT_ID,MEDPLUM_VERSION,MedplumClient,MedplumKeyValueClient,MemoryStorage,MockAsyncClientStorage,NotEqualsAtom,NotEquivalentAtom,OAuthClientAssertionType,OAuthGrantType,OAuthTokenAuthMethod,OAuthTokenType,OperationOutcomeError,Operator,OperatorPrecedence,OrAtom,Parser,ParserBuilder,PrefixOperatorAtom,PropertyType,RXNORM,ReadablePromise,RobustWebSocket,SNOMED,SearchParameterType,SubscriptionEmitter,SubscriptionManager,SymbolAtom,Tokenizer,TypedEventTarget,UCUM,UnaryOperatorAtom,UnionAtom,VALID_HOSTNAME_REGEX,XorAtom,accepted,addProfileToResource,allOk,append,applyDefaultValuesToElement,applyDefaultValuesToElementWithVisitor,applyDefaultValuesToResource,applyFixedOrPatternValue,arrayBufferToBase64,arrayBufferToHex,arrayify,assertContextVersionOptional,assertOk,badRequest,booleanToTypedValue,buildElementsContext,buildTypeName,calculateAge,calculateAgeString,canReadResourceType,canWriteResource,canWriteResourceType,capitalize,checkForNull,compressElement,concatUrls,conceptMapTranslate,conflict,convertContainedResourcesToBundle,convertToTransactionBundle,crawlResource,createConstraintIssue,createFhircastMessagePayload,createOperationOutcomeIssue,createProcessingIssue,createReference,createStructureIssue,created,decodeBase64,deepClone,deepEquals,deepIncludes,encodeBase64,encryptSHA256,ensureNoLeadingSlash,ensureTrailingSlash,evalFhirPath,evalFhirPathTyped,evalSqlOnFhir,fhirPathArrayEquals,fhirPathArrayEquivalent,fhirPathArrayNotEquals,fhirPathEquals,fhirPathEquivalent,fhirPathIs,fhirPathNot,fhirTypeToJsType,findObservationInterval,findObservationReferenceRange,findResourceByCode,flatMapFilter,forbidden,formatAddress,formatCodeableConcept,formatCoding,formatDate,formatDateTime,formatFamilyName,formatGivenName,formatHl7DateTime,formatHumanName,formatMoney,formatObservationValue,formatPeriod,formatQuantity,formatRange,formatSearchQuery,formatTime,formatTiming,generateId,getAllDataTypes,getAllQuestionnaireAnswers,getCodeBySystem,getDataType,getDateProperty,getDefaultValuesForNewSliceEntry,getDisplayString,getElementDefinition,getElementDefinitionFromElements,getElementDefinitionTypeName,getExpressionForResourceType,getExpressionsForResourceType,getExtension,getExtensionValue,getIdentifier,getImageSrc,getNestedProperty,getPathDifference,getPathDisplayName,getPropertyDisplayName,getQueryString,getQuestionnaireAnswers,getRandomString,getReferenceString,getResourceTypes,getSearchParameter,getSearchParameterDetails,getSearchParameters,getStatus,getTypedPropertyValue,getTypedPropertyValueWithPath,getTypedPropertyValueWithSchema,getValueSliceName,getWebSocketUrl,globalSchema,gone,indexSearchParameter,indexSearchParameterBundle,indexStructureDefinitionBundle,inflateBaseSchema,inflateElement,initFhirPathParserBuilder,isAccepted,isCodeableConcept,isCoding,isCompletedSubscriptionRequest,isComplexTypeCode,isContextVersionRequired,isCreated,isDataTypeLoaded,isDateString,isDateTimeString,isEmpty,isFhirCriteriaMet,isFhircastResourceType,isGone,isJwt,isLowerCase,isMedplumAccessToken,isNotFound,isObject,isOk,isOperationOutcome,isPeriod,isPopulated,isProfileLoaded,isProfileResource,isQuantity,isQuantityEquivalent,isReference,isResource,isResourceType,isResourceTypeSchema,isSliceDefinitionWithTypes,isString,isStringArray,isTextObject,isUUID,isValidDate,isValidHostname,lazy,loadDataType,mapByIdentifier,matchDiscriminant,matchesAccessPolicy,matchesRange,matchesSearchRequest,multipleMatches,normalizeCreateBinaryOptions,normalizeCreatePdfOptions,normalizeErrorString,normalizeOperationOutcome,notFound,notModified,operationOutcomeIssueToString,operationOutcomeToString,parseCriteriaAsSearchRequest,parseFhirPath,parseFilterParameter,parseHl7DateTime,parseJWTPayload,parseLogLevel,parseMappingLanguage,parseParameter,parseReference,parseSearchDefinition,parseSearchRequest,parseSearchUrl,parseStructureDefinition,parseXFhirQuery,preciseEquals,preciseGreaterThan,preciseGreaterThanOrEquals,preciseLessThan,preciseLessThanOrEquals,preciseRound,preconditionFailed,projectAdminResourceTypes,protectedResourceTypes,removeDuplicates,removeProfileFromResource,reorderBundle,resolveId,resourceMatchesSubscriptionCriteria,satisfiedAccessPolicy,serializeFhircastSubscriptionRequest,serverError,setCodeBySystem,setIdentifier,singleton,sleep,sortStringArray,splitN,splitSearchOnComma,streamToBuffer,stringify,stringifyTypedValue,structureMapTransform,subsetResource,toJsBoolean,toPeriod,toTypedValue,tooManyRequests,tryGetDataType,tryGetJwtExpiration,tryGetProfile,unauthorized,validateFhircastSubscriptionRequest,validateResource,validateResourceType,validateTypedValue,validationError,validationRegexes});
|
|
44
44
|
//# sourceMappingURL=index.cjs.map
|