@medplum/core
Advanced tools
Comparing version 0.9.0 to 0.9.1
@@ -1,16 +0,2 @@ | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).medplum=e.medplum||{},e.medplum.core={}))}(this,(function(e){"use strict"; | ||
/*! ***************************************************************************** | ||
Copyright (c) Microsoft Corporation. | ||
Permission to use, copy, modify, and/or distribute this software for any | ||
purpose with or without fee is hereby granted. | ||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH | ||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY | ||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, | ||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM | ||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR | ||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR | ||
PERFORMANCE OF THIS SOFTWARE. | ||
***************************************************************************** */function t(e,t,i,r){return new(i||(i=Promise))((function(n,o){function s(e){try{c(r.next(e))}catch(e){o(e)}}function a(e){try{c(r.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?n(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(s,a)}c((r=r.apply(e,t||[])).next())}))}function i(e,t,i,r){if("a"===i&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?r:"a"===i?r.call(e):r?r.value:t.get(e)}function r(e,t,i,r,n){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!n)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?n.call(e,i):n?n.value=i:t.set(e,i),i}var n,o,s,a;class c{constructor(e=10){n.add(this),o.set(this,void 0),s.set(this,void 0),r(this,o,e,"f"),r(this,s,new Map,"f")}clear(){i(this,s,"f").clear()}get(e){const t=i(this,s,"f").get(e);return t&&(i(this,s,"f").delete(e),i(this,s,"f").set(e,t)),t}set(e,t){i(this,s,"f").has(e)?i(this,s,"f").delete(e):i(this,s,"f").size>=i(this,o,"f")&&i(this,s,"f").delete(i(this,n,"m",a).call(this)),i(this,s,"f").set(e,t)}}function u(e,t){const i=[];return e.prefix&&((null==t?void 0:t.all)||(null==t?void 0:t.prefix))&&i.push(...e.prefix),e.given&&i.push(...e.given),e.family&&i.push(e.family),e.suffix&&((null==t?void 0:t.all)||(null==t?void 0:t.suffix))&&i.push(...e.suffix),e.use&&((null==t?void 0:t.all)||(null==t?void 0:t.use))&&i.push("["+e.use+"]"),i.join(" ").trim()}function h(e){return e.resourceType+"/"+e.id}function d(e){return"Patient"===e.resourceType||"Practitioner"===e.resourceType||"RelatedPerson"===e.resourceType}function l(e){var t,i;if(d(e)){const t=function(e){const t=e.name;if(t&&t.length>0)return u(t[0]);return}(e);if(t)return t}if("Device"===e.resourceType){const t=function(e){const t=e.deviceName;if(t&&t.length>0)return t[0].name;return}(e);if(t)return t}return"Observation"===e.resourceType&&"code"in e&&(null===(t=e.code)||void 0===t?void 0:t.text)?null===(i=e.code)||void 0===i?void 0:i.text:"User"===e.resourceType&&e.email?e.email:"name"in e&&e.name&&"string"==typeof e.name?e.name:h(e)}function f(e){if(e.url&&e.contentType&&e.contentType.startsWith("image/"))return e.url}function p(e,t){const i=new Date(e);i.setUTCHours(0,0,0,0);const r=t?new Date(t):new Date;r.setUTCHours(0,0,0,0);const n=i.getUTCFullYear(),o=i.getUTCMonth(),s=i.getUTCDate(),a=r.getUTCFullYear(),c=r.getUTCMonth(),u=r.getUTCDate();let h=a-n;(c<o||c===o&&u<s)&&h--;let d=12*a+c-(12*n+o);u<s&&d--;return{years:h,months:d,days:Math.floor((r.getTime()-i.getTime())/864e5)}}function m(e,t){return JSON.stringify(e,v,t?2:void 0)}function v(e,t){return!function(e){return!!e.match(/\d+$/)}(e)&&function(e){if(null==e)return!0;const t=typeof e;return"string"===t&&""===e||"object"===t&&0===Object.keys(e).length}(t)?void 0:t}function g(e){return null!==e&&"object"==typeof e}o=new WeakMap,s=new WeakMap,n=new WeakSet,a=function(){return i(this,s,"f").keys().next().value};const y=[];for(let e=0;e<256;e++)y.push(e.toString(16).padStart(2,"0"));function T(e){const t=new Uint8Array(e),i=new Array(t.length);for(let e=0;e<t.length;e++)i[e]=y[t[e]];return i.join("")}function E(e){const t=new Uint8Array(e),i=[];for(let e=0;e<t.length;e++)i[e]=String.fromCharCode(t[e]);return window.btoa(i.join(""))}function w(e){return e.charAt(0).toUpperCase()+e.substr(1)}function S(){const e=new Uint32Array(28);return crypto.getRandomValues(e),T(e.buffer)}var R;function O(e){const t=function(e){if("undefined"!=typeof window)return window.atob(e);if("undefined"!=typeof Buffer)return Buffer.from(e,"base64").toString("binary");throw new Error("Unable to decode base64")}(e.replace(/-/g,"+").replace(/_/g,"/")),i=Array.from(t).reduce(((e,t)=>`${e}%${("00"+t.charCodeAt(0).toString(16)).slice(-2)}`),""),r=decodeURIComponent(i);return JSON.parse(r)}R=new WeakMap;const C="ok",P="created",U="gone",A="not-modified",b="not-found",k="access-denied",_={resourceType:"OperationOutcome",id:C,issue:[{severity:"information",code:"information",details:{text:"All OK"}}]},I={resourceType:"OperationOutcome",id:P,issue:[{severity:"information",code:"information",details:{text:"Created"}}]},N={resourceType:"OperationOutcome",id:A,issue:[{severity:"information",code:"information",details:{text:"Not Modified"}}]},M={resourceType:"OperationOutcome",id:b,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},x={resourceType:"OperationOutcome",id:U,issue:[{severity:"error",code:"gone",details:{text:"Gone"}}]},L={resourceType:"OperationOutcome",id:k,issue:[{severity:"error",code:"access-denied",details:{text:"Access Denied"}}]};function j(e){return e.id===C||e.id===P||e.id===A}class D extends Error{constructor(e){var t,i;super(null===(i=null===(t=null==e?void 0:e.issue)||void 0===t?void 0:t[0].details)||void 0===i?void 0:i.text),this.outcome=e}}var W;e.Operator=void 0,(W=e.Operator||(e.Operator={})).EQUALS="eq",W.NOT_EQUALS="ne",W.GREATER_THAN="gt",W.LESS_THAN="lt",W.GREATER_THAN_OR_EQUALS="ge",W.LESS_THAN_OR_EQUALS="le",W.STARTS_AFTER="sa",W.ENDS_BEFORE="eb",W.APPROXIMATELY="ap",W.CONTAINS="contains",W.EXACT="exact",W.TEXT="text",W.ABOVE="above",W.BELOW="below",W.IN="in",W.NOT_IN="not-in",W.OF_TYPE="of-type";const B=[e.Operator.CONTAINS,e.Operator.EXACT,e.Operator.TEXT,e.Operator.ABOVE,e.Operator.BELOW,e.Operator.IN,e.Operator.NOT_IN,e.Operator.OF_TYPE],H=[e.Operator.NOT_EQUALS,e.Operator.GREATER_THAN,e.Operator.LESS_THAN,e.Operator.GREATER_THAN_OR_EQUALS,e.Operator.LESS_THAN_OR_EQUALS,e.Operator.STARTS_AFTER,e.Operator.ENDS_BEFORE,e.Operator.APPROXIMATELY];function F(t){const i=new URL(t,"https://example.com/"),r=i.pathname.replace(/(^\/)|(\/$)/g,"").split("/").pop();let n,o,s,a,c,u;return new URLSearchParams(i.search).forEach(((t,i)=>{"_fields"===i?s=t.split(","):"_page"===i?a=parseInt(t):"_count"===i?c=parseInt(t):"_total"===i?u=t:"_sort"===i?(o=o||[],o.push(function(e){return e.startsWith("-")?{code:e.substring(1),descending:!0}:{code:e}}(t))):(n=n||[],n.push(function(t,i){let r=t,n=e.Operator.EQUALS;for(const e of B){const t=r.indexOf(":"+e);-1!==t&&(n=e,r=r.substring(0,t))}for(const e of H)i.match(new RegExp("^"+e+"\\d"))&&(n=e,i=i.substring(e.length));return{code:r,operator:n,value:i}}(i,t)))})),{resourceType:r,filters:n,fields:s,page:a,count:c,total:u,sortRules:o}}function $(e){const t=[];return e.fields&&t.push("_fields="+e.fields.join(",")),e.filters&&e.filters.forEach((e=>t.push(function(e){const t=B.includes(e.operator)?":"+e.operator:"",i=H.includes(e.operator)?e.operator:"";return`${e.code}${t}=${i}${encodeURIComponent(e.value)}`}(e)))),e.sortRules&&e.sortRules.length>0&&t.push(function(e){if(!e||0===e.length)return"";return"_sort="+e.map((e=>e.descending?"-"+e.code:e.code)).join(",")}(e.sortRules)),e.page&&e.page>0&&t.push("_page="+e.page),e.count&&e.count>0&&t.push("_count="+e.count),e.total&&t.push("_total="+encodeURIComponent(e.total)),0===t.length?"":(t.sort(),"?"+t.join("&"))}var Q,X,q,V,Y,z,G,J,K,Z,ee,te,ie,re,ne,oe,se,ae,ce,ue,he,de,le,fe,pe,me,ve,ge,ye,Te,Ee,we,Se;class Re{constructor(){Q.set(this,void 0),r(this,Q,"undefined"!=typeof localStorage?localStorage:new Oe,"f")}clear(){i(this,Q,"f").clear()}getString(e){return i(this,Q,"f").getItem(e)||void 0}setString(e,t){t?i(this,Q,"f").setItem(e,t):i(this,Q,"f").removeItem(e)}getObject(e){const t=this.getString(e);return t?JSON.parse(t):void 0}setObject(e,t){this.setString(e,t?m(t):void 0)}}Q=new WeakMap;class Oe{constructor(){X.set(this,void 0),r(this,X,new Map,"f")}get length(){return i(this,X,"f").size}clear(){i(this,X,"f").clear()}getItem(e){var t;return null!==(t=i(this,X,"f").get(e))&&void 0!==t?t:null}setItem(e,t){t?i(this,X,"f").set(e,t):i(this,X,"f").delete(e)}removeItem(e){i(this,X,"f").delete(e)}key(e){return Array.from(i(this,X,"f").keys())[e]}}function Ce(){return{types:{}}}function Pe(e,t){return{display:e,description:t,properties:{},searchParams:{_lastUpdated:{base:[e],code:"_lastUpdated",type:"date",expression:e+".meta.lastUpdated"}}}}function Ue(e,t){var i;const r=t.name;if(!r)return;e.types[r]=Pe(r,t.description);const n=null===(i=t.snapshot)||void 0===i?void 0:i.element;if(n){const t=n.filter((e=>e.path!==r&&e.path));t.forEach((t=>function(e,t){var i,r;const n=t.path,o=null===(r=null===(i=t.type)||void 0===i?void 0:i[0])||void 0===r?void 0:r.code;if("Element"!==o&&"BackboneElement"!==o)return;const s=n.split("."),a=be(s);a in e.types||(e.types[a]=Pe(a,t.definition),e.types[a].parentType=be(s.slice(0,s.length-1)))}(e,t))),t.forEach((t=>function(e,t){const i=t.path.split(".");if(1===i.length)return;const r=be(i.slice(0,i.length-1)),n=e.types[r],o=i[i.length-1];n.properties[o]=t}(e,t)))}}function Ae(e,t){if(t.base)for(const i of t.base){const r=e.types[i];r&&(r.searchParams||(r.searchParams={}),r.searchParams[t.code]=t)}}function be(e){return e.map(w).join("")}X=new WeakMap,e.PropertyType=void 0,(q=e.PropertyType||(e.PropertyType={})).Address="Address",q.Age="Age",q.Annotation="Annotation",q.Attachment="Attachment",q.BackboneElement="BackboneElement",q.CodeableConcept="CodeableConcept",q.Coding="Coding",q.ContactDetail="ContactDetail",q.ContactPoint="ContactPoint",q.Contributor="Contributor",q.Count="Count",q.DataRequirement="DataRequirement",q.Distance="Distance",q.Dosage="Dosage",q.Duration="Duration",q.Expression="Expression",q.Extension="Extension",q.HumanName="HumanName",q.Identifier="Identifier",q.MarketingStatus="MarketingStatus",q.Meta="Meta",q.Money="Money",q.Narrative="Narrative",q.ParameterDefinition="ParameterDefinition",q.Period="Period",q.Population="Population",q.ProdCharacteristic="ProdCharacteristic",q.ProductShelfLife="ProductShelfLife",q.Quantity="Quantity",q.Range="Range",q.Ratio="Ratio",q.Reference="Reference",q.RelatedArtifact="RelatedArtifact",q.Resource="Resource",q.SampledData="SampledData",q.Signature="Signature",q.SubstanceAmount="SubstanceAmount",q.SystemString="http://hl7.org/fhirpath/System.String",q.Timing="Timing",q.TriggerDefinition="TriggerDefinition",q.UsageContext="UsageContext",q.base64Binary="base64Binary",q.boolean="boolean",q.canonical="canonical",q.code="code",q.date="date",q.dateTime="dateTime",q.decimal="decimal",q.id="id",q.instant="instant",q.integer="integer",q.markdown="markdown",q.oid="oid",q.positiveInt="positiveInt",q.string="string",q.time="time",q.unsignedInt="unsignedInt",q.uri="uri",q.url="url",q.uuid="uuid";const ke="launch/patient openid fhirUser offline_access user/*.*";function _e(){return window.location.protocol+"//"+window.location.host+"/"}var Ie,Ne;Y=new WeakMap,z=new WeakMap,G=new WeakMap,J=new WeakMap,K=new WeakMap,Z=new WeakMap,ee=new WeakMap,te=new WeakMap,ie=new WeakMap,re=new WeakMap,ne=new WeakMap,oe=new WeakMap,se=new WeakMap,ae=new WeakMap,ce=new WeakMap,ue=new WeakMap,V=new WeakSet,he=function(e){const t=this.getLogins().filter((t=>{var i,r;return(null===(i=t.profile)||void 0===i?void 0:i.reference)!==(null===(r=e.profile)||void 0===r?void 0:r.reference)}));t.push(e),i(this,z,"f").setObject("logins",t)},de=function(){return t(this,void 0,void 0,(function*(){return r(this,ae,new Promise(((e,t)=>{this.get("auth/me").then((t=>{r(this,ae,void 0,"f"),r(this,ce,t.profile,"f"),r(this,ue,t.config,"f"),this.dispatchEvent({type:"change"}),e(i(this,ce,"f"))})).catch(t)})),"f"),i(this,ae,"f")}))},le=function(e,r,n={}){return t(this,void 0,void 0,(function*(){i(this,se,"f")&&(yield i(this,se,"f")),r.startsWith("http")||(r=i(this,K,"f")+r),n.method=e,i(this,V,"m",fe).call(this,n);const t=yield i(this,Y,"f").call(this,r,n);if(401===t.status)return i(this,V,"m",ve).call(this,e,r,n);if(204===t.status||304===t.status)return;const o=yield t.json();return"OperationOutcome"!==o.resourceType||j(o)?o:Promise.reject(o)}))},fe=function(e){e.headers||(e.headers={});const t=e.headers;t["Content-Type"]||(t["Content-Type"]="application/fhir+json"),i(this,ne,"f")&&(t.Authorization="Bearer "+i(this,ne,"f")),e.cache||(e.cache="no-cache"),e.credentials||(e.credentials="include")},pe=function(e,t){e.headers||(e.headers={});e.headers["Content-Type"]=t},me=function(e,t){"string"==typeof t||"undefined"!=typeof File&&t instanceof File?e.body=t:t&&(e.body=m(t))},ve=function(e,r,n){return t(this,void 0,void 0,(function*(){return i(this,V,"m",Te).call(this).then((()=>i(this,V,"m",le).call(this,e,r,n))).catch((e=>(this.clear(),i(this,re,"f")&&i(this,re,"f").call(this),Promise.reject(e))))}))},ge=function(){return t(this,void 0,void 0,(function*(){const e=S();i(this,z,"f").setString("pkceState",e);const r=S();i(this,z,"f").setString("codeVerifier",r);const n=E(yield function(e){return t(this,void 0,void 0,(function*(){return crypto.subtle.digest("SHA-256",(new TextEncoder).encode(e))}))}(r)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"");i(this,z,"f").setString("codeChallenge",n)}))},ye=function(){return t(this,void 0,void 0,(function*(){if(!i(this,ee,"f"))return Promise.reject("Missing authorize URL");i(this,V,"m",ge).call(this),window.location.assign(i(this,ee,"f")+"?response_type=code&state="+encodeURIComponent(i(this,z,"f").getString("pkceState"))+"&client_id="+encodeURIComponent(i(this,Z,"f"))+"&redirect_uri="+encodeURIComponent(_e())+"&scope="+encodeURIComponent(ke)+"&code_challenge_method=S256&code_challenge="+encodeURIComponent(i(this,z,"f").getString("codeChallenge")))}))},Te=function(){return t(this,void 0,void 0,(function*(){return i(this,se,"f")?i(this,se,"f"):i(this,oe,"f")?(r(this,se,i(this,V,"m",Ee).call(this,"grant_type=refresh_token&client_id="+encodeURIComponent(i(this,Z,"f"))+"&refresh_token="+encodeURIComponent(i(this,oe,"f"))),"f"),void(yield i(this,se,"f"))):(this.clear(),Promise.reject("Invalid refresh token"))}))},Ee=function(e){return t(this,void 0,void 0,(function*(){return i(this,te,"f")?i(this,Y,"f").call(this,i(this,te,"f"),{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e}).then((e=>e.ok?e.json():Promise.reject("Failed to fetch tokens"))).then((e=>i(this,V,"m",we).call(this,e))).then((()=>this.getProfile())):Promise.reject("Missing token URL")}))},we=function(e){return t(this,void 0,void 0,(function*(){const t=e.access_token,r=function(e){const[t,i,r]=e.split(".");return O(i)}(t);return Date.now()>=1e3*r.exp?(this.clear(),Promise.reject("Token expired")):i(this,Z,"f")&&r.client_id!==i(this,Z,"f")?(this.clear(),Promise.reject("Token was not issued for this audience")):void(yield this.setActiveLogin({accessToken:t,refreshToken:e.refresh_token,project:e.project,profile:e.profile}))}))},Se=function(){try{window.addEventListener("storage",(e=>{null!==e.key&&"activeLogin"!==e.key||window.location.reload()}))}catch(e){}};function Me(e,t){const i=t.split(" | ");for(const t of i){const i=xe(t);if(i.startsWith(e+"."))return i}}function xe(e){let t=e.trim();return t.startsWith("(")&&t.endsWith(")")&&(t=t.substring(1,t.length-1)),t.includes(" as ")&&(t=t.substring(0,t.indexOf(" as "))),t.includes(".where(")&&(t=t.substring(0,t.indexOf(".where("))),t}Ie=new WeakMap,e.SearchParameterType=void 0,(Ne=e.SearchParameterType||(e.SearchParameterType={})).BOOLEAN="BOOLEAN",Ne.NUMBER="NUMBER",Ne.QUANTITY="QUANTITY",Ne.TEXT="TEXT",Ne.REFERENCE="REFERENCE",Ne.DATE="DATE",Ne.DATETIME="DATETIME",Ne.PERIOD="PERIOD",e.LegacyRepositoryClient=class{constructor(e){Ie.set(this,void 0),r(this,Ie,e,"f")}createResource(e){return t(this,void 0,void 0,(function*(){try{const t=yield i(this,Ie,"f").createResource(e);return[I,t]}catch(e){return[e,void 0]}}))}readResource(e,r){return t(this,void 0,void 0,(function*(){try{const t=yield i(this,Ie,"f").readResource(e,r);return[_,t]}catch(e){return[e,void 0]}}))}readReference(e){return t(this,void 0,void 0,(function*(){try{const t=yield i(this,Ie,"f").readReference(e);return[_,t]}catch(e){return[e,void 0]}}))}readHistory(e,r){return t(this,void 0,void 0,(function*(){try{const t=yield i(this,Ie,"f").readHistory(e,r);return[_,t]}catch(e){return[e,void 0]}}))}readVersion(e,r,n){return t(this,void 0,void 0,(function*(){try{const t=yield i(this,Ie,"f").readVersion(e,r,n);return[_,t]}catch(e){return[e,void 0]}}))}updateResource(e){return t(this,void 0,void 0,(function*(){try{const t=yield i(this,Ie,"f").updateResource(e);return[_,t]}catch(e){return[e,void 0]}}))}deleteResource(e,r){return t(this,void 0,void 0,(function*(){try{return yield i(this,Ie,"f").deleteResource(e,r),[_,void 0]}catch(e){return[e,void 0]}}))}patchResource(e,r,n){return t(this,void 0,void 0,(function*(){try{const t=yield i(this,Ie,"f").patchResource(e,r,n);return[_,t]}catch(e){return[e,void 0]}}))}search(e){return t(this,void 0,void 0,(function*(){const t="string"==typeof e?F(e):e;try{const e=yield i(this,Ie,"f").search(t);return[_,e]}catch(e){return[e,void 0]}}))}},e.MedplumClient=class extends class{constructor(){R.set(this,void 0),r(this,R,{},"f")}addEventListener(e,t){i(this,R,"f")[e]||(i(this,R,"f")[e]=[]),i(this,R,"f")[e].push(t)}removeEventListeneer(e,t){const r=i(this,R,"f")[e];if(r)for(let e=0;e<r.length;e++)if(r[e]===t)return void r.splice(e,1)}dispatchEvent(e){const t=i(this,R,"f")[e.type];return t&&t.forEach((t=>t.call(this,e))),!e.defaultPrevented}}{constructor(e){var t;if(super(),V.add(this),Y.set(this,void 0),z.set(this,void 0),G.set(this,void 0),J.set(this,void 0),K.set(this,void 0),Z.set(this,void 0),ee.set(this,void 0),te.set(this,void 0),ie.set(this,void 0),re.set(this,void 0),ne.set(this,void 0),oe.set(this,void 0),se.set(this,void 0),ae.set(this,void 0),ce.set(this,void 0),ue.set(this,void 0),null==e?void 0:e.baseUrl){if(!e.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");if(!e.baseUrl.endsWith("/"))throw new Error("Base URL must end with a trailing slash")}r(this,Y,(null==e?void 0:e.fetch)||window.fetch.bind(window),"f"),r(this,z,new Re,"f"),r(this,G,{types:{}},"f"),r(this,J,new c(null!==(t=null==e?void 0:e.resourceCacheSize)&&void 0!==t?t:1e3),"f"),r(this,K,(null==e?void 0:e.baseUrl)||"https://api.medplum.com/","f"),r(this,Z,(null==e?void 0:e.clientId)||"","f"),r(this,ee,(null==e?void 0:e.authorizeUrl)||i(this,K,"f")+"oauth2/authorize","f"),r(this,te,(null==e?void 0:e.tokenUrl)||i(this,K,"f")+"oauth2/token","f"),r(this,ie,(null==e?void 0:e.logoutUrl)||i(this,K,"f")+"oauth2/logout","f"),r(this,re,null==e?void 0:e.onUnauthenticated,"f");const n=this.getActiveLogin();n&&(r(this,ne,n.accessToken,"f"),r(this,oe,n.refreshToken,"f"),i(this,V,"m",de).call(this).catch(console.log)),i(this,V,"m",Se).call(this)}clear(){i(this,z,"f").clear(),i(this,J,"f").clear(),r(this,ne,void 0,"f"),r(this,oe,void 0,"f"),r(this,ce,void 0,"f"),r(this,ue,void 0,"f"),this.dispatchEvent({type:"change"})}get(e,t={}){return i(this,V,"m",le).call(this,"GET",e,t)}post(e,t,r,n={}){return t&&i(this,V,"m",me).call(this,n,t),r&&i(this,V,"m",pe).call(this,n,r),i(this,V,"m",le).call(this,"POST",e,n)}put(e,t,r,n={}){return t&&i(this,V,"m",me).call(this,n,t),r&&i(this,V,"m",pe).call(this,n,r),i(this,V,"m",le).call(this,"PUT",e,n)}patch(e,t,r={}){return i(this,V,"m",me).call(this,r,t),i(this,V,"m",pe).call(this,r,"application/json-patch+json"),i(this,V,"m",le).call(this,"PATCH",e,r)}delete(e,t={}){return i(this,V,"m",le).call(this,"DELETE",e,t)}register(e){return t(this,void 0,void 0,(function*(){const t=yield this.post("auth/register",e);yield this.setActiveLogin(t)}))}startLogin(e,r,n){return t(this,void 0,void 0,(function*(){return yield i(this,V,"m",ge).call(this),this.post("auth/login",{clientId:i(this,Z,"f"),scope:ke,codeChallengeMethod:"S256",codeChallenge:i(this,z,"f").getString("codeChallenge"),email:e,password:r,remember:!!n})}))}startGoogleLogin(e){return t(this,void 0,void 0,(function*(){return yield i(this,V,"m",ge).call(this),this.post("auth/google",e)}))}signOut(){return this.clear(),Promise.resolve()}signInWithRedirect(){const e=new URLSearchParams(window.location.search).get("code");return e?this.processCode(e):void i(this,V,"m",ye).call(this)}signOutWithRedirect(){window.location.assign(i(this,ie,"f"))}fhirUrl(...e){const t=[i(this,K,"f"),"fhir/R4"];return e.forEach((e=>t.push("/",encodeURIComponent(e)))),t.join("")}search(e,t={}){return this.get("string"==typeof e?"fhir/R4/"+e:this.fhirUrl(e.resourceType)+$(e),t)}searchOne(e,i={}){var r,n;return t(this,void 0,void 0,(function*(){const t="string"==typeof e?F(e):e;t.count=1;const o=yield this.search(t,i);return null===(n=null===(r=o.entry)||void 0===r?void 0:r[0])||void 0===n?void 0:n.resource}))}searchResources(e,i={}){var r,n;return t(this,void 0,void 0,(function*(){const t=yield this.search(e,i);return null!==(n=null===(r=t.entry)||void 0===r?void 0:r.map((e=>e.resource)))&&void 0!==n?n:[]}))}searchValueSet(e,t,i={}){return this.get(this.fhirUrl("ValueSet","$expand")+`?url=${encodeURIComponent(e)}`+`&filter=${encodeURIComponent(t)}`,i)}getCached(e,t){const r=i(this,J,"f").get(e+"/"+t);if(r&&!("then"in r))return r}getCachedReference(e){const t=i(this,J,"f").get(e.reference);if(t&&!("then"in t))return t}readResource(e,t){const r=e+"/"+t,n=this.get(this.fhirUrl(e,t)).then((e=>(i(this,J,"f").set(r,e),e)));return i(this,J,"f").set(r,n),n}readCached(e,t){const r=i(this,J,"f").get(e+"/"+t);return r?Promise.resolve(r):this.readResource(e,t)}readReference(e){const t=null==e?void 0:e.reference;if(!t)return Promise.reject("Missing reference");const[i,r]=t.split("/");return this.readResource(i,r)}readCachedReference(e){const t=null==e?void 0:e.reference;if(!t)return Promise.reject("Missing reference");const[i,r]=t.split("/");return this.readCached(i,r)}getSchema(){return i(this,G,"f")}requestSchema(e){return t(this,void 0,void 0,(function*(){if(e in i(this,G,"f").types)return Promise.resolve(i(this,G,"f"));const t=`{\n StructureDefinitionList(name: "${encodeURIComponent(e)}") {\n name,\n description,\n snapshot {\n element {\n id,\n path,\n min,\n max,\n type {\n code,\n targetProfile\n },\n binding {\n valueSet\n },\n definition\n }\n }\n }\n SearchParameterList(base: "${encodeURIComponent(e)}") {\n base,\n code,\n type,\n expression,\n target\n }\n }`.replace(/\s+/g," "),r=yield this.graphql(t);for(const e of r.data.StructureDefinitionList)Ue(i(this,G,"f"),e);for(const e of r.data.SearchParameterList)Ae(i(this,G,"f"),e);return i(this,G,"f")}))}readHistory(e,t){return this.get(this.fhirUrl(e,t,"_history"))}readVersion(e,t,i){return this.get(this.fhirUrl(e,t,"_history",i))}readPatientEverything(e){return this.get(this.fhirUrl("Patient",e,"$everything"))}createResource(e){return e.resourceType?this.post(this.fhirUrl(e.resourceType),e):Promise.reject("Missing resourceType")}createBinary(e,t,i){return this.post(this.fhirUrl("Binary")+"?_filename="+encodeURIComponent(t),e,i)}updateResource(e){return e.resourceType?e.id?this.put(this.fhirUrl(e.resourceType,e.id),e):Promise.reject("Missing id"):Promise.reject("Missing resourceType")}patchResource(e,t,i){return this.patch(this.fhirUrl(e,t),i)}deleteResource(e,t){return this.delete(this.fhirUrl(e,t))}graphql(e,t){return this.post(this.fhirUrl("$graphql"),{query:e},"application/json",t)}getActiveLogin(){return i(this,z,"f").getObject("activeLogin")}setActiveLogin(e){return t(this,void 0,void 0,(function*(){r(this,ne,e.accessToken,"f"),r(this,oe,e.refreshToken,"f"),r(this,ce,void 0,"f"),r(this,ue,void 0,"f"),i(this,z,"f").setObject("activeLogin",e),i(this,V,"m",he).call(this,e),i(this,J,"f").clear(),r(this,se,void 0,"f"),yield i(this,V,"m",de).call(this)}))}setAccessToken(e){r(this,ne,e,"f"),r(this,oe,void 0,"f"),r(this,ce,void 0,"f"),r(this,ue,void 0,"f")}getLogins(){var e;return null!==(e=i(this,z,"f").getObject("logins"))&&void 0!==e?e:[]}isLoading(){return!!i(this,ae,"f")}getProfile(){return i(this,ce,"f")}getProfileAsync(){return t(this,void 0,void 0,(function*(){return i(this,ae,"f")&&(yield i(this,ae,"f")),this.getProfile()}))}getUserConfiguration(){return i(this,ue,"f")}download(e,r={}){return t(this,void 0,void 0,(function*(){i(this,se,"f")&&(yield i(this,se,"f")),i(this,V,"m",fe).call(this,r);return(yield i(this,Y,"f").call(this,e,r)).blob()}))}processCode(e){if(!i(this,z,"f").getString("pkceState"))return this.clear(),Promise.reject("Invalid PCKE state");const t=i(this,z,"f").getString("codeVerifier");return t?i(this,V,"m",Ee).call(this,"grant_type=authorization_code"+(i(this,Z,"f")?"&client_id="+encodeURIComponent(i(this,Z,"f")):"")+"&code_verifier="+encodeURIComponent(t)+"&redirect_uri="+encodeURIComponent(_e())+"&code="+encodeURIComponent(e)):(this.clear(),Promise.reject("Invalid PCKE code verifier"))}clientCredentials(e,r){return t(this,void 0,void 0,(function*(){return i(this,V,"m",Ee).call(this,"grant_type=client_credentials&client_id="+encodeURIComponent(e)+"&client_secret="+encodeURIComponent(r))}))}},e.OperationOutcomeError=D,e.accessDenied=L,e.allOk=_,e.arrayBufferToBase64=E,e.arrayBufferToHex=T,e.assertOk=function(e,t){if(!j(e)||void 0===t)throw new D(e)},e.badRequest=function(e,t){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:e},expression:t?[t]:void 0}]}},e.buildTypeName=be,e.calculateAge=p,e.calculateAgeString=function(e,t){const{years:i,months:r,days:n}=p(e,t);return i>=2?i.toString().padStart(3,"0")+"Y":r>=1?r.toString().padStart(3,"0")+"M":n.toString().padStart(3,"0")+"D"},e.capitalize=w,e.createReference=function(e){const t=h(e),i=l(e);return i===t?{reference:t}:{reference:t,display:i}},e.createSchema=Ce,e.createTypeSchema=Pe,e.created=I,e.deepEquals=function e(t,i,r){let n=Object.keys(t),o=Object.keys(i);if("meta"===r&&(n=n.filter((e=>"versionId"!==e&&"lastUpdated"!==e&&"author"!==e)),o=o.filter((e=>"versionId"!==e&&"lastUpdated"!==e&&"author"!==e))),n.length!==o.length)return!1;for(const r of n){const n=t[r],o=i[r];if(g(n)&&g(o)){if(!e(n,o,r))return!1}else if(n!==o)return!1}return!0},e.formatAddress=function(e,t){const i=[];return e.line&&i.push(...e.line),e.city&&i.push(e.city),e.state&&i.push(e.state),e.postalCode&&i.push(e.postalCode),e.use&&((null==t?void 0:t.all)||(null==t?void 0:t.use))&&i.push("["+e.use+"]"),i.join(", ").trim()},e.formatFamilyName=function(e){return e.family||""},e.formatGivenName=function(e){const t=[];return e.given&&t.push(...e.given),t.join(" ").trim()},e.formatHumanName=u,e.formatSearchQuery=$,e.getDateProperty=function(e){return e?new Date(e):void 0},e.getDisplayString=l,e.getExpressionForResourceType=Me,e.getImageSrc=function(e){if(d(e)){const t=e.photo;if(t)for(const e of t){const t=f(e);if(t)return t}}if("Bot"===e.resourceType&&e.photo){const t=f(e.photo);if(t)return t}},e.getPropertyDisplayName=function(e){const t=e.path.replaceAll("[x]","").split(".").pop();return"id"===t?"ID":t.split(/(?=[A-Z])/).map(w).join(" ").replace("_"," ").replace(/\s+/g," ")},e.getReferenceString=h,e.getSearchParameterDetails=function(t,i,r){var n,o,s,a;if("_lastUpdated"===r.code)return{columnName:"lastUpdated",type:e.SearchParameterType.DATETIME};const c=r.code.split("-").reduce(((e,t,i)=>e+(i?w(t):t)),""),u=null===(n=Me(i,r.expression))||void 0===n?void 0:n.split(".");if(!u)return{columnName:c,type:e.SearchParameterType.TEXT};let h,d,l=i,f=!1;for(let i=1;i<u.length;i++){const r=u[i];if(h=null===(s=null===(o=t.types[l])||void 0===o?void 0:o.properties)||void 0===s?void 0:s[r],!h)return{columnName:c,type:e.SearchParameterType.TEXT,array:f};if("*"===h.max&&(f=!0),d=null===(a=h.type)||void 0===a?void 0:a[0].code,!d)return{columnName:c,type:e.SearchParameterType.TEXT,array:f};i<u.length-1&&("Element"===d||"BackboneElement"===d?l+=w(r):l=d)}const p=function(t,i){let r=e.SearchParameterType.TEXT;switch(t.type){case"date":r=e.SearchParameterType.DATE;break;case"number":r=e.SearchParameterType.NUMBER;break;case"quantity":r=e.SearchParameterType.QUANTITY;break;case"reference":r=e.SearchParameterType.REFERENCE;break;case"token":"boolean"===i&&(r=e.SearchParameterType.BOOLEAN)}return r}(r,d);return{columnName:c,type:p,elementDefinition:h,array:f}},e.getStatus=function(e){return e.id===C?200:e.id===P?201:e.id===A?304:e.id===k?403:e.id===b?404:e.id===U?410:400},e.gone=x,e.indexSearchParameter=Ae,e.indexStructureDefinition=Ue,e.isGone=function(e){return e.id===U},e.isLowerCase=function(e){return e===e.toLowerCase()},e.isNotFound=function(e){return e.id===b},e.isOk=j,e.isProfileResource=d,e.notFound=M,e.notModified=N,e.parseSearchDefinition=F,e.resolveId=function(e){var t;return null===(t=null==e?void 0:e.reference)||void 0===t?void 0:t.split("/")[1]},e.stringify=m,Object.defineProperty(e,"__esModule",{value:!0})})); | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).medplum=e.medplum||{},e.medplum.core={}))}(this,(function(e){"use strict";function t(e,t,i,n){return new(i||(i=Promise))((function(r,o){function s(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(s,a)}c((n=n.apply(e,t||[])).next())}))}function i(e,t,i,n){if("a"===i&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?n:"a"===i?n.call(e):n?n.value:t.get(e)}function n(e,t,i,n,r){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?r.call(e,i):r?r.value=i:t.set(e,i),i}var r,o,s,a;class c{constructor(e=10){r.add(this),o.set(this,void 0),s.set(this,void 0),n(this,o,e,"f"),n(this,s,new Map,"f")}clear(){i(this,s,"f").clear()}get(e){const t=i(this,s,"f").get(e);return t&&(i(this,s,"f").delete(e),i(this,s,"f").set(e,t)),t}set(e,t){i(this,s,"f").has(e)?i(this,s,"f").delete(e):i(this,s,"f").size>=i(this,o,"f")&&i(this,s,"f").delete(i(this,r,"m",a).call(this)),i(this,s,"f").set(e,t)}}function u(e,t){const i=[];return e.prefix&&((null==t?void 0:t.all)||(null==t?void 0:t.prefix))&&i.push(...e.prefix),e.given&&i.push(...e.given),e.family&&i.push(e.family),e.suffix&&((null==t?void 0:t.all)||(null==t?void 0:t.suffix))&&i.push(...e.suffix),e.use&&((null==t?void 0:t.all)||(null==t?void 0:t.use))&&i.push("["+e.use+"]"),i.join(" ").trim()}function l(e){return e.resourceType+"/"+e.id}function d(e){return"Patient"===e.resourceType||"Practitioner"===e.resourceType||"RelatedPerson"===e.resourceType}function h(e){var t,i;if(d(e)){const t=function(e){const t=e.name;if(t&&t.length>0)return u(t[0]);return}(e);if(t)return t}if("Device"===e.resourceType){const t=function(e){const t=e.deviceName;if(t&&t.length>0)return t[0].name;return}(e);if(t)return t}return"Observation"===e.resourceType&&"code"in e&&(null===(t=e.code)||void 0===t?void 0:t.text)?null===(i=e.code)||void 0===i?void 0:i.text:"User"===e.resourceType&&e.email?e.email:"name"in e&&e.name&&"string"==typeof e.name?e.name:l(e)}function f(e){if(e.url&&e.contentType&&e.contentType.startsWith("image/"))return e.url}function p(e,t){const i=new Date(e);i.setUTCHours(0,0,0,0);const n=t?new Date(t):new Date;n.setUTCHours(0,0,0,0);const r=i.getUTCFullYear(),o=i.getUTCMonth(),s=i.getUTCDate(),a=n.getUTCFullYear(),c=n.getUTCMonth(),u=n.getUTCDate();let l=a-r;(c<o||c===o&&u<s)&&l--;let d=12*a+c-(12*r+o);u<s&&d--;return{years:l,months:d,days:Math.floor((n.getTime()-i.getTime())/864e5)}}function v(e,t){if(e)for(const i of e)i.linkId&&i.answer&&i.answer.length>0&&(t[i.linkId]=i.answer[0]),v(i.item,t)}function g(e,t){return JSON.stringify(e,m,t?2:void 0)}function m(e,t){return!function(e){return!!e.match(/\d+$/)}(e)&&function(e){if(null==e)return!0;const t=typeof e;return"string"===t&&""===e||"object"===t&&0===Object.keys(e).length}(t)?void 0:t}function y(e){return null!==e&&"object"==typeof e}function T(e){return e.every((e=>"string"==typeof e))}o=new WeakMap,s=new WeakMap,r=new WeakSet,a=function(){return i(this,s,"f").keys().next().value};const S=[];for(let e=0;e<256;e++)S.push(e.toString(16).padStart(2,"0"));function E(e){const t=new Uint8Array(e),i=new Array(t.length);for(let e=0;e<t.length;e++)i[e]=S[t[e]];return i.join("")}function w(e){const t=new Uint8Array(e),i=[];for(let e=0;e<t.length;e++)i[e]=String.fromCharCode(t[e]);return window.btoa(i.join(""))}function R(e){return e.charAt(0).toUpperCase()+e.substr(1)}function O(){const e=new Uint32Array(28);return crypto.getRandomValues(e),E(e.buffer)}var A;function P(e){const t=function(e){if("undefined"!=typeof window)return window.atob(e);if("undefined"!=typeof Buffer)return Buffer.from(e,"base64").toString("binary");throw new Error("Unable to decode base64")}(e.replace(/-/g,"+").replace(/_/g,"/")),i=Array.from(t).reduce(((e,t)=>`${e}%${("00"+t.charCodeAt(0).toString(16)).slice(-2)}`),""),n=decodeURIComponent(i);return JSON.parse(n)}A=new WeakMap;const C="ok",U="created",b="gone",k="not-modified",_="not-found",I="access-denied",M={resourceType:"OperationOutcome",id:C,issue:[{severity:"information",code:"information",details:{text:"All OK"}}]},N={resourceType:"OperationOutcome",id:U,issue:[{severity:"information",code:"information",details:{text:"Created"}}]},x={resourceType:"OperationOutcome",id:k,issue:[{severity:"information",code:"information",details:{text:"Not Modified"}}]},L={resourceType:"OperationOutcome",id:_,issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},j={resourceType:"OperationOutcome",id:b,issue:[{severity:"error",code:"gone",details:{text:"Gone"}}]},D={resourceType:"OperationOutcome",id:I,issue:[{severity:"error",code:"access-denied",details:{text:"Access Denied"}}]};function W(e){return e.id===C||e.id===U||e.id===k}class B extends Error{constructor(e){var t,i;super(null===(i=null===(t=null==e?void 0:e.issue)||void 0===t?void 0:t[0].details)||void 0===i?void 0:i.text),this.outcome=e}}var H;e.Operator=void 0,(H=e.Operator||(e.Operator={})).EQUALS="eq",H.NOT_EQUALS="ne",H.GREATER_THAN="gt",H.LESS_THAN="lt",H.GREATER_THAN_OR_EQUALS="ge",H.LESS_THAN_OR_EQUALS="le",H.STARTS_AFTER="sa",H.ENDS_BEFORE="eb",H.APPROXIMATELY="ap",H.CONTAINS="contains",H.EXACT="exact",H.TEXT="text",H.ABOVE="above",H.BELOW="below",H.IN="in",H.NOT_IN="not-in",H.OF_TYPE="of-type";const F=[e.Operator.CONTAINS,e.Operator.EXACT,e.Operator.TEXT,e.Operator.ABOVE,e.Operator.BELOW,e.Operator.IN,e.Operator.NOT_IN,e.Operator.OF_TYPE],Q=[e.Operator.NOT_EQUALS,e.Operator.GREATER_THAN,e.Operator.LESS_THAN,e.Operator.GREATER_THAN_OR_EQUALS,e.Operator.LESS_THAN_OR_EQUALS,e.Operator.STARTS_AFTER,e.Operator.ENDS_BEFORE,e.Operator.APPROXIMATELY];function $(t){const i=new URL(t,"https://example.com/"),n=i.pathname.replace(/(^\/)|(\/$)/g,"").split("/").pop();let r,o,s,a,c,u;return new URLSearchParams(i.search).forEach(((t,i)=>{"_fields"===i?s=t.split(","):"_page"===i?a=parseInt(t):"_count"===i?c=parseInt(t):"_total"===i?u=t:"_sort"===i?(o=o||[],o.push(function(e){return e.startsWith("-")?{code:e.substring(1),descending:!0}:{code:e}}(t))):(r=r||[],r.push(function(t,i){let n=t,r=e.Operator.EQUALS;for(const e of F){const t=n.indexOf(":"+e);-1!==t&&(r=e,n=n.substring(0,t))}for(const e of Q)i.match(new RegExp("^"+e+"\\d"))&&(r=e,i=i.substring(e.length));return{code:n,operator:r,value:i}}(i,t)))})),{resourceType:n,filters:r,fields:s,page:a,count:c,total:u,sortRules:o}}function X(e){const t=[];return e.fields&&t.push("_fields="+e.fields.join(",")),e.filters&&e.filters.forEach((e=>t.push(function(e){const t=F.includes(e.operator)?":"+e.operator:"",i=Q.includes(e.operator)?e.operator:"";return`${e.code}${t}=${i}${encodeURIComponent(e.value)}`}(e)))),e.sortRules&&e.sortRules.length>0&&t.push(function(e){if(!e||0===e.length)return"";return"_sort="+e.map((e=>e.descending?"-"+e.code:e.code)).join(",")}(e.sortRules)),e.page&&e.page>0&&t.push("_page="+e.page),e.count&&e.count>0&&t.push("_count="+e.count),e.total&&t.push("_total="+encodeURIComponent(e.total)),0===t.length?"":(t.sort(),"?"+t.join("&"))}var q,V,G,Y,z,K,J,Z,ee,te,ie,ne,re,oe,se,ae,ce,ue,le,de,he,fe,pe,ve,ge,me,ye,Te,Se,Ee,we,Re,Oe;class Ae{constructor(){q.set(this,void 0),n(this,q,"undefined"!=typeof localStorage?localStorage:new Pe,"f")}clear(){i(this,q,"f").clear()}getString(e){return i(this,q,"f").getItem(e)||void 0}setString(e,t){t?i(this,q,"f").setItem(e,t):i(this,q,"f").removeItem(e)}getObject(e){const t=this.getString(e);return t?JSON.parse(t):void 0}setObject(e,t){this.setString(e,t?g(t):void 0)}}q=new WeakMap;class Pe{constructor(){V.set(this,void 0),n(this,V,new Map,"f")}get length(){return i(this,V,"f").size}clear(){i(this,V,"f").clear()}getItem(e){var t;return null!==(t=i(this,V,"f").get(e))&&void 0!==t?t:null}setItem(e,t){t?i(this,V,"f").set(e,t):i(this,V,"f").delete(e)}removeItem(e){i(this,V,"f").delete(e)}key(e){return Array.from(i(this,V,"f").keys())[e]}}function Ce(){return{types:{}}}function Ue(e,t){return{display:e,description:t,properties:{},searchParams:{_lastUpdated:{base:[e],code:"_lastUpdated",type:"date",expression:e+".meta.lastUpdated"}}}}function be(e,t){var i;const n=t.name;if(!n)return;e.types[n]=Ue(n,t.description);const r=null===(i=t.snapshot)||void 0===i?void 0:i.element;if(r){const t=r.filter((e=>e.path!==n&&e.path));t.forEach((t=>function(e,t){var i,n;const r=t.path,o=null===(n=null===(i=t.type)||void 0===i?void 0:i[0])||void 0===n?void 0:n.code;if("Element"!==o&&"BackboneElement"!==o)return;const s=r.split("."),a=_e(s);a in e.types||(e.types[a]=Ue(a,t.definition),e.types[a].parentType=_e(s.slice(0,s.length-1)))}(e,t))),t.forEach((t=>function(e,t){const i=t.path.split(".");if(1===i.length)return;const n=_e(i.slice(0,i.length-1)),r=e.types[n],o=i[i.length-1];r.properties[o]=t}(e,t)))}}function ke(e,t){if(t.base)for(const i of t.base){const n=e.types[i];n&&(n.searchParams||(n.searchParams={}),n.searchParams[t.code]=t)}}function _e(e){return e.map(R).join("")}V=new WeakMap,e.PropertyType=void 0,(G=e.PropertyType||(e.PropertyType={})).Address="Address",G.Age="Age",G.Annotation="Annotation",G.Attachment="Attachment",G.BackboneElement="BackboneElement",G.CodeableConcept="CodeableConcept",G.Coding="Coding",G.ContactDetail="ContactDetail",G.ContactPoint="ContactPoint",G.Contributor="Contributor",G.Count="Count",G.DataRequirement="DataRequirement",G.Distance="Distance",G.Dosage="Dosage",G.Duration="Duration",G.Expression="Expression",G.Extension="Extension",G.HumanName="HumanName",G.Identifier="Identifier",G.MarketingStatus="MarketingStatus",G.Meta="Meta",G.Money="Money",G.Narrative="Narrative",G.ParameterDefinition="ParameterDefinition",G.Period="Period",G.Population="Population",G.ProdCharacteristic="ProdCharacteristic",G.ProductShelfLife="ProductShelfLife",G.Quantity="Quantity",G.Range="Range",G.Ratio="Ratio",G.Reference="Reference",G.RelatedArtifact="RelatedArtifact",G.Resource="Resource",G.SampledData="SampledData",G.Signature="Signature",G.SubstanceAmount="SubstanceAmount",G.SystemString="http://hl7.org/fhirpath/System.String",G.Timing="Timing",G.TriggerDefinition="TriggerDefinition",G.UsageContext="UsageContext",G.base64Binary="base64Binary",G.boolean="boolean",G.canonical="canonical",G.code="code",G.date="date",G.dateTime="dateTime",G.decimal="decimal",G.id="id",G.instant="instant",G.integer="integer",G.markdown="markdown",G.oid="oid",G.positiveInt="positiveInt",G.string="string",G.time="time",G.unsignedInt="unsignedInt",G.uri="uri",G.url="url",G.uuid="uuid";const Ie="launch/patient openid fhirUser offline_access user/*.*";function Me(){return window.location.protocol+"//"+window.location.host+"/"}z=new WeakMap,K=new WeakMap,J=new WeakMap,Z=new WeakMap,ee=new WeakMap,te=new WeakMap,ie=new WeakMap,ne=new WeakMap,re=new WeakMap,oe=new WeakMap,se=new WeakMap,ae=new WeakMap,ce=new WeakMap,ue=new WeakMap,le=new WeakMap,de=new WeakMap,Y=new WeakSet,he=function(e){const t=this.getLogins().filter((t=>{var i,n;return(null===(i=t.profile)||void 0===i?void 0:i.reference)!==(null===(n=e.profile)||void 0===n?void 0:n.reference)}));t.push(e),i(this,K,"f").setObject("logins",t)},fe=function(){return t(this,void 0,void 0,(function*(){return n(this,ue,new Promise(((e,t)=>{this.get("auth/me").then((t=>{n(this,ue,void 0,"f"),n(this,le,t.profile,"f"),n(this,de,t.config,"f"),this.dispatchEvent({type:"change"}),e(i(this,le,"f"))})).catch(t)})),"f"),i(this,ue,"f")}))},pe=function(e,n,r={}){return t(this,void 0,void 0,(function*(){i(this,ce,"f")&&(yield i(this,ce,"f")),n.startsWith("http")||(n=i(this,ee,"f")+n),r.method=e,i(this,Y,"m",ve).call(this,r);const t=yield i(this,z,"f").call(this,n,r);if(401===t.status)return i(this,Y,"m",ye).call(this,e,n,r);if(204===t.status||304===t.status)return;const o=yield t.json();return"OperationOutcome"!==o.resourceType||W(o)?o:Promise.reject(o)}))},ve=function(e){e.headers||(e.headers={});const t=e.headers;t["Content-Type"]||(t["Content-Type"]="application/fhir+json"),i(this,se,"f")&&(t.Authorization="Bearer "+i(this,se,"f")),e.cache||(e.cache="no-cache"),e.credentials||(e.credentials="include")},ge=function(e,t){e.headers||(e.headers={});e.headers["Content-Type"]=t},me=function(e,t){"string"==typeof t||"undefined"!=typeof File&&t instanceof File?e.body=t:t&&(e.body=g(t))},ye=function(e,n,r){return t(this,void 0,void 0,(function*(){return i(this,Y,"m",Ee).call(this).then((()=>i(this,Y,"m",pe).call(this,e,n,r))).catch((e=>(this.clear(),i(this,oe,"f")&&i(this,oe,"f").call(this),Promise.reject(e))))}))},Te=function(){return t(this,void 0,void 0,(function*(){const e=O();i(this,K,"f").setString("pkceState",e);const n=O();i(this,K,"f").setString("codeVerifier",n);const r=w(yield function(e){return t(this,void 0,void 0,(function*(){return crypto.subtle.digest("SHA-256",(new TextEncoder).encode(e))}))}(n)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"");i(this,K,"f").setString("codeChallenge",r)}))},Se=function(){return t(this,void 0,void 0,(function*(){if(!i(this,ie,"f"))return Promise.reject("Missing authorize URL");i(this,Y,"m",Te).call(this),window.location.assign(i(this,ie,"f")+"?response_type=code&state="+encodeURIComponent(i(this,K,"f").getString("pkceState"))+"&client_id="+encodeURIComponent(i(this,te,"f"))+"&redirect_uri="+encodeURIComponent(Me())+"&scope="+encodeURIComponent(Ie)+"&code_challenge_method=S256&code_challenge="+encodeURIComponent(i(this,K,"f").getString("codeChallenge")))}))},Ee=function(){return t(this,void 0,void 0,(function*(){return i(this,ce,"f")?i(this,ce,"f"):i(this,ae,"f")?(n(this,ce,i(this,Y,"m",we).call(this,"grant_type=refresh_token&client_id="+encodeURIComponent(i(this,te,"f"))+"&refresh_token="+encodeURIComponent(i(this,ae,"f"))),"f"),void(yield i(this,ce,"f"))):(this.clear(),Promise.reject("Invalid refresh token"))}))},we=function(e){return t(this,void 0,void 0,(function*(){return i(this,ne,"f")?i(this,z,"f").call(this,i(this,ne,"f"),{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:e}).then((e=>e.ok?e.json():Promise.reject("Failed to fetch tokens"))).then((e=>i(this,Y,"m",Re).call(this,e))).then((()=>this.getProfile())):Promise.reject("Missing token URL")}))},Re=function(e){return t(this,void 0,void 0,(function*(){const t=e.access_token,n=function(e){const[t,i,n]=e.split(".");return P(i)}(t);return Date.now()>=1e3*n.exp?(this.clear(),Promise.reject("Token expired")):i(this,te,"f")&&n.client_id!==i(this,te,"f")?(this.clear(),Promise.reject("Token was not issued for this audience")):void(yield this.setActiveLogin({accessToken:t,refreshToken:e.refresh_token,project:e.project,profile:e.profile}))}))},Oe=function(){try{window.addEventListener("storage",(e=>{null!==e.key&&"activeLogin"!==e.key||window.location.reload()}))}catch(e){}};class Ne{constructor(e){this.segments=e}get(e){return"number"==typeof e?this.segments[e]:this.segments.find((t=>t.name===e))}getAll(e){return this.segments.filter((t=>t.name===e))}toString(){return this.segments.map((e=>e.toString())).join("\r")}buildAck(){var e,t,i,n,r,o;const s=new Date,a=this.get("MSH"),c=(null===(e=null==a?void 0:a.get(2))||void 0===e?void 0:e.toString())||"",u=(null===(t=null==a?void 0:a.get(3))||void 0===t?void 0:t.toString())||"",l=(null===(i=null==a?void 0:a.get(4))||void 0===i?void 0:i.toString())||"",d=(null===(n=null==a?void 0:a.get(5))||void 0===n?void 0:n.toString())||"",h=(null===(r=null==a?void 0:a.get(9))||void 0===r?void 0:r.toString())||"",f=(null===(o=null==a?void 0:a.get(12))||void 0===o?void 0:o.toString())||"2.5.1";return new Ne([new xe(["MSH","^~\\&",l,d,c,u,s.toISOString(),"","ACK",s.getTime().toString(),"P",f]),new xe(["MSA","AA",h,"OK"])])}static parse(e){if(!e.startsWith("MSH|^~\\&")){const e=new Error("Invalid HL7 message");throw e.type="entity.parse.failed",e}return new Ne(e.split(/[\r\n]+/).map((e=>xe.parse(e))))}}class xe{constructor(e){T(e)?this.fields=e.map((e=>Le.parse(e))):this.fields=e,this.name=this.fields[0].components[0]}get(e){return this.fields[e]}toString(){return this.fields.map((e=>e.toString())).join("|")}static parse(e){return new xe(e.split("|").map((e=>Le.parse(e))))}}class Le{constructor(e){this.components=e}get(e){return this.components[e]}toString(){return this.components.join("^")}static parse(e){return new Le(e.split("^"))}}var je,De;function We(e,t){const i=t.split(" | ");for(const t of i){const i=Be(t);if(i.startsWith(e+"."))return i}}function Be(e){let t=e.trim();return t.startsWith("(")&&t.endsWith(")")&&(t=t.substring(1,t.length-1)),t.includes(" as ")&&(t=t.substring(0,t.indexOf(" as "))),t.includes(".where(")&&(t=t.substring(0,t.indexOf(".where("))),t}je=new WeakMap,e.SearchParameterType=void 0,(De=e.SearchParameterType||(e.SearchParameterType={})).BOOLEAN="BOOLEAN",De.NUMBER="NUMBER",De.QUANTITY="QUANTITY",De.TEXT="TEXT",De.REFERENCE="REFERENCE",De.DATE="DATE",De.DATETIME="DATETIME",De.PERIOD="PERIOD",e.COMPONENT_SEPARATOR="^",e.FIELD_SEPARATOR="|",e.Hl7Field=Le,e.Hl7Message=Ne,e.Hl7Segment=xe,e.LegacyRepositoryClient=class{constructor(e){je.set(this,void 0),n(this,je,e,"f")}createResource(e){return t(this,void 0,void 0,(function*(){try{const t=yield i(this,je,"f").createResource(e);return[N,t]}catch(e){return[e,void 0]}}))}readResource(e,n){return t(this,void 0,void 0,(function*(){try{const t=yield i(this,je,"f").readResource(e,n);return[M,t]}catch(e){return[e,void 0]}}))}readReference(e){return t(this,void 0,void 0,(function*(){try{const t=yield i(this,je,"f").readReference(e);return[M,t]}catch(e){return[e,void 0]}}))}readHistory(e,n){return t(this,void 0,void 0,(function*(){try{const t=yield i(this,je,"f").readHistory(e,n);return[M,t]}catch(e){return[e,void 0]}}))}readVersion(e,n,r){return t(this,void 0,void 0,(function*(){try{const t=yield i(this,je,"f").readVersion(e,n,r);return[M,t]}catch(e){return[e,void 0]}}))}updateResource(e){return t(this,void 0,void 0,(function*(){try{const t=yield i(this,je,"f").updateResource(e);return[M,t]}catch(e){return[e,void 0]}}))}deleteResource(e,n){return t(this,void 0,void 0,(function*(){try{return yield i(this,je,"f").deleteResource(e,n),[M,void 0]}catch(e){return[e,void 0]}}))}patchResource(e,n,r){return t(this,void 0,void 0,(function*(){try{const t=yield i(this,je,"f").patchResource(e,n,r);return[M,t]}catch(e){return[e,void 0]}}))}search(e){return t(this,void 0,void 0,(function*(){const t="string"==typeof e?$(e):e;try{const e=yield i(this,je,"f").search(t);return[M,e]}catch(e){return[e,void 0]}}))}},e.MedplumClient=class extends class{constructor(){A.set(this,void 0),n(this,A,{},"f")}addEventListener(e,t){i(this,A,"f")[e]||(i(this,A,"f")[e]=[]),i(this,A,"f")[e].push(t)}removeEventListeneer(e,t){const n=i(this,A,"f")[e];if(n)for(let e=0;e<n.length;e++)if(n[e]===t)return void n.splice(e,1)}dispatchEvent(e){const t=i(this,A,"f")[e.type];return t&&t.forEach((t=>t.call(this,e))),!e.defaultPrevented}}{constructor(e){var t;if(super(),Y.add(this),z.set(this,void 0),K.set(this,void 0),J.set(this,void 0),Z.set(this,void 0),ee.set(this,void 0),te.set(this,void 0),ie.set(this,void 0),ne.set(this,void 0),re.set(this,void 0),oe.set(this,void 0),se.set(this,void 0),ae.set(this,void 0),ce.set(this,void 0),ue.set(this,void 0),le.set(this,void 0),de.set(this,void 0),null==e?void 0:e.baseUrl){if(!e.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");if(!e.baseUrl.endsWith("/"))throw new Error("Base URL must end with a trailing slash")}n(this,z,(null==e?void 0:e.fetch)||window.fetch.bind(window),"f"),n(this,K,new Ae,"f"),n(this,J,{types:{}},"f"),n(this,Z,new c(null!==(t=null==e?void 0:e.resourceCacheSize)&&void 0!==t?t:1e3),"f"),n(this,ee,(null==e?void 0:e.baseUrl)||"https://api.medplum.com/","f"),n(this,te,(null==e?void 0:e.clientId)||"","f"),n(this,ie,(null==e?void 0:e.authorizeUrl)||i(this,ee,"f")+"oauth2/authorize","f"),n(this,ne,(null==e?void 0:e.tokenUrl)||i(this,ee,"f")+"oauth2/token","f"),n(this,re,(null==e?void 0:e.logoutUrl)||i(this,ee,"f")+"oauth2/logout","f"),n(this,oe,null==e?void 0:e.onUnauthenticated,"f");const r=this.getActiveLogin();r&&(n(this,se,r.accessToken,"f"),n(this,ae,r.refreshToken,"f"),i(this,Y,"m",fe).call(this).catch(console.log)),i(this,Y,"m",Oe).call(this)}clear(){i(this,K,"f").clear(),i(this,Z,"f").clear(),n(this,se,void 0,"f"),n(this,ae,void 0,"f"),n(this,le,void 0,"f"),n(this,de,void 0,"f"),this.dispatchEvent({type:"change"})}get(e,t={}){return i(this,Y,"m",pe).call(this,"GET",e,t)}post(e,t,n,r={}){return t&&i(this,Y,"m",me).call(this,r,t),n&&i(this,Y,"m",ge).call(this,r,n),i(this,Y,"m",pe).call(this,"POST",e,r)}put(e,t,n,r={}){return t&&i(this,Y,"m",me).call(this,r,t),n&&i(this,Y,"m",ge).call(this,r,n),i(this,Y,"m",pe).call(this,"PUT",e,r)}patch(e,t,n={}){return i(this,Y,"m",me).call(this,n,t),i(this,Y,"m",ge).call(this,n,"application/json-patch+json"),i(this,Y,"m",pe).call(this,"PATCH",e,n)}delete(e,t={}){return i(this,Y,"m",pe).call(this,"DELETE",e,t)}register(e){return t(this,void 0,void 0,(function*(){const t=yield this.post("auth/register",e);yield this.setActiveLogin(t)}))}startLogin(e,n,r){return t(this,void 0,void 0,(function*(){return yield i(this,Y,"m",Te).call(this),this.post("auth/login",{clientId:i(this,te,"f"),scope:Ie,codeChallengeMethod:"S256",codeChallenge:i(this,K,"f").getString("codeChallenge"),email:e,password:n,remember:!!r})}))}startGoogleLogin(e){return t(this,void 0,void 0,(function*(){return yield i(this,Y,"m",Te).call(this),this.post("auth/google",e)}))}signOut(){return this.clear(),Promise.resolve()}signInWithRedirect(){const e=new URLSearchParams(window.location.search).get("code");return e?this.processCode(e):void i(this,Y,"m",Se).call(this)}signOutWithRedirect(){window.location.assign(i(this,re,"f"))}fhirUrl(...e){const t=[i(this,ee,"f"),"fhir/R4"];return e.forEach((e=>t.push("/",encodeURIComponent(e)))),t.join("")}search(e,t={}){return this.get("string"==typeof e?"fhir/R4/"+e:this.fhirUrl(e.resourceType)+X(e),t)}searchOne(e,i={}){var n,r;return t(this,void 0,void 0,(function*(){const t="string"==typeof e?$(e):e;t.count=1;const o=yield this.search(t,i);return null===(r=null===(n=o.entry)||void 0===n?void 0:n[0])||void 0===r?void 0:r.resource}))}searchResources(e,i={}){var n,r;return t(this,void 0,void 0,(function*(){const t=yield this.search(e,i);return null!==(r=null===(n=t.entry)||void 0===n?void 0:n.map((e=>e.resource)))&&void 0!==r?r:[]}))}searchValueSet(e,t,i={}){return this.get(this.fhirUrl("ValueSet","$expand")+`?url=${encodeURIComponent(e)}`+`&filter=${encodeURIComponent(t)}`,i)}getCached(e,t){const n=i(this,Z,"f").get(e+"/"+t);if(n&&!("then"in n))return n}getCachedReference(e){const t=i(this,Z,"f").get(e.reference);if(t&&!("then"in t))return t}readResource(e,t){const n=e+"/"+t,r=this.get(this.fhirUrl(e,t)).then((e=>(i(this,Z,"f").set(n,e),e)));return i(this,Z,"f").set(n,r),r}readCached(e,t){const n=i(this,Z,"f").get(e+"/"+t);return n?Promise.resolve(n):this.readResource(e,t)}readReference(e){const t=null==e?void 0:e.reference;if(!t)return Promise.reject("Missing reference");const[i,n]=t.split("/");return this.readResource(i,n)}readCachedReference(e){const t=null==e?void 0:e.reference;if(!t)return Promise.reject("Missing reference");const[i,n]=t.split("/");return this.readCached(i,n)}getSchema(){return i(this,J,"f")}requestSchema(e){return t(this,void 0,void 0,(function*(){if(e in i(this,J,"f").types)return Promise.resolve(i(this,J,"f"));const t=`{\n StructureDefinitionList(name: "${encodeURIComponent(e)}") {\n name,\n description,\n snapshot {\n element {\n id,\n path,\n min,\n max,\n type {\n code,\n targetProfile\n },\n binding {\n valueSet\n },\n definition\n }\n }\n }\n SearchParameterList(base: "${encodeURIComponent(e)}") {\n base,\n code,\n type,\n expression,\n target\n }\n }`.replace(/\s+/g," "),n=yield this.graphql(t);for(const e of n.data.StructureDefinitionList)be(i(this,J,"f"),e);for(const e of n.data.SearchParameterList)ke(i(this,J,"f"),e);return i(this,J,"f")}))}readHistory(e,t){return this.get(this.fhirUrl(e,t,"_history"))}readVersion(e,t,i){return this.get(this.fhirUrl(e,t,"_history",i))}readPatientEverything(e){return this.get(this.fhirUrl("Patient",e,"$everything"))}createResource(e){return e.resourceType?this.post(this.fhirUrl(e.resourceType),e):Promise.reject("Missing resourceType")}createBinary(e,t,i){return this.post(this.fhirUrl("Binary")+"?_filename="+encodeURIComponent(t),e,i)}updateResource(e){return e.resourceType?e.id?this.put(this.fhirUrl(e.resourceType,e.id),e):Promise.reject("Missing id"):Promise.reject("Missing resourceType")}patchResource(e,t,i){return this.patch(this.fhirUrl(e,t),i)}deleteResource(e,t){return this.delete(this.fhirUrl(e,t))}graphql(e,t){return this.post(this.fhirUrl("$graphql"),{query:e},"application/json",t)}getActiveLogin(){return i(this,K,"f").getObject("activeLogin")}setActiveLogin(e){return t(this,void 0,void 0,(function*(){n(this,se,e.accessToken,"f"),n(this,ae,e.refreshToken,"f"),n(this,le,void 0,"f"),n(this,de,void 0,"f"),i(this,K,"f").setObject("activeLogin",e),i(this,Y,"m",he).call(this,e),i(this,Z,"f").clear(),n(this,ce,void 0,"f"),yield i(this,Y,"m",fe).call(this)}))}setAccessToken(e){n(this,se,e,"f"),n(this,ae,void 0,"f"),n(this,le,void 0,"f"),n(this,de,void 0,"f")}getLogins(){var e;return null!==(e=i(this,K,"f").getObject("logins"))&&void 0!==e?e:[]}isLoading(){return!!i(this,ue,"f")}getProfile(){return i(this,le,"f")}getProfileAsync(){return t(this,void 0,void 0,(function*(){return i(this,ue,"f")&&(yield i(this,ue,"f")),this.getProfile()}))}getUserConfiguration(){return i(this,de,"f")}download(e,n={}){return t(this,void 0,void 0,(function*(){i(this,ce,"f")&&(yield i(this,ce,"f")),i(this,Y,"m",ve).call(this,n);return(yield i(this,z,"f").call(this,e,n)).blob()}))}processCode(e){if(!i(this,K,"f").getString("pkceState"))return this.clear(),Promise.reject("Invalid PCKE state");const t=i(this,K,"f").getString("codeVerifier");return t?i(this,Y,"m",we).call(this,"grant_type=authorization_code"+(i(this,te,"f")?"&client_id="+encodeURIComponent(i(this,te,"f")):"")+"&code_verifier="+encodeURIComponent(t)+"&redirect_uri="+encodeURIComponent(Me())+"&code="+encodeURIComponent(e)):(this.clear(),Promise.reject("Invalid PCKE code verifier"))}clientCredentials(e,n){return t(this,void 0,void 0,(function*(){return i(this,Y,"m",we).call(this,"grant_type=client_credentials&client_id="+encodeURIComponent(e)+"&client_secret="+encodeURIComponent(n))}))}},e.OperationOutcomeError=B,e.SEGMENT_SEPARATOR="\r",e.accessDenied=D,e.allOk=M,e.arrayBufferToBase64=w,e.arrayBufferToHex=E,e.assertOk=function(e,t){if(!W(e)||void 0===t)throw new B(e)},e.badRequest=function(e,t){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:e},expression:t?[t]:void 0}]}},e.buildTypeName=_e,e.calculateAge=p,e.calculateAgeString=function(e,t){const{years:i,months:n,days:r}=p(e,t);return i>=2?i.toString().padStart(3,"0")+"Y":n>=1?n.toString().padStart(3,"0")+"M":r.toString().padStart(3,"0")+"D"},e.capitalize=R,e.createReference=function(e){const t=l(e),i=h(e);return i===t?{reference:t}:{reference:t,display:i}},e.createSchema=Ce,e.createTypeSchema=Ue,e.created=N,e.deepEquals=function e(t,i,n){let r=Object.keys(t),o=Object.keys(i);if("meta"===n&&(r=r.filter((e=>"versionId"!==e&&"lastUpdated"!==e&&"author"!==e)),o=o.filter((e=>"versionId"!==e&&"lastUpdated"!==e&&"author"!==e))),r.length!==o.length)return!1;for(const n of r){const r=t[n],o=i[n];if(y(r)&&y(o)){if(!e(r,o,n))return!1}else if(r!==o)return!1}return!0},e.formatAddress=function(e,t){const i=[];return e.line&&i.push(...e.line),e.city&&i.push(e.city),e.state&&i.push(e.state),e.postalCode&&i.push(e.postalCode),e.use&&((null==t?void 0:t.all)||(null==t?void 0:t.use))&&i.push("["+e.use+"]"),i.join(", ").trim()},e.formatFamilyName=function(e){return e.family||""},e.formatGivenName=function(e){const t=[];return e.given&&t.push(...e.given),t.join(" ").trim()},e.formatHumanName=u,e.formatSearchQuery=X,e.getDateProperty=function(e){return e?new Date(e):void 0},e.getDisplayString=h,e.getExpressionForResourceType=We,e.getExtensionValue=function(e,...t){var i;let n=e;for(let e=0;e<t.length&&n;e++)n=null===(i=null==n?void 0:n.extension)||void 0===i?void 0:i.find((i=>i.url===t[e]));return null==n?void 0:n.valueString},e.getImageSrc=function(e){if(d(e)){const t=e.photo;if(t)for(const e of t){const t=f(e);if(t)return t}}if("Bot"===e.resourceType&&e.photo){const t=f(e.photo);if(t)return t}},e.getPropertyDisplayName=function(e){const t=e.path.replaceAll("[x]","").split(".").pop();return"id"===t?"ID":t.split(/(?=[A-Z])/).map(R).join(" ").replace("_"," ").replace(/\s+/g," ")},e.getQuestionnaireAnswers=function(e){const t={};return v(e.item,t),t},e.getReferenceString=l,e.getSearchParameterDetails=function(t,i,n){var r,o,s,a;if("_lastUpdated"===n.code)return{columnName:"lastUpdated",type:e.SearchParameterType.DATETIME};const c=n.code.split("-").reduce(((e,t,i)=>e+(i?R(t):t)),""),u=null===(r=We(i,n.expression))||void 0===r?void 0:r.split(".");if(!u)return{columnName:c,type:e.SearchParameterType.TEXT};let l,d,h=i,f=!1;for(let i=1;i<u.length;i++){const n=u[i];if(l=null===(s=null===(o=t.types[h])||void 0===o?void 0:o.properties)||void 0===s?void 0:s[n],!l)return{columnName:c,type:e.SearchParameterType.TEXT,array:f};if("*"===l.max&&(f=!0),d=null===(a=l.type)||void 0===a?void 0:a[0].code,!d)return{columnName:c,type:e.SearchParameterType.TEXT,array:f};i<u.length-1&&("Element"===d||"BackboneElement"===d?h+=R(n):h=d)}const p=function(t,i){let n=e.SearchParameterType.TEXT;switch(t.type){case"date":n=e.SearchParameterType.DATE;break;case"number":n=e.SearchParameterType.NUMBER;break;case"quantity":n=e.SearchParameterType.QUANTITY;break;case"reference":n=e.SearchParameterType.REFERENCE;break;case"token":"boolean"===i&&(n=e.SearchParameterType.BOOLEAN)}return n}(n,d);return{columnName:c,type:p,elementDefinition:l,array:f}},e.getStatus=function(e){return e.id===C?200:e.id===U?201:e.id===k?304:e.id===I?403:e.id===_?404:e.id===b?410:400},e.gone=j,e.indexSearchParameter=ke,e.indexStructureDefinition=be,e.isGone=function(e){return e.id===b},e.isLowerCase=function(e){return e===e.toLowerCase()},e.isNotFound=function(e){return e.id===_},e.isObject=y,e.isOk=W,e.isProfileResource=d,e.isStringArray=T,e.notFound=L,e.notModified=x,e.parseSearchDefinition=$,e.resolveId=function(e){var t;return null===(t=null==e?void 0:e.reference)||void 0===t?void 0:t.split("/")[1]},e.stringify=g,Object.defineProperty(e,"__esModule",{value:!0})})); | ||
//# sourceMappingURL=index.min.js.map |
@@ -1,16 +0,2 @@ | ||
/*! ***************************************************************************** | ||
Copyright (c) Microsoft Corporation. | ||
Permission to use, copy, modify, and/or distribute this software for any | ||
purpose with or without fee is hereby granted. | ||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH | ||
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY | ||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, | ||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM | ||
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR | ||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR | ||
PERFORMANCE OF THIS SOFTWARE. | ||
***************************************************************************** */ | ||
function e(e,t,i,n){return new(i||(i=Promise))((function(r,o){function s(e){try{a(n.next(e))}catch(e){o(e)}}function c(e){try{a(n.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(s,c)}a((n=n.apply(e,t||[])).next())}))}function t(e,t,i,n){if("a"===i&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?n:"a"===i?n.call(e):n?n.value:t.get(e)}function i(e,t,i,n,r){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?r.call(e,i):r?r.value=i:t.set(e,i),i}var n,r,o,s;class c{constructor(e=10){n.add(this),r.set(this,void 0),o.set(this,void 0),i(this,r,e,"f"),i(this,o,new Map,"f")}clear(){t(this,o,"f").clear()}get(e){const i=t(this,o,"f").get(e);return i&&(t(this,o,"f").delete(e),t(this,o,"f").set(e,i)),i}set(e,i){t(this,o,"f").has(e)?t(this,o,"f").delete(e):t(this,o,"f").size>=t(this,r,"f")&&t(this,o,"f").delete(t(this,n,"m",s).call(this)),t(this,o,"f").set(e,i)}}function a(e,t){const i=[];return e.line&&i.push(...e.line),e.city&&i.push(e.city),e.state&&i.push(e.state),e.postalCode&&i.push(e.postalCode),e.use&&((null==t?void 0:t.all)||(null==t?void 0:t.use))&&i.push("["+e.use+"]"),i.join(", ").trim()}function u(e,t){const i=[];return e.prefix&&((null==t?void 0:t.all)||(null==t?void 0:t.prefix))&&i.push(...e.prefix),e.given&&i.push(...e.given),e.family&&i.push(e.family),e.suffix&&((null==t?void 0:t.all)||(null==t?void 0:t.suffix))&&i.push(...e.suffix),e.use&&((null==t?void 0:t.all)||(null==t?void 0:t.use))&&i.push("["+e.use+"]"),i.join(" ").trim()}function h(e){const t=[];return e.given&&t.push(...e.given),t.join(" ").trim()}function d(e){return e.family||""}function l(e){const t=f(e),i=g(e);return i===t?{reference:t}:{reference:t,display:i}}function f(e){return e.resourceType+"/"+e.id}function p(e){var t;return null===(t=null==e?void 0:e.reference)||void 0===t?void 0:t.split("/")[1]}function v(e){return"Patient"===e.resourceType||"Practitioner"===e.resourceType||"RelatedPerson"===e.resourceType}function g(e){var t,i;if(v(e)){const t=function(e){const t=e.name;if(t&&t.length>0)return u(t[0]);return}(e);if(t)return t}if("Device"===e.resourceType){const t=function(e){const t=e.deviceName;if(t&&t.length>0)return t[0].name;return}(e);if(t)return t}return"Observation"===e.resourceType&&"code"in e&&(null===(t=e.code)||void 0===t?void 0:t.text)?null===(i=e.code)||void 0===i?void 0:i.text:"User"===e.resourceType&&e.email?e.email:"name"in e&&e.name&&"string"==typeof e.name?e.name:f(e)}function m(e){if(v(e)){const t=e.photo;if(t)for(const e of t){const t=y(e);if(t)return t}}if("Bot"===e.resourceType&&e.photo){const t=y(e.photo);if(t)return t}}function y(e){if(e.url&&e.contentType&&e.contentType.startsWith("image/"))return e.url}function T(e){return e?new Date(e):void 0}function E(e,t){const i=new Date(e);i.setUTCHours(0,0,0,0);const n=t?new Date(t):new Date;n.setUTCHours(0,0,0,0);const r=i.getUTCFullYear(),o=i.getUTCMonth(),s=i.getUTCDate(),c=n.getUTCFullYear(),a=n.getUTCMonth(),u=n.getUTCDate();let h=c-r;(a<o||a===o&&u<s)&&h--;let d=12*c+a-(12*r+o);u<s&&d--;return{years:h,months:d,days:Math.floor((n.getTime()-i.getTime())/864e5)}}function w(e,t){const{years:i,months:n,days:r}=E(e,t);return i>=2?i.toString().padStart(3,"0")+"Y":n>=1?n.toString().padStart(3,"0")+"M":r.toString().padStart(3,"0")+"D"}function R(e,t){return JSON.stringify(e,U,t?2:void 0)}function U(e,t){return!function(e){return!!e.match(/\d+$/)}(e)&&function(e){if(null==e)return!0;const t=typeof e;return"string"===t&&""===e||"object"===t&&0===Object.keys(e).length}(t)?void 0:t}function S(e,t,i){let n=Object.keys(e),r=Object.keys(t);if("meta"===i&&(n=n.filter((e=>"versionId"!==e&&"lastUpdated"!==e&&"author"!==e)),r=r.filter((e=>"versionId"!==e&&"lastUpdated"!==e&&"author"!==e))),n.length!==r.length)return!1;for(const i of n){const n=e[i],r=t[i];if(C(n)&&C(r)){if(!S(n,r,i))return!1}else if(n!==r)return!1}return!0}function C(e){return null!==e&&"object"==typeof e}r=new WeakMap,o=new WeakMap,n=new WeakSet,s=function(){return t(this,o,"f").keys().next().value};const A=[];for(let e=0;e<256;e++)A.push(e.toString(16).padStart(2,"0"));function b(e){const t=new Uint8Array(e),i=new Array(t.length);for(let e=0;e<t.length;e++)i[e]=A[t[e]];return i.join("")}function k(e){const t=new Uint8Array(e),i=[];for(let e=0;e<t.length;e++)i[e]=String.fromCharCode(t[e]);return window.btoa(i.join(""))}function P(e){return e.charAt(0).toUpperCase()+e.substr(1)}function _(e){return e===e.toLowerCase()}function O(){const e=new Uint32Array(28);return crypto.getRandomValues(e),b(e.buffer)}var I;function M(e){const t=function(e){if("undefined"!=typeof window)return window.atob(e);if("undefined"!=typeof Buffer)return Buffer.from(e,"base64").toString("binary");throw new Error("Unable to decode base64")}(e.replace(/-/g,"+").replace(/_/g,"/")),i=Array.from(t).reduce(((e,t)=>`${e}%${("00"+t.charCodeAt(0).toString(16)).slice(-2)}`),""),n=decodeURIComponent(i);return JSON.parse(n)}I=new WeakMap;const L={resourceType:"OperationOutcome",id:"ok",issue:[{severity:"information",code:"information",details:{text:"All OK"}}]},N={resourceType:"OperationOutcome",id:"created",issue:[{severity:"information",code:"information",details:{text:"Created"}}]},j={resourceType:"OperationOutcome",id:"not-modified",issue:[{severity:"information",code:"information",details:{text:"Not Modified"}}]},x={resourceType:"OperationOutcome",id:"not-found",issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},D={resourceType:"OperationOutcome",id:"gone",issue:[{severity:"error",code:"gone",details:{text:"Gone"}}]},W={resourceType:"OperationOutcome",id:"access-denied",issue:[{severity:"error",code:"access-denied",details:{text:"Access Denied"}}]};function B(e,t){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:e},expression:t?[t]:void 0}]}}function H(e){return"ok"===e.id||"created"===e.id||"not-modified"===e.id}function $(e){return"not-found"===e.id}function F(e){return"gone"===e.id}function Q(e){return"ok"===e.id?200:"created"===e.id?201:"not-modified"===e.id?304:"access-denied"===e.id?403:"not-found"===e.id?404:"gone"===e.id?410:400}function X(e,t){if(!H(e)||void 0===t)throw new V(e)}class V extends Error{constructor(e){var t,i;super(null===(i=null===(t=null==e?void 0:e.issue)||void 0===t?void 0:t[0].details)||void 0===i?void 0:i.text),this.outcome=e}}var Y;!function(e){e.EQUALS="eq",e.NOT_EQUALS="ne",e.GREATER_THAN="gt",e.LESS_THAN="lt",e.GREATER_THAN_OR_EQUALS="ge",e.LESS_THAN_OR_EQUALS="le",e.STARTS_AFTER="sa",e.ENDS_BEFORE="eb",e.APPROXIMATELY="ap",e.CONTAINS="contains",e.EXACT="exact",e.TEXT="text",e.ABOVE="above",e.BELOW="below",e.IN="in",e.NOT_IN="not-in",e.OF_TYPE="of-type"}(Y||(Y={}));const q=[Y.CONTAINS,Y.EXACT,Y.TEXT,Y.ABOVE,Y.BELOW,Y.IN,Y.NOT_IN,Y.OF_TYPE],z=[Y.NOT_EQUALS,Y.GREATER_THAN,Y.LESS_THAN,Y.GREATER_THAN_OR_EQUALS,Y.LESS_THAN_OR_EQUALS,Y.STARTS_AFTER,Y.ENDS_BEFORE,Y.APPROXIMATELY];function G(e){const t=new URL(e,"https://example.com/"),i=t.pathname.replace(/(^\/)|(\/$)/g,"").split("/").pop();let n,r,o,s,c,a;return new URLSearchParams(t.search).forEach(((e,t)=>{"_fields"===t?o=e.split(","):"_page"===t?s=parseInt(e):"_count"===t?c=parseInt(e):"_total"===t?a=e:"_sort"===t?(r=r||[],r.push(function(e){return e.startsWith("-")?{code:e.substring(1),descending:!0}:{code:e}}(e))):(n=n||[],n.push(function(e,t){let i=e,n=Y.EQUALS;for(const e of q){const t=i.indexOf(":"+e);-1!==t&&(n=e,i=i.substring(0,t))}for(const e of z)t.match(new RegExp("^"+e+"\\d"))&&(n=e,t=t.substring(e.length));return{code:i,operator:n,value:t}}(t,e)))})),{resourceType:i,filters:n,fields:o,page:s,count:c,total:a,sortRules:r}}function J(e){const t=[];return e.fields&&t.push("_fields="+e.fields.join(",")),e.filters&&e.filters.forEach((e=>t.push(function(e){const t=q.includes(e.operator)?":"+e.operator:"",i=z.includes(e.operator)?e.operator:"";return`${e.code}${t}=${i}${encodeURIComponent(e.value)}`}(e)))),e.sortRules&&e.sortRules.length>0&&t.push(function(e){if(!e||0===e.length)return"";return"_sort="+e.map((e=>e.descending?"-"+e.code:e.code)).join(",")}(e.sortRules)),e.page&&e.page>0&&t.push("_page="+e.page),e.count&&e.count>0&&t.push("_count="+e.count),e.total&&t.push("_total="+encodeURIComponent(e.total)),0===t.length?"":(t.sort(),"?"+t.join("&"))}var K,Z,ee,te,ie,ne,re,oe,se,ce,ae,ue,he,de,le,fe,pe,ve,ge,me,ye,Te,Ee,we,Re,Ue,Se,Ce,Ae,be,ke,Pe,_e;class Oe{constructor(){K.set(this,void 0),i(this,K,"undefined"!=typeof localStorage?localStorage:new Ie,"f")}clear(){t(this,K,"f").clear()}getString(e){return t(this,K,"f").getItem(e)||void 0}setString(e,i){i?t(this,K,"f").setItem(e,i):t(this,K,"f").removeItem(e)}getObject(e){const t=this.getString(e);return t?JSON.parse(t):void 0}setObject(e,t){this.setString(e,t?R(t):void 0)}}K=new WeakMap;class Ie{constructor(){Z.set(this,void 0),i(this,Z,new Map,"f")}get length(){return t(this,Z,"f").size}clear(){t(this,Z,"f").clear()}getItem(e){var i;return null!==(i=t(this,Z,"f").get(e))&&void 0!==i?i:null}setItem(e,i){i?t(this,Z,"f").set(e,i):t(this,Z,"f").delete(e)}removeItem(e){t(this,Z,"f").delete(e)}key(e){return Array.from(t(this,Z,"f").keys())[e]}}function Me(){return{types:{}}}function Le(e,t){return{display:e,description:t,properties:{},searchParams:{_lastUpdated:{base:[e],code:"_lastUpdated",type:"date",expression:e+".meta.lastUpdated"}}}}function Ne(e,t){var i;const n=t.name;if(!n)return;e.types[n]=Le(n,t.description);const r=null===(i=t.snapshot)||void 0===i?void 0:i.element;if(r){const t=r.filter((e=>e.path!==n&&e.path));t.forEach((t=>function(e,t){var i,n;const r=t.path,o=null===(n=null===(i=t.type)||void 0===i?void 0:i[0])||void 0===n?void 0:n.code;if("Element"!==o&&"BackboneElement"!==o)return;const s=r.split("."),c=xe(s);c in e.types||(e.types[c]=Le(c,t.definition),e.types[c].parentType=xe(s.slice(0,s.length-1)))}(e,t))),t.forEach((t=>function(e,t){const i=t.path.split(".");if(1===i.length)return;const n=xe(i.slice(0,i.length-1)),r=e.types[n],o=i[i.length-1];r.properties[o]=t}(e,t)))}}function je(e,t){if(t.base)for(const i of t.base){const n=e.types[i];n&&(n.searchParams||(n.searchParams={}),n.searchParams[t.code]=t)}}function xe(e){return e.map(P).join("")}function De(e){const t=e.path.replaceAll("[x]","").split(".").pop();return"id"===t?"ID":t.split(/(?=[A-Z])/).map(P).join(" ").replace("_"," ").replace(/\s+/g," ")}Z=new WeakMap,function(e){e.Address="Address",e.Age="Age",e.Annotation="Annotation",e.Attachment="Attachment",e.BackboneElement="BackboneElement",e.CodeableConcept="CodeableConcept",e.Coding="Coding",e.ContactDetail="ContactDetail",e.ContactPoint="ContactPoint",e.Contributor="Contributor",e.Count="Count",e.DataRequirement="DataRequirement",e.Distance="Distance",e.Dosage="Dosage",e.Duration="Duration",e.Expression="Expression",e.Extension="Extension",e.HumanName="HumanName",e.Identifier="Identifier",e.MarketingStatus="MarketingStatus",e.Meta="Meta",e.Money="Money",e.Narrative="Narrative",e.ParameterDefinition="ParameterDefinition",e.Period="Period",e.Population="Population",e.ProdCharacteristic="ProdCharacteristic",e.ProductShelfLife="ProductShelfLife",e.Quantity="Quantity",e.Range="Range",e.Ratio="Ratio",e.Reference="Reference",e.RelatedArtifact="RelatedArtifact",e.Resource="Resource",e.SampledData="SampledData",e.Signature="Signature",e.SubstanceAmount="SubstanceAmount",e.SystemString="http://hl7.org/fhirpath/System.String",e.Timing="Timing",e.TriggerDefinition="TriggerDefinition",e.UsageContext="UsageContext",e.base64Binary="base64Binary",e.boolean="boolean",e.canonical="canonical",e.code="code",e.date="date",e.dateTime="dateTime",e.decimal="decimal",e.id="id",e.instant="instant",e.integer="integer",e.markdown="markdown",e.oid="oid",e.positiveInt="positiveInt",e.string="string",e.time="time",e.unsignedInt="unsignedInt",e.uri="uri",e.url="url",e.uuid="uuid"}(ee||(ee={}));const We="launch/patient openid fhirUser offline_access user/*.*";class Be extends class{constructor(){I.set(this,void 0),i(this,I,{},"f")}addEventListener(e,i){t(this,I,"f")[e]||(t(this,I,"f")[e]=[]),t(this,I,"f")[e].push(i)}removeEventListeneer(e,i){const n=t(this,I,"f")[e];if(n)for(let e=0;e<n.length;e++)if(n[e]===i)return void n.splice(e,1)}dispatchEvent(e){const i=t(this,I,"f")[e.type];return i&&i.forEach((t=>t.call(this,e))),!e.defaultPrevented}}{constructor(e){var n;if(super(),te.add(this),ie.set(this,void 0),ne.set(this,void 0),re.set(this,void 0),oe.set(this,void 0),se.set(this,void 0),ce.set(this,void 0),ae.set(this,void 0),ue.set(this,void 0),he.set(this,void 0),de.set(this,void 0),le.set(this,void 0),fe.set(this,void 0),pe.set(this,void 0),ve.set(this,void 0),ge.set(this,void 0),me.set(this,void 0),null==e?void 0:e.baseUrl){if(!e.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");if(!e.baseUrl.endsWith("/"))throw new Error("Base URL must end with a trailing slash")}i(this,ie,(null==e?void 0:e.fetch)||window.fetch.bind(window),"f"),i(this,ne,new Oe,"f"),i(this,re,{types:{}},"f"),i(this,oe,new c(null!==(n=null==e?void 0:e.resourceCacheSize)&&void 0!==n?n:1e3),"f"),i(this,se,(null==e?void 0:e.baseUrl)||"https://api.medplum.com/","f"),i(this,ce,(null==e?void 0:e.clientId)||"","f"),i(this,ae,(null==e?void 0:e.authorizeUrl)||t(this,se,"f")+"oauth2/authorize","f"),i(this,ue,(null==e?void 0:e.tokenUrl)||t(this,se,"f")+"oauth2/token","f"),i(this,he,(null==e?void 0:e.logoutUrl)||t(this,se,"f")+"oauth2/logout","f"),i(this,de,null==e?void 0:e.onUnauthenticated,"f");const r=this.getActiveLogin();r&&(i(this,le,r.accessToken,"f"),i(this,fe,r.refreshToken,"f"),t(this,te,"m",Te).call(this).catch(console.log)),t(this,te,"m",_e).call(this)}clear(){t(this,ne,"f").clear(),t(this,oe,"f").clear(),i(this,le,void 0,"f"),i(this,fe,void 0,"f"),i(this,ge,void 0,"f"),i(this,me,void 0,"f"),this.dispatchEvent({type:"change"})}get(e,i={}){return t(this,te,"m",Ee).call(this,"GET",e,i)}post(e,i,n,r={}){return i&&t(this,te,"m",Ue).call(this,r,i),n&&t(this,te,"m",Re).call(this,r,n),t(this,te,"m",Ee).call(this,"POST",e,r)}put(e,i,n,r={}){return i&&t(this,te,"m",Ue).call(this,r,i),n&&t(this,te,"m",Re).call(this,r,n),t(this,te,"m",Ee).call(this,"PUT",e,r)}patch(e,i,n={}){return t(this,te,"m",Ue).call(this,n,i),t(this,te,"m",Re).call(this,n,"application/json-patch+json"),t(this,te,"m",Ee).call(this,"PATCH",e,n)}delete(e,i={}){return t(this,te,"m",Ee).call(this,"DELETE",e,i)}register(t){return e(this,void 0,void 0,(function*(){const e=yield this.post("auth/register",t);yield this.setActiveLogin(e)}))}startLogin(i,n,r){return e(this,void 0,void 0,(function*(){return yield t(this,te,"m",Ce).call(this),this.post("auth/login",{clientId:t(this,ce,"f"),scope:We,codeChallengeMethod:"S256",codeChallenge:t(this,ne,"f").getString("codeChallenge"),email:i,password:n,remember:!!r})}))}startGoogleLogin(i){return e(this,void 0,void 0,(function*(){return yield t(this,te,"m",Ce).call(this),this.post("auth/google",i)}))}signOut(){return this.clear(),Promise.resolve()}signInWithRedirect(){const e=new URLSearchParams(window.location.search).get("code");return e?this.processCode(e):void t(this,te,"m",Ae).call(this)}signOutWithRedirect(){window.location.assign(t(this,he,"f"))}fhirUrl(...e){const i=[t(this,se,"f"),"fhir/R4"];return e.forEach((e=>i.push("/",encodeURIComponent(e)))),i.join("")}search(e,t={}){return this.get("string"==typeof e?"fhir/R4/"+e:this.fhirUrl(e.resourceType)+J(e),t)}searchOne(t,i={}){var n,r;return e(this,void 0,void 0,(function*(){const e="string"==typeof t?G(t):t;e.count=1;const o=yield this.search(e,i);return null===(r=null===(n=o.entry)||void 0===n?void 0:n[0])||void 0===r?void 0:r.resource}))}searchResources(t,i={}){var n,r;return e(this,void 0,void 0,(function*(){const e=yield this.search(t,i);return null!==(r=null===(n=e.entry)||void 0===n?void 0:n.map((e=>e.resource)))&&void 0!==r?r:[]}))}searchValueSet(e,t,i={}){return this.get(this.fhirUrl("ValueSet","$expand")+`?url=${encodeURIComponent(e)}`+`&filter=${encodeURIComponent(t)}`,i)}getCached(e,i){const n=t(this,oe,"f").get(e+"/"+i);if(n&&!("then"in n))return n}getCachedReference(e){const i=t(this,oe,"f").get(e.reference);if(i&&!("then"in i))return i}readResource(e,i){const n=e+"/"+i,r=this.get(this.fhirUrl(e,i)).then((e=>(t(this,oe,"f").set(n,e),e)));return t(this,oe,"f").set(n,r),r}readCached(e,i){const n=t(this,oe,"f").get(e+"/"+i);return n?Promise.resolve(n):this.readResource(e,i)}readReference(e){const t=null==e?void 0:e.reference;if(!t)return Promise.reject("Missing reference");const[i,n]=t.split("/");return this.readResource(i,n)}readCachedReference(e){const t=null==e?void 0:e.reference;if(!t)return Promise.reject("Missing reference");const[i,n]=t.split("/");return this.readCached(i,n)}getSchema(){return t(this,re,"f")}requestSchema(i){return e(this,void 0,void 0,(function*(){if(i in t(this,re,"f").types)return Promise.resolve(t(this,re,"f"));const e=`{\n StructureDefinitionList(name: "${encodeURIComponent(i)}") {\n name,\n description,\n snapshot {\n element {\n id,\n path,\n min,\n max,\n type {\n code,\n targetProfile\n },\n binding {\n valueSet\n },\n definition\n }\n }\n }\n SearchParameterList(base: "${encodeURIComponent(i)}") {\n base,\n code,\n type,\n expression,\n target\n }\n }`.replace(/\s+/g," "),n=yield this.graphql(e);for(const e of n.data.StructureDefinitionList)Ne(t(this,re,"f"),e);for(const e of n.data.SearchParameterList)je(t(this,re,"f"),e);return t(this,re,"f")}))}readHistory(e,t){return this.get(this.fhirUrl(e,t,"_history"))}readVersion(e,t,i){return this.get(this.fhirUrl(e,t,"_history",i))}readPatientEverything(e){return this.get(this.fhirUrl("Patient",e,"$everything"))}createResource(e){return e.resourceType?this.post(this.fhirUrl(e.resourceType),e):Promise.reject("Missing resourceType")}createBinary(e,t,i){return this.post(this.fhirUrl("Binary")+"?_filename="+encodeURIComponent(t),e,i)}updateResource(e){return e.resourceType?e.id?this.put(this.fhirUrl(e.resourceType,e.id),e):Promise.reject("Missing id"):Promise.reject("Missing resourceType")}patchResource(e,t,i){return this.patch(this.fhirUrl(e,t),i)}deleteResource(e,t){return this.delete(this.fhirUrl(e,t))}graphql(e,t){return this.post(this.fhirUrl("$graphql"),{query:e},"application/json",t)}getActiveLogin(){return t(this,ne,"f").getObject("activeLogin")}setActiveLogin(n){return e(this,void 0,void 0,(function*(){i(this,le,n.accessToken,"f"),i(this,fe,n.refreshToken,"f"),i(this,ge,void 0,"f"),i(this,me,void 0,"f"),t(this,ne,"f").setObject("activeLogin",n),t(this,te,"m",ye).call(this,n),t(this,oe,"f").clear(),i(this,pe,void 0,"f"),yield t(this,te,"m",Te).call(this)}))}setAccessToken(e){i(this,le,e,"f"),i(this,fe,void 0,"f"),i(this,ge,void 0,"f"),i(this,me,void 0,"f")}getLogins(){var e;return null!==(e=t(this,ne,"f").getObject("logins"))&&void 0!==e?e:[]}isLoading(){return!!t(this,ve,"f")}getProfile(){return t(this,ge,"f")}getProfileAsync(){return e(this,void 0,void 0,(function*(){return t(this,ve,"f")&&(yield t(this,ve,"f")),this.getProfile()}))}getUserConfiguration(){return t(this,me,"f")}download(i,n={}){return e(this,void 0,void 0,(function*(){t(this,pe,"f")&&(yield t(this,pe,"f")),t(this,te,"m",we).call(this,n);return(yield t(this,ie,"f").call(this,i,n)).blob()}))}processCode(e){if(!t(this,ne,"f").getString("pkceState"))return this.clear(),Promise.reject("Invalid PCKE state");const i=t(this,ne,"f").getString("codeVerifier");return i?t(this,te,"m",ke).call(this,"grant_type=authorization_code"+(t(this,ce,"f")?"&client_id="+encodeURIComponent(t(this,ce,"f")):"")+"&code_verifier="+encodeURIComponent(i)+"&redirect_uri="+encodeURIComponent(He())+"&code="+encodeURIComponent(e)):(this.clear(),Promise.reject("Invalid PCKE code verifier"))}clientCredentials(i,n){return e(this,void 0,void 0,(function*(){return t(this,te,"m",ke).call(this,"grant_type=client_credentials&client_id="+encodeURIComponent(i)+"&client_secret="+encodeURIComponent(n))}))}}function He(){return window.location.protocol+"//"+window.location.host+"/"}var $e,Fe;ie=new WeakMap,ne=new WeakMap,re=new WeakMap,oe=new WeakMap,se=new WeakMap,ce=new WeakMap,ae=new WeakMap,ue=new WeakMap,he=new WeakMap,de=new WeakMap,le=new WeakMap,fe=new WeakMap,pe=new WeakMap,ve=new WeakMap,ge=new WeakMap,me=new WeakMap,te=new WeakSet,ye=function(e){const i=this.getLogins().filter((t=>{var i,n;return(null===(i=t.profile)||void 0===i?void 0:i.reference)!==(null===(n=e.profile)||void 0===n?void 0:n.reference)}));i.push(e),t(this,ne,"f").setObject("logins",i)},Te=function(){return e(this,void 0,void 0,(function*(){return i(this,ve,new Promise(((e,n)=>{this.get("auth/me").then((n=>{i(this,ve,void 0,"f"),i(this,ge,n.profile,"f"),i(this,me,n.config,"f"),this.dispatchEvent({type:"change"}),e(t(this,ge,"f"))})).catch(n)})),"f"),t(this,ve,"f")}))},Ee=function(i,n,r={}){return e(this,void 0,void 0,(function*(){t(this,pe,"f")&&(yield t(this,pe,"f")),n.startsWith("http")||(n=t(this,se,"f")+n),r.method=i,t(this,te,"m",we).call(this,r);const e=yield t(this,ie,"f").call(this,n,r);if(401===e.status)return t(this,te,"m",Se).call(this,i,n,r);if(204===e.status||304===e.status)return;const o=yield e.json();return"OperationOutcome"!==o.resourceType||H(o)?o:Promise.reject(o)}))},we=function(e){e.headers||(e.headers={});const i=e.headers;i["Content-Type"]||(i["Content-Type"]="application/fhir+json"),t(this,le,"f")&&(i.Authorization="Bearer "+t(this,le,"f")),e.cache||(e.cache="no-cache"),e.credentials||(e.credentials="include")},Re=function(e,t){e.headers||(e.headers={});e.headers["Content-Type"]=t},Ue=function(e,t){"string"==typeof t||"undefined"!=typeof File&&t instanceof File?e.body=t:t&&(e.body=R(t))},Se=function(i,n,r){return e(this,void 0,void 0,(function*(){return t(this,te,"m",be).call(this).then((()=>t(this,te,"m",Ee).call(this,i,n,r))).catch((e=>(this.clear(),t(this,de,"f")&&t(this,de,"f").call(this),Promise.reject(e))))}))},Ce=function(){return e(this,void 0,void 0,(function*(){const i=O();t(this,ne,"f").setString("pkceState",i);const n=O();t(this,ne,"f").setString("codeVerifier",n);const r=k(yield function(t){return e(this,void 0,void 0,(function*(){return crypto.subtle.digest("SHA-256",(new TextEncoder).encode(t))}))}(n)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"");t(this,ne,"f").setString("codeChallenge",r)}))},Ae=function(){return e(this,void 0,void 0,(function*(){if(!t(this,ae,"f"))return Promise.reject("Missing authorize URL");t(this,te,"m",Ce).call(this),window.location.assign(t(this,ae,"f")+"?response_type=code&state="+encodeURIComponent(t(this,ne,"f").getString("pkceState"))+"&client_id="+encodeURIComponent(t(this,ce,"f"))+"&redirect_uri="+encodeURIComponent(He())+"&scope="+encodeURIComponent(We)+"&code_challenge_method=S256&code_challenge="+encodeURIComponent(t(this,ne,"f").getString("codeChallenge")))}))},be=function(){return e(this,void 0,void 0,(function*(){return t(this,pe,"f")?t(this,pe,"f"):t(this,fe,"f")?(i(this,pe,t(this,te,"m",ke).call(this,"grant_type=refresh_token&client_id="+encodeURIComponent(t(this,ce,"f"))+"&refresh_token="+encodeURIComponent(t(this,fe,"f"))),"f"),void(yield t(this,pe,"f"))):(this.clear(),Promise.reject("Invalid refresh token"))}))},ke=function(i){return e(this,void 0,void 0,(function*(){return t(this,ue,"f")?t(this,ie,"f").call(this,t(this,ue,"f"),{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:i}).then((e=>e.ok?e.json():Promise.reject("Failed to fetch tokens"))).then((e=>t(this,te,"m",Pe).call(this,e))).then((()=>this.getProfile())):Promise.reject("Missing token URL")}))},Pe=function(i){return e(this,void 0,void 0,(function*(){const e=i.access_token,n=function(e){const[t,i,n]=e.split(".");return M(i)}(e);return Date.now()>=1e3*n.exp?(this.clear(),Promise.reject("Token expired")):t(this,ce,"f")&&n.client_id!==t(this,ce,"f")?(this.clear(),Promise.reject("Token was not issued for this audience")):void(yield this.setActiveLogin({accessToken:e,refreshToken:i.refresh_token,project:i.project,profile:i.profile}))}))},_e=function(){try{window.addEventListener("storage",(e=>{null!==e.key&&"activeLogin"!==e.key||window.location.reload()}))}catch(e){}};class Qe{constructor(e){$e.set(this,void 0),i(this,$e,e,"f")}createResource(i){return e(this,void 0,void 0,(function*(){try{const e=yield t(this,$e,"f").createResource(i);return[N,e]}catch(e){return[e,void 0]}}))}readResource(i,n){return e(this,void 0,void 0,(function*(){try{const e=yield t(this,$e,"f").readResource(i,n);return[L,e]}catch(e){return[e,void 0]}}))}readReference(i){return e(this,void 0,void 0,(function*(){try{const e=yield t(this,$e,"f").readReference(i);return[L,e]}catch(e){return[e,void 0]}}))}readHistory(i,n){return e(this,void 0,void 0,(function*(){try{const e=yield t(this,$e,"f").readHistory(i,n);return[L,e]}catch(e){return[e,void 0]}}))}readVersion(i,n,r){return e(this,void 0,void 0,(function*(){try{const e=yield t(this,$e,"f").readVersion(i,n,r);return[L,e]}catch(e){return[e,void 0]}}))}updateResource(i){return e(this,void 0,void 0,(function*(){try{const e=yield t(this,$e,"f").updateResource(i);return[L,e]}catch(e){return[e,void 0]}}))}deleteResource(i,n){return e(this,void 0,void 0,(function*(){try{return yield t(this,$e,"f").deleteResource(i,n),[L,void 0]}catch(e){return[e,void 0]}}))}patchResource(i,n,r){return e(this,void 0,void 0,(function*(){try{const e=yield t(this,$e,"f").patchResource(i,n,r);return[L,e]}catch(e){return[e,void 0]}}))}search(i){return e(this,void 0,void 0,(function*(){const e="string"==typeof i?G(i):i;try{const i=yield t(this,$e,"f").search(e);return[L,i]}catch(e){return[e,void 0]}}))}}function Xe(e,t,i){var n,r,o,s;if("_lastUpdated"===i.code)return{columnName:"lastUpdated",type:Fe.DATETIME};const c=i.code.split("-").reduce(((e,t,i)=>e+(i?P(t):t)),"");const a=null===(n=Ve(t,i.expression))||void 0===n?void 0:n.split(".");if(!a)return{columnName:c,type:Fe.TEXT};let u,h,d=t,l=!1;for(let t=1;t<a.length;t++){const i=a[t];if(u=null===(o=null===(r=e.types[d])||void 0===r?void 0:r.properties)||void 0===o?void 0:o[i],!u)return{columnName:c,type:Fe.TEXT,array:l};if("*"===u.max&&(l=!0),h=null===(s=u.type)||void 0===s?void 0:s[0].code,!h)return{columnName:c,type:Fe.TEXT,array:l};t<a.length-1&&("Element"===h||"BackboneElement"===h?d+=P(i):d=h)}const f=function(e,t){let i=Fe.TEXT;switch(e.type){case"date":i=Fe.DATE;break;case"number":i=Fe.NUMBER;break;case"quantity":i=Fe.QUANTITY;break;case"reference":i=Fe.REFERENCE;break;case"token":"boolean"===t&&(i=Fe.BOOLEAN)}return i}(i,h);return{columnName:c,type:f,elementDefinition:u,array:l}}function Ve(e,t){const i=t.split(" | ");for(const t of i){const i=Ye(t);if(i.startsWith(e+"."))return i}}function Ye(e){let t=e.trim();return t.startsWith("(")&&t.endsWith(")")&&(t=t.substring(1,t.length-1)),t.includes(" as ")&&(t=t.substring(0,t.indexOf(" as "))),t.includes(".where(")&&(t=t.substring(0,t.indexOf(".where("))),t}$e=new WeakMap,function(e){e.BOOLEAN="BOOLEAN",e.NUMBER="NUMBER",e.QUANTITY="QUANTITY",e.TEXT="TEXT",e.REFERENCE="REFERENCE",e.DATE="DATE",e.DATETIME="DATETIME",e.PERIOD="PERIOD"}(Fe||(Fe={}));export{Qe as LegacyRepositoryClient,Be as MedplumClient,V as OperationOutcomeError,Y as Operator,ee as PropertyType,Fe as SearchParameterType,W as accessDenied,L as allOk,k as arrayBufferToBase64,b as arrayBufferToHex,X as assertOk,B as badRequest,xe as buildTypeName,E as calculateAge,w as calculateAgeString,P as capitalize,l as createReference,Me as createSchema,Le as createTypeSchema,N as created,S as deepEquals,a as formatAddress,d as formatFamilyName,h as formatGivenName,u as formatHumanName,J as formatSearchQuery,T as getDateProperty,g as getDisplayString,Ve as getExpressionForResourceType,m as getImageSrc,De as getPropertyDisplayName,f as getReferenceString,Xe as getSearchParameterDetails,Q as getStatus,D as gone,je as indexSearchParameter,Ne as indexStructureDefinition,F as isGone,_ as isLowerCase,$ as isNotFound,H as isOk,v as isProfileResource,x as notFound,j as notModified,G as parseSearchDefinition,p as resolveId,R as stringify}; | ||
function e(e,t,i,n){return new(i||(i=Promise))((function(r,o){function s(e){try{a(n.next(e))}catch(e){o(e)}}function c(e){try{a(n.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(s,c)}a((n=n.apply(e,t||[])).next())}))}function t(e,t,i,n){if("a"===i&&!n)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!n:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===i?n:"a"===i?n.call(e):n?n.value:t.get(e)}function i(e,t,i,n,r){if("m"===n)throw new TypeError("Private method is not writable");if("a"===n&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===n?r.call(e,i):r?r.value=i:t.set(e,i),i}var n,r,o,s;class c{constructor(e=10){n.add(this),r.set(this,void 0),o.set(this,void 0),i(this,r,e,"f"),i(this,o,new Map,"f")}clear(){t(this,o,"f").clear()}get(e){const i=t(this,o,"f").get(e);return i&&(t(this,o,"f").delete(e),t(this,o,"f").set(e,i)),i}set(e,i){t(this,o,"f").has(e)?t(this,o,"f").delete(e):t(this,o,"f").size>=t(this,r,"f")&&t(this,o,"f").delete(t(this,n,"m",s).call(this)),t(this,o,"f").set(e,i)}}function a(e,t){const i=[];return e.line&&i.push(...e.line),e.city&&i.push(e.city),e.state&&i.push(e.state),e.postalCode&&i.push(e.postalCode),e.use&&((null==t?void 0:t.all)||(null==t?void 0:t.use))&&i.push("["+e.use+"]"),i.join(", ").trim()}function u(e,t){const i=[];return e.prefix&&((null==t?void 0:t.all)||(null==t?void 0:t.prefix))&&i.push(...e.prefix),e.given&&i.push(...e.given),e.family&&i.push(e.family),e.suffix&&((null==t?void 0:t.all)||(null==t?void 0:t.suffix))&&i.push(...e.suffix),e.use&&((null==t?void 0:t.all)||(null==t?void 0:t.use))&&i.push("["+e.use+"]"),i.join(" ").trim()}function d(e){const t=[];return e.given&&t.push(...e.given),t.join(" ").trim()}function h(e){return e.family||""}function l(e){const t=f(e),i=g(e);return i===t?{reference:t}:{reference:t,display:i}}function f(e){return e.resourceType+"/"+e.id}function p(e){var t;return null===(t=null==e?void 0:e.reference)||void 0===t?void 0:t.split("/")[1]}function v(e){return"Patient"===e.resourceType||"Practitioner"===e.resourceType||"RelatedPerson"===e.resourceType}function g(e){var t,i;if(v(e)){const t=function(e){const t=e.name;if(t&&t.length>0)return u(t[0]);return}(e);if(t)return t}if("Device"===e.resourceType){const t=function(e){const t=e.deviceName;if(t&&t.length>0)return t[0].name;return}(e);if(t)return t}return"Observation"===e.resourceType&&"code"in e&&(null===(t=e.code)||void 0===t?void 0:t.text)?null===(i=e.code)||void 0===i?void 0:i.text:"User"===e.resourceType&&e.email?e.email:"name"in e&&e.name&&"string"==typeof e.name?e.name:f(e)}function m(e){if(v(e)){const t=e.photo;if(t)for(const e of t){const t=y(e);if(t)return t}}if("Bot"===e.resourceType&&e.photo){const t=y(e.photo);if(t)return t}}function y(e){if(e.url&&e.contentType&&e.contentType.startsWith("image/"))return e.url}function T(e){return e?new Date(e):void 0}function w(e,t){const i=new Date(e);i.setUTCHours(0,0,0,0);const n=t?new Date(t):new Date;n.setUTCHours(0,0,0,0);const r=i.getUTCFullYear(),o=i.getUTCMonth(),s=i.getUTCDate(),c=n.getUTCFullYear(),a=n.getUTCMonth(),u=n.getUTCDate();let d=c-r;(a<o||a===o&&u<s)&&d--;let h=12*c+a-(12*r+o);u<s&&h--;return{years:d,months:h,days:Math.floor((n.getTime()-i.getTime())/864e5)}}function E(e,t){const{years:i,months:n,days:r}=w(e,t);return i>=2?i.toString().padStart(3,"0")+"Y":n>=1?n.toString().padStart(3,"0")+"M":r.toString().padStart(3,"0")+"D"}function S(e){const t={};return R(e.item,t),t}function R(e,t){if(e)for(const i of e)i.linkId&&i.answer&&i.answer.length>0&&(t[i.linkId]=i.answer[0]),R(i.item,t)}function U(e,...t){var i;let n=e;for(let e=0;e<t.length&&n;e++)n=null===(i=null==n?void 0:n.extension)||void 0===i?void 0:i.find((i=>i.url===t[e]));return null==n?void 0:n.valueString}function C(e,t){return JSON.stringify(e,A,t?2:void 0)}function A(e,t){return!function(e){return!!e.match(/\d+$/)}(e)&&function(e){if(null==e)return!0;const t=typeof e;return"string"===t&&""===e||"object"===t&&0===Object.keys(e).length}(t)?void 0:t}function b(e,t,i){let n=Object.keys(e),r=Object.keys(t);if("meta"===i&&(n=n.filter((e=>"versionId"!==e&&"lastUpdated"!==e&&"author"!==e)),r=r.filter((e=>"versionId"!==e&&"lastUpdated"!==e&&"author"!==e))),n.length!==r.length)return!1;for(const i of n){const n=e[i],r=t[i];if(k(n)&&k(r)){if(!b(n,r,i))return!1}else if(n!==r)return!1}return!0}function k(e){return null!==e&&"object"==typeof e}function P(e){return e.every((e=>"string"==typeof e))}r=new WeakMap,o=new WeakMap,n=new WeakSet,s=function(){return t(this,o,"f").keys().next().value};const O=[];for(let e=0;e<256;e++)O.push(e.toString(16).padStart(2,"0"));function _(e){const t=new Uint8Array(e),i=new Array(t.length);for(let e=0;e<t.length;e++)i[e]=O[t[e]];return i.join("")}function I(e){const t=new Uint8Array(e),i=[];for(let e=0;e<t.length;e++)i[e]=String.fromCharCode(t[e]);return window.btoa(i.join(""))}function M(e){return e.charAt(0).toUpperCase()+e.substr(1)}function L(e){return e===e.toLowerCase()}function j(){const e=new Uint32Array(28);return crypto.getRandomValues(e),_(e.buffer)}var N;function x(e){const t=function(e){if("undefined"!=typeof window)return window.atob(e);if("undefined"!=typeof Buffer)return Buffer.from(e,"base64").toString("binary");throw new Error("Unable to decode base64")}(e.replace(/-/g,"+").replace(/_/g,"/")),i=Array.from(t).reduce(((e,t)=>`${e}%${("00"+t.charCodeAt(0).toString(16)).slice(-2)}`),""),n=decodeURIComponent(i);return JSON.parse(n)}N=new WeakMap;const D={resourceType:"OperationOutcome",id:"ok",issue:[{severity:"information",code:"information",details:{text:"All OK"}}]},W={resourceType:"OperationOutcome",id:"created",issue:[{severity:"information",code:"information",details:{text:"Created"}}]},B={resourceType:"OperationOutcome",id:"not-modified",issue:[{severity:"information",code:"information",details:{text:"Not Modified"}}]},H={resourceType:"OperationOutcome",id:"not-found",issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},$={resourceType:"OperationOutcome",id:"gone",issue:[{severity:"error",code:"gone",details:{text:"Gone"}}]},F={resourceType:"OperationOutcome",id:"access-denied",issue:[{severity:"error",code:"access-denied",details:{text:"Access Denied"}}]};function Q(e,t){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:e},expression:t?[t]:void 0}]}}function X(e){return"ok"===e.id||"created"===e.id||"not-modified"===e.id}function V(e){return"not-found"===e.id}function Y(e){return"gone"===e.id}function q(e){return"ok"===e.id?200:"created"===e.id?201:"not-modified"===e.id?304:"access-denied"===e.id?403:"not-found"===e.id?404:"gone"===e.id?410:400}function z(e,t){if(!X(e)||void 0===t)throw new G(e)}class G extends Error{constructor(e){var t,i;super(null===(i=null===(t=null==e?void 0:e.issue)||void 0===t?void 0:t[0].details)||void 0===i?void 0:i.text),this.outcome=e}}var K;!function(e){e.EQUALS="eq",e.NOT_EQUALS="ne",e.GREATER_THAN="gt",e.LESS_THAN="lt",e.GREATER_THAN_OR_EQUALS="ge",e.LESS_THAN_OR_EQUALS="le",e.STARTS_AFTER="sa",e.ENDS_BEFORE="eb",e.APPROXIMATELY="ap",e.CONTAINS="contains",e.EXACT="exact",e.TEXT="text",e.ABOVE="above",e.BELOW="below",e.IN="in",e.NOT_IN="not-in",e.OF_TYPE="of-type"}(K||(K={}));const J=[K.CONTAINS,K.EXACT,K.TEXT,K.ABOVE,K.BELOW,K.IN,K.NOT_IN,K.OF_TYPE],Z=[K.NOT_EQUALS,K.GREATER_THAN,K.LESS_THAN,K.GREATER_THAN_OR_EQUALS,K.LESS_THAN_OR_EQUALS,K.STARTS_AFTER,K.ENDS_BEFORE,K.APPROXIMATELY];function ee(e){const t=new URL(e,"https://example.com/"),i=t.pathname.replace(/(^\/)|(\/$)/g,"").split("/").pop();let n,r,o,s,c,a;return new URLSearchParams(t.search).forEach(((e,t)=>{"_fields"===t?o=e.split(","):"_page"===t?s=parseInt(e):"_count"===t?c=parseInt(e):"_total"===t?a=e:"_sort"===t?(r=r||[],r.push(function(e){return e.startsWith("-")?{code:e.substring(1),descending:!0}:{code:e}}(e))):(n=n||[],n.push(function(e,t){let i=e,n=K.EQUALS;for(const e of J){const t=i.indexOf(":"+e);-1!==t&&(n=e,i=i.substring(0,t))}for(const e of Z)t.match(new RegExp("^"+e+"\\d"))&&(n=e,t=t.substring(e.length));return{code:i,operator:n,value:t}}(t,e)))})),{resourceType:i,filters:n,fields:o,page:s,count:c,total:a,sortRules:r}}function te(e){const t=[];return e.fields&&t.push("_fields="+e.fields.join(",")),e.filters&&e.filters.forEach((e=>t.push(function(e){const t=J.includes(e.operator)?":"+e.operator:"",i=Z.includes(e.operator)?e.operator:"";return`${e.code}${t}=${i}${encodeURIComponent(e.value)}`}(e)))),e.sortRules&&e.sortRules.length>0&&t.push(function(e){if(!e||0===e.length)return"";return"_sort="+e.map((e=>e.descending?"-"+e.code:e.code)).join(",")}(e.sortRules)),e.page&&e.page>0&&t.push("_page="+e.page),e.count&&e.count>0&&t.push("_count="+e.count),e.total&&t.push("_total="+encodeURIComponent(e.total)),0===t.length?"":(t.sort(),"?"+t.join("&"))}var ie,ne,re,oe,se,ce,ae,ue,de,he,le,fe,pe,ve,ge,me,ye,Te,we,Ee,Se,Re,Ue,Ce,Ae,be,ke,Pe,Oe,_e,Ie,Me,Le;class je{constructor(){ie.set(this,void 0),i(this,ie,"undefined"!=typeof localStorage?localStorage:new Ne,"f")}clear(){t(this,ie,"f").clear()}getString(e){return t(this,ie,"f").getItem(e)||void 0}setString(e,i){i?t(this,ie,"f").setItem(e,i):t(this,ie,"f").removeItem(e)}getObject(e){const t=this.getString(e);return t?JSON.parse(t):void 0}setObject(e,t){this.setString(e,t?C(t):void 0)}}ie=new WeakMap;class Ne{constructor(){ne.set(this,void 0),i(this,ne,new Map,"f")}get length(){return t(this,ne,"f").size}clear(){t(this,ne,"f").clear()}getItem(e){var i;return null!==(i=t(this,ne,"f").get(e))&&void 0!==i?i:null}setItem(e,i){i?t(this,ne,"f").set(e,i):t(this,ne,"f").delete(e)}removeItem(e){t(this,ne,"f").delete(e)}key(e){return Array.from(t(this,ne,"f").keys())[e]}}function xe(){return{types:{}}}function De(e,t){return{display:e,description:t,properties:{},searchParams:{_lastUpdated:{base:[e],code:"_lastUpdated",type:"date",expression:e+".meta.lastUpdated"}}}}function We(e,t){var i;const n=t.name;if(!n)return;e.types[n]=De(n,t.description);const r=null===(i=t.snapshot)||void 0===i?void 0:i.element;if(r){const t=r.filter((e=>e.path!==n&&e.path));t.forEach((t=>function(e,t){var i,n;const r=t.path,o=null===(n=null===(i=t.type)||void 0===i?void 0:i[0])||void 0===n?void 0:n.code;if("Element"!==o&&"BackboneElement"!==o)return;const s=r.split("."),c=He(s);c in e.types||(e.types[c]=De(c,t.definition),e.types[c].parentType=He(s.slice(0,s.length-1)))}(e,t))),t.forEach((t=>function(e,t){const i=t.path.split(".");if(1===i.length)return;const n=He(i.slice(0,i.length-1)),r=e.types[n],o=i[i.length-1];r.properties[o]=t}(e,t)))}}function Be(e,t){if(t.base)for(const i of t.base){const n=e.types[i];n&&(n.searchParams||(n.searchParams={}),n.searchParams[t.code]=t)}}function He(e){return e.map(M).join("")}function $e(e){const t=e.path.replaceAll("[x]","").split(".").pop();return"id"===t?"ID":t.split(/(?=[A-Z])/).map(M).join(" ").replace("_"," ").replace(/\s+/g," ")}ne=new WeakMap,function(e){e.Address="Address",e.Age="Age",e.Annotation="Annotation",e.Attachment="Attachment",e.BackboneElement="BackboneElement",e.CodeableConcept="CodeableConcept",e.Coding="Coding",e.ContactDetail="ContactDetail",e.ContactPoint="ContactPoint",e.Contributor="Contributor",e.Count="Count",e.DataRequirement="DataRequirement",e.Distance="Distance",e.Dosage="Dosage",e.Duration="Duration",e.Expression="Expression",e.Extension="Extension",e.HumanName="HumanName",e.Identifier="Identifier",e.MarketingStatus="MarketingStatus",e.Meta="Meta",e.Money="Money",e.Narrative="Narrative",e.ParameterDefinition="ParameterDefinition",e.Period="Period",e.Population="Population",e.ProdCharacteristic="ProdCharacteristic",e.ProductShelfLife="ProductShelfLife",e.Quantity="Quantity",e.Range="Range",e.Ratio="Ratio",e.Reference="Reference",e.RelatedArtifact="RelatedArtifact",e.Resource="Resource",e.SampledData="SampledData",e.Signature="Signature",e.SubstanceAmount="SubstanceAmount",e.SystemString="http://hl7.org/fhirpath/System.String",e.Timing="Timing",e.TriggerDefinition="TriggerDefinition",e.UsageContext="UsageContext",e.base64Binary="base64Binary",e.boolean="boolean",e.canonical="canonical",e.code="code",e.date="date",e.dateTime="dateTime",e.decimal="decimal",e.id="id",e.instant="instant",e.integer="integer",e.markdown="markdown",e.oid="oid",e.positiveInt="positiveInt",e.string="string",e.time="time",e.unsignedInt="unsignedInt",e.uri="uri",e.url="url",e.uuid="uuid"}(re||(re={}));const Fe="launch/patient openid fhirUser offline_access user/*.*";class Qe extends class{constructor(){N.set(this,void 0),i(this,N,{},"f")}addEventListener(e,i){t(this,N,"f")[e]||(t(this,N,"f")[e]=[]),t(this,N,"f")[e].push(i)}removeEventListeneer(e,i){const n=t(this,N,"f")[e];if(n)for(let e=0;e<n.length;e++)if(n[e]===i)return void n.splice(e,1)}dispatchEvent(e){const i=t(this,N,"f")[e.type];return i&&i.forEach((t=>t.call(this,e))),!e.defaultPrevented}}{constructor(e){var n;if(super(),oe.add(this),se.set(this,void 0),ce.set(this,void 0),ae.set(this,void 0),ue.set(this,void 0),de.set(this,void 0),he.set(this,void 0),le.set(this,void 0),fe.set(this,void 0),pe.set(this,void 0),ve.set(this,void 0),ge.set(this,void 0),me.set(this,void 0),ye.set(this,void 0),Te.set(this,void 0),we.set(this,void 0),Ee.set(this,void 0),null==e?void 0:e.baseUrl){if(!e.baseUrl.startsWith("http"))throw new Error("Base URL must start with http or https");if(!e.baseUrl.endsWith("/"))throw new Error("Base URL must end with a trailing slash")}i(this,se,(null==e?void 0:e.fetch)||window.fetch.bind(window),"f"),i(this,ce,new je,"f"),i(this,ae,{types:{}},"f"),i(this,ue,new c(null!==(n=null==e?void 0:e.resourceCacheSize)&&void 0!==n?n:1e3),"f"),i(this,de,(null==e?void 0:e.baseUrl)||"https://api.medplum.com/","f"),i(this,he,(null==e?void 0:e.clientId)||"","f"),i(this,le,(null==e?void 0:e.authorizeUrl)||t(this,de,"f")+"oauth2/authorize","f"),i(this,fe,(null==e?void 0:e.tokenUrl)||t(this,de,"f")+"oauth2/token","f"),i(this,pe,(null==e?void 0:e.logoutUrl)||t(this,de,"f")+"oauth2/logout","f"),i(this,ve,null==e?void 0:e.onUnauthenticated,"f");const r=this.getActiveLogin();r&&(i(this,ge,r.accessToken,"f"),i(this,me,r.refreshToken,"f"),t(this,oe,"m",Re).call(this).catch(console.log)),t(this,oe,"m",Le).call(this)}clear(){t(this,ce,"f").clear(),t(this,ue,"f").clear(),i(this,ge,void 0,"f"),i(this,me,void 0,"f"),i(this,we,void 0,"f"),i(this,Ee,void 0,"f"),this.dispatchEvent({type:"change"})}get(e,i={}){return t(this,oe,"m",Ue).call(this,"GET",e,i)}post(e,i,n,r={}){return i&&t(this,oe,"m",be).call(this,r,i),n&&t(this,oe,"m",Ae).call(this,r,n),t(this,oe,"m",Ue).call(this,"POST",e,r)}put(e,i,n,r={}){return i&&t(this,oe,"m",be).call(this,r,i),n&&t(this,oe,"m",Ae).call(this,r,n),t(this,oe,"m",Ue).call(this,"PUT",e,r)}patch(e,i,n={}){return t(this,oe,"m",be).call(this,n,i),t(this,oe,"m",Ae).call(this,n,"application/json-patch+json"),t(this,oe,"m",Ue).call(this,"PATCH",e,n)}delete(e,i={}){return t(this,oe,"m",Ue).call(this,"DELETE",e,i)}register(t){return e(this,void 0,void 0,(function*(){const e=yield this.post("auth/register",t);yield this.setActiveLogin(e)}))}startLogin(i,n,r){return e(this,void 0,void 0,(function*(){return yield t(this,oe,"m",Pe).call(this),this.post("auth/login",{clientId:t(this,he,"f"),scope:Fe,codeChallengeMethod:"S256",codeChallenge:t(this,ce,"f").getString("codeChallenge"),email:i,password:n,remember:!!r})}))}startGoogleLogin(i){return e(this,void 0,void 0,(function*(){return yield t(this,oe,"m",Pe).call(this),this.post("auth/google",i)}))}signOut(){return this.clear(),Promise.resolve()}signInWithRedirect(){const e=new URLSearchParams(window.location.search).get("code");return e?this.processCode(e):void t(this,oe,"m",Oe).call(this)}signOutWithRedirect(){window.location.assign(t(this,pe,"f"))}fhirUrl(...e){const i=[t(this,de,"f"),"fhir/R4"];return e.forEach((e=>i.push("/",encodeURIComponent(e)))),i.join("")}search(e,t={}){return this.get("string"==typeof e?"fhir/R4/"+e:this.fhirUrl(e.resourceType)+te(e),t)}searchOne(t,i={}){var n,r;return e(this,void 0,void 0,(function*(){const e="string"==typeof t?ee(t):t;e.count=1;const o=yield this.search(e,i);return null===(r=null===(n=o.entry)||void 0===n?void 0:n[0])||void 0===r?void 0:r.resource}))}searchResources(t,i={}){var n,r;return e(this,void 0,void 0,(function*(){const e=yield this.search(t,i);return null!==(r=null===(n=e.entry)||void 0===n?void 0:n.map((e=>e.resource)))&&void 0!==r?r:[]}))}searchValueSet(e,t,i={}){return this.get(this.fhirUrl("ValueSet","$expand")+`?url=${encodeURIComponent(e)}`+`&filter=${encodeURIComponent(t)}`,i)}getCached(e,i){const n=t(this,ue,"f").get(e+"/"+i);if(n&&!("then"in n))return n}getCachedReference(e){const i=t(this,ue,"f").get(e.reference);if(i&&!("then"in i))return i}readResource(e,i){const n=e+"/"+i,r=this.get(this.fhirUrl(e,i)).then((e=>(t(this,ue,"f").set(n,e),e)));return t(this,ue,"f").set(n,r),r}readCached(e,i){const n=t(this,ue,"f").get(e+"/"+i);return n?Promise.resolve(n):this.readResource(e,i)}readReference(e){const t=null==e?void 0:e.reference;if(!t)return Promise.reject("Missing reference");const[i,n]=t.split("/");return this.readResource(i,n)}readCachedReference(e){const t=null==e?void 0:e.reference;if(!t)return Promise.reject("Missing reference");const[i,n]=t.split("/");return this.readCached(i,n)}getSchema(){return t(this,ae,"f")}requestSchema(i){return e(this,void 0,void 0,(function*(){if(i in t(this,ae,"f").types)return Promise.resolve(t(this,ae,"f"));const e=`{\n StructureDefinitionList(name: "${encodeURIComponent(i)}") {\n name,\n description,\n snapshot {\n element {\n id,\n path,\n min,\n max,\n type {\n code,\n targetProfile\n },\n binding {\n valueSet\n },\n definition\n }\n }\n }\n SearchParameterList(base: "${encodeURIComponent(i)}") {\n base,\n code,\n type,\n expression,\n target\n }\n }`.replace(/\s+/g," "),n=yield this.graphql(e);for(const e of n.data.StructureDefinitionList)We(t(this,ae,"f"),e);for(const e of n.data.SearchParameterList)Be(t(this,ae,"f"),e);return t(this,ae,"f")}))}readHistory(e,t){return this.get(this.fhirUrl(e,t,"_history"))}readVersion(e,t,i){return this.get(this.fhirUrl(e,t,"_history",i))}readPatientEverything(e){return this.get(this.fhirUrl("Patient",e,"$everything"))}createResource(e){return e.resourceType?this.post(this.fhirUrl(e.resourceType),e):Promise.reject("Missing resourceType")}createBinary(e,t,i){return this.post(this.fhirUrl("Binary")+"?_filename="+encodeURIComponent(t),e,i)}updateResource(e){return e.resourceType?e.id?this.put(this.fhirUrl(e.resourceType,e.id),e):Promise.reject("Missing id"):Promise.reject("Missing resourceType")}patchResource(e,t,i){return this.patch(this.fhirUrl(e,t),i)}deleteResource(e,t){return this.delete(this.fhirUrl(e,t))}graphql(e,t){return this.post(this.fhirUrl("$graphql"),{query:e},"application/json",t)}getActiveLogin(){return t(this,ce,"f").getObject("activeLogin")}setActiveLogin(n){return e(this,void 0,void 0,(function*(){i(this,ge,n.accessToken,"f"),i(this,me,n.refreshToken,"f"),i(this,we,void 0,"f"),i(this,Ee,void 0,"f"),t(this,ce,"f").setObject("activeLogin",n),t(this,oe,"m",Se).call(this,n),t(this,ue,"f").clear(),i(this,ye,void 0,"f"),yield t(this,oe,"m",Re).call(this)}))}setAccessToken(e){i(this,ge,e,"f"),i(this,me,void 0,"f"),i(this,we,void 0,"f"),i(this,Ee,void 0,"f")}getLogins(){var e;return null!==(e=t(this,ce,"f").getObject("logins"))&&void 0!==e?e:[]}isLoading(){return!!t(this,Te,"f")}getProfile(){return t(this,we,"f")}getProfileAsync(){return e(this,void 0,void 0,(function*(){return t(this,Te,"f")&&(yield t(this,Te,"f")),this.getProfile()}))}getUserConfiguration(){return t(this,Ee,"f")}download(i,n={}){return e(this,void 0,void 0,(function*(){t(this,ye,"f")&&(yield t(this,ye,"f")),t(this,oe,"m",Ce).call(this,n);return(yield t(this,se,"f").call(this,i,n)).blob()}))}processCode(e){if(!t(this,ce,"f").getString("pkceState"))return this.clear(),Promise.reject("Invalid PCKE state");const i=t(this,ce,"f").getString("codeVerifier");return i?t(this,oe,"m",Ie).call(this,"grant_type=authorization_code"+(t(this,he,"f")?"&client_id="+encodeURIComponent(t(this,he,"f")):"")+"&code_verifier="+encodeURIComponent(i)+"&redirect_uri="+encodeURIComponent(Xe())+"&code="+encodeURIComponent(e)):(this.clear(),Promise.reject("Invalid PCKE code verifier"))}clientCredentials(i,n){return e(this,void 0,void 0,(function*(){return t(this,oe,"m",Ie).call(this,"grant_type=client_credentials&client_id="+encodeURIComponent(i)+"&client_secret="+encodeURIComponent(n))}))}}function Xe(){return window.location.protocol+"//"+window.location.host+"/"}se=new WeakMap,ce=new WeakMap,ae=new WeakMap,ue=new WeakMap,de=new WeakMap,he=new WeakMap,le=new WeakMap,fe=new WeakMap,pe=new WeakMap,ve=new WeakMap,ge=new WeakMap,me=new WeakMap,ye=new WeakMap,Te=new WeakMap,we=new WeakMap,Ee=new WeakMap,oe=new WeakSet,Se=function(e){const i=this.getLogins().filter((t=>{var i,n;return(null===(i=t.profile)||void 0===i?void 0:i.reference)!==(null===(n=e.profile)||void 0===n?void 0:n.reference)}));i.push(e),t(this,ce,"f").setObject("logins",i)},Re=function(){return e(this,void 0,void 0,(function*(){return i(this,Te,new Promise(((e,n)=>{this.get("auth/me").then((n=>{i(this,Te,void 0,"f"),i(this,we,n.profile,"f"),i(this,Ee,n.config,"f"),this.dispatchEvent({type:"change"}),e(t(this,we,"f"))})).catch(n)})),"f"),t(this,Te,"f")}))},Ue=function(i,n,r={}){return e(this,void 0,void 0,(function*(){t(this,ye,"f")&&(yield t(this,ye,"f")),n.startsWith("http")||(n=t(this,de,"f")+n),r.method=i,t(this,oe,"m",Ce).call(this,r);const e=yield t(this,se,"f").call(this,n,r);if(401===e.status)return t(this,oe,"m",ke).call(this,i,n,r);if(204===e.status||304===e.status)return;const o=yield e.json();return"OperationOutcome"!==o.resourceType||X(o)?o:Promise.reject(o)}))},Ce=function(e){e.headers||(e.headers={});const i=e.headers;i["Content-Type"]||(i["Content-Type"]="application/fhir+json"),t(this,ge,"f")&&(i.Authorization="Bearer "+t(this,ge,"f")),e.cache||(e.cache="no-cache"),e.credentials||(e.credentials="include")},Ae=function(e,t){e.headers||(e.headers={});e.headers["Content-Type"]=t},be=function(e,t){"string"==typeof t||"undefined"!=typeof File&&t instanceof File?e.body=t:t&&(e.body=C(t))},ke=function(i,n,r){return e(this,void 0,void 0,(function*(){return t(this,oe,"m",_e).call(this).then((()=>t(this,oe,"m",Ue).call(this,i,n,r))).catch((e=>(this.clear(),t(this,ve,"f")&&t(this,ve,"f").call(this),Promise.reject(e))))}))},Pe=function(){return e(this,void 0,void 0,(function*(){const i=j();t(this,ce,"f").setString("pkceState",i);const n=j();t(this,ce,"f").setString("codeVerifier",n);const r=I(yield function(t){return e(this,void 0,void 0,(function*(){return crypto.subtle.digest("SHA-256",(new TextEncoder).encode(t))}))}(n)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"");t(this,ce,"f").setString("codeChallenge",r)}))},Oe=function(){return e(this,void 0,void 0,(function*(){if(!t(this,le,"f"))return Promise.reject("Missing authorize URL");t(this,oe,"m",Pe).call(this),window.location.assign(t(this,le,"f")+"?response_type=code&state="+encodeURIComponent(t(this,ce,"f").getString("pkceState"))+"&client_id="+encodeURIComponent(t(this,he,"f"))+"&redirect_uri="+encodeURIComponent(Xe())+"&scope="+encodeURIComponent(Fe)+"&code_challenge_method=S256&code_challenge="+encodeURIComponent(t(this,ce,"f").getString("codeChallenge")))}))},_e=function(){return e(this,void 0,void 0,(function*(){return t(this,ye,"f")?t(this,ye,"f"):t(this,me,"f")?(i(this,ye,t(this,oe,"m",Ie).call(this,"grant_type=refresh_token&client_id="+encodeURIComponent(t(this,he,"f"))+"&refresh_token="+encodeURIComponent(t(this,me,"f"))),"f"),void(yield t(this,ye,"f"))):(this.clear(),Promise.reject("Invalid refresh token"))}))},Ie=function(i){return e(this,void 0,void 0,(function*(){return t(this,fe,"f")?t(this,se,"f").call(this,t(this,fe,"f"),{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:i}).then((e=>e.ok?e.json():Promise.reject("Failed to fetch tokens"))).then((e=>t(this,oe,"m",Me).call(this,e))).then((()=>this.getProfile())):Promise.reject("Missing token URL")}))},Me=function(i){return e(this,void 0,void 0,(function*(){const e=i.access_token,n=function(e){const[t,i,n]=e.split(".");return x(i)}(e);return Date.now()>=1e3*n.exp?(this.clear(),Promise.reject("Token expired")):t(this,he,"f")&&n.client_id!==t(this,he,"f")?(this.clear(),Promise.reject("Token was not issued for this audience")):void(yield this.setActiveLogin({accessToken:e,refreshToken:i.refresh_token,project:i.project,profile:i.profile}))}))},Le=function(){try{window.addEventListener("storage",(e=>{null!==e.key&&"activeLogin"!==e.key||window.location.reload()}))}catch(e){}};const Ve="\r",Ye="|",qe="^";class ze{constructor(e){this.segments=e}get(e){return"number"==typeof e?this.segments[e]:this.segments.find((t=>t.name===e))}getAll(e){return this.segments.filter((t=>t.name===e))}toString(){return this.segments.map((e=>e.toString())).join("\r")}buildAck(){var e,t,i,n,r,o;const s=new Date,c=this.get("MSH"),a=(null===(e=null==c?void 0:c.get(2))||void 0===e?void 0:e.toString())||"",u=(null===(t=null==c?void 0:c.get(3))||void 0===t?void 0:t.toString())||"",d=(null===(i=null==c?void 0:c.get(4))||void 0===i?void 0:i.toString())||"",h=(null===(n=null==c?void 0:c.get(5))||void 0===n?void 0:n.toString())||"",l=(null===(r=null==c?void 0:c.get(9))||void 0===r?void 0:r.toString())||"",f=(null===(o=null==c?void 0:c.get(12))||void 0===o?void 0:o.toString())||"2.5.1";return new ze([new Ge(["MSH","^~\\&",d,h,a,u,s.toISOString(),"","ACK",s.getTime().toString(),"P",f]),new Ge(["MSA","AA",l,"OK"])])}static parse(e){if(!e.startsWith("MSH|^~\\&")){const e=new Error("Invalid HL7 message");throw e.type="entity.parse.failed",e}return new ze(e.split(/[\r\n]+/).map((e=>Ge.parse(e))))}}class Ge{constructor(e){P(e)?this.fields=e.map((e=>Ke.parse(e))):this.fields=e,this.name=this.fields[0].components[0]}get(e){return this.fields[e]}toString(){return this.fields.map((e=>e.toString())).join("|")}static parse(e){return new Ge(e.split("|").map((e=>Ke.parse(e))))}}class Ke{constructor(e){this.components=e}get(e){return this.components[e]}toString(){return this.components.join("^")}static parse(e){return new Ke(e.split("^"))}}var Je,Ze;class et{constructor(e){Je.set(this,void 0),i(this,Je,e,"f")}createResource(i){return e(this,void 0,void 0,(function*(){try{const e=yield t(this,Je,"f").createResource(i);return[W,e]}catch(e){return[e,void 0]}}))}readResource(i,n){return e(this,void 0,void 0,(function*(){try{const e=yield t(this,Je,"f").readResource(i,n);return[D,e]}catch(e){return[e,void 0]}}))}readReference(i){return e(this,void 0,void 0,(function*(){try{const e=yield t(this,Je,"f").readReference(i);return[D,e]}catch(e){return[e,void 0]}}))}readHistory(i,n){return e(this,void 0,void 0,(function*(){try{const e=yield t(this,Je,"f").readHistory(i,n);return[D,e]}catch(e){return[e,void 0]}}))}readVersion(i,n,r){return e(this,void 0,void 0,(function*(){try{const e=yield t(this,Je,"f").readVersion(i,n,r);return[D,e]}catch(e){return[e,void 0]}}))}updateResource(i){return e(this,void 0,void 0,(function*(){try{const e=yield t(this,Je,"f").updateResource(i);return[D,e]}catch(e){return[e,void 0]}}))}deleteResource(i,n){return e(this,void 0,void 0,(function*(){try{return yield t(this,Je,"f").deleteResource(i,n),[D,void 0]}catch(e){return[e,void 0]}}))}patchResource(i,n,r){return e(this,void 0,void 0,(function*(){try{const e=yield t(this,Je,"f").patchResource(i,n,r);return[D,e]}catch(e){return[e,void 0]}}))}search(i){return e(this,void 0,void 0,(function*(){const e="string"==typeof i?ee(i):i;try{const i=yield t(this,Je,"f").search(e);return[D,i]}catch(e){return[e,void 0]}}))}}function tt(e,t,i){var n,r,o,s;if("_lastUpdated"===i.code)return{columnName:"lastUpdated",type:Ze.DATETIME};const c=i.code.split("-").reduce(((e,t,i)=>e+(i?M(t):t)),"");const a=null===(n=it(t,i.expression))||void 0===n?void 0:n.split(".");if(!a)return{columnName:c,type:Ze.TEXT};let u,d,h=t,l=!1;for(let t=1;t<a.length;t++){const i=a[t];if(u=null===(o=null===(r=e.types[h])||void 0===r?void 0:r.properties)||void 0===o?void 0:o[i],!u)return{columnName:c,type:Ze.TEXT,array:l};if("*"===u.max&&(l=!0),d=null===(s=u.type)||void 0===s?void 0:s[0].code,!d)return{columnName:c,type:Ze.TEXT,array:l};t<a.length-1&&("Element"===d||"BackboneElement"===d?h+=M(i):h=d)}const f=function(e,t){let i=Ze.TEXT;switch(e.type){case"date":i=Ze.DATE;break;case"number":i=Ze.NUMBER;break;case"quantity":i=Ze.QUANTITY;break;case"reference":i=Ze.REFERENCE;break;case"token":"boolean"===t&&(i=Ze.BOOLEAN)}return i}(i,d);return{columnName:c,type:f,elementDefinition:u,array:l}}function it(e,t){const i=t.split(" | ");for(const t of i){const i=nt(t);if(i.startsWith(e+"."))return i}}function nt(e){let t=e.trim();return t.startsWith("(")&&t.endsWith(")")&&(t=t.substring(1,t.length-1)),t.includes(" as ")&&(t=t.substring(0,t.indexOf(" as "))),t.includes(".where(")&&(t=t.substring(0,t.indexOf(".where("))),t}Je=new WeakMap,function(e){e.BOOLEAN="BOOLEAN",e.NUMBER="NUMBER",e.QUANTITY="QUANTITY",e.TEXT="TEXT",e.REFERENCE="REFERENCE",e.DATE="DATE",e.DATETIME="DATETIME",e.PERIOD="PERIOD"}(Ze||(Ze={}));export{qe as COMPONENT_SEPARATOR,Ye as FIELD_SEPARATOR,Ke as Hl7Field,ze as Hl7Message,Ge as Hl7Segment,et as LegacyRepositoryClient,Qe as MedplumClient,G as OperationOutcomeError,K as Operator,re as PropertyType,Ve as SEGMENT_SEPARATOR,Ze as SearchParameterType,F as accessDenied,D as allOk,I as arrayBufferToBase64,_ as arrayBufferToHex,z as assertOk,Q as badRequest,He as buildTypeName,w as calculateAge,E as calculateAgeString,M as capitalize,l as createReference,xe as createSchema,De as createTypeSchema,W as created,b as deepEquals,a as formatAddress,h as formatFamilyName,d as formatGivenName,u as formatHumanName,te as formatSearchQuery,T as getDateProperty,g as getDisplayString,it as getExpressionForResourceType,U as getExtensionValue,m as getImageSrc,$e as getPropertyDisplayName,S as getQuestionnaireAnswers,f as getReferenceString,tt as getSearchParameterDetails,q as getStatus,$ as gone,Be as indexSearchParameter,We as indexStructureDefinition,Y as isGone,L as isLowerCase,V as isNotFound,k as isObject,X as isOk,v as isProfileResource,P as isStringArray,H as notFound,B as notModified,ee as parseSearchDefinition,p as resolveId,C as stringify}; | ||
//# sourceMappingURL=index.min.js.map |
import { Binary, Bundle, Project, ProjectMembership, Reference, Resource, UserConfiguration, ValueSet } from '@medplum/fhirtypes'; | ||
import { Operation } from 'fast-json-patch'; | ||
import type { Operation } from 'fast-json-patch'; | ||
import { EventTarget } from './eventtarget'; | ||
@@ -4,0 +4,0 @@ import { SearchRequest } from './search'; |
export * from './client'; | ||
export * from './format'; | ||
export * from './hl7'; | ||
export * from './outcomes'; | ||
@@ -4,0 +5,0 @@ export * from './repo'; |
@@ -1,2 +0,2 @@ | ||
import { Patient, Practitioner, Reference, RelatedPerson, Resource } from '@medplum/fhirtypes'; | ||
import { Patient, Practitioner, QuestionnaireResponse, QuestionnaireResponseItemAnswer, Reference, RelatedPerson, Resource } from '@medplum/fhirtypes'; | ||
export declare type ProfileResource = Patient | Practitioner | RelatedPerson; | ||
@@ -69,2 +69,15 @@ /** | ||
/** | ||
* Returns all questionnaire answers as a map by link ID. | ||
* @param response The questionnaire response resource. | ||
* @returns Questionnaire answers mapped by link ID. | ||
*/ | ||
export declare function getQuestionnaireAnswers(response: QuestionnaireResponse): Record<string, QuestionnaireResponseItemAnswer>; | ||
/** | ||
* Returns an extension value by extension URLs. | ||
* @param resource The base resource. | ||
* @param urls Array of extension URLs. Each entry represents a nested extension. | ||
* @returns The extension value if found; undefined otherwise. | ||
*/ | ||
export declare function getExtensionValue(resource: Resource, ...urls: string[]): string | undefined; | ||
/** | ||
* FHIR JSON stringify. | ||
@@ -89,2 +102,14 @@ * Removes properties with empty string values. | ||
/** | ||
* Returns true if the input is an object. | ||
* @param object The candidate object. | ||
* @returns True if the input is a non-null non-undefined object. | ||
*/ | ||
export declare function isObject(obj: unknown): obj is object; | ||
/** | ||
* Returns true if the input array is an array of strings. | ||
* @param arr Input array. | ||
* @returns True if the input array is an array of strings. | ||
*/ | ||
export declare function isStringArray(arr: any[]): arr is string[]; | ||
/** | ||
* Converts an ArrayBuffer to hex string. | ||
@@ -91,0 +116,0 @@ * See: https://stackoverflow.com/a/55200387 |
{ | ||
"name": "@medplum/core", | ||
"version": "0.9.0", | ||
"version": "0.9.1", | ||
"description": "Medplum TS/JS Library", | ||
@@ -20,3 +20,3 @@ "author": "Medplum <hello@medplum.com>", | ||
"devDependencies": { | ||
"@medplum/fhirtypes": "0.9.0", | ||
"@medplum/fhirtypes": "0.9.1", | ||
"fast-json-patch": "3.1.1" | ||
@@ -23,0 +23,0 @@ }, |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
1000761
26
6982