@oystehr/sdk 4.1.9 → 4.2.0

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 (115) hide show
  1. package/dist/cjs/config.d.ts +1 -0
  2. package/dist/cjs/index.min.cjs +1 -1
  3. package/dist/cjs/index.min.cjs.map +1 -1
  4. package/dist/cjs/resources/classes/fhir-ext.cjs +14 -1
  5. package/dist/cjs/resources/classes/fhir-ext.cjs.map +1 -1
  6. package/dist/cjs/resources/classes/index.cjs +3 -6
  7. package/dist/cjs/resources/classes/index.cjs.map +1 -1
  8. package/dist/cjs/resources/classes/index.d.ts +2 -4
  9. package/dist/cjs/resources/classes/lab.cjs +10 -0
  10. package/dist/cjs/resources/classes/lab.cjs.map +1 -1
  11. package/dist/cjs/resources/classes/lab.d.ts +9 -1
  12. package/dist/cjs/resources/classes/terminology.cjs +34 -0
  13. package/dist/cjs/resources/classes/terminology.cjs.map +1 -0
  14. package/dist/cjs/resources/classes/terminology.d.ts +21 -0
  15. package/dist/cjs/resources/classes/user.cjs +9 -0
  16. package/dist/cjs/resources/classes/user.cjs.map +1 -1
  17. package/dist/cjs/resources/classes/user.d.ts +8 -1
  18. package/dist/cjs/resources/types/LabRouteGetResponse.d.ts +21 -0
  19. package/dist/cjs/resources/types/LabRouteListResponse.d.ts +3 -3
  20. package/dist/cjs/resources/types/TerminologySearchCptParams.d.ts +7 -0
  21. package/dist/cjs/resources/types/TerminologySearchCptResponse.d.ts +27 -0
  22. package/dist/cjs/resources/types/TerminologySearchHcpcsParams.d.ts +7 -0
  23. package/dist/cjs/resources/types/TerminologySearchHcpcsResponse.d.ts +27 -0
  24. package/dist/cjs/resources/types/UserResetPasswordLinkParams.d.ts +7 -0
  25. package/dist/cjs/resources/types/index.d.ts +6 -12
  26. package/dist/esm/config.d.ts +1 -0
  27. package/dist/esm/index.min.js +1 -1
  28. package/dist/esm/index.min.js.map +1 -1
  29. package/dist/esm/resources/classes/fhir-ext.js +14 -1
  30. package/dist/esm/resources/classes/fhir-ext.js.map +1 -1
  31. package/dist/esm/resources/classes/index.d.ts +2 -4
  32. package/dist/esm/resources/classes/index.js +3 -6
  33. package/dist/esm/resources/classes/index.js.map +1 -1
  34. package/dist/esm/resources/classes/lab.d.ts +9 -1
  35. package/dist/esm/resources/classes/lab.js +10 -0
  36. package/dist/esm/resources/classes/lab.js.map +1 -1
  37. package/dist/esm/resources/classes/terminology.d.ts +21 -0
  38. package/dist/esm/resources/classes/terminology.js +32 -0
  39. package/dist/esm/resources/classes/terminology.js.map +1 -0
  40. package/dist/esm/resources/classes/user.d.ts +8 -1
  41. package/dist/esm/resources/classes/user.js +9 -0
  42. package/dist/esm/resources/classes/user.js.map +1 -1
  43. package/dist/esm/resources/types/LabRouteGetResponse.d.ts +21 -0
  44. package/dist/esm/resources/types/LabRouteListResponse.d.ts +3 -3
  45. package/dist/esm/resources/types/TerminologySearchCptParams.d.ts +7 -0
  46. package/dist/esm/resources/types/TerminologySearchCptResponse.d.ts +27 -0
  47. package/dist/esm/resources/types/TerminologySearchHcpcsParams.d.ts +7 -0
  48. package/dist/esm/resources/types/TerminologySearchHcpcsResponse.d.ts +27 -0
  49. package/dist/esm/resources/types/UserResetPasswordLinkParams.d.ts +7 -0
  50. package/dist/esm/resources/types/index.d.ts +6 -12
  51. package/package.json +6 -4
  52. package/src/config.ts +1 -0
  53. package/src/resources/classes/fhir-ext.ts +16 -1
  54. package/src/resources/classes/index.ts +3 -6
  55. package/src/resources/classes/lab.ts +11 -0
  56. package/src/resources/classes/terminology.ts +41 -0
  57. package/src/resources/classes/user.ts +10 -0
  58. package/src/resources/types/LabRouteGetResponse.ts +23 -0
  59. package/src/resources/types/LabRouteListResponse.ts +3 -3
  60. package/src/resources/types/TerminologySearchCptParams.ts +9 -0
  61. package/src/resources/types/TerminologySearchCptResponse.ts +29 -0
  62. package/src/resources/types/TerminologySearchHcpcsParams.ts +9 -0
  63. package/src/resources/types/TerminologySearchHcpcsResponse.ts +29 -0
  64. package/src/resources/types/UserResetPasswordLinkParams.ts +9 -0
  65. package/src/resources/types/index.ts +6 -12
  66. package/dist/cjs/resources/classes/erxV1.cjs +0 -46
  67. package/dist/cjs/resources/classes/erxV1.cjs.map +0 -1
  68. package/dist/cjs/resources/classes/erxV1.d.ts +0 -31
  69. package/dist/cjs/resources/classes/erxV2.cjs +0 -22
  70. package/dist/cjs/resources/classes/erxV2.cjs.map +0 -1
  71. package/dist/cjs/resources/classes/erxV2.d.ts +0 -15
  72. package/dist/cjs/resources/types/ErxV1AllergySearchParams.d.ts +0 -3
  73. package/dist/cjs/resources/types/ErxV1AllergySearchResponse.d.ts +0 -19
  74. package/dist/cjs/resources/types/ErxV1CancelOrderParams.d.ts +0 -6
  75. package/dist/cjs/resources/types/ErxV1CancelOrderResponse.d.ts +0 -6
  76. package/dist/cjs/resources/types/ErxV1CancelPrescriptionParams.d.ts +0 -6
  77. package/dist/cjs/resources/types/ErxV1CancelPrescriptionResponse.d.ts +0 -6
  78. package/dist/cjs/resources/types/ErxV1MedicationSearchParams.d.ts +0 -6
  79. package/dist/cjs/resources/types/ErxV1MedicationSearchResponse.d.ts +0 -38
  80. package/dist/cjs/resources/types/ErxV1SyncPatientParams.d.ts +0 -3
  81. package/dist/cjs/resources/types/ErxV1SyncPatientResponse.d.ts +0 -9
  82. package/dist/cjs/resources/types/ErxV2MedicationSearchParams.d.ts +0 -4
  83. package/dist/cjs/resources/types/ErxV2MedicationSearchResponse.d.ts +0 -38
  84. package/dist/esm/resources/classes/erxV1.d.ts +0 -31
  85. package/dist/esm/resources/classes/erxV1.js +0 -44
  86. package/dist/esm/resources/classes/erxV1.js.map +0 -1
  87. package/dist/esm/resources/classes/erxV2.d.ts +0 -15
  88. package/dist/esm/resources/classes/erxV2.js +0 -20
  89. package/dist/esm/resources/classes/erxV2.js.map +0 -1
  90. package/dist/esm/resources/types/ErxV1AllergySearchParams.d.ts +0 -3
  91. package/dist/esm/resources/types/ErxV1AllergySearchResponse.d.ts +0 -19
  92. package/dist/esm/resources/types/ErxV1CancelOrderParams.d.ts +0 -6
  93. package/dist/esm/resources/types/ErxV1CancelOrderResponse.d.ts +0 -6
  94. package/dist/esm/resources/types/ErxV1CancelPrescriptionParams.d.ts +0 -6
  95. package/dist/esm/resources/types/ErxV1CancelPrescriptionResponse.d.ts +0 -6
  96. package/dist/esm/resources/types/ErxV1MedicationSearchParams.d.ts +0 -6
  97. package/dist/esm/resources/types/ErxV1MedicationSearchResponse.d.ts +0 -38
  98. package/dist/esm/resources/types/ErxV1SyncPatientParams.d.ts +0 -3
  99. package/dist/esm/resources/types/ErxV1SyncPatientResponse.d.ts +0 -9
  100. package/dist/esm/resources/types/ErxV2MedicationSearchParams.d.ts +0 -4
  101. package/dist/esm/resources/types/ErxV2MedicationSearchResponse.d.ts +0 -38
  102. package/src/resources/classes/erxV1.ts +0 -73
  103. package/src/resources/classes/erxV2.ts +0 -34
  104. package/src/resources/types/ErxV1AllergySearchParams.ts +0 -5
  105. package/src/resources/types/ErxV1AllergySearchResponse.ts +0 -21
  106. package/src/resources/types/ErxV1CancelOrderParams.ts +0 -8
  107. package/src/resources/types/ErxV1CancelOrderResponse.ts +0 -8
  108. package/src/resources/types/ErxV1CancelPrescriptionParams.ts +0 -8
  109. package/src/resources/types/ErxV1CancelPrescriptionResponse.ts +0 -8
  110. package/src/resources/types/ErxV1MedicationSearchParams.ts +0 -8
  111. package/src/resources/types/ErxV1MedicationSearchResponse.ts +0 -40
  112. package/src/resources/types/ErxV1SyncPatientParams.ts +0 -5
  113. package/src/resources/types/ErxV1SyncPatientResponse.ts +0 -11
  114. package/src/resources/types/ErxV2MedicationSearchParams.ts +0 -6
  115. package/src/resources/types/ErxV2MedicationSearchResponse.ts +0 -40
