@medplum/core 2.1.3 → 2.1.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 +15 -6
- package/dist/cjs/index.cjs.map +4 -4
- package/dist/esm/index.mjs +15 -6
- package/dist/esm/index.mjs.map +4 -4
- package/dist/types/base-schema.d.ts +7 -0
- package/dist/types/client.d.ts +41 -13
- package/dist/types/constants.d.ts +6 -0
- package/dist/types/eventtarget.d.ts +6 -0
- package/dist/types/fhircast/index.d.ts +115 -0
- package/dist/types/fhircast/test-utils.d.ts +2 -0
- package/dist/types/fhirmapper/tokenize.d.ts +1 -1
- package/dist/types/fhirpath/atoms.d.ts +1 -1
- package/dist/types/fhirpath/functions.d.ts +1 -1
- package/dist/types/fhirpath/parse.d.ts +1 -1
- package/dist/types/fhirpath/tokenize.d.ts +1 -1
- package/dist/types/filter/tokenize.d.ts +1 -1
- package/dist/types/index.d.ts +9 -4
- package/dist/types/schema.d.ts +1 -104
- package/dist/types/search/details.d.ts +4 -3
- package/dist/types/search/search.d.ts +11 -0
- package/dist/types/types.d.ts +80 -92
- package/dist/types/typeschema/types.d.ts +32 -10
- package/dist/types/utils.d.ts +19 -1
- package/package.json +3 -2
- package/dist/types/fhirlexer/index.d.ts +0 -2
- package/dist/types/fhirmapper/index.d.ts +0 -1
- package/dist/types/fhirpath/index.d.ts +0 -4
- package/dist/types/filter/index.d.ts +0 -2
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,23 +1,32 @@
|
|
|
1
|
-
"use strict";var Rt=Object.defineProperty;var An=Object.getOwnPropertyDescriptor;var En=Object.getOwnPropertyNames;var Pn=Object.prototype.hasOwnProperty;var Cn=(r,e)=>{for(var t in e)Rt(r,t,{get:e[t],enumerable:!0})},wn=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of En(e))!Pn.call(r,i)&&i!==t&&Rt(r,i,{get:()=>e[i],enumerable:!(n=An(e,i))||n.enumerable});return r};var In=r=>wn(Rt({},"__esModule",{value:!0}),r);var Ts={};Cn(Ts,{AccessPolicyInteraction:()=>Xr,AndAtom:()=>Le,ArithemticOperatorAtom:()=>P,AsAtom:()=>K,BooleanInfixOperatorAtom:()=>v,ClientStorage:()=>je,ConcatAtom:()=>we,ContainsAtom:()=>Ie,ContentType:()=>X,DEFAULT_SEARCH_COUNT:()=>$i,DotAtom:()=>$,EmptySetAtom:()=>Pe,EqualsAtom:()=>De,EquivalentAtom:()=>Ve,EventTarget:()=>qe,FHIRPATH_KEYWORDS:()=>ue,FHIRPATH_OPERATORS:()=>de,FhirFilterComparison:()=>$e,FhirFilterConnective:()=>He,FhirFilterNegation:()=>Qe,FhirPathAtom:()=>Ee,FhirSchemaValidator:()=>Tt,FunctionAtom:()=>N,Hl7Context:()=>Q,Hl7Field:()=>ne,Hl7Message:()=>dr,Hl7Segment:()=>pe,ImpliesAtom:()=>Ne,InAtom:()=>ke,IndexerAtom:()=>Y,InfixOperatorAtom:()=>q,IsAtom:()=>J,LRUCache:()=>Fe,LiteralAtom:()=>I,MEDPLUM_VERSION:()=>Mo,MedplumClient:()=>ar,MemoryStorage:()=>ft,NotEqualsAtom:()=>Oe,NotEquivalentAtom:()=>Ue,OAuthClientAssertionType:()=>hn,OAuthGrantType:()=>pn,OAuthTokenType:()=>fn,OperationOutcomeError:()=>h,Operator:()=>Br,OperatorPrecedence:()=>p,OrAtom:()=>_e,Parser:()=>nt,ParserBuilder:()=>Re,PrefixOperatorAtom:()=>ve,PropertyType:()=>G,ReadablePromise:()=>C,SearchParameterType:()=>Jt,SymbolAtom:()=>M,Tokenizer:()=>j,UnaryOperatorAtom:()=>Ce,UnionAtom:()=>ee,XorAtom:()=>Me,accepted:()=>Mn,allOk:()=>kn,arrayBufferToBase64:()=>Bt,arrayBufferToHex:()=>Nt,arrayify:()=>Te,assertOk:()=>jn,badRequest:()=>k,booleanToTypedValue:()=>d,buildTypeName:()=>se,calculateAge:()=>ye,calculateAgeString:()=>di,canReadResourceType:()=>wo,canWriteResource:()=>Io,canWriteResourceType:()=>Zr,capitalize:()=>S,checkForNull:()=>vt,convertContainedResourcesToBundle:()=>Uo,convertToTransactionBundle:()=>rn,crawlResource:()=>gt,createConstraintIssue:()=>Dt,createProcessingIssue:()=>Ot,createReference:()=>oe,createStructureIssue:()=>m,created:()=>Dn,decodeBase64:()=>rr,deepClone:()=>Xe,deepEquals:()=>ge,deepIncludes:()=>xe,encodeBase64:()=>nr,encryptSHA256:()=>ir,evalFhirPath:()=>te,evalFhirPathTyped:()=>ct,fhirPathArrayEquals:()=>ot,fhirPathArrayEquivalent:()=>st,fhirPathEquals:()=>Ht,fhirPathEquivalent:()=>Wr,fhirPathIs:()=>be,fhirPathNot:()=>it,fhirTypeToJsType:()=>he,findObservationInterval:()=>bi,findObservationReferenceRange:()=>Ai,findResourceByCode:()=>Oi,forbidden:()=>Un,formatAddress:()=>Qn,formatCodeableConcept:()=>br,formatCoding:()=>Ar,formatDate:()=>Gn,formatDateTime:()=>Ke,formatFamilyName:()=>Wn,formatGivenName:()=>Hn,formatHl7DateTime:()=>gn,formatHumanName:()=>Vt,formatMoney:()=>ti,formatObservationValue:()=>Er,formatPeriod:()=>zn,formatQuantity:()=>W,formatRange:()=>ei,formatSearchQuery:()=>eo,formatTime:()=>Sr,formatTiming:()=>Xn,generateId:()=>lt,getAllQuestionnaireAnswers:()=>pi,getCodeBySystem:()=>Ye,getDataType:()=>ie,getDateProperty:()=>ui,getDisplayString:()=>Ir,getElementDefinition:()=>ae,getElementDefinitionTypeName:()=>z,getExpressionForResourceType:()=>To,getExpressionsForResourceType:()=>Xt,getExtension:()=>hi,getExtensionValue:()=>Lt,getIdentifier:()=>fi,getImageSrc:()=>ci,getNestedProperty:()=>xt,getPropertyDisplayName:()=>Fi,getQuestionnaireAnswers:()=>li,getRandomString:()=>dt,getReferenceString:()=>Ut,getResourceTypeSchema:()=>Ni,getResourceTypes:()=>Mi,getSearchParameterDetails:()=>Yt,getSearchParameters:()=>Bi,getStatus:()=>qn,getTypedPropertyValue:()=>A,globalSchema:()=>y,gone:()=>Ln,indexSearchParameter:()=>tt,indexSearchParameterBundle:()=>_i,indexStructureDefinition:()=>et,indexStructureDefinitionBundle:()=>Vi,initFhirPathParserBuilder:()=>le,isAccepted:()=>Nn,isEmpty:()=>R,isGone:()=>Fn,isJwt:()=>or,isLowerCase:()=>Z,isMedplumAccessToken:()=>sr,isNotFound:()=>Bn,isObject:()=>F,isOk:()=>Ge,isOperationOutcome:()=>me,isPeriod:()=>Gr,isProfileResource:()=>wr,isQuantity:()=>b,isQuantityEquivalent:()=>Wt,isReference:()=>qt,isResource:()=>V,isResourceType:()=>Sn,isResourceTypeSchema:()=>_r,isStringArray:()=>Mt,isUUID:()=>Ri,isValidDate:()=>Je,loadDataTypes:()=>Xo,matchesAccessPolicy:()=>en,matchesRange:()=>Ft,matchesSearchRequest:()=>er,normalizeErrorString:()=>Tr,normalizeOperationOutcome:()=>ze,notFound:()=>Ct,notModified:()=>On,operationOutcomeIssueToString:()=>vr,operationOutcomeToString:()=>It,parseCriteriaAsSearchRequest:()=>Qt,parseFhirPath:()=>at,parseFilterParameter:()=>Ko,parseHl7DateTime:()=>Jo,parseJWTPayload:()=>pt,parseMappingLanguage:()=>Qo,parseReference:()=>oi,parseSearchDefinition:()=>Hi,parseSearchRequest:()=>Qi,parseSearchUrl:()=>$t,parseStructureDefinition:()=>yt,preciseEquals:()=>Ii,preciseGreaterThan:()=>Di,preciseGreaterThanOrEquals:()=>Lr,preciseLessThan:()=>ki,preciseLessThanOrEquals:()=>Ur,preciseRound:()=>wi,projectAdminResourceTypes:()=>Yr,protectedResourceTypes:()=>Jr,removeDuplicates:()=>Se,reorderBundle:()=>nn,resolveId:()=>ii,satisfiedAccessPolicy:()=>ko,serverError:()=>wt,setCodeBySystem:()=>Si,singleton:()=>D,sleep:()=>Ze,streamToBuffer:()=>xs,stringify:()=>_t,subsetResource:()=>Zo,toJsBoolean:()=>U,toTypedValue:()=>x,tokenize:()=>zt,tooManyRequests:()=>_n,unauthorized:()=>Vn,validate:()=>os,validateResource:()=>fs,validateResourceType:()=>ps,validationError:()=>B});module.exports=In(Ts);var St="ok",bt="created",At="gone",Et="not-modified",Pt="not-found",yr="unauthorized",gr="forbidden",xr="too-many-requests",We="accepted",kn={resourceType:"OperationOutcome",id:St,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},Dn={resourceType:"OperationOutcome",id:bt,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},On={resourceType:"OperationOutcome",id:Et,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},Ct={resourceType:"OperationOutcome",id:Pt,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},Vn={resourceType:"OperationOutcome",id:yr,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},Un={resourceType:"OperationOutcome",id:gr,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},Ln={resourceType:"OperationOutcome",id:At,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},_n={resourceType:"OperationOutcome",id:xr,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function Mn(r){return{resourceType:"OperationOutcome",id:We,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:r}]}}function k(r,e){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:r},expression:e?[e]:void 0}]}}function B(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"structure",details:{text:r}}]}}function wt(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function me(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function Ge(r){return r.id===St||r.id===bt||r.id===Et||r.id===We}function Nn(r){return r.id===We}function Bn(r){return r.id===Pt}function Fn(r){return r.id===At}function qn(r){return r.id===St?200:r.id===bt?201:r.id===We?202:r.id===Et?304:r.id===yr?401:r.id===gr?403:r.id===Pt?404:r.id===At?410:r.id===xr?429:400}function jn(r,e){if(!Ge(r)||e===void 0)throw new h(r)}var h=class extends Error{constructor(t,n){super(It(t));this.outcome=t,this.cause=n}};function ze(r){return r instanceof h?r.outcome:me(r)?r:k(Tr(r))}function Tr(r){return r?typeof r=="string"?r:r instanceof Error?r.message:me(r)?It(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function It(r){let e=r.issue?.map(vr)??[];return e.length>0?e.join("; "):"Unknown error"}function vr(r){let e=r.details?.text??r.diagnostics??"Unknown error";return r.expression?.length&&(e+=` (${r.expression.join(", ")})`),e}function kt(r,e,t,n){let i={severity:"error",code:r,details:{text:e},expression:[t]};return n&&(i.diagnostics=JSON.stringify(n)),i}function m(r,e){return kt("structure",e,r)}function Dt(r,e){return kt("invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function Ot(r,e,t,n){return kt("processing",e,r,{...n,error:t})}var Rr={types:{Element:{display:"Element",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]}}},BackboneElement:{display:"BackboneElement",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",type:[{code:"Extension"}]}}},Address:{display:"Address",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},use:{type:[{code:"code"}]},type:{type:[{code:"code"}]},text:{type:[{code:"string"}]},line:{max:"*",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:{display:"Age",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Annotation:{display:"Annotation",properties:{id:{type:[{code:"string"}]},extension:{max:"*",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:{display:"Attachment",properties:{id:{type:[{code:"string"}]},extension:{max:"*",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:{display:"CodeableConcept",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},coding:{max:"*",type:[{code:"Coding"}]},text:{type:[{code:"string"}]}}},Coding:{display:"Coding",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},system:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},code:{type:[{code:"code"}]},display:{type:[{code:"string"}]},userSelected:{type:[{code:"boolean"}]}}},ContactDetail:{display:"ContactDetail",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},name:{type:[{code:"string"}]},telecom:{max:"*",type:[{code:"ContactPoint"}]}}},ContactPoint:{display:"ContactPoint",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},system:{type:[{code:"code"}]},value:{type:[{code:"string"}]},use:{type:[{code:"code"}]},rank:{type:[{code:"positiveInt"}]},period:{type:[{code:"Period"}]}}},Contributor:{display:"Contributor",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},name:{min:1,type:[{code:"string"}]},contact:{max:"*",type:[{code:"ContactDetail"}]}}},Count:{display:"Count",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},DataRequirement:{display:"DataRequirement",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},profile:{max:"*",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:"*",type:[{code:"string"}]},codeFilter:{max:"*",type:[{code:"Element"}]},dateFilter:{max:"*",type:[{code:"Element"}]},limit:{type:[{code:"positiveInt"}]},sort:{max:"*",type:[{code:"Element"}]}}},DataRequirementCodeFilter:{display:"DataRequirementCodeFilter",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},path:{type:[{code:"string"}]},searchParam:{type:[{code:"string"}]},valueSet:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/ValueSet"]}]},code:{max:"*",type:[{code:"Coding"}]}}},DataRequirementDateFilter:{display:"DataRequirementDateFilter",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},path:{type:[{code:"string"}]},searchParam:{type:[{code:"string"}]},"value[x]":{type:[{code:"dateTime"},{code:"Period"},{code:"Duration"}]}}},DataRequirementSort:{display:"DataRequirementSort",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},direction:{min:1,type:[{code:"code"}]}}},Distance:{display:"Distance",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},Dosage:{display:"Dosage",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",type:[{code:"Extension"}]},sequence:{type:[{code:"integer"}]},text:{type:[{code:"string"}]},additionalInstruction:{max:"*",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:"*",type:[{code:"Element"}]},maxDosePerPeriod:{type:[{code:"Ratio"}]},maxDosePerAdministration:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},maxDosePerLifetime:{type:[{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},DosageDoseAndRate:{display:"DosageDoseAndRate",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},type:{type:[{code:"CodeableConcept"}]},"dose[x]":{type:[{code:"Range"},{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]},"rate[x]":{type:[{code:"Ratio"},{code:"Range"},{code:"Quantity",profile:["http://hl7.org/fhir/StructureDefinition/SimpleQuantity"]}]}}},Duration:{display:"Duration",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},comparator:{type:[{code:"code"}]},unit:{type:[{code:"string"}]},system:{type:[{code:"uri"}]},code:{type:[{code:"code"}]}}},ElementDefinition:{display:"ElementDefinition",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},representation:{max:"*",type:[{code:"code"}]},sliceName:{type:[{code:"string"}]},sliceIsConstraining:{type:[{code:"boolean"}]},label:{type:[{code:"string"}]},code:{max:"*",type:[{code:"Coding"}]},slicing:{type:[{code:"Element"}]},short:{type:[{code:"string"}]},definition:{type:[{code:"markdown"}]},comment:{type:[{code:"markdown"}]},requirements:{type:[{code:"markdown"}]},alias:{max:"*",type:[{code:"string"}]},min:{type:[{code:"unsignedInt"}]},max:{type:[{code:"string"}]},base:{type:[{code:"Element"}]},contentReference:{type:[{code:"uri"}]},type:{max:"*",type:[{code:"Element"}]},"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:"*",type:[{code:"Element"}]},"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:"*",type:[{code:"id"}]},constraint:{max:"*",type:[{code:"Element"}]},mustSupport:{type:[{code:"boolean"}]},isModifier:{type:[{code:"boolean"}]},isModifierReason:{type:[{code:"string"}]},isSummary:{type:[{code:"boolean"}]},binding:{type:[{code:"Element"}]},mapping:{max:"*",type:[{code:"Element"}]}}},ElementDefinitionSlicing:{display:"ElementDefinitionSlicing",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},discriminator:{max:"*",type:[{code:"Element"}]},description:{type:[{code:"string"}]},ordered:{type:[{code:"boolean"}]},rules:{min:1,type:[{code:"code"}]}}},ElementDefinitionSlicingDiscriminator:{display:"ElementDefinitionSlicingDiscriminator",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},type:{min:1,type:[{code:"code"}]},path:{min:1,type:[{code:"string"}]}}},ElementDefinitionBase:{display:"ElementDefinitionBase",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},path:{min:1,type:[{code:"string"}]},min:{min:1,type:[{code:"unsignedInt"}]},max:{min:1,type:[{code:"string"}]}}},ElementDefinitionType:{display:"ElementDefinitionType",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},code:{min:1,type:[{code:"uri"}]},profile:{max:"*",type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition","http://hl7.org/fhir/StructureDefinition/ImplementationGuide"]}]},targetProfile:{max:"*",type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition","http://hl7.org/fhir/StructureDefinition/ImplementationGuide"]}]},aggregation:{max:"*",type:[{code:"code"}]},versioning:{type:[{code:"code"}]}}},ElementDefinitionExample:{display:"ElementDefinitionExample",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},label:{min:1,type:[{code:"string"}]},"value[x]":{min:1,type:[{code:"base64Binary"},{code:"boolean"},{code:"canonical"},{code:"code"},{code:"date"},{code:"dateTime"},{code:"decimal"},{code:"id"},{code:"instant"},{code:"integer"},{code:"markdown"},{code:"oid"},{code:"positiveInt"},{code:"string"},{code:"time"},{code:"unsignedInt"},{code:"uri"},{code:"url"},{code:"uuid"},{code:"Address"},{code:"Age"},{code:"Annotation"},{code:"Attachment"},{code:"CodeableConcept"},{code:"Coding"},{code:"ContactPoint"},{code:"Count"},{code:"Distance"},{code:"Duration"},{code:"HumanName"},{code:"Identifier"},{code:"Money"},{code:"Period"},{code:"Quantity"},{code:"Range"},{code:"Ratio"},{code:"Reference"},{code:"SampledData"},{code:"Signature"},{code:"Timing"},{code:"ContactDetail"},{code:"Contributor"},{code:"DataRequirement"},{code:"Expression"},{code:"ParameterDefinition"},{code:"RelatedArtifact"},{code:"TriggerDefinition"},{code:"UsageContext"},{code:"Dosage"},{code:"Meta"}]}}},ElementDefinitionConstraint:{display:"ElementDefinitionConstraint",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},key:{min:1,type:[{code:"id"}]},requirements:{type:[{code:"string"}]},severity:{min:1,type:[{code:"code"}]},human:{min:1,type:[{code:"string"}]},expression:{type:[{code:"string"}]},xpath:{type:[{code:"string"}]},source:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]}}},ElementDefinitionBinding:{display:"ElementDefinitionBinding",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},strength:{min:1,type:[{code:"code"}]},description:{type:[{code:"string"}]},valueSet:{type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/ValueSet"]}]}}},ElementDefinitionMapping:{display:"ElementDefinitionMapping",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},identity:{min:1,type:[{code:"id"}]},language:{type:[{code:"code"}]},map:{min:1,type:[{code:"string"}]},comment:{type:[{code:"string"}]}}},Expression:{display:"Expression",properties:{id:{type:[{code:"string"}]},extension:{max:"*",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:{display:"Extension",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},url:{min:1,type:[{code:"string"}]},"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:{display:"HumanName",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},use:{type:[{code:"code"}]},text:{type:[{code:"string"}]},family:{type:[{code:"string"}]},given:{max:"*",type:[{code:"string"}]},prefix:{max:"*",type:[{code:"string"}]},suffix:{max:"*",type:[{code:"string"}]},period:{type:[{code:"Period"}]}}},Identifier:{display:"Identifier",properties:{id:{type:[{code:"string"}]},extension:{max:"*",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:{display:"MarketingStatus",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",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:{display:"Meta",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},versionId:{type:[{code:"id"}]},lastUpdated:{type:[{code:"instant"}]},source:{type:[{code:"uri"}]},profile:{max:"*",type:[{code:"canonical",targetProfile:["http://hl7.org/fhir/StructureDefinition/StructureDefinition"]}]},security:{max:"*",type:[{code:"Coding"}]},tag:{max:"*",type:[{code:"Coding"}]},project:{type:[{code:"uri"}]},author:{type:[{code:"Reference"}]},account:{type:[{code:"Reference"}]},compartment:{max:"*",type:[{code:"Reference"}]}}},Money:{display:"Money",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},value:{type:[{code:"decimal"}]},currency:{type:[{code:"code"}]}}},Narrative:{display:"Narrative",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},status:{min:1,type:[{code:"code"}]},div:{min:1,type:[{code:"xhtml"}]}}},ParameterDefinition:{display:"ParameterDefinition",properties:{id:{type:[{code:"string"}]},extension:{max:"*",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:{display:"Period",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},start:{type:[{code:"dateTime"}]},end:{type:[{code:"dateTime"}]}}},Population:{display:"Population",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",type:[{code:"Extension"}]},"age[x]":{type:[{code:"Range"},{code:"CodeableConcept"}]},gender:{type:[{code:"CodeableConcept"}]},race:{type:[{code:"CodeableConcept"}]},physiologicalCondition:{type:[{code:"CodeableConcept"}]}}},ProdCharacteristic:{display:"ProdCharacteristic",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",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:"*",type:[{code:"string"}]},imprint:{max:"*",type:[{code:"string"}]},image:{max:"*",type:[{code:"Attachment"}]},scoring:{type:[{code:"CodeableConcept"}]}}},ProductShelfLife:{display:"ProductShelfLife",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",type:[{code:"Extension"}]},identifier:{type:[{code:"Identifier"}]},type:{min:1,type:[{code:"CodeableConcept"}]},period:{min:1,type:[{code:"Quantity"}]},specialPrecautionsForStorage:{max:"*",type:[{code:"CodeableConcept"}]}}},Quantity:{display:"Quantity",properties:{id:{type:[{code:"string"}]},extension:{max:"*",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"}]}}},Range:{display:"Range",properties:{id:{type:[{code:"string"}]},extension:{max:"*",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:{display:"Ratio",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},numerator:{type:[{code:"Quantity"}]},denominator:{type:[{code:"Quantity"}]}}},Reference:{display:"Reference",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},reference:{type:[{code:"string"}]},type:{type:[{code:"uri"}]},identifier:{type:[{code:"Identifier"}]},display:{type:[{code:"string"}]}}},RelatedArtifact:{display:"RelatedArtifact",properties:{id:{type:[{code:"string"}]},extension:{max:"*",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:{display:"SampledData",properties:{id:{type:[{code:"string"}]},extension:{max:"*",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:{display:"Signature",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},type:{min:1,max:"*",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:{display:"SubstanceAmount",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",type:[{code:"Extension"}]},"amount[x]":{type:[{code:"Quantity"},{code:"Range"},{code:"string"}]},amountType:{type:[{code:"CodeableConcept"}]},amountText:{type:[{code:"string"}]},referenceRange:{type:[{code:"Element"}]}}},SubstanceAmountReferenceRange:{display:"SubstanceAmountReferenceRange",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},lowLimit:{type:[{code:"Quantity"}]},highLimit:{type:[{code:"Quantity"}]}}},Timing:{display:"Timing",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",type:[{code:"Extension"}]},event:{max:"*",type:[{code:"dateTime"}]},repeat:{type:[{code:"Element"}]},code:{type:[{code:"CodeableConcept"}]}}},TimingRepeat:{display:"TimingRepeat",properties:{id:{type:[{code:"string"}]},extension:{max:"*",type:[{code:"Extension"}]},"bounds[x]":{type:[{code:"Duration"},{code:"Range"},{code:"Period"}]},count:{type:[{code:"positiveInt"}]},countMax:{type:[{code:"positiveInt"}]},duration:{type:[{code:"decimal"}]},durationMax:{type:[{code:"decimal"}]},durationUnit:{type:[{code:"code"}]},frequency:{type:[{code:"positiveInt"}]},frequencyMax:{type:[{code:"positiveInt"}]},period:{type:[{code:"decimal"}]},periodMax:{type:[{code:"decimal"}]},periodUnit:{type:[{code:"code"}]},dayOfWeek:{max:"*",type:[{code:"code"}]},timeOfDay:{max:"*",type:[{code:"time"}]},when:{max:"*",type:[{code:"code"}]},offset:{type:[{code:"unsignedInt"}]}}},TriggerDefinition:{display:"TriggerDefinition",properties:{id:{type:[{code:"string"}]},extension:{max:"*",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:"*",type:[{code:"DataRequirement"}]},condition:{type:[{code:"Expression"}]}}},UsageContext:{display:"UsageContext",properties:{id:{type:[{code:"string"}]},extension:{max:"*",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"]}]}}},MetadataResource:{display:"MetadataResource",properties:{id:{type:[{code:"string"}]},meta:{type:[{code:"Meta"}]},implicitRules:{type:[{code:"uri"}]},language:{type:[{code:"code"}]},text:{type:[{code:"Narrative"}]},contained:{max:"*",type:[{code:"Resource"}]},extension:{max:"*",type:[{code:"Extension"}]},modifierExtension:{max:"*",type:[{code:"Extension"}]},url:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},name:{type:[{code:"string"}]},title:{type:[{code:"string"}]},status:{min:1,type:[{code:"code"}]},experimental:{type:[{code:"boolean"}]},date:{type:[{code:"dateTime"}]},publisher:{type:[{code:"string"}]},contact:{max:"*",type:[{code:"ContactDetail"}]},description:{type:[{code:"markdown"}]},useContext:{max:"*",type:[{code:"UsageContext"}]},jurisdiction:{max:"*",type:[{code:"CodeableConcept"}]}}},IdentityProvider:{display:"IdentityProvider",properties:{authorizeUrl:{min:1,type:[{code:"string"}]},tokenUrl:{min:1,type:[{code:"string"}]},userInfoUrl:{min:1,type:[{code:"string"}]},clientId:{min:1,type:[{code:"string"}]},clientSecret:{min:1,type:[{code:"string"}]},useSubject:{type:[{code:"boolean"}]}}}}};function Qn(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 Vt(r,e){let t=[];return 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.join(" ").trim()}function Hn(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function Wn(r){return r.family??""}function Je(r){return r instanceof Date&&!isNaN(r.getTime())}function Gn(r,e,t){if(!r)return"";let n=new Date(r);return Je(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function Sr(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return Je(n)?n.toLocaleTimeString(e,t):""}function Ke(r,e,t){if(!r)return"";let n=new Date(r);return Je(n)?n.toLocaleString(e,t):""}function zn(r,e,t){return!r||!r.start&&!r.end?"":Ke(r.start,e,t)+" - "+Ke(r.end,e,t)}var Kn={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},Jn={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},Yn={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function Xn(r){if(!r)return"";let e=[];return Zn(e,r.repeat),r.event&&e.push(r.event.map(t=>Ke(t)).join(", ")),S(e.join(" ").trim())}function Zn(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(Kn[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+Jn[i]):r.push("per "+n+" "+Yn[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(S).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>Sr(o)).join(", "))}function ei(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=ni(n.value,e),`> ${W(n,e)}`):`>= ${W(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=ri(i.value,e),`< ${W(i,e)}`):`<= ${W(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${W(n,e)} - ${W(i,e)}`)}function W(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 ti(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function br(r){return r?r.text?r.text:r.coding?r.coding.map(e=>Ar(e)).join(", "):"":""}function Ar(r){return r?.display??r?.code??""}function Er(r){return r?"component"in r?r.component.map(e=>Er(e)).join(" / "):r.valueQuantity?W(r.valueQuantity):r.valueCodeableConcept?br(r.valueCodeableConcept):r.valueString?r.valueString:"":""}function ri(r,e,t=1){return(Pr(r,e)+t)*Math.pow(10,-e)}function ni(r,e,t=1){return(Pr(r,e)-t)*Math.pow(10,-e)}function Pr(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function oe(r){let e=Ut(r),t=Ir(r);return t===e?{reference:e}:{reference:e,display:t}}function Ut(r){return r.resourceType+"/"+r.id}function ii(r){return r?.reference?.split("/")[1]}function oi(r){if(r?.reference===void 0)return;let[e,t]=r.reference.split("/");if(!(e===""||t===""||t===void 0))return[e,t]}function wr(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function Ir(r){if(wr(r)){let e=si(r);if(e)return e}if(r.resourceType==="Device"){let e=ai(r);if(e)return e}return r.resourceType==="Observation"&&"code"in r&&r.code?.text?r.code.text:r.resourceType==="User"&&r.email?r.email:"name"in r&&r.name&&typeof r.name=="string"?r.name:Ut(r)}function si(r){let e=r.name;if(e&&e.length>0)return Vt(e[0])}function ai(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function ci(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=Cr(t);if(n)return n}else return Cr(e)}function Cr(r){if(r.url&&r.contentType&&r.contentType.startsWith("image/"))return r.url}function ui(r){return r?new Date(r):void 0}function ye(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(),f=n.getUTCDate(),l=a-i;(c<o||c===o&&f<s)&&l--;let H=a*12+c-(i*12+o);f<s&&H--;let bn=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:l,months:H,days:bn}}function di(r,e){let{years:t,months:n,days:i}=ye(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 li(r){let e={};return kr(r.item,e),e}function kr(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),kr(t.item,e)}function pi(r){let e={};return Dr(r.item,e),e}function Dr(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer),Dr(t.item,e)}function fi(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 Lt(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?.valueString}function hi(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 _t(r,e){return JSON.stringify(r,mi,e?2:void 0)}function mi(r,e){return!yi(r)&&R(e)?void 0:e}function yi(r){return!!/\d+$/.exec(r)}function R(r){if(r==null)return!0;let e=typeof r;return e==="string"&&r===""||e==="object"&&Object.keys(r).length===0}function ge(r,e,t){return r===e||R(r)&&R(e)?!0:R(r)||R(e)?!1:Array.isArray(r)&&Array.isArray(e)?gi(r,e):Array.isArray(r)||Array.isArray(e)?!1:F(r)&&F(e)?xi(r,e,t):(F(r)||F(e),!1)}function gi(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!ge(r[t],e[t]))return!1;return!0}function xi(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(!ge(o,s,i))return!1}return!0}function xe(r,e){return R(r)?!0:R(e)?!1:Array.isArray(r)&&Array.isArray(e)?Ti(r,e):Array.isArray(r)||Array.isArray(e)?!1:F(r)&&F(e)?vi(r,e):F(r)||F(e)?!1:r===e}function Ti(r,e){return r.every(t=>e.some(n=>xe(t,n)))}function vi(r,e){return Object.entries(r).every(([t,n])=>t in e&&xe(n,e[t]))}function Xe(r){return JSON.parse(JSON.stringify(r))}function Ri(r){return!!/^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/i.exec(r)}function F(r){return r!==null&&typeof r=="object"}function Mt(r){return r.every(e=>typeof e=="string")}var Or=[];for(let r=0;r<256;r++)Or.push(r.toString(16).padStart(2,"0"));function Nt(r){let e=new Uint8Array(r),t=new Array(e.length);for(let n=0;n<e.length;n++)t[n]=Or[e[n]];return t.join("")}function Bt(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 S(r){return r.charAt(0).toUpperCase()+r.substring(1)}function Z(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function Ye(r,e){return r.coding?.find(t=>t.system===e)?.code}function Si(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 bi(r,e,t,n){return r.qualifiedInterval?.find(i=>Vr(i,e)&&Ci(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function Ai(r,e,t){return r.qualifiedInterval?.find(n=>Vr(n,e)&&t.includes(n.condition))}function Vr(r,e){return Ei(r,e)&&Pi(r,e)}function Ei(r,e){return!r.gender||r.gender===e.gender}function Pi(r,e){return!r.age||Ft(ye(e.birthDate).years,r.age)}function Ci(r,e,t){return!!r.range&&Ft(e,r.range,t)}function Ft(r,e,t){return(e.low?.value===void 0||Lr(r,e.low.value,t))&&(e.high?.value===void 0||Ur(r,e.high.value,t))}function wi(r,e){return parseFloat(r.toFixed(e))}function Ii(r,e,t){return O(r,t)===O(e,t)}function ki(r,e,t){return O(r,t)<O(e,t)}function Di(r,e,t){return O(r,t)>O(e,t)}function Ur(r,e,t){return O(r,t)<=O(e,t)}function Lr(r,e,t){return O(r,t)>=O(e,t)}function O(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function Oi(r,e,t){return r.find(n=>typeof e=="string"?Ye(n.code||{},t)===e:Ye(n.code||{},t)===Ye(e,t))}function Te(r){if(r)return Array.isArray(r)?r:[r]}var Ze=r=>new Promise(e=>{setTimeout(e,r)});var G=(u=>(u.Address="Address",u.Age="Age",u.Annotation="Annotation",u.Attachment="Attachment",u.BackboneElement="BackboneElement",u.CodeableConcept="CodeableConcept",u.Coding="Coding",u.ContactDetail="ContactDetail",u.ContactPoint="ContactPoint",u.Contributor="Contributor",u.Count="Count",u.DataRequirement="DataRequirement",u.Distance="Distance",u.Dosage="Dosage",u.Duration="Duration",u.Expression="Expression",u.Extension="Extension",u.HumanName="HumanName",u.Identifier="Identifier",u.MarketingStatus="MarketingStatus",u.Meta="Meta",u.Money="Money",u.Narrative="Narrative",u.ParameterDefinition="ParameterDefinition",u.Period="Period",u.Population="Population",u.ProdCharacteristic="ProdCharacteristic",u.ProductShelfLife="ProductShelfLife",u.Quantity="Quantity",u.Range="Range",u.Ratio="Ratio",u.Reference="Reference",u.RelatedArtifact="RelatedArtifact",u.SampledData="SampledData",u.Signature="Signature",u.SubstanceAmount="SubstanceAmount",u.SystemString="http://hl7.org/fhirpath/System.String",u.Timing="Timing",u.TriggerDefinition="TriggerDefinition",u.UsageContext="UsageContext",u.base64Binary="base64Binary",u.boolean="boolean",u.canonical="canonical",u.code="code",u.date="date",u.dateTime="dateTime",u.decimal="decimal",u.id="id",u.instant="instant",u.integer="integer",u.markdown="markdown",u.oid="oid",u.positiveInt="positiveInt",u.string="string",u.time="time",u.unsignedInt="unsignedInt",u.uri="uri",u.url="url",u.uuid="uuid",u))(G||{});function Vi(r){for(let e of r.entry){let t=e.resource;t.resourceType==="StructureDefinition"&&et(t)}}function et(r){if(!r.name)return;let t=r.snapshot?.element;if(t){for(let n of t)Ui(r,n);for(let n of t)Li(r,n)}}function Ui(r,e){let t=e.path,n=e.type?.[0]?.code;if(n!==void 0&&n!=="Element"&&n!=="BackboneElement")return;let i=t.split(".");i[0]=r.name;let o=se(i),s=y.types[o];s||(y.types[o]=s={}),s.parentType=s.parentType??se(i.slice(0,i.length-1)),s.display=s.display??o,s.structureDefinition=s.structureDefinition??r,s.elementDefinition=s.elementDefinition??e,s.description=s.description??e.definition,s.properties=s.properties??{}}function Li(r,e){let n=e.path.split(".");if(n.length===1)return;n[0]=r.name;let i=se(n.slice(0,n.length-1)),o=y.types[i];if(!o)return;let s=n[n.length-1];o.properties[s]=e}function _i(r){for(let e of r.entry){let t=e.resource;t.resourceType==="SearchParameter"&&tt(t)}}function tt(r){for(let e of r.base??[]){let t=y.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 z(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?se((r.base?.path??r.path)?.split(".")):e}function se(r){return r.length===1?r[0]:r.map(S).join("")}function _r(r){let e=r.structureDefinition;return e&&e.name===r.elementDefinition.path&&e.kind==="resource"&&!e.abstract}function Mi(){let r=[];for(let[e,t]of Object.entries(y.types))_r(t)&&r.push(e);return r}function Ni(r){return y.types[r]}function Bi(r){return y.types[r].searchParams}function Fi(r){return r.replaceAll("[x]","").split(".").pop().split(/(?=[A-Z])/).map(ji).join(" ").replace("_"," ").replace(/\s+/g," ")}var qi=new Set(["ID","IP","PKCE","JWKS","URI","URL"]);function ji(r){let e=r.toUpperCase();return qi.has(e)?e:e.charAt(0)+r.slice(1)}function ae(r,e){let t=y.types[r];if(!t)return;let n=t.properties[e]??t.properties[e+"[x]"];if(n){if(n.contentReference){let i=n.contentReference.substring(1).split("."),o=i.pop(),s=se(i);return ae(s,o)}return n}}function V(r){return!!(r&&typeof r=="object"&&"resourceType"in r)}function qt(r){return!!(r&&typeof r=="object"&&"reference"in r)}var y=Rr;var $i=20,Br=(g=>(g.EQUALS="eq",g.NOT_EQUALS="ne",g.GREATER_THAN="gt",g.LESS_THAN="lt",g.GREATER_THAN_OR_EQUALS="ge",g.LESS_THAN_OR_EQUALS="le",g.STARTS_AFTER="sa",g.ENDS_BEFORE="eb",g.APPROXIMATELY="ap",g.CONTAINS="contains",g.EXACT="exact",g.TEXT="text",g.NOT="not",g.ABOVE="above",g.BELOW="below",g.IN="in",g.NOT_IN="not-in",g.OF_TYPE="of-type",g.MISSING="missing",g.IDENTIFIER="identifier",g.ITERATE="iterate",g))(Br||{}),Fr={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"},jt={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function Qi(r,e){let t=[];for(let[n,i]of Object.entries(e))if(Array.isArray(i))for(let o of i)t.push([n,o]);else t.push([n,i??""]);return qr(r,t)}function $t(r){let e=r.pathname.split("/").filter(Boolean).pop();return qr(e,r.searchParams.entries())}function Hi(r){return $t(new URL(r,"https://example.com/"))}function Qt(r){return $t(new URL(r,"https://api.medplum.com/"))}function qr(r,e){let t={resourceType:r};for(let[n,i]of e)Wi(t,n,i);return t}function Wi(r,e,t){let n,i,o=e.indexOf(":");switch(o>=0?(n=e.substring(0,o),i=e.substring(o+1)):(n=e,i=""),n){case"_sort":Gi(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=Mr(t);i==="iterate"&&(s.modifier="iterate"),r.include?r.include.push(s):r.include=[s];break}case"_revinclude":{let s=Mr(t);i==="iterate"&&(s.modifier="iterate"),r.revInclude?r.revInclude.push(s):r.revInclude=[s];break}case"_fields":case"_elements":r.fields=t.split(",");break;default:{let s=y.types[r.resourceType]?.searchParams?.[n];s?zi(r,s,i,t):Yi(r,n,i,t)}}}function Gi(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 zi(r,e,t,n){if(t==="missing"){rt(r,{code:e.code,operator:"missing",value:n});return}switch(e.type){case"number":case"date":case"quantity":Ki(r,e,n);break;case"reference":case"string":case"token":case"uri":Ji(r,e,t,n);break;default:break}}function Ki(r,e,t){let{operator:n,value:i}=Xi(t);rt(r,{code:e.code,operator:n,value:i})}function Ji(r,e,t,n){rt(r,{code:e.code,operator:Zi(t),value:n})}function Yi(r,e,t,n){let i="eq";if(t)i=t;else if(n.length>=2){let o=n.substring(0,2);o in jt&&(n.length===2||n.at(2)?.match(/\d/))&&(i=o,n=n.substring(o.length))}rt(r,{code:e,operator:i,value:n})}function Xi(r){let e=r.substring(0,2),t=jt[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function Zi(r){return Fr[r]??"eq"}function Mr(r){let e=r.split(":");if(e.forEach(t=>{if(t==="*")throw new h(k("'*' is not supported as a value for search inclusion parameters"))}),e.length===1)throw new h(k(`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 h(k(`Invalid include value '${r}'`))}function rt(r,e){r.filters?r.filters.push(e):r.filters=[e]}function eo(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(to(t))),r.sortRules&&r.sortRules.length>0&&e.push(ro(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(Nr("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(Nr("_revinclude",t))),e.length===0?"":(e.sort((t,n)=>t.localeCompare(n)),"?"+e.join("&"))}function to(r){let e=r.operator in Fr?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in jt?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function ro(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function Nr(r,e){return r+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}var ve=class{constructor(e,t){this.operator=e;this.child=t}toString(){return`${this.operator}(${this.child.toString()})`}},q=class{constructor(e,t,n){this.operator=e;this.left=t;this.right=n}toString(){return`${this.left.toString()} ${this.operator} ${this.right.toString()}`}},Re=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 nt(e,this.prefixParselets,this.infixParselets)}},nt=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}" 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 no=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],j=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
|
-
`))}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;return this.consumeWhile(()=>/[\d-]/.exec(this.curr())),this.curr()==="T"&&(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"?this.advance():(this.curr()==="+"||this.curr()==="-")&&(this.advance(),this.consumeWhile(()=>/[\d:]/.exec(this.curr())))),this.buildToken("DateTime",this.str.substring(e,this.pos.index))}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()===" "&&
|
|
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 io(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&no.includes(r.value)))}function ce(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}}function d(r){return[{type:"boolean",value:r}]}function x(r){return r==null?{type:"undefined",value:void 0}:Number.isSafeInteger(r)?{type:"integer",value:r}:typeof r=="number"?{type:"decimal",value:r}:typeof r=="boolean"?{type:"boolean",value:r}:typeof r=="string"?{type:"string",value:r}:b(r)?{type:"Quantity",value:r}:V(r)?{type:r.resourceType,value:r}:{type:"BackboneElement",value:r}}function U(r){return r.length===0?!1:!!r[0].value}function D(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 A(r,e){if(!r.value)return;let t=ae(r.type,e);return t?oo(r,e,t):so(r,e)}function oo(r,e,t){let n=t.type;if(!n||n.length===0)return;let i,o="undefined";if(n.length===1)i=r.value[e],o=n[0].code;else for(let a of n){let c=e.replace("[x]","")+S(a.code);if(c in r.value){i=r.value[c],o=a.code;break}}let s=r.value["_"+e];if(s&&(Array.isArray(i)?i=i.map((a,c)=>s[c]?Hr(a??{},s[c]):a):i=Hr(i??{},s)),!R(i))return(o==="Element"||o==="BackboneElement")&&(o=z(t)),Array.isArray(i)?i.map(a=>jr(a,o)):jr(i,o)}function jr(r,e){return e==="Resource"&&V(r)&&(e=r.resourceType),{type:e,value:r}}function so(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 G){let o=e+S(i);if(o in t){n=t[o];break}}if(!R(n))return Array.isArray(n)?n.map(x):x(n)}function Se(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(U(Ht(t,i))){n=!0;break}n||e.push(t)}return e}function it(r){return d(!U(r))}function ot(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?d(!1):d(r.every((t,n)=>U(Ht(t,e[n]))))}function Ht(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):b(t)&&b(n)?d(Wt(t,n)):d(typeof t=="object"&&typeof n=="object"?Gt(r,e):t===n)}function st(r,e){return r.length===0&&e.length===0?d(!0):r.length!==e.length?d(!1):(r.sort($r),e.sort($r),d(r.every((t,n)=>U(Wr(t,e[n])))))}function Wr(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):b(s)&&b(a)?d(Wt(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"?Gt({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function $r(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 be(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 typeof t=="string"&&!!/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t);case"DateTime":return typeof t=="string"&&!!/^\d{4}(-\d{2}(-\d{2})?)?T/.exec(t);case"Time":return typeof t=="string"&&!!/^T\d/.exec(t);case"Period":return Gr(t);case"Quantity":return b(t);default:return typeof t=="object"&&t?.resourceType===e}}function Gr(r){return!!(r&&typeof r=="object"&&"start"in r)}function b(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function Wt(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 Gt(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(Qr(o)&&Qr(s)){if(!Gt(o,s))return!1}else if(o!==s)return!1}return!0}function Qr(r){return r!==null&&typeof r=="object"}function Hr(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}var Ae=()=>[],E={empty:(r,e)=>d(e.length===0),exists:(r,e,t)=>t?d(e.filter(n=>U(t.eval(r,[n]))).length>0):d(e.length>0),all:(r,e,t)=>d(e.every(n=>U(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:Ae,supersetOf:Ae,count:(r,e)=>[{type:"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===E.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>U(t.eval(r,[n]))),select:(r,e,t)=>e.map(n=>t.eval(r,[n])).flat(),repeat:Ae,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,e),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,e),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,e);return Se([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e);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 U(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=_(e,1);if(typeof t=="boolean")return[{type:"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(E.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=_(e,1);return typeof t=="number"?[{type:"integer",value:t}]:typeof t=="string"&&/^[+-]?\d+$/.exec(t)?[{type:"integer",value:parseInt(t,10)}]:typeof t=="boolean"?[{type:"integer",value:t?1:0}]:[]},convertsToInteger:(r,e)=>e.length===0?[]:d(E.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=_(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:"date",value:ce(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:d(E.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=_(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:"dateTime",value:ce(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:d(E.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=_(e,1);return typeof t=="number"?[{type:"decimal",value:t}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(t)?[{type:"decimal",value:parseFloat(t)}]:typeof t=="boolean"?[{type:"decimal",value:t?1:0}]:[]},convertsToDecimal:(r,e)=>e.length===0?[]:d(E.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=_(e,1);return b(t)?[{type:"Quantity",value:t}]:typeof t=="number"?[{type:"Quantity",value:{value:t,unit:"1"}}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(t)?[{type:"Quantity",value:{value:parseFloat(t),unit:"1"}}]:typeof t=="boolean"?[{type:"Quantity",value:{value:t?1:0,unit:"1"}}]:[]},convertsToQuantity:(r,e)=>e.length===0?[]:d(E.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=_(e,1);return t==null?[]:b(t)?[{type:"string",value:`${t.value} '${t.unit}'`}]:[{type:"string",value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:d(E.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=_(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:"time",value:ce("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:d(E.toTime(r,e).length===1),indexOf:(r,e,t)=>w((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>w((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)=>w((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>w((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>w((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>w(t=>t.toUpperCase(),r,e),lower:(r,e)=>w(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>w((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>w((n,i)=>!!new RegExp(i).exec(n),r,e,t),replaceMatches:(r,e,t,n)=>w((i,o,s)=>i.replaceAll(o,s),r,e,t,n),length:(r,e)=>w(t=>t.length,r,e),toChars:(r,e)=>w(t=>t?t.split(""):void 0,r,e),abs:(r,e)=>L(Math.abs,r,e),ceiling:(r,e)=>L(Math.ceil,r,e),exp:(r,e)=>L(Math.exp,r,e),floor:(r,e)=>L(Math.floor,r,e),ln:(r,e)=>L(Math.log,r,e),log:(r,e,t)=>L((n,i)=>Math.log(n)/Math.log(i),r,e,t),power:(r,e,t)=>L(Math.pow,r,e,t),round:(r,e)=>L(Math.round,r,e),sqrt:(r,e)=>L(Math.sqrt,r,e),truncate:(r,e)=>L(t=>t|0,r,e),children:Ae,descendants:Ae,trace:(r,e,t)=>(console.log("trace",e,t),e),now:()=>[{type:"dateTime",value:new Date().toISOString()}],timeOfDay:()=>[{type:"time",value:new Date().toISOString().substring(11)}],today:()=>[{type:"date",value:new Date().toISOString().substring(0,10)}],between:(r,e,t,n,i)=>{let o=E.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=E.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=ye(o[0].value,s[0].value);return[{type:"Quantity",value:{value:c[a],unit:a}}]},is:(r,e,t)=>{let n="";return t instanceof M?n=t.name:t instanceof $&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:"boolean",value:be(i,n)})):[]},not:(r,e)=>E.toBoolean(r,e).map(t=>({type:"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:"BackboneElement",value:void 0}}).filter(t=>!!t.value),as:(r,e)=>e,type:(r,e)=>e.map(({value:t})=>typeof t=="boolean"?{type:"BackboneElement",value:{namespace:"System",name:"Boolean"}}:typeof t=="number"?{type:"BackboneElement",value:{namespace:"System",name:"Integer"}}:V(t)?{type:"BackboneElement",value:{namespace:"FHIR",name:t.resourceType}}:{type:"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:"boolean",value:o.value?.resourceType===i}))}};function w(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=_(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 L(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=_(t,1),o=b(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(l=>l.eval(e,t)[0]?.value)),c=o?"Quantity":t[0].type,f=o?{...i,value:a}:a;return[{type:c,value:f}]}function _(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}var Ee=class{constructor(e,t){this.original=e;this.child=t}eval(e,t){try{return t.length>0?t.map(n=>this.child.eval(e,[n])).flat():this.child.eval(e,[])}catch(n){throw new Error(`FhirPathError on "${this.original}": ${n}`)}}toString(){return this.child.toString()}},I=class{constructor(e){this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},M=class{constructor(e){this.name=e}eval(e,t){if(this.name==="$this")return t;if(this.name.startsWith("%")){let n=e.variables[this.name.slice(1)];if(!n)throw new Error(`Undefined variable ${this.name}`);return[n]}return t.flatMap(n=>this.evalValue(n)).filter(n=>n?.value!==void 0)}evalValue(e){let t=e.value;if(!(!t||typeof t!="object"))return V(t)&&t.resourceType===this.name?e:A(e,this.name)}toString(){return this.name}},Pe=class{eval(){return[]}toString(){return"{}"}},Ce=class extends ve{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()}},K=class extends q{constructor(e,t){super("as",e,t)}eval(e,t){return E.ofType(e,this.left.eval(e,t),this.right)}},v=class extends q{},P=class extends v{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=b(s)?s.value:s,f=b(a)?a.value:a,l=this.impl(c,f);return typeof l=="boolean"?d(l):b(s)?[{type:"Quantity",value:{...s,value:l}}]:[x(l)]}},we=class extends q{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:"string",value:o.map(s=>s.value).join("")}]:o}},Ie=class extends v{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))}},ke=class extends v{constructor(e,t){super("in",e,t)}eval(e,t){let n=D(this.left.eval(e,t)),i=this.right.eval(e,t);return n?d(i.some(o=>o.value===n.value)):[]}},$=class extends q{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 q{constructor(e,t){super("|",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Se([...n,...i])}},De=class extends v{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return ot(n,i)}},Oe=class extends v{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return it(ot(n,i))}},Ve=class extends v{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return st(n,i)}},Ue=class extends v{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return it(st(n,i))}},J=class extends v{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(be(n[0],i))}},Le=class extends v{constructor(e,t){super("and",e,t)}eval(e,t){let n=D(this.left.eval(e,t),"boolean"),i=D(this.right.eval(e,t),"boolean");return n?.value===!0&&i?.value===!0?d(!0):n?.value===!1||i?.value===!1?d(!1):[]}},_e=class extends v{constructor(e,t){super("or",e,t)}eval(e,t){let n=D(this.left.eval(e,t),"boolean"),i=D(this.right.eval(e,t),"boolean");return n?.value===!1&&i?.value===!1?d(!1):n?.value||i?.value?d(!0):[]}},Me=class extends v{constructor(e,t){super("xor",e,t)}eval(e,t){let n=D(this.left.eval(e,t),"boolean"),i=D(this.right.eval(e,t),"boolean");return!n||!i?[]:d(n.value!==i.value)}},Ne=class extends v{constructor(e,t){super("implies",e,t)}eval(e,t){let n=D(this.left.eval(e,t),"boolean"),i=D(this.right.eval(e,t),"boolean");return i?.value===!0||n?.value===!1?d(!0):!n||!i?[]:d(!1)}},N=class{constructor(e,t){this.name=e;this.args=t}eval(e,t){let n=E[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(", ")})`}},Y=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 ue=["true","false"],de=["!=","!~","<=",">=","{}","->"];function zt(r){return new j(r,ue,de).tokenize()}var p={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},ao={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},co={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new Y(e,t)},precedence:p.Indexer},uo={parse(r,e){if(!(e instanceof M))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new N(e.name,t)},precedence:p.FunctionCall};function lo(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 le(){return new Re().registerPrefix("String",{parse:(r,e)=>new I({type:"string",value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new I({type:"dateTime",value:ce(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new I({type:"Quantity",value:lo(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new I({type:"decimal",value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new I({type:"boolean",value:!0})}).registerPrefix("false",{parse:()=>new I({type:"boolean",value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new M(e.value)}).registerPrefix("{}",{parse:()=>new Pe}).registerPrefix("(",ao).registerInfix("[",co).registerInfix("(",uo).prefix("+",p.UnaryAdd,(r,e)=>new Ce("+",e,t=>t)).prefix("-",p.UnarySubtract,(r,e)=>new P("-",e,e,(t,n)=>-n)).infixLeft(".",p.Dot,(r,e,t)=>new $(r,t)).infixLeft("/",p.Divide,(r,e,t)=>new P("/",r,t,(n,i)=>n/i)).infixLeft("*",p.Multiply,(r,e,t)=>new P("*",r,t,(n,i)=>n*i)).infixLeft("+",p.Add,(r,e,t)=>new P("+",r,t,(n,i)=>n+i)).infixLeft("-",p.Subtract,(r,e,t)=>new P("-",r,t,(n,i)=>n-i)).infixLeft("|",p.Union,(r,e,t)=>new ee(r,t)).infixLeft("=",p.Equals,(r,e,t)=>new De(r,t)).infixLeft("!=",p.NotEquals,(r,e,t)=>new Oe(r,t)).infixLeft("~",p.Equivalent,(r,e,t)=>new Ve(r,t)).infixLeft("!~",p.NotEquivalent,(r,e,t)=>new Ue(r,t)).infixLeft("<",p.LessThan,(r,e,t)=>new P("<",r,t,(n,i)=>n<i)).infixLeft("<=",p.LessThanOrEquals,(r,e,t)=>new P("<=",r,t,(n,i)=>n<=i)).infixLeft(">",p.GreaterThan,(r,e,t)=>new P(">",r,t,(n,i)=>n>i)).infixLeft(">=",p.GreaterThanOrEquals,(r,e,t)=>new P(">=",r,t,(n,i)=>n>=i)).infixLeft("&",p.Ampersand,(r,e,t)=>new we(r,t)).infixLeft("and",p.And,(r,e,t)=>new Le(r,t)).infixLeft("as",p.As,(r,e,t)=>new K(r,t)).infixLeft("contains",p.Contains,(r,e,t)=>new Ie(r,t)).infixLeft("div",p.Divide,(r,e,t)=>new P("div",r,t,(n,i)=>n/i|0)).infixLeft("in",p.In,(r,e,t)=>new ke(r,t)).infixLeft("is",p.Is,(r,e,t)=>new J(r,t)).infixLeft("mod",p.Modulo,(r,e,t)=>new P("mod",r,t,(n,i)=>n%i)).infixLeft("or",p.Or,(r,e,t)=>new _e(r,t)).infixLeft("xor",p.Xor,(r,e,t)=>new Me(r,t)).infixLeft("implies",p.Implies,(r,e,t)=>new Ne(r,t))}var po=le();function at(r){return new Ee(r,po.construct(zt(r)).consumeAndParse())}function te(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 ct(r,t).map(n=>n.value)}function ct(r,e,t){let n=t??{};return at(r).eval({variables:n},e).map(o=>({type:o.type,value:o.value?.valueOf()}))}var Jt=(l=>(l.BOOLEAN="BOOLEAN",l.NUMBER="NUMBER",l.QUANTITY="QUANTITY",l.TEXT="TEXT",l.REFERENCE="REFERENCE",l.CANONICAL="CANONICAL",l.DATE="DATE",l.DATETIME="DATETIME",l.PERIOD="PERIOD",l.UUID="UUID",l))(Jt||{});function Yt(r,e){let t=y.types[r].searchParamsDetails?.[e.code];return t||(t=ho(r,e)),t}function fo(r,e,t){let n=y.types[r];n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function ho(r,e){let t=e.code,n=go(t),i=Xt(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let c=Be(a);c.length===1&&c[0]instanceof v?o.propertyTypes.add("boolean"):zr(o,Be(a),r,1)}let s={columnName:n,type:xo(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return fo(r,t,s),s}function zr(r,e,t,n){let i=e[n];if(i instanceof K){r.propertyTypes.add(i.right.toString());return}if(i instanceof N){mo(r,i);return}let o=i.toString(),s=ae(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 Y&&(a=!0,c++),s.max!=="0"&&s.max!=="1"&&!a&&(r.array=!0),c>=e.length){r.elementDefinitions.push(s);for(let f of s.type)r.propertyTypes.add(f.code);return}for(let f of s.type){let l=f.code;yo(l)&&(l=z(s)),zr(r,e,l,c)}}function mo(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 J){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function yo(r){return r==="Element"||r==="BackboneElement"}function go(r){return r.split("-").reduce((e,t,n)=>e+(n?S(t):t),"")}function xo(r,e){switch(r.type){case"date":return e.size===1&&e.has("date")?"DATE":"DATETIME";case"number":return"NUMBER";case"quantity":return"QUANTITY";case"reference":return e.has("canonical")?"CANONICAL":"REFERENCE";case"token":return e.size===1&&e.has("boolean")?"BOOLEAN":"TEXT";default:return"TEXT"}}function Xt(r,e){let t=[],n=at(e);return Kt(r,n.child,t),t}function To(r,e){let t=Xt(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function Kt(r,e,t){e instanceof ee?(Kt(r,e.left,t),Kt(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function Be(r){return r instanceof K||r instanceof Y?[Be(r.left),r].flat():r instanceof v?[r]:r instanceof $?[Be(r.left),Be(r.right)].flat():r instanceof N&&r.name==="where"&&!(r.args[0]instanceof J)?[]:[r]}function er(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!vo(r,e,t))return!1}return!0}function vo(r,e,t){let n=y.types[e.resourceType].searchParams?.[t.code];if(t.operator==="missing"&&n){let i=te(n.expression,r);return t.value==="true"?!i.length:i.length>0}switch(n?.type){case"reference":return Ro(r,t,n);case"string":case"uri":return Kr(r,t,n);case"token":return So(r,t,n);case"date":return Ao(r,t,n);default:return!1}}function Ro(r,e,t){let n=te(t.expression,r),i=ut(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 e.value.split(",")){let a=o.includes(s);if(!a&&e.code==="_compartment"&&(a=o.some(c=>c?.endsWith("/"+s))),a)return!i}return i}function So(r,e,t){return Yt(r.resourceType,t).type==="BOOLEAN"?bo(r,e,t):Kr(r,e,t,!0)}function bo(r,e,t){let n=te(t.expression,r),i=e.value==="true",o=n.includes(i);return ut(e.operator)?!o:o}function Kr(r,e,t,n){let i=te(t.expression,r),o=e.value.split(","),s=ut(e.operator);for(let a of i)for(let c of o)if(Zt(a,e.operator,c,n))return!s;return s}function Zt(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return Zt(r,e,o,!1)&&(!s||Zt(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 Ao(r,e,t){let n=te(t.expression,r),i=e.value.split(","),o=ut(e.operator);for(let s of n)for(let a of i)if(Eo(s,e.operator,a))return!o;return o}function Eo(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 ut(r){return r==="ne"||r==="not"}var Po={resourceType:"*"},Jr=["DomainConfiguration","JsonWebKey","Login","User"],Yr=["PasswordChangeRequest","Project","ProjectMembership"],Xr=(T=>(T.READ="read",T.VREAD="vread",T.UPDATE="update",T.PATCH="patch",T.DELETE="delete",T.HISTORY="history",T.HISTORY_INSTANCE="history-instance",T.HISTORY_TYPE="history-type",T.HISTORY_SYSTEM="history-system",T.CREATE="create",T.SEARCH="search",T.SEARCH_TYPE="search-type",T.SEARCH_SYSTEM="search-system",T.SEARCH_COMPARTMENT="search-compartment",T.CAPABILITIES="capabilities",T.TRANSACTION="transaction",T.BATCH="batch",T.OPERATION="operation",T))(Xr||{}),Co=["read","vread","history","history-instance"];function wo(r,e){if(r.resource){for(let t of r.resource)if(tr(t.resourceType,e))return!0}return!1}function Zr(r,e){if(Jr.includes(e))return!1;if(r.resource){for(let t of r.resource)if(tr(t.resourceType,e)&&!t.readonly)return!0}return!1}function Io(r,e){let t=e.resourceType;return Zr(r,t)?en(r,e,!1):!1}function en(r,e,t){if(r.resource){for(let n of r.resource)if(tn(e,t?"read":"update",n))return!0}return!1}function ko(r,e,t){if(!t)return Po;if(t.resource){for(let n of t.resource)if(tn(r,e,n))return n}}function tn(r,e,t){let n=r.resourceType;return!(!tr(t.resourceType,n)||t.readonly&&!Co.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!er(r,Qt(t.criteria)))}function tr(r,e){return r===e||r==="*"&&!Yr.includes(e)}function rr(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 nr(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 dt(){let r=new Uint32Array(28);return crypto.getRandomValues(r),Nt(r.buffer)}async function ir(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function lt(){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 rn(r){let e={};r=Xe(r);for(let i of r.entry||[]){delete i.resource?.meta;let o=i.resource?.id;o&&(e[o]=lt(),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)=>Do(i,o,e),2);return nn(JSON.parse(n))}function Do(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 nn(r){let e=Vo(r),{sorted:t,cycles:n}=Oo(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],f={...c,request:{...c.request,method:"PUT"}};o.push(f)}return{...r,entry:o}}function Oo(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 on(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(qt(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else on(n,e)}}function Vo(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&&on(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function Uo(r){r=Xe(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=lt());return rn(e)}var Fe=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 X={CSS:"text/css",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",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript"};var qe=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];return t&&t.forEach(n=>n.call(this,e)),!e.defaultPrevented}};function Lo(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=rr(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 or(r){return r.split(".").length===3}function pt(r){let[e,t,n]=r.split(".");return Lo(t)}function sr(r){try{return typeof pt(r).login_id=="string"}catch{return!1}}var _o,C=class{constructor(e){this[_o]="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)}};_o=Symbol.toStringTag;var je=class{constructor(){this.storage=typeof localStorage<"u"?localStorage:new ft}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?_t(t):void 0)}},ft=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]}};var Mo="2.1.3-9a0e690",No="https://api.medplum.com/",Bo=1e3,Fo=6e4,sn="Binary/",an={resourceType:"Device",id:"system",deviceName:[{name:"System"}]},pn=(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))(pn||{}),fn=(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))(fn||{}),hn=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(hn||{}),ar=class extends qe{constructor(t){super();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??qo(),this.storage=t?.storage??new je,this.createPdfImpl=t?.createPdf,this.baseUrl=un(t?.baseUrl??No),this.fhirBaseUrl=un(ht(this.baseUrl,t?.fhirUrlPath??"fhir/R4/")),this.authorizeUrl=ht(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=ht(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=ht(this.baseUrl,t?.logoutUrl??"oauth2/logout"),this.clientId=t?.clientId??"",this.clientSecret=t?.clientSecret??"",this.onUnauthenticated=t?.onUnauthenticated,this.cacheTime=t?.cacheTime??Fo,this.cacheTime>0?this.requestCache=new Fe(t?.resourceCacheSize??Bo):this.requestCache=void 0,t?.autoBatchTime?(this.autoBatchTime=t.autoBatchTime,this.autoBatchQueue=[]):(this.autoBatchTime=0,this.autoBatchQueue=void 0);let n=this.getActiveLogin();n&&(this.setAccessToken(n.accessToken,n.refreshToken),this.refreshProfile().catch(console.log)),this.setupStorageListener()}getBaseUrl(){return this.baseUrl}getAuthorizeUrl(){return this.authorizeUrl}getTokenUrl(){return this.tokenUrl}getLogoutUrl(){return this.logoutUrl}clear(){this.storage.clear(),this.clearActiveLogin()}clearActiveLogin(){this.storage.setString("activeLogin",void 0),this.requestCache?.clear(),this.accessToken=void 0,this.refreshToken=void 0,this.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=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 C(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,X.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)return this.processCode(i);await this.requestAuthorization(t)}signOutWithRedirect(){window.location.assign(this.logoutUrl)}async signInWithExternalAuth(t,n,i,o){let s=await this.ensureCodeChallenge(o);window.location.assign(this.getExternalAuthRedirectUri(t,n,i,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){let{codeChallenge:s,codeChallengeMethod:a}=o;if(!a)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!s)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");let c=new URL(t);return c.searchParams.set("response_type","code"),c.searchParams.set("client_id",n),c.searchParams.set("redirect_uri",i),c.searchParams.set("scope","openid profile email"),c.searchParams.set("state",JSON.stringify(o)),c.searchParams.set("code_challenge_method",a),c.searchParams.set("code_challenge",s),c.toString()}fhirUrl(...t){return new URL(t.join("/"),this.fhirBaseUrl)}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=new URLSearchParams(n).toString()),i}search(t,n,i){let o=this.fhirSearchUrl(t,n),s=o.toString()+"-search",a=this.getCacheEntry(s,i);if(a)return a.value;let c=new C((async()=>{let f=await this.get(o,i);if(f.entry)for(let l of f.entry)this.cacheResource(l.resource);return f})());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=o.toString()+"-searchOne",a=this.getCacheEntry(s,i);if(a)return a.value;let c=new C(this.search(t,o.searchParams,i).then(f=>f.entry?.[0]?.resource));return this.setCacheEntry(s,c),c}searchResources(t,n,i){let s=this.fhirSearchUrl(t,n).toString()+"-searchResources",a=this.getCacheEntry(s,i);if(a)return a.value;let c=new C(this.search(t,n,i).then(ln));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(f=>f.relation==="next");if(!a.entry?.length&&!c)break;yield ln(a),o=c?.url?new URL(c.url):void 0}}searchValueSet(t,n,i){let o=this.fhirUrl("ValueSet","$expand");return o.searchParams.set("url",t),o.searchParams.set("filter",n),this.get(o.toString(),i)}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 an;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 C(Promise.reject(new Error("Missing reference")));if(i==="system")return new C(Promise.resolve(an));let[o,s]=i.split("/");return!o||!s?new C(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}getSchema(){return y}requestSchema(t){if(t in y.types)return Promise.resolve(y);let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new C((async()=>{let s=`{
|
|
1
|
+
"use strict";var bt=Object.defineProperty;var Nn=Object.getOwnPropertyDescriptor;var Mn=Object.getOwnPropertyNames;var Bn=Object.prototype.hasOwnProperty;var qn=(r,e)=>{for(var t in e)bt(r,t,{get:e[t],enumerable:!0})},$n=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Mn(e))!Bn.call(r,i)&&i!==t&&bt(r,i,{get:()=>e[i],enumerable:!(n=Nn(e,i))||n.enumerable});return r};var jn=r=>$n(bt({},"__esModule",{value:!0}),r);var $s={};qn($s,{AccessPolicyInteraction:()=>yn,CPT:()=>xs,ClientStorage:()=>Oe,ContentType:()=>_,DEFAULT_SEARCH_COUNT:()=>xo,EventTarget:()=>ue,FhirFilterComparison:()=>De,FhirFilterConnective:()=>_e,FhirFilterNegation:()=>Ve,FhircastConnection:()=>Ie,Hl7Context:()=>j,Hl7Field:()=>re,Hl7Message:()=>vr,Hl7Segment:()=>le,ICD10:()=>Ts,InfixOperatorAtom:()=>B,LOINC:()=>hs,LRUCache:()=>Ce,MEDPLUM_VERSION:()=>ls,MedplumClient:()=>yr,MemoryStorage:()=>xt,OAuthClientAssertionType:()=>Dn,OAuthGrantType:()=>kn,OAuthTokenType:()=>On,OperationOutcomeError:()=>d,Operator:()=>un,OperatorPrecedence:()=>f,Parser:()=>Je,ParserBuilder:()=>be,PrefixOperatorAtom:()=>Se,PropertyType:()=>u,RXNORM:()=>gs,ReadablePromise:()=>P,SNOMED:()=>ys,SearchParameterType:()=>rr,TypedEventTarget:()=>we,UCUM:()=>gr,accepted:()=>Yn,allOk:()=>Hn,arrayBufferToBase64:()=>Nt,arrayBufferToHex:()=>Ft,arrayify:()=>ye,assertOk:()=>ri,badRequest:()=>k,booleanToTypedValue:()=>l,buildTypeName:()=>on,calculateAge:()=>pe,calculateAgeString:()=>ui,canReadResourceType:()=>zo,canWriteResource:()=>Jo,canWriteResourceType:()=>gn,capitalize:()=>A,checkForNull:()=>Sr,compressElement:()=>zi,convertContainedResourcesToBundle:()=>ts,convertToTransactionBundle:()=>vn,crawlResource:()=>vt,createConstraintIssue:()=>Dt,createFhircastMessagePayload:()=>fr,createProcessingIssue:()=>Vt,createReference:()=>Q,createStructureIssue:()=>y,created:()=>Qn,decodeBase64:()=>cr,deepClone:()=>Me,deepEquals:()=>fe,deepIncludes:()=>me,encodeBase64:()=>ur,encryptSHA256:()=>lr,evalFhirPath:()=>ee,evalFhirPathTyped:()=>ae,fhirPathArrayEquals:()=>He,fhirPathArrayEquivalent:()=>Qe,fhirPathEquals:()=>qt,fhirPathEquivalent:()=>Yr,fhirPathIs:()=>Te,fhirPathNot:()=>je,fhirTypeToJsType:()=>Rr,findObservationInterval:()=>Ei,findObservationReferenceRange:()=>Ai,findResourceByCode:()=>Vi,forbidden:()=>Kn,formatAddress:()=>_i,formatCodeableConcept:()=>qr,formatCoding:()=>$r,formatDate:()=>Fi,formatDateTime:()=>qe,formatFamilyName:()=>Li,formatGivenName:()=>Ui,formatHl7DateTime:()=>Un,formatHumanName:()=>ge,formatMoney:()=>Qi,formatObservationValue:()=>jr,formatPeriod:()=>Ni,formatQuantity:()=>W,formatRange:()=>Hi,formatSearchQuery:()=>Oo,formatTime:()=>Br,formatTiming:()=>$i,generateId:()=>ce,getAllDataTypes:()=>Gt,getAllQuestionnaireAnswers:()=>di,getCodeBySystem:()=>Ne,getDataType:()=>J,getDateProperty:()=>ci,getDisplayString:()=>Vr,getElementDefinition:()=>ve,getElementDefinitionTypeName:()=>We,getExpressionForResourceType:()=>Bo,getExpressionsForResourceType:()=>ir,getExtension:()=>hi,getExtensionValue:()=>mi,getIdentifier:()=>pi,getImageSrc:()=>ai,getNestedProperty:()=>St,getPropertyDisplayName:()=>ao,getQuestionnaireAnswers:()=>li,getRandomString:()=>ht,getReferenceString:()=>_t,getResourceTypes:()=>io,getSearchParameter:()=>so,getSearchParameterDetails:()=>nr,getSearchParameters:()=>oo,getStatus:()=>ti,getTypedPropertyValue:()=>C,globalSchema:()=>w,gone:()=>zn,indexSearchParameter:()=>ze,indexSearchParameterBundle:()=>no,indexStructureDefinitionBundle:()=>Wt,inflateBaseSchema:()=>Bt,inflateElement:()=>Qr,initFhirPathParserBuilder:()=>se,isAccepted:()=>Xn,isCompletedSubscriptionRequest:()=>pr,isDataTypeLoaded:()=>Kt,isEmpty:()=>S,isFhircastResourceType:()=>Rn,isGone:()=>ei,isJwt:()=>mr,isLowerCase:()=>he,isMedplumAccessToken:()=>hr,isNotFound:()=>Zn,isObject:()=>M,isOk:()=>Le,isOperationOutcome:()=>de,isPeriod:()=>Xr,isProfileResource:()=>Dr,isQuantity:()=>b,isQuantityEquivalent:()=>$t,isReference:()=>Yt,isResource:()=>D,isResourceType:()=>Jt,isResourceTypeSchema:()=>Ke,isStringArray:()=>Lt,isUUID:()=>bi,isValidDate:()=>$e,loadDataType:()=>rn,matchesAccessPolicy:()=>xn,matchesRange:()=>Mt,matchesSearchRequest:()=>sr,normalizeErrorString:()=>Ir,normalizeOperationOutcome:()=>Fe,notFound:()=>wt,notModified:()=>Wn,operationOutcomeIssueToString:()=>kr,operationOutcomeToString:()=>kt,parseCriteriaAsSearchRequest:()=>pt,parseFhirPath:()=>dt,parseFilterParameter:()=>Cs,parseHl7DateTime:()=>ws,parseJWTPayload:()=>gt,parseMappingLanguage:()=>bs,parseReference:()=>ii,parseSearchDefinition:()=>vo,parseSearchRequest:()=>To,parseSearchUrl:()=>er,parseStructureDefinition:()=>Ge,parseXFhirQuery:()=>ko,preciseEquals:()=>ki,preciseGreaterThan:()=>Di,preciseGreaterThanOrEquals:()=>Mr,preciseLessThan:()=>Oi,preciseLessThanOrEquals:()=>Nr,preciseRound:()=>Ii,projectAdminResourceTypes:()=>hn,protectedResourceTypes:()=>mn,removeDuplicates:()=>xe,reorderBundle:()=>Sn,resolveId:()=>ni,satisfiedAccessPolicy:()=>Yo,serializeFhircastSubscriptionRequest:()=>yt,serverError:()=>It,setCodeBySystem:()=>Ri,setIdentifier:()=>fi,singleton:()=>O,sleep:()=>Be,streamToBuffer:()=>Vs,stringify:()=>Ut,stringifyTypedValue:()=>Xt,subsetResource:()=>Zi,toJsBoolean:()=>L,toTypedValue:()=>T,tooManyRequests:()=>Jn,tryGetDataType:()=>zt,unauthorized:()=>Gn,validate:()=>Ls,validateFhircastSubscriptionRequest:()=>ke,validateResourceType:()=>ks,validationError:()=>h});module.exports=jn($s);var Rt="ok",Et="created",At="gone",Pt="not-modified",Ct="not-found",Pr="unauthorized",Cr="forbidden",wr="too-many-requests",Ue="accepted",Hn={resourceType:"OperationOutcome",id:Rt,issue:[{severity:"information",code:"informational",details:{text:"All OK"}}]},Qn={resourceType:"OperationOutcome",id:Et,issue:[{severity:"information",code:"informational",details:{text:"Created"}}]},Wn={resourceType:"OperationOutcome",id:Pt,issue:[{severity:"information",code:"informational",details:{text:"Not Modified"}}]},wt={resourceType:"OperationOutcome",id:Ct,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},Gn={resourceType:"OperationOutcome",id:Pr,issue:[{severity:"error",code:"login",details:{text:"Unauthorized"}}]},Kn={resourceType:"OperationOutcome",id:Cr,issue:[{severity:"error",code:"forbidden",details:{text:"Forbidden"}}]},zn={resourceType:"OperationOutcome",id:At,issue:[{severity:"error",code:"deleted",details:{text:"Gone"}}]},Jn={resourceType:"OperationOutcome",id:wr,issue:[{severity:"error",code:"throttled",details:{text:"Too Many Requests"}}]};function Yn(r){return{resourceType:"OperationOutcome",id:Ue,issue:[{severity:"information",code:"informational",details:{text:"Accepted"},diagnostics:r}]}}function k(r,e){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:r},expression:e?[e]:void 0}]}}function h(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"structure",details:{text:r}}]}}function It(r){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"exception",details:{text:"Internal server error"},diagnostics:r.toString()}]}}function de(r){return typeof r=="object"&&r!==null&&r.resourceType==="OperationOutcome"}function Le(r){return r.id===Rt||r.id===Et||r.id===Pt||r.id===Ue}function Xn(r){return r.id===Ue}function Zn(r){return r.id===Ct}function ei(r){return r.id===At}function ti(r){return r.id===Rt?200:r.id===Et?201:r.id===Ue?202:r.id===Pt?304:r.id===Pr?401:r.id===Cr?403:r.id===Ct?404:r.id===At?410:r.id===wr?429:400}function ri(r,e){if(!Le(r)||e===void 0)throw new d(r)}var d=class extends Error{constructor(t,n){super(kt(t));this.outcome=t,this.cause=n}};function Fe(r){return r instanceof d?r.outcome:de(r)?r:k(Ir(r))}function Ir(r){return r?typeof r=="string"?r:r instanceof Error?r.message:de(r)?kt(r):typeof r=="object"&&"code"in r&&typeof r.code=="string"?r.code:JSON.stringify(r):"Unknown error"}function kt(r){let e=r.issue?.map(kr)??[];return e.length>0?e.join("; "):"Unknown error"}function kr(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 Ot(r,e,t,n){let i={severity:"error",code:r,details:{text:e},expression:[t]};return n&&(i.diagnostics=JSON.stringify(n)),i}function y(r,e){return Ot("structure",e,r)}function Dt(r,e){return Ot("invariant",`Constraint ${e.key} not met: ${e.description}`,r,{fhirpath:e.expression})}function Vt(r,e,t,n){return Ot("processing",e,r,{...n,error:t})}function Q(r){let e=_t(r),t=Vr(r);return t===e?{reference:e}:{reference:e,display:t}}function _t(r){return r.resourceType+"/"+r.id}function ni(r){return r?.reference?.split("/")[1]}function ii(r){if(r?.reference===void 0)return;let[e,t]=r.reference.split("/");if(!(e===""||t===""||t===void 0))return[e,t]}function Dr(r){return r.resourceType==="Patient"||r.resourceType==="Practitioner"||r.resourceType==="RelatedPerson"}function Vr(r){if(Dr(r)){let e=oi(r);if(e)return e}if(r.resourceType==="Device"){let e=si(r);if(e)return e}return r.resourceType==="Observation"&&"code"in r&&r.code?.text?r.code.text:r.resourceType==="User"&&r.email?r.email:"name"in r&&r.name&&typeof r.name=="string"?r.name:_t(r)}function oi(r){let e=r.name;if(e&&e.length>0)return ge(e[0])}function si(r){let e=r.deviceName;if(e&&e.length>0)return e[0].name}function ai(r){if(!("photo"in r))return;let e=r.photo;if(e)if(Array.isArray(e))for(let t of e){let n=Or(t);if(n)return n}else return Or(e)}function Or(r){if(r.url&&r.contentType&&r.contentType.startsWith("image/"))return r.url}function ci(r){return r?new Date(r):void 0}function pe(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(),m=n.getUTCDate(),p=a-i;(c<o||c===o&&m<s)&&p--;let H=a*12+c-(i*12+o);m<s&&H--;let Fn=Math.floor((n.getTime()-t.getTime())/(1e3*60*60*24));return{years:p,months:H,days:Fn}}function ui(r,e){let{years:t,months:n,days:i}=pe(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 li(r){let e={};return _r(r.item,e),e}function _r(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer[0]),_r(t.item,e)}function di(r){let e={};return Ur(r.item,e),e}function Ur(r,e){if(r)for(let t of r)t.linkId&&t.answer&&t.answer.length>0&&(e[t.linkId]=t.answer),Ur(t.item,e)}function pi(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 fi(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 mi(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?.valueString}function hi(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 Ut(r,e){return JSON.stringify(r,yi,e?2:void 0)}function yi(r,e){return!gi(r)&&S(e)?void 0:e}function gi(r){return!!/\d+$/.exec(r)}function S(r){if(r==null)return!0;let e=typeof r;return e==="string"&&r===""||e==="object"&&Object.keys(r).length===0}function fe(r,e,t){return r===e||S(r)&&S(e)?!0:S(r)||S(e)?!1:Array.isArray(r)&&Array.isArray(e)?xi(r,e):Array.isArray(r)||Array.isArray(e)?!1:M(r)&&M(e)?Ti(r,e,t):(M(r)||M(e),!1)}function xi(r,e){if(r.length!==e.length)return!1;for(let t=0;t<r.length;t++)if(!fe(r[t],e[t]))return!1;return!0}function Ti(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(!fe(o,s,i))return!1}return!0}function me(r,e){return S(r)?!0:S(e)?!1:Array.isArray(r)&&Array.isArray(e)?vi(r,e):Array.isArray(r)||Array.isArray(e)?!1:M(r)&&M(e)?Si(r,e):M(r)||M(e)?!1:r===e}function vi(r,e){return r.every(t=>e.some(n=>me(t,n)))}function Si(r,e){return Object.entries(r).every(([t,n])=>t in e&&me(n,e[t]))}function Me(r){return JSON.parse(JSON.stringify(r))}function bi(r){return!!/^\w{8}-\w{4}-\w{4}-\w{4}-\w{12}$/i.exec(r)}function M(r){return r!==null&&typeof r=="object"}function Lt(r){return r.every(e=>typeof e=="string")}var Lr=[];for(let r=0;r<256;r++)Lr.push(r.toString(16).padStart(2,"0"));function Ft(r){let e=new Uint8Array(r),t=new Array(e.length);for(let n=0;n<e.length;n++)t[n]=Lr[e[n]];return t.join("")}function Nt(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 A(r){return r.charAt(0).toUpperCase()+r.substring(1)}function he(r){return r===r.toLowerCase()&&r!==r.toUpperCase()}function Ne(r,e){return r.coding?.find(t=>t.system===e)?.code}function Ri(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 Ei(r,e,t,n){return r.qualifiedInterval?.find(i=>Fr(i,e)&&wi(i,t,r.quantitativeDetails?.decimalPrecision)&&(n===void 0||i.category===n))}function Ai(r,e,t){return r.qualifiedInterval?.find(n=>Fr(n,e)&&t.includes(n.condition))}function Fr(r,e){return Pi(r,e)&&Ci(r,e)}function Pi(r,e){return!r.gender||r.gender===e.gender}function Ci(r,e){return!r.age||Mt(pe(e.birthDate).years,r.age)}function wi(r,e,t){return!!r.range&&Mt(e,r.range,t)}function Mt(r,e,t){return(e.low?.value===void 0||Mr(r,e.low.value,t))&&(e.high?.value===void 0||Nr(r,e.high.value,t))}function Ii(r,e){return parseFloat(r.toFixed(e))}function ki(r,e,t){return U(r,t)===U(e,t)}function Oi(r,e,t){return U(r,t)<U(e,t)}function Di(r,e,t){return U(r,t)>U(e,t)}function Nr(r,e,t){return U(r,t)<=U(e,t)}function Mr(r,e,t){return U(r,t)>=U(e,t)}function U(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}function Vi(r,e,t){return r.find(n=>typeof e=="string"?Ne(n.code||{},t)===e:Ne(n.code||{},t)===Ne(e,t))}function ye(r){if(r)return Array.isArray(r)?r:[r]}var Be=r=>new Promise(e=>{setTimeout(e,r)});function _i(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 ge(r,e){let t=[];return 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&&r.text?r.text:t.join(" ").trim()}function Ui(r){let e=[];return r.given&&e.push(...r.given),e.join(" ").trim()}function Li(r){return r.family??""}function $e(r){return r instanceof Date&&!isNaN(r.getTime())}function Fi(r,e,t){if(!r)return"";let n=new Date(r);return $e(n)?(n.setUTCHours(0,0,0,0),n.toLocaleDateString(e,{timeZone:"UTC",...t})):""}function Br(r,e,t){if(!r)return"";let n=new Date("2000-01-01T"+r+"Z");return $e(n)?n.toLocaleTimeString(e,t):""}function qe(r,e,t){if(!r)return"";let n=new Date(r);return $e(n)?n.toLocaleString(e,t):""}function Ni(r,e,t){return!r||!r.start&&!r.end?"":qe(r.start,e,t)+" - "+qe(r.end,e,t)}var Mi={s:"every second",min:"every minute",h:"hourly",d:"daily",wk:"weekly",mo:"monthly",a:"annually"},Bi={s:"second",min:"minute",h:"hour",d:"day",wk:"week",mo:"month",a:"year"},qi={s:"seconds",min:"minutes",h:"hours",d:"days",wk:"weeks",mo:"months",a:"years"};function $i(r){if(!r)return"";let e=[];return ji(e,r.repeat),r.event&&e.push(r.event.map(t=>qe(t)).join(", ")),A(e.join(" ").trim())}function ji(r,e){if(!e?.periodUnit)return;let t=e.frequency??1,n=e.period??1,i=e.periodUnit;t===1&&n===1?r.push(Mi[i]):(t===1?r.push("once"):r.push(t+" times"),n===1?r.push("per "+Bi[i]):r.push("per "+n+" "+qi[i])),e.dayOfWeek&&r.push("on "+e.dayOfWeek.map(A).join(", ")),e.timeOfDay&&r.push("at "+e.timeOfDay.map(o=>Br(o)).join(", "))}function Hi(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=Gi(n.value,e),`> ${W(n,e)}`):`>= ${W(n,e)}`:n?.value===void 0&&i?.value!==void 0?t&&e!==void 0?(i.value=Wi(i.value,e),`< ${W(i,e)}`):`<= ${W(i,e)}`:(n?.unit===i?.unit&&delete n?.unit,`${W(n,e)} - ${W(i,e)}`)}function W(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 Qi(r){return r?.value===void 0?"":r.value.toLocaleString(void 0,{style:"currency",currency:r.currency??"USD",currencyDisplay:"narrowSymbol"})}function qr(r){return r?r.text?r.text:r.coding?r.coding.map(e=>$r(e)).join(", "):"":""}function $r(r){return r?.display??r?.code??""}function jr(r){return r?"component"in r?r.component.map(e=>jr(e)).join(" / "):r.valueQuantity?W(r.valueQuantity):r.valueCodeableConcept?qr(r.valueCodeableConcept):r.valueString?r.valueString:"":""}function Wi(r,e,t=1){return(Hr(r,e)+t)*Math.pow(10,-e)}function Gi(r,e,t=1){return(Hr(r,e)-t)*Math.pow(10,-e)}function Hr(r,e){return e===void 0?r:Math.round(r*Math.pow(10,e))}var Ki={"http://hl7.org/fhirpath/System.String":"string"};function zi(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:Ki[t.code]??t.code})),e}function Qr(r){let e=r.max&&r.max===Number.MAX_SAFE_INTEGER?Number.POSITIVE_INFINITY:r.max;return{path:"",description:"",type:r.type??[],min:r.min??0,max:e??1,isArray:!!e&&e>1,constraints:[]}}function Bt(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,Qr(o)])),constraints:[],innerTypes:[]};return e}var Wr={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"}]},maxDosePerLifetime:{type:[{code:"Quantity"}]}}},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:"string"}]},"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"}]},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"}]},high:{type:[{code:"Quantity"}]}}},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"}]},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"}]}}},MetadataResource:{elements:{id:{type:[{code:"string"}]},meta:{type:[{code:"Meta"}]},implicitRules:{type:[{code:"uri"}]},language:{type:[{code:"code"}]},text:{type:[{code:"Narrative"}]},contained:{max:9007199254740991,type:[{code:"Resource"}]},extension:{max:9007199254740991,type:[{code:"Extension"}]},modifierExtension:{max:9007199254740991,type:[{code:"Extension"}]},url:{type:[{code:"uri"}]},version:{type:[{code:"string"}]},name:{type:[{code:"string"}]},title:{type:[{code:"string"}]},status:{min:1,type:[{code:"code"}]},experimental:{type:[{code:"boolean"}]},date:{type:[{code:"dateTime"}]},publisher:{type:[{code:"string"}]},contact:{max:9007199254740991,type:[{code:"ContactDetail"}]},description:{type:[{code:"markdown"}]},useContext:{max:9007199254740991,type:[{code:"UsageContext"}]},jurisdiction:{max:9007199254740991,type:[{code:"CodeableConcept"}]}}},IdentityProvider:{elements:{authorizeUrl:{min:1,type:[{code:"string"}]},tokenUrl:{min:1,type:[{code:"string"}]},userInfoUrl:{min:1,type:[{code:"string"}]},clientId:{min:1,type:[{code:"string"}]},clientSecret:{min:1,type:[{code:"string"}]},useSubject:{type:[{code:"boolean"}]}}}};function l(r){return[{type:u.boolean,value:r}]}function T(r){return r==null?{type:"undefined",value:void 0}:Number.isSafeInteger(r)?{type:u.integer,value:r}:typeof r=="number"?{type:u.decimal,value:r}:typeof r=="boolean"?{type:u.boolean,value:r}:typeof r=="string"?{type:u.string,value:r}:b(r)?{type:u.Quantity,value:r}:D(r)?{type:r.resourceType,value:r}:{type:u.BackboneElement,value:r}}function L(r){return r.length===0?!1:!!r[0].value}function O(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){if(!r.value)return;let t=ve(r.type,e);return t?Yi(r,e,t):Xi(r,e)}function Yi(r,e,t){let n=t.type;if(!n||n.length===0)return;let i,o="undefined";if(n.length===1)i=r.value[e],o=n[0].code;else for(let a of n){let c=e.replace("[x]","")+A(a.code);if(c in r.value){i=r.value[c],o=a.code;break}}let s=r.value["_"+e];if(s&&(Array.isArray(i)?i=i.map((a,c)=>s[c]?Jr(a??{},s[c]):a):i=Jr(i??{},s)),!S(i))return(o==="Element"||o==="BackboneElement")&&(o=t.type[0].code),Array.isArray(i)?i.map(a=>Gr(a,o)):Gr(i,o)}function Gr(r,e){return e==="Resource"&&D(r)&&(e=r.resourceType),{type:e,value:r}}function Xi(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 u){let o=e+A(i);if(o in t){n=t[o];break}}if(!S(n))return Array.isArray(n)?n.map(T):T(n)}function xe(r){let e=[];for(let t of r){let n=!1;for(let i of e)if(L(qt(t,i))){n=!0;break}n||e.push(t)}return e}function je(r){return l(!L(r))}function He(r,e){return r.length===0||e.length===0?[]:r.length!==e.length?l(!1):l(r.every((t,n)=>L(qt(t,e[n]))))}function qt(r,e){let t=r.value?.valueOf(),n=e.value?.valueOf();return typeof t=="number"&&typeof n=="number"?l(Math.abs(t-n)<1e-8):b(t)&&b(n)?l($t(t,n)):l(typeof t=="object"&&typeof n=="object"?jt(r,e):t===n)}function Qe(r,e){return r.length===0&&e.length===0?l(!0):r.length!==e.length?l(!1):(r.sort(Kr),e.sort(Kr),l(r.every((t,n)=>L(Yr(t,e[n])))))}function Yr(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"?l(Math.abs(s-a)<.01):b(s)&&b(a)?l($t(s,a)):l(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"?jt({...s,id:void 0},{...a,id:void 0}):typeof s=="string"&&typeof a=="string"?s.toLowerCase()===a.toLowerCase():s===a)}function Kr(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 Te(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 typeof t=="string"&&!!/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t);case"DateTime":return typeof t=="string"&&!!/^\d{4}(-\d{2}(-\d{2})?)?T/.exec(t);case"Time":return typeof t=="string"&&!!/^T\d/.exec(t);case"Period":return Xr(t);case"Quantity":return b(t);default:return typeof t=="object"&&t?.resourceType===e}}function Xr(r){return!!(r&&typeof r=="object"&&"start"in r)}function b(r){return!!(r&&typeof r=="object"&&"value"in r&&typeof r.value=="number")}function $t(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 jt(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(zr(o)&&zr(s)){if(!jt(o,s))return!1}else if(o!==s)return!1}return!0}function zr(r){return r!==null&&typeof r=="object"}function Jr(r,e){return delete e.__proto__,delete e.constructor,Object.assign(r,e)}function Ge(r){return new Qt(r).parse()}var G=Bt(Wr);function Wt(r){let e=Array.isArray(r)?r:r.entry?.map(t=>t.resource)??[];for(let t of e)rn(t)}function rn(r){if(!r?.name)throw new Error("Failed loading StructureDefinition from bundle");if(r.resourceType!=="StructureDefinition")return;let e=Ge(r);G[r.name]=e;for(let t of e.innerTypes)t.parentType=e,G[t.name]=t}function Gt(){return G}function Kt(r){return!!G[r]}function zt(r){return G[r]}function J(r){let e=G[r];if(!e)throw new d(It(Error("Unknown data type: "+r)));return e}function Jt(r){let e=G[r];return e&&Ke(e)}var Qt=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,url:e.url,kind:e.kind,description:e.description,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=Ht(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[Ht(e,n.path)]=t;break}n=n.parent}if(!n){let i=Ht(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&&!ne(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;this.backboneContext={type:{name:We(e),description:e.definition,elements:{},constraints:this.parseElementDefinition(e).constraints,innerTypes:[]},path:e.path??"",parent:ne(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}enterSlice(e,t){ro(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&&!ne(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!ne(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),delete this.backboneContext;this.slicingContext&&!ne(this.slicingContext.path,e?.path)&&(this.slicingContext?.current&&this.slicingContext.field.slices.push(this.slicingContext.current),delete this.slicingContext)}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=this.elementIndex[e.contentReference.slice(e.contentReference.indexOf("#")+1)];return t?{...t,id:e.id,path:e.path,min:e.min??t.min,max:e.max??t.max,contentReference:e.contentReference,definition:e.definition}:void 0}return e}}isInnerType(e){let t=this.peek();return!!(ne(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);this.slicingContext.current&&this.slicingContext.field.slices.push(this.slicingContext.current),this.slicingContext.current={name:e.sliceName??"",type:e.type?.map(t=>({code:t.code??"",targetProfile:t.targetProfile})),elements:{},min:e.min??0,max:e.max==="*"?Number.POSITIVE_INFINITY:Number.parseInt(e.max,10)}}parseElementDefinition(e){let t=en(e.max),n=e.base?.max?en(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:(e.type??[]).map(o=>({code:["BackboneElement","Element"].includes(o.code)?We(e):o.code??"",targetProfile:o.targetProfile})),fixed:tn(C(i,"fixed")),pattern:tn(C(i,"pattern")),binding:e.binding}}};function Zi(r,e){if(!r)return;let t=[];for(let n of e){t.push("_"+n);let i=G[r.resourceType].elements[n+"[x]"];i&&t.push(...i.type.map(o=>n+A(o.code)))}for(let n of Object.getOwnPropertyNames(r))!e.includes(n)&&!t.includes(n)&&!eo.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(Zr):[Zr]},r}var Zr={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},eo=["resourceType","id","meta"];function en(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function Ht(r,e=""){return to(r.path,e)}function to(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function ne(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function tn(r){return Array.isArray(r)&&r.length>0?r[0]:S(r)?void 0:r}function ro(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")}var u={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 no(r){for(let e of r.entry){let t=e.resource;t.resourceType==="SearchParameter"&&ze(t)}}function ze(r){for(let e of r.base??[]){let t=w.types[e];t||(t={searchParamsDetails:{}},w.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 We(r){let e=r.type?.[0]?.code;return e==="BackboneElement"||e==="Element"?on((r.base?.path??r.path)?.split(".")):e}function on(r){return r.length===1?r[0]:r.map(A).join("")}function Ke(r){return r.kind==="resource"&&r.name!=="Resource"&&r.name!=="DomainResource"}function io(){return Object.values(Gt()).filter(Ke).map(r=>r.name)}function oo(r){return w.types[r]?.searchParams}function so(r,e){return w.types[r]?.searchParams?.[e]}function ao(r){return r.replaceAll("[x]","").split(".").pop().split(/(?=[A-Z])/).map(uo).join(" ").replace("_"," ").replace(/\s+/g," ")}var co=new Set(["ID","IP","PKCE","JWKS","URI","URL"]);function uo(r){let e=r.toUpperCase();return co.has(e)?e:e.charAt(0)+r.slice(1)}function ve(r,e){let t=zt(r);if(t)return t.elements[e]??t.elements[e+"[x]"]}function D(r){return!!(r&&typeof r=="object"&&"resourceType"in r)}function Yt(r){return!!(r&&typeof r=="object"&&"reference"in r)}var w={types:{}};function Xt(r){switch(r.type){case u.uuid:case u.uri:case u.url:case u.string:case u.oid:case u.markdown:case u.id:case u.code:case u.canonical:case u.base64Binary:case u.SystemString:case u.date:case u.dateTime:case u.instant:return r.value;case u.Identifier:return`${r.value.system??""}|${r.value.value}`;case u.Coding:return nn(r.value);case u.CodeableConcept:return r.value.coding?.map(nn).join(",")??r.value.text;case u.HumanName:return r.value.text?r.value.text:ge(r.value);case u.unsignedInt:case u.positiveInt:case u.integer:case u.decimal:return r.value.toString();case u.boolean:return r.value?"true":"false";case u.Extension:return r.value.url;case u.ContactPoint:return r.value.value;case u.Quantity:case u.Age:case u.Count:case u.Duration:return`${r.value.value}|${r.value.system??""}|${r.value.code??r.value.unit??""}`;case u.Reference:return r.value.reference;default:return D(r.value)?Q(r.value).reference:JSON.stringify(r)}}function nn(r){return r?`${r.system??""}|${r.code}`:""}var Se=class{constructor(e,t){this.operator=e;this.child=t}toString(){return`${this.operator}(${this.child.toString()})`}},B=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 Je(e,this.prefixParselets,this.infixParselets)}},Je=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}" 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]}};function ie(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 Re=()=>[],R={empty:(r,e)=>l(e.length===0),exists:(r,e,t)=>t?l(e.filter(n=>L(t.eval(r,[n]))).length>0):l(e.length>0),all:(r,e,t)=>l(e.every(n=>L(t.eval(r,[n])))),allTrue:(r,e)=>{for(let t of e)if(!t.value)return l(!1);return l(!0)},anyTrue:(r,e)=>{for(let t of e)if(t.value)return l(!0);return l(!1)},allFalse:(r,e)=>{for(let t of e)if(t.value)return l(!1);return l(!0)},anyFalse:(r,e)=>{for(let t of e)if(!t.value)return l(!0);return l(!1)},subsetOf:Re,supersetOf:Re,count:(r,e)=>[{type:u.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)=>l(e.length===R.distinct(r,e).length),where:(r,e,t)=>e.filter(n=>L(t.eval(r,[n]))),select:(r,e,t)=>e.map(n=>t.eval(r,[n])).flat(),repeat:Re,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,e),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,e),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,e);return xe([...e,...n])},combine:(r,e,t)=>{if(!t)return e;let n=t.eval(r,e);return[...e,...n]},htmlChecks:(r,e,t)=>[T(!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 L(o)?n.eval(r,e):i?i.eval(r,e):[]},toBoolean:(r,e)=>{if(e.length===0)return[];let[{value:t}]=N(e,1);if(typeof t=="boolean")return[{type:u.boolean,value:t}];if(typeof t=="number"&&(t===0||t===1))return l(!!t);if(typeof t=="string"){let n=t.toLowerCase();if(["true","t","yes","y","1","1.0"].includes(n))return l(!0);if(["false","f","no","n","0","0.0"].includes(n))return l(!1)}return[]},convertsToBoolean:(r,e)=>e.length===0?[]:l(R.toBoolean(r,e).length===1),toInteger:(r,e)=>{if(e.length===0)return[];let[{value:t}]=N(e,1);return typeof t=="number"?[{type:u.integer,value:t}]:typeof t=="string"&&/^[+-]?\d+$/.exec(t)?[{type:u.integer,value:parseInt(t,10)}]:typeof t=="boolean"?[{type:u.integer,value:t?1:0}]:[]},convertsToInteger:(r,e)=>e.length===0?[]:l(R.toInteger(r,e).length===1),toDate:(r,e)=>{if(e.length===0)return[];let[{value:t}]=N(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:u.date,value:ie(t)}]:[]},convertsToDate:(r,e)=>e.length===0?[]:l(R.toDate(r,e).length===1),toDateTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=N(e,1);return typeof t=="string"&&/^\d{4}(-\d{2}(-\d{2})?)?/.exec(t)?[{type:u.dateTime,value:ie(t)}]:[]},convertsToDateTime:(r,e)=>e.length===0?[]:l(R.toDateTime(r,e).length===1),toDecimal:(r,e)=>{if(e.length===0)return[];let[{value:t}]=N(e,1);return typeof t=="number"?[{type:u.decimal,value:t}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?$/.exec(t)?[{type:u.decimal,value:parseFloat(t)}]:typeof t=="boolean"?[{type:u.decimal,value:t?1:0}]:[]},convertsToDecimal:(r,e)=>e.length===0?[]:l(R.toDecimal(r,e).length===1),toQuantity:(r,e)=>{if(e.length===0)return[];let[{value:t}]=N(e,1);return b(t)?[{type:u.Quantity,value:t}]:typeof t=="number"?[{type:u.Quantity,value:{value:t,unit:"1"}}]:typeof t=="string"&&/^-?\d{1,9}(\.\d{1,9})?/.exec(t)?[{type:u.Quantity,value:{value:parseFloat(t),unit:"1"}}]:typeof t=="boolean"?[{type:u.Quantity,value:{value:t?1:0,unit:"1"}}]:[]},convertsToQuantity:(r,e)=>e.length===0?[]:l(R.toQuantity(r,e).length===1),toString:(r,e)=>{if(e.length===0)return[];let[{value:t}]=N(e,1);return t==null?[]:b(t)?[{type:u.string,value:`${t.value} '${t.unit}'`}]:[{type:u.string,value:t.toString()}]},convertsToString:(r,e)=>e.length===0?[]:l(R.toString(r,e).length===1),toTime:(r,e)=>{if(e.length===0)return[];let[{value:t}]=N(e,1);if(typeof t=="string"){let n=/^T?(\d{2}(:\d{2}(:\d{2})?)?)/.exec(t);if(n)return[{type:u.time,value:ie("T"+n[1])}]}return[]},convertsToTime:(r,e)=>e.length===0?[]:l(R.toTime(r,e).length===1),indexOf:(r,e,t)=>I((n,i)=>n.indexOf(i),r,e,t),substring:(r,e,t,n)=>I((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)=>I((n,i)=>n.startsWith(i),r,e,t),endsWith:(r,e,t)=>I((n,i)=>n.endsWith(i),r,e,t),contains:(r,e,t)=>I((n,i)=>n.includes(i),r,e,t),upper:(r,e)=>I(t=>t.toUpperCase(),r,e),lower:(r,e)=>I(t=>t.toLowerCase(),r,e),replace:(r,e,t,n)=>I((i,o,s)=>i.replaceAll(o,s),r,e,t,n),matches:(r,e,t)=>I((n,i)=>!!new RegExp(i).exec(n),r,e,t),replaceMatches:(r,e,t,n)=>I((i,o,s)=>i.replaceAll(o,s),r,e,t,n),length:(r,e)=>I(t=>t.length,r,e),toChars:(r,e)=>I(t=>t?t.split(""):void 0,r,e),abs:(r,e)=>F(Math.abs,r,e),ceiling:(r,e)=>F(Math.ceil,r,e),exp:(r,e)=>F(Math.exp,r,e),floor:(r,e)=>F(Math.floor,r,e),ln:(r,e)=>F(Math.log,r,e),log:(r,e,t)=>F((n,i)=>Math.log(n)/Math.log(i),r,e,t),power:(r,e,t)=>F(Math.pow,r,e,t),round:(r,e)=>F(Math.round,r,e),sqrt:(r,e)=>F(Math.sqrt,r,e),truncate:(r,e)=>F(t=>t|0,r,e),children:Re,descendants:Re,trace:(r,e,t)=>(console.log("trace",e,t),e),now:()=>[{type:u.dateTime,value:new Date().toISOString()}],timeOfDay:()=>[{type:u.time,value:new Date().toISOString().substring(11)}],today:()=>[{type:u.date,value:new Date().toISOString().substring(0,10)}],between:(r,e,t,n,i)=>{let o=R.toDateTime(r,t.eval(r,e));if(o.length===0)throw new Error("Invalid start date");let s=R.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=pe(o[0].value,s[0].value);return[{type:u.Quantity,value:{value:c[a],unit:a}}]},is:(r,e,t)=>{let n="";return t instanceof q?n=t.name:t instanceof K&&(n=t.left.name+"."+t.right.name),n?e.map(i=>({type:u.boolean,value:Te(i,n)})):[]},not:(r,e)=>R.toBoolean(r,e).map(t=>({type:u.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 T(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:u.BackboneElement,value:void 0}}).filter(t=>!!t.value),as:(r,e)=>e,type:(r,e)=>e.map(({value:t})=>typeof t=="boolean"?{type:u.BackboneElement,value:{namespace:"System",name:"Boolean"}}:typeof t=="number"?{type:u.BackboneElement,value:{namespace:"System",name:"Integer"}}:D(t)?{type:u.BackboneElement,value:{namespace:"FHIR",name:t.resourceType}}:{type:u.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:u.boolean,value:o.value?.resourceType===i}))}};function I(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=N(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(T):[T(o)]}function F(r,e,t,...n){if(t.length===0)return[];let[{value:i}]=N(t,1),o=b(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?u.Quantity:t[0].type,m=o?{...i,value:a}:a;return[{type:c,value:m}]}function N(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}var Ye=class{constructor(e,t){this.original=e;this.child=t}eval(e,t){try{return t.length>0?t.map(n=>this.child.eval(e,[n])).flat():this.child.eval(e,[])}catch(n){throw new Error(`FhirPathError on "${this.original}": ${n}`)}}toString(){return this.child.toString()}},V=class{constructor(e){this.value=e}eval(){return[this.value]}toString(){let e=this.value.value;return typeof e=="string"?`'${e}'`:e.toString()}},q=class{constructor(e){this.name=e}eval(e,t){if(this.name==="$this")return t;if(this.name.startsWith("%")){let n=e.variables[this.name.slice(1)];if(!n)throw new Error(`Undefined variable ${this.name}`);return[n]}return t.flatMap(n=>this.evalValue(n)).filter(n=>n?.value!==void 0)}evalValue(e){let t=e.value;if(!(!t||typeof t!="object"))return D(t)&&t.resourceType===this.name?e:C(e,this.name)}toString(){return this.name}},Xe=class{eval(){return[]}toString(){return"{}"}},Ze=class extends Se{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()}},Y=class extends B{constructor(e,t){super("as",e,t)}eval(e,t){return R.ofType(e,this.left.eval(e,t),this.right)}},v=class extends B{},E=class extends v{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=b(s)?s.value:s,m=b(a)?a.value:a,p=this.impl(c,m);return typeof p=="boolean"?l(p):b(s)?[{type:u.Quantity,value:{...s,value:p}}]:[T(p)]}},et=class extends B{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:u.string,value:o.map(s=>s.value).join("")}]:o}},tt=class extends v{constructor(e,t){super("contains",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return l(n.some(o=>o.value===i[0].value))}},rt=class extends v{constructor(e,t){super("in",e,t)}eval(e,t){let n=O(this.left.eval(e,t)),i=this.right.eval(e,t);return n?l(i.some(o=>o.value===n.value)):[]}},K=class extends B{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()}`}},oe=class extends B{constructor(e,t){super("|",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return xe([...n,...i])}},nt=class extends v{constructor(e,t){super("=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return He(n,i)}},it=class extends v{constructor(e,t){super("!=",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return je(He(n,i))}},ot=class extends v{constructor(e,t){super("~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return Qe(n,i)}},st=class extends v{constructor(e,t){super("!~",e,t)}eval(e,t){let n=this.left.eval(e,t),i=this.right.eval(e,t);return je(Qe(n,i))}},X=class extends v{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 l(Te(n[0],i))}},at=class extends v{constructor(e,t){super("and",e,t)}eval(e,t){let n=O(this.left.eval(e,t),"boolean"),i=O(this.right.eval(e,t),"boolean");return n?.value===!0&&i?.value===!0?l(!0):n?.value===!1||i?.value===!1?l(!1):[]}},ct=class extends v{constructor(e,t){super("or",e,t)}eval(e,t){let n=O(this.left.eval(e,t),"boolean"),i=O(this.right.eval(e,t),"boolean");return n?.value===!1&&i?.value===!1?l(!1):n?.value||i?.value?l(!0):[]}},ut=class extends v{constructor(e,t){super("xor",e,t)}eval(e,t){let n=O(this.left.eval(e,t),"boolean"),i=O(this.right.eval(e,t),"boolean");return!n||!i?[]:l(n.value!==i.value)}},lt=class extends v{constructor(e,t){super("implies",e,t)}eval(e,t){let n=O(this.left.eval(e,t),"boolean"),i=O(this.right.eval(e,t),"boolean");return i?.value===!0||n?.value===!1?l(!0):!n||!i?[]:l(!1)}},$=class{constructor(e,t){this.name=e;this.args=t}eval(e,t){let n=R[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(", ")})`}},Z=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 lo=["year","years","month","months","week","weeks","day","days","hour","hours","minute","minutes","second","seconds","millisecond","milliseconds"],z=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
|
+
`))}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;return this.consumeWhile(()=>/[\d-]/.exec(this.curr())),this.curr()==="T"&&(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"?this.advance():(this.curr()==="+"||this.curr()==="-")&&(this.advance(),this.consumeWhile(()=>/[\d:]/.exec(this.curr())))),this.buildToken("DateTime",this.str.substring(e,this.pos.index))}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()===" "&&po(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 po(r){return!!(r&&(r.id==="String"||r.id==="Symbol"&&lo.includes(r.value)))}var Ee=["true","false"],Ae=["!=","!~","<=",">=","{}","->"];function sn(r){return new z(r,Ee,Ae).tokenize()}var f={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},fo={parse(r){let e=r.consumeAndParse();if(!r.match(")"))throw new Error("Parse error: expected `)` got `"+r.peek()?.value+"`");return e}},mo={parse(r,e){let t=r.consumeAndParse();if(!r.match("]"))throw new Error("Parse error: expected `]`");return new Z(e,t)},precedence:f.Indexer},ho={parse(r,e){if(!(e instanceof q))throw new Error("Unexpected parentheses");let t=[];for(;!r.match(")");)t.push(r.consumeAndParse()),r.match(",");return new $(e.name,t)},precedence:f.FunctionCall};function yo(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 se(){return new be().registerPrefix("String",{parse:(r,e)=>new V({type:u.string,value:e.value})}).registerPrefix("DateTime",{parse:(r,e)=>new V({type:u.dateTime,value:ie(e.value)})}).registerPrefix("Quantity",{parse:(r,e)=>new V({type:u.Quantity,value:yo(e.value)})}).registerPrefix("Number",{parse:(r,e)=>new V({type:u.decimal,value:parseFloat(e.value)})}).registerPrefix("true",{parse:()=>new V({type:u.boolean,value:!0})}).registerPrefix("false",{parse:()=>new V({type:u.boolean,value:!1})}).registerPrefix("Symbol",{parse:(r,e)=>new q(e.value)}).registerPrefix("{}",{parse:()=>new Xe}).registerPrefix("(",fo).registerInfix("[",mo).registerInfix("(",ho).prefix("+",f.UnaryAdd,(r,e)=>new Ze("+",e,t=>t)).prefix("-",f.UnarySubtract,(r,e)=>new E("-",e,e,(t,n)=>-n)).infixLeft(".",f.Dot,(r,e,t)=>new K(r,t)).infixLeft("/",f.Divide,(r,e,t)=>new E("/",r,t,(n,i)=>n/i)).infixLeft("*",f.Multiply,(r,e,t)=>new E("*",r,t,(n,i)=>n*i)).infixLeft("+",f.Add,(r,e,t)=>new E("+",r,t,(n,i)=>n+i)).infixLeft("-",f.Subtract,(r,e,t)=>new E("-",r,t,(n,i)=>n-i)).infixLeft("|",f.Union,(r,e,t)=>new oe(r,t)).infixLeft("=",f.Equals,(r,e,t)=>new nt(r,t)).infixLeft("!=",f.NotEquals,(r,e,t)=>new it(r,t)).infixLeft("~",f.Equivalent,(r,e,t)=>new ot(r,t)).infixLeft("!~",f.NotEquivalent,(r,e,t)=>new st(r,t)).infixLeft("<",f.LessThan,(r,e,t)=>new E("<",r,t,(n,i)=>n<i)).infixLeft("<=",f.LessThanOrEquals,(r,e,t)=>new E("<=",r,t,(n,i)=>n<=i)).infixLeft(">",f.GreaterThan,(r,e,t)=>new E(">",r,t,(n,i)=>n>i)).infixLeft(">=",f.GreaterThanOrEquals,(r,e,t)=>new E(">=",r,t,(n,i)=>n>=i)).infixLeft("&",f.Ampersand,(r,e,t)=>new et(r,t)).infixLeft("and",f.And,(r,e,t)=>new at(r,t)).infixLeft("as",f.As,(r,e,t)=>new Y(r,t)).infixLeft("contains",f.Contains,(r,e,t)=>new tt(r,t)).infixLeft("div",f.Divide,(r,e,t)=>new E("div",r,t,(n,i)=>n/i|0)).infixLeft("in",f.In,(r,e,t)=>new rt(r,t)).infixLeft("is",f.Is,(r,e,t)=>new X(r,t)).infixLeft("mod",f.Modulo,(r,e,t)=>new E("mod",r,t,(n,i)=>n%i)).infixLeft("or",f.Or,(r,e,t)=>new ct(r,t)).infixLeft("xor",f.Xor,(r,e,t)=>new ut(r,t)).infixLeft("implies",f.Implies,(r,e,t)=>new lt(r,t))}var go=se();function dt(r){return new Ye(r,go.construct(sn(r)).consumeAndParse())}function ee(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]=T(t[n]))}return ae(r,t).map(n=>n.value)}function ae(r,e,t){let n=t??{};return dt(r).eval({variables:n},e).map(o=>({type:o.type,value:o.value?.valueOf()}))}var xo=20,un=(g=>(g.EQUALS="eq",g.NOT_EQUALS="ne",g.GREATER_THAN="gt",g.LESS_THAN="lt",g.GREATER_THAN_OR_EQUALS="ge",g.LESS_THAN_OR_EQUALS="le",g.STARTS_AFTER="sa",g.ENDS_BEFORE="eb",g.APPROXIMATELY="ap",g.CONTAINS="contains",g.EXACT="exact",g.TEXT="text",g.NOT="not",g.ABOVE="above",g.BELOW="below",g.IN="in",g.NOT_IN="not-in",g.OF_TYPE="of-type",g.MISSING="missing",g.IDENTIFIER="identifier",g.ITERATE="iterate",g))(un||{}),ln={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"},Zt={eq:"eq",ne:"ne",lt:"lt",le:"le",gt:"gt",ge:"ge",sa:"sa",eb:"eb",ap:"ap"};function To(r,e){let t=[];for(let[n,i]of Object.entries(e))if(Array.isArray(i))for(let o of i)t.push([n,o]);else t.push([n,i??""]);return dn(r,t)}function er(r){let e;for(let t of r.pathname.split("/"))t&&(e=t);return dn(e,r.searchParams.entries())}function vo(r){return er(new URL(r,"https://example.com/"))}function pt(r){return er(new URL(r,"https://api.medplum.com/"))}function dn(r,e){let t={resourceType:r};for(let[n,i]of e)So(t,n,i);return t}function So(r,e,t){let n,i,o=e.indexOf(":");switch(o>=0?(n=e.substring(0,o),i=e.substring(o+1)):(n=e,i=""),n){case"_sort":bo(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=an(t);i==="iterate"&&(s.modifier="iterate"),r.include?r.include.push(s):r.include=[s];break}case"_revinclude":{let s=an(t);i==="iterate"&&(s.modifier="iterate"),r.revInclude?r.revInclude.push(s):r.revInclude=[s];break}case"_fields":case"_elements":r.fields=t.split(",");break;default:{let s=w.types[r.resourceType]?.searchParams?.[n];s?Ro(r,s,i,t):Po(r,n,i,t)}}}function bo(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 Ro(r,e,t,n){if(t==="missing"){ft(r,{code:e.code,operator:"missing",value:n});return}switch(e.type){case"number":case"date":case"quantity":Eo(r,e,n);break;case"reference":case"string":case"token":case"uri":Ao(r,e,t,n);break;default:break}}function Eo(r,e,t){let{operator:n,value:i}=Co(t);ft(r,{code:e.code,operator:n,value:i})}function Ao(r,e,t,n){ft(r,{code:e.code,operator:wo(t),value:n})}function Po(r,e,t,n){let i="eq";if(t)i=t;else if(n.length>=2){let o=n.substring(0,2);o in Zt&&(n.length===2||n.at(2)?.match(/\d/))&&(i=o,n=n.substring(o.length))}ft(r,{code:e,operator:i,value:n})}function Co(r){let e=r.substring(0,2),t=Zt[e];return t?{operator:t,value:r.substring(2)}:{operator:"eq",value:r}}function wo(r){return ln[r]??"eq"}function an(r){let e=r.split(":");if(e.includes("*"))throw new d(k("'*' is not supported as a value for search inclusion parameters"));if(e.length===1)throw new d(k(`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 d(k(`Invalid include value '${r}'`))}function ft(r,e){r.filters?r.filters.push(e):r.filters=[e]}var Io=/{{([^{}]+)}}/g;function ko(r,e){return r=r.replaceAll(Io,(t,n)=>{let i=ae(n,[],e);return i.length!==1?"":Xt(i[0])}),pt(r)}function Oo(r){let e=[];return r.fields&&e.push("_fields="+r.fields.join(",")),r.filters&&r.filters.forEach(t=>e.push(Do(t))),r.sortRules&&r.sortRules.length>0&&e.push(Vo(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(cn("_include",t))),r.revInclude&&r.revInclude.forEach(t=>e.push(cn("_revinclude",t))),e.length===0?"":(e.sort((t,n)=>t.localeCompare(n)),"?"+e.join("&"))}function Do(r){let e=r.operator in ln?":"+r.operator:"",t=r.operator!=="eq"&&r.operator in Zt?r.operator:"";return`${r.code}${e}=${t}${encodeURIComponent(r.value)}`}function Vo(r){return"_sort="+r.map(e=>e.descending?"-"+e.code:e.code).join(",")}function cn(r,e){return r+"="+e.resourceType+":"+e.searchParam+(e.targetType?":"+e.targetType:"")}var rr=(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))(rr||{});function nr(r,e){let t=w.types[r].searchParamsDetails?.[e.code];return t||(t=Uo(r,e)),t}function _o(r,e,t){let n=w.types[r];n.searchParamsDetails||(n.searchParamsDetails={}),n.searchParamsDetails[e]=t}function Uo(r,e){let t=e.code,n=No(t),i=ir(r,e.expression),o={elementDefinitions:[],propertyTypes:new Set,array:!1};for(let a of i){let c=Pe(a);c.length===1&&c[0]instanceof v?o.propertyTypes.add("boolean"):pn(o,Pe(a),r,1)}let s={columnName:n,type:Mo(e,o.propertyTypes),elementDefinitions:o.elementDefinitions,array:o.array};return _o(r,t,s),s}function pn(r,e,t,n){let i=e[n];if(i instanceof Y){r.propertyTypes.add(i.right.toString());return}if(i instanceof $){Lo(r,i);return}let o=i.toString(),s=ve(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 Z&&(a=!0,c++),s.max>1&&!a&&(r.array=!0),c>=e.length){r.elementDefinitions.push(s);for(let m of s.type)r.propertyTypes.add(m.code);return}for(let m of s.type){let p=m.code;Fo(p)&&(p=s.type[0].code),pn(r,e,p,c)}}function Lo(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 X){r.propertyTypes.add(e.args[0].right.toString());return}throw new Error(`Unhandled FHIRPath function: ${e.name}`)}function Fo(r){return r==="Element"||r==="BackboneElement"}function No(r){return r.split("-").reduce((e,t,n)=>e+(n?A(t):t),"")}function Mo(r,e){switch(r.type){case"date":return e.size===1&&e.has(u.date)?"DATE":"DATETIME";case"number":return"NUMBER";case"quantity":return"QUANTITY";case"reference":return e.has(u.canonical)?"CANONICAL":"REFERENCE";case"token":return e.size===1&&e.has(u.boolean)?"BOOLEAN":"TEXT";default:return"TEXT"}}function ir(r,e){let t=[],n=dt(e);return tr(r,n.child,t),t}function Bo(r,e){let t=ir(r,e);if(t.length!==0)return t.map(n=>n.toString()).join(" | ")}function tr(r,e,t){e instanceof oe?(tr(r,e.left,t),tr(r,e.right,t)):e.toString().startsWith(r+".")&&t.push(e)}function Pe(r){return r instanceof Y||r instanceof Z?[Pe(r.left),r].flat():r instanceof v?[r]:r instanceof K?[Pe(r.left),Pe(r.right)].flat():r instanceof $&&r.name==="where"&&!(r.args[0]instanceof X)?[]:[r]}function sr(r,e){if(e.resourceType!==r.resourceType)return!1;if(e.filters){for(let t of e.filters)if(!qo(r,e,t))return!1}return!0}function qo(r,e,t){let n=w.types[e.resourceType]?.searchParams?.[t.code];if(t.operator==="missing"&&n){let i=ee(n.expression,r);return t.value==="true"?!i.length:i.length>0}switch(n?.type){case"reference":return $o(r,t,n);case"string":case"uri":return fn(r,t,n);case"token":return jo(r,t,n);case"date":return Qo(r,t,n);default:return!1}}function $o(r,e,t){let n=ee(t.expression,r),i=mt(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 e.value.split(",")){let a=o.includes(s);if(!a&&e.code==="_compartment"&&(a=o.some(c=>c?.endsWith("/"+s))),a)return!i}return i}function jo(r,e,t){return nr(r.resourceType,t).type==="BOOLEAN"?Ho(r,e,t):fn(r,e,t,!0)}function Ho(r,e,t){let n=ee(t.expression,r),i=e.value==="true",o=n.includes(i);return mt(e.operator)?!o:o}function fn(r,e,t,n){let i=ee(t.expression,r),o=e.value.split(","),s=mt(e.operator);for(let a of i)for(let c of o)if(or(a,e.operator,c,n))return!s;return s}function or(r,e,t,n){if(n&&t.includes("|")){let[o,s]=t.split("|");return or(r,e,o,!1)&&(!s||or(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 Qo(r,e,t){let n=ee(t.expression,r),i=e.value.split(","),o=mt(e.operator);for(let s of n)for(let a of i)if(Wo(s,e.operator,a))return!o;return o}function Wo(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 mt(r){return r==="ne"||r==="not"}var Go={resourceType:"*"},mn=["DomainConfiguration","JsonWebKey","Login","User"],hn=["PasswordChangeRequest","Project","ProjectMembership"],yn=(x=>(x.READ="read",x.VREAD="vread",x.UPDATE="update",x.PATCH="patch",x.DELETE="delete",x.HISTORY="history",x.HISTORY_INSTANCE="history-instance",x.HISTORY_TYPE="history-type",x.HISTORY_SYSTEM="history-system",x.CREATE="create",x.SEARCH="search",x.SEARCH_TYPE="search-type",x.SEARCH_SYSTEM="search-system",x.SEARCH_COMPARTMENT="search-compartment",x.CAPABILITIES="capabilities",x.TRANSACTION="transaction",x.BATCH="batch",x.OPERATION="operation",x))(yn||{}),Ko=["read","vread","history","history-instance"];function zo(r,e){if(r.resource){for(let t of r.resource)if(ar(t.resourceType,e))return!0}return!1}function gn(r,e){if(mn.includes(e))return!1;if(r.resource){for(let t of r.resource)if(ar(t.resourceType,e)&&!t.readonly)return!0}return!1}function Jo(r,e){let t=e.resourceType;return gn(r,t)?xn(r,e,!1):!1}function xn(r,e,t){if(r.resource){for(let n of r.resource)if(Tn(e,t?"read":"update",n))return!0}return!1}function Yo(r,e,t){if(!t)return Go;if(t.resource){for(let n of t.resource)if(Tn(r,e,n))return n}}function Tn(r,e,t){let n=r.resourceType;return!(!ar(t.resourceType,n)||t.readonly&&!Ko.includes(e)||t.compartment&&!r.meta?.compartment?.find(i=>i.reference===t.compartment?.reference)||t.criteria&&!sr(r,pt(t.criteria)))}function ar(r,e){return r===e||r==="*"&&!hn.includes(e)}function cr(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 ur(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 ht(){let r=new Uint32Array(28);return crypto.getRandomValues(r),Ft(r.buffer)}async function lr(r){return crypto.subtle.digest("SHA-256",new TextEncoder().encode(r))}function ce(){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 vn(r){let e={};r=Me(r);for(let i of r.entry||[]){delete i.resource?.meta;let o=i.resource?.id;o&&(e[o]=ce(),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)=>Xo(i,o,e),2);return Sn(JSON.parse(n))}function Xo(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 Sn(r){let e=es(r),{sorted:t,cycles:n}=Zo(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],m={...c,request:{...c.request,method:"PUT"}};o.push(m)}return{...r,entry:o}}function Zo(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 bn(r,e){for(let t in r)if(r[t]&&typeof r[t]=="object"){let n=r[t];if(Yt(n)){let i=n.reference;i.startsWith("urn:uuid:")&&e(i)}else bn(n,e)}}function es(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&&bn(t.resource,i=>{e[i]&&e[i].push(n)})}return e}function ts(r){r=Me(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=ce());return vn(e)}var Ce=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 _={CSS:"text/css",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",SVG:"image/svg+xml",TEXT:"text/plain",TYPESCRIPT:"text/typescript"};var ue=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}},we=class{constructor(){this.emitter=new ue}dispatchEvent(e){this.emitter.dispatchEvent(e)}addEventListener(e,t){this.emitter.addEventListener(e,t)}removeEventListener(e,t){this.emitter.removeEventListener(e,t)}};var dr={"patient-open":"patient-open","patient-close":"patient-close","imagingstudy-open":"imagingstudy-open","imagingstudy-close":"imagingstudy-close"},rs=["Patient","Encounter","ImagingStudy"],ns={"patient-open":["Patient"],"patient-close":["Patient"],"imagingstudy-open":["Patient","ImagingStudy"],"imagingstudy-close":["Patient","ImagingStudy"]},is={"patient-open":["Encounter"],"patient-close":["Encounter"],"imagingstudy-open":[],"imagingstudy-close":[]};function Rn(r){return rs.includes(r)}var os={ImagingStudy:"study",Patient:"patient",Encounter:"encounter"};function pr(r){return!!r.endpoint}function yt(r){if(!ke(r))throw new d(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 pr(r)&&(o.endpoint=r.endpoint),new URLSearchParams(o).toString()}function ke(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(!dr[o])return!1;return!(pr(r)&&!(typeof r.endpoint=="string"&&r.endpoint.startsWith("ws")))}function ss(r,e,t,n){if(!(e.key&&typeof e.key=="string"))throw new d(h(`context[${t}] is invalid. Context must contain a key.`));if(n.has(e.key))throw new d(h(`context[${t}] is invalid. Key ${e.key} has already been used in a previous context.`));if(n.add(e.key),typeof e.resource!="object")throw new d(h(`context[${t}] is invalid. Context must contain a single valid FHIR resource! Resource is not an object.`));if(!(e.resource.id&&typeof e.resource.id=="string"))throw new d(h(`context[${t}] is invalid. Resource must contain a valid string ID.`));if(!e.resource.resourceType)throw new d(h(`context[${t}] is invalid. Resource must contain a resource type. No resource type found.`));let i=e.resource.resourceType;if(!Rn(i))throw new d(h(`context[${t}] is invalid. Resource must contain a valid FHIRcast resource type. Resource type is not a known resource type.`));let o=ns[r],s=is[r],a;if(t<o.length?a=o[t]:t-o.length<s.length&&(a=s[t-o.length]),a&&i!==a)throw new d(h(`context[${t}] is invalid. context[${t}] for the '${r}' event should contain resource of type ${a}.`));let c=os[i];if(c!==e.key)throw new d(h(`context[${t}] is invalid. Context key for type ${i} must be ${c}.`))}function as(r,e){let t=new Set;for(let n=0;n<e.length;n++)ss(r,e[n],n,t)}function fr(r,e,t){if(!(r&&typeof r=="string"))throw new d(h("Must provide a topic."));if(!dr[e])throw new d(h(`Must provide a valid FHIRcast event name. Supported events: ${Object.keys(dr).join(", ")}`));if(typeof t!="object")throw new d(h("context must be a context object or array of context objects."));let n=Array.isArray(t)?t:[t];return as(e,n),{timestamp:new Date().toISOString(),id:ce(),event:{"hub.topic":r,"hub.event":e,context:n}}}var Ie=class extends we{constructor(t){super();if(this.subRequest=t,!t.endpoint)throw new d(h("Subscription request should contain an endpoint."));if(!ke(t))throw new d(h("Subscription request failed validation."));let n=new WebSocket(t.endpoint);n.addEventListener("open",()=>{this.dispatchEvent({type:"connect"}),n.addEventListener("message",i=>{let o=JSON.parse(i.data);if(o["hub.topic"])return;let s=o;this.dispatchEvent({type:"message",payload:s}),n.send(JSON.stringify({id:o?.id,timestamp:new Date().toISOString()}))}),n.addEventListener("close",()=>{this.dispatchEvent({type:"disconnect"})})}),this.websocket=n}disconnect(){this.websocket.close()}};function cs(r){let e=r.replace(/-/g,"+").replace(/_/g,"/"),t=cr(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 mr(r){return r.split(".").length===3}function gt(r){let[e,t,n]=r.split(".");return cs(t)}function hr(r){try{return typeof gt(r).login_id=="string"}catch{return!1}}var us,P=class{constructor(e){this[us]="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)}};us=Symbol.toStringTag;var Oe=class{constructor(){this.storage=typeof localStorage<"u"?localStorage:new xt}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?Ut(t):void 0)}},xt=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]}};var ls="2.1.5-703ef1a8",ds="https://api.medplum.com/",ps=1e3,fs=6e4,En="Binary/",An={resourceType:"Device",id:"system",deviceName:[{name:"System"}]},kn=(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))(kn||{}),On=(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))(On||{}),Dn=(e=>(e.JwtBearer="urn:ietf:params:oauth:client-assertion-type:jwt-bearer",e))(Dn||{}),yr=class extends ue{constructor(t){super();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??ms(),this.storage=t?.storage??new Oe,this.createPdfImpl=t?.createPdf,this.baseUrl=Cn(t?.baseUrl??ds),this.fhirBaseUrl=Cn(Tt(this.baseUrl,t?.fhirUrlPath??"fhir/R4/")),this.authorizeUrl=Tt(this.baseUrl,t?.authorizeUrl??"oauth2/authorize"),this.tokenUrl=Tt(this.baseUrl,t?.tokenUrl??"oauth2/token"),this.logoutUrl=Tt(this.baseUrl,t?.logoutUrl??"oauth2/logout"),this.clientId=t?.clientId??"",this.clientSecret=t?.clientSecret??"",this.onUnauthenticated=t?.onUnauthenticated,this.cacheTime=t?.cacheTime??fs,this.cacheTime>0?this.requestCache=new Ce(t?.resourceCacheSize??ps):this.requestCache=void 0,t?.autoBatchTime?(this.autoBatchTime=t.autoBatchTime,this.autoBatchQueue=[]):(this.autoBatchTime=0,this.autoBatchQueue=void 0);let n=this.getActiveLogin();n&&(this.setAccessToken(n.accessToken,n.refreshToken),this.refreshProfile().catch(console.log)),this.setupStorageListener()}getBaseUrl(){return this.baseUrl}getAuthorizeUrl(){return this.authorizeUrl}getTokenUrl(){return this.tokenUrl}getLogoutUrl(){return this.logoutUrl}clear(){this.storage.clear(),this.clearActiveLogin()}clearActiveLogin(){this.storage.setString("activeLogin",void 0),this.requestCache?.clear(),this.accessToken=void 0,this.refreshToken=void 0,this.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=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 P(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,_.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)return this.processCode(i);await this.requestAuthorization(t)}signOutWithRedirect(){window.location.assign(this.logoutUrl)}async signInWithExternalAuth(t,n,i,o){let s=await this.ensureCodeChallenge(o);window.location.assign(this.getExternalAuthRedirectUri(t,n,i,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){let{codeChallenge:s,codeChallengeMethod:a}=o;if(!a)throw new Error("`LoginRequest` for external auth must include a `codeChallengeMethod`.");if(!s)throw new Error("`LoginRequest` for external auth must include a `codeChallenge`.");let c=new URL(t);return c.searchParams.set("response_type","code"),c.searchParams.set("client_id",n),c.searchParams.set("redirect_uri",i),c.searchParams.set("scope","openid profile email"),c.searchParams.set("state",JSON.stringify(o)),c.searchParams.set("code_challenge_method",a),c.searchParams.set("code_challenge",s),c.toString()}fhirUrl(...t){return new URL(t.join("/"),this.fhirBaseUrl)}fhirSearchUrl(t,n){let i=this.fhirUrl(t);return n&&(i.search=new URLSearchParams(n).toString()),i}search(t,n,i){let o=this.fhirSearchUrl(t,n),s=o.toString()+"-search",a=this.getCacheEntry(s,i);if(a)return a.value;let c=new P((async()=>{let m=await this.get(o,i);if(m.entry)for(let p of m.entry)this.cacheResource(p.resource);return m})());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=o.toString()+"-searchOne",a=this.getCacheEntry(s,i);if(a)return a.value;let c=new P(this.search(t,o.searchParams,i).then(m=>m.entry?.[0]?.resource));return this.setCacheEntry(s,c),c}searchResources(t,n,i){let s=this.fhirSearchUrl(t,n).toString()+"-searchResources",a=this.getCacheEntry(s,i);if(a)return a.value;let c=new P(this.search(t,n,i).then(In));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(m=>m.relation==="next");if(!a.entry?.length&&!c)break;yield In(a),o=c?.url?new URL(c.url):void 0}}searchValueSet(t,n,i){let o=this.fhirUrl("ValueSet","$expand");return o.searchParams.set("url",t),o.searchParams.set("filter",n),this.get(o.toString(),i)}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 An;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 P(Promise.reject(new Error("Missing reference")));if(i==="system")return new P(Promise.resolve(An));let[o,s]=i.split("/");return!o||!s?new P(Promise.reject(new Error("Invalid reference"))):this.readResource(o,s,n)}requestSchema(t){if(Kt(t))return Promise.resolve();let n=t+"-requestSchema",i=this.getCacheEntry(n,void 0);if(i)return i.value;let o=new P((async()=>{let s=`{
|
|
4
4
|
StructureDefinitionList(name: "${t}") {
|
|
5
|
+
resourceType,
|
|
5
6
|
name,
|
|
7
|
+
kind,
|
|
6
8
|
description,
|
|
7
9
|
snapshot {
|
|
8
10
|
element {
|
|
9
11
|
id,
|
|
10
12
|
path,
|
|
13
|
+
definition,
|
|
11
14
|
min,
|
|
12
15
|
max,
|
|
16
|
+
base {
|
|
17
|
+
path,
|
|
18
|
+
min,
|
|
19
|
+
max
|
|
20
|
+
},
|
|
21
|
+
contentReference,
|
|
13
22
|
type {
|
|
14
23
|
code,
|
|
15
24
|
targetProfile
|
|
16
25
|
},
|
|
17
26
|
binding {
|
|
27
|
+
strength,
|
|
18
28
|
valueSet
|
|
19
|
-
}
|
|
20
|
-
definition
|
|
29
|
+
}
|
|
21
30
|
}
|
|
22
31
|
}
|
|
23
32
|
}
|
|
@@ -28,5 +37,5 @@
|
|
|
28
37
|
expression,
|
|
29
38
|
target
|
|
30
39
|
}
|
|
31
|
-
}`.replace(/\s+/g," "),a=await this.graphql(s);for(let c of a.data.StructureDefinitionList)et(c);for(let c of a.data.SearchParameterList)tt(c);return y})());return this.setCacheEntry(n,o),o}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 createAttachment(t,n,i,o){let s=await this.createBinary(t,n,i,o);return{contentType:i,url:s.url,title:n}}createBinary(t,n,i,o){let s=this.fhirUrl("Binary");return n&&s.searchParams.set("_filename",n),o?this.uploadwithProgress(s,t,i,o):this.post(s,t,i)}uploadwithProgress(t,n,i,o){return new Promise((s,a)=>{let c=new XMLHttpRequest;c.responseType="json",c.onabort=()=>a(new Error("Request aborted")),c.onerror=()=>a(new Error("Request error")),o&&(c.upload.onprogress=f=>o(f),c.upload.onload=f=>o(f)),c.onload=()=>{c.status>=200&&c.status<300?s(c.response):a(new Error(c.statusText))},c.open("POST",t),c.withCredentials=!0,c.setRequestHeader("Authorization","Bearer "+this.accessToken),c.setRequestHeader("Cache-Control","no-cache, no-store, max-age=0"),c.setRequestHeader("Content-Type",i),c.setRequestHeader("X-Medplum","extended"),c.send(n)})}async createPdf(t,n,i,o){if(!this.createPdfImpl)throw new Error("PDF creation not enabled");let s=await this.createPdfImpl(t,i,o);return this.createBinary(s,n,"application/pdf")}createComment(t,n,i){let o=this.getProfile(),s,a;return t.resourceType==="Encounter"&&(s=oe(t),a=t.subject),t.resourceType==="ServiceRequest"&&(s=t.encounter,a=t.subject),t.resourceType==="Patient"&&(a=oe(t)),this.createResource({resourceType:"Communication",basedOn:[oe(t)],encounter:s,subject:a,sender:o?oe(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");this.invalidateSearches(t.resourceType);let i=await this.put(this.fhirUrl(t.resourceType,t.id),t,void 0,n);return i||(i=t),this.cacheResource(i),i}patchResource(t,n,i,o){return this.invalidateSearches(t),this.patch(this.fhirUrl(t,n),i,o)}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")+`?identifier=${a.system}|${a.value}`}return this.post(s,n,i,o)}executeBatch(t,n){return this.post(this.fhirBaseUrl.slice(0,-1),t,void 0,n)}sendEmail(t,n){return this.post("email/v1/send",t,X.JSON,n)}graphql(t,n,i,o){return this.post(this.fhirUrl("$graphql"),{query:t,operationName:n,variables:i},X.JSON,o)}readResourceGraph(t,n,i,o){return this.get(`${this.fhirUrl(t,n)}/$graph?graph=${i}`,o)}pushToAgent(t,n,i,o){return this.post(this.fhirUrl("Agent",t.id,"$push"),n,i,o)}getActiveLogin(){return this.storage.getObject("activeLogin")}async setActiveLogin(t){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.medplumServer=sr(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.get("auth/me").then(i=>{this.profilePromise=void 0,this.sessionDetails=i,this.dispatchEvent({type:"change"}),t(i.profile)}).catch(n)}),this.profilePromise):Promise.resolve(void 0)}isLoading(){return!!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&&await this.profilePromise,this.getProfile()}getUserConfiguration(){return this.sessionDetails?.config}getAccessPolicy(){return this.sessionDetails?.accessPolicy}async download(t,n={}){this.refreshPromise&&await this.refreshPromise;let i=t.toString();return i.startsWith(sn)&&(t=this.fhirUrl(i)),this.addFetchOptionsDefaults(n),(await this.fetchWithRetry(t.toString(),n)).blob()}async uploadMedia(t,n,i,o,s){let a=await this.createBinary(t,i,n);return this.createResource({...o,resourceType:"Media",content:{contentType:n,url:sn+a.id,title:i}},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;i.Prefer="respond-async";let o=await this.fetchWithRetry(t,n);if(o.status===202){let s=await dn(o);if(s)return this.pollStatus(s)}return this.parseResponse(o,"POST",t)}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 C(Promise.resolve(t)))}deleteCacheEntry(t){this.requestCache&&this.requestCache.delete(t)}async request(t,n,i={}){this.refreshPromise&&await this.refreshPromise,i.method=t,this.addFetchOptionsDefaults(i);let o=await this.fetchWithRetry(n,i);return this.parseResponse(o,t,n,i)}async parseResponse(t,n,i,o={}){if(t.status===401)return this.handleUnauthenticated(n,i,o);if(t.status===204||t.status===304)return;let a=t.headers.get("content-type")?.includes("json");if(t.status===404&&!a)throw new h(Ct);let c=t.headers.get("content-location"),f=o.redirect??this.options.redirect;if(t.status===201&&c&&f==="follow")return this.request("GET",c,{...o,body:void 0});let l;if(a)try{l=await t.json()}catch(H){throw console.error("Error parsing response",t.status,H),H}else l=await t.text();if(t.status>=400)throw new h(ze(l));return l}async fetchWithRetry(t,n){t.startsWith("http")||(t=new URL(t,this.baseUrl).href);let i=3,o=200,s;for(let a=0;a<i;a++){try{if(this.options.verbose&&this.logRequest(t,n),s=await this.fetch(t,n),this.options.verbose&&this.logResponse(s),s.status<500)return s}catch(c){this.retryCatch(a,i,c)}await Ze(o)}return s}logRequest(t,n){if(console.log(`> ${n.method} ${t}`),n.headers){let i=n.headers,o=Object.entries(i).sort((s,a)=>s[0].localeCompare(a[0]));for(let[s,a]of o)console.log(`> ${s}: ${a}`)}}logResponse(t){console.log(`< ${t.status} ${t.statusText}`),t.headers&&t.headers.forEach((n,i)=>console.log(`< ${i}: ${n}`))}async pollStatus(t){let n=!0,i,o=2e3;for(;n;){let s={};this.addFetchOptionsDefaults(s);let a=await this.fetchWithRetry(t,s);if(a.status!==202&&(n=!1,i=a,a.status===201)){let c=await dn(a);c&&(i=await this.fetchWithRetry(c,s))}await Ze(o)}return this.parseResponse(i,"POST",t)}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,this.fhirBaseUrl+o.url,o.options))}catch(s){o.reject(new h(ze(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.slice(0,-1),n);for(let o=0;o<t.length;o++){let s=t[o],a=i.entry?.[o];a?.response?.outcome&&!Ge(a.response.outcome)?s.reject(new h(a.response.outcome)):s.resolve(a?.resource)}}addFetchOptionsDefaults(t){let n=t.headers;n||(n={},t.headers=n),n.Accept=X.FHIR_JSON,n["X-Medplum"]="extended",t.body&&!n["Content-Type"]&&(n["Content-Type"]=X.FHIR_JSON),this.accessToken?n.Authorization="Bearer "+this.accessToken:this.basicAuth&&(n.Authorization="Basic "+this.basicAuth),t.cache||(t.cache="no-cache"),t.credentials||(t.credentials="include")}setRequestContentType(t,n){t.headers||(t.headers={});let i=t.headers;i["Content-Type"]=n}setRequestBody(t,n){typeof n=="string"||typeof Blob<"u"&&n instanceof Blob||typeof File<"u"&&n instanceof File||typeof Uint8Array<"u"&&n instanceof Uint8Array?t.body=n:n&&(t.body=JSON.stringify(n))}handleUnauthenticated(t,n,i){return this.refresh()?this.request(t,n,i):(this.clearActiveLogin(),this.onUnauthenticated&&this.onUnauthenticated(),Promise.reject(new Error("Unauthenticated")))}async startPkce(){let t=dt();sessionStorage.setItem("pkceState",t);let n=dt();sessionStorage.setItem("codeVerifier",n);let i=await ir(n),o=Bt(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??cn()),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??cn()),typeof sessionStorage<"u"){let o=sessionStorage.getItem("codeVerifier");o&&i.set("code_verifier",o)}return this.fetchTokens(i)}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=nr(t+":"+n)}async invite(t,n){return this.post("admin/projects/"+t+"/invite",n)}async fetchTokens(t){let n={method:"POST",headers:{"Content-Type":X.FORM_URL_ENCODED},body:t.toString(),credentials:"include"},i=n.headers;this.basicAuth&&(i.Authorization=`Basic ${this.basicAuth}`);let o=await this.fetchWithRetry(this.tokenUrl,n);if(!o.ok){this.clearActiveLogin();try{let a=await o.json();throw new h(k(a.error_description))}catch(a){throw new h(k("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(or(n)){let i=pt(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{}}retryCatch(t,n,i){if(i.message==="Failed to fetch"&&t===1&&this.dispatchEvent({type:"offline"}),t>=n-1)throw i}};function qo(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}function cn(){return typeof window>"u"?"":window.location.protocol+"//"+window.location.host+"/"}function un(r){return r.endsWith("/")?r:r+"/"}function ht(r,e){return new URL(e,r).toString()}async function dn(r){let e=r.headers.get("content-location");if(e)return e;let t=r.headers.get("location");if(t)return t;let n=await r.json();if(me(n)&&n.issue?.[0]?.diagnostics)return n.issue[0].diagnostics}function ln(r){let e=r.entry?.map(t=>t.resource)??[];return Object.assign(e,{bundle:r})}var jo=[...de,"->","<<",">>"];function mn(r){return new j(r,ue,jo).tokenize()}var cr=class{constructor(e){this.parser=e;this.structureMap={resourceType:"StructureMap"}}parse(){for(this.parser.consume("Symbol","map"),this.structureMap.url=this.parser.consume("String").value,this.parser.consume("="),this.structureMap.name=this.parser.consume().value;this.parser.hasMore();){let e=this.parser.peek()?.value;switch(e){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}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(){let e=[this.parseRuleSource()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleSource());return e}parseRuleSource(){let e={},t=this.parseRuleContext();if(t.includes(".")){let n=t.split(".");e.context=n[0],e.element=n[1]}else e.context=t;if(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("default"),this.parser.consumeAndParse()),(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==="where"){this.parser.consume("Symbol","where");let n=this.parser.consumeAndParse(p.Arrow);e.condition=n.toString()}if(this.parser.peek()?.value==="check"){this.parser.consume("Symbol","check");let n=this.parser.consumeAndParse(p.Arrow);e.check=n.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={},t=this.parseRuleContext();if(t.includes(".")){let n=t.split(".");e.contextType="variable",e.context=n[0],e.element=n[1]}else e.context=t;return 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==="first"||this.parser.peek()?.value==="share"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="collate")&&(e.listMode=[this.parser.consume().value]),e}parseRuleTargetTransform(e){e.transform="copy";let t=this.parser.consumeAndParse(p.As);if(t instanceof M)this.parseRuleTargetSymbol(e,t);else if(t instanceof N)this.parseRuleTargetFunction(e,t);else if(t instanceof I)this.parseRuleTargetLiteral(e,t);else throw new Error(`Unexpected FHIRPath: ${t}`)}parseRuleTargetSymbol(e,t){e.parameter=[{valueId:t.name}]}parseRuleTargetFunction(e,t){let n=t.name;switch(n){case"create":e.parameter=[{valueString:t.args[0].value.value}];break;case"translate":e.parameter=[{}];break;default:throw new Error("Unknown target function: "+n)}}parseRuleTargetLiteral(e,t){switch(t.value.type){case"boolean":e.parameter=[{valueBoolean:t.value.value}];break;case"decimal":e.parameter=[{valueDecimal:t.value.value}];break;case"string":e.parameter=[{valueString:t.value.value}];break;default:throw new Error("Unknown target literal type: "+t.value.type)}}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(p.Arrow);return[{name:e.name,variable:e.args.map(t=>t.name)}]}parseConceptMap(){for(;this.parser.peek()?.value!=="}";)this.parser.consume();this.parser.consume("}")}},$o=le().registerInfix("->",{precedence:p.Arrow}).registerInfix(";",{precedence:p.Semicolon});function Qo(r){let e=$o.construct(mn(r));return e.removeComments(),new cr(e).parse()}var Ho=[...de,"eq","ne","co"];function yn(r){return new j(r,ue,Ho,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var $e=class{constructor(e,t,n){this.path=e;this.operator=t;this.value=n}},Qe=class{constructor(e){this.child=e}},He=class{constructor(e,t,n){this.keyword=e;this.left=t;this.right=n}};var Wo={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:"missing",po:void 0,ss:void 0,sb:void 0,in:"in",ni:"not-in",re:void 0,identifier:"identifier"};function Go(r){let e=Wo[r];if(!e)throw new h(k("Invalid operator: "+r));return e}var ur=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 Qe(this.parse()),this.parser.consume(")")):e=new $e(this.parser.consume("Symbol").value,Go(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 He(t,e,this.parse())):e}},zo=le();function Ko(r){let e=zo.construct(yn(r));return e.removeComments(),new ur(e).parse()}var Q=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}},dr=class r{constructor(e,t=new Q){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 pe(["MSH",this.context.getMsh2(),o,s,n,i,gn(e),"",this.buildAckMessageType(t),e.getTime().toString(),"P",c],this.context),new pe(["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 Q("\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=>pe.parse(n,t)),t)}},pe=class r{constructor(e,t=new Q){this.context=t,Mt(e)?this.fields=e.map(n=>ne.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 ne([[this.context.getMsh1()]],this.context);if(e===2)return new ne([[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 Q){return new r(e.split(t.fieldSeparator).map(n=>ne.parse(n,t)),t)}},ne=class r{constructor(e,t=new Q){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 Q){return new r(e.split(t.repetitionSeparator).map(n=>n.split(t.componentSeparator)),t)}};function Jo(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 f=new Date(Date.UTC(t,n,i,o,s,a,c)),l=Yo(r,e?.tzOffset);return l!==0&&(f=new Date(f.getTime()-l)),f.toISOString()}function re(r,e){let t=parseInt(r,10);return isNaN(t)?e:t}function Yo(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 gn(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}function yt(r){return new pr(r).parse()}var mt=Object.create(null);function Xo(r){for(let{resource:e}of r.entry??[]){if(!e?.name)throw new Error("Failed loading StructureDefinition from bundle");if(e.resourceType!=="StructureDefinition")continue;let t=yt(e);mt[e.name]=t;for(let n of t.innerTypes)mt[n.name]=n}}function ie(r){let e=mt[r];if(!e)throw new h(wt(Error("Unknown data type: "+r)));return e}var pr=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.type,fields:{},constraints:this.parseFieldDefinition(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=lr(e,this.slicingContext.path);this.slicingContext.current.fields[t]=this.parseFieldDefinition(e)}}else{let t=this.parseFieldDefinition(e);this.checkFieldEnter(e,t);let n=this.backboneContext;for(;n;){if(e.path?.startsWith(n.path+".")){n.type.fields[lr(e,n.path)]=t;break}n=n.parent}if(!n){let i=lr(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.fields[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){if(this.isInnerType(e)){for(;this.backboneContext&&!fe(this.backboneContext?.path,e.path);)this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;this.backboneContext={type:{name:z(e),fields:{},constraints:this.parseFieldDefinition(e).constraints,innerTypes:[]},path:e.path??"",parent:fe(this.backboneContext?.path,e.path)?this.backboneContext:this.backboneContext?.parent}}if(e.slicing&&!this.slicingContext){if(rs(e)&&!this.peek()?.sliceName)return;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&&!fe(this.backboneContext.path,e?.path))if(this.backboneContext.parent)do this.innerTypes.push(this.backboneContext.type),this.backboneContext=this.backboneContext.parent;while(this.backboneContext&&!fe(this.backboneContext.path,e?.path));else this.innerTypes.push(this.backboneContext.type),delete this.backboneContext;this.slicingContext&&!fe(this.slicingContext.path,e?.path)&&(this.slicingContext?.current&&this.slicingContext.field.slices.push(this.slicingContext.current),delete this.slicingContext)}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=this.elementIndex[e.contentReference.slice(e.contentReference.indexOf("#")+1)];return t?{...t,id:e.id,path:e.path,min:e.min??t.min,max:e.max??t.max}:void 0}return e}}isInnerType(e){let t=this.peek();return!!(fe(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);this.slicingContext.current&&this.slicingContext.field.slices.push(this.slicingContext.current),this.slicingContext.current={name:e.sliceName??"",type:e.type?.map(t=>({code:t.code??"",targetProfile:t.targetProfile??[]})),fields:{},min:e.min??0,max:e.max==="*"?Number.POSITIVE_INFINITY:Number.parseInt(e.max,10)}}parseFieldDefinition(e){let t=Tn(e.max),n=e.base?.max?Tn(e.base.max):t,i={type:"ElementDefinition",value:e};return{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:(e.type??[]).map(o=>({code:["BackboneElement","Element"].includes(o.code)?z(e):o.code??"",targetProfile:o.targetProfile??[]})),fixed:vn(A(i,"fixed")),pattern:vn(A(i,"pattern")),binding:e.binding?.strength==="required"?e.binding.valueSet:void 0}}};function Zo(r,e){if(!r)return;let t=[];for(let n of e){t.push("_"+n);let i=mt[r.resourceType].fields[n+"[x]"];i&&t.push(...i.type.map(o=>n+S(o.code)))}for(let n of Object.getOwnPropertyNames(r))!e.includes(n)&&!t.includes(n)&&!es.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(xn):[xn]},r}var xn={system:"http://hl7.org/fhir/v3/ObservationValue",code:"SUBSETTED"},es=["resourceType","id","meta"];function Tn(r){return r==="*"?Number.POSITIVE_INFINITY:Number.parseInt(r,10)}function lr(r,e=""){return ts(r.path,e)}function ts(r,e){return r?e&&r.startsWith(e)?r.substring(e.length+1):r:""}function fe(r,e){return!r||!e?!1:e.startsWith(r+".")||e===r}function vn(r){return Array.isArray(r)&&r.length>0?r[0]:R(r)?void 0:r}function rs(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 gt(r,e,t,n){new fr(r,e,t,n).crawl()}var fr=class{constructor(e,t,n,i){this.rootResource=e,this.visitor=t,n?this.schema=n:this.schema=ie(e.resourceType),i?this.initialPath=i:this.initialPath=e.resourceType}crawl(){this.crawlObject(x(this.rootResource),this.schema,this.initialPath)}crawlObject(e,t,n){let i=V(e.value);i&&this.visitor.onEnterResource&&this.visitor.onEnterResource(n,e,t),this.visitor.onEnterObject&&this.visitor.onEnterObject(n,e,t);for(let[o,s]of Object.entries(t.fields))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=xt(e,t);this.visitor.visitProperty&&this.visitor.visitProperty(e,t,i,o,n);for(let s of o)if(s)for(let a of Te(s))this.crawlPropertyValue(a,i)}crawlPropertyValue(e,t){if(!Z(e.type.charAt(0))){let n=ie(e.type);this.crawlObject(e,n,t)}}};function xt(r,e){if(e==="$this")return[r];let[t,...n]=e.split("."),i=[A(r,t)];for(let o of n){let s=[];for(let a of i)if(Array.isArray(a))for(let c of a)s.push(A(c,o));else a!==void 0&&s.push(A(a,o));i=s}return i}var he={base64Binary:"string",boolean:"boolean",canonical:"string",code:"string",date:"string",dateTime:"string",decimal:"number",id:"string",instant:"string",integer:"number",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"},ns={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:/.*/},is={"ele-1":!0};function os(r,e){new hr(r.resourceType,r,e).validate()}var hr=class{constructor(e,t,n){this.issues=[],this.rootResource=t,this.currentResource=[],n?this.schema=yt(n):this.schema=ie(e)}validate(){let e=this.rootResource.resourceType;if(!e)throw new h(B("Missing resource type"));mr(this.rootResource,e,this.issues),gt(this.rootResource,this,this.schema);let t=this.issues;if(this.issues=[],t.length>0)throw new h({resourceType:"OperationOutcome",issue:t})}onExitObject(e,t,n){this.checkAdditionalProperties(t,n.fields,e)}onEnterResource(e,t){this.currentResource.push(t.value)}onExitResource(){this.currentResource.pop()}visitProperty(e,t,n,i,o){let s=o.fields[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(m(n,"Expected array of values for property"));return}c=a}else{if(Array.isArray(a)){this.issues.push(m(n,"Expected single value for property"));return}c=[a]}(c.length<s.min||c.length>s.max)&&this.issues.push(m(n,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${c.length}`)),Rn(a,s)||this.issues.push(m(n,"Value did not match expected pattern"));let f=s.slicing?Object.fromEntries(s.slicing.slices.map(l=>[l.name,0])):void 0;for(let l of c){this.constraintsCheck(l,s,n),this.checkPropertyValue(l,n);let H=us(l,s.slicing);H&&f&&(f[H]+=1)}this.validateSlices(s.slicing?.slices,f,n)}}checkPresence(e,t,n){return e===void 0?(t.min>0&&this.issues.push(m(n,"Missing required property")),!1):R(e)?(this.issues.push(m(n,"Invalid empty value")),!1):!0}checkPropertyValue(e,t){Z(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(m(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)for(let o of Object.keys(i))o!=="resourceType"&&!(o in t)&&!(o.startsWith("_")&&o.slice(1)in t)&&!as(e,o,t)&&this.issues.push(m(`${n}.${o}`,`Invalid additional property "${o}"`))}constraintsCheck(e,t,n){let i=t.constraints;for(let o of i)if(o.severity==="error"&&!(o.key in is)&&!this.isExpressionTrue(o,e,n)){this.issues.push(Dt(n,o));return}}isExpressionTrue(e,t,n){try{let i=ct(e.expression,[t],{context:t,resource:x(this.currentResource[this.currentResource.length-1]),rootResource:x(this.rootResource),ucum:x("http://unitsofmeasure.org")});return i.length===1&&i[0].value===!0}catch(i){return this.issues.push(Ot(n,"Error evaluating invariant expression",i,{fhirpath:e.expression})),!1}}validatePrimitiveType(e,t){let[n,i]=ds(e);if(n){let{type:o,value:s}=n;if(!(o in he)){this.issues.push(m(t,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=he[o];if(typeof s!==a){s!==null&&this.issues.push(m(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&>(i.value,this,ie("Element"),t)}validateString(e,t,n){if(!e.trim()){this.issues.push(m(n,"String must contain non-whitespace content"));return}let i=ns[t];i&&!i.exec(e)&&this.issues.push(m(n,"Invalid "+t+" format"))}validateNumber(e,t,n){isNaN(e)||!isFinite(e)?this.issues.push(m(n,"Invalid numeric value")):ss(t)&&!Number.isInteger(e)?this.issues.push(m(n,"Expected number to be an integer")):t==="positiveInt"&&e<=0?this.issues.push(m(n,"Expected number to be positive")):t==="unsignedInt"&&e<0&&this.issues.push(m(n,"Expected number to be non-negative"))}};function ss(r){return r==="integer"||r==="positiveInt"||r==="unsignedInt"}function as(r,e,t){let n=e.split(/(?=[A-Z])/g),i="";for(let o of n){if(i+=o,!t[i+"[x]"])continue;return!!A(r,i)}return!1}function mr(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(m(o,"Invalid null value"));else if(Array.isArray(i))for(let a=0;a<i.length;a++)i[a]===void 0?t.push(m(`${o}[${a}]`,"Invalid undefined value")):i[a]===null&&!r[s]?.[a]?t.push(m(`${o}[${a}]`,"Invalid null value")):i[a]&&mr(i[a],`${o}[${a}]`,t);else typeof i=="object"&&mr(i,o,t)}}function Rn(r,e){return e.pattern&&!xe(r,e.pattern)?!1:!(e.fixed&&!ge(r,e.fixed))}function cs(r,e,t){if(Array.isArray(r))return!1;let n=t.fields[e.path],i=t.type;switch(e.type){case"value":case"pattern":if(!r||!n)return!1;if(Rn(r,n))return!0;break;case"type":return!r||!i?.length?!1:i.some(o=>o.code===r.type)}return!1}function us(r,e){if(e){for(let t of e.slices)if(e.discriminator.every(n=>Te(xt(r,n.path))?.some(i=>cs(i,n,t))))return t.name}}function ds(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}]}var ls=new Set(["resourceType","id","meta","implicitRules","language","text","contained","extension","modifierExtension"]);function Sn(r){let e=y.types[r];return e&&e.structureDefinition.id===r&&e.structureDefinition.kind==="resource"}function ps(r){if(!r)throw new h(B("Resource type is null"));if(!Sn(r))throw new h(B("Unknown resource type"))}function fs(r){new Tt(r).validate()}var Tt=class{constructor(e){this.issues=[],this.root=e}validate(){let e=this.root;if(!e)throw new h(B("Resource is null"));let t=e.resourceType;if(!t)throw new h(B("Missing resource type"));if(vt(e,"",this.issues),this.validateObject(x(e),t),this.issues.length>0)throw new h({resourceType:"OperationOutcome",issue:this.issues})}validateObject(e,t){let n=y.types[e.type];if(!n)throw new h(B("Unknown type: "+e.type));let i=n.properties;this.checkProperties(t,i,e),this.checkAdditionalProperties(t,e,i)}checkProperties(e,t,n){for(let[i,o]of Object.entries(t))this.checkProperty(e+"."+i,o,n)}checkProperty(e,t,n){let i=e.split(".").pop(),o=A(n,i);if(R(o)){t.min!==void 0&&t.min>0&&this.issues.push(m(e,"Missing required property"));return}if(t.max==="*"){if(!Array.isArray(o)){this.issues.push(m(e,"Expected array for property"));return}for(let s of o)this.checkPropertyValue(e,t,s)}else{if(Array.isArray(o)){this.issues.push(m(e,"Expected single value for property"));return}this.checkPropertyValue(e,t,o)}}checkPropertyValue(e,t,n){n.value!==null&&(Z(n.type.charAt(0))?this.validatePrimitiveType(t,n):this.validateObject(n,e))}validatePrimitiveType(e,t){let{type:n,value:i}=t;if(i===null)return;if(!(t.type in he)){this.createIssue(e,`${n} is not a valid FHIR type`);return}let o=he[t.type];if(typeof i!==o&&typeof i?.valueOf()!==o){this.createIssue(e,"Invalid type for "+n);return}o==="string"?this.validateString(e,n,i):o==="number"&&this.validateNumber(e,n,i)}validateString(e,t,n){if(!n.trim()){this.createIssue(e,"Invalid empty string");return}let i=y.types[t]?.properties.value;if(i?.type){let o=Lt(i.type[0],"http://hl7.org/fhir/StructureDefinition/regex");o&&(new RegExp(o).exec(n)||this.createIssue(e,"Invalid "+t+" format"))}}validateNumber(e,t,n){if(isNaN(n)||!isFinite(n)){this.createIssue(e,"Invalid "+t+" value");return}hs(t)&&!Number.isInteger(n)&&this.createIssue(e,"Number is not an integer"),t==="positiveInt"&&n<=0&&this.createIssue(e,"Number is less than or equal to zero"),t==="unsignedInt"&&n<0&&this.createIssue(e,"Number is negative")}checkAdditionalProperties(e,t,n){let i=t.value;for(let o of Object.keys(i))this.checkAdditionalProperty(e,o,t,n)}checkAdditionalProperty(e,t,n,i){if(!ls.has(t)&&!(t in i)&&!ms(t,n,i)&&!this.checkPrimitiveElement(e,t,n)){let o=`${e}.${t}`;this.issues.push(m(o,`Invalid additional property "${o}"`))}}checkPrimitiveElement(e,t,n){return!t.startsWith("_")||!(t.slice(1)in n.value)?!1:(this.validateObject({type:"Element",value:n.value[t]},e),!0)}createIssue(e,t){this.issues.push(m(e.path,t))}};function hs(r){return r==="integer"||r==="positiveInt"||r==="unsignedInt"}function ms(r,e,t){for(let n of Object.keys(t)){if(!n.endsWith("[x]"))continue;let i=n.replace("[x]","");if(!r.startsWith(i))continue;let o=A(e,n);if(o&&(Array.isArray(o)&&(o=o[0]),o&&r===i+S(o.type)))return!0}return!1}function vt(r,e,t){r===null?t.push(m(e,"Invalid null value")):Array.isArray(r)?ys(r,e,t):typeof r=="object"&&gs(r,e,t)}function ys(r,e,t){for(let n=0;n<r.length;n++)r[n]===void 0?t.push(m(`${e}[${n}]`,"Invalid undefined value")):vt(r[n],`${e}[${n}]`,t)}function gs(r,e,t){for(let[n,i]of Object.entries(r))vt(i,`${e}${e?".":""}${n}`,t)}function xs(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()})})}0&&(module.exports={AccessPolicyInteraction,AndAtom,ArithemticOperatorAtom,AsAtom,BooleanInfixOperatorAtom,ClientStorage,ConcatAtom,ContainsAtom,ContentType,DEFAULT_SEARCH_COUNT,DotAtom,EmptySetAtom,EqualsAtom,EquivalentAtom,EventTarget,FHIRPATH_KEYWORDS,FHIRPATH_OPERATORS,FhirFilterComparison,FhirFilterConnective,FhirFilterNegation,FhirPathAtom,FhirSchemaValidator,FunctionAtom,Hl7Context,Hl7Field,Hl7Message,Hl7Segment,ImpliesAtom,InAtom,IndexerAtom,InfixOperatorAtom,IsAtom,LRUCache,LiteralAtom,MEDPLUM_VERSION,MedplumClient,MemoryStorage,NotEqualsAtom,NotEquivalentAtom,OAuthClientAssertionType,OAuthGrantType,OAuthTokenType,OperationOutcomeError,Operator,OperatorPrecedence,OrAtom,Parser,ParserBuilder,PrefixOperatorAtom,PropertyType,ReadablePromise,SearchParameterType,SymbolAtom,Tokenizer,UnaryOperatorAtom,UnionAtom,XorAtom,accepted,allOk,arrayBufferToBase64,arrayBufferToHex,arrayify,assertOk,badRequest,booleanToTypedValue,buildTypeName,calculateAge,calculateAgeString,canReadResourceType,canWriteResource,canWriteResourceType,capitalize,checkForNull,convertContainedResourcesToBundle,convertToTransactionBundle,crawlResource,createConstraintIssue,createProcessingIssue,createReference,createStructureIssue,created,decodeBase64,deepClone,deepEquals,deepIncludes,encodeBase64,encryptSHA256,evalFhirPath,evalFhirPathTyped,fhirPathArrayEquals,fhirPathArrayEquivalent,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,getAllQuestionnaireAnswers,getCodeBySystem,getDataType,getDateProperty,getDisplayString,getElementDefinition,getElementDefinitionTypeName,getExpressionForResourceType,getExpressionsForResourceType,getExtension,getExtensionValue,getIdentifier,getImageSrc,getNestedProperty,getPropertyDisplayName,getQuestionnaireAnswers,getRandomString,getReferenceString,getResourceTypeSchema,getResourceTypes,getSearchParameterDetails,getSearchParameters,getStatus,getTypedPropertyValue,globalSchema,gone,indexSearchParameter,indexSearchParameterBundle,indexStructureDefinition,indexStructureDefinitionBundle,initFhirPathParserBuilder,isAccepted,isEmpty,isGone,isJwt,isLowerCase,isMedplumAccessToken,isNotFound,isObject,isOk,isOperationOutcome,isPeriod,isProfileResource,isQuantity,isQuantityEquivalent,isReference,isResource,isResourceType,isResourceTypeSchema,isStringArray,isUUID,isValidDate,loadDataTypes,matchesAccessPolicy,matchesRange,matchesSearchRequest,normalizeErrorString,normalizeOperationOutcome,notFound,notModified,operationOutcomeIssueToString,operationOutcomeToString,parseCriteriaAsSearchRequest,parseFhirPath,parseFilterParameter,parseHl7DateTime,parseJWTPayload,parseMappingLanguage,parseReference,parseSearchDefinition,parseSearchRequest,parseSearchUrl,parseStructureDefinition,preciseEquals,preciseGreaterThan,preciseGreaterThanOrEquals,preciseLessThan,preciseLessThanOrEquals,preciseRound,projectAdminResourceTypes,protectedResourceTypes,removeDuplicates,reorderBundle,resolveId,satisfiedAccessPolicy,serverError,setCodeBySystem,singleton,sleep,streamToBuffer,stringify,subsetResource,toJsBoolean,toTypedValue,tokenize,tooManyRequests,unauthorized,validate,validateResource,validateResourceType,validationError});
|
|
40
|
+
}`.replace(/\s+/g," "),a=await this.graphql(s);Wt(a.data.StructureDefinitionList);for(let c of a.data.SearchParameterList)ze(c)})());return this.setCacheEntry(n,o),o}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 createAttachment(t,n,i,o){let s=await this.createBinary(t,n,i,o);return{contentType:i,url:s.url,title:n}}createBinary(t,n,i,o){let s=this.fhirUrl("Binary");return n&&s.searchParams.set("_filename",n),o?this.uploadwithProgress(s,t,i,o):this.post(s,t,i)}uploadwithProgress(t,n,i,o){return new Promise((s,a)=>{let c=new XMLHttpRequest;c.responseType="json",c.onabort=()=>a(new Error("Request aborted")),c.onerror=()=>a(new Error("Request error")),o&&(c.upload.onprogress=m=>o(m),c.upload.onload=m=>o(m)),c.onload=()=>{c.status>=200&&c.status<300?s(c.response):a(new Error(c.statusText))},c.open("POST",t),c.withCredentials=!0,c.setRequestHeader("Authorization","Bearer "+this.accessToken),c.setRequestHeader("Cache-Control","no-cache, no-store, max-age=0"),c.setRequestHeader("Content-Type",i),c.setRequestHeader("X-Medplum","extended"),c.send(n)})}async createPdf(t,n,i,o){if(!this.createPdfImpl)throw new Error("PDF creation not enabled");let s=await this.createPdfImpl(t,i,o);return this.createBinary(s,n,"application/pdf")}createComment(t,n,i){let o=this.getProfile(),s,a;return t.resourceType==="Encounter"&&(s=Q(t),a=t.subject),t.resourceType==="ServiceRequest"&&(s=t.encounter,a=t.subject),t.resourceType==="Patient"&&(a=Q(t)),this.createResource({resourceType:"Communication",basedOn:[Q(t)],encounter:s,subject:a,sender:o?Q(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");this.invalidateSearches(t.resourceType);let i=await this.put(this.fhirUrl(t.resourceType,t.id),t,void 0,n);return i||(i=t),this.cacheResource(i),i}patchResource(t,n,i,o){return this.invalidateSearches(t),this.patch(this.fhirUrl(t,n),i,o)}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")+`?identifier=${a.system}|${a.value}`}return this.post(s,n,i,o)}executeBatch(t,n){return this.post(this.fhirBaseUrl.slice(0,-1),t,void 0,n)}sendEmail(t,n){return this.post("email/v1/send",t,_.JSON,n)}graphql(t,n,i,o){return this.post(this.fhirUrl("$graphql"),{query:t,operationName:n,variables:i},_.JSON,o)}readResourceGraph(t,n,i,o){return this.get(`${this.fhirUrl(t,n)}/$graph?graph=${i}`,o)}pushToAgent(t,n,i,o){return this.post(this.fhirUrl("Agent",t.id,"$push"),n,i,o)}getActiveLogin(){return this.storage.getObject("activeLogin")}async setActiveLogin(t){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.medplumServer=hr(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.get("auth/me").then(i=>{this.profilePromise=void 0,this.sessionDetails=i,this.dispatchEvent({type:"change"}),t(i.profile)}).catch(n)}),this.profilePromise):Promise.resolve(void 0)}isLoading(){return!!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();return i.startsWith(En)&&(t=this.fhirUrl(i)),this.addFetchOptionsDefaults(n),(await this.fetchWithRetry(t.toString(),n)).blob()}async uploadMedia(t,n,i,o,s){let a=await this.createBinary(t,i,n);return this.createResource({...o,resourceType:"Media",content:{contentType:n,url:En+a.id,title:i}},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;i.Prefer="respond-async";let o=await this.fetchWithRetry(t,n);if(o.status===202){let s=await wn(o);if(s)return this.pollStatus(s)}return this.parseResponse(o,"POST",t)}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 P(Promise.resolve(t)))}deleteCacheEntry(t){this.requestCache&&this.requestCache.delete(t)}async request(t,n,i={}){this.refreshPromise&&await this.refreshPromise,i.method=t,this.addFetchOptionsDefaults(i);let o=await this.fetchWithRetry(n,i);return this.parseResponse(o,t,n,i)}async parseResponse(t,n,i,o={}){if(t.status===401)return this.handleUnauthenticated(n,i,o);if(t.status===204||t.status===304)return;let a=t.headers.get("content-type")?.includes("json");if(t.status===404&&!a)throw new d(wt);let c=t.headers.get("content-location"),m=o.redirect??this.options.redirect;if(t.status===201&&c&&m==="follow")return this.request("GET",c,{...o,body:void 0});let p;if(a)try{p=await t.json()}catch(H){throw console.error("Error parsing response",t.status,H),H}else p=await t.text();if(t.status>=400)throw new d(Fe(p));return p}async fetchWithRetry(t,n){t.startsWith("http")||(t=new URL(t,this.baseUrl).href);let i=3,o=200,s;for(let a=0;a<i;a++){try{if(this.options.verbose&&this.logRequest(t,n),s=await this.fetch(t,n),this.options.verbose&&this.logResponse(s),s.status<500)return s}catch(c){this.retryCatch(a,i,c)}await Be(o)}return s}logRequest(t,n){if(console.log(`> ${n.method} ${t}`),n.headers){let i=n.headers,o=Object.entries(i).sort((s,a)=>s[0].localeCompare(a[0]));for(let[s,a]of o)console.log(`> ${s}: ${a}`)}}logResponse(t){console.log(`< ${t.status} ${t.statusText}`),t.headers&&t.headers.forEach((n,i)=>console.log(`< ${i}: ${n}`))}async pollStatus(t){let n=!0,i,o=2e3;for(;n;){let s={};this.addFetchOptionsDefaults(s);let a=await this.fetchWithRetry(t,s);if(a.status!==202&&(n=!1,i=a,a.status===201)){let c=await wn(a);c&&(i=await this.fetchWithRetry(c,s))}await Be(o)}return this.parseResponse(i,"POST",t)}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,this.fhirBaseUrl+o.url,o.options))}catch(s){o.reject(new d(Fe(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.slice(0,-1),n);for(let o=0;o<t.length;o++){let s=t[o],a=i.entry?.[o];a?.response?.outcome&&!Le(a.response.outcome)?s.reject(new d(a.response.outcome)):s.resolve(a?.resource)}}addFetchOptionsDefaults(t){let n=t.headers;n||(n={},t.headers=n),n.Accept=_.FHIR_JSON,n["X-Medplum"]="extended",t.body&&!n["Content-Type"]&&(n["Content-Type"]=_.FHIR_JSON),this.accessToken?n.Authorization="Bearer "+this.accessToken:this.basicAuth&&(n.Authorization="Basic "+this.basicAuth),t.cache||(t.cache="no-cache"),t.credentials||(t.credentials="include")}setRequestContentType(t,n){t.headers||(t.headers={});let i=t.headers;i["Content-Type"]=n}setRequestBody(t,n){typeof n=="string"||typeof Blob<"u"&&n instanceof Blob||typeof File<"u"&&n instanceof File||typeof Uint8Array<"u"&&n instanceof Uint8Array?t.body=n:n&&(t.body=JSON.stringify(n))}handleUnauthenticated(t,n,i){return this.refresh()?this.request(t,n,i):(this.clearActiveLogin(),this.onUnauthenticated&&this.onUnauthenticated(),Promise.reject(new Error("Unauthenticated")))}async startPkce(){let t=ht();sessionStorage.setItem("pkceState",t);let n=ht();sessionStorage.setItem("codeVerifier",n);let i=await lr(n),o=Nt(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??Pn()),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??Pn()),typeof sessionStorage<"u"){let o=sessionStorage.getItem("codeVerifier");o&&i.set("code_verifier",o)}return this.fetchTokens(i)}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=ur(t+":"+n)}async fhircastSubscribe(t,n){if(!(typeof t=="string"&&t!==""))throw new d(h("Invalid topic provided. Topic must be a valid string."));if(!(typeof n=="object"&&Array.isArray(n)&&n.length>0))throw new d(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/STU2",yt(i),_.FORM_URL_ENCODED))["hub.channel.endpoint"];if(!s)throw new Error("Invalid response!");return i.endpoint=s,i}async fhircastUnsubscribe(t){if(!ke(t))throw new d(h("Invalid topic or subscriptionRequest. SubscriptionRequest must be an object."));if(!(t.endpoint&&typeof t.endpoint=="string"&&t.endpoint.startsWith("ws")))throw new d(h("Provided subscription request must have an endpoint in order to unsubscribe."));t.mode="unsubscribe",await this.post("/fhircast/STU2",yt(t),_.FORM_URL_ENCODED)}fhircastConnect(t){return new Ie(t)}async fhircastPublish(t,n,i){return this.post(`/fhircast/STU2/${t}`,fr(t,n,i),_.JSON)}async invite(t,n){return this.post("admin/projects/"+t+"/invite",n)}async fetchTokens(t){let n={method:"POST",headers:{"Content-Type":_.FORM_URL_ENCODED},body:t.toString(),credentials:"include"},i=n.headers;this.basicAuth&&(i.Authorization=`Basic ${this.basicAuth}`);let o=await this.fetchWithRetry(this.tokenUrl,n);if(!o.ok){this.clearActiveLogin();try{let a=await o.json();throw new d(k(a.error_description))}catch(a){throw new d(k("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(mr(n)){let i=gt(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{}}retryCatch(t,n,i){if(i.message==="Failed to fetch"&&t===1&&this.dispatchEvent({type:"offline"}),t>=n-1)throw i}};function ms(){if(!globalThis.fetch)throw new Error("Fetch not available in this environment");return globalThis.fetch.bind(globalThis)}function Pn(){return typeof window>"u"?"":window.location.protocol+"//"+window.location.host+"/"}function Cn(r){return r.endsWith("/")?r:r+"/"}function Tt(r,e){return new URL(e,r).toString()}async function wn(r){let e=r.headers.get("content-location");if(e)return e;let t=r.headers.get("location");if(t)return t;let n=await r.json();if(de(n)&&n.issue?.[0]?.diagnostics)return n.issue[0].diagnostics}function In(r){let e=r.entry?.map(t=>t.resource)??[];return Object.assign(e,{bundle:r})}var gr="http://unitsofmeasure.org",hs="http://loinc.org",ys="http://snomed.info/sct",gs="http://www.nlm.nih.gov/research/umls/rxnorm",xs="http://www.ama-assn.org/go/cpt",Ts="http://hl7.org/fhir/sid/icd-10";var vs=[...Ae,"->","<<",">>"];function Vn(r){return new z(r,Ee,vs).tokenize()}var xr=class{constructor(e){this.parser=e;this.structureMap={resourceType:"StructureMap"}}parse(){for(this.parser.consume("Symbol","map"),this.structureMap.url=this.parser.consume("String").value,this.parser.consume("="),this.structureMap.name=this.parser.consume().value;this.parser.hasMore();){let e=this.parser.peek()?.value;switch(e){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}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(){let e=[this.parseRuleSource()];for(;this.parser.hasMore()&&this.parser.peek()?.value===",";)this.parser.consume(","),e.push(this.parseRuleSource());return e}parseRuleSource(){let e={},t=this.parseRuleContext();if(t.includes(".")){let n=t.split(".");e.context=n[0],e.element=n[1]}else e.context=t;if(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("default"),this.parser.consumeAndParse()),(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==="where"){this.parser.consume("Symbol","where");let n=this.parser.consumeAndParse(f.Arrow);e.condition=n.toString()}if(this.parser.peek()?.value==="check"){this.parser.consume("Symbol","check");let n=this.parser.consumeAndParse(f.Arrow);e.check=n.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={},t=this.parseRuleContext();if(t.includes(".")){let n=t.split(".");e.contextType="variable",e.context=n[0],e.element=n[1]}else e.context=t;return 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==="first"||this.parser.peek()?.value==="share"||this.parser.peek()?.value==="last"||this.parser.peek()?.value==="collate")&&(e.listMode=[this.parser.consume().value]),e}parseRuleTargetTransform(e){e.transform="copy";let t=this.parser.consumeAndParse(f.As);if(t instanceof q)this.parseRuleTargetSymbol(e,t);else if(t instanceof $)this.parseRuleTargetFunction(e,t);else if(t instanceof V)this.parseRuleTargetLiteral(e,t);else throw new Error(`Unexpected FHIRPath: ${t}`)}parseRuleTargetSymbol(e,t){e.parameter=[{valueId:t.name}]}parseRuleTargetFunction(e,t){let n=t.name;switch(n){case"create":e.parameter=[{valueString:t.args[0].value.value}];break;case"translate":e.parameter=[{}];break;default:throw new Error("Unknown target function: "+n)}}parseRuleTargetLiteral(e,t){switch(t.value.type){case"boolean":e.parameter=[{valueBoolean:t.value.value}];break;case"decimal":e.parameter=[{valueDecimal:t.value.value}];break;case"string":e.parameter=[{valueString:t.value.value}];break;default:throw new Error("Unknown target literal type: "+t.value.type)}}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(f.Arrow);return[{name:e.name,variable:e.args.map(t=>t.name)}]}parseConceptMap(){for(;this.parser.peek()?.value!=="}";)this.parser.consume();this.parser.consume("}")}},Ss=se().registerInfix("->",{precedence:f.Arrow}).registerInfix(";",{precedence:f.Semicolon});function bs(r){let e=Ss.construct(Vn(r));return e.removeComments(),new xr(e).parse()}var Rs=[...Ae,"eq","ne","co"];function _n(r){return new z(r,Ee,Rs,{dateTimeLiterals:!0,symbolRegex:/[^\s\])]/}).tokenize()}var De=class{constructor(e,t,n){this.path=e;this.operator=t;this.value=n}},Ve=class{constructor(e){this.child=e}},_e=class{constructor(e,t,n){this.keyword=e;this.left=t;this.right=n}};var Es={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:"missing",po:void 0,ss:void 0,sb:void 0,in:"in",ni:"not-in",re:void 0,identifier:"identifier"};function As(r){let e=Es[r];if(!e)throw new d(k("Invalid operator: "+r));return e}var Tr=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 Ve(this.parse()),this.parser.consume(")")):e=new De(this.parser.consume("Symbol").value,As(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 _e(t,e,this.parse())):e}},Ps=se();function Cs(r){let e=Ps.construct(_n(r));return e.removeComments(),new Tr(e).parse()}var j=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}},vr=class r{constructor(e,t=new j){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 le(["MSH",this.context.getMsh2(),o,s,n,i,Un(e),"",this.buildAckMessageType(t),e.getTime().toString(),"P",c],this.context),new le(["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 j("\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=>le.parse(n,t)),t)}},le=class r{constructor(e,t=new j){this.context=t,Lt(e)?this.fields=e.map(n=>re.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 re([[this.context.getMsh1()]],this.context);if(e===2)return new re([[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 j){return new r(e.split(t.fieldSeparator).map(n=>re.parse(n,t)),t)}},re=class r{constructor(e,t=new j){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 j){return new r(e.split(t.repetitionSeparator).map(n=>n.split(t.componentSeparator)),t)}};function ws(r,e){if(!r)return;let t=te(r.slice(0,4),0),n=te(r.slice(4,6),1)-1,i=te(r.slice(6,8),1),o=te(r.slice(8,10),0),s=te(r.slice(10,12),0),a=te(r.slice(12,14),0),c=0;r.includes(".")&&(c=te(r.slice(15,19),0));let m=new Date(Date.UTC(t,n,i,o,s,a,c)),p=Is(r,e?.tzOffset);return p!==0&&(m=new Date(m.getTime()-p)),m.toISOString()}function te(r,e){let t=parseInt(r,10);return isNaN(t)?e:t}function Is(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 Un(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}function ks(r){if(!r)throw new d(h("Resource type is null"));if(!Jt(r))throw new d(h("Unknown resource type"))}function Sr(r,e,t){r===null?t.push(y(e,"Invalid null value")):Array.isArray(r)?Os(r,e,t):typeof r=="object"&&Ds(r,e,t)}function Os(r,e,t){for(let n=0;n<r.length;n++)r[n]===void 0?t.push(y(`${e}[${n}]`,"Invalid undefined value")):Sr(r[n],`${e}[${n}]`,t)}function Ds(r,e,t){for(let[n,i]of Object.entries(r))Sr(i,`${e}${e?".":""}${n}`,t)}function Vs(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 vt(r,e,t,n){new br(r,e,t,n).crawl()}var br=class{constructor(e,t,n,i){this.rootResource=e,this.visitor=t,n?this.schema=n:this.schema=J(e.resourceType),i?this.initialPath=i:this.initialPath=e.resourceType}crawl(){this.crawlObject(T(this.rootResource),this.schema,this.initialPath)}crawlObject(e,t,n){let i=D(e.value);i&&this.visitor.onEnterResource&&this.visitor.onEnterResource(n,e,t),this.visitor.onEnterObject&&this.visitor.onEnterObject(n,e,t);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=St(e,t);this.visitor.visitProperty&&this.visitor.visitProperty(e,t,i,o,n);for(let s of o)if(s)for(let a of ye(s))this.crawlPropertyValue(a,i)}crawlPropertyValue(e,t){if(!he(e.type.charAt(0))){let n=J(e.type);this.crawlObject(e,n,t)}}};function St(r,e){if(e==="$this")return[r];let[t,...n]=e.split("."),i=[C(r,t)];for(let o of n){let s=[];for(let a of i)if(Array.isArray(a))for(let c of a)s.push(C(c,o));else a!==void 0&&s.push(C(a,o));i=s}return i}var Rr={base64Binary:"string",boolean:"boolean",canonical:"string",code:"string",date:"string",dateTime:"string",decimal:"number",id:"string",instant:"string",integer:"number",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"},_s={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:/.*/},Us={"ele-1":!0};function Ls(r,e){new Er(r.resourceType,r,e).validate()}var Er=class{constructor(e,t,n){this.issues=[],this.rootResource=t,this.currentResource=[],n?this.schema=Ge(n):this.schema=J(e)}validate(){let e=this.rootResource.resourceType;if(!e)throw new d(h("Missing resource type"));Ar(this.rootResource,e,this.issues),vt(this.rootResource,this,this.schema);let t=this.issues;if(this.issues=[],t.length>0)throw new d({resourceType:"OperationOutcome",issue:t})}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(y(n,"Expected array of values for property"));return}c=a}else{if(Array.isArray(a)){this.issues.push(y(n,"Expected single value for property"));return}c=[a]}(c.length<s.min||c.length>s.max)&&this.issues.push(y(n,`Invalid number of values: expected ${s.min}..${Number.isFinite(s.max)?s.max:"*"}, but found ${c.length}`)),Ln(a,s)||this.issues.push(y(n,"Value did not match expected pattern"));let m=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.checkPropertyValue(p,n);let H=Bs(p,s.slicing);H&&m&&(m[H]+=1)}this.validateSlices(s.slicing?.slices,m,n)}}checkPresence(e,t,n){return e===void 0?(t.min>0&&this.issues.push(y(n,"Missing required property")),!1):S(e)?(this.issues.push(y(n,"Invalid empty value")),!1):!0}checkPropertyValue(e,t){he(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(y(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)for(let o of Object.keys(i))o!=="resourceType"&&!(o in t)&&!(o.startsWith("_")&&o.slice(1)in t)&&!Ns(e,o,t)&&this.issues.push(y(`${n}.${o}`,`Invalid additional property "${o}"`))}constraintsCheck(e,t,n){let i=t.constraints;if(i){for(let o of i)if(o.severity==="error"&&!(o.key in Us)&&!this.isExpressionTrue(o,e,n)){this.issues.push(Dt(n,o));return}}}isExpressionTrue(e,t,n){try{let i=ae(e.expression,[t],{context:t,resource:T(this.currentResource[this.currentResource.length-1]),rootResource:T(this.rootResource),ucum:T(gr)});return i.length===1&&i[0].value===!0}catch(i){return this.issues.push(Vt(n,"Error evaluating invariant expression",i,{fhirpath:e.expression})),!1}}validatePrimitiveType(e,t){let[n,i]=qs(e);if(n){let{type:o,value:s}=n;if(!(o in Rr)){this.issues.push(y(t,`Invalid JSON type: ${o} is not a valid FHIR type`));return}let a=Rr[o];if(typeof s!==a){s!==null&&this.issues.push(y(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&&vt(i.value,this,J("Element"),t)}validateString(e,t,n){if(!e.trim()){this.issues.push(y(n,"String must contain non-whitespace content"));return}let i=_s[t];i&&!i.exec(e)&&this.issues.push(y(n,"Invalid "+t+" format"))}validateNumber(e,t,n){isNaN(e)||!isFinite(e)?this.issues.push(y(n,"Invalid numeric value")):Fs(t)&&!Number.isInteger(e)?this.issues.push(y(n,"Expected number to be an integer")):t===u.positiveInt&&e<=0?this.issues.push(y(n,"Expected number to be positive")):t===u.unsignedInt&&e<0&&this.issues.push(y(n,"Expected number to be non-negative"))}};function Fs(r){return r===u.integer||r===u.positiveInt||r===u.unsignedInt}function Ns(r,e,t){e.startsWith("_")&&(e=e.slice(1));let n=e.split(/(?=[A-Z])/g),i="";for(let o of n)if(i+=o,t[i+"[x]"])return!!C(r,i);return!1}function Ar(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(y(o,"Invalid null value"));else if(Array.isArray(i))for(let a=0;a<i.length;a++)i[a]===void 0?t.push(y(`${o}[${a}]`,"Invalid undefined value")):i[a]===null&&!r[s]?.[a]?t.push(y(`${o}[${a}]`,"Invalid null value")):i[a]&&Ar(i[a],`${o}[${a}]`,t);else typeof i=="object"&&Ar(i,o,t)}}function Ln(r,e){return e.pattern&&!me(r,e.pattern)?!1:!(e.fixed&&!fe(r,e.fixed))}function Ms(r,e,t){if(Array.isArray(r))return!1;let n=t.elements[e.path],i=t.type;switch(e.type){case"value":case"pattern":if(!r||!n)return!1;if(Ln(r,n))return!0;break;case"type":return!r||!i?.length?!1:i.some(o=>o.code===r.type)}return!1}function Bs(r,e){if(e){for(let t of e.slices)if(e.discriminator.every(n=>ye(St(r,n.path))?.some(i=>Ms(i,n,t))))return t.name}}function qs(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}]}0&&(module.exports={AccessPolicyInteraction,CPT,ClientStorage,ContentType,DEFAULT_SEARCH_COUNT,EventTarget,FhirFilterComparison,FhirFilterConnective,FhirFilterNegation,FhircastConnection,Hl7Context,Hl7Field,Hl7Message,Hl7Segment,ICD10,InfixOperatorAtom,LOINC,LRUCache,MEDPLUM_VERSION,MedplumClient,MemoryStorage,OAuthClientAssertionType,OAuthGrantType,OAuthTokenType,OperationOutcomeError,Operator,OperatorPrecedence,Parser,ParserBuilder,PrefixOperatorAtom,PropertyType,RXNORM,ReadablePromise,SNOMED,SearchParameterType,TypedEventTarget,UCUM,accepted,allOk,arrayBufferToBase64,arrayBufferToHex,arrayify,assertOk,badRequest,booleanToTypedValue,buildTypeName,calculateAge,calculateAgeString,canReadResourceType,canWriteResource,canWriteResourceType,capitalize,checkForNull,compressElement,convertContainedResourcesToBundle,convertToTransactionBundle,crawlResource,createConstraintIssue,createFhircastMessagePayload,createProcessingIssue,createReference,createStructureIssue,created,decodeBase64,deepClone,deepEquals,deepIncludes,encodeBase64,encryptSHA256,evalFhirPath,evalFhirPathTyped,fhirPathArrayEquals,fhirPathArrayEquivalent,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,getDisplayString,getElementDefinition,getElementDefinitionTypeName,getExpressionForResourceType,getExpressionsForResourceType,getExtension,getExtensionValue,getIdentifier,getImageSrc,getNestedProperty,getPropertyDisplayName,getQuestionnaireAnswers,getRandomString,getReferenceString,getResourceTypes,getSearchParameter,getSearchParameterDetails,getSearchParameters,getStatus,getTypedPropertyValue,globalSchema,gone,indexSearchParameter,indexSearchParameterBundle,indexStructureDefinitionBundle,inflateBaseSchema,inflateElement,initFhirPathParserBuilder,isAccepted,isCompletedSubscriptionRequest,isDataTypeLoaded,isEmpty,isFhircastResourceType,isGone,isJwt,isLowerCase,isMedplumAccessToken,isNotFound,isObject,isOk,isOperationOutcome,isPeriod,isProfileResource,isQuantity,isQuantityEquivalent,isReference,isResource,isResourceType,isResourceTypeSchema,isStringArray,isUUID,isValidDate,loadDataType,matchesAccessPolicy,matchesRange,matchesSearchRequest,normalizeErrorString,normalizeOperationOutcome,notFound,notModified,operationOutcomeIssueToString,operationOutcomeToString,parseCriteriaAsSearchRequest,parseFhirPath,parseFilterParameter,parseHl7DateTime,parseJWTPayload,parseMappingLanguage,parseReference,parseSearchDefinition,parseSearchRequest,parseSearchUrl,parseStructureDefinition,parseXFhirQuery,preciseEquals,preciseGreaterThan,preciseGreaterThanOrEquals,preciseLessThan,preciseLessThanOrEquals,preciseRound,projectAdminResourceTypes,protectedResourceTypes,removeDuplicates,reorderBundle,resolveId,satisfiedAccessPolicy,serializeFhircastSubscriptionRequest,serverError,setCodeBySystem,setIdentifier,singleton,sleep,streamToBuffer,stringify,stringifyTypedValue,subsetResource,toJsBoolean,toTypedValue,tooManyRequests,tryGetDataType,unauthorized,validate,validateFhircastSubscriptionRequest,validateResourceType,validationError});
|
|
32
41
|
//# sourceMappingURL=index.cjs.map
|