@medplum/core 0.4.1 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cjs/index.js +53 -29
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index.min.js +1 -1
- package/dist/cjs/index.min.js.map +1 -1
- package/dist/esm/index.js +53 -30
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.min.js +1 -1
- package/dist/esm/index.min.js.map +1 -1
- package/dist/types/searchparams.d.ts +2 -1
- package/dist/types/types.d.ts +1 -0
- package/package.json +2 -2
package/dist/esm/index.min.js
CHANGED
|
@@ -12,5 +12,5 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
|
12
12
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
13
13
|
PERFORMANCE OF THIS SOFTWARE.
|
|
14
14
|
***************************************************************************** */
|
|
15
|
-
function e(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 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 a{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 c(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 h(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 u(e){const t=[];return e.given&&t.push(...e.given),t.join(" ").trim()}function l(e){return e.family||""}function d(e){const t=f(e),i=v(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 g(e){return"Patient"===e.resourceType||"Practitioner"===e.resourceType||"RelatedPerson"===e.resourceType}function v(e){if(g(e)){const t=function(e){const t=e.name;if(t&&t.length>0)return h(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"User"===e.resourceType&&e.email?e.email:"name"in e&&e.name&&"string"==typeof e.name?e.name:f(e)}function m(e){if(g(e)){const t=e.photo;if(t)for(const e of t)if(e.url&&e.contentType&&e.contentType.startsWith("image/"))return e.url}}function y(e){return e?new Date(e):void 0}function E(e,t){return JSON.stringify(e,w,t?2:void 0)}function w(e,t){return 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 T(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(R(n)&&R(r)){if(!T(n,r,i))return!1}else if(n!==r)return!1}return!0}function R(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 S=[];for(let e=0;e<256;e++)S.push(e.toString(16).padStart(2,"0"));function A(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 C(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 U(e){return e.charAt(0).toUpperCase()+e.substr(1)}function k(e){return e===e.toLowerCase()}function b(){const e=new Uint32Array(28);return crypto.getRandomValues(e),A(e.buffer)}var O;function P(e){const[t,i,n]=e.split(".");return function(e){const t=e.replace(/-/g,"+").replace(/_/g,"/"),i=window.atob(t),n=Array.from(i).reduce(((e,t)=>`${e}%${("00"+t.charCodeAt(0).toString(16)).slice(-2)}`),""),r=decodeURIComponent(n);return JSON.parse(r)}(i)}O=new WeakMap;const _={resourceType:"OperationOutcome",id:"ok",issue:[{severity:"information",code:"information",details:{text:"All OK"}}]},I={resourceType:"OperationOutcome",id:"created",issue:[{severity:"information",code:"information",details:{text:"Created"}}]},L={resourceType:"OperationOutcome",id:"not-modified",issue:[{severity:"information",code:"information",details:{text:"Not Modified"}}]},N={resourceType:"OperationOutcome",id:"not-found",issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},M={resourceType:"OperationOutcome",id:"gone",issue:[{severity:"error",code:"gone",details:{text:"Gone"}}]},x={resourceType:"OperationOutcome",id:"access-denied",issue:[{severity:"error",code:"access-denied",details:{text:"Access Denied"}}]};function j(e,t){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:e},expression:t?[t]:void 0}]}}function W(e){return"ok"===e.id||"created"===e.id||"not-modified"===e.id}function D(e){return"not-found"===e.id}function B(e){return"gone"===e.id}function H(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 Q(e,t){if(!W(e)||void 0===t)throw new $(e)}class $ 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 F;!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"}(F||(F={}));const X=[F.CONTAINS,F.EXACT,F.TEXT,F.ABOVE,F.BELOW,F.IN,F.NOT_IN,F.OF_TYPE],q=[F.NOT_EQUALS,F.GREATER_THAN,F.LESS_THAN,F.GREATER_THAN_OR_EQUALS,F.LESS_THAN_OR_EQUALS,F.STARTS_AFTER,F.ENDS_BEFORE,F.APPROXIMATELY];function z(e){const t=e.pathname.split("/").pop(),i=new URLSearchParams(e.search),n=[],r=[];let o,s,a=0,c=10;return i.forEach(((e,t)=>{"_fields"===t?o=e.split(","):"_page"===t?a=parseInt(e):"_count"===t?c=parseInt(e):"_total"===t?s=e:"_sort"===t?r.push(function(e){return e.startsWith("-")?{code:e.substring(1),descending:!0}:{code:e}}(e)):n.push(function(e,t){let i=e,n=F.EQUALS;for(const e of X){const t=i.indexOf(":"+e);-1!==t&&(n=e,i=i.substring(0,t))}for(const e of q)t.match(new RegExp("^"+e+"\\d"))&&(n=e,t=t.substring(e.length));return{code:i,operator:n,value:t}}(t,e))})),{resourceType:t,filters:n,fields:o,page:a,count:c,total:s,sortRules:r}}function G(e){const t=[];return e.fields&&t.push("_fields="+e.fields.join(",")),e.filters&&e.filters.forEach((e=>{const i=X.includes(e.operator)?":"+e.operator:"",n=q.includes(e.operator)?e.operator:"";t.push(`${e.code}${i}=${n}${encodeURIComponent(e.value)}`)})),e.sortRules&&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 V,Y,J,K,Z,ee,te,ie,ne,re,oe,se,ae,ce,he,ue,le,de,fe,pe,ge,ve,me,ye,Ee,we,Te,Re,Se,Ae,Ce;class Ue{constructor(){V.set(this,void 0),i(this,V,"undefined"!=typeof localStorage?localStorage:new ke,"f")}clear(){t(this,V,"f").clear()}getString(e){return t(this,V,"f").getItem(e)||void 0}setString(e,i){i?t(this,V,"f").setItem(e,i):t(this,V,"f").removeItem(e)}getObject(e){const t=this.getString(e);return t?JSON.parse(t):void 0}setObject(e,t){this.setString(e,t?E(t):void 0)}}V=new WeakMap;class ke{constructor(){Y.set(this,void 0),i(this,Y,new Map,"f")}get length(){return t(this,Y,"f").size}clear(){t(this,Y,"f").clear()}getItem(e){var i;return null!==(i=t(this,Y,"f").get(e))&&void 0!==i?i:null}setItem(e,i){i?t(this,Y,"f").set(e,i):t(this,Y,"f").delete(e)}removeItem(e){t(this,Y,"f").delete(e)}key(e){return Array.from(t(this,Y,"f").keys())[e]}}function be(){return{types:{}}}function Oe(e,t){var i;const n=t.name;if(!n)return;e.types[n]={display:n,description:t.description,properties:{}};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]={display:a,description:t.definition,parentType:_e(s.slice(0,s.length-1)),properties:{}})}(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 Pe(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(U).join("")}function Ie(e){return e.path.replaceAll("[x]","").split(".").pop().split(/(?=[A-Z])/).map(U).join(" ").replace("_"," ").replace(/\s+/g," ")}Y=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"}(J||(J={}));const Le="launch/patient openid fhirUser offline_access user/*.*";class Ne extends class{constructor(){O.set(this,void 0),i(this,O,{},"f")}addEventListener(e,i){t(this,O,"f")[e]||(t(this,O,"f")[e]=[]),t(this,O,"f")[e].push(i)}removeEventListeneer(e,i){const n=t(this,O,"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,O,"f")[e.type];return i&&i.forEach((t=>t.call(this,e))),!e.defaultPrevented}}{constructor(e){var n;if(super(),K.add(this),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),he.set(this,void 0),ue.set(this,void 0),le.set(this,void 0),de.set(this,void 0),fe.set(this,void 0),pe.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,Z,(null==e?void 0:e.fetch)||window.fetch.bind(window),"f"),i(this,ee,new Ue,"f"),i(this,te,{types:{}},"f"),i(this,ie,new a(null!==(n=null==e?void 0:e.resourceCacheSize)&&void 0!==n?n:1e3),"f"),i(this,ne,(null==e?void 0:e.baseUrl)||"https://api.medplum.com/","f"),i(this,re,(null==e?void 0:e.clientId)||"","f"),i(this,oe,(null==e?void 0:e.authorizeUrl)||t(this,ne,"f")+"oauth2/authorize","f"),i(this,se,(null==e?void 0:e.tokenUrl)||t(this,ne,"f")+"oauth2/token","f"),i(this,ae,(null==e?void 0:e.logoutUrl)||t(this,ne,"f")+"oauth2/logout","f"),i(this,ce,null==e?void 0:e.onUnauthenticated,"f");const r=this.getActiveLogin();r&&(i(this,he,r.accessToken,"f"),i(this,ue,r.refreshToken,"f"),t(this,K,"m",ve).call(this).catch(console.log)),t(this,K,"m",Ce).call(this)}clear(){t(this,ee,"f").clear(),t(this,ie,"f").clear(),i(this,he,void 0,"f"),i(this,ue,void 0,"f"),i(this,fe,void 0,"f"),i(this,pe,void 0,"f"),this.dispatchEvent({type:"change"})}get(e){return t(this,K,"m",me).call(this,"GET",e)}post(e,i,n){return t(this,K,"m",me).call(this,"POST",e,n,i)}put(e,i,n){return t(this,K,"m",me).call(this,"PUT",e,n,i)}delete(e){return t(this,K,"m",me).call(this,"DELETE",e)}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,K,"m",we).call(this),this.post("auth/login",{clientId:t(this,re,"f"),scope:Le,codeChallengeMethod:"S256",codeChallenge:t(this,ee,"f").getString("codeChallenge"),email:i,password:n,remember:!!r})}))}startGoogleLogin(i){return e(this,void 0,void 0,(function*(){return yield t(this,K,"m",we).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,K,"m",Te).call(this)}signOutWithRedirect(){window.location.assign(t(this,ae,"f"))}fhirUrl(...e){const i=[t(this,ne,"f"),"fhir/R4"];return e.forEach((e=>i.push("/",encodeURIComponent(e)))),i.join("")}search(e){return this.get(this.fhirUrl(e.resourceType)+G(e))}searchValueSet(e,t){return this.get(this.fhirUrl("ValueSet","$expand")+`?url=${encodeURIComponent(e)}`+`&filter=${encodeURIComponent(t)}`)}getCached(e,i){const n=t(this,ie,"f").get(e+"/"+i);if(n&&!("then"in n))return n}getCachedReference(e){const i=t(this,ie,"f").get(e.reference);if(i&&!("then"in i))return i}read(e,i){const n=e+"/"+i,r=this.get(this.fhirUrl(e,i)).then((e=>(t(this,ie,"f").set(n,e),e)));return t(this,ie,"f").set(n,r),r}readCached(e,i){const n=t(this,ie,"f").get(e+"/"+i);return n?Promise.resolve(n):this.read(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.read(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,te,"f")}requestSchema(i){return e(this,void 0,void 0,(function*(){if(i in t(this,te,"f").types)return Promise.resolve(t(this,te,"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 }\n }`.replace(/\s+/g," "),n=yield this.graphql(e);for(const e of n.data.StructureDefinitionList)Oe(t(this,te,"f"),e);for(const e of n.data.SearchParameterList)Pe(t(this,te,"f"),e);return t(this,te,"f")}))}readHistory(e,t){return this.get(this.fhirUrl(e,t,"_history"))}readPatientEverything(e){return this.get(this.fhirUrl("Patient",e,"$everything"))}create(e){if(!e.resourceType)throw new Error("Missing resourceType");return this.post(this.fhirUrl(e.resourceType),e)}createBinary(e,t,i){return this.post(this.fhirUrl("Binary")+"?_filename="+encodeURIComponent(t),e,i)}update(e){if(!e.resourceType)throw new Error("Missing resourceType");if(!e.id)throw new Error("Missing id");return this.put(this.fhirUrl(e.resourceType,e.id),e)}patch(e,i,n){return t(this,K,"m",me).call(this,"PATCH",this.fhirUrl(e,i),"application/json-patch+json",n)}deleteResource(e,t){return this.delete(this.fhirUrl(e,t))}graphql(e){return this.post(this.fhirUrl("$graphql"),{query:e},"application/json")}getActiveLogin(){return t(this,ee,"f").getObject("activeLogin")}setActiveLogin(n){return e(this,void 0,void 0,(function*(){i(this,he,n.accessToken,"f"),i(this,ue,n.refreshToken,"f"),i(this,fe,void 0,"f"),i(this,pe,void 0,"f"),t(this,ee,"f").setObject("activeLogin",n),t(this,K,"m",ge).call(this,n),t(this,ie,"f").clear(),i(this,le,void 0,"f"),yield t(this,K,"m",ve).call(this)}))}getLogins(){var e;return null!==(e=t(this,ee,"f").getObject("logins"))&&void 0!==e?e:[]}isLoading(){return!!t(this,de,"f")}getProfile(){return t(this,fe,"f")}getProfileAsync(){return e(this,void 0,void 0,(function*(){return t(this,de,"f")&&(yield t(this,de,"f")),this.getProfile()}))}getUserConfiguration(){return t(this,pe,"f")}download(i){return e(this,void 0,void 0,(function*(){t(this,le,"f")&&(yield t(this,le,"f"));const e=t(this,K,"m",ye).call(this,"GET");return(yield t(this,Z,"f").call(this,i,e)).blob()}))}processCode(e){if(!t(this,ee,"f").getString("pkceState"))throw this.clear(),new Error("Invalid PCKE state");const i=t(this,ee,"f").getString("codeVerifier");if(!i)throw this.clear(),new Error("Invalid PCKE code verifier");return t(this,K,"m",Se).call(this,"grant_type=authorization_code"+(t(this,re,"f")?"&client_id="+encodeURIComponent(t(this,re,"f")):"")+"&code_verifier="+encodeURIComponent(i)+"&redirect_uri="+encodeURIComponent(Me())+"&code="+encodeURIComponent(e))}}function Me(){return window.location.protocol+"//"+window.location.host+"/"}var xe;function je(e,t,i){var n,r,o,s;const a=i.code.split("-").reduce(((e,t,i)=>e+(i?U(t):t)),"");const c=null===(n=We(t,i.expression))||void 0===n?void 0:n.split(".");if(!c)return{columnName:a,type:xe.TEXT};let h,u=t,l=!1;for(let t=1;t<c.length;t++){const i=c[t],n=null===(o=null===(r=e.types[u])||void 0===r?void 0:r.properties)||void 0===o?void 0:o[i];if(!n)return{columnName:a,type:xe.TEXT,array:l};if("*"===n.max&&(l=!0),h=null===(s=n.type)||void 0===s?void 0:s[0].code,!h)return{columnName:a,type:xe.TEXT,array:l};t<c.length-1&&("Element"===h||"BackboneElement"===h?u+=U(i):u=h)}const d=function(e,t){let i=xe.TEXT;switch(e.type){case"date":i=xe.DATE;break;case"number":i=xe.NUMBER;break;case"quantity":i=xe.QUANTITY;break;case"reference":i=xe.REFERENCE;break;case"token":"boolean"===t&&(i=xe.BOOLEAN)}return i}(i,h);return{columnName:a,type:d,array:l}}function We(e,t){const i=t.split(" | ");for(const t of i){const i=De(t);if(i.startsWith(e+"."))return i}}function De(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}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,he=new WeakMap,ue=new WeakMap,le=new WeakMap,de=new WeakMap,fe=new WeakMap,pe=new WeakMap,K=new WeakSet,ge=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,ee,"f").setObject("logins",i)},ve=function(){return e(this,void 0,void 0,(function*(){return i(this,de,new Promise(((e,n)=>{this.get("auth/me").then((n=>{i(this,de,void 0,"f"),i(this,fe,n.profile,"f"),i(this,pe,n.config,"f"),this.dispatchEvent({type:"change"}),e(t(this,fe,"f"))})).catch(n)})),"f"),t(this,de,"f")}))},me=function(i,n,r,o){return e(this,void 0,void 0,(function*(){t(this,le,"f")&&(yield t(this,le,"f")),n.startsWith("http")||(n=t(this,ne,"f")+n);const e=t(this,K,"m",ye).call(this,i,r,o),s=yield t(this,Z,"f").call(this,n,e);if(401===s.status)return t(this,K,"m",Ee).call(this,i,n,r,o);if(204===s.status||304===s.status)return;const a=yield s.json();return"OperationOutcome"!==a.resourceType||W(a)?a:Promise.reject(a)}))},ye=function(e,i,n){const r={"Content-Type":i||"application/fhir+json"};t(this,he,"f")&&(r.Authorization="Bearer "+t(this,he,"f"));const o={method:e,cache:"no-cache",credentials:"include",headers:r};return n&&("string"==typeof n||"undefined"!=typeof File&&n instanceof File?o.body=n:o.body=E(n)),o},Ee=function(i,n,r,o){return e(this,void 0,void 0,(function*(){return t(this,K,"m",Re).call(this).then((()=>t(this,K,"m",me).call(this,i,n,r,o))).catch((e=>(this.clear(),t(this,ce,"f")&&t(this,ce,"f").call(this),Promise.reject(e))))}))},we=function(){return e(this,void 0,void 0,(function*(){const i=b();t(this,ee,"f").setString("pkceState",i);const n=b();t(this,ee,"f").setString("codeVerifier",n);const r=C(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,ee,"f").setString("codeChallenge",r)}))},Te=function(){return e(this,void 0,void 0,(function*(){if(!t(this,oe,"f"))throw new Error("Missing authorize URL");t(this,K,"m",we).call(this),window.location.assign(t(this,oe,"f")+"?response_type=code&state="+encodeURIComponent(t(this,ee,"f").getString("pkceState"))+"&client_id="+encodeURIComponent(t(this,re,"f"))+"&redirect_uri="+encodeURIComponent(Me())+"&scope="+encodeURIComponent(Le)+"&code_challenge_method=S256&code_challenge="+encodeURIComponent(t(this,ee,"f").getString("codeChallenge")))}))},Re=function(){return e(this,void 0,void 0,(function*(){return t(this,le,"f")?t(this,le,"f"):t(this,ue,"f")?(i(this,le,t(this,K,"m",Se).call(this,"grant_type=refresh_token&client_id="+encodeURIComponent(t(this,re,"f"))+"&refresh_token="+encodeURIComponent(t(this,ue,"f"))),"f"),void(yield t(this,le,"f"))):(this.clear(),Promise.reject("Invalid refresh token"))}))},Se=function(i){return e(this,void 0,void 0,(function*(){return t(this,se,"f")?t(this,Z,"f").call(this,t(this,se,"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,K,"m",Ae).call(this,e))).then((()=>this.getProfile())):Promise.reject("Missing token URL")}))},Ae=function(i){return e(this,void 0,void 0,(function*(){const e=i.access_token,n=P(e);return Date.now()>=1e3*n.exp?(this.clear(),Promise.reject("Token expired")):t(this,re,"f")&&n.client_id!==t(this,re,"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}))}))},Ce=function(){try{window.addEventListener("storage",(e=>{null!==e.key&&"activeLogin"!==e.key||window.location.reload()}))}catch(e){}},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"}(xe||(xe={}));export{Ne as MedplumClient,$ as OperationOutcomeError,F as Operator,J as PropertyType,xe as SearchParameterType,x as accessDenied,_ as allOk,C as arrayBufferToBase64,A as arrayBufferToHex,Q as assertOk,j as badRequest,_e as buildTypeName,U as capitalize,d as createReference,be as createSchema,I as created,T as deepEquals,c as formatAddress,l as formatFamilyName,u as formatGivenName,h as formatHumanName,G as formatSearchQuery,y as getDateProperty,v as getDisplayString,We as getExpressionForResourceType,m as getImageSrc,Ie as getPropertyDisplayName,f as getReferenceString,je as getSearchParameterDetails,H as getStatus,M as gone,Pe as indexSearchParameter,Oe as indexStructureDefinition,B as isGone,k as isLowerCase,D as isNotFound,W as isOk,g as isProfileResource,N as notFound,L as notModified,z as parseSearchDefinition,p as resolveId,E as stringify};
|
|
15
|
+
function e(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 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 a{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 c(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 l(e){return e.family||""}function d(e){const t=f(e),i=v(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 g(e){return"Patient"===e.resourceType||"Practitioner"===e.resourceType||"RelatedPerson"===e.resourceType}function v(e){if(g(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"User"===e.resourceType&&e.email?e.email:"name"in e&&e.name&&"string"==typeof e.name?e.name:f(e)}function m(e){if(g(e)){const t=e.photo;if(t)for(const e of t)if(e.url&&e.contentType&&e.contentType.startsWith("image/"))return e.url}}function y(e){return e?new Date(e):void 0}function E(e,t){return JSON.stringify(e,w,t?2:void 0)}function w(e,t){return 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 T(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(R(n)&&R(r)){if(!T(n,r,i))return!1}else if(n!==r)return!1}return!0}function R(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 S=[];for(let e=0;e<256;e++)S.push(e.toString(16).padStart(2,"0"));function A(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 U(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 C(e){return e.charAt(0).toUpperCase()+e.substr(1)}function k(e){return e===e.toLowerCase()}function b(){const e=new Uint32Array(28);return crypto.getRandomValues(e),A(e.buffer)}var O;function _(e){const[t,i,n]=e.split(".");return function(e){const t=e.replace(/-/g,"+").replace(/_/g,"/"),i=window.atob(t),n=Array.from(i).reduce(((e,t)=>`${e}%${("00"+t.charCodeAt(0).toString(16)).slice(-2)}`),""),r=decodeURIComponent(n);return JSON.parse(r)}(i)}O=new WeakMap;const P={resourceType:"OperationOutcome",id:"ok",issue:[{severity:"information",code:"information",details:{text:"All OK"}}]},I={resourceType:"OperationOutcome",id:"created",issue:[{severity:"information",code:"information",details:{text:"Created"}}]},L={resourceType:"OperationOutcome",id:"not-modified",issue:[{severity:"information",code:"information",details:{text:"Not Modified"}}]},N={resourceType:"OperationOutcome",id:"not-found",issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},M={resourceType:"OperationOutcome",id:"gone",issue:[{severity:"error",code:"gone",details:{text:"Gone"}}]},x={resourceType:"OperationOutcome",id:"access-denied",issue:[{severity:"error",code:"access-denied",details:{text:"Access Denied"}}]};function j(e,t){return{resourceType:"OperationOutcome",issue:[{severity:"error",code:"invalid",details:{text:e},expression:t?[t]:void 0}]}}function D(e){return"ok"===e.id||"created"===e.id||"not-modified"===e.id}function W(e){return"not-found"===e.id}function B(e){return"gone"===e.id}function $(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 H(e,t){if(!D(e)||void 0===t)throw new Q(e)}class Q 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 F;!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"}(F||(F={}));const X=[F.CONTAINS,F.EXACT,F.TEXT,F.ABOVE,F.BELOW,F.IN,F.NOT_IN,F.OF_TYPE],q=[F.NOT_EQUALS,F.GREATER_THAN,F.LESS_THAN,F.GREATER_THAN_OR_EQUALS,F.LESS_THAN_OR_EQUALS,F.STARTS_AFTER,F.ENDS_BEFORE,F.APPROXIMATELY];function z(e){const t=e.pathname.replace(/(^\/)|(\/$)/g,"").split("/").pop();let i,n,r,o,s,a;return new URLSearchParams(e.search).forEach(((e,t)=>{"_fields"===t?r=e.split(","):"_page"===t?o=parseInt(e):"_count"===t?s=parseInt(e):"_total"===t?a=e:"_sort"===t?(n=n||[],n.push(function(e){return e.startsWith("-")?{code:e.substring(1),descending:!0}:{code:e}}(e))):(i=i||[],i.push(function(e,t){let i=e,n=F.EQUALS;for(const e of X){const t=i.indexOf(":"+e);-1!==t&&(n=e,i=i.substring(0,t))}for(const e of q)t.match(new RegExp("^"+e+"\\d"))&&(n=e,t=t.substring(e.length));return{code:i,operator:n,value:t}}(t,e)))})),{resourceType:t,filters:i,fields:r,page:o,count:s,total:a,sortRules:n}}function G(e){const t=[];return e.fields&&t.push("_fields="+e.fields.join(",")),e.filters&&e.filters.forEach((e=>t.push(function(e){const t=X.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 V,Y,J,K,Z,ee,te,ie,ne,re,oe,se,ae,ce,ue,he,le,de,fe,pe,ge,ve,me,ye,Ee,we,Te,Re,Se,Ae,Ue;class Ce{constructor(){V.set(this,void 0),i(this,V,"undefined"!=typeof localStorage?localStorage:new ke,"f")}clear(){t(this,V,"f").clear()}getString(e){return t(this,V,"f").getItem(e)||void 0}setString(e,i){i?t(this,V,"f").setItem(e,i):t(this,V,"f").removeItem(e)}getObject(e){const t=this.getString(e);return t?JSON.parse(t):void 0}setObject(e,t){this.setString(e,t?E(t):void 0)}}V=new WeakMap;class ke{constructor(){Y.set(this,void 0),i(this,Y,new Map,"f")}get length(){return t(this,Y,"f").size}clear(){t(this,Y,"f").clear()}getItem(e){var i;return null!==(i=t(this,Y,"f").get(e))&&void 0!==i?i:null}setItem(e,i){i?t(this,Y,"f").set(e,i):t(this,Y,"f").delete(e)}removeItem(e){t(this,Y,"f").delete(e)}key(e){return Array.from(t(this,Y,"f").keys())[e]}}function be(){return{types:{}}}function Oe(e,t){return{display:e,description:t,properties:{},searchParams:{_lastUpdated:{base:[e],code:"_lastUpdated",type:"date",expression:e+".meta.lastUpdated"}}}}function _e(e,t){var i;const n=t.name;if(!n)return;e.types[n]=Oe(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=Ie(s);a in e.types||(e.types[a]=Oe(a,t.definition),e.types[a].parentType=Ie(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=Ie(i.slice(0,i.length-1)),r=e.types[n],o=i[i.length-1];r.properties[o]=t}(e,t)))}}function Pe(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 Ie(e){return e.map(C).join("")}function Le(e){const t=e.path.replaceAll("[x]","").split(".").pop();return"id"===t?"ID":t.split(/(?=[A-Z])/).map(C).join(" ").replace("_"," ").replace(/\s+/g," ")}Y=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"}(J||(J={}));const Ne="launch/patient openid fhirUser offline_access user/*.*";class Me extends class{constructor(){O.set(this,void 0),i(this,O,{},"f")}addEventListener(e,i){t(this,O,"f")[e]||(t(this,O,"f")[e]=[]),t(this,O,"f")[e].push(i)}removeEventListeneer(e,i){const n=t(this,O,"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,O,"f")[e.type];return i&&i.forEach((t=>t.call(this,e))),!e.defaultPrevented}}{constructor(e){var n;if(super(),K.add(this),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),he.set(this,void 0),le.set(this,void 0),de.set(this,void 0),fe.set(this,void 0),pe.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,Z,(null==e?void 0:e.fetch)||window.fetch.bind(window),"f"),i(this,ee,new Ce,"f"),i(this,te,{types:{}},"f"),i(this,ie,new a(null!==(n=null==e?void 0:e.resourceCacheSize)&&void 0!==n?n:1e3),"f"),i(this,ne,(null==e?void 0:e.baseUrl)||"https://api.medplum.com/","f"),i(this,re,(null==e?void 0:e.clientId)||"","f"),i(this,oe,(null==e?void 0:e.authorizeUrl)||t(this,ne,"f")+"oauth2/authorize","f"),i(this,se,(null==e?void 0:e.tokenUrl)||t(this,ne,"f")+"oauth2/token","f"),i(this,ae,(null==e?void 0:e.logoutUrl)||t(this,ne,"f")+"oauth2/logout","f"),i(this,ce,null==e?void 0:e.onUnauthenticated,"f");const r=this.getActiveLogin();r&&(i(this,ue,r.accessToken,"f"),i(this,he,r.refreshToken,"f"),t(this,K,"m",ve).call(this).catch(console.log)),t(this,K,"m",Ue).call(this)}clear(){t(this,ee,"f").clear(),t(this,ie,"f").clear(),i(this,ue,void 0,"f"),i(this,he,void 0,"f"),i(this,fe,void 0,"f"),i(this,pe,void 0,"f"),this.dispatchEvent({type:"change"})}get(e){return t(this,K,"m",me).call(this,"GET",e)}post(e,i,n){return t(this,K,"m",me).call(this,"POST",e,n,i)}put(e,i,n){return t(this,K,"m",me).call(this,"PUT",e,n,i)}delete(e){return t(this,K,"m",me).call(this,"DELETE",e)}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,K,"m",we).call(this),this.post("auth/login",{clientId:t(this,re,"f"),scope:Ne,codeChallengeMethod:"S256",codeChallenge:t(this,ee,"f").getString("codeChallenge"),email:i,password:n,remember:!!r})}))}startGoogleLogin(i){return e(this,void 0,void 0,(function*(){return yield t(this,K,"m",we).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,K,"m",Te).call(this)}signOutWithRedirect(){window.location.assign(t(this,ae,"f"))}fhirUrl(...e){const i=[t(this,ne,"f"),"fhir/R4"];return e.forEach((e=>i.push("/",encodeURIComponent(e)))),i.join("")}search(e){return this.get(this.fhirUrl(e.resourceType)+G(e))}searchValueSet(e,t){return this.get(this.fhirUrl("ValueSet","$expand")+`?url=${encodeURIComponent(e)}`+`&filter=${encodeURIComponent(t)}`)}getCached(e,i){const n=t(this,ie,"f").get(e+"/"+i);if(n&&!("then"in n))return n}getCachedReference(e){const i=t(this,ie,"f").get(e.reference);if(i&&!("then"in i))return i}read(e,i){const n=e+"/"+i,r=this.get(this.fhirUrl(e,i)).then((e=>(t(this,ie,"f").set(n,e),e)));return t(this,ie,"f").set(n,r),r}readCached(e,i){const n=t(this,ie,"f").get(e+"/"+i);return n?Promise.resolve(n):this.read(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.read(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,te,"f")}requestSchema(i){return e(this,void 0,void 0,(function*(){if(i in t(this,te,"f").types)return Promise.resolve(t(this,te,"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)_e(t(this,te,"f"),e);for(const e of n.data.SearchParameterList)Pe(t(this,te,"f"),e);return t(this,te,"f")}))}readHistory(e,t){return this.get(this.fhirUrl(e,t,"_history"))}readPatientEverything(e){return this.get(this.fhirUrl("Patient",e,"$everything"))}create(e){if(!e.resourceType)throw new Error("Missing resourceType");return this.post(this.fhirUrl(e.resourceType),e)}createBinary(e,t,i){return this.post(this.fhirUrl("Binary")+"?_filename="+encodeURIComponent(t),e,i)}update(e){if(!e.resourceType)throw new Error("Missing resourceType");if(!e.id)throw new Error("Missing id");return this.put(this.fhirUrl(e.resourceType,e.id),e)}patch(e,i,n){return t(this,K,"m",me).call(this,"PATCH",this.fhirUrl(e,i),"application/json-patch+json",n)}deleteResource(e,t){return this.delete(this.fhirUrl(e,t))}graphql(e){return this.post(this.fhirUrl("$graphql"),{query:e},"application/json")}getActiveLogin(){return t(this,ee,"f").getObject("activeLogin")}setActiveLogin(n){return e(this,void 0,void 0,(function*(){i(this,ue,n.accessToken,"f"),i(this,he,n.refreshToken,"f"),i(this,fe,void 0,"f"),i(this,pe,void 0,"f"),t(this,ee,"f").setObject("activeLogin",n),t(this,K,"m",ge).call(this,n),t(this,ie,"f").clear(),i(this,le,void 0,"f"),yield t(this,K,"m",ve).call(this)}))}getLogins(){var e;return null!==(e=t(this,ee,"f").getObject("logins"))&&void 0!==e?e:[]}isLoading(){return!!t(this,de,"f")}getProfile(){return t(this,fe,"f")}getProfileAsync(){return e(this,void 0,void 0,(function*(){return t(this,de,"f")&&(yield t(this,de,"f")),this.getProfile()}))}getUserConfiguration(){return t(this,pe,"f")}download(i){return e(this,void 0,void 0,(function*(){t(this,le,"f")&&(yield t(this,le,"f"));const e=t(this,K,"m",ye).call(this,"GET");return(yield t(this,Z,"f").call(this,i,e)).blob()}))}processCode(e){if(!t(this,ee,"f").getString("pkceState"))throw this.clear(),new Error("Invalid PCKE state");const i=t(this,ee,"f").getString("codeVerifier");if(!i)throw this.clear(),new Error("Invalid PCKE code verifier");return t(this,K,"m",Se).call(this,"grant_type=authorization_code"+(t(this,re,"f")?"&client_id="+encodeURIComponent(t(this,re,"f")):"")+"&code_verifier="+encodeURIComponent(i)+"&redirect_uri="+encodeURIComponent(xe())+"&code="+encodeURIComponent(e))}}function xe(){return window.location.protocol+"//"+window.location.host+"/"}var je;function De(e,t,i){var n,r,o,s;if("_lastUpdated"===i.code)return{columnName:"lastUpdated",type:je.DATETIME};const a=i.code.split("-").reduce(((e,t,i)=>e+(i?C(t):t)),"");const c=null===(n=We(t,i.expression))||void 0===n?void 0:n.split(".");if(!c)return{columnName:a,type:je.TEXT};let u,h,l=t,d=!1;for(let t=1;t<c.length;t++){const i=c[t];if(u=null===(o=null===(r=e.types[l])||void 0===r?void 0:r.properties)||void 0===o?void 0:o[i],!u)return{columnName:a,type:je.TEXT,array:d};if("*"===u.max&&(d=!0),h=null===(s=u.type)||void 0===s?void 0:s[0].code,!h)return{columnName:a,type:je.TEXT,array:d};t<c.length-1&&("Element"===h||"BackboneElement"===h?l+=C(i):l=h)}const f=function(e,t){let i=je.TEXT;switch(e.type){case"date":i=je.DATE;break;case"number":i=je.NUMBER;break;case"quantity":i=je.QUANTITY;break;case"reference":i=je.REFERENCE;break;case"token":"boolean"===t&&(i=je.BOOLEAN)}return i}(i,h);return{columnName:a,type:f,elementDefinition:u,array:d}}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}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,he=new WeakMap,le=new WeakMap,de=new WeakMap,fe=new WeakMap,pe=new WeakMap,K=new WeakSet,ge=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,ee,"f").setObject("logins",i)},ve=function(){return e(this,void 0,void 0,(function*(){return i(this,de,new Promise(((e,n)=>{this.get("auth/me").then((n=>{i(this,de,void 0,"f"),i(this,fe,n.profile,"f"),i(this,pe,n.config,"f"),this.dispatchEvent({type:"change"}),e(t(this,fe,"f"))})).catch(n)})),"f"),t(this,de,"f")}))},me=function(i,n,r,o){return e(this,void 0,void 0,(function*(){t(this,le,"f")&&(yield t(this,le,"f")),n.startsWith("http")||(n=t(this,ne,"f")+n);const e=t(this,K,"m",ye).call(this,i,r,o),s=yield t(this,Z,"f").call(this,n,e);if(401===s.status)return t(this,K,"m",Ee).call(this,i,n,r,o);if(204===s.status||304===s.status)return;const a=yield s.json();return"OperationOutcome"!==a.resourceType||D(a)?a:Promise.reject(a)}))},ye=function(e,i,n){const r={"Content-Type":i||"application/fhir+json"};t(this,ue,"f")&&(r.Authorization="Bearer "+t(this,ue,"f"));const o={method:e,cache:"no-cache",credentials:"include",headers:r};return n&&("string"==typeof n||"undefined"!=typeof File&&n instanceof File?o.body=n:o.body=E(n)),o},Ee=function(i,n,r,o){return e(this,void 0,void 0,(function*(){return t(this,K,"m",Re).call(this).then((()=>t(this,K,"m",me).call(this,i,n,r,o))).catch((e=>(this.clear(),t(this,ce,"f")&&t(this,ce,"f").call(this),Promise.reject(e))))}))},we=function(){return e(this,void 0,void 0,(function*(){const i=b();t(this,ee,"f").setString("pkceState",i);const n=b();t(this,ee,"f").setString("codeVerifier",n);const r=U(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,ee,"f").setString("codeChallenge",r)}))},Te=function(){return e(this,void 0,void 0,(function*(){if(!t(this,oe,"f"))throw new Error("Missing authorize URL");t(this,K,"m",we).call(this),window.location.assign(t(this,oe,"f")+"?response_type=code&state="+encodeURIComponent(t(this,ee,"f").getString("pkceState"))+"&client_id="+encodeURIComponent(t(this,re,"f"))+"&redirect_uri="+encodeURIComponent(xe())+"&scope="+encodeURIComponent(Ne)+"&code_challenge_method=S256&code_challenge="+encodeURIComponent(t(this,ee,"f").getString("codeChallenge")))}))},Re=function(){return e(this,void 0,void 0,(function*(){return t(this,le,"f")?t(this,le,"f"):t(this,he,"f")?(i(this,le,t(this,K,"m",Se).call(this,"grant_type=refresh_token&client_id="+encodeURIComponent(t(this,re,"f"))+"&refresh_token="+encodeURIComponent(t(this,he,"f"))),"f"),void(yield t(this,le,"f"))):(this.clear(),Promise.reject("Invalid refresh token"))}))},Se=function(i){return e(this,void 0,void 0,(function*(){return t(this,se,"f")?t(this,Z,"f").call(this,t(this,se,"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,K,"m",Ae).call(this,e))).then((()=>this.getProfile())):Promise.reject("Missing token URL")}))},Ae=function(i){return e(this,void 0,void 0,(function*(){const e=i.access_token,n=_(e);return Date.now()>=1e3*n.exp?(this.clear(),Promise.reject("Token expired")):t(this,re,"f")&&n.client_id!==t(this,re,"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}))}))},Ue=function(){try{window.addEventListener("storage",(e=>{null!==e.key&&"activeLogin"!==e.key||window.location.reload()}))}catch(e){}},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"}(je||(je={}));export{Me as MedplumClient,Q as OperationOutcomeError,F as Operator,J as PropertyType,je as SearchParameterType,x as accessDenied,P as allOk,U as arrayBufferToBase64,A as arrayBufferToHex,H as assertOk,j as badRequest,Ie as buildTypeName,C as capitalize,d as createReference,be as createSchema,Oe as createTypeSchema,I as created,T as deepEquals,c as formatAddress,l as formatFamilyName,h as formatGivenName,u as formatHumanName,G as formatSearchQuery,y as getDateProperty,v as getDisplayString,We as getExpressionForResourceType,m as getImageSrc,Le as getPropertyDisplayName,f as getReferenceString,De as getSearchParameterDetails,$ as getStatus,M as gone,Pe as indexSearchParameter,_e as indexStructureDefinition,B as isGone,k as isLowerCase,W as isNotFound,D as isOk,g as isProfileResource,N as notFound,L as notModified,z as parseSearchDefinition,p as resolveId,E as stringify};
|
|
16
16
|
//# sourceMappingURL=index.min.js.map
|