@@ -92,18 +92,6 @@ export * from './RcmValidateProfessionalClaimParams';
92
92
  export * from './RcmValidateProfessionalClaimResponse';
93
93
  export * from './RcmSubmitProfessionalClaimParams';
94
94
  export * from './RcmSubmitProfessionalClaimResponse';
95
- export * from './ErxV1SyncPatientParams';
96
- export * from './ErxV1SyncPatientResponse';
97
- export * from './ErxV1AllergySearchParams';
98
- export * from './ErxV1AllergySearchResponse';
99
- export * from './ErxV1CancelOrderParams';
100
- export * from './ErxV1CancelOrderResponse';
101
- export * from './ErxV1CancelPrescriptionParams';
102
- export * from './ErxV1CancelPrescriptionResponse';
103
- export * from './ErxV1MedicationSearchParams';
104
- export * from './ErxV1MedicationSearchResponse';
105
- export * from './ErxV2MedicationSearchParams';
106
- export * from './ErxV2MedicationSearchResponse';
107
95
  export * from './RoleListResponse';
108
96
  export * from './RoleCreateParams';
109
97
  export * from './RoleCreateResponse';
@@ -129,6 +117,7 @@ export * from './UserUpdateParams';
129
117
  export * from './UserUpdateResponse';
130
118
  export * from './UserDeleteParams';
