UNPKG

fhirclient-pkce

Version:

JavaScript client for Fast Healthcare Interoperability Resources

1 lines 232 kB
(()=>{var e={8926:e=>{function t(e,t,r,n,o,a,i){try{var s=e[a](i),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,o)}e.exports=function(e){return function(){var r=this,n=arguments;return new Promise((function(o,a){var i=e.apply(r,n);function s(e){t(i,o,a,s,c,"next",e)}function c(e){t(i,o,a,s,c,"throw",e)}s(void 0)}))}},e.exports.default=e.exports,e.exports.__esModule=!0},9100:(e,t,r)=>{var n=r(9489),o=r(7067);function a(t,r,i){return o()?(e.exports=a=Reflect.construct,e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=a=function(e,t,r){var o=[null];o.push.apply(o,t);var a=new(Function.bind.apply(e,o));return r&&n(a,r.prototype),a},e.exports.default=e.exports,e.exports.__esModule=!0),a.apply(null,arguments)}e.exports=a,e.exports.default=e.exports,e.exports.__esModule=!0},3913:e=>{function t(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}e.exports=function(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e},e.exports.default=e.exports,e.exports.__esModule=!0},9754:e=>{function t(r){return e.exports=t=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},e.exports.default=e.exports,e.exports.__esModule=!0,t(r)}e.exports=t,e.exports.default=e.exports,e.exports.__esModule=!0},5354:(e,t,r)=>{var n=r(9489);e.exports=function(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,n(e,t)},e.exports.default=e.exports,e.exports.__esModule=!0},5318:e=>{e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.default=e.exports,e.exports.__esModule=!0},430:e=>{e.exports=function(e){return-1!==Function.toString.call(e).indexOf("[native code]")},e.exports.default=e.exports,e.exports.__esModule=!0},7067:e=>{e.exports=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}},e.exports.default=e.exports,e.exports.__esModule=!0},7316:e=>{e.exports=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o},e.exports.default=e.exports,e.exports.__esModule=!0},9489:e=>{function t(r,n){return e.exports=t=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},e.exports.default=e.exports,e.exports.__esModule=!0,t(r,n)}e.exports=t,e.exports.default=e.exports,e.exports.__esModule=!0},5957:(e,t,r)=>{var n=r(9754),o=r(9489),a=r(430),i=r(9100);function s(t){var r="function"==typeof Map?new Map:void 0;return e.exports=s=function(e){if(null===e||!a(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==r){if(r.has(e))return r.get(e);r.set(e,t)}function t(){return i(e,arguments,n(this).constructor)}return t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),o(t,e)},e.exports.default=e.exports,e.exports.__esModule=!0,s(t)}e.exports=s,e.exports.default=e.exports,e.exports.__esModule=!0},7757:(e,t,r)=>{e.exports=r(5666)},6486:(e,t,r)=>{var n;void 0===(n=function(){"use strict";function e(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function t(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function n(e,r,n){return r&&t(e.prototype,r),n&&t(e,n),e}function o(e){return o=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},o(e)}function a(e,t){return a=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},a(e,t)}function i(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function s(e,t){return!t||"object"!=typeof t&&"function"!=typeof t?i(e):t}function c(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=o(e);if(t){var a=o(this).constructor;r=Reflect.construct(n,arguments,a)}else r=n.apply(this,arguments);return s(this,r)}}function u(e,t,r){return u="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,r){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=o(e)););return e}(e,t);if(n){var a=Object.getOwnPropertyDescriptor(n,t);return a.get?a.get.call(r):a.value}},u(e,t,r||e)}var l=function(){function t(){e(this,t),Object.defineProperty(this,"listeners",{value:{},writable:!0,configurable:!0})}return n(t,[{key:"addEventListener",value:function(e,t,r){e in this.listeners||(this.listeners[e]=[]),this.listeners[e].push({callback:t,options:r})}},{key:"removeEventListener",value:function(e,t){if(e in this.listeners)for(var r=this.listeners[e],n=0,o=r.length;n<o;n++)if(r[n].callback===t)return void r.splice(n,1)}},{key:"dispatchEvent",value:function(e){if(e.type in this.listeners){for(var t=this.listeners[e.type].slice(),r=0,n=t.length;r<n;r++){var o=t[r];try{o.callback.call(this,e)}catch(e){Promise.resolve().then((function(){throw e}))}o.options&&o.options.once&&this.removeEventListener(e.type,o.callback)}return!e.defaultPrevented}}}]),t}(),d=function(t){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&a(e,t)}(s,t);var r=c(s);function s(){var t;return e(this,s),(t=r.call(this)).listeners||l.call(i(t)),Object.defineProperty(i(t),"aborted",{value:!1,writable:!0,configurable:!0}),Object.defineProperty(i(t),"onabort",{value:null,writable:!0,configurable:!0}),t}return n(s,[{key:"toString",value:function(){return"[object AbortSignal]"}},{key:"dispatchEvent",value:function(e){"abort"===e.type&&(this.aborted=!0,"function"==typeof this.onabort&&this.onabort.call(this,e)),u(o(s.prototype),"dispatchEvent",this).call(this,e)}}]),s}(l),f=function(){function t(){e(this,t),Object.defineProperty(this,"signal",{value:new d,writable:!0,configurable:!0})}return n(t,[{key:"abort",value:function(){var e;try{e=new Event("abort")}catch(t){"undefined"!=typeof document?document.createEvent?(e=document.createEvent("Event")).initEvent("abort",!1,!1):(e=document.createEventObject()).type="abort":e={type:"abort",bubbles:!1,cancelable:!1}}this.signal.dispatchEvent(e)}},{key:"toString",value:function(){return"[object AbortController]"}}]),t}();"undefined"!=typeof Symbol&&Symbol.toStringTag&&(f.prototype[Symbol.toStringTag]="AbortController",d.prototype[Symbol.toStringTag]="AbortSignal"),function(e){(function(e){return e.__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL?(console.log("__FORCE_INSTALL_ABORTCONTROLLER_POLYFILL=true is set, will force install polyfill"),!0):"function"==typeof e.Request&&!e.Request.prototype.hasOwnProperty("signal")||!e.AbortController})(e)&&(e.AbortController=f,e.AbortSignal=d)}("undefined"!=typeof self?self:r.g)}.call(t,r,t,e))||(e.exports=n)},866:(e,t,r)=>{"use strict";var n;r(4916),r(4723),r(4603),r(9714),r(561),r(5306),t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),this.useColors){var r="color: "+this.color;t.splice(1,0,r,"color: inherit");var n=0,o=0;t[0].replace(/%[a-zA-Z%]/g,(function(e){"%%"!==e&&(n++,"%c"===e&&(o=n))})),t.splice(o,0,r)}},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){var e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(n=!1,function(){n||(n=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||function(){},e.exports=r(9956)(t),e.exports.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},9956:(e,t,r)=>{"use strict";r(4747),r(7941),r(9653),r(4916),r(5306),r(561),r(3123),r(4603),r(9714),r(9600),r(2222),r(1249),r(1539),e.exports=function(e){function t(e){var r,o,a,i=null;function s(){for(var e=arguments.length,n=new Array(e),o=0;o<e;o++)n[o]=arguments[o];if(s.enabled){var a=s,i=Number(new Date),c=i-(r||i);a.diff=c,a.prev=r,a.curr=i,r=i,n[0]=t.coerce(n[0]),"string"!=typeof n[0]&&n.unshift("%O");var u=0;n[0]=n[0].replace(/%([a-zA-Z%])/g,(function(e,r){if("%%"===e)return"%";u++;var o=t.formatters[r];if("function"==typeof o){var i=n[u];e=o.call(a,i),n.splice(u,1),u--}return e})),t.formatArgs.call(a,n);var l=a.log||t.log;l.apply(a,n)}}return s.namespace=e,s.useColors=t.useColors(),s.color=t.selectColor(e),s.extend=n,s.destroy=t.destroy,Object.defineProperty(s,"enabled",{enumerable:!0,configurable:!1,get:function(){return null!==i?i:(o!==t.namespaces&&(o=t.namespaces,a=t.enabled(e)),a)},set:function(e){i=e}}),"function"==typeof t.init&&t.init(s),s}function n(e,r){var n=t(this.namespace+(void 0===r?":":r)+e);return n.log=this.log,n}function o(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){var e=[].concat(t.names.map(o),t.skips.map(o).map((function(e){return"-"+e}))).join(",");return t.enable(""),e},t.enable=function(e){var r;t.save(e),t.namespaces=e,t.names=[],t.skips=[];var n=("string"==typeof e?e:"").split(/[\s,]+/),o=n.length;for(r=0;r<o;r++)n[r]&&("-"===(e=n[r].replace(/\*/g,".*?"))[0]?t.skips.push(new RegExp("^"+e.substr(1)+"$")):t.names.push(new RegExp("^"+e+"$")))},t.enabled=function(e){if("*"===e[e.length-1])return!0;var r,n;for(r=0,n=t.skips.length;r<n;r++)if(t.skips[r].test(e))return!1;for(r=0,n=t.names.length;r<n;r++)if(t.names[r].test(e))return!0;return!1},t.humanize=r(7824),t.destroy=function(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")},Object.keys(e).forEach((function(r){t[r]=e[r]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){for(var r=0,n=0;n<e.length;n++)r=(r<<5)-r+e.charCodeAt(n),r|=0;return t.colors[Math.abs(r)%t.colors.length]},t.enable(t.load()),t}},9071:(e,t,r)=>{"use strict";var n=r(5318),o=n(r(7757));r(1539),r(8674),r(6992),r(8783),r(3948),r(1249),r(7327),r(4916),r(5306),r(3210),r(4747),r(3123),r(2707),r(7941),r(4723),r(9601),r(9600),r(7042),r(285),r(4944),r(9254),r(9826),r(2222),r(4765),r(7727);var a=n(r(8926));Object.defineProperty(t,"__esModule",{value:!0});var i=r(6966),s=r(2088),c=r(7691),u=("undefined"!=typeof FHIRCLIENT_PURE?window:r(4098)).Response,l=i.debug.extend("client");function d(e,t){return f.apply(this,arguments)}function f(){return f=(0,a.default)(o.default.mark((function e(t,r){var n,s,u;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(u=function(){return(u=(0,a.default)(o.default.mark((function e(t){var n,a,s;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.pathname.split("/").pop(),i.assert(n,'Invalid url "'+t+'"'),i.assert(c.patientCompartment.indexOf(n)>-1,'Cannot filter "'+n+'" resources by patient'),e.next=5,i.fetchConformanceStatement(r.state.serverUrl);case 5:return a=e.sent,s=i.getPatientParam(a,n),t.searchParams.set(s,r.patient.id),e.abrupt("return",t.href);case 9:case"end":return e.stop()}}),e)})))).apply(this,arguments)},s=function(e){return u.apply(this,arguments)},n=i.absolute("/",r.state.serverUrl),!("string"==typeof t||t instanceof URL)){e.next=8;break}return e.next=6,s(new URL(t+"",n));case 6:return e.t0=e.sent,e.abrupt("return",{url:e.t0});case 8:return e.next=10,s(new URL(t.url+"",n));case 10:return t.url=e.sent,e.abrupt("return",t);case 12:case"end":return e.stop()}}),e)}))),f.apply(this,arguments)}function p(e,t,r,n,o){var a=i.makeArray(t.resolveReferences).filter(Boolean).map((function(e){return String(e).trim()})).filter(Boolean);if(!(a=a.filter((function(e,t){return!(a.indexOf(e,t+1)>-1&&(l('Duplicated reference path "%s"',e),1))}))).length)return Promise.resolve();var s={};a.forEach((function(e){var t=e.split(".").length;s[t]||(s[t]=[]),s[t].push(e)}));var c=Promise.resolve();return Object.keys(s).sort().forEach((function(a){var u=s[a];c=c.then((function(){return Promise.all(u.map((function(a){return function(e,t,r,n,o,a){var s=i.getPath(e,t);if(s){var c=Array.isArray(s);return Promise.all(i.makeArray(s).filter(Boolean).map((function(s,u){var l=s.reference;if(l)return function(e,t,r,n){return t[e]||(t[e]=r.request({url:e,signal:n}).then((function(r){return t[e]=r,r}),(function(r){throw delete t[e],r}))),Promise.resolve(t[e])}(l,n,o,a).then((function(n){r&&(c?t.indexOf("..")>-1?i.setPath(e,""+t.replace("..","."+u+"."),n):i.setPath(e,t+"."+u,n):i.setPath(e,t,n))})).catch((function(e){if(404!==e.status)throw e}))})))}}(e,a,!!t.graph,r,n,o)})))}))})),c}var h=function(){function e(e,t){var r=this;this.units=i.units;var n="string"==typeof t?{serverUrl:t}:t;i.assert(n.serverUrl&&n.serverUrl.match(/https?:\/\/.+/),'A "serverUrl" option is required and must begin with "http(s)"'),this.state=n,this.environment=e,this._refreshTask=null;var s=this;this.patient={get id(){return s.getPatientId()},read:function(e){var t=r.patient.id;return t?r.request(Object.assign({},e,{url:"Patient/"+t})):Promise.reject(new Error("Patient is not available"))},request:function(e,t){return void 0===t&&(t={}),r.patient.id?(0,a.default)(o.default.mark((function n(){var a;return o.default.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,d(e,r);case 2:return a=n.sent,n.abrupt("return",r.request(a,t));case 4:case"end":return n.stop()}}),n)})))():Promise.reject(new Error("Patient is not available"))}},this.encounter={get id(){return s.getEncounterId()},read:function(e){var t=r.encounter.id;return t?r.request(Object.assign({},e,{url:"Encounter/"+t})):Promise.reject(new Error("Encounter is not available"))}},this.user={get fhirUser(){return s.getFhirUser()},get id(){return s.getUserId()},get resourceType(){return s.getUserType()},read:function(e){var t=r.user.fhirUser;return t?r.request(Object.assign({},e,{url:t})):Promise.reject(new Error("User is not available"))}},this.connect(e.fhir)}var t=e.prototype;return t.connect=function(e){if("function"==typeof e){var t={baseUrl:this.state.serverUrl.replace(/\/$/,"")},r=this.getState("tokenResponse.access_token");if(r)t.auth={token:r};else{var n=this.state,o=n.username,a=n.password;o&&a&&(t.auth={user:o,pass:a})}this.api=e(t);var i=this.getState("tokenResponse.patient");i&&(this.patient.api=e(Object.assign({},t,{patient:i})))}return this},t.getPatientId=function(){var e=this.state.tokenResponse;return e?e.patient?e.patient:((this.state.scope||"").match(/\blaunch(\/patient)?\b/)?l("The ID of the selected patient is not available. Please check if your server supports that."):l(s.default.noScopeForId,"patient","patient"),null):(this.state.authorizeUri?l(s.default.noIfNoAuth,"the ID of the selected patient"):l(s.default.noFreeContext,"selected patient"),null)},t.getEncounterId=function(){var e=this.state.tokenResponse;return e?e.encounter?e.encounter:((this.state.scope||"").match(/\blaunch(\/encounter)?\b/)?l("The ID of the selected encounter is not available. Please check if your server supports that, and that the selected patient has any recorded encounters."):l(s.default.noScopeForId,"encounter","encounter"),null):(this.state.authorizeUri?l(s.default.noIfNoAuth,"the ID of the selected encounter"):l(s.default.noFreeContext,"selected encounter"),null)},t.getIdToken=function(){var e=this.state.tokenResponse;if(e){var t=e.id_token,r=this.state.scope||"";if(!t){var n=r.match(/\bopenid\b/),o=r.match(/\bprofile\b/),a=r.match(/\bfhirUser\b/);return l(n&&(a||o)?"The id_token is not available. Please check if your server supports that.":"You are trying to get the id_token but you are not using the right scopes. Please add 'openid' and 'fhirUser' or 'profile' to the scopes you are requesting."),null}return i.jwtDecode(t,this.environment)}return this.state.authorizeUri?l(s.default.noIfNoAuth,"the id_token"):l(s.default.noFreeContext,"id_token"),null},t.getFhirUser=function(){var e=this.getIdToken();return e?e.fhirUser?e.fhirUser.split("/").slice(-2).join("/"):e.profile:null},t.getUserId=function(){var e=this.getFhirUser();return e?e.split("/")[1]:null},t.getUserType=function(){var e=this.getFhirUser();return e?e.split("/")[0]:null},t.getAuthorizationHeader=function(){var e=this.getState("tokenResponse.access_token");if(e)return"Bearer "+e;var t=this.state,r=t.username,n=t.password;return r&&n?"Basic "+this.environment.btoa(r+":"+n):null},t._clearState=function(){var e=(0,a.default)(o.default.mark((function e(){var t,r;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=this.environment.getStorage(),e.next=3,t.get(c.SMART_KEY);case 3:if(!(r=e.sent)){e.next=7;break}return e.next=7,t.unset(r);case 7:return e.next=9,t.unset(c.SMART_KEY);case 9:this.state.tokenResponse={};case 10:case"end":return e.stop()}}),e,this)})));return function(){return e.apply(this,arguments)}}(),t.create=function(e,t){return this.request(Object.assign({},t,{url:""+e.resourceType,method:"POST",body:JSON.stringify(e),headers:Object.assign({"Content-Type":"application/json"},(t||{}).headers)}))},t.update=function(e,t){return this.request(Object.assign({},t,{url:e.resourceType+"/"+e.id,method:"PUT",body:JSON.stringify(e),headers:Object.assign({"Content-Type":"application/json"},(t||{}).headers)}))},t.delete=function(e,t){return void 0===t&&(t={}),this.request(Object.assign({},t,{url:e,method:"DELETE"}))},t.patch=function(){var e=(0,a.default)(o.default.mark((function e(t,r,n){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return void 0===n&&(n={}),i.assertJsonPatch(r),e.abrupt("return",this.request(Object.assign({},n,{url:t,method:"PATCH",body:JSON.stringify(r),headers:Object.assign({prefer:"return=presentation","content-type":"application/json-patch+json; charset=UTF-8"},n.headers)})));case 3:case"end":return e.stop()}}),e,this)})));return function(t,r,n){return e.apply(this,arguments)}}(),t.request=function(){var e=(0,a.default)(o.default.mark((function e(t,r,n){var c,l,d,f,h,y,v,g=this;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return void 0===r&&(r={}),void 0===n&&(n={}),l=i.debug.extend("client:request"),i.assert(t,"request requires an url or request options as argument"),"string"==typeof t||t instanceof URL?(d=String(t),t={}):d=String(t.url),d=i.absolute(d,this.state.serverUrl),f={graph:!1!==r.graph,flat:!!r.flat,pageLimit:null!==(c=r.pageLimit)&&void 0!==c?c:1,resolveReferences:r.resolveReferences||[],useRefreshToken:!1!==r.useRefreshToken,onPage:"function"==typeof r.onPage?r.onPage:void 0},h=t.signal||void 0,y=f.useRefreshToken?this.refreshIfNeeded({signal:h}).then((function(){return t})):Promise.resolve(t),e.abrupt("return",y.then((function(e){var t=g.getAuthorizationHeader();return t&&(e.headers=Object.assign({},e.headers,{Authorization:t})),e})).then((function(e){return l("%s, options: %O, fhirOptions: %O",d,e,f),i.request(d,e).then((function(t){return e.includeResponse?(v=t.response,t.body):t}))})).catch(function(){var e=(0,a.default)(o.default.mark((function e(t){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(401!=t.status){e.next=15;break}if(g.getState("tokenResponse.access_token")){e.next=4;break}throw t.message+="\nThis app cannot be accessed directly. Please launch it as SMART app!",t;case 4:if(f.useRefreshToken){e.next=10;break}return l("Your session has expired and the useRefreshToken option is set to false. Please re-launch the app."),e.next=8,g._clearState();case 8:case 13:throw t.message+="\n"+s.default.expired,t;case 10:return l("Auto-refresh failed! Please re-launch the app."),e.next=13,g._clearState();case 15:throw t;case 16:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()).catch((function(e){throw 403==e.status&&l("Permission denied! Please make sure that you have requested the proper scopes."),e})).then((function(e){return e?"string"==typeof e||e instanceof u?e:(r=(0,a.default)(o.default.mark((function e(t){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if("Bundle"!=t.resourceType){e.next=5;break}return e.next=3,Promise.all((t.entry||[]).map((function(e){return p(e.resource,f,n,g,h)})));case 3:e.next=7;break;case 5:return e.next=7,p(t,f,n,g,h);case 7:return e.abrupt("return",t);case 8:case"end":return e.stop()}}),e)}))),function(e){return r.apply(this,arguments)})(e).then(function(){var e=(0,a.default)(o.default.mark((function e(t){var r,a,s;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t||"Bundle"!=t.resourceType){e.next=19;break}if(r=t.link||[],f.flat&&(t=(t.entry||[]).map((function(e){return e.resource}))),!f.onPage){e.next=6;break}return e.next=6,f.onPage(t,Object.assign({},n));case 6:if(!--f.pageLimit){e.next=19;break}if(a=r.find((function(e){return"next"==e.relation})),t=i.makeArray(t),!a||!a.url){e.next=19;break}return e.next=12,g.request({url:a.url,signal:h},f,n);case 12:if(s=e.sent,!f.onPage){e.next=15;break}return e.abrupt("return",null);case 15:if(!f.resolveReferences.length){e.next=18;break}return Object.assign(n,s.references),e.abrupt("return",t.concat(i.makeArray(s.data||s)));case 18:return e.abrupt("return",t.concat(i.makeArray(s)));case 19:return e.abrupt("return",t);case 20:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()).then((function(e){if(f.graph)n={};else if(!f.onPage&&f.resolveReferences.length)return{data:e,references:n};return e})).then((function(e){return t.includeResponse?{body:e,response:v}:e})):e;var r})));case 10:case"end":return e.stop()}}),e,this)})));return function(t,r,n){return e.apply(this,arguments)}}(),t.refreshIfNeeded=function(e){void 0===e&&(e={});var t=this.getState("tokenResponse.access_token"),r=this.getState("tokenResponse.refresh_token"),n=this.state.expiresAt||0;return t&&r&&n-10<Date.now()/1e3?this.refresh(e):Promise.resolve(this.state)},t.refresh=function(e){var t,r,n=this;void 0===e&&(e={});var o=i.debug.extend("client:refresh");o("Attempting to refresh with refresh_token...");var a=null===(r=null===(t=this.state)||void 0===t?void 0:t.tokenResponse)||void 0===r?void 0:r.refresh_token;i.assert(a,"Unable to refresh. No refresh_token found.");var s=this.state.tokenUri;i.assert(s,"Unable to refresh. No tokenUri found.");var c=this.getState("tokenResponse.scope")||"",u=c.search(/\boffline_access\b/)>-1,l=c.search(/\bonline_access\b/)>-1;if(i.assert(u||l,"Unable to refresh. No offline_access or online_access scope found."),!this._refreshTask){var d=Object.assign({credentials:this.environment.options.refreshTokenWithCredentials||"same-origin"},e,{method:"POST",mode:"cors",headers:Object.assign({},e.headers||{},{"content-type":"application/x-www-form-urlencoded"}),body:"grant_type=refresh_token&refresh_token="+encodeURIComponent(a)});if(!("authorization"in d.headers)){var f=this.state,p=f.clientSecret,h=f.clientId;p&&(d.headers.authorization="Basic "+this.environment.btoa(h+":"+p))}this._refreshTask=i.request(s,d).then((function(e){return i.assert(e.access_token,"No access token received"),o("Received new access token response %O",e),Object.assign(n.state.tokenResponse,e),n.state.expiresAt=i.getAccessTokenExpiration(e,n.environment),n.state})).catch((function(e){var t,r;throw(null===(r=null===(t=n.state)||void 0===t?void 0:t.tokenResponse)||void 0===r?void 0:r.refresh_token)&&(o("Deleting the expired or invalid refresh token."),delete n.state.tokenResponse.refresh_token),e})).finally((function(){n._refreshTask=null;var e=n.state.key;e?n.environment.getStorage().set(e,n.state):o("No 'key' found in Clint.state. Cannot persist the instance.")}))}return this._refreshTask},t.byCode=function(e,t){return i.byCode(e,t)},t.byCodes=function(e,t){return i.byCodes(e,t)},t.getPath=function(e,t){return void 0===t&&(t=""),i.getPath(e,t)},t.getState=function(e){return void 0===e&&(e=""),i.getPath(Object.assign({},this.state),e)},t.getFhirVersion=function(){return i.fetchConformanceStatement(this.state.serverUrl).then((function(e){return e.fhirVersion}))},t.getFhirRelease=function(){return this.getFhirVersion().then((function(e){var t;return null!==(t=c.fhirVersions[e])&&void 0!==t?t:0}))},e}();t.default=h},7998:(e,t,r)=>{"use strict";var n=r(5318),o=n(r(7757));r(8309),r(4916),r(4723),r(3753);var a=n(r(8926)),i=n(r(5354)),s=n(r(5957));Object.defineProperty(t,"__esModule",{value:!0});var c=function(e){function t(t){var r;return(r=e.call(this,t.status+" "+t.statusText+"\nURL: "+t.url)||this).name="HttpError",r.response=t,r.statusCode=t.status,r.status=t.status,r.statusText=t.statusText,r}(0,i.default)(t,e);var r=t.prototype;return r.parse=function(){var e=(0,a.default)(o.default.mark((function e(){var t,r,n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.response.bodyUsed){e.next=19;break}if(e.prev=1,!(t=this.response.headers.get("Content-Type")||"text/plain").match(/\bjson\b/i)){e.next=10;break}return e.next=6,this.response.json();case 6:(r=e.sent).error?(this.message+="\n"+r.error,r.error_description&&(this.message+=": "+r.error_description)):this.message+="\n\n"+JSON.stringify(r,null,4),e.next=15;break;case 10:if(!t.match(/^text\//i)){e.next=15;break}return e.next=13,this.response.text();case 13:(n=e.sent)&&(this.message+="\n\n"+n);case 15:e.next=19;break;case 17:e.prev=17,e.t0=e.catch(1);case 19:return e.abrupt("return",this);case 20:case"end":return e.stop()}}),e,this,[[1,17]])})));return function(){return e.apply(this,arguments)}}(),r.toJSON=function(){return{name:this.name,statusCode:this.statusCode,status:this.status,statusText:this.statusText,message:this.message}},t}((0,s.default)(Error));t.default=c},3923:(e,t,r)=>{"use strict";var n=r(5318);r(9601),r(6992),r(1539),r(8783),r(3948),r(285),r(2222);var o=n(r(3913));Object.defineProperty(t,"__esModule",{value:!0});var a=r(1074),i=r(9071),s=r(1060),c=function(){function e(e){void 0===e&&(e={}),this._url=null,this._storage=null,this.options=Object.assign({replaceBrowserHistory:!0,fullSessionStorageSupport:!0,refreshTokenWithCredentials:"same-origin"},e)}var t=e.prototype;return t.relative=function(e){return new URL(e,this.getUrl().href).href},t.getUrl=function(){return this._url||(this._url=new URL(location+"")),this._url},t.redirect=function(e){location.href=e},t.getStorage=function(){return this._storage||(this._storage=new s.default),this._storage},t.getAbortController=function(){return AbortController},t.atob=function(e){return window.atob(e)},t.btoa=function(e){return window.btoa(e)},t.getSmartApi=function(){var e=this;return{ready:function(){for(var t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return a.ready.apply(a,[e].concat(r))},authorize:function(t){return a.authorize(e,t)},init:function(t){return a.init(e,t)},client:function(t){return new i.default(e,t)},options:this.options}},(0,o.default)(e,[{key:"fhir",get:function(){return"function"==typeof fhir?fhir:null}}]),e}();t.default=c},4746:(e,t,r)=>{"use strict";r(1539),r(8674);var n=(new(r(3923).default)).getSmartApi(),o=n.ready,a=n.authorize,i=n.init,s=n.client,c=n.options;if("undefined"==typeof FHIRCLIENT_PURE){var u=r(4098);r(6486),window.fetch||(window.fetch=u.default,window.Headers=u.Headers,window.Request=u.Request,window.Response=u.Response)}var l={AbortController:window.AbortController,client:s,oauth2:{settings:c,ready:o,authorize:a,init:i}};e.exports=l},6966:(e,t,r)=>{"use strict";var n=r(5318),o=n(r(7757)),a=n(r(7316)),i=n(r(8926));r(4916),r(4723),r(9601),r(1539),r(8674),r(5306),r(3210),r(3123),r(1249),r(9600),r(4747),r(7327),r(2222),r(9826),r(8309),r(7941);var s=["includeResponse"];Object.defineProperty(t,"__esModule",{value:!0}),t.assertJsonPatch=t.assert=t.getTargetWindow=t.getPatientParam=t.byCodes=t.byCode=t.getAccessTokenExpiration=t.getTimeInFuture=t.jwtDecode=t.randomString=t.absolute=t.makeArray=t.setPath=t.getPath=t.fetchConformanceStatement=t.getAndCache=t.request=t.responseToJSON=t.checkResponse=t.units=t.debug=void 0;var c=r(7998),u=r(7691),l=r(866),d=("undefined"!=typeof FHIRCLIENT_PURE?window:r(4098)).fetch,f=l("FHIR");t.debug=f;var p={};function h(e){var t=e.value,r=e.code;if("number"!=typeof t)throw new Error("Found a non-numerical unit: "+t+" "+r)}function y(e){return v.apply(this,arguments)}function v(){return(v=(0,i.default)(o.default.mark((function e(t){var r;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.ok){e.next=5;break}return r=new c.default(t),e.next=4,r.parse();case 4:throw r;case 5:return e.abrupt("return",t);case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function g(e){return e.text().then((function(e){return e.length?JSON.parse(e):""}))}function w(e,t){void 0===t&&(t={});var r=t,n=r.includeResponse,o=(0,a.default)(r,s);return d(e,Object.assign({mode:"cors"},o,{headers:Object.assign({accept:"application/json"},o.headers)})).then(y).then((function(e){var t=e.headers.get("Content-Type")+"";return t.match(/\bjson\b/i)?g(e).then((function(t){return{res:e,body:t}})):t.match(/^text\//i)?e.text().then((function(t){return{res:e,body:t}})):{res:e}})).then((function(e){var t=e.res,r=e.body;if(!r&&201==t.status){var a=t.headers.get("location");if(a)return w(a,Object.assign({},o,{method:"GET",body:null,includeResponse:n}))}return n?{body:r,response:t}:void 0===r?t:r}))}function m(e,t,r){return void 0===r&&(r=!1),r||!p[e]?(p[e]=w(e,t),p[e]):Promise.resolve(p[e])}function b(e,t){if(void 0===t&&(t=""),!(t=t.trim()))return e;for(var r=t.split("."),n=e;n&&r.length;){var o=r.shift();if(!o&&Array.isArray(n))return n.map((function(e){return b(e,r.join("."))}));n=n[o]}return n}function E(e){return Array.isArray(e)?e:[e]}function S(e,t){var r=e.split(".")[1];return r?JSON.parse(t.atob(r)):null}function A(e,t){var r={};function n(e,t){e&&Array.isArray(e.coding)&&e.coding.forEach((function(e){var n=e.code;n&&(r[n]=r[n]||[],r[n].push(t))}))}return E(e).forEach((function(e){"Observation"===e.resourceType&&e[t]&&(Array.isArray(e[t])?e[t].forEach((function(t){return n(t,e)})):n(e[t],e))})),r}function x(){return(x=(0,i.default)(o.default.mark((function e(t,r,n){var a,i,s,c,u;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0===r&&(r=800),void 0===n&&(n=720),"function"!=typeof t){e.next=6;break}return e.next=5,t();case 5:t=e.sent;case 6:if(!t||"object"!=typeof t){e.next=8;break}return e.abrupt("return",t);case 8:if("string"==typeof t){e.next=11;break}return f("Invalid target type '%s'. Failing back to '_self'.",typeof t),e.abrupt("return",self);case 11:if("_self"!=t){e.next=13;break}return e.abrupt("return",self);case 13:if("_parent"!=t){e.next=15;break}return e.abrupt("return",parent);case 15:if("_top"!=t){e.next=17;break}return e.abrupt("return",top);case 17:if("_blank"!=t){e.next=34;break}if(i=null,e.prev=19,i=window.open("","SMARTAuthPopup")){e.next=23;break}throw new Error("Perhaps window.open was blocked");case 23:e.next=28;break;case 25:e.prev=25,e.t0=e.catch(19),a=e.t0;case 28:if(i){e.next=33;break}return f("Cannot open window. Failing back to '_self'. %s",a),e.abrupt("return",self);case 33:return e.abrupt("return",i);case 34:if("popup"!=t){e.next=51;break}if(c=null,e.prev=36,c=window.open("","SMARTAuthPopup",["height="+n,"width="+r,"menubar=0","resizable=1","status=0","top="+(screen.height-n)/2,"left="+(screen.width-r)/2].join(","))){e.next=40;break}throw new Error("Perhaps the popup window was blocked");case 40:e.next=45;break;case 42:e.prev=42,e.t1=e.catch(36),s=e.t1;case 45:if(c){e.next=50;break}return f("Cannot open window. Failing back to '_self'. %s",s),e.abrupt("return",self);case 50:return e.abrupt("return",c);case 51:if(!(u=frames[t])){e.next=54;break}return e.abrupt("return",u);case 54:return f("Unknown target '%s'. Failing back to '_self'.",t),e.abrupt("return",self);case 56:case"end":return e.stop()}}),e,null,[[19,25],[36,42]])})))).apply(this,arguments)}function C(e,t){if(!e)throw new Error(t)}t.units={cm:function(e){var t=e.code,r=e.value;if(h({code:t,value:r}),"cm"==t)return r;if("m"==t)return 100*r;if("in"==t)return 2.54*r;if("[in_us]"==t)return 2.54*r;if("[in_i]"==t)return 2.54*r;if("ft"==t)return 30.48*r;if("[ft_us]"==t)return 30.48*r;throw new Error("Unrecognized length unit: "+t)},kg:function(e){var t=e.code,r=e.value;if(h({code:t,value:r}),"kg"==t)return r;if("g"==t)return r/1e3;if(t.match(/lb/))return r/2.20462;if(t.match(/oz/))return r/35.274;throw new Error("Unrecognized weight unit: "+t)},any:function(e){return h(e),e.value}},t.checkResponse=y,t.responseToJSON=g,t.request=w,t.getAndCache=m,t.fetchConformanceStatement=function(e,t){void 0===e&&(e="/");var r=String(e).replace(/\/*$/,"/")+"metadata";return m(r,t).catch((function(e){throw new Error('Failed to fetch the conformance statement from "'+r+'". '+e)}))},t.getPath=b,t.setPath=function(e,t,r,n){return void 0===n&&(n=!1),t.trim().split(".").reduce((function(e,t,o,a){if(!e||o!==a.length-1)return e&&void 0===e[t]&&n&&(e[t]=a[o+1].match(/^[0-9]+$/)?[]:{}),e?e[t]:void 0;e[t]=r}),e),e},t.makeArray=E,t.absolute=function(e,t){return e.match(/^http/)||e.match(/^urn/)?e:String(t||"").replace(/\/+$/,"")+"/"+e.replace(/^\/+/,"")},t.randomString=function(e,t){void 0===e&&(e=8),void 0===t&&(t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");for(var r=[],n=t.length;e--;)r.push(t.charAt(Math.floor(Math.random()*n)));return r.join("")},t.jwtDecode=S,t.getTimeInFuture=function(e,t){return void 0===e&&(e=120),void 0===t&&(t=new Date),Math.floor(t.getTime()/1e3+e)},t.getAccessTokenExpiration=function(e,t){var r=Math.floor(Date.now()/1e3);if(e.expires_in)return r+e.expires_in;if(e.access_token){var n=S(e.access_token,t);if(n&&n.exp)return n.exp}return r+300},t.byCode=A,t.byCodes=function(e,t){var r=A(e,t);return function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((function(e){return e+""in r})).reduce((function(e,t){return e.concat(r[t+""])}),[])}},t.getPatientParam=function(e,t){var r=(b(e,"rest.0.resource")||[]).find((function(e){return e.type===t}));if(!r)throw new Error('Resource "'+t+'" is not supported by this FHIR server');if(!Array.isArray(r.searchParam))throw new Error('No search parameters supported for "'+t+'" on this FHIR server');if("Patient"==t&&r.searchParam.find((function(e){return"_id"==e.name})))return"_id";var n=u.patientParams.find((function(e){return r.searchParam.find((function(t){return t.name==e}))}));if(!n)throw new Error("I don't know what param to use for "+t);return n},t.getTargetWindow=function(e,t,r){return x.apply(this,arguments)},t.assert=C,t.assertJsonPatch=function(e){C(Array.isArray(e),"The JSON patch must be an array"),C(e.length>0,"The JSON patch array should not be empty"),e.forEach((function(e){C(["add","replace","test","move","copy","remove"].indexOf(e.op)>-1,'Each patch operation must have an "op" property which must be one of: "add", "replace", "test", "move", "copy", "remove"'),C(e.path&&typeof e.path,'Invalid "'+e.op+'" operation. Missing "path" property'),"add"==e.op||"replace"==e.op||"test"==e.op?(C("value"in e,'Invalid "'+e.op+'" operation. Missing "value" property'),C(3==Object.keys(e).length,'Invalid "'+e.op+'" operation. Contains unknown properties')):"move"==e.op||"copy"==e.op?(C("string"==typeof e.from,'Invalid "'+e.op+'" operation. Requires a string "from" property'),C(3==Object.keys(e).length,'Invalid "'+e.op+'" operation. Contains unknown properties')):C(2==Object.keys(e).length,'Invalid "'+e.op+'" operation. Contains unknown properties')}))}},5902:(e,t,r)=>{"use strict";var n=r(5318),o=n(r(7757));r(6992),r(9575),r(1539),r(2472),r(2990),r(8927),r(3105),r(5035),r(4345),r(7174),r(2846),r(4731),r(7209),r(6319),r(8867),r(7789),r(3739),r(9368),r(4483),r(2056),r(3462),r(678),r(7462),r(3824),r(5021),r(2974),r(5016),r(9601);var a=n(r(8926));Object.defineProperty(t,"__esModule",{value:!0}),t.signCompactJws=t.importKey=t.generatePKCEChallenge=t.randomBytes=t.digestSha256=t.base64urlencode=t.base64urldecode=void 0;var i=r(7277),s=i.base64url.encode;t.base64urlencode=s;var c,u=i.base64url.decode;t.base64urldecode=u,c=window.crypto.subtle,t.digestSha256=function(){var e=(0,a.default)(o.default.mark((function e(t){var r,n,a;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return"string"==typeof t?(n=new TextEncoder,r=n.encode(t).buffer):r=t,e.next=3,c.digest("SHA-256",r);case 3:return a=e.sent,e.abrupt("return",new Uint8Array(a));case 5:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),t.randomBytes=function(e){var t;return"undefined"!=typeof window&&(null===(t=null===window||void 0===window?void 0:window.crypto)||void 0===t?void 0:t.getRandomValues)?window.crypto.getRandomValues(new Uint8Array(e)):(void 0)(e)},t.generatePKCEChallenge=function(){var e=(0,a.default)(o.default.mark((function e(r){var n,a,i;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return void 0===r&&(r=96),n=t.randomBytes(r),a=s(n),e.t0=s,e.next=6,t.digestSha256(a);case 6:return e.t1=e.sent,i=(0,e.t0)(e.t1),e.abrupt("return",{codeChallenge:i,codeVerifier:a});case 9:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),t.importKey=function(){var e=(0,a.default)(o.default.mark((function e(t){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",i.importJWK(t));case 1:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),t.signCompactJws=function(){var e=(0,a.default)(o.default.mark((function e(t,r,n,a){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new i.SignJWT(a).setProtectedHeader(Object.assign({},n,{alg:t})).sign(r));case 1:case"end":return e.stop()}}),e)})));return function(t,r,n,o){return e.apply(this,arguments)}}()},7691:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SMART_KEY=t.patientParams=t.fhirVersions=t.patientCompartment=void 0,t.patientCompartment=["Account","AdverseEvent","AllergyIntolerance","Appointment","AppointmentResponse","AuditEvent","Basic","BodySite","BodyStructure","CarePlan","CareTeam","ChargeItem","Claim","ClaimResponse","ClinicalImpression","Communication","CommunicationRequest","Composition","Condition","Consent","Coverage","CoverageEligibilityRequest","CoverageEligibilityResponse","DetectedIssue","DeviceRequest","DeviceUseRequest","DeviceUseStatement","DiagnosticOrder","DiagnosticReport","DocumentManifest","DocumentReference","EligibilityRequest","Encounter","EnrollmentRequest","EpisodeOfCare","ExplanationOfBenefit","FamilyMemberHistory","Flag","Goal","Group","ImagingManifest","ImagingObjectSelection","ImagingStudy","Immunization","ImmunizationEvaluation","ImmunizationRecommendation","Invoice","List","MeasureReport","Media","MedicationAdministration","MedicationDispense","MedicationOrder","MedicationRequest","MedicationStatement","MolecularSequence","NutritionOrder","Observation","Order","Patient","Person","Procedure","ProcedureRequest","Provenance","QuestionnaireResponse","ReferralRequest","RelatedPerson","RequestGroup","ResearchSubject","RiskAssessment","Schedule","ServiceRequest","Specimen","SupplyDelivery","SupplyRequest","VisionPrescription"],t.fhirVersions={"0.4.0":2,"0.5.0":2,"1.0.0":2,"1.0.1":2,"1.0.2":2,"1.1.0":3,"1.4.0":3,"1.6.0":3,"1.8.0":3,"3.0.0":3,"3.0.1":3,"3.3.0":4,"3.5.0":4,"4.0.0":4,"4.0.1":4},t.patientParams=["patient","subject","requester","member","actor","beneficiary"],t.SMART_KEY="SMART_KEY"},1074:(e,t,r)=>{"use strict";var n=r(5318),o=n(r(7757)),a=n(r(8926));r(4916),r(5306),r(1249),r(7327),r(4747),r(1539),r(8674),r(9600),r(8309),r(6992),r(8783),r(3948),r(285),r(9826),r(4603),r(9714),r(4723),r(9601),r(6699),r(2023),Object.defineProperty(t,"__esModule",{value:!0}),t.init=t.ready=t.buildTokenRequest=t.completeAuth=t.onMessage=t.isInPopUp=t.isInFrame=t.authorize=t.getSecurityExtensions=t.fetchWellKnownJson=t.KEY=void 0;var i=r(6966),s=r(9071),c=r(7691);Object.defineProperty(t,"KEY",{enumerable:!0,get:function(){return c.SMART_KEY}});var u=r(5902),l=i.debug.extend("oauth2");function d(){return"object"==typeof window}function f(e,t){void 0===e&&(e="/");var r=String(e).replace(/\/*$/,"/")+".well-known/smart-configuration";return i.getAndCache(r,t).catch((function(e){throw new Error('Failed to fetch the well-known json "'+r+'". '+e.message)}))}function p(e,t){return void 0===t&&(t="/"),console.log("Getting sec extension",t),function(e,t){return void 0===e&&(e="/"),f(e,void 0).then((function(e){if(!e.authorization_endpoint||!e.token_endpoint)throw new Error("Invalid wellKnownJson");return{registrationUri:e.registration_endpoint||"",authorizeUri:e.authorization_endpoint,tokenUri:e.token_endpoint,codeChallengeMethods:e.code_challenge_methods_supported||["S256"]}}))}(t).catch((function(e){return function(e,t){return void 0===e&&(e="/"),i.fetchConformanceStatement(e,void 0).then((function(e){var t=(i.getPath(e||{},"rest.0.security.extension")||[]).filter((function(e){return"http://fhir-registry.smarthealthit.org/StructureDefinition/oauth-uris"===e.url})).map((function(e){return e.extension}))[0],r={registrationUri:"",authorizeUri:"",tokenUri:"",codeChallengeMethods:["S256"]};return t&&t.forEach((function(e){"register"===e.url&&(r.registrationUri=e.valueUri),"authorize"===e.url&&(r.authorizeUri=e.valueUri),"token"===e.url&&(r.tokenUri=e.valueUri)})),r}))}(t)}))}function h(e,t){return y.apply(this,arguments)}function y(){return(y=(0,a.default)(o.default.mark((function e(t,r){var n,a,s,f,y,m,b,E,S,A,x,C,_,k,P,T,R,I,O,J,W,H,U,K,j,M,D,F,N,L,B,G,V,q,$,z,Y;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0===r&&(r={}),n=t.getUrl(),!Array.isArray(r)){e.next=11;break}if(a=n.searchParams.get("iss")||n.searchParams.get("fhirServiceUrl")){e.next=6;break}throw new Error('Passing in an "iss" url parameter is required if authorize uses multiple configurations');case 6:return s=r.find((function(e){if(e.issMatch){if("function"==typeof e.issMatch)return!!e.issMatch(a);if("string"==typeof e.issMatch)return e.issMatch===a;if(e.issMatch instanceof RegExp)return e.issMatch.test(a)}return!1})),i.assert(s,'No configuration found matching the current "iss" parameter "'+a+'"'),e.next=10,h(t,s);case 10:return e.abrupt("return",e.sent);case 11:if(y=(f=r).redirect_uri,m=f.clientSecret,b=f.clientPrivateJwk,E=f.fakeTokenResponse,S=f.patientId,A=f.encounterId,x=f.client_id,C=f.target,_=f.width,k=f.height,P=f.pkceMode,R=(T=r).iss,I=T.launch,O=T.fhirServiceUrl,J=T.redirectUri,W=T.noRedirect,H=T.scope,U=void 0===H?"":H,K=T.clientId,j=T.completeInTarget,M=t.getStorage(),R=n.searchParams.get("iss")||R,O=n.searchParams.get("fhirServiceUrl")||O,I=n.searchParams.get("launch")||I,K||(K=x),J||(J=y),J?J.match(/^https?\:\/\//)||(J=t.relative(J)):J=t.relative("."),D=String(R||O||"")){e.next=23;break}throw new Error("No server url found. It must be specified as `iss` or as `fhirServiceUrl` parameter");case 23:return R&&l("Making %s launch...",I?"EHR":"standalone"),I&&!U.match(/launch/)&&(U+=" launch"),d()&&(F=v(),N=g(),(F||N)&&!0!==j&&!1!==j&&(j=F,console.warn('Your app is being authorized from within an iframe or popup window. Please be explicit and provide a "completeInTarget" option. Use "true" to complete the authorization in the same window, or "false" to try to complete it in the parent or the opener window. See http://docs.smarthealthit.org/client-js/api.html'))),e.next=28,M.get(c.SMART_KEY);case 28:return L=e.sent,e.next=31,M.unset(L);case 31:if(B=i.randomString(16),G={clientId:K,scope:U,redirectUri:J,serverUrl:D,clientSecret:m,clientPrivateJwk:b,tokenResponse:{},key:B,completeInTarget:j},d()&&!i.getPath(t,"options.fullSessionStorageSupport")){e.next=37;break}return e.next=37,M.set(c.SMART_KEY,B);case 37:if(E&&Object.assign(G.tokenResponse,E),S&&Object.assign(G.tokenResponse,{patient:S}),A&&Object.assign(G.tokenResponse,{encounter:A}),V=J+"?state="+encodeURIComponent(B),!O||R){e.next=50;break}return l("Making fake launch..."),e.next=45,M.set(B,G);case 45:if(!W){e.next=47;break}return e.abrupt("return",V);case 47:return e.next=49,t.redirect(V);case 49:return e.abrupt("return",e.sent);case 50:return e.next=52,p(0,D);case 52:return q=e.sent,Object.assign(G,q),e.next=56,M.set(B,G);case 56:if(G.authorizeUri){e.next=62;break}if(!W){e.next=59;break}return e.abrupt("return",V);case 59:return e.next=61,t.redirect(V);case 61:return e.abrupt("return",e.sent);case 62:if($=["response_type=code","client_id="+encodeURIComponent(K||""),"scope="+encodeURIComponent(U),"redirect_uri="+encodeURIComponent(J),"aud="+encodeURIComponent(D),"state="+encodeURIComponent(B)],I&&$.push("launch="+encodeURIComponent(I)),"required"!==P||q.codeChallengeMethods.includes("S256")){e.next=66;break}throw new Error("Required PKCE code challenge method (`S256`) was not found.");case 66:if("disabled"===P||!q.codeChallengeMethods.includes("S256")){e.next=75;break}return e.next=69,u.generatePKCEChallenge();case 69:return z=e.sent,Object.assign(G,z),e.next=73,M.set(B,G);case 73:$.push("code_challenge="+G.codeChallenge),$.push("code_challenge_method=S256");case 75:if(V=G.authorizeUri+"?"+$.join("&"),!W){e.next=78;break}return e.abrupt("return",V);case 78:if(!C||!d()){e.next=87;break}return e.next=81,i.getTargetWindow(C,_,k);case 81:if((Y=e.sent)!==self)try{Y.sessionStorage.removeItem(L),Y.sessionStorage.setItem(B,JSON.stringify(G))}catch(e){i.debug('Failed to modify window.sessionStorage. Perhaps it is from different origin?. Failing back to "_self". %s',e),Y=self}if(Y!==self)try{Y.location.href=V,self.addEventListener("message",w)}catch(e){i.debug('Failed to modify window.location. Perhaps it is from different origin?. Failing back to "_self". %s',e),self.location.href=V}else self.location.href=V;return e.abrupt("return");case 87:return e.next=89,t.redirect(V);case 89:return e.abrupt("return",e.sent);case 90:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function v(){try{return self!==top&&parent!==self}catch(e){return!0}}function g(){try{return self===top&&!!opener&&opener!==self&&!!window.name}catch(e){return!1}}function w(e){"completeAuth"==e.data.type&&e.origin===new URL(self.location.href).origin&&(window.removeEventListener("message",w),window.location.href=e.data.url)}function m(e){return b.apply(this,arguments)}function b(){return(b=(0,a.default)(o.default.mark((function e(t){var r,n,a,u,f,p,h,y,w,m,b,S,A,x,C,_,k,P,T;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(a=t.getUrl(),u=t.getStorage(),f=a.searchParams,p=f.get("state"),h=f.get("code"),y=f.get("error"),w=f.get("error_description"),p){e.next=11;break}return e.next=10,u.get(c.SMART_KEY);case 10:p=e.sent;case 11:if(!y&&!w){e.next=13;break}throw new Error([y,w].filter(Boolean).join(": "));case 13:return l("key: %s, code: %s",p,h),i.assert(p,"No 'state' parameter found. Please (re)launch the app."),e.next=17,u.get(p);case 17:if(m=e.sent,b=!d()||i.getPath(t,"options.fullSessionStorageSupport"),!d()||!m||m.completeInTarget){e.next=28;break}if(S=v(),A=g(),!S&&!A||a.searchParams.get("complete")){e.next=28;break}return a.searchParams.set("complete","1"),x=a.href,C=a.origin,S&&parent.postMessage({type:"completeAuth",url:x},C),A&&(opener.postMessage({type:"completeAuth",url:x},C),window.close()),e.abrupt("return",new Promise((function(){})));case 28:if(a.searchParams.delete("complete"),_=f.has("state"),d()&&i.getPath(t,"options.replaceBrowserHistory")&&(h||_)&&(h&&(f.delete("code"),l("Removed code parameter from the url.")),_&&b&&(f.delete("state"),l("Removed state parameter from the url.")),window.history.replaceState&&window.history.replaceState({},"",a.href)),i.assert(m,"No state found! Please (re)launch the app."),!h||(null===(r=m.to