@oystehr/sdk 4.3.3 → 4.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cjs/config.d.ts +15 -0
- package/dist/cjs/index.min.cjs +1 -1
- package/dist/cjs/index.min.cjs.map +1 -1
- package/dist/cjs/resources/classes/fhir-ext.cjs +294 -19
- package/dist/cjs/resources/classes/fhir-ext.cjs.map +1 -1
- package/dist/cjs/resources/classes/fhir-ext.d.ts +2 -1
- package/dist/cjs/resources/classes/fhir.cjs +1 -0
- package/dist/cjs/resources/classes/fhir.cjs.map +1 -1
- package/dist/cjs/resources/classes/fhir.d.ts +1 -0
- package/dist/cjs/resources/classes/index.cjs +7 -0
- package/dist/cjs/resources/classes/index.cjs.map +1 -1
- package/dist/cjs/resources/types/RcmListPayersParams.d.ts +4 -0
- package/dist/cjs/resources/types/RcmListPayersResponse.d.ts +9 -1
- package/dist/cjs/resources/types/TelemedCreateMeetingParams.d.ts +4 -0
- package/dist/cjs/resources/types/fhir.d.ts +16 -3
- package/dist/esm/config.d.ts +15 -0
- package/dist/esm/index.min.js +1 -1
- package/dist/esm/index.min.js.map +1 -1
- package/dist/esm/resources/classes/fhir-ext.d.ts +2 -1
- package/dist/esm/resources/classes/fhir-ext.js +294 -20
- package/dist/esm/resources/classes/fhir-ext.js.map +1 -1
- package/dist/esm/resources/classes/fhir.d.ts +1 -0
- package/dist/esm/resources/classes/fhir.js +2 -1
- package/dist/esm/resources/classes/fhir.js.map +1 -1
- package/dist/esm/resources/classes/index.js +7 -0
- package/dist/esm/resources/classes/index.js.map +1 -1
- package/dist/esm/resources/types/RcmListPayersParams.d.ts +4 -0
- package/dist/esm/resources/types/RcmListPayersResponse.d.ts +9 -1
- package/dist/esm/resources/types/TelemedCreateMeetingParams.d.ts +4 -0
- package/dist/esm/resources/types/fhir.d.ts +16 -3
- package/package.json +1 -1
- package/src/config.ts +16 -0
- package/src/resources/classes/fhir-ext.ts +331 -19
- package/src/resources/classes/fhir.ts +1 -0
- package/src/resources/classes/index.ts +7 -0
- package/src/resources/types/RcmListPayersParams.ts +4 -0
- package/src/resources/types/RcmListPayersResponse.ts +9 -1
- package/src/resources/types/TelemedCreateMeetingParams.ts +4 -0
- package/src/resources/types/fhir.ts +20 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../../src/resources/classes/index.ts"],"sourcesContent":["// AUTOGENERATED -- DO NOT EDIT\n\nimport { OystehrConfig } from '../../config';\nimport { Application } from './application';\nimport { Charge } from './charge';\nimport { Conversation } from './conversation';\nimport { Developer } from './developer';\nimport { Erx } from './erx';\nimport { Fax } from './fax';\nimport { Fhir } from './fhir';\nimport { Lab } from './lab';\nimport { M2m } from './m2m';\nimport { Messaging } from './messaging';\nimport { PaymentMethod } from './paymentMethod';\nimport { Project } from './project';\nimport { Rcm } from './rcm';\nimport { Role } from './role';\nimport { Secret } from './secret';\nimport { Telemed } from './telemed';\nimport { Terminology } from './terminology';\nimport { TransactionalSMS } from './transactionalSMS';\nimport { User } from './user';\nimport { Version } from './version';\nimport { Z3 } from './z3';\nimport { Zambda } from './zambda';\nimport { ZambdaLogStream } from './zambdaLogStream';\n\nexport class Oystehr {\n readonly config: OystehrConfig;\n readonly application: Application;\n readonly developer: Developer;\n readonly m2m: M2m;\n readonly messaging: Messaging;\n readonly conversation: Conversation;\n readonly transactionalSMS: TransactionalSMS;\n readonly paymentMethod: PaymentMethod;\n readonly charge: Charge;\n readonly project: Project;\n readonly role: Role;\n readonly secret: Secret;\n readonly telemed: Telemed;\n readonly user: User;\n readonly version: Version;\n readonly z3: Z3;\n readonly fax: Fax;\n readonly lab: Lab;\n readonly erx: Erx;\n readonly terminology: Terminology;\n readonly zambda: Zambda;\n readonly zambdaLogStream: ZambdaLogStream;\n readonly rcm: Rcm;\n readonly fhir: Fhir;\n constructor(config: OystehrConfig) {\n this.config = config;\n this.config.services ??= {};\n this.config.services['projectApiUrl'] ??= config.projectApiUrl;\n this.config.services['fhirApiUrl'] ??= config.fhirApiUrl;\n this.application = new Application(config);\n this.developer = new Developer(config);\n this.m2m = new M2m(config);\n this.messaging = new Messaging(config);\n this.conversation = new Conversation(config);\n this.transactionalSMS = new TransactionalSMS(config);\n this.paymentMethod = new PaymentMethod(config);\n this.charge = new Charge(config);\n this.project = new Project(config);\n this.role = new Role(config);\n this.secret = new Secret(config);\n this.telemed = new Telemed(config);\n this.user = new User(config);\n this.version = new Version(config);\n this.z3 = new Z3(config);\n this.fax = new Fax(config);\n this.lab = new Lab(config);\n this.erx = new Erx(config);\n this.terminology = new Terminology(config);\n this.zambda = new Zambda(config);\n this.zambdaLogStream = new ZambdaLogStream(config);\n this.rcm = new Rcm(config);\n this.fhir = new Fhir(config);\n }\n}\n"],"names":["Application","Developer","M2m","Messaging","Conversation","TransactionalSMS","PaymentMethod","Charge","Project","Role","Secret","Telemed","User","Version","Z3","Fax","Lab","Erx","Terminology","Zambda","ZambdaLogStream","Rcm","Fhir"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../../src/resources/classes/index.ts"],"sourcesContent":["// AUTOGENERATED -- DO NOT EDIT\n\nimport { OystehrConfig } from '../../config';\nimport { OystehrSdkError } from '../../errors';\nimport { Application } from './application';\nimport { Charge } from './charge';\nimport { Conversation } from './conversation';\nimport { Developer } from './developer';\nimport { Erx } from './erx';\nimport { Fax } from './fax';\nimport { Fhir } from './fhir';\nimport { Lab } from './lab';\nimport { M2m } from './m2m';\nimport { Messaging } from './messaging';\nimport { PaymentMethod } from './paymentMethod';\nimport { Project } from './project';\nimport { Rcm } from './rcm';\nimport { Role } from './role';\nimport { Secret } from './secret';\nimport { Telemed } from './telemed';\nimport { Terminology } from './terminology';\nimport { TransactionalSMS } from './transactionalSMS';\nimport { User } from './user';\nimport { Version } from './version';\nimport { Z3 } from './z3';\nimport { Zambda } from './zambda';\nimport { ZambdaLogStream } from './zambdaLogStream';\n\nexport class Oystehr {\n readonly config: OystehrConfig;\n readonly application: Application;\n readonly developer: Developer;\n readonly m2m: M2m;\n readonly messaging: Messaging;\n readonly conversation: Conversation;\n readonly transactionalSMS: TransactionalSMS;\n readonly paymentMethod: PaymentMethod;\n readonly charge: Charge;\n readonly project: Project;\n readonly role: Role;\n readonly secret: Secret;\n readonly telemed: Telemed;\n readonly user: User;\n readonly version: Version;\n readonly z3: Z3;\n readonly fax: Fax;\n readonly lab: Lab;\n readonly erx: Erx;\n readonly terminology: Terminology;\n readonly zambda: Zambda;\n readonly zambdaLogStream: ZambdaLogStream;\n readonly rcm: Rcm;\n readonly fhir: Fhir;\n constructor(config: OystehrConfig) {\n if (config.workspaceTag && config.ignoreTags) {\n throw new OystehrSdkError({\n message: 'workspaceTag and ignoreTags are mutually exclusive and cannot both be set in config',\n code: 400,\n });\n }\n this.config = config;\n this.config.services ??= {};\n this.config.services['projectApiUrl'] ??= config.projectApiUrl;\n this.config.services['fhirApiUrl'] ??= config.fhirApiUrl;\n this.application = new Application(config);\n this.developer = new Developer(config);\n this.m2m = new M2m(config);\n this.messaging = new Messaging(config);\n this.conversation = new Conversation(config);\n this.transactionalSMS = new TransactionalSMS(config);\n this.paymentMethod = new PaymentMethod(config);\n this.charge = new Charge(config);\n this.project = new Project(config);\n this.role = new Role(config);\n this.secret = new Secret(config);\n this.telemed = new Telemed(config);\n this.user = new User(config);\n this.version = new Version(config);\n this.z3 = new Z3(config);\n this.fax = new Fax(config);\n this.lab = new Lab(config);\n this.erx = new Erx(config);\n this.terminology = new Terminology(config);\n this.zambda = new Zambda(config);\n this.zambdaLogStream = new ZambdaLogStream(config);\n this.rcm = new Rcm(config);\n this.fhir = new Fhir(config);\n }\n}\n"],"names":["OystehrSdkError","Application","Developer","M2m","Messaging","Conversation","TransactionalSMS","PaymentMethod","Charge","Project","Role","Secret","Telemed","User","Version","Z3","Fax","Lab","Erx","Terminology","Zambda","ZambdaLogStream","Rcm","Fhir"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;sBA4Ba,OAAO,CAAA;AACT,IAAA,MAAM;AACN,IAAA,WAAW;AACX,IAAA,SAAS;AACT,IAAA,GAAG;AACH,IAAA,SAAS;AACT,IAAA,YAAY;AACZ,IAAA,gBAAgB;AAChB,IAAA,aAAa;AACb,IAAA,MAAM;AACN,IAAA,OAAO;AACP,IAAA,IAAI;AACJ,IAAA,MAAM;AACN,IAAA,OAAO;AACP,IAAA,IAAI;AACJ,IAAA,OAAO;AACP,IAAA,EAAE;AACF,IAAA,GAAG;AACH,IAAA,GAAG;AACH,IAAA,GAAG;AACH,IAAA,WAAW;AACX,IAAA,MAAM;AACN,IAAA,eAAe;AACf,IAAA,GAAG;AACH,IAAA,IAAI;AACb,IAAA,WAAA,CAAY,MAAqB,EAAA;QAC/B,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,UAAU,EAAE;YAC5C,MAAM,IAAIA,qBAAe,CAAC;AACxB,gBAAA,OAAO,EAAE,qFAAqF;AAC9F,gBAAA,IAAI,EAAE,GAAG;AACV,aAAA,CAAC;QACJ;AACA,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,EAAE;QAC3B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,MAAM,CAAC,aAAa;QAC9D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,MAAM,CAAC,UAAU;QACxD,IAAI,CAAC,WAAW,GAAG,IAAIC,uBAAW,CAAC,MAAM,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,IAAIC,mBAAS,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,GAAG,GAAG,IAAIC,OAAG,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAIC,mBAAS,CAAC,MAAM,CAAC;QACtC,IAAI,CAAC,YAAY,GAAG,IAAIC,yBAAY,CAAC,MAAM,CAAC;QAC5C,IAAI,CAAC,gBAAgB,GAAG,IAAIC,iCAAgB,CAAC,MAAM,CAAC;QACpD,IAAI,CAAC,aAAa,GAAG,IAAIC,2BAAa,CAAC,MAAM,CAAC;QAC9C,IAAI,CAAC,MAAM,GAAG,IAAIC,aAAM,CAAC,MAAM,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,IAAIC,eAAO,CAAC,MAAM,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,IAAIC,SAAI,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAIC,aAAM,CAAC,MAAM,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,IAAIC,eAAO,CAAC,MAAM,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,IAAIC,SAAI,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,IAAIC,eAAO,CAAC,MAAM,CAAC;QAClC,IAAI,CAAC,EAAE,GAAG,IAAIC,KAAE,CAAC,MAAM,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,IAAIC,OAAG,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,GAAG,GAAG,IAAIC,OAAG,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,GAAG,GAAG,IAAIC,OAAG,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,IAAIC,uBAAW,CAAC,MAAM,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,IAAIC,aAAM,CAAC,MAAM,CAAC;QAChC,IAAI,CAAC,eAAe,GAAG,IAAIC,+BAAe,CAAC,MAAM,CAAC;QAClD,IAAI,CAAC,GAAG,GAAG,IAAIC,OAAG,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAIC,SAAI,CAAC,MAAM,CAAC;IAC9B;AACD;;;;"}
|
|
@@ -2,4 +2,12 @@ import { Organization } from 'fhir/r4b';
|
|
|
2
2
|
/**
|
|
3
3
|
* List of payers matching the search criteria.
|
|
4
4
|
*/
|
|
5
|
-
export
|
|
5
|
+
export interface RcmListPayersResponse {
|
|
6
|
+
data: Organization[];
|
|
7
|
+
metadata: {
|
|
8
|
+
/**
|
|
9
|
+
* Cursor to fetch the next page of results. Null if there are no further pages.
|
|
10
|
+
*/
|
|
11
|
+
nextCursor: string | null;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
@@ -4,4 +4,8 @@ export interface TelemedCreateMeetingParams {
|
|
|
4
4
|
* Well formed Encounter with the https://extensions.fhir.oystehr.com/encounter-other-participants extension specified optionally.
|
|
5
5
|
*/
|
|
6
6
|
encounter: Encounter;
|
|
7
|
+
/**
|
|
8
|
+
* If true, audio from the meeting will be recorded and stored as an MP4 file in Z3. Defaults to false.
|
|
9
|
+
*/
|
|
10
|
+
recordAudio?: boolean;
|
|
7
11
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Operation } from 'fast-json-patch';
|
|
2
|
-
import type { Binary as BinaryR4B, Bundle as BundleR4B, BundleEntry as BundleEntryR4B, FhirResource as FhirResourceR4B, OperationOutcome as OperationOutcomeR4B } from 'fhir/r4b';
|
|
3
|
-
import type { Binary as BinaryR5, Bundle as BundleR5, BundleEntry as BundleEntryR5, FhirResource as FhirResourceR5, OperationOutcome as OperationOutcomeR5 } from 'fhir/r5';
|
|
2
|
+
import type { Binary as BinaryR4B, Bundle as BundleR4B, BundleEntry as BundleEntryR4B, Coding as CodingR4B, FhirResource as FhirResourceR4B, OperationOutcome as OperationOutcomeR4B, Resource as ResourceR4B } from 'fhir/r4b';
|
|
3
|
+
import type { Binary as BinaryR5, Bundle as BundleR5, BundleEntry as BundleEntryR5, Coding as CodingR5, FhirResource as FhirResourceR5, OperationOutcome as OperationOutcomeR5, Resource as ResourceR5 } from 'fhir/r5';
|
|
4
4
|
export type FhirResource = FhirResourceR4B | FhirResourceR5;
|
|
5
5
|
export type FhirBundle<F extends FhirResource> = F extends FhirResourceR4B ? BundleR4B<F> : BundleR5<F>;
|
|
6
6
|
export type EntrylessFhirBundle<F extends FhirResource> = F extends FhirResourceR4B ? Omit<BundleR4B<F>, 'entry'> : Omit<BundleR5<F>, 'entry'>;
|
|
@@ -28,6 +28,8 @@ export type TransactionBundle<F extends FhirResource> = EntrylessFhirBundle<F> &
|
|
|
28
28
|
export type BundleEntry<F extends FhirResource> = F extends FhirResourceR4B ? BundleEntryR4B<F> : BundleEntryR5<F>;
|
|
29
29
|
export type Binary<F extends FhirResource> = F extends FhirResourceR4B ? BinaryR4B : BinaryR5;
|
|
30
30
|
export type OperationOutcome = OperationOutcomeR4B | OperationOutcomeR5;
|
|
31
|
+
export type Coding = CodingR4B | CodingR5;
|
|
32
|
+
export type Resource = ResourceR4B | ResourceR5;
|
|
31
33
|
export type SearchParam = {
|
|
32
34
|
name: string;
|
|
33
35
|
value: string | number;
|
|
@@ -56,6 +58,9 @@ export interface FhirDeleteParams<T extends FhirResource> {
|
|
|
56
58
|
resourceType: T['resourceType'];
|
|
57
59
|
id: string;
|
|
58
60
|
}
|
|
61
|
+
export interface GenerateFriendlyPatientIdParams {
|
|
62
|
+
id: string;
|
|
63
|
+
}
|
|
59
64
|
export interface FhirHistorySearchParams<T extends FhirResource> {
|
|
60
65
|
resourceType: T['resourceType'];
|
|
61
66
|
id: string;
|
|
@@ -89,6 +94,14 @@ export interface BatchInputPostRequest<F extends FhirResource> extends BatchInpu
|
|
|
89
94
|
resource: F;
|
|
90
95
|
fullUrl?: string;
|
|
91
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* A batch POST to a `_search` endpoint (e.g. `Patient/_search`). Search parameters
|
|
99
|
+
* may be appended to the URL as query parameters. Unlike a create POST there is no
|
|
100
|
+
* resource body.
|
|
101
|
+
*/
|
|
102
|
+
export interface BatchInputSearchPostRequest extends BatchInputBaseRequest {
|
|
103
|
+
method: 'POST';
|
|
104
|
+
}
|
|
92
105
|
export interface BatchInputBinaryPatchRequest<F extends FhirResource> extends BatchInputBaseRequest {
|
|
93
106
|
method: 'PATCH';
|
|
94
107
|
ifMatch?: string;
|
|
@@ -100,7 +113,7 @@ export interface BatchInputJSONPatchRequest extends BatchInputBaseRequest {
|
|
|
100
113
|
operations: Operation[];
|
|
101
114
|
}
|
|
102
115
|
export type BatchInputPatchRequest<F extends FhirResource> = BatchInputBinaryPatchRequest<F> | BatchInputJSONPatchRequest;
|
|
103
|
-
export type BatchInputRequest<F extends FhirResource> = BatchInputGetRequest | BatchInputHeadRequest | BatchInputPutRequest<F> | BatchInputPatchRequest<F> | BatchInputPostRequest<F> | BatchInputDeleteRequest;
|
|
116
|
+
export type BatchInputRequest<F extends FhirResource> = BatchInputGetRequest | BatchInputHeadRequest | BatchInputPutRequest<F> | BatchInputPatchRequest<F> | BatchInputPostRequest<F> | BatchInputSearchPostRequest | BatchInputDeleteRequest;
|
|
104
117
|
export interface BatchInput<F extends FhirResource> {
|
|
105
118
|
requests: BatchInputRequest<F>[];
|
|
106
119
|
}
|
package/dist/esm/config.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Coding } from './resources/types/fhir';
|
|
1
2
|
/**
|
|
2
3
|
* Configuration for the Oystehr SDK client
|
|
3
4
|
*/
|
|
@@ -62,6 +63,20 @@ export interface OystehrConfig {
|
|
|
62
63
|
*/
|
|
63
64
|
retryOn?: number[];
|
|
64
65
|
};
|
|
66
|
+
/**
|
|
67
|
+
* Optional workspace tag configuration. When set, all FHIR searches will be
|
|
68
|
+
* filtered to only return resources with this tag, and all FHIR mutations
|
|
69
|
+
* (create, update, patch) will have this tag injected automatically.
|
|
70
|
+
* Mutually exclusive with `ignoreTags`.
|
|
71
|
+
*/
|
|
72
|
+
workspaceTag?: Coding;
|
|
73
|
+
/**
|
|
74
|
+
* Optional list of tags to ignore. When set, all FHIR searches will be
|
|
75
|
+
* filtered to exclude resources matching any of these tags, and mutations
|
|
76
|
+
* will throw an error if the resource carries any of these tags.
|
|
77
|
+
* Mutually exclusive with `workspaceTag`.
|
|
78
|
+
*/
|
|
79
|
+
ignoreTags?: Coding[];
|
|
65
80
|
}
|
|
66
81
|
export declare function getConfig(): OystehrConfig;
|
|
67
82
|
export declare function setConfig(config: OystehrConfig): void;
|
package/dist/esm/index.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
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};
|
|
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 o=[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 o=()=>this.config,a=()=>this.logger;try{return await c(r,o,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,o=()=>this.logger;return await c(s,i,o,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 h(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)&&h(e)?{}:e??{},r=e&&!t&&!Array.isArray(e)&&h(e)?e:t;return[s,r]}(c,d);b??={},b.requestId??=e();const g=r(),m=i(),f=u.toLowerCase();m.debug("Beginning fetch",{method:f,path:n,requestId:b?.requestId});const T=g.fetch??fetch,U=b?.accessToken??g.accessToken,k=b?.projectId??g.projectId;let y=n,q=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),o=n.length?n.reduce(((e,t)=>({...e,[t]:r[t]})),{}):{};return[i,o]}(n,p);y=e,q=t}m.debug("Substituted parameters in path",{method:f,path:n,requestId:b?.requestId}),y=y.replace(/^\//,"");const v=t(),w=v.endsWith("/")?v:v+"/",j=new URL(y,w);let I;if(Array.isArray(q))I=JSON.stringify(q);else if(Object.keys(q).length)if("get"===f)l(q,j.searchParams);else if("application/x-www-form-urlencoded"===b?.contentType){const e=new URLSearchParams;l(q,e),I=e.toString()}else I=JSON.stringify(q);else"application/x-www-form-urlencoded"!==b?.contentType&&"post"===f&&(I="{}");m.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"},U?{Authorization:`Bearer ${U}`}:{},b?.ifMatch?{"If-Match":b.ifMatch}:{},{"x-oystehr-request-id":b?.requestId}),x={retries:g.retry?.retries??3,jitter:g.retry?.jitter??20,delay:g.retry?.delay??100,onRetry:g.retry?.onRetry,retryOn:[...g.retry?.retryOn??[],...o]};return x.retryOn.push(...o),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()=>{m.info("Request start",{method:f,url:j,requestId:b?.requestId});const e=Date.now(),t=await T(new Request(j,{method:f.toUpperCase(),body:I,headers:z}));m.info("Request end",{method:f,url:j,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"))?(m.time("Deserialized JSON response",{method:f,url:j,requestId:b?.requestId}),r=JSON.parse(s),m.timeEnd("Deserialized JSON response",{method:f,url:j,requestId:b?.requestId})):s&&(i?.includes("application/xml")||i?.includes("text/xml"))?(m.time("Deserialized XML response",{method:f,url:j,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),m.timeEnd("Deserialized XML response",{method:f,url:j,requestId:b?.requestId})):r=null}catch(e){r=null}m.debug("Deserialized response",{method:f,url:j,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",g="addressString";function m(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===g))?.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=g;getConversationIdFromEncounter=m;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 T 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 U 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 y=65535;function q(e){const t=(new globalThis.TextEncoder).encode(e);let s="";for(let e=0;e<t.length;e+=y){const r=t.subarray(e,e+y);s+=globalThis.btoa(String.fromCodePoint.apply(void 0,r))}return s}function v(e){return e.system?`${e.system}|${e.code??""}`:e.code??""}function w(e,t){return(e.system??"")===(t.system??"")&&(e.code??"")===(t.code??"")}function j(e,t){const r=t;if(e.ignoreTags?.length){const i=r.meta?.tag??[];for(const t of e.ignoreTags)if(i.some((e=>w(e,t))))throw new s({message:`Resource has an ignored tag (system: "${t.system??""}", code: "${t.code??""}") and cannot be mutated in ignoreTags mode`,code:400});return t}if(e.workspaceTag){const s=e.workspaceTag,i=r.meta?.tag??[];if(!i.some((e=>w(e,s))))return{...t,meta:{...r.meta,tag:[...i,s]}}}return t}function I(e,t){if(e.ignoreTags?.length){for(const r of t)if("add"===r.op||"replace"===r.op||"test"===r.op){const t=r.value;if(null!=t&&"object"==typeof t){const r=t;if(void 0!==r.code)for(const t of e.ignoreTags)if(w(r,t))throw new s({message:`Patch operation contains an ignored tag (system: "${t.system??""}", code: "${t.code??""}") and cannot be applied in ignoreTags mode`,code:400})}}return t}if(e.workspaceTag){const s=e.workspaceTag;return t.reduce(((e,t)=>{if("remove"===t.op&&"/meta/tag"===t.path)return e.push(t),e.push({op:"add",path:"/meta/tag",value:[s]}),e;if("remove"===t.op&&"/meta"===t.path)return e.push(t),e.push({op:"add",path:"/meta",value:{tag:[s]}}),e;if(("add"===t.op||"replace"===t.op)&&"/meta/tag"===t.path){const r=Array.isArray(t.value)?t.value:[];return r.some((e=>w(e,s)))?e.push(t):e.push({...t,value:[...r,s]}),e}if(("add"===t.op||"replace"===t.op)&&"/meta"===t.path){const r=null!=t.value&&"object"==typeof t.value?t.value:{},i=r.tag??[];return i.some((e=>w(e,s)))?e.push(t):e.push({...t,value:{...r,tag:[...i,s]}}),e}return e.push(t),e}),[])}return t}function z(e,t){const s=t,r=s.meta?.tag??[];if(e.workspaceTag){const t=e.workspaceTag;if(!r.some((e=>w(e,t))))throw new i({error:{resourceType:"OperationOutcome",id:"not-found",issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},code:404})}else if(e.ignoreTags?.length)for(const t of e.ignoreTags)if(r.some((e=>w(e,t))))throw new i({error:{resourceType:"OperationOutcome",id:"not-found",issue:[{severity:"error",code:"not-found",details:{text:"Not found"}}]},code:404})}async function x(e,t){const{resourceType:s}=e,r=function(e,t){const s=t?[...t]:[];if(e.workspaceTag)s.push({name:"_tag",value:v(e.workspaceTag)});else if(e.ignoreTags?.length)for(const t of e.ignoreTags)s.push({name:"_tag:not",value:v(t)});return s}(this.config,e.params);let i;r.length&&(i=r.reduce(((e,t)=>(e[t.name]||(e[t.name]=[]),e[t.name].push(t.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 E(e,t){const s=j(this.config,e),{resourceType:r}=s;return this.fhirRequest(`/${r}`,"POST")(s,t)}async function S({resourceType:e,id:t},s){const r=await this.fhirRequest(`/${e}/${t}`,"GET")({},s);return z(this.config,r),r}async function A(e,t){const s=j(this.config,e),{id:r,resourceType:i}=s;return this.fhirRequest(`/${i}/${r}`,"PUT")(s,{...t,ifMatch:t?.optimisticLockingVersionId?`W/"${t.optimisticLockingVersionId}"`:void 0})}async function O({resourceType:e,id:t,operations:s},r){const i=I(this.config,s);return this.fhirRequest(`/${e}/${t}`,"PATCH")(i,{...r,contentType:"application/json-patch+json",ifMatch:r?.optimisticLockingVersionId?`W/"${r.optimisticLockingVersionId}"`:void 0})}async function P({resourceType:e,id:t},s){return this.fhirRequest(`/${e}/${t}`,"DELETE")({},s)}async function N({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 R(e){const t=e.split("?")[0].split("/").filter(Boolean);return t.length<=1||t[1].startsWith("_")}function _(e){return e.split("?")[0].endsWith("/_search")}function $(e,t){const{method:s}=e;let r=e.url;if((("GET"===s||"HEAD"===s)&&R(r)||"POST"===s&&_(r))&&(t.workspaceTag&&(r+=(r.includes("?")?"&":"?")+`_tag=${v(t.workspaceTag)}`),t.ignoreTags?.length))for(const e of t.ignoreTags)r+=(r.includes("?")?"&":"?")+`_tag:not=${v(e)}`;const i={request:{method:s,url:r}};if(r.split("?").length>1){const[e,t]=r.split("?"),s=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(s,n),i.request.url=`${e}?${n.toString()}`}if(["GET","DELETE","HEAD"].includes(s))return i;if("PUT"===s){const s=j(t,e.resource);return{request:{...i.request,ifMatch:e.ifMatch},resource:s}}if("PATCH"===s){if("resource"in e){let s=e.resource;const r=s.data;if(r){const e=I(t,JSON.parse(function(e){const t=globalThis.atob(e),s=new Uint8Array(t.length);for(let e=0;e<t.length;e++)s[e]=t.charCodeAt(e);return(new globalThis.TextDecoder).decode(s)}(r)));s={...s,data:q(JSON.stringify(e))}}return{request:{...i.request,ifMatch:e.ifMatch},resource:s}}const s=I(t,e.operations),r=q(JSON.stringify(s));return{...i,resource:{resourceType:"Binary",contentType:"application/json-patch+json",data:r}}}if("POST"===s&&_(r))return i;if("POST"===s&&"resource"in e){const s=j(t,e.resource),{fullUrl:r}=e;return{...i,resource:s,fullUrl:r}}throw new Error("Unrecognized method")}async function M(e,t){const s=await this.fhirRequest("/","POST")({resourceType:"Bundle",type:"batch",entry:e.requests.map((e=>$(e,this.config)))},t),r=s.entry,n=this.config.workspaceTag||this.config.ignoreTags?.length?r?.map(((t,s)=>{const r=e.requests[s];if(!r||!t?.resource)return t;if(("GET"===r.method||"HEAD"===r.method)&&!R(r.url))try{z(this.config,t.resource)}catch(e){if(!(e instanceof i))throw e;return{request:t.request,response:{status:"404",outcome:e.cause}}}return t})):r;return{...s,entry:n,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 C(e,t){const s=await this.fhirRequest("/","POST")({resourceType:"Bundle",type:"transaction",entry:e.requests.map((e=>$(e,this.config)))},t);(this.config.workspaceTag||this.config.ignoreTags?.length)&&s.entry?.forEach(((t,s)=>{const r=e.requests[s];r&&t?.resource&&("GET"!==r.method&&"HEAD"!==r.method||R(r.url)||z(this.config,t.resource))}));return{...s,entry:s.entry,unbundle:function(){return this.entry?.map((e=>e.resource)).filter((e=>void 0!==e))??[]}}}async function D({id:e},t){return this.fhirRequest(`/Patient/${e}/$generate-friendly-patient-id`,"POST")({},t)}function L(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 J(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 G extends u{constructor(e){super(e)}#e(){return this.config.services?.fhirApiUrl??"https://fhir-api.zapehr.com"}search=x;create=E;get=S;update=A;patch=O;delete=P;history=N;batch=M;transaction=C;generateFriendlyPatientId=D;formatAddress=L;formatHumanName=J}class H 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 F 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 V 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 B 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 W 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 X 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 Z 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 K 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 Q 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 Y 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 ee 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 te 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 se 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 re(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}async function ie({bucketName:e,"objectPath+":t,file:s}){const r=await this.request("/z3/{bucketName}/{objectPath+}","post",re.bind(this))({action:"upload",bucketName:e,"objectPath+":t});await fetch(r.signedUrl,{method:"PUT",body:s})}async function ne({bucketName:e,"objectPath+":t}){const s=await this.request("/z3/{bucketName}/{objectPath+}","post",re.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 oe(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",re.bind(this))(n)}class ae extends u{constructor(e){super(e)}#e(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}uploadFile=ie;downloadFile=ne;getPresignedUrlForZ3Url=oe;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 ue(){return this.config.services?.projectApiUrl??"https://project-api.zapehr.com/v1"}async function he({id:e,file:t,filename:s}){const r=await this.request("/zambda/{id}/s3-upload","post",ue.bind(this))({id:e,filename:s});await fetch(r.signedUrl,{method:"PUT",body:t})}class ce extends u{constructor(e){super(e)}#e(){return this.config.services?.zambdaApiUrl??"https://zambda-api.zapehr.com/v1"}uploadFile=he;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 le 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 de=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){if(e.workspaceTag&&e.ignoreTags)throw new s({message:"workspaceTag and ignoreTags are mutually exclusive and cannot both be set in config",code:400});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 T(e),this.m2m=new F(e),this.messaging=new V(e),this.conversation=new f(e),this.transactionalSMS=new ee(e),this.paymentMethod=new B(e),this.charge=new p(e),this.project=new W(e),this.role=new Z(e),this.secret=new K(e),this.telemed=new Q(e),this.user=new te(e),this.version=new se(e),this.z3=new ae(e),this.fax=new k(e),this.lab=new H(e),this.erx=new U(e),this.terminology=new Y(e),this.zambda=new ce(e),this.zambdaLogStream=new le(e),this.rcm=new X(e),this.fhir=new G(e)}};class pe extends de{static OystehrFHIRError=i;static OystehrSdkError=s}export{pe as default};
|
|
2
2
|
//# sourceMappingURL=index.min.js.map
|