131
119
  export * from './UserResetMfaParams';
120
+ export * from './UserResetPasswordLinkParams';
132
121
  export * from './UserInviteParams';
133
122
  export * from './UserInviteResponse';
134
123
  export * from './UserListResponse';
@@ -171,6 +160,7 @@ export * from './FaxSendResponse';
171
160
  export * from './LabRouteListResponse';
172
161
  export * from './LabRouteCreateParams';
173
162
  export * from './LabRouteCreateResponse';
163
+ export * from './LabRouteGetResponse';
174
164
  export * from './LabRouteDeleteParams';
175
165
  export * from './LabOrderableItemListParams';
176
166
  export * from './LabOrderableItemListResponse';
@@ -197,3 +187,7 @@ export * from './ErxCheckPractitionerEnrollmentParams';
197
187
  export * from './ErxCheckPractitionerEnrollmentResponse';
198
188
  export * from './ErxEnrollPractitionerParams';
199
189
  export * from './ErxUnenrollPractitionerParams';
190
+ export * from './TerminologySearchCptParams';
191
+ export * from './TerminologySearchCptResponse';
192
+ export * from './TerminologySearchHcpcsParams';
193
+ export * from './TerminologySearchHcpcsResponse';
@@ -18,6 +18,7 @@ export interface OystehrConfig {
18
18
  fhirApiUrl?: string;
19
19
  labApiUrl?: string;
20
20
  projectApiUrl?: string;
21
+ terminologyApiUrl?: string;
21
22
  };
