@oystehr/sdk 4.3.1 → 4.3.3

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.
Files changed (111) hide show
  1. package/dist/cjs/client/client.cjs +87 -13
  2. package/dist/cjs/client/client.cjs.map +1 -1
  3. package/dist/cjs/client/client.d.ts +3 -0
  4. package/dist/cjs/config.d.ts +6 -0
  5. package/dist/cjs/index.min.cjs +1 -1
  6. package/dist/cjs/index.min.cjs.map +1 -1
  7. package/dist/cjs/logger.cjs +36 -0
  8. package/dist/cjs/logger.cjs.map +1 -0
  9. package/dist/cjs/logger.d.ts +11 -0
  10. package/dist/cjs/resources/classes/erx.cjs +8 -0
  11. package/dist/cjs/resources/classes/erx.cjs.map +1 -1
  12. package/dist/cjs/resources/classes/erx.d.ts +7 -1
  13. package/dist/cjs/resources/classes/index.cjs +6 -6
  14. package/dist/cjs/resources/classes/index.cjs.map +1 -1
  15. package/dist/cjs/resources/classes/index.d.ts +3 -3
  16. package/dist/cjs/resources/classes/rcm.cjs +29 -14
  17. package/dist/cjs/resources/classes/rcm.cjs.map +1 -1
  18. package/dist/cjs/resources/classes/rcm.d.ts +29 -11
  19. package/dist/cjs/resources/classes/user.cjs +9 -0
  20. package/dist/cjs/resources/classes/user.cjs.map +1 -1
  21. package/dist/cjs/resources/classes/user.d.ts +8 -1
  22. package/dist/cjs/resources/classes/zambda.cjs +1 -1
  23. package/dist/cjs/resources/classes/zambda.cjs.map +1 -1
  24. package/dist/cjs/resources/classes/zambdaLogStream.cjs +1 -1
  25. package/dist/cjs/resources/classes/zambdaLogStream.cjs.map +1 -1
  26. package/dist/cjs/resources/types/ErxGetMedicationHistoryParams.d.ts +3 -0
  27. package/dist/cjs/resources/types/ErxGetMedicationHistoryResponse.d.ts +43 -0
  28. package/dist/cjs/resources/types/ErxGetMedicationResponse.d.ts +1 -1
  29. package/dist/cjs/resources/types/RcmGetPayerParams.d.ts +3 -0
  30. package/dist/cjs/resources/types/RcmGetPayerResponse.d.ts +5 -0
  31. package/dist/cjs/resources/types/RcmListPayersParams.d.ts +5 -0
  32. package/dist/cjs/resources/types/RcmListPayersResponse.d.ts +5 -0
  33. package/dist/cjs/resources/types/RcmSetClaimStatusParams.d.ts +7 -0
  34. package/dist/cjs/resources/types/RcmSetClaimStatusResponse.d.ts +5 -0
  35. package/dist/cjs/resources/types/RcmSubmitClaimParams.d.ts +3 -0
  36. package/dist/cjs/resources/types/RcmSubmitClaimResponse.d.ts +5 -0
  37. package/dist/cjs/resources/types/UserChangePasswordParams.d.ts +7 -0
  38. package/dist/cjs/resources/types/index.d.ts +36 -29
  39. package/dist/esm/client/client.d.ts +3 -0
  40. package/dist/esm/client/client.js +88 -15
  41. package/dist/esm/client/client.js.map +1 -1
  42. package/dist/esm/config.d.ts +6 -0
  43. package/dist/esm/index.min.js +1 -1
  44. package/dist/esm/index.min.js.map +1 -1
  45. package/dist/esm/logger.d.ts +11 -0
  46. package/dist/esm/logger.js +34 -0
  47. package/dist/esm/logger.js.map +1 -0
  48. package/dist/esm/resources/classes/erx.d.ts +7 -1
  49. package/dist/esm/resources/classes/erx.js +8 -0
  50. package/dist/esm/resources/classes/erx.js.map +1 -1
  51. package/dist/esm/resources/classes/index.d.ts +3 -3
  52. package/dist/esm/resources/classes/index.js +6 -6
  53. package/dist/esm/resources/classes/index.js.map +1 -1
  54. package/dist/esm/resources/classes/rcm.d.ts +29 -11
  55. package/dist/esm/resources/classes/rcm.js +29 -14
  56. package/dist/esm/resources/classes/rcm.js.map +1 -1
  57. package/dist/esm/resources/classes/user.d.ts +8 -1
  58. package/dist/esm/resources/classes/user.js +9 -0
  59. package/dist/esm/resources/classes/user.js.map +1 -1
  60. package/dist/esm/resources/classes/zambda.js +1 -1
  61. package/dist/esm/resources/classes/zambda.js.map +1 -1
  62. package/dist/esm/resources/classes/zambdaLogStream.js +1 -1
  63. package/dist/esm/resources/classes/zambdaLogStream.js.map +1 -1
  64. package/dist/esm/resources/types/ErxGetMedicationHistoryParams.d.ts +3 -0
  65. package/dist/esm/resources/types/ErxGetMedicationHistoryResponse.d.ts +43 -0
  66. package/dist/esm/resources/types/ErxGetMedicationResponse.d.ts +1 -1
  67. package/dist/esm/resources/types/RcmGetPayerParams.d.ts +3 -0
  68. package/dist/esm/resources/types/RcmGetPayerResponse.d.ts +5 -0
  69. package/dist/esm/resources/types/RcmListPayersParams.d.ts +5 -0
  70. package/dist/esm/resources/types/RcmListPayersResponse.d.ts +5 -0
  71. package/dist/esm/resources/types/RcmSetClaimStatusParams.d.ts +7 -0
  72. package/dist/esm/resources/types/RcmSetClaimStatusResponse.d.ts +5 -0
  73. package/dist/esm/resources/types/RcmSubmitClaimParams.d.ts +3 -0
  74. package/dist/esm/resources/types/RcmSubmitClaimResponse.d.ts +5 -0
  75. package/dist/esm/resources/types/UserChangePasswordParams.d.ts +7 -0
  76. package/dist/esm/resources/types/index.d.ts +36 -29
  77. package/package.json +2 -2
  78. package/src/client/client.ts +95 -15
  79. package/src/config.ts +6 -0
  80. package/src/logger.ts +36 -0
  81. package/src/resources/classes/erx.ts +17 -0
  82. package/src/resources/classes/index.ts +6 -6
  83. package/src/resources/classes/rcm.ts +53 -23
  84. package/src/resources/classes/user.ts +10 -0
  85. package/src/resources/classes/zambda.ts +1 -1
  86. package/src/resources/classes/zambdaLogStream.ts +1 -1
  87. package/src/resources/types/ErxGetMedicationHistoryParams.ts +5 -0
  88. package/src/resources/types/ErxGetMedicationHistoryResponse.ts +45 -0
  89. package/src/resources/types/ErxGetMedicationResponse.ts +1 -1
  90. package/src/resources/types/RcmGetPayerParams.ts +5 -0
  91. package/src/resources/types/RcmGetPayerResponse.ts +7 -0
  92. package/src/resources/types/RcmListPayersParams.ts +7 -0
  93. package/src/resources/types/RcmListPayersResponse.ts +7 -0
  94. package/src/resources/types/RcmSetClaimStatusParams.ts +9 -0
  95. package/src/resources/types/RcmSetClaimStatusResponse.ts +7 -0
  96. package/src/resources/types/RcmSubmitClaimParams.ts +5 -0
  97. package/src/resources/types/RcmSubmitClaimResponse.ts +7 -0
  98. package/src/resources/types/UserChangePasswordParams.ts +9 -0
  99. package/src/resources/types/index.ts +36 -29
  100. package/dist/cjs/resources/types/RcmSubmitProfessionalClaimParams.d.ts +0 -10
  101. package/dist/cjs/resources/types/RcmSubmitProfessionalClaimResponse.d.ts +0 -5
  102. package/dist/cjs/resources/types/RcmValidateProfessionalClaimParams.d.ts +0 -6
  103. package/dist/cjs/resources/types/RcmValidateProfessionalClaimResponse.d.ts +0 -21
  104. package/dist/esm/resources/types/RcmSubmitProfessionalClaimParams.d.ts +0 -10
  105. package/dist/esm/resources/types/RcmSubmitProfessionalClaimResponse.d.ts +0 -5
  106. package/dist/esm/resources/types/RcmValidateProfessionalClaimParams.d.ts +0 -6
  107. package/dist/esm/resources/types/RcmValidateProfessionalClaimResponse.d.ts +0 -21
  108. package/src/resources/types/RcmSubmitProfessionalClaimParams.ts +0 -13
  109. package/src/resources/types/RcmSubmitProfessionalClaimResponse.ts +0 -7
  110. package/src/resources/types/RcmValidateProfessionalClaimParams.ts +0 -9
  111. package/src/resources/types/RcmValidateProfessionalClaimResponse.ts +0 -23