22
23
  /**
23
24
  * Optionally provide a custom fetch implementation. This must conform to the
@@ -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 h{config;constructor(e){this.config=e}request(e,s,r){return async(i,n)=>{const h=()=>this.config;try{return await o(r,h,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 o(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 a(e){return"accessToken"in e}function o(s,r,h,o){return async(c,p)=>{const l=c&&!p&&!Array.isArray(c)&&a(c)?{}:c??{},d=c&&!p&&!Array.isArray(c)&&a(c)?c:p,b=o.toLowerCase(),m=r(),g=m.fetch??fetch,f=d?.accessToken??m.accessToken,U=d?.projectId??r().projectId;let T=h,k=l;if(!Array.isArray(l)){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),h=n.length?n.reduce(((e,t)=>({...e,[t]:r[t]})),{}):{};return[i,h]}(h,l);T=e,k=s}T=T.replace(/^\//,"");const q=s(),y=q.endsWith("/")?q:q+"/",v=new URL(T,y);let j;if(Array.isArray(k))j=JSON.stringify(k);else if(Object.keys(k).length)if("get"===b)u(k,v.searchParams);else if("application/x-www-form-urlencoded"===d?.contentType){const e=new URLSearchParams;u(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"},f?{Authorization:`Bearer ${f}`}:{},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 h=Math.floor(Math.random()*(t.jitter+1));await new Promise((e=>setTimeout(e,t.delay+h))),t.onRetry&&r!==(t.retries??0)&&t.onRetry(r+1)}throw s}((async()=>{const e=await g(new Request(v,{method:b.toUpperCase(),body:j,headers:w})),t=e.body?await e.text():null;let s;try{s=t&&(e.headers.get("content-type")?.includes("application/json")||e.headers.get("content-type")?.includes("application/fhir+json"))?JSON.parse(t):null}catch(e){s=null}if(!e.ok||e.status>=400){throw{message:s?.output?.message??s?.message??s??t??e.statusText,code:s?.output?.code??s?.code??e.status,response:e}}return s}),x)}}function u(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 h{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 h{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 l="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===l));if(!t?.extension)return;const s=t.extension?.find((e=>e.url===d))?.valueString;return s}class m extends h{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}ENCOUNTER_VS_EXTENSION_URL=l;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 g extends h{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 f extends h{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)}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)}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)}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 h{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}syncPatient(e,t){return this.request("/erx/sync-patient/{patientId}","post",this.#e.bind(this))(e,t)}allergySearch(e,t){return this.request("/erx/allergy/search","get",this.#e.bind(this))(e,t)}cancelOrder(e,t){return this.request("/erx/cancel-order","post",this.#e.bind(this))(e,t)}cancelPrescription(e,t){return this.request("/erx/cancel-prescription","post",this.#e.bind(this))(e,t)}medicationSearch(e,t){return this.request("/erx/medication/search","get",this.#e.bind(this))(e,t)}}class T extends h{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}medicationSearch(e,t){return this.request("/erx/v2/medication/search","get",this.#e.bind(this))(e,t)}}class k extends h{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)}}async function q(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 v({resourceType:e,id:t},s){return this.fhirRequest(`/${e}/${t}`,"GET")({},s)}async function j(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 w({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 x({resourceType:e,id:t},s){return this.fhirRequest(`/${e}/${t}`,"DELETE")({},s)}async function z({resourceType:e,id:t,versionId:s},r){return this.fhirRequest(`/${e}/${t}/_history${s?`/${s}`:""}`,"GET")({},r)}function A(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;u(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)return"resource"in e?{request:{...r.request,ifMatch:e.ifMatch},resource:e.resource}:{...r,resource:{resourceType:"Binary",contentType:"application/json-patch+json",data:Buffer.from(JSON.stringify(e.operations),"utf8").toString("base64")}};if("POST"===t){const{resource:t,fullUrl:s}=e;return{...r,resource:t,fullUrl:s}}throw new Error("Unrecognized method")}function E(e){return async function(t,s){return this.fhirRequest("/","POST")({resourceType:"Bundle",type:e,entry:t.requests.map(A)},s)}}const S=E("batch"),I=E("transaction");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 O(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 h{constructor(e){super(e)}#e(){return this.config.services?.fhirApiUrl??"https://fhir-api.zapehr.com"}search=q;create=y;get=v;update=j;patch=w;delete=x;history=z;batch=S;transaction=I;formatAddress=P;formatHumanName=O}class N extends h{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)}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 M extends h{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 C extends h{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 h{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 _ extends h{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 h{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 V extends h{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 D extends h{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 F extends h{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 h{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 B extends h{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)}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 G extends h{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 J(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}async function W({bucketName:e,"objectPath+":t,file:s}){const r=await this.request("/z3/{bucketName}/{objectPath+}","post",J.bind(this))({action:"upload",bucketName:e,"objectPath+":t});await fetch(r.signedUrl,{method:"PUT",body:s})}async function X({bucketName:e,"objectPath+":t}){const s=await this.request("/z3/{bucketName}/{objectPath+}","post",J.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 Z(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",J.bind(this))(n)}class K extends h{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}uploadFile=W;downloadFile=X;getPresignedUrlForZ3Url=Z;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 Q(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}async function Y({id:e,file:t,filename:s}){const r=await this.request("/zambda/{id}/s3-upload","post",Q.bind(this))({id:e,filename:s});await fetch(r.signedUrl,{method:"PUT",body:t})}class ee extends h{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}uploadFile=Y;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 te extends h{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 se=class{config;application;developer;m2m;messaging;conversation;transactionalSMS;paymentMethod;charge;project;rcm;erxV1;erxV2;role;secret;telemed;user;version;z3;zambda;zambdaLogStream;fax;lab;erx;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 g(e),this.m2m=new M(e),this.messaging=new C(e),this.conversation=new m(e),this.transactionalSMS=new H(e),this.paymentMethod=new $(e),this.charge=new p(e),this.project=new _(e),this.rcm=new L(e),this.erxV1=new U(e),this.erxV2=new T(e),this.role=new V(e),this.secret=new D(e),this.telemed=new F(e),this.user=new B(e),this.version=new G(e),this.z3=new K(e),this.zambda=new ee(e),this.zambdaLogStream=new te(e),this.fax=new k(e),this.lab=new N(e),this.erx=new f(e),this.fhir=new R(e)}};class re extends se{static OystehrFHIRError=r;static OystehrSdkError=t}export{re as default};
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 h{config;constructor(e){this.config=e}request(e,s,r){return async(i,n)=>{const h=()=>this.config;try{return await o(r,h,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 o(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 a(e){return"accessToken"in e}function o(s,r,h,o){return async(c,p)=>{const l=c&&!p&&!Array.isArray(c)&&a(c)?{}:c??{},d=c&&!p&&!Array.isArray(c)&&a(c)?c:p,b=o.toLowerCase(),m=r(),g=m.fetch??fetch,f=d?.accessToken??m.accessToken,U=d?.projectId??r().projectId;let T=h,k=l;if(!Array.isArray(l)){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),h=n.length?n.reduce(((e,t)=>({...e,[t]:r[t]})),{}):{};return[i,h]}(h,l);T=e,k=s}T=T.replace(/^\//,"");const q=s(),y=q.endsWith("/")?q:q+"/",v=new URL(T,y);let j;if(Array.isArray(k))j=JSON.stringify(k);else if(Object.keys(k).length)if("get"===b)u(k,v.searchParams);else if("application/x-www-form-urlencoded"===d?.contentType){const e=new URLSearchParams;u(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"},f?{Authorization:`Bearer ${f}`}:{},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 h=Math.floor(Math.random()*(t.jitter+1));await new Promise((e=>setTimeout(e,t.delay+h))),t.onRetry&&r!==(t.retries??0)&&t.onRetry(r+1)}throw s}((async()=>{const e=await g(new Request(v,{method:b.toUpperCase(),body:j,headers:w})),t=e.body?await e.text():null;let s;try{s=t&&(e.headers.get("content-type")?.includes("application/json")||e.headers.get("content-type")?.includes("application/fhir+json"))?JSON.parse(t):null}catch(e){s=null}if(!e.ok||e.status>=400){throw{message:s?.output?.message??s?.message??s??t??e.statusText,code:s?.output?.code??s?.code??e.status,response:e}}return s}),x)}}function u(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 h{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 h{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 l="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===l));if(!t?.extension)return;const s=t.extension?.find((e=>e.url===d))?.valueString;return s}class m extends h{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}ENCOUNTER_VS_EXTENSION_URL=l;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 g extends h{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 f extends h{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)}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)}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)}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 h{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 q(e,t){const{resourceType:s}=e;return this.fhirRequest(`/${s}`,"POST")(e,t)}async function y({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},r){return this.fhirRequest(`/${e}/${t}/_history${s?`/${s}`:""}`,"GET")({},r)}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;u(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")}function E(e){return async function(t,s){return this.fhirRequest("/","POST")({resourceType:"Bundle",type:e,entry:t.requests.map(z)},s)}}const A=E("batch"),I=E("transaction");function S(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 O extends h{constructor(e){super(e)}#e(){return this.config.services?.fhirApiUrl??"https://fhir-api.zapehr.com"}search=k;create=q;get=y;update=v;patch=j;delete=w;history=x;batch=A;transaction=I;formatAddress=S;formatHumanName=P}class R extends h{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){return this.request("/route/{routeGuid}","get",this.#e.bind(this))(e)}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 N extends h{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 C extends h{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 M extends h{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 $ extends h{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 h{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 h{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 D extends h{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 V extends h{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 F extends h{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 H extends h{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 G extends h{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 B extends h{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 J(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}async function W({bucketName:e,"objectPath+":t,file:s}){const r=await this.request("/z3/{bucketName}/{objectPath+}","post",J.bind(this))({action:"upload",bucketName:e,"objectPath+":t});await fetch(r.signedUrl,{method:"PUT",body:s})}async function X({bucketName:e,"objectPath+":t}){const s=await this.request("/z3/{bucketName}/{objectPath+}","post",J.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 Z(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",J.bind(this))(n)}class K extends h{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}uploadFile=W;downloadFile=X;getPresignedUrlForZ3Url=Z;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 Q(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}async function Y({id:e,file:t,filename:s}){const r=await this.request("/zambda/{id}/s3-upload","post",Q.bind(this))({id:e,filename:s});await fetch(r.signedUrl,{method:"PUT",body:t})}class ee extends h{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}uploadFile=Y;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 te extends h{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 se=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 g(e),this.m2m=new N(e),this.messaging=new C(e),this.conversation=new m(e),this.transactionalSMS=new H(e),this.paymentMethod=new M(e),this.charge=new p(e),this.project=new $(e),this.rcm=new L(e),this.role=new _(e),this.secret=new D(e),this.telemed=new V(e),this.user=new G(e),this.version=new B(e),this.z3=new K(e),this.zambda=new ee(e),this.zambdaLogStream=new te(e),this.fax=new U(e),this.lab=new R(e),this.erx=new f(e),this.terminology=new F(e),this.fhir=new O(e)}};class re extends se{static OystehrFHIRError=r;static OystehrSdkError=t}export{re as default};
2
2
  //# sourceMappingURL=index.min.js.map