@@ -1,2 +1,2 @@
1
- import{v4 as e}from"uuid";class t extends Error{code;constructor({message:e,code:s,cause:r}){super(e,{cause:r}),Object.setPrototypeOf(this,t.prototype),this.code=s,this.name="OystehrSdkError"}toString(){return`${this.name}: ${this.message} (code: ${this.code})`}toJSON(){return{name:this.name,message:this.message,code:this.code,cause:this.cause}}}function s(e){const t=[];for(const s of e.issue??[])s.details&&s.details.text&&t.push(s.details.text);return t.length||t.push("Unknown FHIR error"),t.join(",")}class r extends t{cause;constructor({error:e,code:t}){super({message:s(e),code:t}),Object.setPrototypeOf(this,r.prototype),this.cause=e,this.name="OystehrFHIRError"}toJSON(){return{name:this.name,message:this.message,code:this.code,cause:this.cause}}}const i=[408,429,500,502,503,504],n=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT","UND_ERR_CONNECT_TIMEOUT","UND_ERR_HEADERS_TIMEOUT","UND_ERR_HEADERS_TIMEOUT","UND_ERR_SOCKET"];class a{config;constructor(e){this.config=e}request(e,s,r){return async(i,n)=>{const a=()=>this.config;try{return await u(r,a,e,s)(i,n)}catch(e){const s=e;throw new t({message:s.message,code:s.code,cause:s.cause})}}}fhirRequest(e,s){return async(i,n)=>{try{const t=()=>this.config.services?.fhirApiUrl??"https://fhir-api.zapehr.com",r=()=>this.config;return await u(t,r,e,s)(i,n)}catch(e){const s=e;if("string"==typeof s.message)throw new t({message:s.message,code:s.code,cause:s.cause});throw new r({error:s.message,code:s.code})}}}}function h(e){return"accessToken"in e}function u(s,r,a,u){return async(c,l)=>{const p=c&&!l&&!Array.isArray(c)&&h(c)?{}:c??{},d=c&&!l&&!Array.isArray(c)&&h(c)?c:l,b=u.toLowerCase(),m=r(),f=m.fetch??fetch,g=d?.accessToken??m.accessToken,U=d?.projectId??r().projectId;let T=a,k=p;if(!Array.isArray(p)){const[e,s]=function(e,s){const r={...s},i=e.replace(/\{([^}]+)\}/g,((e,i)=>{if(delete r[i],i.match(/^.*\+$/))return s[i]+"";if(!s[i]||""===s[i])throw new t({message:`Required path parameter is an empty string: ${i}`,code:400});return s[i]?encodeURIComponent(s[i]+""):""})),n=Object.keys(r),a=n.length?n.reduce(((e,t)=>({...e,[t]:r[t]})),{}):{};return[i,a]}(a,p);T=e,k=s}T=T.replace(/^\//,"");const y=s(),q=y.endsWith("/")?y:y+"/",v=new URL(T,q);let j;if(Array.isArray(k))j=JSON.stringify(k);else if(Object.keys(k).length)if("get"===b)o(k,v.searchParams);else if("application/x-www-form-urlencoded"===d?.contentType){const e=new URLSearchParams;o(k,e),j=e.toString()}else j=JSON.stringify(k);else"application/x-www-form-urlencoded"!==d?.contentType&&"post"===b&&(j="{}");const w=Object.assign(U?{"x-zapehr-project-id":U,"x-oystehr-project-id":U}:{},{"content-type":d?.contentType??"application/json"},g?{Authorization:`Bearer ${g}`}:{},d?.ifMatch?{"If-Match":d.ifMatch}:{},{"x-oystehr-request-id":d?.requestId??e()}),x={retries:m.retry?.retries??3,jitter:m.retry?.jitter??20,delay:m.retry?.delay??100,onRetry:m.retry?.onRetry,retryOn:[...m.retry?.retryOn??[],...i]};return x.retryOn.push(...i),async function(e,t){let s;for(const r of Array.from({length:(t.retries??0)+1},((e,t)=>t)))try{return await e(r)}catch(e){let i=!1;if("response"in e){const r=e;i=t.retryOn.includes(r.code),s={message:e.message,code:e.code}}else if(s=e,"code"in e&&"string"==typeof e.code){const t=e;i=n.includes(t.code)}if(!i)break;const a=Math.floor(Math.random()*(t.jitter+1));await new Promise((e=>setTimeout(e,t.delay+a))),t.onRetry&&r!==(t.retries??0)&&t.onRetry(r+1)}throw s}((async()=>{const e=await f(new Request(v,{method:b.toUpperCase(),body:j,headers:w})),t=e.body?await e.text():null;let s;const r=e.headers.get("content-type");try{s=t&&(r?.includes("application/json")||r?.includes("application/fhir+json"))?JSON.parse(t):t&&(r?.includes("application/xml")||r?.includes("text/xml"))?function(e){try{const t=e.match(/<status>(\d+)<\/status>/),s=t?parseInt(t[1],10):null,r=e.match(/<output>([\s\S]*?)<\/output>/),i=r?r[1]:null;return null===s||null===i?null:{status:s,output:i}}catch(e){return null}}(t):null}catch(e){s=null}if(!e.ok||e.status>=400){throw{message:("string"==typeof s?.output?s.output:s?.output?.message)??s?.message??s??t??e.statusText,code:s?.output?.code??s?.code??e.status,response:e}}return s}),x)}}function o(e,t){for(const[s,r]of Object.entries(e))Array.isArray(r)?r.forEach((e=>t.append(s,e))):t.append(s,r)}class c extends a{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}list(e){return this.request("/application","get",this.#e.bind(this))(e)}create(e,t){return this.request("/application","post",this.#e.bind(this))(e,t)}get(e,t){return this.request("/application/{id}","get",this.#e.bind(this))(e,t)}update(e,t){return this.request("/application/{id}","patch",this.#e.bind(this))(e,t)}delete(e,t){return this.request("/application/{id}","delete",this.#e.bind(this))(e,t)}rotateSecret(e,t){return this.request("/application/{id}/rotate-secret","post",this.#e.bind(this))(e,t)}revokeRefreshToken(e,t){return this.request("/application/{id}/revoke-refresh-token","post",this.#e.bind(this))(e,t)}revokeAccessToken(e,t){return this.request("/application/{id}/revoke-access-token","post",this.#e.bind(this))(e,t)}}class l extends a{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}issue(e,t){return this.request("/payment/charge/issue","post",this.#e.bind(this))(e,t)}status(e,t){return this.request("/payment/charge/status","post",this.#e.bind(this))(e,t)}}const p="https://extensions.fhir.zapehr.com/encounter-virtual-service-pre-release",d="addressString";function b(e){if(function(e){return Object.hasOwn(e,"virtualService")}(e)){const t=e.virtualService?.find((e=>"https://fhir.zapehr.com/virtual-service-type"===e.channelType?.system));return t?.addressString}if(!e.extension)return;const t=e.extension.find((e=>e.url===p));if(!t?.extension)return;const s=t.extension?.find((e=>e.url===d))?.valueString;return s}class m extends a{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}ENCOUNTER_VS_EXTENSION_URL=p;ENCOUNTER_VS_EXTENSION_RELATIVE_URL=d;getConversationIdFromEncounter=b;create(e,t){return this.request("/messaging/conversation","post",this.#e.bind(this))(e,t)}getToken(e){return this.request("/messaging/conversation/token","get",this.#e.bind(this))(e)}addParticipant(e,t){return this.request("/messaging/conversation/{conversationId}/participant","post",this.#e.bind(this))(e,t)}removeParticipant(e,t){return this.request("/messaging/conversation/{conversationId}/participant","delete",this.#e.bind(this))(e,t)}message(e,t){return this.request("/messaging/conversation/{conversationId}/message","post",this.#e.bind(this))(e,t)}}class f extends a{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}get(e,t){return this.request("/developer/{id}","get",this.#e.bind(this))(e,t)}update(e,t){return this.request("/developer/{id}","patch",this.#e.bind(this))(e,t)}delete(e,t){return this.request("/developer/{id}","delete",this.#e.bind(this))(e,t)}invite(e,t){return this.request("/developer/invite","post",this.#e.bind(this))(e,t)}list(e){return this.request("/developer","get",this.#e.bind(this))(e)}listV2(e,t){return this.request("/developer/v2/list","get",this.#e.bind(this))(e,t)}}class g extends a{constructor(e){super(e)}#e(){return this.config.services?.erxApiUrl??"https://erx-api.zapehr.com/v3"}searchAllergens(e,t){return this.request("/allergen","get",this.#e.bind(this))(e,t)}searchMedications(e,t){return this.request("/medication","get",this.#e.bind(this))(e,t)}getMedication(e,t){return this.request("/medication/details","get",this.#e.bind(this))(e,t)}getConfiguration(e){return this.request("/config","get",this.#e.bind(this))(e)}checkAllergyInteractions(e,t){return this.request("/patient/{patientId}/interactions/allergy","get",this.#e.bind(this))(e,t)}checkMedicationInteractions(e,t){return this.request("/patient/{patientId}/interactions/medication","get",this.#e.bind(this))(e,t)}checkPrecheckInteractions(e,t){return this.request("/patient/{patientId}/interactions/precheck/{drugId}","get",this.#e.bind(this))(e,t)}addPatientPharmacy(e,t){return this.request("/patient/{patientId}/pharmacies","post",this.#e.bind(this))(e,t)}cancelPrescription(e,t){return this.request("/patient/{patientId}/prescriptions/{medicationRequestId}","delete",this.#e.bind(this))(e,t)}syncPatient(e,t){return this.request("/patient/{patientId}/sync","post",this.#e.bind(this))(e,t)}searchPharmacies(e,t){return this.request("/pharmacy","get",this.#e.bind(this))(e,t)}connectPractitioner(e,t){return this.request("/practitioner/connect","get",this.#e.bind(this))(e,t)}checkPractitionerEnrollment(e,t){return this.request("/practitioner/{practitionerId}","get",this.#e.bind(this))(e,t)}enrollPractitioner(e,t){return this.request("/practitioner/{practitionerId}","post",this.#e.bind(this))(e,t)}unenrollPractitioner(e,t){return this.request("/practitioner/{practitionerId}","delete",this.#e.bind(this))(e,t)}}class U extends a{constructor(e){super(e)}#e(){return this.config.services?.faxApiUrl??"https://fax-api.zapehr.com/v1"}offboard(e){return this.request("/offboard","post",this.#e.bind(this))(e)}onboard(e){return this.request("/onboard","post",this.#e.bind(this))(e)}getConfiguration(e){return this.request("/config","get",this.#e.bind(this))(e)}send(e,t){return this.request("/send","post",this.#e.bind(this))(e,t)}}const T=65535;async function k(e,t){const{resourceType:s,params:r}=e;let i;r&&(i=Object.entries(r).reduce(((e,[t,s])=>(e[s.name]||(e[s.name]=[]),e[s.name].push(s.value),e)),{}));const n=await this.fhirRequest(`/${s}/_search`,"POST")(i,{...t,contentType:"application/x-www-form-urlencoded"});return{...n,entry:n.entry,unbundle:function(){return this.entry?.map((e=>e.resource)).filter((e=>void 0!==e))??[]}}}async function y(e,t){const{resourceType:s}=e;return this.fhirRequest(`/${s}`,"POST")(e,t)}async function q({resourceType:e,id:t},s){return this.fhirRequest(`/${e}/${t}`,"GET")({},s)}async function v(e,t){const{id:s,resourceType:r}=e;return this.fhirRequest(`/${r}/${s}`,"PUT")(e,{...t,ifMatch:t?.optimisticLockingVersionId?`W/"${t.optimisticLockingVersionId}"`:void 0})}async function j({resourceType:e,id:t,operations:s},r){return this.fhirRequest(`/${e}/${t}`,"PATCH")(s,{...r,contentType:"application/json-patch+json",ifMatch:r?.optimisticLockingVersionId?`W/"${r.optimisticLockingVersionId}"`:void 0})}async function w({resourceType:e,id:t},s){return this.fhirRequest(`/${e}/${t}`,"DELETE")({},s)}async function x({resourceType:e,id:t,versionId:s,count:r,offset:i},n){return s?this.fhirRequest(`/${e}/${t}/_history/${s}`,"GET")({},n):r?this.fhirRequest(`/${e}/${t}/_history?_total=accurate&_count=${r}\n ${i?`&_offset=${i}`:""}`,"GET")({},n):this.fhirRequest(`/${e}/${t}/_history?_total=accurate`,"GET")({},n)}function z(e){const{method:t,url:s}=e,r={request:{method:t,url:s}};if(s.split("?").length>1){const[e,t]=s.split("?"),i=t.split("&").map((e=>{const[t,s]=e.split("=");return{name:t,value:s}})).reduce(((e,{name:t,value:s})=>t?(e[t]||(e[t]=[]),e[t].push(s),e):e),{}),n=new URLSearchParams;o(i,n),r.request.url=`${e}?${n.toString()}`}if(["GET","DELETE","HEAD"].includes(t))return r;if("PUT"===t){const{resource:t}=e;return{request:{...r.request,ifMatch:e.ifMatch},resource:t}}if("PATCH"===t){if("resource"in e)return{request:{...r.request,ifMatch:e.ifMatch},resource:e.resource};const t=function(e){const t=(new globalThis.TextEncoder).encode(e);let s="";for(let e=0;e<t.length;e+=T){const r=t.subarray(e,e+T);s+=globalThis.btoa(String.fromCodePoint.apply(void 0,r))}return s}(JSON.stringify(e.operations));return{...r,resource:{resourceType:"Binary",contentType:"application/json-patch+json",data:t}}}if("POST"===t){const{resource:t,fullUrl:s}=e;return{...r,resource:t,fullUrl:s}}throw new Error("Unrecognized method")}async function E(e,t){const s=await this.fhirRequest("/","POST")({resourceType:"Bundle",type:"batch",entry:e.requests.map(z)},t);return{...s,entry:s.entry,unbundle:function(){return this.entry?.map((e=>e.resource)).filter((e=>void 0!==e))??[]},errors:function(){return this.entry?.filter((e=>e.response?.status?.startsWith("4")||e.response?.status?.startsWith("5"))).map((e=>e.response?.outcome)).filter((e=>void 0!==e))}}}async function A(e,t){const s=await this.fhirRequest("/","POST")({resourceType:"Bundle",type:"transaction",entry:e.requests.map(z)},t);return{...s,entry:s.entry,unbundle:function(){return this.entry?.map((e=>e.resource)).filter((e=>void 0!==e))??[]}}}function P(e,t){const s=[];if(e.line&&s.push(...e.line),e.city||e.state||e.postalCode){const t=[];e.city&&t.push(e.city),e.state&&t.push(e.state),e.postalCode&&t.push(e.postalCode),s.push(t.join(", "))}return e.use&&(t?.all||t?.use)&&s.push("["+e.use+"]"),s.join(t?.lineSeparator||", ").trim()}function I(e,t){const s=[];return e.prefix&&!1!==t?.prefix&&s.push(...e.prefix),e.given&&s.push(...e.given),e.family&&s.push(e.family),e.suffix&&!1!==t?.suffix&&s.push(...e.suffix),e.use&&(t?.all||t?.use)&&s.push("["+e.use+"]"),s.join(" ").trim()}class S extends a{constructor(e){super(e)}#e(){return this.config.services?.fhirApiUrl??"https://fhir-api.zapehr.com"}search=k;create=y;get=q;update=v;patch=j;delete=w;history=x;batch=E;transaction=A;formatAddress=P;formatHumanName=I}class R extends a{constructor(e){super(e)}#e(){return this.config.services?.labApiUrl??"https://labs-api.zapehr.com/v1"}routeList(e){return this.request("/route","get",this.#e.bind(this))(e)}routeCreate(e,t){return this.request("/route","post",this.#e.bind(this))(e,t)}routeGet(e,t){return this.request("/route/{routeGuid}","get",this.#e.bind(this))(e,t)}routeDelete(e,t){return this.request("/route/{routeGuid}","delete",this.#e.bind(this))(e,t)}orderableItemList(e,t){return this.request("/orderableItem","get",this.#e.bind(this))(e,t)}orderableItemQuestionnaireGet(e,t){return this.request("/canonical-questionnaire/lab/{labGuid}/compendium/{compendiumVersion}/item/{itemCode}/questionnaire","get",this.#e.bind(this))(e,t)}orderSubmit(e,t){return this.request("/submit","post",this.#e.bind(this))(e,t)}}class O extends a{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}list(e){return this.request("/m2m","get",this.#e.bind(this))(e)}create(e,t){return this.request("/m2m","post",this.#e.bind(this))(e,t)}me(e){return this.request("/m2m/me","get",this.#e.bind(this))(e)}get(e,t){return this.request("/m2m/{id}","get",this.#e.bind(this))(e,t)}update(e,t){return this.request("/m2m/{id}","patch",this.#e.bind(this))(e,t)}delete(e,t){return this.request("/m2m/{id}","delete",this.#e.bind(this))(e,t)}rotateSecret(e,t){return this.request("/m2m/{id}/rotate-secret","post",this.#e.bind(this))(e,t)}listV2(e,t){return this.request("/m2m/v2/list","get",this.#e.bind(this))(e,t)}}class N extends a{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}getMessagingConfig(e){return this.request("/messaging/config","get",this.#e.bind(this))(e)}}class $ extends a{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}setUp(e,t){return this.request("/payment/payment-method/setup","post",this.#e.bind(this))(e,t)}setDefault(e,t){return this.request("/payment/payment-method/set-default","post",this.#e.bind(this))(e,t)}delete(e,t){return this.request("/payment/payment-method","delete",this.#e.bind(this))(e,t)}list(e,t){return this.request("/payment/payment-method/list","post",this.#e.bind(this))(e,t)}}class C extends a{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}get(e){return this.request("/project","get",this.#e.bind(this))(e)}update(e,t){return this.request("/project","patch",this.#e.bind(this))(e,t)}}class M extends a{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}eligibilityCheck(e,t){return this.request("/rcm/eligibility-check","post",this.#e.bind(this))(e,t)}validateProfessionalClaim(e,t){return this.request("/rcm/professional-claim/validate","post",this.#e.bind(this))(e,t)}submitProfessionalClaim(e,t){return this.request("/rcm/professional-claim/submit","post",this.#e.bind(this))(e,t)}}class _ extends a{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}list(e){return this.request("/iam/role","get",this.#e.bind(this))(e)}create(e,t){return this.request("/iam/role","post",this.#e.bind(this))(e,t)}get(e,t){return this.request("/iam/role/{roleId}","get",this.#e.bind(this))(e,t)}update(e,t){return this.request("/iam/role/{roleId}","patch",this.#e.bind(this))(e,t)}delete(e,t){return this.request("/iam/role/{roleId}","delete",this.#e.bind(this))(e,t)}}class L extends a{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}list(e){return this.request("/secret","get",this.#e.bind(this))(e)}set(e,t){return this.request("/secret","post",this.#e.bind(this))(e,t)}get(e,t){return this.request("/secret/{name}","get",this.#e.bind(this))(e,t)}delete(e,t){return this.request("/secret/{name}","delete",this.#e.bind(this))(e,t)}}class D extends a{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}createMeeting(e,t){return this.request("/telemed/v2/meeting","post",this.#e.bind(this))(e,t)}joinMeeting(e,t){return this.request("/telemed/v2/meeting/{encounterId}/join","get",this.#e.bind(this))(e,t)}}class G extends a{constructor(e){super(e)}#e(){return this.config.services?.terminologyApiUrl??"https://terminology-api.zapehr.com/v1"}searchCpt(e,t){return this.request("/cpt/search","get",this.#e.bind(this))(e,t)}searchHcpcs(e,t){return this.request("/hcpcs/search","get",this.#e.bind(this))(e,t)}}class V extends a{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}send(e,t){return this.request("/messaging/transactional-sms/send","post",this.#e.bind(this))(e,t)}}class F extends a{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}me(e){return this.request("/user/me","get",this.#e.bind(this))(e)}get(e,t){return this.request("/user/{id}","get",this.#e.bind(this))(e,t)}update(e,t){return this.request("/user/{id}","patch",this.#e.bind(this))(e,t)}delete(e,t){return this.request("/user/{id}","delete",this.#e.bind(this))(e,t)}resetMfa(e,t){return this.request("/user/{id}/reset-mfa","post",this.#e.bind(this))(e,t)}resetPasswordLink(e,t){return this.request("/user/{id}/reset-password-link","post",this.#e.bind(this))(e,t)}invite(e,t){return this.request("/user/invite","post",this.#e.bind(this))(e,t)}list(e){return this.request("/user","get",this.#e.bind(this))(e)}listV2(e,t){return this.request("/user/v2/list","get",this.#e.bind(this))(e,t)}}class H extends a{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}get(e){return this.request("/version","get",this.#e.bind(this))(e)}}function B(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}async function J({bucketName:e,"objectPath+":t,file:s}){const r=await this.request("/z3/{bucketName}/{objectPath+}","post",B.bind(this))({action:"upload",bucketName:e,"objectPath+":t});await fetch(r.signedUrl,{method:"PUT",body:s})}async function W({bucketName:e,"objectPath+":t}){const s=await this.request("/z3/{bucketName}/{objectPath+}","post",B.bind(this))({action:"download",bucketName:e,"objectPath+":t}),r=await fetch(s.signedUrl,{method:"GET"});if(!r.ok)throw new Error("Failed to download file");return r.arrayBuffer()}async function X(e){let s,r;const i=new URL(e.url);if("z3:"===i.protocol){const e=i.pathname.split("/").slice(1);s=i.hostname,r=e.join("/")}else{if(!i.href.startsWith(this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"))throw new t({message:"Invalid Z3 URL",code:400});{const e=i.pathname.split("/").slice(3);s=e[0],r=e.slice(1).join("/")}}const n={action:"upload",bucketName:s,"objectPath+":r};return this.request("/z3/{bucketName}/{objectPath+}","post",B.bind(this))(n)}class Z extends a{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}uploadFile=J;downloadFile=W;getPresignedUrlForZ3Url=X;listBuckets(e){return this.request("/z3","get",this.#e.bind(this))(e)}createBucket(e,t){return this.request("/z3/{bucketName}","put",this.#e.bind(this))(e,t)}deleteBucket(e,t){return this.request("/z3/{bucketName}","delete",this.#e.bind(this))(e,t)}listObjects(e,t){return this.request("/z3/{bucketName}/{objectPath+}","get",this.#e.bind(this))(e,t)}getPresignedUrl(e,t){return this.request("/z3/{bucketName}/{objectPath+}","post",this.#e.bind(this))(e,t)}deleteObject(e,t){return this.request("/z3/{bucketName}/{objectPath+}","delete",this.#e.bind(this))(e,t)}}function K(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}async function Q({id:e,file:t,filename:s}){const r=await this.request("/zambda/{id}/s3-upload","post",K.bind(this))({id:e,filename:s});await fetch(r.signedUrl,{method:"PUT",body:t})}class Y extends a{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}uploadFile=Q;list(e){return this.request("/zambda","get",this.#e.bind(this))(e)}create(e,t){return this.request("/zambda","post",this.#e.bind(this))(e,t)}get(e,t){return this.request("/zambda/{id}","get",this.#e.bind(this))(e,t)}update(e,t){return this.request("/zambda/{id}","patch",this.#e.bind(this))(e,t)}delete(e,t){return this.request("/zambda/{id}","delete",this.#e.bind(this))(e,t)}execute(e,t){return this.request("/zambda/{id}/execute","post",this.#e.bind(this))(e,t)}executePublic(e,t){return this.request("/zambda/{id}/execute-public","post",this.#e.bind(this))(e,t)}s3Upload(e,t){return this.request("/zambda/{id}/s3-upload","post",this.#e.bind(this))(e,t)}}class ee extends a{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}list(e,t){return this.request("/zambda/{id}/logStream","post",this.#e.bind(this))(e,t)}search(e,t){return this.request("/zambda/{id}/logStream/search","post",this.#e.bind(this))(e,t)}get(e,t){return this.request("/zambda/{id}/logStream/{logStreamName}","post",this.#e.bind(this))(e,t)}}let te=class{config;application;developer;m2m;messaging;conversation;transactionalSMS;paymentMethod;charge;project;rcm;role;secret;telemed;user;version;z3;zambda;zambdaLogStream;fax;lab;erx;terminology;fhir;constructor(e){this.config=e,this.config.services??={},this.config.services.projectApiUrl??=e.projectApiUrl,this.config.services.fhirApiUrl??=e.fhirApiUrl,this.application=new c(e),this.developer=new f(e),this.m2m=new O(e),this.messaging=new N(e),this.conversation=new m(e),this.transactionalSMS=new V(e),this.paymentMethod=new $(e),this.charge=new l(e),this.project=new C(e),this.rcm=new M(e),this.role=new _(e),this.secret=new L(e),this.telemed=new D(e),this.user=new F(e),this.version=new H(e),this.z3=new Z(e),this.zambda=new Y(e),this.zambdaLogStream=new ee(e),this.fax=new U(e),this.lab=new R(e),this.erx=new g(e),this.terminology=new G(e),this.fhir=new S(e)}};class se extends te{static OystehrFHIRError=r;static OystehrSdkError=t}export{se as default};
1
+ import{v4 as e,validate as t}from"uuid";class s extends Error{code;constructor({message:e,code:t,cause:r}){super(e,{cause:r}),Object.setPrototypeOf(this,s.prototype),this.code=t,this.name="OystehrSdkError"}toString(){return`${this.name}: ${this.message} (code: ${this.code})`}toJSON(){return{name:this.name,message:this.message,code:this.code,cause:this.cause}}}function r(e){const t=[];for(const s of e.issue??[])s.details&&s.details.text&&t.push(s.details.text);return t.length||t.push("Unknown FHIR error"),t.join(",")}class i extends s{cause;constructor({error:e,code:t}){super({message:r(e),code:t}),Object.setPrototypeOf(this,i.prototype),this.cause=e,this.name="OystehrFHIRError"}toJSON(){return{name:this.name,message:this.message,code:this.code,cause:this.cause}}}class n{_level;constructor({level:e}){this._level=e}error(e,t={}){this._level&&["error","info","debug"].includes(this._level)&&console.error(JSON.stringify({message:e,...t}))}info(e,t={}){this._level&&["info","debug"].includes(this._level)&&console.info(JSON.stringify({message:e,...t}))}debug(e,t={}){this._level&&["debug"].includes(this._level)&&console.debug(JSON.stringify({message:e,...t}))}time(e,t={}){this._level&&["debug"].includes(this._level)&&console.time(JSON.stringify({message:e,...t}))}timeEnd(e,t={}){this._level&&["debug"].includes(this._level)&&console.timeEnd(JSON.stringify({message:e,...t}))}}const h=[408,429,500,502,503,504],a=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT","UND_ERR_CONNECT_TIMEOUT","UND_ERR_HEADERS_TIMEOUT","UND_ERR_HEADERS_TIMEOUT","UND_ERR_SOCKET"];class u{config;logger;constructor(e){this.config=e,this.logger=new n({level:this.config.logLevel})}request(e,t,r){return async(i,n)=>{const h=()=>this.config,a=()=>this.logger;try{return await c(r,h,a,e,t)(i,n)}catch(e){const t=e;throw this.logger.error(t.message,{code:t.code,cause:t.cause}),new s({message:t.message,code:t.code,cause:t.cause})}}}fhirRequest(e,t){return async(r,n)=>{try{const s=()=>this.config.services?.fhirApiUrl??"https://fhir-api.zapehr.com",i=()=>this.config,h=()=>this.logger;return await c(s,i,h,e,t)(r,n)}catch(e){const t=e;if("string"==typeof t.message)throw new s({message:t.message,code:t.code,cause:t.cause});throw new i({error:t.message,code:t.code})}}}}function o(e){return"accessToken"in e||"projectId"in e&&t(e.projectId)||"contentType"in e&&2===e.contentType?.split("/").length||"requestId"in e||"ifMatch"in e&&e.ifMatch.startsWith('W/"')}function c(t,r,i,n,u){return async(c,d)=>{let[p,b]=function(e,t){const s=e&&!t&&!Array.isArray(e)&&o(e)?{}:e??{},r=e&&!t&&!Array.isArray(e)&&o(e)?e:t;return[s,r]}(c,d);b??={},b.requestId??=e();const m=r(),g=i(),f=u.toLowerCase();g.debug("Beginning fetch",{method:f,path:n,requestId:b?.requestId});const U=m.fetch??fetch,T=b?.accessToken??m.accessToken,k=b?.projectId??m.projectId;let q=n,y=p;if(!Array.isArray(p)){const[e,t]=function(e,t){const r={...t},i=e.replace(/\{([^}]+)\}/g,((e,i)=>{if(delete r[i],i.match(/^.*\+$/))return t[i]+"";if(!t[i]||""===t[i])throw new s({message:`Required path parameter is an empty string: ${i}`,code:400});return t[i]?encodeURIComponent(t[i]+""):""})),n=Object.keys(r),h=n.length?n.reduce(((e,t)=>({...e,[t]:r[t]})),{}):{};return[i,h]}(n,p);q=e,y=t}g.debug("Substituted parameters in path",{method:f,path:n,requestId:b?.requestId}),q=q.replace(/^\//,"");const v=t(),j=v.endsWith("/")?v:v+"/",w=new URL(q,j);let I;if(Array.isArray(y))I=JSON.stringify(y);else if(Object.keys(y).length)if("get"===f)l(y,w.searchParams);else if("application/x-www-form-urlencoded"===b?.contentType){const e=new URLSearchParams;l(y,e),I=e.toString()}else I=JSON.stringify(y);else"application/x-www-form-urlencoded"!==b?.contentType&&"post"===f&&(I="{}");g.debug("Prepared request body",{method:f,path:n,requestId:b?.requestId});const z=Object.assign(k?{"x-zapehr-project-id":k,"x-oystehr-project-id":k}:{},{"content-type":b?.contentType??"application/json"},T?{Authorization:`Bearer ${T}`}:{},b?.ifMatch?{"If-Match":b.ifMatch}:{},{"x-oystehr-request-id":b?.requestId}),x={retries:m.retry?.retries??3,jitter:m.retry?.jitter??20,delay:m.retry?.delay??100,onRetry:m.retry?.onRetry,retryOn:[...m.retry?.retryOn??[],...h]};return x.retryOn.push(...h),async function(e,t){let s;for(const r of Array.from({length:(t.retries??0)+1},((e,t)=>t)))try{return await e(r)}catch(e){let i=!1;if("response"in e){const r=e;i=t.retryOn.includes(r.code),s={message:e.message,code:e.code}}else if(s=e,"code"in e&&"string"==typeof e.code){const t=e;i=a.includes(t.code)}if(!i)break;const n=Math.floor(Math.random()*(t.jitter+1));await new Promise((e=>setTimeout(e,t.delay+n))),t.onRetry&&r!==(t.retries??0)&&t.onRetry(r+1)}throw s}((async()=>{g.info("Request start",{method:f,url:w,requestId:b?.requestId});const e=Date.now(),t=await U(new Request(w,{method:f.toUpperCase(),body:I,headers:z}));g.info("Request end",{method:f,url:w,duration:Date.now()-e,requestId:b?.requestId});const s=t.body?await t.text():null;let r;const i=t.headers.get("content-type");try{s&&(i?.includes("application/json")||i?.includes("application/fhir+json"))?(g.time("Deserialized JSON response",{method:f,url:w,requestId:b?.requestId}),r=JSON.parse(s),g.timeEnd("Deserialized JSON response",{method:f,url:w,requestId:b?.requestId})):s&&(i?.includes("application/xml")||i?.includes("text/xml"))?(g.time("Deserialized XML response",{method:f,url:w,requestId:b?.requestId}),r=function(e){try{const t=e.match(/<status>(\d+)<\/status>/),s=t?parseInt(t[1],10):null,r=e.match(/<output>([\s\S]*?)<\/output>/),i=r?r[1]:null;return null===s||null===i?null:{status:s,output:i}}catch(e){return null}}(s),g.timeEnd("Deserialized XML response",{method:f,url:w,requestId:b?.requestId})):r=null}catch(e){r=null}g.debug("Deserialized response",{method:f,url:w,requestId:b?.requestId});if(!t.ok||t.status>=400){throw{message:("string"==typeof r?.output?r.output:r?.output?.message)??r?.message??r??s??t.statusText,code:r?.output?.code??r?.code??t.status,response:t}}return r}),x)}}function l(e,t){for(const[s,r]of Object.entries(e))Array.isArray(r)?r.forEach((e=>t.append(s,e))):t.append(s,r)}class d extends u{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}list(e){return this.request("/application","get",this.#e.bind(this))(e)}create(e,t){return this.request("/application","post",this.#e.bind(this))(e,t)}get(e,t){return this.request("/application/{id}","get",this.#e.bind(this))(e,t)}update(e,t){return this.request("/application/{id}","patch",this.#e.bind(this))(e,t)}delete(e,t){return this.request("/application/{id}","delete",this.#e.bind(this))(e,t)}rotateSecret(e,t){return this.request("/application/{id}/rotate-secret","post",this.#e.bind(this))(e,t)}revokeRefreshToken(e,t){return this.request("/application/{id}/revoke-refresh-token","post",this.#e.bind(this))(e,t)}revokeAccessToken(e,t){return this.request("/application/{id}/revoke-access-token","post",this.#e.bind(this))(e,t)}}class p extends u{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}issue(e,t){return this.request("/payment/charge/issue","post",this.#e.bind(this))(e,t)}status(e,t){return this.request("/payment/charge/status","post",this.#e.bind(this))(e,t)}}const b="https://extensions.fhir.zapehr.com/encounter-virtual-service-pre-release",m="addressString";function g(e){if(function(e){return Object.hasOwn(e,"virtualService")}(e)){const t=e.virtualService?.find((e=>"https://fhir.zapehr.com/virtual-service-type"===e.channelType?.system));return t?.addressString}if(!e.extension)return;const t=e.extension.find((e=>e.url===b));if(!t?.extension)return;const s=t.extension?.find((e=>e.url===m))?.valueString;return s}class f extends u{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}ENCOUNTER_VS_EXTENSION_URL=b;ENCOUNTER_VS_EXTENSION_RELATIVE_URL=m;getConversationIdFromEncounter=g;create(e,t){return this.request("/messaging/conversation","post",this.#e.bind(this))(e,t)}getToken(e){return this.request("/messaging/conversation/token","get",this.#e.bind(this))(e)}addParticipant(e,t){return this.request("/messaging/conversation/{conversationId}/participant","post",this.#e.bind(this))(e,t)}removeParticipant(e,t){return this.request("/messaging/conversation/{conversationId}/participant","delete",this.#e.bind(this))(e,t)}message(e,t){return this.request("/messaging/conversation/{conversationId}/message","post",this.#e.bind(this))(e,t)}}class U extends u{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}get(e,t){return this.request("/developer/{id}","get",this.#e.bind(this))(e,t)}update(e,t){return this.request("/developer/{id}","patch",this.#e.bind(this))(e,t)}delete(e,t){return this.request("/developer/{id}","delete",this.#e.bind(this))(e,t)}invite(e,t){return this.request("/developer/invite","post",this.#e.bind(this))(e,t)}list(e){return this.request("/developer","get",this.#e.bind(this))(e)}listV2(e,t){return this.request("/developer/v2/list","get",this.#e.bind(this))(e,t)}}class T extends u{constructor(e){super(e)}#e(){return this.config.services?.erxApiUrl??"https://erx-api.zapehr.com/v3"}searchAllergens(e,t){return this.request("/allergen","get",this.#e.bind(this))(e,t)}searchMedications(e,t){return this.request("/medication","get",this.#e.bind(this))(e,t)}getMedication(e,t){return this.request("/medication/details","get",this.#e.bind(this))(e,t)}getConfiguration(e){return this.request("/config","get",this.#e.bind(this))(e)}checkAllergyInteractions(e,t){return this.request("/patient/{patientId}/interactions/allergy","get",this.#e.bind(this))(e,t)}checkMedicationInteractions(e,t){return this.request("/patient/{patientId}/interactions/medication","get",this.#e.bind(this))(e,t)}checkPrecheckInteractions(e,t){return this.request("/patient/{patientId}/interactions/precheck/{drugId}","get",this.#e.bind(this))(e,t)}getMedicationHistory(e,t){return this.request("/patient/{patientId}/medication-history","get",this.#e.bind(this))(e,t)}addPatientPharmacy(e,t){return this.request("/patient/{patientId}/pharmacies","post",this.#e.bind(this))(e,t)}cancelPrescription(e,t){return this.request("/patient/{patientId}/prescriptions/{medicationRequestId}","delete",this.#e.bind(this))(e,t)}syncPatient(e,t){return this.request("/patient/{patientId}/sync","post",this.#e.bind(this))(e,t)}searchPharmacies(e,t){return this.request("/pharmacy","get",this.#e.bind(this))(e,t)}connectPractitioner(e,t){return this.request("/practitioner/connect","get",this.#e.bind(this))(e,t)}checkPractitionerEnrollment(e,t){return this.request("/practitioner/{practitionerId}","get",this.#e.bind(this))(e,t)}enrollPractitioner(e,t){return this.request("/practitioner/{practitionerId}","post",this.#e.bind(this))(e,t)}unenrollPractitioner(e,t){return this.request("/practitioner/{practitionerId}","delete",this.#e.bind(this))(e,t)}}class k extends u{constructor(e){super(e)}#e(){return this.config.services?.faxApiUrl??"https://fax-api.zapehr.com/v1"}offboard(e){return this.request("/offboard","post",this.#e.bind(this))(e)}onboard(e){return this.request("/onboard","post",this.#e.bind(this))(e)}getConfiguration(e){return this.request("/config","get",this.#e.bind(this))(e)}send(e,t){return this.request("/send","post",this.#e.bind(this))(e,t)}}const q=65535;async function y(e,t){const{resourceType:s,params:r}=e;let i;r&&(i=Object.entries(r).reduce(((e,[t,s])=>(e[s.name]||(e[s.name]=[]),e[s.name].push(s.value),e)),{}));const n=await this.fhirRequest(`/${s}/_search`,"POST")(i,{...t,contentType:"application/x-www-form-urlencoded"});return{...n,entry:n.entry,unbundle:function(){return this.entry?.map((e=>e.resource)).filter((e=>void 0!==e))??[]}}}async function v(e,t){const{resourceType:s}=e;return this.fhirRequest(`/${s}`,"POST")(e,t)}async function j({resourceType:e,id:t},s){return this.fhirRequest(`/${e}/${t}`,"GET")({},s)}async function w(e,t){const{id:s,resourceType:r}=e;return this.fhirRequest(`/${r}/${s}`,"PUT")(e,{...t,ifMatch:t?.optimisticLockingVersionId?`W/"${t.optimisticLockingVersionId}"`:void 0})}async function I({resourceType:e,id:t,operations:s},r){return this.fhirRequest(`/${e}/${t}`,"PATCH")(s,{...r,contentType:"application/json-patch+json",ifMatch:r?.optimisticLockingVersionId?`W/"${r.optimisticLockingVersionId}"`:void 0})}async function z({resourceType:e,id:t},s){return this.fhirRequest(`/${e}/${t}`,"DELETE")({},s)}async function x({resourceType:e,id:t,versionId:s,count:r,offset:i},n){return s?this.fhirRequest(`/${e}/${t}/_history/${s}`,"GET")({},n):r?this.fhirRequest(`/${e}/${t}/_history?_total=accurate&_count=${r}\n ${i?`&_offset=${i}`:""}`,"GET")({},n):this.fhirRequest(`/${e}/${t}/_history?_total=accurate`,"GET")({},n)}function E(e){const{method:t,url:s}=e,r={request:{method:t,url:s}};if(s.split("?").length>1){const[e,t]=s.split("?"),i=t.split("&").map((e=>{const[t,s]=e.split("=");return{name:t,value:s}})).reduce(((e,{name:t,value:s})=>t?(e[t]||(e[t]=[]),e[t].push(s),e):e),{}),n=new URLSearchParams;l(i,n),r.request.url=`${e}?${n.toString()}`}if(["GET","DELETE","HEAD"].includes(t))return r;if("PUT"===t){const{resource:t}=e;return{request:{...r.request,ifMatch:e.ifMatch},resource:t}}if("PATCH"===t){if("resource"in e)return{request:{...r.request,ifMatch:e.ifMatch},resource:e.resource};const t=function(e){const t=(new globalThis.TextEncoder).encode(e);let s="";for(let e=0;e<t.length;e+=q){const r=t.subarray(e,e+q);s+=globalThis.btoa(String.fromCodePoint.apply(void 0,r))}return s}(JSON.stringify(e.operations));return{...r,resource:{resourceType:"Binary",contentType:"application/json-patch+json",data:t}}}if("POST"===t){const{resource:t,fullUrl:s}=e;return{...r,resource:t,fullUrl:s}}throw new Error("Unrecognized method")}async function S(e,t){const s=await this.fhirRequest("/","POST")({resourceType:"Bundle",type:"batch",entry:e.requests.map(E)},t);return{...s,entry:s.entry,unbundle:function(){return this.entry?.map((e=>e.resource)).filter((e=>void 0!==e))??[]},errors:function(){return this.entry?.filter((e=>e.response?.status?.startsWith("4")||e.response?.status?.startsWith("5"))).map((e=>e.response?.outcome)).filter((e=>void 0!==e))}}}async function A(e,t){const s=await this.fhirRequest("/","POST")({resourceType:"Bundle",type:"transaction",entry:e.requests.map(E)},t);return{...s,entry:s.entry,unbundle:function(){return this.entry?.map((e=>e.resource)).filter((e=>void 0!==e))??[]}}}function O(e,t){const s=[];if(e.line&&s.push(...e.line),e.city||e.state||e.postalCode){const t=[];e.city&&t.push(e.city),e.state&&t.push(e.state),e.postalCode&&t.push(e.postalCode),s.push(t.join(", "))}return e.use&&(t?.all||t?.use)&&s.push("["+e.use+"]"),s.join(t?.lineSeparator||", ").trim()}function P(e,t){const s=[];return e.prefix&&!1!==t?.prefix&&s.push(...e.prefix),e.given&&s.push(...e.given),e.family&&s.push(e.family),e.suffix&&!1!==t?.suffix&&s.push(...e.suffix),e.use&&(t?.all||t?.use)&&s.push("["+e.use+"]"),s.join(" ").trim()}class R extends u{constructor(e){super(e)}#e(){return this.config.services?.fhirApiUrl??"https://fhir-api.zapehr.com"}search=y;create=v;get=j;update=w;patch=I;delete=z;history=x;batch=S;transaction=A;formatAddress=O;formatHumanName=P}class N extends u{constructor(e){super(e)}#e(){return this.config.services?.labApiUrl??"https://labs-api.zapehr.com/v1"}routeList(e){return this.request("/route","get",this.#e.bind(this))(e)}routeCreate(e,t){return this.request("/route","post",this.#e.bind(this))(e,t)}routeGet(e,t){return this.request("/route/{routeGuid}","get",this.#e.bind(this))(e,t)}routeDelete(e,t){return this.request("/route/{routeGuid}","delete",this.#e.bind(this))(e,t)}orderableItemList(e,t){return this.request("/orderableItem","get",this.#e.bind(this))(e,t)}orderableItemQuestionnaireGet(e,t){return this.request("/canonical-questionnaire/lab/{labGuid}/compendium/{compendiumVersion}/item/{itemCode}/questionnaire","get",this.#e.bind(this))(e,t)}orderSubmit(e,t){return this.request("/submit","post",this.#e.bind(this))(e,t)}}class _ extends u{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}list(e){return this.request("/m2m","get",this.#e.bind(this))(e)}create(e,t){return this.request("/m2m","post",this.#e.bind(this))(e,t)}me(e){return this.request("/m2m/me","get",this.#e.bind(this))(e)}get(e,t){return this.request("/m2m/{id}","get",this.#e.bind(this))(e,t)}update(e,t){return this.request("/m2m/{id}","patch",this.#e.bind(this))(e,t)}delete(e,t){return this.request("/m2m/{id}","delete",this.#e.bind(this))(e,t)}rotateSecret(e,t){return this.request("/m2m/{id}/rotate-secret","post",this.#e.bind(this))(e,t)}listV2(e,t){return this.request("/m2m/v2/list","get",this.#e.bind(this))(e,t)}}class M extends u{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}getMessagingConfig(e){return this.request("/messaging/config","get",this.#e.bind(this))(e)}}class $ extends u{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}setUp(e,t){return this.request("/payment/payment-method/setup","post",this.#e.bind(this))(e,t)}setDefault(e,t){return this.request("/payment/payment-method/set-default","post",this.#e.bind(this))(e,t)}delete(e,t){return this.request("/payment/payment-method","delete",this.#e.bind(this))(e,t)}list(e,t){return this.request("/payment/payment-method/list","post",this.#e.bind(this))(e,t)}}class C extends u{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}get(e){return this.request("/project","get",this.#e.bind(this))(e)}update(e,t){return this.request("/project","patch",this.#e.bind(this))(e,t)}}class L extends u{constructor(e){super(e)}#e(){return this.config.services?.rcmApiUrl??"https://rcm-api.zapehr.com/v1"}eligibilityCheck(e,t){return this.request("/eligibility-check","post",this.#e.bind(this))(e,t)}submitClaim(e,t){return this.request("/claim/{claimId}/submit","post",this.#e.bind(this))(e,t)}setClaimStatus(e,t){return this.request("/claim/{claimId}/status","post",this.#e.bind(this))(e,t)}listPayers(e,t){return this.request("/payer","get",this.#e.bind(this))(e,t)}getPayer(e,t){return this.request("/payer/{id}","get",this.#e.bind(this))(e,t)}}class D extends u{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}list(e){return this.request("/iam/role","get",this.#e.bind(this))(e)}create(e,t){return this.request("/iam/role","post",this.#e.bind(this))(e,t)}get(e,t){return this.request("/iam/role/{roleId}","get",this.#e.bind(this))(e,t)}update(e,t){return this.request("/iam/role/{roleId}","patch",this.#e.bind(this))(e,t)}delete(e,t){return this.request("/iam/role/{roleId}","delete",this.#e.bind(this))(e,t)}}class J extends u{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}list(e){return this.request("/secret","get",this.#e.bind(this))(e)}set(e,t){return this.request("/secret","post",this.#e.bind(this))(e,t)}get(e,t){return this.request("/secret/{name}","get",this.#e.bind(this))(e,t)}delete(e,t){return this.request("/secret/{name}","delete",this.#e.bind(this))(e,t)}}class G extends u{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}createMeeting(e,t){return this.request("/telemed/v2/meeting","post",this.#e.bind(this))(e,t)}joinMeeting(e,t){return this.request("/telemed/v2/meeting/{encounterId}/join","get",this.#e.bind(this))(e,t)}}class H extends u{constructor(e){super(e)}#e(){return this.config.services?.terminologyApiUrl??"https://terminology-api.zapehr.com/v1"}searchCpt(e,t){return this.request("/cpt/search","get",this.#e.bind(this))(e,t)}searchHcpcs(e,t){return this.request("/hcpcs/search","get",this.#e.bind(this))(e,t)}}class V extends u{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}send(e,t){return this.request("/messaging/transactional-sms/send","post",this.#e.bind(this))(e,t)}}class F extends u{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}me(e){return this.request("/user/me","get",this.#e.bind(this))(e)}get(e,t){return this.request("/user/{id}","get",this.#e.bind(this))(e,t)}update(e,t){return this.request("/user/{id}","patch",this.#e.bind(this))(e,t)}delete(e,t){return this.request("/user/{id}","delete",this.#e.bind(this))(e,t)}resetMfa(e,t){return this.request("/user/{id}/reset-mfa","post",this.#e.bind(this))(e,t)}resetPasswordLink(e,t){return this.request("/user/{id}/reset-password-link","post",this.#e.bind(this))(e,t)}changePassword(e,t){return this.request("/user/{id}/change-password","post",this.#e.bind(this))(e,t)}invite(e,t){return this.request("/user/invite","post",this.#e.bind(this))(e,t)}list(e){return this.request("/user","get",this.#e.bind(this))(e)}listV2(e,t){return this.request("/user/v2/list","get",this.#e.bind(this))(e,t)}}class B extends u{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}get(e){return this.request("/version","get",this.#e.bind(this))(e)}}function W(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}async function X({bucketName:e,"objectPath+":t,file:s}){const r=await this.request("/z3/{bucketName}/{objectPath+}","post",W.bind(this))({action:"upload",bucketName:e,"objectPath+":t});await fetch(r.signedUrl,{method:"PUT",body:s})}async function Z({bucketName:e,"objectPath+":t}){const s=await this.request("/z3/{bucketName}/{objectPath+}","post",W.bind(this))({action:"download",bucketName:e,"objectPath+":t}),r=await fetch(s.signedUrl,{method:"GET"});if(!r.ok)throw new Error("Failed to download file");return r.arrayBuffer()}async function K(e){let t,r;const i=new URL(e.url);if("z3:"===i.protocol){const e=i.pathname.split("/").slice(1);t=i.hostname,r=e.join("/")}else{if(!i.href.startsWith(this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"))throw new s({message:"Invalid Z3 URL",code:400});{const e=i.pathname.split("/").slice(3);t=e[0],r=e.slice(1).join("/")}}const n={action:"upload",bucketName:t,"objectPath+":r};return this.request("/z3/{bucketName}/{objectPath+}","post",W.bind(this))(n)}class Q extends u{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}uploadFile=X;downloadFile=Z;getPresignedUrlForZ3Url=K;listBuckets(e){return this.request("/z3","get",this.#e.bind(this))(e)}createBucket(e,t){return this.request("/z3/{bucketName}","put",this.#e.bind(this))(e,t)}deleteBucket(e,t){return this.request("/z3/{bucketName}","delete",this.#e.bind(this))(e,t)}listObjects(e,t){return this.request("/z3/{bucketName}/{objectPath+}","get",this.#e.bind(this))(e,t)}getPresignedUrl(e,t){return this.request("/z3/{bucketName}/{objectPath+}","post",this.#e.bind(this))(e,t)}deleteObject(e,t){return this.request("/z3/{bucketName}/{objectPath+}","delete",this.#e.bind(this))(e,t)}}function Y(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}async function ee({id:e,file:t,filename:s}){const r=await this.request("/zambda/{id}/s3-upload","post",Y.bind(this))({id:e,filename:s});await fetch(r.signedUrl,{method:"PUT",body:t})}class te extends u{constructor(e){super(e)}#e(){return this.config.services?.zambdaApiUrl??"https://zambda-api.zapehr.com/v1"}uploadFile=ee;list(e){return this.request("/zambda","get",this.#e.bind(this))(e)}create(e,t){return this.request("/zambda","post",this.#e.bind(this))(e,t)}get(e,t){return this.request("/zambda/{id}","get",this.#e.bind(this))(e,t)}update(e,t){return this.request("/zambda/{id}","patch",this.#e.bind(this))(e,t)}delete(e,t){return this.request("/zambda/{id}","delete",this.#e.bind(this))(e,t)}execute(e,t){return this.request("/zambda/{id}/execute","post",this.#e.bind(this))(e,t)}executePublic(e,t){return this.request("/zambda/{id}/execute-public","post",this.#e.bind(this))(e,t)}s3Upload(e,t){return this.request("/zambda/{id}/s3-upload","post",this.#e.bind(this))(e,t)}}class se extends u{constructor(e){super(e)}#e(){return this.config.services?.zambdaApiUrl??"https://zambda-api.zapehr.com/v1"}list(e,t){return this.request("/zambda/{id}/logStream","post",this.#e.bind(this))(e,t)}search(e,t){return this.request("/zambda/{id}/logStream/search","post",this.#e.bind(this))(e,t)}get(e,t){return this.request("/zambda/{id}/logStream/{logStreamName}","post",this.#e.bind(this))(e,t)}}let re=class{config;application;developer;m2m;messaging;conversation;transactionalSMS;paymentMethod;charge;project;role;secret;telemed;user;version;z3;fax;lab;erx;terminology;zambda;zambdaLogStream;rcm;fhir;constructor(e){this.config=e,this.config.services??={},this.config.services.projectApiUrl??=e.projectApiUrl,this.config.services.fhirApiUrl??=e.fhirApiUrl,this.application=new d(e),this.developer=new U(e),this.m2m=new _(e),this.messaging=new M(e),this.conversation=new f(e),this.transactionalSMS=new V(e),this.paymentMethod=new $(e),this.charge=new p(e),this.project=new C(e),this.role=new D(e),this.secret=new J(e),this.telemed=new G(e),this.user=new F(e),this.version=new B(e),this.z3=new Q(e),this.fax=new k(e),this.lab=new N(e),this.erx=new T(e),this.terminology=new H(e),this.zambda=new te(e),this.zambdaLogStream=new se(e),this.rcm=new L(e),this.fhir=new R(e)}};class ie extends re{static OystehrFHIRError=i;static OystehrSdkError=s}export{ie as default};
2
2
  //# sourceMappingURL=index.min.js.map