@oystehr/sdk 3.0.16 → 4.0.0-alpha.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.
- package/dist/cjs/config.d.ts +2 -1
- package/dist/cjs/index.cjs +82 -12
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.min.cjs +1 -1
- package/dist/cjs/index.min.cjs.map +1 -1
- package/dist/cjs/resources/classes/developer.d.ts +2 -2
- package/dist/cjs/resources/classes/erx.d.ts +17 -17
- package/dist/cjs/resources/classes/erxV1.d.ts +31 -0
- package/dist/cjs/resources/classes/erxV2.d.ts +15 -0
- package/dist/cjs/resources/classes/index.d.ts +5 -1
- package/dist/cjs/resources/classes/m2m.d.ts +2 -2
- package/dist/cjs/resources/classes/user.d.ts +2 -2
- package/dist/cjs/resources/types/ErxCheckAllergyInteractionsParams.d.ts +3 -0
- package/dist/cjs/resources/types/ErxCheckAllergyInteractionsResponse.d.ts +9 -0
- package/dist/cjs/resources/types/ErxCheckMedicationInteractionsParams.d.ts +3 -0
- package/dist/cjs/resources/types/ErxCheckMedicationInteractionsResponse.d.ts +21 -0
- package/dist/cjs/resources/types/ErxCheckPrecheckInteractionsParams.d.ts +4 -0
- package/dist/cjs/resources/types/ErxCheckPrecheckInteractionsResponse.d.ts +29 -0
- package/dist/cjs/resources/types/ErxConnectPractitionerParams.d.ts +4 -0
- package/dist/cjs/resources/types/ErxConnectPractitionerResponse.d.ts +9 -0
- package/dist/cjs/resources/types/ErxSearchAllergensParams.d.ts +3 -0
- package/dist/cjs/resources/types/ErxSearchAllergensResponse.d.ts +21 -0
- package/dist/cjs/resources/types/ErxSearchMedicationsParams.d.ts +3 -0
- package/dist/cjs/resources/types/ErxSearchMedicationsResponse.d.ts +27 -0
- package/dist/cjs/resources/types/ErxV1AllergySearchParams.d.ts +3 -0
- package/dist/{esm/resources/types/ErxAllergySearchResponse.d.ts → cjs/resources/types/ErxV1AllergySearchResponse.d.ts} +1 -1
- package/dist/{esm/resources/types/ErxCancelOrderParams.d.ts → cjs/resources/types/ErxV1CancelOrderParams.d.ts} +1 -1
- package/dist/{esm/resources/types/ErxCancelOrderResponse.d.ts → cjs/resources/types/ErxV1CancelOrderResponse.d.ts} +1 -1
- package/dist/cjs/resources/types/{ErxCancelPrescriptionParams.d.ts → ErxV1CancelPrescriptionParams.d.ts} +1 -1
- package/dist/cjs/resources/types/{ErxCancelPrescriptionResponse.d.ts → ErxV1CancelPrescriptionResponse.d.ts} +1 -1
- package/dist/cjs/resources/types/{ErxMedicationSearchParams.d.ts → ErxV1MedicationSearchParams.d.ts} +1 -1
- package/dist/cjs/resources/types/{ErxMedicationSearchResponse.d.ts → ErxV1MedicationSearchResponse.d.ts} +1 -1
- package/dist/cjs/resources/types/ErxV1SyncPatientParams.d.ts +3 -0
- package/dist/{esm/resources/types/ErxSyncPatientResponse.d.ts → cjs/resources/types/ErxV1SyncPatientResponse.d.ts} +1 -1
- package/dist/cjs/resources/types/ErxV2MedicationSearchParams.d.ts +4 -0
- package/dist/cjs/resources/types/{ErxMedicationSearchV2Response.d.ts → ErxV2MedicationSearchResponse.d.ts} +1 -1
- package/dist/cjs/resources/types/index.d.ts +25 -12
- package/dist/esm/config.d.ts +2 -1
- package/dist/esm/index.min.js +1 -1
- package/dist/esm/index.min.js.map +1 -1
- package/dist/esm/resources/classes/developer.d.ts +2 -2
- package/dist/esm/resources/classes/developer.js +1 -1
- package/dist/esm/resources/classes/developer.js.map +1 -1
- package/dist/esm/resources/classes/erx.d.ts +17 -17
- package/dist/esm/resources/classes/erx.js +25 -19
- package/dist/esm/resources/classes/erx.js.map +1 -1
- package/dist/esm/resources/classes/erxV1.d.ts +31 -0
- package/dist/esm/resources/classes/erxV1.js +48 -0
- package/dist/esm/resources/classes/erxV1.js.map +1 -0
- package/dist/esm/resources/classes/erxV2.d.ts +15 -0
- package/dist/esm/resources/classes/erxV2.js +24 -0
- package/dist/esm/resources/classes/erxV2.js.map +1 -0
- package/dist/esm/resources/classes/index.d.ts +5 -1
- package/dist/esm/resources/classes/index.js +5 -1
- package/dist/esm/resources/classes/index.js.map +1 -1
- package/dist/esm/resources/classes/m2m.d.ts +2 -2
- package/dist/esm/resources/classes/m2m.js +1 -1
- package/dist/esm/resources/classes/m2m.js.map +1 -1
- package/dist/esm/resources/classes/user.d.ts +2 -2
- package/dist/esm/resources/classes/user.js +1 -1
- package/dist/esm/resources/classes/user.js.map +1 -1
- package/dist/esm/resources/types/ErxCheckAllergyInteractionsParams.d.ts +3 -0
- package/dist/esm/resources/types/ErxCheckAllergyInteractionsResponse.d.ts +9 -0
- package/dist/esm/resources/types/ErxCheckMedicationInteractionsParams.d.ts +3 -0
- package/dist/esm/resources/types/ErxCheckMedicationInteractionsResponse.d.ts +21 -0
- package/dist/esm/resources/types/ErxCheckPrecheckInteractionsParams.d.ts +4 -0
- package/dist/esm/resources/types/ErxCheckPrecheckInteractionsResponse.d.ts +29 -0
- package/dist/esm/resources/types/ErxConnectPractitionerParams.d.ts +4 -0
- package/dist/esm/resources/types/ErxConnectPractitionerResponse.d.ts +9 -0
- package/dist/esm/resources/types/ErxSearchAllergensParams.d.ts +3 -0
- package/dist/esm/resources/types/ErxSearchAllergensResponse.d.ts +21 -0
- package/dist/esm/resources/types/ErxSearchMedicationsParams.d.ts +3 -0
- package/dist/esm/resources/types/ErxSearchMedicationsResponse.d.ts +27 -0
- package/dist/esm/resources/types/ErxV1AllergySearchParams.d.ts +3 -0
- package/dist/{cjs/resources/types/ErxAllergySearchResponse.d.ts → esm/resources/types/ErxV1AllergySearchResponse.d.ts} +1 -1
- package/dist/{cjs/resources/types/ErxCancelOrderParams.d.ts → esm/resources/types/ErxV1CancelOrderParams.d.ts} +1 -1
- package/dist/{cjs/resources/types/ErxCancelOrderResponse.d.ts → esm/resources/types/ErxV1CancelOrderResponse.d.ts} +1 -1
- package/dist/esm/resources/types/{ErxCancelPrescriptionParams.d.ts → ErxV1CancelPrescriptionParams.d.ts} +1 -1
- package/dist/esm/resources/types/{ErxCancelPrescriptionResponse.d.ts → ErxV1CancelPrescriptionResponse.d.ts} +1 -1
- package/dist/esm/resources/types/{ErxMedicationSearchParams.d.ts → ErxV1MedicationSearchParams.d.ts} +1 -1
- package/dist/esm/resources/types/{ErxMedicationSearchResponse.d.ts → ErxV1MedicationSearchResponse.d.ts} +1 -1
- package/dist/esm/resources/types/ErxV1SyncPatientParams.d.ts +3 -0
- package/dist/{cjs/resources/types/ErxSyncPatientResponse.d.ts → esm/resources/types/ErxV1SyncPatientResponse.d.ts} +1 -1
- package/dist/esm/resources/types/ErxV2MedicationSearchParams.d.ts +4 -0
- package/dist/esm/resources/types/{ErxMedicationSearchV2Response.d.ts → ErxV2MedicationSearchResponse.d.ts} +1 -1
- package/dist/esm/resources/types/index.d.ts +25 -12
- package/package.json +3 -3
- package/src/config.ts +2 -1
- package/src/resources/classes/developer.ts +3 -3
- package/src/resources/classes/erx.ts +68 -51
- package/src/resources/classes/erxV1.ts +73 -0
- package/src/resources/classes/erxV2.ts +34 -0
- package/src/resources/classes/index.ts +8 -2
- package/src/resources/classes/m2m.ts +3 -3
- package/src/resources/classes/user.ts +3 -3
- package/src/resources/types/ErxCheckAllergyInteractionsParams.ts +5 -0
- package/src/resources/types/ErxCheckAllergyInteractionsResponse.ts +11 -0
- package/src/resources/types/ErxCheckMedicationInteractionsParams.ts +5 -0
- package/src/resources/types/ErxCheckMedicationInteractionsResponse.ts +23 -0
- package/src/resources/types/ErxCheckPrecheckInteractionsParams.ts +6 -0
- package/src/resources/types/ErxCheckPrecheckInteractionsResponse.ts +31 -0
- package/src/resources/types/ErxConnectPractitionerParams.ts +6 -0
- package/src/resources/types/ErxConnectPractitionerResponse.ts +11 -0
- package/src/resources/types/{ErxAllergySearchParams.ts → ErxSearchAllergensParams.ts} +1 -1
- package/src/resources/types/ErxSearchAllergensResponse.ts +28 -0
- package/src/resources/types/ErxSearchMedicationsParams.ts +5 -0
- package/src/resources/types/ErxSearchMedicationsResponse.ts +29 -0
- package/src/resources/types/ErxV1AllergySearchParams.ts +5 -0
- package/src/resources/types/{ErxAllergySearchResponse.ts → ErxV1AllergySearchResponse.ts} +1 -1
- package/src/resources/types/{ErxCancelOrderParams.ts → ErxV1CancelOrderParams.ts} +1 -1
- package/src/resources/types/{ErxCancelOrderResponse.ts → ErxV1CancelOrderResponse.ts} +1 -1
- package/src/resources/types/{ErxCancelPrescriptionParams.ts → ErxV1CancelPrescriptionParams.ts} +1 -1
- package/src/resources/types/{ErxCancelPrescriptionResponse.ts → ErxV1CancelPrescriptionResponse.ts} +1 -1
- package/src/resources/types/{ErxMedicationSearchParams.ts → ErxV1MedicationSearchParams.ts} +1 -1
- package/src/resources/types/{ErxMedicationSearchResponse.ts → ErxV1MedicationSearchResponse.ts} +1 -1
- package/src/resources/types/ErxV1SyncPatientParams.ts +5 -0
- package/src/resources/types/{ErxSyncPatientResponse.ts → ErxV1SyncPatientResponse.ts} +1 -1
- package/src/resources/types/{ErxMedicationSearchV2Params.ts → ErxV2MedicationSearchParams.ts} +1 -1
- package/src/resources/types/{ErxMedicationSearchV2Response.ts → ErxV2MedicationSearchResponse.ts} +1 -1
- package/src/resources/types/index.ts +25 -12
- package/dist/cjs/resources/types/ErxAllergySearchParams.d.ts +0 -3
- package/dist/cjs/resources/types/ErxMedicationSearchV2Params.d.ts +0 -4
- package/dist/esm/node_modules/tslib/package.json +0 -1
- package/dist/esm/node_modules/tslib/tslib.es6.js +0 -40
- package/dist/esm/node_modules/tslib/tslib.es6.js.map +0 -1
- package/dist/esm/resources/types/ErxAllergySearchParams.d.ts +0 -3
- package/dist/esm/resources/types/ErxMedicationSearchV2Params.d.ts +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.min.cjs","sources":["../../src/errors/index.ts","../../../../node_modules/tslib/tslib.es6.js","../../src/client/client.ts","../../src/resources/classes/application.ts","../../src/resources/classes/charge.ts","../../src/resources/classes/conversation-ext.ts","../../src/resources/classes/conversation.ts","../../src/resources/classes/developer.ts","../../src/resources/classes/erx.ts","../../src/resources/classes/fax.ts","../../src/resources/classes/fhir-ext.ts","../../src/resources/classes/fhir.ts","../../src/resources/classes/lab.ts","../../src/resources/classes/m2m.ts","../../src/resources/classes/messaging.ts","../../src/resources/classes/paymentMethod.ts","../../src/resources/classes/project.ts","../../src/resources/classes/rcm.ts","../../src/resources/classes/role.ts","../../src/resources/classes/secret.ts","../../src/resources/classes/telemed.ts","../../src/resources/classes/transactionalSMS.ts","../../src/resources/classes/user.ts","../../src/resources/classes/version.ts","../../src/resources/classes/z3-ext.ts","../../src/resources/classes/z3.ts","../../src/resources/classes/zambda-ext.ts","../../src/resources/classes/zambda.ts","../../src/resources/classes/zambdaLogStream.ts","../../src/resources/classes/index.ts","../../src/index.cts"],"sourcesContent":["import { OperationOutcome as OperationOutcomeR4B } from 'fhir/r4b';\nimport { OperationOutcome as OperationOutcomeR5 } from 'fhir/r5';\n\nexport class OystehrSdkError extends Error {\n code: number;\n constructor({ message, code, cause }: { message: string; code: number; cause?: unknown }) {\n super(message, { cause });\n Object.setPrototypeOf(this, OystehrSdkError.prototype);\n this.code = code;\n this.name = 'OystehrSdkError';\n }\n toString(): string {\n return `${this.name}: ${this.message} (code: ${this.code})`;\n }\n toJSON(): any {\n return {\n name: this.name,\n message: this.message,\n code: this.code,\n cause: this.cause,\n };\n }\n}\n\nfunction transformOperationOutcomeToErrorMessage(cause: OperationOutcomeR4B | OperationOutcomeR5): string {\n const causes = [];\n for (const issue of cause.issue ?? []) {\n if (issue.details && issue.details.text) {\n causes.push(issue.details.text);\n }\n }\n if (!causes.length) {\n causes.push('Unknown FHIR error');\n }\n return causes.join(',');\n}\n\nexport class OystehrFHIRError extends OystehrSdkError {\n cause: OperationOutcomeR4B | OperationOutcomeR5;\n constructor({ error, code }: { error: OperationOutcomeR4B | OperationOutcomeR5; code: number }) {\n super({\n message: transformOperationOutcomeToErrorMessage(error as OperationOutcomeR4B | OperationOutcomeR5),\n code,\n });\n Object.setPrototypeOf(this, OystehrFHIRError.prototype);\n this.cause = error as OperationOutcomeR4B | OperationOutcomeR5;\n this.name = 'OystehrFHIRError';\n }\n toJSON(): any {\n return {\n name: this.name,\n message: this.message,\n code: this.code,\n cause: this.cause,\n };\n }\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import { v4 as uuidv4 } from 'uuid';\nimport { OystehrConfig } from '../config';\nimport { OystehrFHIRError, OystehrSdkError } from '../errors';\nimport { FhirBundle, FhirResource, OperationOutcome } from '../resources/types';\n\ntype HttpMethod = 'get' | 'put' | 'post' | 'delete' | 'options' | 'head' | 'patch' | 'trace';\nexport const defaultProjectApiUrl = 'https://project-api.zapehr.com/v1';\nconst defaultFhirApiUrl = 'https://fhir-api.zapehr.com';\nconst STATUS_CODES_TO_RETRY = [408, 429, 500, 502, 503, 504];\nconst ERROR_CODES_TO_RETRY = [\n 'ECONNRESET',\n 'ECONNREFUSED',\n 'EPIPE',\n 'ETIMEDOUT',\n 'UND_ERR_CONNECT_TIMEOUT',\n 'UND_ERR_HEADERS_TIMEOUT',\n 'UND_ERR_HEADERS_TIMEOUT',\n 'UND_ERR_SOCKET',\n];\n\n/**\n * Optional parameter that can be passed to the client methods. It allows\n * overriding the access token or project ID, and setting various headers,\n * such as 'Content-Type'.\n */\nexport interface OystehrClientRequest {\n /**\n * The access token to use for the request. If not provided, the access token from `oystehr.init()` will be used.\n */\n accessToken?: string;\n /**\n * The project ID to use for the request. If not provided, the project ID from `oystehr.init()` will be used.\n */\n projectId?: string;\n /**\n * The value of the 'Content-Type' header to use for the request.\n */\n contentType?: string;\n /**\n * Unique identifier for this request.\n */\n requestId?: string;\n}\n\ninterface InternalClientRequest extends OystehrClientRequest {\n ifMatch?: string;\n}\n\ntype FhirData<T extends FhirResource> = T | T[] | FhirBundle<T>;\nexport type FhirFetcherResponse<T extends FhirData<FhirResource> = any> = T;\n\nexport class SDKResource {\n protected readonly config: OystehrConfig;\n constructor(config: OystehrConfig) {\n this.config = config;\n }\n\n protected request(path: string, method: string, baseUrlThunk: () => string): FetcherFunction {\n return async (params: any, request?: InternalClientRequest): Promise<FetcherResponse> => {\n const configThunk = (): OystehrConfig => this.config;\n try {\n return await fetcher(baseUrlThunk, configThunk, path, method)(params, request);\n } catch (err: any) {\n const error = err as { message: string; code: number; cause?: unknown };\n throw new OystehrSdkError({ message: error.message, code: error.code, cause: error.cause });\n }\n };\n }\n\n protected fhirRequest<T extends FhirResource = any>(path: string, method: string) {\n return async (params: any, request?: InternalClientRequest): Promise<FhirFetcherResponse<T>> => {\n try {\n const baseUrlThunk = (): string => this.config.services?.fhirApiUrl ?? defaultFhirApiUrl;\n const configThunk = (): OystehrConfig => this.config;\n // must await here to catch\n return await fetcher(baseUrlThunk, configThunk, path, method)(params, request);\n } catch (err: unknown) {\n // FHIR API error messages are JSON strings\n const fullError = err as { message: string | Record<string, any>; code: number; cause?: unknown };\n if (typeof fullError.message === 'string') {\n throw new OystehrSdkError({\n message: fullError.message,\n code: fullError.code,\n cause: fullError.cause,\n });\n }\n throw new OystehrFHIRError({\n error: fullError.message as OperationOutcome,\n code: fullError.code,\n });\n }\n };\n }\n}\n\nexport type FetcherError = { message: string; code: number };\nexport type FetcherResponse = any;\nexport type FetcherFunction = (\n params?: Record<string, any> | [any] | InternalClientRequest,\n request?: InternalClientRequest\n) => Promise<FetcherResponse>;\n\nfunction isInternalClientRequest(request: Record<string, any>): request is InternalClientRequest {\n return 'accessToken' in request;\n}\n\nfunction fetcher(\n baseUrlThunk: () => string,\n configThunk: () => OystehrConfig,\n path: string,\n methodParam: string\n): FetcherFunction {\n return async (\n params?: Record<string, unknown> | [any] | InternalClientRequest,\n request?: InternalClientRequest\n ): Promise<FetcherResponse> => {\n // this function supports multiple signatures. fetcher(baseUrl, path, method)(params, request) or fetcher(baseUrl, path, method)(request)\n // or fetcher(baseUrl, path, method)(params) or fetcher(baseUrl, path, method)(). the types for this are handled by Client<Path, Methods>\n // and this is the backend implementation behind it. the heuristic we're using is that if the first param is an object with an accessToken\n // and there is no second param, assume the first one is the request object instead\n const providedParams: Record<string, unknown> | [any] =\n !!params && !request && !Array.isArray(params) && isInternalClientRequest(params)\n ? {}\n : (params as Record<string, unknown>) ?? {};\n const requestCtx =\n !!params && !request && !Array.isArray(params) && isInternalClientRequest(params)\n ? (params as InternalClientRequest)\n : request;\n const method = methodParam.toLowerCase() as HttpMethod;\n const config = configThunk();\n const fetchImpl = config.fetch ?? fetch;\n const accessToken = requestCtx?.accessToken ?? config.accessToken;\n const projectId = requestCtx?.projectId ?? configThunk().projectId;\n let finalPath = path;\n let finalParams = providedParams;\n if (!Array.isArray(providedParams)) {\n const [subbedPath, addlParams] = subParamsInPath(path, providedParams);\n finalPath = subbedPath;\n finalParams = addlParams;\n }\n finalPath = finalPath.replace(/^\\//, ''); // remove leading slash\n const baseUrlEvaluated = baseUrlThunk();\n const fullBaseUrl = baseUrlEvaluated.endsWith('/') ? baseUrlEvaluated : baseUrlEvaluated + '/';\n const url = new URL(finalPath, fullBaseUrl);\n let body: any;\n\n if (Array.isArray(finalParams)) {\n body = JSON.stringify(finalParams);\n } else if (Object.keys(finalParams).length) {\n if (method === 'get') {\n addParamsToSearch(finalParams, url.searchParams);\n } else if (requestCtx?.contentType === 'application/x-www-form-urlencoded') {\n const search = new URLSearchParams();\n addParamsToSearch(finalParams, search);\n body = search.toString();\n } else {\n body = JSON.stringify(finalParams);\n }\n } else {\n // override for rpc call\n if (requestCtx?.contentType !== 'application/x-www-form-urlencoded' && method === 'post') {\n body = '{}';\n }\n }\n\n const headers: Record<string, string> = Object.assign(\n projectId\n ? {\n 'x-zapehr-project-id': projectId,\n 'x-oystehr-project-id': projectId,\n }\n : {},\n {\n 'content-type': requestCtx?.contentType ?? 'application/json',\n },\n accessToken ? { Authorization: `Bearer ${accessToken}` } : {},\n requestCtx?.ifMatch ? { 'If-Match': requestCtx.ifMatch } : {},\n { 'x-oystehr-request-id': requestCtx?.requestId ?? uuidv4() }\n );\n const retryConfig: ConstructedRetryConfig = {\n retries: config.retry?.retries ?? 3,\n jitter: config.retry?.jitter ?? 20,\n delay: config.retry?.delay ?? 100,\n onRetry: config.retry?.onRetry,\n // Using array instead of set because the length is too short for uniqueness to be important\n retryOn: [...(config.retry?.retryOn ?? []), ...STATUS_CODES_TO_RETRY],\n };\n retryConfig.retryOn.push(...STATUS_CODES_TO_RETRY);\n return retry(async () => {\n const response = await fetchImpl(\n new Request(url, {\n method: method.toUpperCase(),\n body,\n headers,\n })\n );\n const responseBody = response.body ? await response.text() : null;\n let responseJson: Record<string, unknown> | null;\n try {\n responseJson =\n responseBody &&\n (response.headers.get('content-type')?.includes('application/json') ||\n response.headers.get('content-type')?.includes('application/fhir+json'))\n ? JSON.parse(responseBody)\n : null;\n } catch (_err) {\n // ignore JSON.parse errors\n responseJson = null;\n }\n const isError = !response.ok || response.status >= 400;\n if (isError) {\n const errObj = {\n message:\n (responseJson?.output as Record<string, unknown>)?.message ?? // official zambda output format\n responseJson?.message ?? // normal endpoint output format\n responseJson ?? // parsable json\n responseBody ?? // raw response\n response.statusText, // fallback to status text\n code:\n (responseJson?.output as Record<string, unknown>)?.code ?? // official zambda output format\n responseJson?.code ?? // normal endpoint output format\n response.status, // fallback to status code\n response,\n };\n throw errObj;\n }\n return responseJson;\n }, retryConfig);\n };\n}\n\ntype ConstructedRetryConfig = Omit<NonNullable<OystehrConfig['retry']>, 'retryOn'> & {\n jitter: NonNullable<NonNullable<OystehrConfig['retry']>['jitter']>;\n delay: NonNullable<NonNullable<OystehrConfig['retry']>['delay']>;\n retryOn: NonNullable<NonNullable<OystehrConfig['retry']>['retryOn']>;\n};\nasync function retry<T>(work: (attempt: number) => Promise<T>, config: ConstructedRetryConfig): Promise<T> {\n let lastErr;\n for (const attempt of Array.from({ length: (config.retries ?? 0) + 1 }, (_, index) => index)) {\n try {\n return await work(attempt);\n } catch (e: any) {\n let isRetryable = false;\n if ('response' in e) {\n // error from API\n const err = e as FetcherError;\n isRetryable = config.retryOn.includes(err.code);\n // Removes response\n lastErr = { message: e.message, code: e.code };\n } else {\n lastErr = e;\n // error from fetch\n if ('code' in e && typeof e.code === 'string') {\n const err = e as { code: string };\n isRetryable = ERROR_CODES_TO_RETRY.includes(err.code);\n }\n }\n if (!isRetryable) {\n break;\n }\n const jitter = Math.floor(Math.random() * (config.jitter + 1));\n await new Promise((resolve) => setTimeout(resolve, config.delay + jitter));\n if (config.onRetry && attempt !== (config.retries ?? 0)) {\n config.onRetry(attempt + 1);\n }\n }\n }\n throw lastErr;\n}\n\n/**\n * Substitutes params in a path and returns the path with params substituted and any unused params.\n *\n * Uses the property names in the params object to determine the param to substitute in the path.\n *\n * @param path JSON API resource URI\n * @param params all params provided to the client method\n * @returns resource URI with params substituted and any unused params\n */\nfunction subParamsInPath(path: string, params: Record<string, unknown>): [string, Record<string, string>] {\n const unusedParams = { ...params };\n // capture everything of the form `{paramName}` and replace with the value of `params[paramName]`\n const subbedPath = path.replace(/\\{([^}]+)\\}/g, (_, paramName) => {\n delete unusedParams[paramName];\n // override for path params that are paths, indicated by a `+` at the end\n if (paramName.match(/^.*\\+$/)) {\n return params[paramName] + '';\n }\n // error if param value is empty\n if (!params[paramName] || params[paramName] === '') {\n throw new OystehrSdkError({ message: `Required path parameter is an empty string: ${paramName}`, code: 400 });\n }\n // encode search params\n if (params[paramName]) {\n return encodeURIComponent(params[paramName] + ''); // coerce to string\n }\n return '';\n });\n\n const unusedKeys = Object.keys(unusedParams);\n const addlParams = unusedKeys.length\n ? unusedKeys.reduce((acc, key) => ({ ...acc, [key]: unusedParams[key] }), {})\n : {};\n return [subbedPath, addlParams];\n}\n\n/**\n * Adds params to a URLSearchParams object in such a way as to preserve array values.\n * @param params params\n * @param search URLSearchParams object\n */\nexport function addParamsToSearch(params: Record<string, unknown>, search: URLSearchParams): void {\n for (const [key, value] of Object.entries(params)) {\n if (Array.isArray(value)) {\n value.forEach((v) => search.append(key, v as string));\n continue;\n }\n search.append(key, value as string);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n ApplicationCreateParams,\n ApplicationCreateResponse,\n ApplicationDeleteParams,\n ApplicationGetParams,\n ApplicationGetResponse,\n ApplicationListResponse,\n ApplicationRevokeAccessTokenParams,\n ApplicationRevokeAccessTokenResponse,\n ApplicationRevokeRefreshTokenParams,\n ApplicationRevokeRefreshTokenResponse,\n ApplicationRotateSecretParams,\n ApplicationRotateSecretResponse,\n ApplicationUpdateParams,\n ApplicationUpdateResponse,\n OystehrClientRequest,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class Application extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Get a list of Applications. [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) provide authentication in front of the web and mobile apps you build on Oystehr.\n *\n * Access Policy Action: `App:ListAllApplications`\n * Access Policy Resource: `App:Application`\n */\n list(request?: OystehrClientRequest): Promise<ApplicationListResponse> {\n return this.request('/application', 'get', this.#baseUrlThunk.bind(this))(request);\n }\n /**\n * Create a new Application. [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) provide authentication in front of the web and mobile apps you build on Oystehr.\n *\n * Access Policy Action: `App:CreateApplication`\n * Access Policy Resource: `App:Application`\n */\n create(params: ApplicationCreateParams, request?: OystehrClientRequest): Promise<ApplicationCreateResponse> {\n return this.request('/application', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Get the Application with the provided ID. [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) provide authentication in front of the web and mobile apps you build on Oystehr.\n *\n * Access Policy Action: `App:GetApplication`\n * Access Policy Resource: `App:Application`\n */\n get(params: ApplicationGetParams, request?: OystehrClientRequest): Promise<ApplicationGetResponse> {\n return this.request('/application/{id}', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Update the Application with the provided ID. [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) provide authentication in front of the web and mobile apps you build on Oystehr.\n *\n * Access Policy Action: `App:UpdateApplication`\n * Access Policy Resource: `App:Application`\n */\n update(params: ApplicationUpdateParams, request?: OystehrClientRequest): Promise<ApplicationUpdateResponse> {\n return this.request('/application/{id}', 'patch', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Delete the Application with the provided ID. [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) provide authentication in front of the web and mobile apps you build on Oystehr.\n *\n * Access Policy Action: `App:DeleteApplication`\n * Access Policy Resource: `App:Application`\n */\n delete(params: ApplicationDeleteParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/application/{id}', 'delete', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Rotate client's secrete associated with an application.\n *\n * Access Policy Action: `App:RotateApplicationSecret`\n * Access Policy Resource: `App:Application`\n */\n rotateSecret(\n params: ApplicationRotateSecretParams,\n request?: OystehrClientRequest\n ): Promise<ApplicationRotateSecretResponse> {\n return this.request('/application/{id}/rotate-secret', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Revokes user's refresh token issued for the application.\n *\n * Access Policy Action: `App:RevokeRefreshToken`\n * Access Policy Resource: `App:Application`\n */\n revokeRefreshToken(\n params: ApplicationRevokeRefreshTokenParams,\n request?: OystehrClientRequest\n ): Promise<ApplicationRevokeRefreshTokenResponse> {\n return this.request(\n '/application/{id}/revoke-refresh-token',\n 'post',\n this.#baseUrlThunk.bind(this)\n )(params, request);\n }\n /**\n * Revokes user's access token issued for the application.\n *\n * Access Policy Action: `App:RevokeAccessToken`\n * Access Policy Resource: `App:Application`\n */\n revokeAccessToken(\n params: ApplicationRevokeAccessTokenParams,\n request?: OystehrClientRequest\n ): Promise<ApplicationRevokeAccessTokenResponse> {\n return this.request(\n '/application/{id}/revoke-access-token',\n 'post',\n this.#baseUrlThunk.bind(this)\n )(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport { ChargeIssueParams, ChargeStatusParams, ChargeStatusResponse, OystehrClientRequest } from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class Charge extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Charge patient's default payment method for a specified encounter or charge item.\n *\n * Access Policy Requirements:\n * Action: `Payment:Issue`\n * Access Policy Resource: `Payment:Charge`\n * Actions: `FHIR:Read,FHIR:Create,FHIR:Update`\n * Access Policy Resource: `FHIR:ChargeItem:*,`FHIR:PaymentReconciliation:*`\n * Action: `FHIR:Read`\n * Access Policy Resources: `FHIR:Patient:*,FHIR:Encounter:*,FHIR:Coverage:*`\n */\n issue(params: ChargeIssueParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/payment/charge/issue', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Retrieve charge status for a specified encounter or charge item.\n *\n * Access Policy Requirements:\n * Action: `Payment:Status`\n * Access Policy Resource: `Payment:Charge`\n * Actions: `FHIR:Read,FHIR:Create,FHIR:Update`\n * Access Policy Resource: `FHIR:ChargeItem:*,`FHIR:PaymentReconciliation:*`\n * Action: `FHIR:Read`\n * Access Policy Resources: `FHIR:Patient:*,FHIR:Encounter:*,FHIR:Coverage:*`\n */\n status(params: ChargeStatusParams, request?: OystehrClientRequest): Promise<ChargeStatusResponse> {\n return this.request('/payment/charge/status', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","import { Encounter as EncounterR4B } from 'fhir/r4b';\nimport { Encounter as EncounterR5 } from 'fhir/r5';\n\nexport const ENCOUNTER_VS_EXTENSION_URL = 'https://extensions.fhir.zapehr.com/encounter-virtual-service-pre-release';\nexport const ENCOUNTER_VS_EXTENSION_RELATIVE_URL = 'addressString';\nconst ENCOUNTER_VS_CODING_SYSTEM = 'https://fhir.zapehr.com/virtual-service-type';\n\nfunction isR5Encounter(encounter: EncounterR4B | EncounterR5): encounter is EncounterR5 {\n return Object.hasOwn(encounter as EncounterR5, 'virtualService');\n}\n\n/**\n * Helper function to get a conversationId from an encounter created as an Oystehr Conversation\n * @param encounter well-formed FHIR R4B or R5 Encounter\n * @returns conversationId\n */\nexport function getConversationIdFromEncounter(encounter: EncounterR4B | EncounterR5): string | undefined {\n if (isR5Encounter(encounter)) {\n const virtualService = encounter.virtualService?.find(\n (vs) => vs.channelType?.system === ENCOUNTER_VS_CODING_SYSTEM\n );\n return virtualService?.addressString;\n }\n if (!encounter.extension) return;\n const virtualServiceExtension = encounter.extension.find((extension) => extension.url === ENCOUNTER_VS_EXTENSION_URL);\n if (!virtualServiceExtension?.extension) return;\n const conversationId = virtualServiceExtension.extension?.find(\n (extension) => extension.url === ENCOUNTER_VS_EXTENSION_RELATIVE_URL\n )?.valueString;\n return conversationId;\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n ConversationAddParticipantParams,\n ConversationCreateParams,\n ConversationCreateResponse,\n ConversationGetTokenResponse,\n ConversationMessageParams,\n ConversationRemoveParticipantParams,\n OystehrClientRequest,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\nimport * as ext from './conversation-ext';\n\nexport class Conversation extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n ENCOUNTER_VS_EXTENSION_URL = ext.ENCOUNTER_VS_EXTENSION_URL;\n ENCOUNTER_VS_EXTENSION_RELATIVE_URL = ext.ENCOUNTER_VS_EXTENSION_RELATIVE_URL;\n /**\n * Helper function to get a conversationId from an encounter created as an Oystehr Conversation\n * @param encounter well-formed FHIR R4B or R5 Encounter\n * @returns conversationId\n */\n getConversationIdFromEncounter = ext.getConversationIdFromEncounter;\n /**\n * Create a new Conversation. [Conversations](https://docs.oystehr.com/oystehr/services/messaging/conversations/) allow you to build multi-channel bi-directional messaging workflows. For example, you might create a Conversation where a provider messages with a patient through a web app, and the patient receives and responds to messages via SMS on their phone.\n *\n * Access Policy Requirements:\n * Action: `Messaging:CreateConversation`\n * Access Policy Resource: `Messaging:Conversation`\n * Action: `FHIR:Create`\n * Access Policy Resource: `FHIR:Encounter`\n * Action: `FHIR:Update`\n * Access Policy Resource: `FHIR:Encounter`\n */\n create(params: ConversationCreateParams, request?: OystehrClientRequest): Promise<ConversationCreateResponse> {\n return this.request('/messaging/conversation', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Get a Conversation Token. Conversation Tokens are used to join the Conversation with the Twilio Conversations SDKs. [Conversations](https://docs.oystehr.com/oystehr/services/messaging/conversations/) allow you to build multi-channel bi-directional messaging workflows. For example, you might create a Conversation where a provider messages with a patient through a web app, and the patient receives and responds to messages via SMS on their phone.\n *\n * Access Policy Action: `Messaging:GetConversationToken`\n * Access Policy Resource: `Messaging:Conversation`.\n */\n getToken(request?: OystehrClientRequest): Promise<ConversationGetTokenResponse> {\n return this.request('/messaging/conversation/token', 'get', this.#baseUrlThunk.bind(this))(request);\n }\n /**\n * Add a participant to a Conversation. [Conversations](https://docs.oystehr.com/oystehr/services/messaging/conversations/) allow you to build multi-channel bi-directional messaging workflows. For example, you might create a Conversation where a provider messages with a patient through a web app, and the patient receives and responds to messages via SMS on their phone.\n *\n * Access Policy Requirements:\n * Action: `Messaging:ConversationAddParticipant`\n * Access Policy Resource: `Messaging:Conversation`\n * Action: `FHIR:Read`\n * Access Policy Resource: `FHIR:Encounter`\n * Action: `FHIR:Update`\n * Access Policy Resource: `FHIR:Encounter`\n */\n addParticipant(params: ConversationAddParticipantParams, request?: OystehrClientRequest): Promise<void> {\n return this.request(\n '/messaging/conversation/{conversationId}/participant',\n 'post',\n this.#baseUrlThunk.bind(this)\n )(params, request);\n }\n /**\n * Remove a participant from a Conversation. [Conversations](https://docs.oystehr.com/oystehr/services/messaging/conversations/) allow you to build multi-channel bi-directional messaging workflows. For example, you might create a Conversation where a provider messages with a patient through a web app, and the patient receives and responds to messages via SMS on their phone.\n *\n * Access Policy Requirements:\n * Action: `Messaging:ConversationRemoveParticipant`\n * Access Policy Resource: `Messaging:Conversation`\n * Action: `FHIR:Read`\n * Access Policy Resource: `FHIR:Patient`, `FHIR:Practitioner`, or `FHIR:RelatedPerson`\n */\n removeParticipant(params: ConversationRemoveParticipantParams, request?: OystehrClientRequest): Promise<void> {\n return this.request(\n '/messaging/conversation/{conversationId}/participant',\n 'delete',\n this.#baseUrlThunk.bind(this)\n )(params, request);\n }\n /**\n * Send a message to a Conversation. [Conversations](https://docs.oystehr.com/oystehr/services/messaging/conversations/) allow you to build multi-channel bi-directional messaging workflows. For example, you might create a Conversation where a provider messages with a patient through a web app, and the patient receives and responds to messages via SMS on their phone.\n *\n * Access Policy Requirements:\n * Action: `Messaging:ConversationSendMessage`\n * Access Policy Resource: `Messaging:Conversation`\n */\n message(params: ConversationMessageParams, request?: OystehrClientRequest): Promise<void> {\n return this.request(\n '/messaging/conversation/{conversationId}/message',\n 'post',\n this.#baseUrlThunk.bind(this)\n )(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n DeveloperDeleteParams,\n DeveloperGetParams,\n DeveloperGetResponse,\n DeveloperInviteParams,\n DeveloperInviteResponse,\n DeveloperListResponse,\n DeveloperListV2Params,\n DeveloperListV2Response,\n DeveloperUpdateParams,\n DeveloperUpdateResponse,\n OystehrClientRequest,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class Developer extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Get the Developer with the provided ID. Developer accounts are used to log into the [Developer Console](https://console.oystehr.com/) and administrate [Projects](https://docs.oystehr.com/oystehr/services/project/). [Developers](https://docs.oystehr.com/oystehr/services/iam/developers/) are the only people who can belong to and act across multiple Projects, because they exist above the Project level.\n *\n * Access Policy Action: `IAM:GetDeveloper`\n * Access Policy Resource: `IAM:Developer`\n */\n get(params: DeveloperGetParams, request?: OystehrClientRequest): Promise<DeveloperGetResponse> {\n return this.request('/developer/{id}', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Update the Developer with the provided ID. Developer accounts are used to log into the [Developer Console](https://console.oystehr.com/) and administrate [Projects](https://docs.oystehr.com/oystehr/services/project/). [Developers](https://docs.oystehr.com/oystehr/services/iam/developers/) are the only people who can belong to and act across multiple Projects, because they exist above the Project level.\n *\n * Access Policy Action: `IAM:UpdateDeveloper`\n * Access Policy Resource: `IAM:Developer`\n */\n update(params: DeveloperUpdateParams, request?: OystehrClientRequest): Promise<DeveloperUpdateResponse> {\n return this.request('/developer/{id}', 'patch', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Remove the Developer with the provided ID from the project. Developer accounts are used to log into the [Developer Console](https://console.oystehr.com/) and administrate [Projects](https://docs.oystehr.com/oystehr/services/project/). [Developers](https://docs.oystehr.com/oystehr/services/iam/developers/) are the only people who can belong to and act across multiple Projects, because they exist above the Project level.\n *\n * Access Policy Action: `IAM:RemoveDeveloper`\n * Access Policy Resource: `IAM:Developer`\n */\n delete(params: DeveloperDeleteParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/developer/{id}', 'delete', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Invite a new Developer to the Project. Developer accounts are used to log into the [Developer Console](https://console.oystehr.com/) and administrate [Projects](https://docs.oystehr.com/oystehr/services/project/). [Developers](https://docs.oystehr.com/oystehr/services/iam/developers/) are the only people who can belong to and act across multiple Projects, because they exist above the Project level.\n *\n * Access Policy Action: `IAM:InviteDeveloper`\n * Access Policy Resource: `IAM:Developer`\n */\n invite(params: DeveloperInviteParams, request?: OystehrClientRequest): Promise<DeveloperInviteResponse> {\n return this.request('/developer/invite', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * DEPRECATED. Please use [v2/list](https://api-reference.oystehr.com/reference/get_developer-v2-list) instead.\n *\n * Get a list of all Developers who are part of the Project. Developer accounts are used to log into the [Developer Console](https://console.oystehr.com/) and administrate [Projects](https://docs.oystehr.com/oystehr/services/project/). [Developers](https://docs.oystehr.com/oystehr/services/iam/developers/) are the only people who can belong to and act across multiple Projects, because they exist above the Project level.\n *\n * Access Policy Action: `IAM:ListAllDevelopers`\n * Access Policy Resource: `IAM:Developer`\n */\n list(request?: OystehrClientRequest): Promise<DeveloperListResponse> {\n return this.request('/developer', 'get', this.#baseUrlThunk.bind(this))(request);\n }\n /**\n * Get Developers in the Project with pagination, sort, sort Order and filtering. [Users](https://docs.oystehr.com/oystehr/services/app/users/) are the people who log into the [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) you configure for securing the apps you build on top of Oystehr.\n *\n * Access Policy Action: `Project:ListAllUsers`\n * Access Policy Resource: `Project:Settings`\n */\n listV2(params: DeveloperListV2Params, request?: OystehrClientRequest): Promise<DeveloperListV2Response>;\n /**\n * Get Developers in the Project with pagination, sort, sort Order and filtering. [Users](https://docs.oystehr.com/oystehr/services/app/users/) are the people who log into the [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) you configure for securing the apps you build on top of Oystehr.\n *\n * Access Policy Action: `Project:ListAllUsers`\n * Access Policy Resource: `Project:Settings`\n */\n listV2(request?: OystehrClientRequest): Promise<DeveloperListV2Response>;\n /**\n * Get Developers in the Project with pagination, sort, sort Order and filtering. [Users](https://docs.oystehr.com/oystehr/services/app/users/) are the people who log into the [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) you configure for securing the apps you build on top of Oystehr.\n *\n * Access Policy Action: `Project:ListAllUsers`\n * Access Policy Resource: `Project:Settings`\n */\n listV2(\n params?: DeveloperListV2Params | OystehrClientRequest,\n request?: OystehrClientRequest\n ): Promise<DeveloperListV2Response> {\n return this.request('/developer/v2/list', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n ErxAllergySearchParams,\n ErxAllergySearchResponse,\n ErxCancelOrderParams,\n ErxCancelOrderResponse,\n ErxCancelPrescriptionParams,\n ErxCancelPrescriptionResponse,\n ErxMedicationSearchParams,\n ErxMedicationSearchResponse,\n ErxMedicationSearchV2Params,\n ErxMedicationSearchV2Response,\n ErxSyncPatientParams,\n ErxSyncPatientResponse,\n OystehrClientRequest,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class Erx extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Retrieve patient properties from FHIR service and sync them with eRx service\n */\n syncPatient(params: ErxSyncPatientParams, request?: OystehrClientRequest): Promise<ErxSyncPatientResponse> {\n return this.request('/erx/sync-patient/{patientId}', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Search for allergies\n */\n allergySearch(params: ErxAllergySearchParams, request?: OystehrClientRequest): Promise<ErxAllergySearchResponse> {\n return this.request('/erx/allergy/search', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Cancel photon order\n */\n cancelOrder(params: ErxCancelOrderParams, request?: OystehrClientRequest): Promise<ErxCancelOrderResponse> {\n return this.request('/erx/cancel-order', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Cancel photon prescription\n */\n cancelPrescription(\n params: ErxCancelPrescriptionParams,\n request?: OystehrClientRequest\n ): Promise<ErxCancelPrescriptionResponse> {\n return this.request('/erx/cancel-prescription', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Search for medications. Provide at least one of code or name filters\n */\n medicationSearch(\n params: ErxMedicationSearchParams,\n request?: OystehrClientRequest\n ): Promise<ErxMedicationSearchResponse>;\n /**\n * Search for medications. Provide at least one of code or name filters\n */\n medicationSearch(request?: OystehrClientRequest): Promise<ErxMedicationSearchResponse>;\n /**\n * Search for medications. Provide at least one of code or name filters\n */\n medicationSearch(\n params?: ErxMedicationSearchParams | OystehrClientRequest,\n request?: OystehrClientRequest\n ): Promise<ErxMedicationSearchResponse> {\n return this.request('/erx/medication/search', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Search for medications. Provide at least one of code or name filters\n */\n medicationSearchV2(\n params: ErxMedicationSearchV2Params,\n request?: OystehrClientRequest\n ): Promise<ErxMedicationSearchV2Response>;\n /**\n * Search for medications. Provide at least one of code or name filters\n */\n medicationSearchV2(request?: OystehrClientRequest): Promise<ErxMedicationSearchV2Response>;\n /**\n * Search for medications. Provide at least one of code or name filters\n */\n medicationSearchV2(\n params?: ErxMedicationSearchV2Params | OystehrClientRequest,\n request?: OystehrClientRequest\n ): Promise<ErxMedicationSearchV2Response> {\n return this.request('/erx/v2/medication/search', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport { FaxSendParams, FaxSendResponse, OystehrClientRequest } from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class Fax extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['faxApiUrl'] ?? 'https://fax-api.zapehr.com/v1';\n }\n /**\n * Offboard a fax number. Oystehr's [offboard](https://docs.oystehr.com/oystehr/services/fax/number/) feature makes it easy to stop using the fax service and release the project's assigned fax number with a single API call. Please note there is no way to guarantee getting the same number back again, so if you think this can break your project in any way we recommend not offboarding and avoid sending faxes until you're sure.\n *\n * Access Policy Requirements:\n * Action: `Fax:Offboard`\n * Access Policy Resource: `Fax:Number`\n */\n offboard(request?: OystehrClientRequest): Promise<void> {\n return this.request('/offboard', 'post', this.#baseUrlThunk.bind(this))(request);\n }\n /**\n * Onboard a fax number. Oystehr's [onboard](https://docs.oystehr.com/oystehr/services/fax/number/) feature makes it easy to start using the fax service and purchase a new fax number for your project with a single API call.\n *\n * Access Policy Requirements:\n * Action: `Fax:Onboard`\n * Access Policy Resource: `Fax:Number`\n */\n onboard(request?: OystehrClientRequest): Promise<void> {\n return this.request('/onboard', 'post', this.#baseUrlThunk.bind(this))(request);\n }\n /**\n * Send a fax. Oystehr's [fax sending](https://docs.oystehr.com/oystehr/services/fax/send/) feature makes it easy to send a fax to a chosen recipient with a single API call. You can use this feature to send referrals, medical records, prescriptions, and other documents that require fax transmission e.g. for HIPAA compliance.\n *\n * Access Policy Requirements:\n * Action: `Fax:Send`\n * Access Policy Resource: `Fax:Fax`\n */\n send(params: FaxSendParams, request?: OystehrClientRequest): Promise<FaxSendResponse> {\n return this.request('/send', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","import { Address as AddressR4B, HumanName as HumanNameR4B } from 'fhir/r4b';\nimport { Address as AddressR5, HumanName as HumanNameR5 } from 'fhir/r5';\nimport {\n BatchInput,\n BatchInputRequest,\n Binary,\n Bundle,\n BundleEntry,\n FhirBundle,\n FhirCreateParams,\n FhirDeleteParams,\n FhirGetParams,\n FhirHistoryGetParams,\n FhirHistorySearchParams,\n FhirPatchParams,\n FhirResource,\n FhirSearchParams,\n FhirUpdateParams,\n} from '../..';\nimport { addParamsToSearch, FhirFetcherResponse, OystehrClientRequest, SDKResource } from '../../client/client';\n\n/**\n * Optional parameter that can be passed to the client methods. It allows\n * overriding the access token or project ID, and setting various headers,\n * such as 'Content-Type'. Also support enabling optimistic locking.\n */\nexport interface OystehrFHIRUpdateClientRequest extends OystehrClientRequest {\n /**\n * Enable optimistic locking for the request. If set to a version ID, the request will\n * include the 'If-Match' header with that value in the FHIR optimistic-locking format.\n * If the resource has been updated since the version provided, the request\n * will fail with a 412 Precondition Failed error.\n */\n optimisticLockingVersionId?: string;\n}\n\n/**\n * Performs a FHIR search and returns the results as a Bundle resource\n *\n * @param options FHIR resource type and FHIR search parameters\n * @param request optional OystehrClientRequest object\n * @returns FHIR Bundle resource\n */\nexport async function search<T extends FhirResource>(\n this: SDKResource,\n params: FhirSearchParams,\n request?: OystehrClientRequest\n): Promise<FhirFetcherResponse<Bundle<T>>> {\n const { resourceType, params: searchParams } = params;\n let paramMap: Record<string, (string | number)[]> | undefined;\n if (searchParams) {\n paramMap = Object.entries(searchParams).reduce((acc, [_, param]) => {\n if (!acc[param.name]) {\n acc[param.name] = [];\n }\n acc[param.name].push(param.value);\n return acc;\n }, {} as Record<string, (string | number)[]>);\n }\n const requestBundle = await this.fhirRequest<FhirBundle<T>>(`/${resourceType}/_search`, 'POST')(paramMap, {\n ...request,\n contentType: 'application/x-www-form-urlencoded',\n });\n const bundle: Bundle<T> = {\n ...requestBundle,\n entry: requestBundle.entry as Array<BundleEntry<T>> | undefined,\n unbundle: function (this: { entry?: Array<BundleEntry<T>> | undefined }) {\n return this.entry?.map((entry) => entry.resource).filter((entry): entry is T => entry !== undefined) ?? [];\n },\n };\n return bundle;\n}\n\nexport async function create<T extends FhirResource>(\n this: SDKResource,\n params: FhirCreateParams<T>,\n request?: OystehrClientRequest\n): Promise<FhirFetcherResponse<T>> {\n const { resourceType } = params;\n return this.fhirRequest(`/${resourceType}`, 'POST')(params as unknown as Record<string, unknown>, request);\n}\n\nexport async function get<T extends FhirResource>(\n this: SDKResource,\n { resourceType, id }: FhirGetParams,\n request?: OystehrClientRequest\n): Promise<FhirFetcherResponse<T>> {\n return this.fhirRequest<T>(`/${resourceType}/${id}`, 'GET')({}, request);\n}\n\nexport async function update<T extends FhirResource>(\n this: SDKResource,\n params: FhirUpdateParams<T>,\n request?: OystehrFHIRUpdateClientRequest\n): Promise<FhirFetcherResponse<T>> {\n const { id, resourceType } = params;\n return this.fhirRequest(`/${resourceType}/${id}`, 'PUT')(params as unknown as Record<string, unknown>, {\n ...request,\n ifMatch: request?.optimisticLockingVersionId ? `W/\"${request.optimisticLockingVersionId}\"` : undefined,\n });\n}\n\nexport async function patch<T extends FhirResource>(\n this: SDKResource,\n { resourceType, id, operations }: FhirPatchParams,\n request?: OystehrFHIRUpdateClientRequest\n): Promise<FhirFetcherResponse<T>> {\n return this.fhirRequest(`/${resourceType}/${id}`, 'PATCH')(operations, {\n ...request,\n contentType: 'application/json-patch+json',\n ifMatch: request?.optimisticLockingVersionId ? `W/\"${request.optimisticLockingVersionId}\"` : undefined,\n });\n}\n\nasync function del<T extends FhirResource>(\n this: SDKResource,\n { resourceType, id }: FhirDeleteParams,\n request?: OystehrClientRequest\n): Promise<FhirFetcherResponse<T>> {\n return this.fhirRequest(`/${resourceType}/${id}`, 'DELETE')({}, request);\n}\nexport { del as delete };\n\nexport async function history<T extends FhirResource>(\n this: SDKResource,\n { resourceType, id }: FhirHistorySearchParams,\n request?: OystehrClientRequest\n): Promise<FhirFetcherResponse<Bundle<T>>>;\nexport async function history<T extends FhirResource>(\n this: SDKResource,\n { resourceType, id, versionId }: FhirHistoryGetParams,\n request?: OystehrClientRequest\n): Promise<FhirFetcherResponse<T>>;\nexport async function history<T extends FhirResource>(\n this: SDKResource,\n { resourceType, id, versionId }: { resourceType: string; id: string; versionId?: string },\n request?: OystehrClientRequest\n): Promise<FhirFetcherResponse<Bundle<T>> | FhirFetcherResponse<T>> {\n return this.fhirRequest(`/${resourceType}/${id}/_history${versionId ? `/${versionId}` : ''}`, 'GET')({}, request);\n}\n\nfunction batchInputRequestToBundleEntryItem<T extends FhirResource>(\n request: BatchInputRequest<T>\n): BundleEntry<T | Binary<T>> {\n const { method, url } = request;\n const baseRequest = {\n request: {\n method,\n url,\n },\n };\n\n // Escape query string parameters in entry.request.url\n if (url.split('?').length > 1) {\n const [resource, query] = url.split('?');\n const params = query\n .split('&')\n .map((param) => {\n const [name, value] = param.split('=');\n return { name, value };\n })\n .reduce((acc, { name, value }) => {\n if (!name) {\n return acc;\n }\n if (!acc[name]) {\n acc[name] = [];\n }\n acc[name].push(value);\n return acc;\n }, {} as Record<string, string[]>);\n const search = new URLSearchParams();\n addParamsToSearch(params, search);\n baseRequest.request.url = `${resource}?${search.toString()}`;\n }\n\n // GET, DELETE, and HEAD require no further parameters\n if (['GET', 'DELETE', 'HEAD'].includes(method)) {\n return baseRequest as BundleEntry<T>;\n }\n\n // PUT updates require a full resource\n if (method === 'PUT') {\n const { resource } = request;\n return {\n ...baseRequest,\n resource: resource as T,\n } as BundleEntry<T>;\n }\n\n // PATCH can be Binary resource or JSON patch\n if (method === 'PATCH') {\n if ('resource' in request) {\n return {\n ...baseRequest,\n resource: request.resource,\n } as BundleEntry<Binary<T>>;\n }\n return {\n ...baseRequest,\n resource: {\n resourceType: 'Binary',\n contentType: 'application/json-patch+json',\n data: Buffer.from(JSON.stringify(request.operations), 'utf8').toString('base64'),\n },\n } as BundleEntry<Binary<T>>;\n }\n\n // POST creates require a full resource\n if (method === 'POST') {\n const { resource, fullUrl } = request;\n return {\n ...baseRequest,\n resource: resource as T,\n fullUrl,\n } as BundleEntry<T>;\n }\n throw new Error('Unrecognized method');\n}\n\nfunction bundleRequest(type: 'batch' | 'transaction') {\n return async function <BundleContentType extends FhirResource>(\n this: SDKResource,\n input: BatchInput<BundleContentType>,\n request?: OystehrClientRequest\n ): Promise<FhirFetcherResponse<Bundle<BundleContentType>>> {\n return this.fhirRequest('/', 'POST')(\n {\n resourceType: 'Bundle',\n type,\n entry: input.requests.map(batchInputRequestToBundleEntryItem),\n },\n request\n );\n };\n}\n\nexport const batch = bundleRequest('batch');\nexport const transaction = bundleRequest('transaction');\n\nexport function formatAddress(\n address: AddressR4B | AddressR5,\n options?: { all?: boolean; use?: boolean; lineSeparator?: string }\n): string {\n const builder = [];\n\n if (address.line) {\n builder.push(...address.line);\n }\n\n if (address.city || address.state || address.postalCode) {\n const cityStateZip = [];\n if (address.city) {\n cityStateZip.push(address.city);\n }\n if (address.state) {\n cityStateZip.push(address.state);\n }\n if (address.postalCode) {\n cityStateZip.push(address.postalCode);\n }\n builder.push(cityStateZip.join(', '));\n }\n\n if (address.use && (options?.all || options?.use)) {\n builder.push('[' + address.use + ']');\n }\n\n return builder.join(options?.lineSeparator || ', ').trim();\n}\n\nexport function formatHumanName(\n name: HumanNameR4B | HumanNameR5,\n options?: {\n all?: boolean;\n prefix?: boolean;\n suffix?: boolean;\n use?: boolean;\n }\n): string {\n const builder = [];\n\n if (name.prefix && options?.prefix !== false) {\n builder.push(...name.prefix);\n }\n\n if (name.given) {\n builder.push(...name.given);\n }\n\n if (name.family) {\n builder.push(name.family);\n }\n\n if (name.suffix && options?.suffix !== false) {\n builder.push(...name.suffix);\n }\n\n if (name.use && (options?.all || options?.use)) {\n builder.push('[' + name.use + ']');\n }\n\n return builder.join(' ').trim();\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\nimport * as ext from './fhir-ext';\n\nexport class Fhir extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['fhirApiUrl'] ?? 'https://fhir-api.zapehr.com';\n }\n /**\n * Performs a FHIR search and returns the results as a Bundle resource\n * @param options FHIR resource type and FHIR search parameters\n * @param request optional OystehrClientRequest object\n * @returns FHIR Bundle resource\n */\n search = ext.search;\n create = ext.create;\n get = ext.get;\n update = ext.update;\n patch = ext.patch;\n delete = ext.delete;\n history = ext.history;\n batch = ext.batch;\n transaction = ext.transaction;\n formatAddress = ext.formatAddress;\n formatHumanName = ext.formatHumanName;\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n LabOrderableItemListParams,\n LabOrderableItemListResponse,\n LabOrderableItemQuestionnaireGetParams,\n LabOrderableItemQuestionnaireGetResponse,\n LabOrderSubmitParams,\n LabRouteCreateParams,\n LabRouteDeleteParams,\n LabRouteListResponse,\n OystehrClientRequest,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class Lab extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['labApiUrl'] ?? 'https://labs-api.zapehr.com/v1';\n }\n /**\n * Gets a list of Routes associated with the project. Returns an empty list if no Routes are found.\n *\n * Access Policy Requirements:\n * Action: `Lab:GetRoutes`\n * Access Policy Resource: `Lab:Route`\n */\n routeList(request?: OystehrClientRequest): Promise<LabRouteListResponse> {\n return this.request('/route', 'get', this.#baseUrlThunk.bind(this))(request);\n }\n /**\n * Create a route. A Route represents that a lab and particular customer have a relationship, and a Route is necessary to submit an order to a lab. See [Route](https://docs.oystehr.com/oystehr/services/lab/onboarding-a-lab/#create-route) for more details.\n *\n * Access Policy Requirements:\n * Action: `Lab:CreateRoute`\n * Access Policy Resource: `Lab:Route`\n */\n routeCreate(params: LabRouteCreateParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/route', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Delete a route. Deleting a Route will permanently remove the `routeGuid`. Orders can no longer be submitted to this lab until a new Route is created. See [Route](https://docs.oystehr.com/oystehr/services/lab/onboarding-a-lab/#delete-route) for more details.\n *\n * Access Policy Requirements:\n * Action: `Lab:DeleteRoute`\n * Access Policy Resource: `Lab:Route`\n */\n routeDelete(params: LabRouteDeleteParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/route/{routeGuid}', 'delete', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Returns list of active orderable items for the latest compendium version. Page size is default 25 and max 100 items. See [orderable item Search](https://docs.oystehr.com/oystehr/services/lab/explore-the-compendium/#orderable-item-search) for more details.\n *\n * Access Policy Requirements:\n * Action: `Lab:SearchOrderableItems`\n * Access Policy Resource: `Lab:OrderableItem`\n */\n orderableItemList(\n params: LabOrderableItemListParams,\n request?: OystehrClientRequest\n ): Promise<LabOrderableItemListResponse>;\n /**\n * Returns list of active orderable items for the latest compendium version. Page size is default 25 and max 100 items. See [orderable item Search](https://docs.oystehr.com/oystehr/services/lab/explore-the-compendium/#orderable-item-search) for more details.\n *\n * Access Policy Requirements:\n * Action: `Lab:SearchOrderableItems`\n * Access Policy Resource: `Lab:OrderableItem`\n */\n orderableItemList(request?: OystehrClientRequest): Promise<LabOrderableItemListResponse>;\n /**\n * Returns list of active orderable items for the latest compendium version. Page size is default 25 and max 100 items. See [orderable item Search](https://docs.oystehr.com/oystehr/services/lab/explore-the-compendium/#orderable-item-search) for more details.\n *\n * Access Policy Requirements:\n * Action: `Lab:SearchOrderableItems`\n * Access Policy Resource: `Lab:OrderableItem`\n */\n orderableItemList(\n params?: LabOrderableItemListParams | OystehrClientRequest,\n request?: OystehrClientRequest\n ): Promise<LabOrderableItemListResponse> {\n return this.request('/orderableItem', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Retrieve the AOE (Answer on Entry) Questionnaire for the given orderable item. The orderable item is defined by its labGuid, compendiumVersion, and itemCode. See [AOE](https://docs.oystehr.com/oystehr/services/lab/explore-the-compendium/#AOE) for more details.\n *\n * Access Policy Requirements:\n * Action: `Lab:SearchOrderableItems`\n * Access Policy Resource: `Lab:OrderableItem`\n */\n orderableItemQuestionnaireGet(\n params: LabOrderableItemQuestionnaireGetParams,\n request?: OystehrClientRequest\n ): Promise<LabOrderableItemQuestionnaireGetResponse> {\n return this.request(\n '/canonical-questionnaire/lab/{labGuid}/compendium/{compendiumVersion}/item/{itemCode}/questionnaire',\n 'get',\n this.#baseUrlThunk.bind(this)\n )(params, request);\n }\n /**\n * Submit a lab order. Oystehr's [Submit Lab](https://docs.oystehr.com/oystehr/services/lab/submit-an-order/) feature allows users to submit a well configured ServiceRequest to an external lab. In order to successfully submit an order, a [Route](https://docs.oystehr.com/oystehr/services/lab/onboarding-a-lab/#create-route) to and Organization representing that lab must exist.\n *\n * Access Policy Requirements:\n * Action: `Lab:SubmitOrder`\n * Access Policy Resource: `Lab:Order`\n */\n orderSubmit(params: LabOrderSubmitParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/submit', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n M2mCreateParams,\n M2mCreateResponse,\n M2mDeleteParams,\n M2mGetParams,\n M2mGetResponse,\n M2mListResponse,\n M2mListV2Params,\n M2mListV2Response,\n M2mRotateSecretParams,\n M2mRotateSecretResponse,\n M2mUpdateParams,\n M2mUpdateResponse,\n OystehrClientRequest,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class M2m extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * DEPRECATED. Please use [v2/list](https://api-reference.oystehr.com/reference/get_m2m-v2-list) instead.\n *\n * Get a list of all M2M Clients. [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients) are used to access Oystehr APIs from scripts and server-side code like [Zambda Functions](https://docs.oystehr.com/oystehr/services/zambda).\n *\n * Access Policy Action: `App:ListAllM2MClients`\n * Access Policy Resource: `IAM:M2MClient`\n */\n list(request?: OystehrClientRequest): Promise<M2mListResponse> {\n return this.request('/m2m', 'get', this.#baseUrlThunk.bind(this))(request);\n }\n /**\n * Create a new M2M Client. [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients) are used to access Oystehr APIs from scripts and server-side code like [Zambda Functions](https://docs.oystehr.com/oystehr/services/zambda).\n *\n * Access Policy Action: `App:CreateM2MClient`\n * Access Policy Resource: `IAM:M2MClient`\n */\n create(params: M2mCreateParams, request?: OystehrClientRequest): Promise<M2mCreateResponse> {\n return this.request('/m2m', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Get the M2M Client with the provided ID. [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients) are used to access Oystehr APIs from scripts and server-side code like [Zambda Functions](https://docs.oystehr.com/oystehr/services/zambda).\n *\n * Access Policy Action: `App:GetM2MClient`\n * Access Policy Resource: `IAM:M2MClient`\n */\n get(params: M2mGetParams, request?: OystehrClientRequest): Promise<M2mGetResponse> {\n return this.request('/m2m/{id}', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Update the M2M Client with the provided ID. [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients) are used to access Oystehr APIs from scripts and server-side code like [Zambda Functions](https://docs.oystehr.com/oystehr/services/zambda).\n *\n * Access Policy Action: `App:UpdateM2MClient`\n * Access Policy Resource: `IAM:M2MClient`\n */\n update(params: M2mUpdateParams, request?: OystehrClientRequest): Promise<M2mUpdateResponse> {\n return this.request('/m2m/{id}', 'patch', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Delete the M2M Client with the provided ID. [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients) are used to access Oystehr APIs from scripts and server-side code like [Zambda Functions](https://docs.oystehr.com/oystehr/services/zambda).\n *\n * Access Policy Action: `App:DeleteM2MClient`\n * Access Policy Resource: `IAM:M2MClient`\n */\n delete(params: M2mDeleteParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/m2m/{id}', 'delete', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Rotate the client secret for the M2M Client with the provided ID. [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients) are used to access Oystehr APIs from scripts and server-side code like [Zambda Functions](https://docs.oystehr.com/oystehr/services/zambda).\n *\n * Access Policy Action: `App:RotateM2MClientSecret`\n * Access Policy Resource: `IAM:M2MClient`\n */\n rotateSecret(params: M2mRotateSecretParams, request?: OystehrClientRequest): Promise<M2mRotateSecretResponse> {\n return this.request('/m2m/{id}/rotate-secret', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Get M2M clients in the Project with pagination, sort, sort Order and filtering. [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients) are used to access Oystehr APIs from scripts and server-side code like [Zambda Functions](https://docs.oystehr.com/oystehr/services/zambda).\n *\n * Access Policy Action: `App:ListAllM2MClients`\n * Access Policy Resource: `IAM:M2MClient`\n */\n listV2(params: M2mListV2Params, request?: OystehrClientRequest): Promise<M2mListV2Response>;\n /**\n * Get M2M clients in the Project with pagination, sort, sort Order and filtering. [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients) are used to access Oystehr APIs from scripts and server-side code like [Zambda Functions](https://docs.oystehr.com/oystehr/services/zambda).\n *\n * Access Policy Action: `App:ListAllM2MClients`\n * Access Policy Resource: `IAM:M2MClient`\n */\n listV2(request?: OystehrClientRequest): Promise<M2mListV2Response>;\n /**\n * Get M2M clients in the Project with pagination, sort, sort Order and filtering. [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients) are used to access Oystehr APIs from scripts and server-side code like [Zambda Functions](https://docs.oystehr.com/oystehr/services/zambda).\n *\n * Access Policy Action: `App:ListAllM2MClients`\n * Access Policy Resource: `IAM:M2MClient`\n */\n listV2(params?: M2mListV2Params | OystehrClientRequest, request?: OystehrClientRequest): Promise<M2mListV2Response> {\n return this.request('/m2m/v2/list', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport { MessagingGetMessagingConfigResponse, OystehrClientRequest } from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class Messaging extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Get an information about the Messaging services configuration. This information includes phone number, phone number type and also rate limits of each service.\n */\n getMessagingConfig(request?: OystehrClientRequest): Promise<MessagingGetMessagingConfigResponse> {\n return this.request('/messaging/config', 'get', this.#baseUrlThunk.bind(this))(request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n OystehrClientRequest,\n PaymentMethodDeleteParams,\n PaymentMethodListParams,\n PaymentMethodListResponse,\n PaymentMethodSetDefaultParams,\n PaymentMethodSetUpParams,\n PaymentMethodSetUpResponse,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class PaymentMethod extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Enter a new credit card or other payment method for the user.\n *\n * Access Policy Requirements:\n * Action: `Payment:Setup`\n * Access Policy Resource: `Payment:PaymentMethod`\n * Actions: `FHIR:Read,FHIR:Create,FHIR:Update`\n * Access Policy Resource: `FHIR:Coverage:*`\n * Action: `FHIR:Read,FHIR:Create,FHIR:Update`\n * Access Policy Resource: `FHIR:Account:*`\n *\n * Also need to be able to read the patients' details. For example:\n * Action: `FHIR:Read`\n * Access Policy Resource: `FHIR:Patient`\n */\n setUp(params: PaymentMethodSetUpParams, request?: OystehrClientRequest): Promise<PaymentMethodSetUpResponse> {\n return this.request('/payment/payment-method/setup', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Set a specified payment method for the user as default.\n *\n * Access Policy Requirements:\n * Action: `Payment:SetDefault`\n * Access Policy Resource: `Payment:PaymentMethod`\n * Actions: `FHIR:Read,FHIR:Create,FHIR:Update`\n * Access Policy Resource: `FHIR:Coverage:*`\n * Action: `FHIR:Read,FHIR:Create,FHIR:Update`\n * Access Policy Resource: `FHIR:Account:*`\n *\n * Also need to be able to read the patients' details. For example:\n * Action: `FHIR:Read`\n * Access Policy Resource: `FHIR:Patient`\n */\n setDefault(params: PaymentMethodSetDefaultParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/payment/payment-method/set-default', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Delete a specified payment method for the beneficiary.\n *\n * Access Policy Requirements:\n * Action: `Payment:Delete`\n * Access Policy Resource: `Payment:PaymentMethod`\n * Actions: `FHIR:Read,FHIR:Create,FHIR:Update`\n * Access Policy Resource: `FHIR:Coverage:*`\n * Action: `FHIR:Read,FHIR:Create,FHIR:Update`\n * Access Policy Resource: `FHIR:Account:*`\n *\n * Also need to be able to read the patients' details. For example:\n * Action: `FHIR:Read`\n * Access Policy Resource: `FHIR:Patient`\n */\n delete(params: PaymentMethodDeleteParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/payment/payment-method', 'delete', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * List all payment methods for the patient.\n *\n * Access Policy Requirements:\n * Action: `Payment:Setup`\n * Access Policy Resource: `Payment:PaymentMethod`\n * Actions: `FHIR:Read,FHIR:Create,FHIR:Update`\n * Access Policy Resource: `FHIR:Coverage:*`\n * Action: `FHIR:Read,FHIR:Create,FHIR:Update`\n * Access Policy Resource: `FHIR:Account:*`\n *\n * Also need to be able to read the patients' details. For example:\n * Action: `FHIR:Read`\n * Access Policy Resource: `FHIR:Patient`\n */\n list(params: PaymentMethodListParams, request?: OystehrClientRequest): Promise<PaymentMethodListResponse> {\n return this.request('/payment/payment-method/list', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport { OystehrClientRequest, ProjectGetResponse, ProjectUpdateParams, ProjectUpdateResponse } from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class Project extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Get the Project settings for a Project. Developers must specify a [project ID](https://docs.oystehr.com/oystehr/core-documentation/authenticating-api-requests/#x-oystehr-project-id-header) in the header. A Project is the logically-isolated instance of Oystehr that segments your data from other Projects. [Projects](https://docs.oystehr.com/oystehr/services/project/) are completely independent from each other, having their own separate [FHIR store](https://docs.oystehr.com/oystehr/services/fhir/basics/), [Applications](https://docs.oystehr.com/oystehr/services/app/applications/), [Users](https://docs.oystehr.com/oystehr/services/app/users/), etc .\n *\n * Access Policy Action: `Project:GetProjectInfo`\n * Access Policy Resource: `Project:Settings`\n */\n get(request?: OystehrClientRequest): Promise<ProjectGetResponse> {\n return this.request('/project', 'get', this.#baseUrlThunk.bind(this))(request);\n }\n /**\n * Update the Project settings for the Project that corresponds to the project-id in the request header. A [Project](https://docs.oystehr.com/oystehr/services/project/) is the logically-isolated instance of Oystehr that segments your data from other Projects. Projects are completely independent from each other, having their own separate [FHIR store](https://docs.oystehr.com/oystehr/services/fhir/basics/), [Applications](https://docs.oystehr.com/oystehr/services/app/applications/), [Users](https://docs.oystehr.com/oystehr/services/app/users/), etc .\n *\n * Access Policy Action: `Project:UpdateProjectInfo`\n * Access Policy Resource: `Project:Settings`\n */\n update(params: ProjectUpdateParams, request?: OystehrClientRequest): Promise<ProjectUpdateResponse>;\n /**\n * Update the Project settings for the Project that corresponds to the project-id in the request header. A [Project](https://docs.oystehr.com/oystehr/services/project/) is the logically-isolated instance of Oystehr that segments your data from other Projects. Projects are completely independent from each other, having their own separate [FHIR store](https://docs.oystehr.com/oystehr/services/fhir/basics/), [Applications](https://docs.oystehr.com/oystehr/services/app/applications/), [Users](https://docs.oystehr.com/oystehr/services/app/users/), etc .\n *\n * Access Policy Action: `Project:UpdateProjectInfo`\n * Access Policy Resource: `Project:Settings`\n */\n update(request?: OystehrClientRequest): Promise<ProjectUpdateResponse>;\n /**\n * Update the Project settings for the Project that corresponds to the project-id in the request header. A [Project](https://docs.oystehr.com/oystehr/services/project/) is the logically-isolated instance of Oystehr that segments your data from other Projects. Projects are completely independent from each other, having their own separate [FHIR store](https://docs.oystehr.com/oystehr/services/fhir/basics/), [Applications](https://docs.oystehr.com/oystehr/services/app/applications/), [Users](https://docs.oystehr.com/oystehr/services/app/users/), etc .\n *\n * Access Policy Action: `Project:UpdateProjectInfo`\n * Access Policy Resource: `Project:Settings`\n */\n update(\n params?: ProjectUpdateParams | OystehrClientRequest,\n request?: OystehrClientRequest\n ): Promise<ProjectUpdateResponse> {\n return this.request('/project', 'patch', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n OystehrClientRequest,\n RcmEligibilityCheckParams,\n RcmEligibilityCheckResponse,\n RcmSubmitProfessionalClaimParams,\n RcmSubmitProfessionalClaimResponse,\n RcmValidateProfessionalClaimParams,\n RcmValidateProfessionalClaimResponse,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class Rcm extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Check [Insurance Eligibility](https://docs.oystehr.com/oystehr/services/rcm/eligibility/).\n *\n * Access Policy Action: `RCM:CheckInsuranceEligibility`\n * Access Policy Resource: `RCM:InsuranceEligibility`\n *\n * Access Policy Action: `FHIR:Create`\n * Access Policy Resource: `FHIR:CoverageEligibilityResponse`\n */\n eligibilityCheck(\n params: RcmEligibilityCheckParams,\n request?: OystehrClientRequest\n ): Promise<RcmEligibilityCheckResponse> {\n return this.request('/rcm/eligibility-check', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Check [Validate Professional Claim](https://docs.oystehr.com/oystehr/services/rcm/professional-claim-submission/).\n *\n * Access Policy Action: `RCM:ValidateProfessionalClaim`\n * Access Policy Resource: `RCM:Claim`\n *\n * Access Policy Action: `FHIR:Create`\n * Access Policy Resource: `FHIR:AuditEvent`\n */\n validateProfessionalClaim(\n params: RcmValidateProfessionalClaimParams,\n request?: OystehrClientRequest\n ): Promise<RcmValidateProfessionalClaimResponse> {\n return this.request('/rcm/professional-claim/validate', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Check [Submit Professional Claim](https://docs.oystehr.com/oystehr/services/rcm/professional-claim-submission/).\n *\n * Access Policy Action: `RCM:SubmitProfessionalClaim`\n * Access Policy Resource: `RCM:Claim`\n *\n * Access Policy Action: `FHIR:Create`\n * Access Policy Resource: `FHIR:AuditEvent`\n *\n * Access Policy Actions: `FHIR:Create, FHIR:Update`\n * Access Policy Resource: `FHIR:Claim`\n */\n submitProfessionalClaim(\n params: RcmSubmitProfessionalClaimParams,\n request?: OystehrClientRequest\n ): Promise<RcmSubmitProfessionalClaimResponse> {\n return this.request('/rcm/professional-claim/submit', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n OystehrClientRequest,\n RoleCreateParams,\n RoleCreateResponse,\n RoleDeleteParams,\n RoleGetParams,\n RoleGetResponse,\n RoleListResponse,\n RoleUpdateParams,\n RoleUpdateResponse,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class Role extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Get a list of all Roles. A [Role](https://docs.oystehr.com/oystehr/services/iam/roles/) defines an access policy that can be assigned to any number of [Developers](https://docs.oystehr.com/oystehr/services/iam/developers/), [Users](https://docs.oystehr.com/oystehr/services/app/users/), and [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients/).\n *\n * Access Policy Action: `IAM:ListAllRoles`\n * Access Policy Resource: `IAM:Role`\n */\n list(request?: OystehrClientRequest): Promise<RoleListResponse> {\n return this.request('/iam/role', 'get', this.#baseUrlThunk.bind(this))(request);\n }\n /**\n * Create a new Role. A [Role](https://docs.oystehr.com/oystehr/services/iam/roles/) defines an access policy that can be assigned to any number of [Developers](https://docs.oystehr.com/oystehr/services/iam/developers/), [Users](https://docs.oystehr.com/oystehr/services/app/users/), and [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients/).\n *\n * Access Policy Action: `IAM:CreateRole`\n * Access Policy Resource: `IAM:Role`\n */\n create(params: RoleCreateParams, request?: OystehrClientRequest): Promise<RoleCreateResponse> {\n return this.request('/iam/role', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Get the Role with the provided ID. A [Role](https://docs.oystehr.com/oystehr/services/iam/roles/) defines an access policy that can be assigned to any number of [Developers](https://docs.oystehr.com/oystehr/services/iam/developers/), [Users](https://docs.oystehr.com/oystehr/services/app/users/), and [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients/).\n *\n * Access Policy Action: `IAM:GetRole`\n * Access Policy Resource: `IAM:Role`\n */\n get(params: RoleGetParams, request?: OystehrClientRequest): Promise<RoleGetResponse> {\n return this.request('/iam/role/{roleId}', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Update the Role with the provided ID. A [Role](https://docs.oystehr.com/oystehr/services/iam/roles/) defines an access policy that can be assigned to any number of [Developers](https://docs.oystehr.com/oystehr/services/iam/developers/), [Users](https://docs.oystehr.com/oystehr/services/app/users/), and [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients/).\n *\n * Access Policy Action: `IAM:UpdateRole`\n * Access Policy Resource: `IAM:Role`\n */\n update(params: RoleUpdateParams, request?: OystehrClientRequest): Promise<RoleUpdateResponse> {\n return this.request('/iam/role/{roleId}', 'patch', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Delete the Role with the provided ID. A [Role](https://docs.oystehr.com/oystehr/services/iam/roles/) defines an access policy that can be assigned to any number of [Developers](https://docs.oystehr.com/oystehr/services/iam/developers/), [Users](https://docs.oystehr.com/oystehr/services/app/users/), and [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients/).\n *\n * Access Policy Action: `IAM:DeleteRole`\n * Access Policy Resource: `IAM:Role`\n * Will fail if any entities hold the Role or if Role is assigned as the default patient role for the project\n */\n delete(params: RoleDeleteParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/iam/role/{roleId}', 'delete', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n OystehrClientRequest,\n SecretDeleteParams,\n SecretGetParams,\n SecretGetResponse,\n SecretListResponse,\n SecretSetParams,\n SecretSetResponse,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class Secret extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Get a list of all secrets in the Project.\n *\n * Access Policy Action: `Zambda:ListAllSecrets`\n * Access Policy Resource: `Zambda:Secret`\n */\n list(request?: OystehrClientRequest): Promise<SecretListResponse> {\n return this.request('/secret', 'get', this.#baseUrlThunk.bind(this))(request);\n }\n /**\n * Create a secret for a project. If the secret is already defined, update it.\n *\n * Access Policy Action: `Zambda:CreateSecret`\n * Access Policy Resource: `Zambda:Secret`\n */\n set(params: SecretSetParams, request?: OystehrClientRequest): Promise<SecretSetResponse> {\n return this.request('/secret', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Get the secret with the provided name.\n *\n * Access Policy Action: `Zambda:GetSecret`\n * Access Policy Resource: `Zambda:Secret`\n */\n get(params: SecretGetParams, request?: OystehrClientRequest): Promise<SecretGetResponse> {\n return this.request('/secret/{name}', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Delete the secret with the provided name.\n *\n * Access Policy Action: `Zambda:DeleteSecret`\n * Access Policy Resource: `Zambda:Secret`\n */\n delete(params: SecretDeleteParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/secret/{name}', 'delete', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n OystehrClientRequest,\n TelemedCreateMeetingParams,\n TelemedCreateMeetingResponse,\n TelemedJoinMeetingParams,\n TelemedJoinMeetingResponse,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class Telemed extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Create a [telemedicine video meeting](https://docs.oystehr.com/oystehr/services/telemed/).\n *\n * Access Policy Requirements:\n * Action: `Telemed:CreateMeeting`\n * Access Policy Resource: `Telemed:Meeting`\n * Action: `FHIR:Create`\n * Access Policy Resource: `FHIR:Encounter`\n * Action: `FHIR:Update`\n * Access Policy Resource: `FHIR:Encounter`\n */\n createMeeting(\n params: TelemedCreateMeetingParams,\n request?: OystehrClientRequest\n ): Promise<TelemedCreateMeetingResponse> {\n return this.request('/telemed/v2/meeting', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Get Meeting and Attendee objects necessary to join a telemedicine video meeting.\n *\n * Access Policy Requirements:\n * Action: `Telemed:JoinMeeting`\n * Access Policy Resource: `Telemed:Meeting`\n * To use M2M token to join as anonymous user:\n * Action: `Telemed:AddAnonymousToMeeting`\n * Access Policy Resource: `Telemed:Meeting`\n */\n joinMeeting(params: TelemedJoinMeetingParams, request?: OystehrClientRequest): Promise<TelemedJoinMeetingResponse> {\n return this.request(\n '/telemed/v2/meeting/{encounterId}/join',\n 'get',\n this.#baseUrlThunk.bind(this)\n )(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport { OystehrClientRequest, TransactionalSMSSendParams, TransactionalSMSSendResponse } from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class TransactionalSMS extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Send an SMS to any phone number. Oystehr's [Transactional SMS](https://docs.oystehr.com/oystehr/services/messaging/transactional-sms/) feature makes it easy to send a text message to your [Users](https://docs.oystehr.com/oystehr/services/app/users/) with a single API call. You can use this feature to send appointment reminders, prescription refill reminders, discharge information, and more.\n *\n * Access Policy Requirements:\n * Action: `Messaging:SendTransactionalSMS`\n * Access Policy Resource: `Messaging:TransactionalSMS`\n * Action: `FHIR:Create`\n * Access Policy Resource: `FHIR:Communication`\n * Action: `FHIR:Update`\n * Access Policy Resource: `FHIR:Communication`\n *\n * You also need Read access for the resource to which you are sending a message. For example:\n * Action: `FHIR:Read`\n * Access Policy Resource: `FHIR:Patient`\n */\n send(params: TransactionalSMSSendParams, request?: OystehrClientRequest): Promise<TransactionalSMSSendResponse> {\n return this.request('/messaging/transactional-sms/send', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n OystehrClientRequest,\n UserDeleteParams,\n UserGetParams,\n UserGetResponse,\n UserInviteParams,\n UserInviteResponse,\n UserListResponse,\n UserListV2Params,\n UserListV2Response,\n UserMeResponse,\n UserUpdateParams,\n UserUpdateResponse,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class User extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Get your own User details. [Users](https://docs.oystehr.com/oystehr/services/app/users/) are the people who log into the [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) you configure for securing the apps you build on top of Oystehr.\n *\n * Fetch details about the calling User. This endpoint has no access policy requirements, it is available to all authenticated Users.\n */\n me(request?: OystehrClientRequest): Promise<UserMeResponse> {\n return this.request('/user/me', 'get', this.#baseUrlThunk.bind(this))(request);\n }\n /**\n * Get the User with the provided ID. [Users](https://docs.oystehr.com/oystehr/services/app/users/) are the people who log into the [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) you configure for securing the apps you build on top of Oystehr.\n *\n * Access Policy Action: `App:GetUser`\n * Access Policy Resource: `App:User`\n */\n get(params: UserGetParams, request?: OystehrClientRequest): Promise<UserGetResponse> {\n return this.request('/user/{id}', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Update the User with the provided ID. [Users](https://docs.oystehr.com/oystehr/services/app/users/) are the people who log into the [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) you configure for securing the apps you build on top of Oystehr.\n *\n * Access Policy Action: `App:UpdateUser`\n * Access Policy Resource: `App:User`\n */\n update(params: UserUpdateParams, request?: OystehrClientRequest): Promise<UserUpdateResponse> {\n return this.request('/user/{id}', 'patch', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Delete the User with the provided ID. [Users](https://docs.oystehr.com/oystehr/services/app/users/) are the people who log into the [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) you configure for securing the apps you build on top of Oystehr.\n *\n * Access Policy Action: `App:DeleteUser`\n * Access Policy Resource: `App:User`\n */\n delete(params: UserDeleteParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/user/{id}', 'delete', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Invite a User to the Project. [Users](https://docs.oystehr.com/oystehr/services/app/users/) are the people who log into the [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) you configure for securing the apps you build on top of Oystehr.\n *\n * Access Policy Action: `App:CreateUser`\n * Access Policy Resource: `App:User`\n */\n invite(params: UserInviteParams, request?: OystehrClientRequest): Promise<UserInviteResponse> {\n return this.request('/user/invite', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * DEPRECATED. Please use [v2/list](https://api-reference.oystehr.com/reference/get_user-v2-list) instead.\n *\n * Get all Users in the Project. [Users](https://docs.oystehr.com/oystehr/services/app/users/) are the people who log into the [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) you configure for securing the apps you build on top of Oystehr.\n *\n * Access Policy Action: `App:ListAllUsers`\n * Access Policy Resource: `App:User`\n */\n list(request?: OystehrClientRequest): Promise<UserListResponse> {\n return this.request('/user', 'get', this.#baseUrlThunk.bind(this))(request);\n }\n /**\n * Get Users in the Project with pagination, sort, sort Order and filtering. [Users](https://docs.oystehr.com/oystehr/services/app/users/) are the people who log into the [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) you configure for securing the apps you build on top of Oystehr.\n *\n * Access Policy Action: `Project:ListAllUsers`\n * Access Policy Resource: `Project:Settings`\n */\n listV2(params: UserListV2Params, request?: OystehrClientRequest): Promise<UserListV2Response>;\n /**\n * Get Users in the Project with pagination, sort, sort Order and filtering. [Users](https://docs.oystehr.com/oystehr/services/app/users/) are the people who log into the [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) you configure for securing the apps you build on top of Oystehr.\n *\n * Access Policy Action: `Project:ListAllUsers`\n * Access Policy Resource: `Project:Settings`\n */\n listV2(request?: OystehrClientRequest): Promise<UserListV2Response>;\n /**\n * Get Users in the Project with pagination, sort, sort Order and filtering. [Users](https://docs.oystehr.com/oystehr/services/app/users/) are the people who log into the [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) you configure for securing the apps you build on top of Oystehr.\n *\n * Access Policy Action: `Project:ListAllUsers`\n * Access Policy Resource: `Project:Settings`\n */\n listV2(\n params?: UserListV2Params | OystehrClientRequest,\n request?: OystehrClientRequest\n ): Promise<UserListV2Response> {\n return this.request('/user/v2/list', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport { OystehrClientRequest, VersionGetResponse } from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class Version extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Get project API version. This endpoint is public so there are no access policy requirements.\n */\n get(request?: OystehrClientRequest): Promise<VersionGetResponse> {\n return this.request('/version', 'get', this.#baseUrlThunk.bind(this))(request);\n }\n}\n","import { defaultProjectApiUrl, SDKResource } from '../../client/client';\nimport { OystehrSdkError } from '../../errors';\nimport { Z3GetPresignedUrlParams, Z3GetPresignedUrlResponse } from '../types';\n\nfunction baseUrlThunk(this: SDKResource): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n}\n\n/**\n * Uploads a file to the bucket and key. Files should be Blobs.\n *\n * @param params upload file params\n */\nexport async function uploadFile(\n this: SDKResource,\n {\n bucketName,\n 'objectPath+': key,\n file,\n }: {\n bucketName: string;\n 'objectPath+': string;\n file: Blob;\n }\n): Promise<void> {\n const uploadUrl = await this.request(\n '/z3/{bucketName}/{objectPath+}',\n 'post',\n baseUrlThunk.bind(this)\n )({\n action: 'upload',\n bucketName,\n 'objectPath+': key,\n });\n await fetch(uploadUrl.signedUrl, {\n method: 'PUT',\n body: file,\n });\n}\n\n/**\n * Downloads an object matching the bucket and key. File content is returned as an ArrayBuffer.\n *\n * @param params download file params\n */\nexport async function downloadFile(\n this: SDKResource,\n {\n bucketName,\n 'objectPath+': key,\n }: {\n bucketName: string;\n 'objectPath+': string;\n }\n): Promise<ArrayBuffer> {\n const uploadUrl = await this.request(\n '/z3/{bucketName}/{objectPath+}',\n 'post',\n baseUrlThunk.bind(this)\n )({\n action: 'download',\n bucketName,\n 'objectPath+': key,\n });\n const resp = await fetch(uploadUrl.signedUrl, {\n method: 'GET',\n });\n if (!resp.ok) {\n throw new Error('Failed to download file');\n }\n return resp.arrayBuffer();\n}\n\n/**\n * This helper performs a `getPresignedUrl` request for Z3 URLs of the forms\n * `https://projects-api.oystehr.com/v1/z3/<bucket>/<key>` or `z3://<bucket>/<key>`\n * instead of the standard SDK `Z3GetPresignedUrlParams`.\n *\n * @param params url and action\n */\nexport async function getPresignedUrlForZ3Url(\n this: SDKResource,\n params: { url: string; action: Z3GetPresignedUrlParams['action'] }\n): Promise<Z3GetPresignedUrlResponse> {\n let bucket: string;\n let key: string;\n const url = new URL(params.url);\n if (url.protocol === 'z3:') {\n // remove leading forward slash\n const z3PathParts = url.pathname.split('/').slice(1);\n bucket = url.hostname;\n key = z3PathParts.join('/');\n } else if (url.href.startsWith(this.config.services?.['projectApiUrl'] ?? defaultProjectApiUrl)) {\n // remove leading `/v1/z3`\n const httpsPathParts = url.pathname.split('/').slice(3);\n bucket = httpsPathParts[0];\n key = httpsPathParts.slice(1).join('/');\n } else {\n throw new OystehrSdkError({ message: 'Invalid Z3 URL', code: 400 });\n }\n const requestParams: Z3GetPresignedUrlParams = {\n action: 'upload',\n bucketName: bucket,\n 'objectPath+': key,\n };\n return this.request('/z3/{bucketName}/{objectPath+}', 'post', baseUrlThunk.bind(this))(requestParams);\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n OystehrClientRequest,\n Z3CreateBucketParams,\n Z3CreateBucketResponse,\n Z3DeleteBucketParams,\n Z3DeleteObjectParams,\n Z3GetPresignedUrlParams,\n Z3GetPresignedUrlResponse,\n Z3ListBucketsResponse,\n Z3ListObjectsParams,\n Z3ListObjectsResponse,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\nimport * as ext from './z3-ext';\n\nexport class Z3 extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Uploads a file to the bucket and key. Files should be Blobs.\n * @param params upload file params\n */\n uploadFile = ext.uploadFile;\n /**\n * Downloads an object matching the bucket and key. File content is returned as an ArrayBuffer.\n * @param params download file params\n */\n downloadFile = ext.downloadFile;\n /**\n * This helper performs a `getPresignedUrl` request for Z3 URLs of the forms\n * `https://projects-api.oystehr.com/v1/z3/<bucket>/<key>` or `z3://<bucket>/<key>`\n * instead of the standard SDK `Z3GetPresignedUrlParams`.\n * @param params url and action\n */\n getPresignedUrlForZ3Url = ext.getPresignedUrlForZ3Url;\n /**\n * List all Z3 Buckets. [Z3](https://docs.oystehr.com/oystehr/services/z3/) is Oystehr's built-in and fully integrated solution for file storage.\n *\n * Access Policy Action: `Z3:ListBuckets`\n * Access Policy Resource: `Z3:BucketName`\n */\n listBuckets(request?: OystehrClientRequest): Promise<Z3ListBucketsResponse> {\n return this.request('/z3', 'get', this.#baseUrlThunk.bind(this))(request);\n }\n /**\n * Create a Z3 Bucket with the provided name. [Z3](https://docs.oystehr.com/oystehr/services/z3/) is Oystehr's built-in and fully integrated solution for file storage.\n *\n * Access Policy Action: `Z3:CreateBucket`\n * Access Policy Resource: `Z3:*`\n */\n createBucket(params: Z3CreateBucketParams, request?: OystehrClientRequest): Promise<Z3CreateBucketResponse> {\n return this.request('/z3/{bucketName}', 'put', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Delete the Z3 Bucket with the provided name. [Z3](https://docs.oystehr.com/oystehr/services/z3/) is Oystehr's built-in and fully integrated solution for file storage.\n *\n * Access Policy Action: `Z3:DeleteBucket`\n * Access Policy Resource: `Z3:BucketName`\n */\n deleteBucket(params: Z3DeleteBucketParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/z3/{bucketName}', 'delete', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * List all Z3 Objects at the provided path in the Bucket with the provided name [Z3](https://docs.oystehr.com/oystehr/services/z3/) is Oystehr's built-in and fully integrated solution for file storage.\n *\n * Access Policy Action: `Z3:ListObjects`\n * Access Policy Resource: `Z3:BucketName:ObjectPath`\n */\n listObjects(params: Z3ListObjectsParams, request?: OystehrClientRequest): Promise<Z3ListObjectsResponse> {\n return this.request('/z3/{bucketName}/{objectPath+}', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Get a link for downloading or uploading a Z3 Object to the provided path in the Bucket with the provided name. [Z3](https://docs.oystehr.com/oystehr/services/z3/) is Oystehr's built-in and fully integrated solution for file storage.\n *\n * Access Policy Action: `Z3:PutObject` or `Z3:GetObject`\n * Access Policy Resource: `Z3:BucketName:ObjectPath`\n */\n getPresignedUrl(params: Z3GetPresignedUrlParams, request?: OystehrClientRequest): Promise<Z3GetPresignedUrlResponse> {\n return this.request('/z3/{bucketName}/{objectPath+}', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Delete the Z3 Object at the provided path in the Bucket with the provided name. [Z3](https://docs.oystehr.com/oystehr/services/z3/) is Oystehr's built-in and fully integrated solution for file storage.\n *\n * Access Policy Action: `Z3:DeleteObject`\n * Access Policy Resource: `Z3:BucketName:ObjectPath`\n */\n deleteObject(params: Z3DeleteObjectParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/z3/{bucketName}/{objectPath+}', 'delete', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","import { SDKResource } from '../../client/client';\n\nfunction baseUrlThunk(this: SDKResource): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n}\n\nexport async function uploadFile(\n this: SDKResource,\n {\n id,\n file,\n filename,\n }: {\n id: string;\n file: Blob;\n filename?: string | undefined;\n }\n): Promise<void> {\n const uploadUrl = await this.request('/zambda/{id}/s3-upload', 'post', baseUrlThunk.bind(this))({ id, filename });\n await fetch(uploadUrl.signedUrl, {\n method: 'PUT',\n body: file,\n });\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n OystehrClientRequest,\n ZambdaCreateParams,\n ZambdaCreateResponse,\n ZambdaDeleteParams,\n ZambdaExecuteParams,\n ZambdaExecutePublicParams,\n ZambdaExecutePublicResponse,\n ZambdaExecuteResponse,\n ZambdaGetParams,\n ZambdaGetResponse,\n ZambdaListResponse,\n ZambdaS3UploadParams,\n ZambdaS3UploadResponse,\n ZambdaUpdateParams,\n ZambdaUpdateResponse,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\nimport * as ext from './zambda-ext';\n\nexport class Zambda extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n uploadFile = ext.uploadFile;\n /**\n * Get a list of all Zambda Functions in the Project. [Zambdas](https://docs.oystehr.com/oystehr/services/zambda/) are functions that can be used to execute your code. They can be used to process data received from Oystehr's APIs or to perform operations on third-party services.\n *\n * Access Policy Action: `Zambda:ListAllFunctions`\n * Access Policy Resource: `Zambda:Function`\n */\n list(request?: OystehrClientRequest): Promise<ZambdaListResponse> {\n return this.request('/zambda', 'get', this.#baseUrlThunk.bind(this))(request);\n }\n /**\n * Create a new Zambda Function. [Zambdas](https://docs.oystehr.com/oystehr/services/zambda/) are functions that can be used to execute your code. They can be used to process data received from Oystehr's APIs or to perform operations on third-party services.\n *\n * Access Policy Action: `Zambda:CreateFunction`\n * Access Policy Resource: `Zambda:Function`\n */\n create(params: ZambdaCreateParams, request?: OystehrClientRequest): Promise<ZambdaCreateResponse> {\n return this.request('/zambda', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Get the Zambda Function with the provided ID or name. [Zambdas](https://docs.oystehr.com/oystehr/services/zambda/) are functions that can be used to execute your code. They can be used to process data received from Oystehr's APIs or to perform operations on third-party services.\n *\n * Access Policy Action: `Zambda:GetFunction`\n * Access Policy Resource: `Zambda:Function`\n */\n get(params: ZambdaGetParams, request?: OystehrClientRequest): Promise<ZambdaGetResponse> {\n return this.request('/zambda/{id}', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Update the Zambda Function with the provided ID or name. [Zambdas](https://docs.oystehr.com/oystehr/services/zambda/) are functions that can be used to execute your code. They can be used to process data received from Oystehr's APIs or to perform operations on third-party services.\n *\n * Access Policy Action: `Zambda:UpdateFunction`\n * Access Policy Resource: `Zambda:Function`\n */\n update(params: ZambdaUpdateParams, request?: OystehrClientRequest): Promise<ZambdaUpdateResponse> {\n return this.request('/zambda/{id}', 'patch', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Delete the Zambda Function with the provided ID or name. [Zambdas](https://docs.oystehr.com/oystehr/services/zambda/) are functions that can be used to execute your code. They can be used to process data received from Oystehr's APIs or to perform operations on third-party services.\n *\n * Access Policy Action: `Zambda:DeleteFunction`\n * Access Policy Resource: `Zambda:Function`\n */\n delete(params: ZambdaDeleteParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/zambda/{id}', 'delete', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Execute the [Authenticated Zambda Function](https://docs.oystehr.com/oystehr/services/zambda/types/authenticated/) with the provided ID. [Zambdas](https://docs.oystehr.com/oystehr/services/zambda/) are functions that can be used to execute your code. They can be used to process data received from Oystehr's APIs or to perform operations on third-party services.\n *\n * Access Policy Action: `Zambda:InvokeFunction`\n * Access Policy Resource: `Zambda:Function`\n */\n execute(params: ZambdaExecuteParams, request?: OystehrClientRequest): Promise<ZambdaExecuteResponse> {\n return this.request('/zambda/{id}/execute', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Execute the [Public Zambda Function](https://docs.oystehr.com/oystehr/services/zambda/types/public/) with the provided ID. [Zambdas](https://docs.oystehr.com/oystehr/services/zambda/) are functions that can be used to execute your code. They can be used to process data received from Oystehr's APIs or to perform operations on third-party services.\n *\n * Execute a zambda that has method http_open. This endpoint is public so there are no access policy requirements.\n */\n executePublic(\n params: ZambdaExecutePublicParams,\n request?: OystehrClientRequest\n ): Promise<ZambdaExecutePublicResponse> {\n return this.request('/zambda/{id}/execute-public', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Returns a URL that is used to deploy code to the Zambda Function with the provided ID. [Zambdas](https://docs.oystehr.com/oystehr/services/zambda/) are functions that can be used to execute your code. They can be used to process data received from Oystehr's APIs or to perform operations on third-party services.\n *\n * Access Policy Action: `Zambda:UpdateFunction`\n * Access Policy Resource: `Zambda:Function`\n */\n s3Upload(params: ZambdaS3UploadParams, request?: OystehrClientRequest): Promise<ZambdaS3UploadResponse> {\n return this.request('/zambda/{id}/s3-upload', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n OystehrClientRequest,\n ZambdaLogStreamGetParams,\n ZambdaLogStreamGetResponse,\n ZambdaLogStreamListParams,\n ZambdaLogStreamListResponse,\n ZambdaLogStreamSearchParams,\n ZambdaLogStreamSearchResponse,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class ZambdaLogStream extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Get the log streams for the Zambda Function with the provided ID. [Zambdas](https://docs.oystehr.com/oystehr/services/zambda/) are functions that can be used to execute your code. They can be used to process data received from Oystehr's APIs or to perform operations on third-party services.\n *\n * Access Policy Action: `Zambda:ReadLogs`\n * Access Policy Resource: `Zambda:Function`\n */\n list(params: ZambdaLogStreamListParams, request?: OystehrClientRequest): Promise<ZambdaLogStreamListResponse> {\n return this.request('/zambda/{id}/logStream', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Get all logs for the Zambda Function with the provided ID, filtered by any of: text in messages, minimum start date, and/or maximum end date. [Zambdas](https://docs.oystehr.com/oystehr/services/zambda/) are functions that can be used to execute your code. They can be used to process data received from Oystehr's APIs or to perform operations on third-party services.\n *\n * Access Policy Action: `Zambda:ReadLogs`\n * Access Policy Resource: `Zambda:Function`\n */\n search(params: ZambdaLogStreamSearchParams, request?: OystehrClientRequest): Promise<ZambdaLogStreamSearchResponse> {\n return this.request('/zambda/{id}/logStream/search', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Get the logs from the specified log stream for the Zambda Function with the provided ID. [Zambdas](https://docs.oystehr.com/oystehr/services/zambda/) are functions that can be used to execute your code. They can be used to process data received from Oystehr's APIs or to perform operations on third-party services.\n *\n * Access Policy Action: `Zambda:ReadLogs`\n * Access Policy Resource: `Zambda:Function`\n */\n get(params: ZambdaLogStreamGetParams, request?: OystehrClientRequest): Promise<ZambdaLogStreamGetResponse> {\n return this.request(\n '/zambda/{id}/logStream/{logStreamName}',\n 'post',\n this.#baseUrlThunk.bind(this)\n )(params, request);\n }\n}\n","// 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 { 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 rcm: Rcm;\n readonly erx: Erx;\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 zambda: Zambda;\n readonly zambdaLogStream: ZambdaLogStream;\n readonly fax: Fax;\n readonly lab: Lab;\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.rcm = new Rcm(config);\n this.erx = new Erx(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.zambda = new Zambda(config);\n this.zambdaLogStream = new ZambdaLogStream(config);\n this.fax = new Fax(config);\n this.lab = new Lab(config);\n this.fhir = new Fhir(config);\n }\n}\n","import type { OystehrClientRequest } from './client/client';\nimport { OystehrConfig } from './config';\nimport * as errors from './errors';\nimport { Oystehr as OystehrBase } from './resources/classes';\n\nexport * from './resources';\n\nexport type { OystehrClientRequest };\nexport type { OystehrConfig };\n\nclass Oystehr extends OystehrBase {\n static OystehrFHIRError = errors.OystehrFHIRError;\n static OystehrSdkError = errors.OystehrSdkError;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Oystehr {\n export type OystehrFHIRError = errors.OystehrFHIRError;\n export type OystehrSdkError = errors.OystehrSdkError;\n}\n\nexport default Oystehr;\n"],"names":["OystehrSdkError","Error","constructor","message","code","cause","super","Object","setPrototypeOf","this","prototype","name","toString","toJSON","transformOperationOutcomeToErrorMessage","causes","issue","_a","details","text","push","length","join","OystehrFHIRError","error","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__classPrivateFieldGet","receiver","state","kind","f","TypeError","has","call","get","SuppressedError","STATUS_CODES_TO_RETRY","ERROR_CODES_TO_RETRY","SDKResource","config","request","path","method","baseUrlThunk","params","configThunk","fetcher","err","fhirRequest","_b","services","fhirApiUrl","fullError","isInternalClientRequest","methodParam","providedParams","Array","isArray","requestCtx","toLowerCase","fetchImpl","fetch","accessToken","_c","projectId","_d","finalPath","finalParams","subbedPath","addlParams","unusedParams","assign","replace","_","paramName","match","encodeURIComponent","unusedKeys","keys","reduce","acc","key","subParamsInPath","baseUrlEvaluated","fullBaseUrl","endsWith","url","URL","body","JSON","stringify","addParamsToSearch","searchParams","contentType","search","URLSearchParams","headers","_e","Authorization","ifMatch","requestId","_f","uuidv4","retryConfig","retries","_g","retry","_h","jitter","_j","_k","delay","_l","_m","onRetry","_o","retryOn","_q","_p","work","lastErr","attempt","from","index","isRetryable","includes","Math","floor","random","setTimeout","response","Request","toUpperCase","responseBody","responseJson","_r","_s","parse","_err","ok","status","_x","_w","_v","_u","_t","output","statusText","_0","_z","_y","entries","forEach","v","append","Application","list","bind","create","_Application_instances","_Application_baseUrlThunk","update","rotateSecret","revokeRefreshToken","revokeAccessToken","Charge","_Charge_instances","_Charge_baseUrlThunk","ENCOUNTER_VS_EXTENSION_URL","ENCOUNTER_VS_EXTENSION_RELATIVE_URL","getConversationIdFromEncounter","encounter","hasOwn","isR5Encounter","virtualService","find","vs","channelType","system","addressString","extension","virtualServiceExtension","valueString","Conversation","ext.ENCOUNTER_VS_EXTENSION_URL","ext.ENCOUNTER_VS_EXTENSION_RELATIVE_URL","ext.getConversationIdFromEncounter","_Conversation_instances","_Conversation_baseUrlThunk","getToken","addParticipant","removeParticipant","Developer","_Developer_instances","_Developer_baseUrlThunk","invite","listV2","Erx","syncPatient","_Erx_instances","_Erx_baseUrlThunk","allergySearch","cancelOrder","cancelPrescription","medicationSearch","medicationSearchV2","Fax","offboard","onboard","send","_Fax_instances","_Fax_baseUrlThunk","resourceType","paramMap","param","requestBundle","entry","unbundle","map","resource","filter","undefined","id","optimisticLockingVersionId","patch","operations","del","history","versionId","batchInputRequestToBundleEntryItem","baseRequest","split","query","data","Buffer","fullUrl","bundleRequest","type","input","requests","batch","transaction","formatAddress","address","options","builder","line","city","postalCode","cityStateZip","use","all","lineSeparator","trim","formatHumanName","prefix","given","family","suffix","Fhir","ext.search","ext.create","ext.get","ext.update","ext.patch","delete","ext.delete","ext.history","ext.batch","ext.transaction","ext.formatAddress","ext.formatHumanName","Lab","routeList","routeCreate","_Lab_instances","_Lab_baseUrlThunk","routeDelete","orderableItemList","orderableItemQuestionnaireGet","orderSubmit","M2m","_M2m_instances","_M2m_baseUrlThunk","Messaging","getMessagingConfig","PaymentMethod","setUp","_PaymentMethod_instances","_PaymentMethod_baseUrlThunk","setDefault","Project","_Project_instances","_Project_baseUrlThunk","Rcm","eligibilityCheck","_Rcm_instances","_Rcm_baseUrlThunk","validateProfessionalClaim","submitProfessionalClaim","Role","_Role_instances","_Role_baseUrlThunk","Secret","set","_Secret_instances","_Secret_baseUrlThunk","Telemed","createMeeting","_Telemed_instances","_Telemed_baseUrlThunk","joinMeeting","TransactionalSMS","_TransactionalSMS_instances","_TransactionalSMS_baseUrlThunk","User","me","_User_instances","_User_baseUrlThunk","Version","uploadFile","bucketName","file","uploadUrl","action","signedUrl","downloadFile","resp","arrayBuffer","getPresignedUrlForZ3Url","bucket","protocol","z3PathParts","pathname","slice","hostname","href","startsWith","httpsPathParts","requestParams","Z3","ext.uploadFile","ext.downloadFile","ext.getPresignedUrlForZ3Url","listBuckets","createBucket","_Z3_instances","_Z3_baseUrlThunk","deleteBucket","listObjects","getPresignedUrl","deleteObject","filename","Zambda","_Zambda_instances","_Zambda_baseUrlThunk","execute","executePublic","s3Upload","ZambdaLogStream","_ZambdaLogStream_instances","_ZambdaLogStream_baseUrlThunk","projectApiUrl","application","developer","m2m","messaging","conversation","transactionalSMS","paymentMethod","charge","project","rcm","erx","role","secret","telemed","user","version","z3","zambda","zambdaLogStream","fax","lab","fhir","Oystehr","OystehrBase","errors.OystehrFHIRError","errors.OystehrSdkError"],"mappings":"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","x_google_ignoreList":[1]}
|
|
1
|
+
{"version":3,"file":"index.min.cjs","sources":["../../src/errors/index.ts","../../../../node_modules/tslib/tslib.es6.js","../../src/client/client.ts","../../src/resources/classes/application.ts","../../src/resources/classes/charge.ts","../../src/resources/classes/conversation-ext.ts","../../src/resources/classes/conversation.ts","../../src/resources/classes/developer.ts","../../src/resources/classes/erx.ts","../../src/resources/classes/erxV1.ts","../../src/resources/classes/erxV2.ts","../../src/resources/classes/fax.ts","../../src/resources/classes/fhir-ext.ts","../../src/resources/classes/fhir.ts","../../src/resources/classes/lab.ts","../../src/resources/classes/m2m.ts","../../src/resources/classes/messaging.ts","../../src/resources/classes/paymentMethod.ts","../../src/resources/classes/project.ts","../../src/resources/classes/rcm.ts","../../src/resources/classes/role.ts","../../src/resources/classes/secret.ts","../../src/resources/classes/telemed.ts","../../src/resources/classes/transactionalSMS.ts","../../src/resources/classes/user.ts","../../src/resources/classes/version.ts","../../src/resources/classes/z3-ext.ts","../../src/resources/classes/z3.ts","../../src/resources/classes/zambda-ext.ts","../../src/resources/classes/zambda.ts","../../src/resources/classes/zambdaLogStream.ts","../../src/resources/classes/index.ts","../../src/index.cts"],"sourcesContent":["import { OperationOutcome as OperationOutcomeR4B } from 'fhir/r4b';\nimport { OperationOutcome as OperationOutcomeR5 } from 'fhir/r5';\n\nexport class OystehrSdkError extends Error {\n code: number;\n constructor({ message, code, cause }: { message: string; code: number; cause?: unknown }) {\n super(message, { cause });\n Object.setPrototypeOf(this, OystehrSdkError.prototype);\n this.code = code;\n this.name = 'OystehrSdkError';\n }\n toString(): string {\n return `${this.name}: ${this.message} (code: ${this.code})`;\n }\n toJSON(): any {\n return {\n name: this.name,\n message: this.message,\n code: this.code,\n cause: this.cause,\n };\n }\n}\n\nfunction transformOperationOutcomeToErrorMessage(cause: OperationOutcomeR4B | OperationOutcomeR5): string {\n const causes = [];\n for (const issue of cause.issue ?? []) {\n if (issue.details && issue.details.text) {\n causes.push(issue.details.text);\n }\n }\n if (!causes.length) {\n causes.push('Unknown FHIR error');\n }\n return causes.join(',');\n}\n\nexport class OystehrFHIRError extends OystehrSdkError {\n cause: OperationOutcomeR4B | OperationOutcomeR5;\n constructor({ error, code }: { error: OperationOutcomeR4B | OperationOutcomeR5; code: number }) {\n super({\n message: transformOperationOutcomeToErrorMessage(error as OperationOutcomeR4B | OperationOutcomeR5),\n code,\n });\n Object.setPrototypeOf(this, OystehrFHIRError.prototype);\n this.cause = error as OperationOutcomeR4B | OperationOutcomeR5;\n this.name = 'OystehrFHIRError';\n }\n toJSON(): any {\n return {\n name: this.name,\n message: this.message,\n code: this.code,\n cause: this.cause,\n };\n }\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","import { v4 as uuidv4 } from 'uuid';\nimport { OystehrConfig } from '../config';\nimport { OystehrFHIRError, OystehrSdkError } from '../errors';\nimport { FhirBundle, FhirResource, OperationOutcome } from '../resources/types';\n\ntype HttpMethod = 'get' | 'put' | 'post' | 'delete' | 'options' | 'head' | 'patch' | 'trace';\nexport const defaultProjectApiUrl = 'https://project-api.zapehr.com/v1';\nconst defaultFhirApiUrl = 'https://fhir-api.zapehr.com';\nconst STATUS_CODES_TO_RETRY = [408, 429, 500, 502, 503, 504];\nconst ERROR_CODES_TO_RETRY = [\n 'ECONNRESET',\n 'ECONNREFUSED',\n 'EPIPE',\n 'ETIMEDOUT',\n 'UND_ERR_CONNECT_TIMEOUT',\n 'UND_ERR_HEADERS_TIMEOUT',\n 'UND_ERR_HEADERS_TIMEOUT',\n 'UND_ERR_SOCKET',\n];\n\n/**\n * Optional parameter that can be passed to the client methods. It allows\n * overriding the access token or project ID, and setting various headers,\n * such as 'Content-Type'.\n */\nexport interface OystehrClientRequest {\n /**\n * The access token to use for the request. If not provided, the access token from `oystehr.init()` will be used.\n */\n accessToken?: string;\n /**\n * The project ID to use for the request. If not provided, the project ID from `oystehr.init()` will be used.\n */\n projectId?: string;\n /**\n * The value of the 'Content-Type' header to use for the request.\n */\n contentType?: string;\n /**\n * Unique identifier for this request.\n */\n requestId?: string;\n}\n\ninterface InternalClientRequest extends OystehrClientRequest {\n ifMatch?: string;\n}\n\ntype FhirData<T extends FhirResource> = T | T[] | FhirBundle<T>;\nexport type FhirFetcherResponse<T extends FhirData<FhirResource> = any> = T;\n\nexport class SDKResource {\n protected readonly config: OystehrConfig;\n constructor(config: OystehrConfig) {\n this.config = config;\n }\n\n protected request(path: string, method: string, baseUrlThunk: () => string): FetcherFunction {\n return async (params: any, request?: InternalClientRequest): Promise<FetcherResponse> => {\n const configThunk = (): OystehrConfig => this.config;\n try {\n return await fetcher(baseUrlThunk, configThunk, path, method)(params, request);\n } catch (err: any) {\n const error = err as { message: string; code: number; cause?: unknown };\n throw new OystehrSdkError({ message: error.message, code: error.code, cause: error.cause });\n }\n };\n }\n\n protected fhirRequest<T extends FhirResource = any>(path: string, method: string) {\n return async (params: any, request?: InternalClientRequest): Promise<FhirFetcherResponse<T>> => {\n try {\n const baseUrlThunk = (): string => this.config.services?.fhirApiUrl ?? defaultFhirApiUrl;\n const configThunk = (): OystehrConfig => this.config;\n // must await here to catch\n return await fetcher(baseUrlThunk, configThunk, path, method)(params, request);\n } catch (err: unknown) {\n // FHIR API error messages are JSON strings\n const fullError = err as { message: string | Record<string, any>; code: number; cause?: unknown };\n if (typeof fullError.message === 'string') {\n throw new OystehrSdkError({\n message: fullError.message,\n code: fullError.code,\n cause: fullError.cause,\n });\n }\n throw new OystehrFHIRError({\n error: fullError.message as OperationOutcome,\n code: fullError.code,\n });\n }\n };\n }\n}\n\nexport type FetcherError = { message: string; code: number };\nexport type FetcherResponse = any;\nexport type FetcherFunction = (\n params?: Record<string, any> | [any] | InternalClientRequest,\n request?: InternalClientRequest\n) => Promise<FetcherResponse>;\n\nfunction isInternalClientRequest(request: Record<string, any>): request is InternalClientRequest {\n return 'accessToken' in request;\n}\n\nfunction fetcher(\n baseUrlThunk: () => string,\n configThunk: () => OystehrConfig,\n path: string,\n methodParam: string\n): FetcherFunction {\n return async (\n params?: Record<string, unknown> | [any] | InternalClientRequest,\n request?: InternalClientRequest\n ): Promise<FetcherResponse> => {\n // this function supports multiple signatures. fetcher(baseUrl, path, method)(params, request) or fetcher(baseUrl, path, method)(request)\n // or fetcher(baseUrl, path, method)(params) or fetcher(baseUrl, path, method)(). the types for this are handled by Client<Path, Methods>\n // and this is the backend implementation behind it. the heuristic we're using is that if the first param is an object with an accessToken\n // and there is no second param, assume the first one is the request object instead\n const providedParams: Record<string, unknown> | [any] =\n !!params && !request && !Array.isArray(params) && isInternalClientRequest(params)\n ? {}\n : (params as Record<string, unknown>) ?? {};\n const requestCtx =\n !!params && !request && !Array.isArray(params) && isInternalClientRequest(params)\n ? (params as InternalClientRequest)\n : request;\n const method = methodParam.toLowerCase() as HttpMethod;\n const config = configThunk();\n const fetchImpl = config.fetch ?? fetch;\n const accessToken = requestCtx?.accessToken ?? config.accessToken;\n const projectId = requestCtx?.projectId ?? configThunk().projectId;\n let finalPath = path;\n let finalParams = providedParams;\n if (!Array.isArray(providedParams)) {\n const [subbedPath, addlParams] = subParamsInPath(path, providedParams);\n finalPath = subbedPath;\n finalParams = addlParams;\n }\n finalPath = finalPath.replace(/^\\//, ''); // remove leading slash\n const baseUrlEvaluated = baseUrlThunk();\n const fullBaseUrl = baseUrlEvaluated.endsWith('/') ? baseUrlEvaluated : baseUrlEvaluated + '/';\n const url = new URL(finalPath, fullBaseUrl);\n let body: any;\n\n if (Array.isArray(finalParams)) {\n body = JSON.stringify(finalParams);\n } else if (Object.keys(finalParams).length) {\n if (method === 'get') {\n addParamsToSearch(finalParams, url.searchParams);\n } else if (requestCtx?.contentType === 'application/x-www-form-urlencoded') {\n const search = new URLSearchParams();\n addParamsToSearch(finalParams, search);\n body = search.toString();\n } else {\n body = JSON.stringify(finalParams);\n }\n } else {\n // override for rpc call\n if (requestCtx?.contentType !== 'application/x-www-form-urlencoded' && method === 'post') {\n body = '{}';\n }\n }\n\n const headers: Record<string, string> = Object.assign(\n projectId\n ? {\n 'x-zapehr-project-id': projectId,\n 'x-oystehr-project-id': projectId,\n }\n : {},\n {\n 'content-type': requestCtx?.contentType ?? 'application/json',\n },\n accessToken ? { Authorization: `Bearer ${accessToken}` } : {},\n requestCtx?.ifMatch ? { 'If-Match': requestCtx.ifMatch } : {},\n { 'x-oystehr-request-id': requestCtx?.requestId ?? uuidv4() }\n );\n const retryConfig: ConstructedRetryConfig = {\n retries: config.retry?.retries ?? 3,\n jitter: config.retry?.jitter ?? 20,\n delay: config.retry?.delay ?? 100,\n onRetry: config.retry?.onRetry,\n // Using array instead of set because the length is too short for uniqueness to be important\n retryOn: [...(config.retry?.retryOn ?? []), ...STATUS_CODES_TO_RETRY],\n };\n retryConfig.retryOn.push(...STATUS_CODES_TO_RETRY);\n return retry(async () => {\n const response = await fetchImpl(\n new Request(url, {\n method: method.toUpperCase(),\n body,\n headers,\n })\n );\n const responseBody = response.body ? await response.text() : null;\n let responseJson: Record<string, unknown> | null;\n try {\n responseJson =\n responseBody &&\n (response.headers.get('content-type')?.includes('application/json') ||\n response.headers.get('content-type')?.includes('application/fhir+json'))\n ? JSON.parse(responseBody)\n : null;\n } catch (_err) {\n // ignore JSON.parse errors\n responseJson = null;\n }\n const isError = !response.ok || response.status >= 400;\n if (isError) {\n const errObj = {\n message:\n (responseJson?.output as Record<string, unknown>)?.message ?? // official zambda output format\n responseJson?.message ?? // normal endpoint output format\n responseJson ?? // parsable json\n responseBody ?? // raw response\n response.statusText, // fallback to status text\n code:\n (responseJson?.output as Record<string, unknown>)?.code ?? // official zambda output format\n responseJson?.code ?? // normal endpoint output format\n response.status, // fallback to status code\n response,\n };\n throw errObj;\n }\n return responseJson;\n }, retryConfig);\n };\n}\n\ntype ConstructedRetryConfig = Omit<NonNullable<OystehrConfig['retry']>, 'retryOn'> & {\n jitter: NonNullable<NonNullable<OystehrConfig['retry']>['jitter']>;\n delay: NonNullable<NonNullable<OystehrConfig['retry']>['delay']>;\n retryOn: NonNullable<NonNullable<OystehrConfig['retry']>['retryOn']>;\n};\nasync function retry<T>(work: (attempt: number) => Promise<T>, config: ConstructedRetryConfig): Promise<T> {\n let lastErr;\n for (const attempt of Array.from({ length: (config.retries ?? 0) + 1 }, (_, index) => index)) {\n try {\n return await work(attempt);\n } catch (e: any) {\n let isRetryable = false;\n if ('response' in e) {\n // error from API\n const err = e as FetcherError;\n isRetryable = config.retryOn.includes(err.code);\n // Removes response\n lastErr = { message: e.message, code: e.code };\n } else {\n lastErr = e;\n // error from fetch\n if ('code' in e && typeof e.code === 'string') {\n const err = e as { code: string };\n isRetryable = ERROR_CODES_TO_RETRY.includes(err.code);\n }\n }\n if (!isRetryable) {\n break;\n }\n const jitter = Math.floor(Math.random() * (config.jitter + 1));\n await new Promise((resolve) => setTimeout(resolve, config.delay + jitter));\n if (config.onRetry && attempt !== (config.retries ?? 0)) {\n config.onRetry(attempt + 1);\n }\n }\n }\n throw lastErr;\n}\n\n/**\n * Substitutes params in a path and returns the path with params substituted and any unused params.\n *\n * Uses the property names in the params object to determine the param to substitute in the path.\n *\n * @param path JSON API resource URI\n * @param params all params provided to the client method\n * @returns resource URI with params substituted and any unused params\n */\nfunction subParamsInPath(path: string, params: Record<string, unknown>): [string, Record<string, string>] {\n const unusedParams = { ...params };\n // capture everything of the form `{paramName}` and replace with the value of `params[paramName]`\n const subbedPath = path.replace(/\\{([^}]+)\\}/g, (_, paramName) => {\n delete unusedParams[paramName];\n // override for path params that are paths, indicated by a `+` at the end\n if (paramName.match(/^.*\\+$/)) {\n return params[paramName] + '';\n }\n // error if param value is empty\n if (!params[paramName] || params[paramName] === '') {\n throw new OystehrSdkError({ message: `Required path parameter is an empty string: ${paramName}`, code: 400 });\n }\n // encode search params\n if (params[paramName]) {\n return encodeURIComponent(params[paramName] + ''); // coerce to string\n }\n return '';\n });\n\n const unusedKeys = Object.keys(unusedParams);\n const addlParams = unusedKeys.length\n ? unusedKeys.reduce((acc, key) => ({ ...acc, [key]: unusedParams[key] }), {})\n : {};\n return [subbedPath, addlParams];\n}\n\n/**\n * Adds params to a URLSearchParams object in such a way as to preserve array values.\n * @param params params\n * @param search URLSearchParams object\n */\nexport function addParamsToSearch(params: Record<string, unknown>, search: URLSearchParams): void {\n for (const [key, value] of Object.entries(params)) {\n if (Array.isArray(value)) {\n value.forEach((v) => search.append(key, v as string));\n continue;\n }\n search.append(key, value as string);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n ApplicationCreateParams,\n ApplicationCreateResponse,\n ApplicationDeleteParams,\n ApplicationGetParams,\n ApplicationGetResponse,\n ApplicationListResponse,\n ApplicationRevokeAccessTokenParams,\n ApplicationRevokeAccessTokenResponse,\n ApplicationRevokeRefreshTokenParams,\n ApplicationRevokeRefreshTokenResponse,\n ApplicationRotateSecretParams,\n ApplicationRotateSecretResponse,\n ApplicationUpdateParams,\n ApplicationUpdateResponse,\n OystehrClientRequest,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class Application extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Get a list of Applications. [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) provide authentication in front of the web and mobile apps you build on Oystehr.\n *\n * Access Policy Action: `App:ListAllApplications`\n * Access Policy Resource: `App:Application`\n */\n list(request?: OystehrClientRequest): Promise<ApplicationListResponse> {\n return this.request('/application', 'get', this.#baseUrlThunk.bind(this))(request);\n }\n /**\n * Create a new Application. [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) provide authentication in front of the web and mobile apps you build on Oystehr.\n *\n * Access Policy Action: `App:CreateApplication`\n * Access Policy Resource: `App:Application`\n */\n create(params: ApplicationCreateParams, request?: OystehrClientRequest): Promise<ApplicationCreateResponse> {\n return this.request('/application', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Get the Application with the provided ID. [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) provide authentication in front of the web and mobile apps you build on Oystehr.\n *\n * Access Policy Action: `App:GetApplication`\n * Access Policy Resource: `App:Application`\n */\n get(params: ApplicationGetParams, request?: OystehrClientRequest): Promise<ApplicationGetResponse> {\n return this.request('/application/{id}', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Update the Application with the provided ID. [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) provide authentication in front of the web and mobile apps you build on Oystehr.\n *\n * Access Policy Action: `App:UpdateApplication`\n * Access Policy Resource: `App:Application`\n */\n update(params: ApplicationUpdateParams, request?: OystehrClientRequest): Promise<ApplicationUpdateResponse> {\n return this.request('/application/{id}', 'patch', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Delete the Application with the provided ID. [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) provide authentication in front of the web and mobile apps you build on Oystehr.\n *\n * Access Policy Action: `App:DeleteApplication`\n * Access Policy Resource: `App:Application`\n */\n delete(params: ApplicationDeleteParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/application/{id}', 'delete', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Rotate client's secrete associated with an application.\n *\n * Access Policy Action: `App:RotateApplicationSecret`\n * Access Policy Resource: `App:Application`\n */\n rotateSecret(\n params: ApplicationRotateSecretParams,\n request?: OystehrClientRequest\n ): Promise<ApplicationRotateSecretResponse> {\n return this.request('/application/{id}/rotate-secret', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Revokes user's refresh token issued for the application.\n *\n * Access Policy Action: `App:RevokeRefreshToken`\n * Access Policy Resource: `App:Application`\n */\n revokeRefreshToken(\n params: ApplicationRevokeRefreshTokenParams,\n request?: OystehrClientRequest\n ): Promise<ApplicationRevokeRefreshTokenResponse> {\n return this.request(\n '/application/{id}/revoke-refresh-token',\n 'post',\n this.#baseUrlThunk.bind(this)\n )(params, request);\n }\n /**\n * Revokes user's access token issued for the application.\n *\n * Access Policy Action: `App:RevokeAccessToken`\n * Access Policy Resource: `App:Application`\n */\n revokeAccessToken(\n params: ApplicationRevokeAccessTokenParams,\n request?: OystehrClientRequest\n ): Promise<ApplicationRevokeAccessTokenResponse> {\n return this.request(\n '/application/{id}/revoke-access-token',\n 'post',\n this.#baseUrlThunk.bind(this)\n )(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport { ChargeIssueParams, ChargeStatusParams, ChargeStatusResponse, OystehrClientRequest } from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class Charge extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Charge patient's default payment method for a specified encounter or charge item.\n *\n * Access Policy Requirements:\n * Action: `Payment:Issue`\n * Access Policy Resource: `Payment:Charge`\n * Actions: `FHIR:Read,FHIR:Create,FHIR:Update`\n * Access Policy Resource: `FHIR:ChargeItem:*,`FHIR:PaymentReconciliation:*`\n * Action: `FHIR:Read`\n * Access Policy Resources: `FHIR:Patient:*,FHIR:Encounter:*,FHIR:Coverage:*`\n */\n issue(params: ChargeIssueParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/payment/charge/issue', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Retrieve charge status for a specified encounter or charge item.\n *\n * Access Policy Requirements:\n * Action: `Payment:Status`\n * Access Policy Resource: `Payment:Charge`\n * Actions: `FHIR:Read,FHIR:Create,FHIR:Update`\n * Access Policy Resource: `FHIR:ChargeItem:*,`FHIR:PaymentReconciliation:*`\n * Action: `FHIR:Read`\n * Access Policy Resources: `FHIR:Patient:*,FHIR:Encounter:*,FHIR:Coverage:*`\n */\n status(params: ChargeStatusParams, request?: OystehrClientRequest): Promise<ChargeStatusResponse> {\n return this.request('/payment/charge/status', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","import { Encounter as EncounterR4B } from 'fhir/r4b';\nimport { Encounter as EncounterR5 } from 'fhir/r5';\n\nexport const ENCOUNTER_VS_EXTENSION_URL = 'https://extensions.fhir.zapehr.com/encounter-virtual-service-pre-release';\nexport const ENCOUNTER_VS_EXTENSION_RELATIVE_URL = 'addressString';\nconst ENCOUNTER_VS_CODING_SYSTEM = 'https://fhir.zapehr.com/virtual-service-type';\n\nfunction isR5Encounter(encounter: EncounterR4B | EncounterR5): encounter is EncounterR5 {\n return Object.hasOwn(encounter as EncounterR5, 'virtualService');\n}\n\n/**\n * Helper function to get a conversationId from an encounter created as an Oystehr Conversation\n * @param encounter well-formed FHIR R4B or R5 Encounter\n * @returns conversationId\n */\nexport function getConversationIdFromEncounter(encounter: EncounterR4B | EncounterR5): string | undefined {\n if (isR5Encounter(encounter)) {\n const virtualService = encounter.virtualService?.find(\n (vs) => vs.channelType?.system === ENCOUNTER_VS_CODING_SYSTEM\n );\n return virtualService?.addressString;\n }\n if (!encounter.extension) return;\n const virtualServiceExtension = encounter.extension.find((extension) => extension.url === ENCOUNTER_VS_EXTENSION_URL);\n if (!virtualServiceExtension?.extension) return;\n const conversationId = virtualServiceExtension.extension?.find(\n (extension) => extension.url === ENCOUNTER_VS_EXTENSION_RELATIVE_URL\n )?.valueString;\n return conversationId;\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n ConversationAddParticipantParams,\n ConversationCreateParams,\n ConversationCreateResponse,\n ConversationGetTokenResponse,\n ConversationMessageParams,\n ConversationRemoveParticipantParams,\n OystehrClientRequest,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\nimport * as ext from './conversation-ext';\n\nexport class Conversation extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n ENCOUNTER_VS_EXTENSION_URL = ext.ENCOUNTER_VS_EXTENSION_URL;\n ENCOUNTER_VS_EXTENSION_RELATIVE_URL = ext.ENCOUNTER_VS_EXTENSION_RELATIVE_URL;\n /**\n * Helper function to get a conversationId from an encounter created as an Oystehr Conversation\n * @param encounter well-formed FHIR R4B or R5 Encounter\n * @returns conversationId\n */\n getConversationIdFromEncounter = ext.getConversationIdFromEncounter;\n /**\n * Create a new Conversation. [Conversations](https://docs.oystehr.com/oystehr/services/messaging/conversations/) allow you to build multi-channel bi-directional messaging workflows. For example, you might create a Conversation where a provider messages with a patient through a web app, and the patient receives and responds to messages via SMS on their phone.\n *\n * Access Policy Requirements:\n * Action: `Messaging:CreateConversation`\n * Access Policy Resource: `Messaging:Conversation`\n * Action: `FHIR:Create`\n * Access Policy Resource: `FHIR:Encounter`\n * Action: `FHIR:Update`\n * Access Policy Resource: `FHIR:Encounter`\n */\n create(params: ConversationCreateParams, request?: OystehrClientRequest): Promise<ConversationCreateResponse> {\n return this.request('/messaging/conversation', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Get a Conversation Token. Conversation Tokens are used to join the Conversation with the Twilio Conversations SDKs. [Conversations](https://docs.oystehr.com/oystehr/services/messaging/conversations/) allow you to build multi-channel bi-directional messaging workflows. For example, you might create a Conversation where a provider messages with a patient through a web app, and the patient receives and responds to messages via SMS on their phone.\n *\n * Access Policy Action: `Messaging:GetConversationToken`\n * Access Policy Resource: `Messaging:Conversation`.\n */\n getToken(request?: OystehrClientRequest): Promise<ConversationGetTokenResponse> {\n return this.request('/messaging/conversation/token', 'get', this.#baseUrlThunk.bind(this))(request);\n }\n /**\n * Add a participant to a Conversation. [Conversations](https://docs.oystehr.com/oystehr/services/messaging/conversations/) allow you to build multi-channel bi-directional messaging workflows. For example, you might create a Conversation where a provider messages with a patient through a web app, and the patient receives and responds to messages via SMS on their phone.\n *\n * Access Policy Requirements:\n * Action: `Messaging:ConversationAddParticipant`\n * Access Policy Resource: `Messaging:Conversation`\n * Action: `FHIR:Read`\n * Access Policy Resource: `FHIR:Encounter`\n * Action: `FHIR:Update`\n * Access Policy Resource: `FHIR:Encounter`\n */\n addParticipant(params: ConversationAddParticipantParams, request?: OystehrClientRequest): Promise<void> {\n return this.request(\n '/messaging/conversation/{conversationId}/participant',\n 'post',\n this.#baseUrlThunk.bind(this)\n )(params, request);\n }\n /**\n * Remove a participant from a Conversation. [Conversations](https://docs.oystehr.com/oystehr/services/messaging/conversations/) allow you to build multi-channel bi-directional messaging workflows. For example, you might create a Conversation where a provider messages with a patient through a web app, and the patient receives and responds to messages via SMS on their phone.\n *\n * Access Policy Requirements:\n * Action: `Messaging:ConversationRemoveParticipant`\n * Access Policy Resource: `Messaging:Conversation`\n * Action: `FHIR:Read`\n * Access Policy Resource: `FHIR:Patient`, `FHIR:Practitioner`, or `FHIR:RelatedPerson`\n */\n removeParticipant(params: ConversationRemoveParticipantParams, request?: OystehrClientRequest): Promise<void> {\n return this.request(\n '/messaging/conversation/{conversationId}/participant',\n 'delete',\n this.#baseUrlThunk.bind(this)\n )(params, request);\n }\n /**\n * Send a message to a Conversation. [Conversations](https://docs.oystehr.com/oystehr/services/messaging/conversations/) allow you to build multi-channel bi-directional messaging workflows. For example, you might create a Conversation where a provider messages with a patient through a web app, and the patient receives and responds to messages via SMS on their phone.\n *\n * Access Policy Requirements:\n * Action: `Messaging:ConversationSendMessage`\n * Access Policy Resource: `Messaging:Conversation`\n */\n message(params: ConversationMessageParams, request?: OystehrClientRequest): Promise<void> {\n return this.request(\n '/messaging/conversation/{conversationId}/message',\n 'post',\n this.#baseUrlThunk.bind(this)\n )(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n DeveloperDeleteParams,\n DeveloperGetParams,\n DeveloperGetResponse,\n DeveloperInviteParams,\n DeveloperInviteResponse,\n DeveloperListResponse,\n DeveloperListV2Params,\n DeveloperListV2Response,\n DeveloperUpdateParams,\n DeveloperUpdateResponse,\n OystehrClientRequest,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class Developer extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Get the Developer with the provided ID. Developer accounts are used to log into the [Developer Console](https://console.oystehr.com/) and administrate [Projects](https://docs.oystehr.com/oystehr/services/project/). [Developers](https://docs.oystehr.com/oystehr/services/iam/developers/) are the only people who can belong to and act across multiple Projects, because they exist above the Project level.\n *\n * Access Policy Action: `IAM:GetDeveloper`\n * Access Policy Resource: `IAM:Developer`\n */\n get(params: DeveloperGetParams, request?: OystehrClientRequest): Promise<DeveloperGetResponse> {\n return this.request('/developer/{id}', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Update the Developer with the provided ID. Developer accounts are used to log into the [Developer Console](https://console.oystehr.com/) and administrate [Projects](https://docs.oystehr.com/oystehr/services/project/). [Developers](https://docs.oystehr.com/oystehr/services/iam/developers/) are the only people who can belong to and act across multiple Projects, because they exist above the Project level.\n *\n * Access Policy Action: `IAM:UpdateDeveloper`\n * Access Policy Resource: `IAM:Developer`\n */\n update(params: DeveloperUpdateParams, request?: OystehrClientRequest): Promise<DeveloperUpdateResponse> {\n return this.request('/developer/{id}', 'patch', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Remove the Developer with the provided ID from the project. Developer accounts are used to log into the [Developer Console](https://console.oystehr.com/) and administrate [Projects](https://docs.oystehr.com/oystehr/services/project/). [Developers](https://docs.oystehr.com/oystehr/services/iam/developers/) are the only people who can belong to and act across multiple Projects, because they exist above the Project level.\n *\n * Access Policy Action: `IAM:RemoveDeveloper`\n * Access Policy Resource: `IAM:Developer`\n */\n delete(params: DeveloperDeleteParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/developer/{id}', 'delete', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Invite a new Developer to the Project. Developer accounts are used to log into the [Developer Console](https://console.oystehr.com/) and administrate [Projects](https://docs.oystehr.com/oystehr/services/project/). [Developers](https://docs.oystehr.com/oystehr/services/iam/developers/) are the only people who can belong to and act across multiple Projects, because they exist above the Project level.\n *\n * Access Policy Action: `IAM:InviteDeveloper`\n * Access Policy Resource: `IAM:Developer`\n */\n invite(params: DeveloperInviteParams, request?: OystehrClientRequest): Promise<DeveloperInviteResponse> {\n return this.request('/developer/invite', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * DEPRECATED. Please use [v2/list](https://api-reference.oystehr.com/reference/get_developer-v2-list) instead.\n *\n * Get a list of all Developers who are part of the Project. Developer accounts are used to log into the [Developer Console](https://console.oystehr.com/) and administrate [Projects](https://docs.oystehr.com/oystehr/services/project/). [Developers](https://docs.oystehr.com/oystehr/services/iam/developers/) are the only people who can belong to and act across multiple Projects, because they exist above the Project level.\n *\n * Access Policy Action: `IAM:ListAllDevelopers`\n * Access Policy Resource: `IAM:Developer`\n */\n list(request?: OystehrClientRequest): Promise<DeveloperListResponse> {\n return this.request('/developer', 'get', this.#baseUrlThunk.bind(this))(request);\n }\n /**\n * Get Developers in the Project with pagination, sort, sort order and filtering. [Users](https://docs.oystehr.com/oystehr/services/app/users/) are the people who log into the [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) you configure for securing the apps you build on top of Oystehr.\n *\n * Access Policy Action: `Project:ListAllUsers`\n * Access Policy Resource: `Project:Settings`\n */\n listV2(params: DeveloperListV2Params, request?: OystehrClientRequest): Promise<DeveloperListV2Response>;\n /**\n * Get Developers in the Project with pagination, sort, sort order and filtering. [Users](https://docs.oystehr.com/oystehr/services/app/users/) are the people who log into the [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) you configure for securing the apps you build on top of Oystehr.\n *\n * Access Policy Action: `Project:ListAllUsers`\n * Access Policy Resource: `Project:Settings`\n */\n listV2(request?: OystehrClientRequest): Promise<DeveloperListV2Response>;\n /**\n * Get Developers in the Project with pagination, sort, sort order and filtering. [Users](https://docs.oystehr.com/oystehr/services/app/users/) are the people who log into the [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) you configure for securing the apps you build on top of Oystehr.\n *\n * Access Policy Action: `Project:ListAllUsers`\n * Access Policy Resource: `Project:Settings`\n */\n listV2(\n params?: DeveloperListV2Params | OystehrClientRequest,\n request?: OystehrClientRequest\n ): Promise<DeveloperListV2Response> {\n return this.request('/developer/v2/list', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n ErxCheckAllergyInteractionsParams,\n ErxCheckAllergyInteractionsResponse,\n ErxCheckMedicationInteractionsParams,\n ErxCheckMedicationInteractionsResponse,\n ErxCheckPrecheckInteractionsParams,\n ErxCheckPrecheckInteractionsResponse,\n ErxConnectPractitionerParams,\n ErxConnectPractitionerResponse,\n ErxSearchAllergensParams,\n ErxSearchAllergensResponse,\n ErxSearchMedicationsParams,\n ErxSearchMedicationsResponse,\n ErxSyncPatientParams,\n OystehrClientRequest,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class Erx extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['erxApiUrl'] ?? 'https://erx-api.zapehr.com/v3';\n }\n /**\n * Search for allergens\n */\n searchAllergens(\n params: ErxSearchAllergensParams,\n request?: OystehrClientRequest\n ): Promise<ErxSearchAllergensResponse> {\n return this.request('/allergen', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Search for medications. Provide at least one of code or name filters\n */\n searchMedications(\n params: ErxSearchMedicationsParams,\n request?: OystehrClientRequest\n ): Promise<ErxSearchMedicationsResponse> {\n return this.request('/medication', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Checks for drug-allergy interactions for a patient. This endpoint requires the patient's allergies to be synced with the upstream eRx provider.\n */\n checkAllergyInteractions(\n params: ErxCheckAllergyInteractionsParams,\n request?: OystehrClientRequest\n ): Promise<ErxCheckAllergyInteractionsResponse> {\n return this.request(\n '/patient/{patientId}/interactions/allergy',\n 'get',\n this.#baseUrlThunk.bind(this)\n )(params, request);\n }\n /**\n * Checks for drug-drug interactions for a patient. This endpoint requires the patient's medications to be synced with the upstream eRx provider.\n */\n checkMedicationInteractions(\n params: ErxCheckMedicationInteractionsParams,\n request?: OystehrClientRequest\n ): Promise<ErxCheckMedicationInteractionsResponse> {\n return this.request(\n '/patient/{patientId}/interactions/medication',\n 'get',\n this.#baseUrlThunk.bind(this)\n )(params, request);\n }\n /**\n * Checks for drug-allergy and drug-drug interactions with a specific drug for a patient. This endpoint requires the patient's allergies and medications to be synced with the upstream eRx provider.\n */\n checkPrecheckInteractions(\n params: ErxCheckPrecheckInteractionsParams,\n request?: OystehrClientRequest\n ): Promise<ErxCheckPrecheckInteractionsResponse> {\n return this.request(\n '/patient/{patientId}/interactions/precheck/{drugId}',\n 'get',\n this.#baseUrlThunk.bind(this)\n )(params, request);\n }\n /**\n * Syncs demographic, allergy, and medication data for a patient with the upstream eRx provider.\n */\n syncPatient(params: ErxSyncPatientParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/patient/{patientId}/sync', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Create an SSO link for a practitioner. This link can be used to log in to the eRx service as the specified practitioner.\n */\n connectPractitioner(\n params: ErxConnectPractitionerParams,\n request?: OystehrClientRequest\n ): Promise<ErxConnectPractitionerResponse>;\n /**\n * Create an SSO link for a practitioner. This link can be used to log in to the eRx service as the specified practitioner.\n */\n connectPractitioner(request?: OystehrClientRequest): Promise<ErxConnectPractitionerResponse>;\n /**\n * Create an SSO link for a practitioner. This link can be used to log in to the eRx service as the specified practitioner.\n */\n connectPractitioner(\n params?: ErxConnectPractitionerParams | OystehrClientRequest,\n request?: OystehrClientRequest\n ): Promise<ErxConnectPractitionerResponse> {\n return this.request('/practitioner/connect', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n ErxV1AllergySearchParams,\n ErxV1AllergySearchResponse,\n ErxV1CancelOrderParams,\n ErxV1CancelOrderResponse,\n ErxV1CancelPrescriptionParams,\n ErxV1CancelPrescriptionResponse,\n ErxV1MedicationSearchParams,\n ErxV1MedicationSearchResponse,\n ErxV1SyncPatientParams,\n ErxV1SyncPatientResponse,\n OystehrClientRequest,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class ErxV1 extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Retrieve patient properties from FHIR service and sync them with eRx service\n */\n syncPatient(params: ErxV1SyncPatientParams, request?: OystehrClientRequest): Promise<ErxV1SyncPatientResponse> {\n return this.request('/erx/sync-patient/{patientId}', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Search for allergies\n */\n allergySearch(params: ErxV1AllergySearchParams, request?: OystehrClientRequest): Promise<ErxV1AllergySearchResponse> {\n return this.request('/erx/allergy/search', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Cancel photon order\n */\n cancelOrder(params: ErxV1CancelOrderParams, request?: OystehrClientRequest): Promise<ErxV1CancelOrderResponse> {\n return this.request('/erx/cancel-order', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Cancel photon prescription\n */\n cancelPrescription(\n params: ErxV1CancelPrescriptionParams,\n request?: OystehrClientRequest\n ): Promise<ErxV1CancelPrescriptionResponse> {\n return this.request('/erx/cancel-prescription', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Search for medications. Provide at least one of code or name filters\n */\n medicationSearch(\n params: ErxV1MedicationSearchParams,\n request?: OystehrClientRequest\n ): Promise<ErxV1MedicationSearchResponse>;\n /**\n * Search for medications. Provide at least one of code or name filters\n */\n medicationSearch(request?: OystehrClientRequest): Promise<ErxV1MedicationSearchResponse>;\n /**\n * Search for medications. Provide at least one of code or name filters\n */\n medicationSearch(\n params?: ErxV1MedicationSearchParams | OystehrClientRequest,\n request?: OystehrClientRequest\n ): Promise<ErxV1MedicationSearchResponse> {\n return this.request('/erx/medication/search', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport { ErxV2MedicationSearchParams, ErxV2MedicationSearchResponse, OystehrClientRequest } from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class ErxV2 extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Search for medications. Provide at least one of code or name filters\n */\n medicationSearch(\n params: ErxV2MedicationSearchParams,\n request?: OystehrClientRequest\n ): Promise<ErxV2MedicationSearchResponse>;\n /**\n * Search for medications. Provide at least one of code or name filters\n */\n medicationSearch(request?: OystehrClientRequest): Promise<ErxV2MedicationSearchResponse>;\n /**\n * Search for medications. Provide at least one of code or name filters\n */\n medicationSearch(\n params?: ErxV2MedicationSearchParams | OystehrClientRequest,\n request?: OystehrClientRequest\n ): Promise<ErxV2MedicationSearchResponse> {\n return this.request('/erx/v2/medication/search', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport { FaxSendParams, FaxSendResponse, OystehrClientRequest } from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class Fax extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['faxApiUrl'] ?? 'https://fax-api.zapehr.com/v1';\n }\n /**\n * Offboard a fax number. Oystehr's [offboard](https://docs.oystehr.com/oystehr/services/fax/number/) feature makes it easy to stop using the fax service and release the project's assigned fax number with a single API call. Please note there is no way to guarantee getting the same number back again, so if you think this can break your project in any way we recommend not offboarding and avoid sending faxes until you're sure.\n *\n * Access Policy Requirements:\n * Action: `Fax:Offboard`\n * Access Policy Resource: `Fax:Number`\n */\n offboard(request?: OystehrClientRequest): Promise<void> {\n return this.request('/offboard', 'post', this.#baseUrlThunk.bind(this))(request);\n }\n /**\n * Onboard a fax number. Oystehr's [onboard](https://docs.oystehr.com/oystehr/services/fax/number/) feature makes it easy to start using the fax service and purchase a new fax number for your project with a single API call.\n *\n * Access Policy Requirements:\n * Action: `Fax:Onboard`\n * Access Policy Resource: `Fax:Number`\n */\n onboard(request?: OystehrClientRequest): Promise<void> {\n return this.request('/onboard', 'post', this.#baseUrlThunk.bind(this))(request);\n }\n /**\n * Send a fax. Oystehr's [fax sending](https://docs.oystehr.com/oystehr/services/fax/send/) feature makes it easy to send a fax to a chosen recipient with a single API call. You can use this feature to send referrals, medical records, prescriptions, and other documents that require fax transmission e.g. for HIPAA compliance.\n *\n * Access Policy Requirements:\n * Action: `Fax:Send`\n * Access Policy Resource: `Fax:Fax`\n */\n send(params: FaxSendParams, request?: OystehrClientRequest): Promise<FaxSendResponse> {\n return this.request('/send', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","import { Address as AddressR4B, HumanName as HumanNameR4B } from 'fhir/r4b';\nimport { Address as AddressR5, HumanName as HumanNameR5 } from 'fhir/r5';\nimport {\n BatchInput,\n BatchInputRequest,\n Binary,\n Bundle,\n BundleEntry,\n FhirBundle,\n FhirCreateParams,\n FhirDeleteParams,\n FhirGetParams,\n FhirHistoryGetParams,\n FhirHistorySearchParams,\n FhirPatchParams,\n FhirResource,\n FhirSearchParams,\n FhirUpdateParams,\n} from '../..';\nimport { addParamsToSearch, FhirFetcherResponse, OystehrClientRequest, SDKResource } from '../../client/client';\n\n/**\n * Optional parameter that can be passed to the client methods. It allows\n * overriding the access token or project ID, and setting various headers,\n * such as 'Content-Type'. Also support enabling optimistic locking.\n */\nexport interface OystehrFHIRUpdateClientRequest extends OystehrClientRequest {\n /**\n * Enable optimistic locking for the request. If set to a version ID, the request will\n * include the 'If-Match' header with that value in the FHIR optimistic-locking format.\n * If the resource has been updated since the version provided, the request\n * will fail with a 412 Precondition Failed error.\n */\n optimisticLockingVersionId?: string;\n}\n\n/**\n * Performs a FHIR search and returns the results as a Bundle resource\n *\n * @param options FHIR resource type and FHIR search parameters\n * @param request optional OystehrClientRequest object\n * @returns FHIR Bundle resource\n */\nexport async function search<T extends FhirResource>(\n this: SDKResource,\n params: FhirSearchParams,\n request?: OystehrClientRequest\n): Promise<FhirFetcherResponse<Bundle<T>>> {\n const { resourceType, params: searchParams } = params;\n let paramMap: Record<string, (string | number)[]> | undefined;\n if (searchParams) {\n paramMap = Object.entries(searchParams).reduce((acc, [_, param]) => {\n if (!acc[param.name]) {\n acc[param.name] = [];\n }\n acc[param.name].push(param.value);\n return acc;\n }, {} as Record<string, (string | number)[]>);\n }\n const requestBundle = await this.fhirRequest<FhirBundle<T>>(`/${resourceType}/_search`, 'POST')(paramMap, {\n ...request,\n contentType: 'application/x-www-form-urlencoded',\n });\n const bundle: Bundle<T> = {\n ...requestBundle,\n entry: requestBundle.entry as Array<BundleEntry<T>> | undefined,\n unbundle: function (this: { entry?: Array<BundleEntry<T>> | undefined }) {\n return this.entry?.map((entry) => entry.resource).filter((entry): entry is T => entry !== undefined) ?? [];\n },\n };\n return bundle;\n}\n\nexport async function create<T extends FhirResource>(\n this: SDKResource,\n params: FhirCreateParams<T>,\n request?: OystehrClientRequest\n): Promise<FhirFetcherResponse<T>> {\n const { resourceType } = params;\n return this.fhirRequest(`/${resourceType}`, 'POST')(params as unknown as Record<string, unknown>, request);\n}\n\nexport async function get<T extends FhirResource>(\n this: SDKResource,\n { resourceType, id }: FhirGetParams,\n request?: OystehrClientRequest\n): Promise<FhirFetcherResponse<T>> {\n return this.fhirRequest<T>(`/${resourceType}/${id}`, 'GET')({}, request);\n}\n\nexport async function update<T extends FhirResource>(\n this: SDKResource,\n params: FhirUpdateParams<T>,\n request?: OystehrFHIRUpdateClientRequest\n): Promise<FhirFetcherResponse<T>> {\n const { id, resourceType } = params;\n return this.fhirRequest(`/${resourceType}/${id}`, 'PUT')(params as unknown as Record<string, unknown>, {\n ...request,\n ifMatch: request?.optimisticLockingVersionId ? `W/\"${request.optimisticLockingVersionId}\"` : undefined,\n });\n}\n\nexport async function patch<T extends FhirResource>(\n this: SDKResource,\n { resourceType, id, operations }: FhirPatchParams,\n request?: OystehrFHIRUpdateClientRequest\n): Promise<FhirFetcherResponse<T>> {\n return this.fhirRequest(`/${resourceType}/${id}`, 'PATCH')(operations, {\n ...request,\n contentType: 'application/json-patch+json',\n ifMatch: request?.optimisticLockingVersionId ? `W/\"${request.optimisticLockingVersionId}\"` : undefined,\n });\n}\n\nasync function del<T extends FhirResource>(\n this: SDKResource,\n { resourceType, id }: FhirDeleteParams,\n request?: OystehrClientRequest\n): Promise<FhirFetcherResponse<T>> {\n return this.fhirRequest(`/${resourceType}/${id}`, 'DELETE')({}, request);\n}\nexport { del as delete };\n\nexport async function history<T extends FhirResource>(\n this: SDKResource,\n { resourceType, id }: FhirHistorySearchParams,\n request?: OystehrClientRequest\n): Promise<FhirFetcherResponse<Bundle<T>>>;\nexport async function history<T extends FhirResource>(\n this: SDKResource,\n { resourceType, id, versionId }: FhirHistoryGetParams,\n request?: OystehrClientRequest\n): Promise<FhirFetcherResponse<T>>;\nexport async function history<T extends FhirResource>(\n this: SDKResource,\n { resourceType, id, versionId }: { resourceType: string; id: string; versionId?: string },\n request?: OystehrClientRequest\n): Promise<FhirFetcherResponse<Bundle<T>> | FhirFetcherResponse<T>> {\n return this.fhirRequest(`/${resourceType}/${id}/_history${versionId ? `/${versionId}` : ''}`, 'GET')({}, request);\n}\n\nfunction batchInputRequestToBundleEntryItem<T extends FhirResource>(\n request: BatchInputRequest<T>\n): BundleEntry<T | Binary<T>> {\n const { method, url } = request;\n const baseRequest = {\n request: {\n method,\n url,\n },\n };\n\n // Escape query string parameters in entry.request.url\n if (url.split('?').length > 1) {\n const [resource, query] = url.split('?');\n const params = query\n .split('&')\n .map((param) => {\n const [name, value] = param.split('=');\n return { name, value };\n })\n .reduce((acc, { name, value }) => {\n if (!name) {\n return acc;\n }\n if (!acc[name]) {\n acc[name] = [];\n }\n acc[name].push(value);\n return acc;\n }, {} as Record<string, string[]>);\n const search = new URLSearchParams();\n addParamsToSearch(params, search);\n baseRequest.request.url = `${resource}?${search.toString()}`;\n }\n\n // GET, DELETE, and HEAD require no further parameters\n if (['GET', 'DELETE', 'HEAD'].includes(method)) {\n return baseRequest as BundleEntry<T>;\n }\n\n // PUT updates require a full resource\n if (method === 'PUT') {\n const { resource } = request;\n return {\n ...baseRequest,\n resource: resource as T,\n } as BundleEntry<T>;\n }\n\n // PATCH can be Binary resource or JSON patch\n if (method === 'PATCH') {\n if ('resource' in request) {\n return {\n ...baseRequest,\n resource: request.resource,\n } as BundleEntry<Binary<T>>;\n }\n return {\n ...baseRequest,\n resource: {\n resourceType: 'Binary',\n contentType: 'application/json-patch+json',\n data: Buffer.from(JSON.stringify(request.operations), 'utf8').toString('base64'),\n },\n } as BundleEntry<Binary<T>>;\n }\n\n // POST creates require a full resource\n if (method === 'POST') {\n const { resource, fullUrl } = request;\n return {\n ...baseRequest,\n resource: resource as T,\n fullUrl,\n } as BundleEntry<T>;\n }\n throw new Error('Unrecognized method');\n}\n\nfunction bundleRequest(type: 'batch' | 'transaction') {\n return async function <BundleContentType extends FhirResource>(\n this: SDKResource,\n input: BatchInput<BundleContentType>,\n request?: OystehrClientRequest\n ): Promise<FhirFetcherResponse<Bundle<BundleContentType>>> {\n return this.fhirRequest('/', 'POST')(\n {\n resourceType: 'Bundle',\n type,\n entry: input.requests.map(batchInputRequestToBundleEntryItem),\n },\n request\n );\n };\n}\n\nexport const batch = bundleRequest('batch');\nexport const transaction = bundleRequest('transaction');\n\nexport function formatAddress(\n address: AddressR4B | AddressR5,\n options?: { all?: boolean; use?: boolean; lineSeparator?: string }\n): string {\n const builder = [];\n\n if (address.line) {\n builder.push(...address.line);\n }\n\n if (address.city || address.state || address.postalCode) {\n const cityStateZip = [];\n if (address.city) {\n cityStateZip.push(address.city);\n }\n if (address.state) {\n cityStateZip.push(address.state);\n }\n if (address.postalCode) {\n cityStateZip.push(address.postalCode);\n }\n builder.push(cityStateZip.join(', '));\n }\n\n if (address.use && (options?.all || options?.use)) {\n builder.push('[' + address.use + ']');\n }\n\n return builder.join(options?.lineSeparator || ', ').trim();\n}\n\nexport function formatHumanName(\n name: HumanNameR4B | HumanNameR5,\n options?: {\n all?: boolean;\n prefix?: boolean;\n suffix?: boolean;\n use?: boolean;\n }\n): string {\n const builder = [];\n\n if (name.prefix && options?.prefix !== false) {\n builder.push(...name.prefix);\n }\n\n if (name.given) {\n builder.push(...name.given);\n }\n\n if (name.family) {\n builder.push(name.family);\n }\n\n if (name.suffix && options?.suffix !== false) {\n builder.push(...name.suffix);\n }\n\n if (name.use && (options?.all || options?.use)) {\n builder.push('[' + name.use + ']');\n }\n\n return builder.join(' ').trim();\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\nimport * as ext from './fhir-ext';\n\nexport class Fhir extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['fhirApiUrl'] ?? 'https://fhir-api.zapehr.com';\n }\n /**\n * Performs a FHIR search and returns the results as a Bundle resource\n * @param options FHIR resource type and FHIR search parameters\n * @param request optional OystehrClientRequest object\n * @returns FHIR Bundle resource\n */\n search = ext.search;\n create = ext.create;\n get = ext.get;\n update = ext.update;\n patch = ext.patch;\n delete = ext.delete;\n history = ext.history;\n batch = ext.batch;\n transaction = ext.transaction;\n formatAddress = ext.formatAddress;\n formatHumanName = ext.formatHumanName;\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n LabOrderableItemListParams,\n LabOrderableItemListResponse,\n LabOrderableItemQuestionnaireGetParams,\n LabOrderableItemQuestionnaireGetResponse,\n LabOrderSubmitParams,\n LabRouteCreateParams,\n LabRouteDeleteParams,\n LabRouteListResponse,\n OystehrClientRequest,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class Lab extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['labApiUrl'] ?? 'https://labs-api.zapehr.com/v1';\n }\n /**\n * Gets a list of Routes associated with the project. Returns an empty list if no Routes are found.\n *\n * Access Policy Requirements:\n * Action: `Lab:GetRoutes`\n * Access Policy Resource: `Lab:Route`\n */\n routeList(request?: OystehrClientRequest): Promise<LabRouteListResponse> {\n return this.request('/route', 'get', this.#baseUrlThunk.bind(this))(request);\n }\n /**\n * Create a route. A Route represents that a lab and particular customer have a relationship, and a Route is necessary to submit an order to a lab. See [Route](https://docs.oystehr.com/oystehr/services/lab/onboarding-a-lab/#create-route) for more details.\n *\n * Access Policy Requirements:\n * Action: `Lab:CreateRoute`\n * Access Policy Resource: `Lab:Route`\n */\n routeCreate(params: LabRouteCreateParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/route', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Delete a route. Deleting a Route will permanently remove the `routeGuid`. Orders can no longer be submitted to this lab until a new Route is created. See [Route](https://docs.oystehr.com/oystehr/services/lab/onboarding-a-lab/#delete-route) for more details.\n *\n * Access Policy Requirements:\n * Action: `Lab:DeleteRoute`\n * Access Policy Resource: `Lab:Route`\n */\n routeDelete(params: LabRouteDeleteParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/route/{routeGuid}', 'delete', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Returns list of active orderable items for the latest compendium version. Page size is default 25 and max 100 items. See [orderable item Search](https://docs.oystehr.com/oystehr/services/lab/explore-the-compendium/#orderable-item-search) for more details.\n *\n * Access Policy Requirements:\n * Action: `Lab:SearchOrderableItems`\n * Access Policy Resource: `Lab:OrderableItem`\n */\n orderableItemList(\n params: LabOrderableItemListParams,\n request?: OystehrClientRequest\n ): Promise<LabOrderableItemListResponse>;\n /**\n * Returns list of active orderable items for the latest compendium version. Page size is default 25 and max 100 items. See [orderable item Search](https://docs.oystehr.com/oystehr/services/lab/explore-the-compendium/#orderable-item-search) for more details.\n *\n * Access Policy Requirements:\n * Action: `Lab:SearchOrderableItems`\n * Access Policy Resource: `Lab:OrderableItem`\n */\n orderableItemList(request?: OystehrClientRequest): Promise<LabOrderableItemListResponse>;\n /**\n * Returns list of active orderable items for the latest compendium version. Page size is default 25 and max 100 items. See [orderable item Search](https://docs.oystehr.com/oystehr/services/lab/explore-the-compendium/#orderable-item-search) for more details.\n *\n * Access Policy Requirements:\n * Action: `Lab:SearchOrderableItems`\n * Access Policy Resource: `Lab:OrderableItem`\n */\n orderableItemList(\n params?: LabOrderableItemListParams | OystehrClientRequest,\n request?: OystehrClientRequest\n ): Promise<LabOrderableItemListResponse> {\n return this.request('/orderableItem', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Retrieve the AOE (Answer on Entry) Questionnaire for the given orderable item. The orderable item is defined by its labGuid, compendiumVersion, and itemCode. See [AOE](https://docs.oystehr.com/oystehr/services/lab/explore-the-compendium/#AOE) for more details.\n *\n * Access Policy Requirements:\n * Action: `Lab:SearchOrderableItems`\n * Access Policy Resource: `Lab:OrderableItem`\n */\n orderableItemQuestionnaireGet(\n params: LabOrderableItemQuestionnaireGetParams,\n request?: OystehrClientRequest\n ): Promise<LabOrderableItemQuestionnaireGetResponse> {\n return this.request(\n '/canonical-questionnaire/lab/{labGuid}/compendium/{compendiumVersion}/item/{itemCode}/questionnaire',\n 'get',\n this.#baseUrlThunk.bind(this)\n )(params, request);\n }\n /**\n * Submit a lab order. Oystehr's [Submit Lab](https://docs.oystehr.com/oystehr/services/lab/submit-an-order/) feature allows users to submit a well configured ServiceRequest to an external lab. In order to successfully submit an order, a [Route](https://docs.oystehr.com/oystehr/services/lab/onboarding-a-lab/#create-route) to and Organization representing that lab must exist.\n *\n * Access Policy Requirements:\n * Action: `Lab:SubmitOrder`\n * Access Policy Resource: `Lab:Order`\n */\n orderSubmit(params: LabOrderSubmitParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/submit', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n M2mCreateParams,\n M2mCreateResponse,\n M2mDeleteParams,\n M2mGetParams,\n M2mGetResponse,\n M2mListResponse,\n M2mListV2Params,\n M2mListV2Response,\n M2mRotateSecretParams,\n M2mRotateSecretResponse,\n M2mUpdateParams,\n M2mUpdateResponse,\n OystehrClientRequest,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class M2m extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * DEPRECATED. Please use [v2/list](https://api-reference.oystehr.com/reference/get_m2m-v2-list) instead.\n *\n * Get a list of all M2M Clients. [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients) are used to access Oystehr APIs from scripts and server-side code like [Zambda Functions](https://docs.oystehr.com/oystehr/services/zambda).\n *\n * Access Policy Action: `App:ListAllM2MClients`\n * Access Policy Resource: `IAM:M2MClient`\n */\n list(request?: OystehrClientRequest): Promise<M2mListResponse> {\n return this.request('/m2m', 'get', this.#baseUrlThunk.bind(this))(request);\n }\n /**\n * Create a new M2M Client. [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients) are used to access Oystehr APIs from scripts and server-side code like [Zambda Functions](https://docs.oystehr.com/oystehr/services/zambda).\n *\n * Access Policy Action: `App:CreateM2MClient`\n * Access Policy Resource: `IAM:M2MClient`\n */\n create(params: M2mCreateParams, request?: OystehrClientRequest): Promise<M2mCreateResponse> {\n return this.request('/m2m', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Get the M2M Client with the provided ID. [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients) are used to access Oystehr APIs from scripts and server-side code like [Zambda Functions](https://docs.oystehr.com/oystehr/services/zambda).\n *\n * Access Policy Action: `App:GetM2MClient`\n * Access Policy Resource: `IAM:M2MClient`\n */\n get(params: M2mGetParams, request?: OystehrClientRequest): Promise<M2mGetResponse> {\n return this.request('/m2m/{id}', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Update the M2M Client with the provided ID. [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients) are used to access Oystehr APIs from scripts and server-side code like [Zambda Functions](https://docs.oystehr.com/oystehr/services/zambda).\n *\n * Access Policy Action: `App:UpdateM2MClient`\n * Access Policy Resource: `IAM:M2MClient`\n */\n update(params: M2mUpdateParams, request?: OystehrClientRequest): Promise<M2mUpdateResponse> {\n return this.request('/m2m/{id}', 'patch', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Delete the M2M Client with the provided ID. [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients) are used to access Oystehr APIs from scripts and server-side code like [Zambda Functions](https://docs.oystehr.com/oystehr/services/zambda).\n *\n * Access Policy Action: `App:DeleteM2MClient`\n * Access Policy Resource: `IAM:M2MClient`\n */\n delete(params: M2mDeleteParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/m2m/{id}', 'delete', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Rotate the client secret for the M2M Client with the provided ID. [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients) are used to access Oystehr APIs from scripts and server-side code like [Zambda Functions](https://docs.oystehr.com/oystehr/services/zambda).\n *\n * Access Policy Action: `App:RotateM2MClientSecret`\n * Access Policy Resource: `IAM:M2MClient`\n */\n rotateSecret(params: M2mRotateSecretParams, request?: OystehrClientRequest): Promise<M2mRotateSecretResponse> {\n return this.request('/m2m/{id}/rotate-secret', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Get M2M clients in the Project with pagination, sort, sort order and filtering. [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients) are used to access Oystehr APIs from scripts and server-side code like [Zambda Functions](https://docs.oystehr.com/oystehr/services/zambda).\n *\n * Access Policy Action: `App:ListAllM2MClients`\n * Access Policy Resource: `IAM:M2MClient`\n */\n listV2(params: M2mListV2Params, request?: OystehrClientRequest): Promise<M2mListV2Response>;\n /**\n * Get M2M clients in the Project with pagination, sort, sort order and filtering. [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients) are used to access Oystehr APIs from scripts and server-side code like [Zambda Functions](https://docs.oystehr.com/oystehr/services/zambda).\n *\n * Access Policy Action: `App:ListAllM2MClients`\n * Access Policy Resource: `IAM:M2MClient`\n */\n listV2(request?: OystehrClientRequest): Promise<M2mListV2Response>;\n /**\n * Get M2M clients in the Project with pagination, sort, sort order and filtering. [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients) are used to access Oystehr APIs from scripts and server-side code like [Zambda Functions](https://docs.oystehr.com/oystehr/services/zambda).\n *\n * Access Policy Action: `App:ListAllM2MClients`\n * Access Policy Resource: `IAM:M2MClient`\n */\n listV2(params?: M2mListV2Params | OystehrClientRequest, request?: OystehrClientRequest): Promise<M2mListV2Response> {\n return this.request('/m2m/v2/list', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport { MessagingGetMessagingConfigResponse, OystehrClientRequest } from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class Messaging extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Get an information about the Messaging services configuration. This information includes phone number, phone number type and also rate limits of each service.\n */\n getMessagingConfig(request?: OystehrClientRequest): Promise<MessagingGetMessagingConfigResponse> {\n return this.request('/messaging/config', 'get', this.#baseUrlThunk.bind(this))(request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n OystehrClientRequest,\n PaymentMethodDeleteParams,\n PaymentMethodListParams,\n PaymentMethodListResponse,\n PaymentMethodSetDefaultParams,\n PaymentMethodSetUpParams,\n PaymentMethodSetUpResponse,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class PaymentMethod extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Enter a new credit card or other payment method for the user.\n *\n * Access Policy Requirements:\n * Action: `Payment:Setup`\n * Access Policy Resource: `Payment:PaymentMethod`\n * Actions: `FHIR:Read,FHIR:Create,FHIR:Update`\n * Access Policy Resource: `FHIR:Coverage:*`\n * Action: `FHIR:Read,FHIR:Create,FHIR:Update`\n * Access Policy Resource: `FHIR:Account:*`\n *\n * Also need to be able to read the patients' details. For example:\n * Action: `FHIR:Read`\n * Access Policy Resource: `FHIR:Patient`\n */\n setUp(params: PaymentMethodSetUpParams, request?: OystehrClientRequest): Promise<PaymentMethodSetUpResponse> {\n return this.request('/payment/payment-method/setup', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Set a specified payment method for the user as default.\n *\n * Access Policy Requirements:\n * Action: `Payment:SetDefault`\n * Access Policy Resource: `Payment:PaymentMethod`\n * Actions: `FHIR:Read,FHIR:Create,FHIR:Update`\n * Access Policy Resource: `FHIR:Coverage:*`\n * Action: `FHIR:Read,FHIR:Create,FHIR:Update`\n * Access Policy Resource: `FHIR:Account:*`\n *\n * Also need to be able to read the patients' details. For example:\n * Action: `FHIR:Read`\n * Access Policy Resource: `FHIR:Patient`\n */\n setDefault(params: PaymentMethodSetDefaultParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/payment/payment-method/set-default', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Delete a specified payment method for the beneficiary.\n *\n * Access Policy Requirements:\n * Action: `Payment:Delete`\n * Access Policy Resource: `Payment:PaymentMethod`\n * Actions: `FHIR:Read,FHIR:Create,FHIR:Update`\n * Access Policy Resource: `FHIR:Coverage:*`\n * Action: `FHIR:Read,FHIR:Create,FHIR:Update`\n * Access Policy Resource: `FHIR:Account:*`\n *\n * Also need to be able to read the patients' details. For example:\n * Action: `FHIR:Read`\n * Access Policy Resource: `FHIR:Patient`\n */\n delete(params: PaymentMethodDeleteParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/payment/payment-method', 'delete', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * List all payment methods for the patient.\n *\n * Access Policy Requirements:\n * Action: `Payment:Setup`\n * Access Policy Resource: `Payment:PaymentMethod`\n * Actions: `FHIR:Read,FHIR:Create,FHIR:Update`\n * Access Policy Resource: `FHIR:Coverage:*`\n * Action: `FHIR:Read,FHIR:Create,FHIR:Update`\n * Access Policy Resource: `FHIR:Account:*`\n *\n * Also need to be able to read the patients' details. For example:\n * Action: `FHIR:Read`\n * Access Policy Resource: `FHIR:Patient`\n */\n list(params: PaymentMethodListParams, request?: OystehrClientRequest): Promise<PaymentMethodListResponse> {\n return this.request('/payment/payment-method/list', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport { OystehrClientRequest, ProjectGetResponse, ProjectUpdateParams, ProjectUpdateResponse } from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class Project extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Get the Project settings for a Project. Developers must specify a [project ID](https://docs.oystehr.com/oystehr/core-documentation/authenticating-api-requests/#x-oystehr-project-id-header) in the header. A Project is the logically-isolated instance of Oystehr that segments your data from other Projects. [Projects](https://docs.oystehr.com/oystehr/services/project/) are completely independent from each other, having their own separate [FHIR store](https://docs.oystehr.com/oystehr/services/fhir/basics/), [Applications](https://docs.oystehr.com/oystehr/services/app/applications/), [Users](https://docs.oystehr.com/oystehr/services/app/users/), etc .\n *\n * Access Policy Action: `Project:GetProjectInfo`\n * Access Policy Resource: `Project:Settings`\n */\n get(request?: OystehrClientRequest): Promise<ProjectGetResponse> {\n return this.request('/project', 'get', this.#baseUrlThunk.bind(this))(request);\n }\n /**\n * Update the Project settings for the Project that corresponds to the project-id in the request header. A [Project](https://docs.oystehr.com/oystehr/services/project/) is the logically-isolated instance of Oystehr that segments your data from other Projects. Projects are completely independent from each other, having their own separate [FHIR store](https://docs.oystehr.com/oystehr/services/fhir/basics/), [Applications](https://docs.oystehr.com/oystehr/services/app/applications/), [Users](https://docs.oystehr.com/oystehr/services/app/users/), etc .\n *\n * Access Policy Action: `Project:UpdateProjectInfo`\n * Access Policy Resource: `Project:Settings`\n */\n update(params: ProjectUpdateParams, request?: OystehrClientRequest): Promise<ProjectUpdateResponse>;\n /**\n * Update the Project settings for the Project that corresponds to the project-id in the request header. A [Project](https://docs.oystehr.com/oystehr/services/project/) is the logically-isolated instance of Oystehr that segments your data from other Projects. Projects are completely independent from each other, having their own separate [FHIR store](https://docs.oystehr.com/oystehr/services/fhir/basics/), [Applications](https://docs.oystehr.com/oystehr/services/app/applications/), [Users](https://docs.oystehr.com/oystehr/services/app/users/), etc .\n *\n * Access Policy Action: `Project:UpdateProjectInfo`\n * Access Policy Resource: `Project:Settings`\n */\n update(request?: OystehrClientRequest): Promise<ProjectUpdateResponse>;\n /**\n * Update the Project settings for the Project that corresponds to the project-id in the request header. A [Project](https://docs.oystehr.com/oystehr/services/project/) is the logically-isolated instance of Oystehr that segments your data from other Projects. Projects are completely independent from each other, having their own separate [FHIR store](https://docs.oystehr.com/oystehr/services/fhir/basics/), [Applications](https://docs.oystehr.com/oystehr/services/app/applications/), [Users](https://docs.oystehr.com/oystehr/services/app/users/), etc .\n *\n * Access Policy Action: `Project:UpdateProjectInfo`\n * Access Policy Resource: `Project:Settings`\n */\n update(\n params?: ProjectUpdateParams | OystehrClientRequest,\n request?: OystehrClientRequest\n ): Promise<ProjectUpdateResponse> {\n return this.request('/project', 'patch', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n OystehrClientRequest,\n RcmEligibilityCheckParams,\n RcmEligibilityCheckResponse,\n RcmSubmitProfessionalClaimParams,\n RcmSubmitProfessionalClaimResponse,\n RcmValidateProfessionalClaimParams,\n RcmValidateProfessionalClaimResponse,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class Rcm extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Check [Insurance Eligibility](https://docs.oystehr.com/oystehr/services/rcm/eligibility/).\n *\n * Access Policy Action: `RCM:CheckInsuranceEligibility`\n * Access Policy Resource: `RCM:InsuranceEligibility`\n *\n * Access Policy Action: `FHIR:Create`\n * Access Policy Resource: `FHIR:CoverageEligibilityResponse`\n */\n eligibilityCheck(\n params: RcmEligibilityCheckParams,\n request?: OystehrClientRequest\n ): Promise<RcmEligibilityCheckResponse> {\n return this.request('/rcm/eligibility-check', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Check [Validate Professional Claim](https://docs.oystehr.com/oystehr/services/rcm/professional-claim-submission/).\n *\n * Access Policy Action: `RCM:ValidateProfessionalClaim`\n * Access Policy Resource: `RCM:Claim`\n *\n * Access Policy Action: `FHIR:Create`\n * Access Policy Resource: `FHIR:AuditEvent`\n */\n validateProfessionalClaim(\n params: RcmValidateProfessionalClaimParams,\n request?: OystehrClientRequest\n ): Promise<RcmValidateProfessionalClaimResponse> {\n return this.request('/rcm/professional-claim/validate', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Check [Submit Professional Claim](https://docs.oystehr.com/oystehr/services/rcm/professional-claim-submission/).\n *\n * Access Policy Action: `RCM:SubmitProfessionalClaim`\n * Access Policy Resource: `RCM:Claim`\n *\n * Access Policy Action: `FHIR:Create`\n * Access Policy Resource: `FHIR:AuditEvent`\n *\n * Access Policy Actions: `FHIR:Create, FHIR:Update`\n * Access Policy Resource: `FHIR:Claim`\n */\n submitProfessionalClaim(\n params: RcmSubmitProfessionalClaimParams,\n request?: OystehrClientRequest\n ): Promise<RcmSubmitProfessionalClaimResponse> {\n return this.request('/rcm/professional-claim/submit', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n OystehrClientRequest,\n RoleCreateParams,\n RoleCreateResponse,\n RoleDeleteParams,\n RoleGetParams,\n RoleGetResponse,\n RoleListResponse,\n RoleUpdateParams,\n RoleUpdateResponse,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class Role extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Get a list of all Roles. A [Role](https://docs.oystehr.com/oystehr/services/iam/roles/) defines an access policy that can be assigned to any number of [Developers](https://docs.oystehr.com/oystehr/services/iam/developers/), [Users](https://docs.oystehr.com/oystehr/services/app/users/), and [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients/).\n *\n * Access Policy Action: `IAM:ListAllRoles`\n * Access Policy Resource: `IAM:Role`\n */\n list(request?: OystehrClientRequest): Promise<RoleListResponse> {\n return this.request('/iam/role', 'get', this.#baseUrlThunk.bind(this))(request);\n }\n /**\n * Create a new Role. A [Role](https://docs.oystehr.com/oystehr/services/iam/roles/) defines an access policy that can be assigned to any number of [Developers](https://docs.oystehr.com/oystehr/services/iam/developers/), [Users](https://docs.oystehr.com/oystehr/services/app/users/), and [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients/).\n *\n * Access Policy Action: `IAM:CreateRole`\n * Access Policy Resource: `IAM:Role`\n */\n create(params: RoleCreateParams, request?: OystehrClientRequest): Promise<RoleCreateResponse> {\n return this.request('/iam/role', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Get the Role with the provided ID. A [Role](https://docs.oystehr.com/oystehr/services/iam/roles/) defines an access policy that can be assigned to any number of [Developers](https://docs.oystehr.com/oystehr/services/iam/developers/), [Users](https://docs.oystehr.com/oystehr/services/app/users/), and [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients/).\n *\n * Access Policy Action: `IAM:GetRole`\n * Access Policy Resource: `IAM:Role`\n */\n get(params: RoleGetParams, request?: OystehrClientRequest): Promise<RoleGetResponse> {\n return this.request('/iam/role/{roleId}', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Update the Role with the provided ID. A [Role](https://docs.oystehr.com/oystehr/services/iam/roles/) defines an access policy that can be assigned to any number of [Developers](https://docs.oystehr.com/oystehr/services/iam/developers/), [Users](https://docs.oystehr.com/oystehr/services/app/users/), and [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients/).\n *\n * Access Policy Action: `IAM:UpdateRole`\n * Access Policy Resource: `IAM:Role`\n */\n update(params: RoleUpdateParams, request?: OystehrClientRequest): Promise<RoleUpdateResponse> {\n return this.request('/iam/role/{roleId}', 'patch', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Delete the Role with the provided ID. A [Role](https://docs.oystehr.com/oystehr/services/iam/roles/) defines an access policy that can be assigned to any number of [Developers](https://docs.oystehr.com/oystehr/services/iam/developers/), [Users](https://docs.oystehr.com/oystehr/services/app/users/), and [M2M Clients](https://docs.oystehr.com/oystehr/services/iam/m2m-clients/).\n *\n * Access Policy Action: `IAM:DeleteRole`\n * Access Policy Resource: `IAM:Role`\n * Will fail if any entities hold the Role or if Role is assigned as the default patient role for the project\n */\n delete(params: RoleDeleteParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/iam/role/{roleId}', 'delete', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n OystehrClientRequest,\n SecretDeleteParams,\n SecretGetParams,\n SecretGetResponse,\n SecretListResponse,\n SecretSetParams,\n SecretSetResponse,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class Secret extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Get a list of all secrets in the Project.\n *\n * Access Policy Action: `Zambda:ListAllSecrets`\n * Access Policy Resource: `Zambda:Secret`\n */\n list(request?: OystehrClientRequest): Promise<SecretListResponse> {\n return this.request('/secret', 'get', this.#baseUrlThunk.bind(this))(request);\n }\n /**\n * Create a secret for a project. If the secret is already defined, update it.\n *\n * Access Policy Action: `Zambda:CreateSecret`\n * Access Policy Resource: `Zambda:Secret`\n */\n set(params: SecretSetParams, request?: OystehrClientRequest): Promise<SecretSetResponse> {\n return this.request('/secret', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Get the secret with the provided name.\n *\n * Access Policy Action: `Zambda:GetSecret`\n * Access Policy Resource: `Zambda:Secret`\n */\n get(params: SecretGetParams, request?: OystehrClientRequest): Promise<SecretGetResponse> {\n return this.request('/secret/{name}', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Delete the secret with the provided name.\n *\n * Access Policy Action: `Zambda:DeleteSecret`\n * Access Policy Resource: `Zambda:Secret`\n */\n delete(params: SecretDeleteParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/secret/{name}', 'delete', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n OystehrClientRequest,\n TelemedCreateMeetingParams,\n TelemedCreateMeetingResponse,\n TelemedJoinMeetingParams,\n TelemedJoinMeetingResponse,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class Telemed extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Create a [telemedicine video meeting](https://docs.oystehr.com/oystehr/services/telemed/).\n *\n * Access Policy Requirements:\n * Action: `Telemed:CreateMeeting`\n * Access Policy Resource: `Telemed:Meeting`\n * Action: `FHIR:Create`\n * Access Policy Resource: `FHIR:Encounter`\n * Action: `FHIR:Update`\n * Access Policy Resource: `FHIR:Encounter`\n */\n createMeeting(\n params: TelemedCreateMeetingParams,\n request?: OystehrClientRequest\n ): Promise<TelemedCreateMeetingResponse> {\n return this.request('/telemed/v2/meeting', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Get Meeting and Attendee objects necessary to join a telemedicine video meeting.\n *\n * Access Policy Requirements:\n * Action: `Telemed:JoinMeeting`\n * Access Policy Resource: `Telemed:Meeting`\n * To use M2M token to join as anonymous user:\n * Action: `Telemed:AddAnonymousToMeeting`\n * Access Policy Resource: `Telemed:Meeting`\n */\n joinMeeting(params: TelemedJoinMeetingParams, request?: OystehrClientRequest): Promise<TelemedJoinMeetingResponse> {\n return this.request(\n '/telemed/v2/meeting/{encounterId}/join',\n 'get',\n this.#baseUrlThunk.bind(this)\n )(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport { OystehrClientRequest, TransactionalSMSSendParams, TransactionalSMSSendResponse } from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class TransactionalSMS extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Send an SMS to any phone number. Oystehr's [Transactional SMS](https://docs.oystehr.com/oystehr/services/messaging/transactional-sms/) feature makes it easy to send a text message to your [Users](https://docs.oystehr.com/oystehr/services/app/users/) with a single API call. You can use this feature to send appointment reminders, prescription refill reminders, discharge information, and more.\n *\n * Access Policy Requirements:\n * Action: `Messaging:SendTransactionalSMS`\n * Access Policy Resource: `Messaging:TransactionalSMS`\n * Action: `FHIR:Create`\n * Access Policy Resource: `FHIR:Communication`\n * Action: `FHIR:Update`\n * Access Policy Resource: `FHIR:Communication`\n *\n * You also need Read access for the resource to which you are sending a message. For example:\n * Action: `FHIR:Read`\n * Access Policy Resource: `FHIR:Patient`\n */\n send(params: TransactionalSMSSendParams, request?: OystehrClientRequest): Promise<TransactionalSMSSendResponse> {\n return this.request('/messaging/transactional-sms/send', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n OystehrClientRequest,\n UserDeleteParams,\n UserGetParams,\n UserGetResponse,\n UserInviteParams,\n UserInviteResponse,\n UserListResponse,\n UserListV2Params,\n UserListV2Response,\n UserMeResponse,\n UserUpdateParams,\n UserUpdateResponse,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class User extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Get your own User details. [Users](https://docs.oystehr.com/oystehr/services/app/users/) are the people who log into the [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) you configure for securing the apps you build on top of Oystehr.\n *\n * Fetch details about the calling User. This endpoint has no access policy requirements, it is available to all authenticated Users.\n */\n me(request?: OystehrClientRequest): Promise<UserMeResponse> {\n return this.request('/user/me', 'get', this.#baseUrlThunk.bind(this))(request);\n }\n /**\n * Get the User with the provided ID. [Users](https://docs.oystehr.com/oystehr/services/app/users/) are the people who log into the [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) you configure for securing the apps you build on top of Oystehr.\n *\n * Access Policy Action: `App:GetUser`\n * Access Policy Resource: `App:User`\n */\n get(params: UserGetParams, request?: OystehrClientRequest): Promise<UserGetResponse> {\n return this.request('/user/{id}', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Update the User with the provided ID. [Users](https://docs.oystehr.com/oystehr/services/app/users/) are the people who log into the [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) you configure for securing the apps you build on top of Oystehr.\n *\n * Access Policy Action: `App:UpdateUser`\n * Access Policy Resource: `App:User`\n */\n update(params: UserUpdateParams, request?: OystehrClientRequest): Promise<UserUpdateResponse> {\n return this.request('/user/{id}', 'patch', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Delete the User with the provided ID. [Users](https://docs.oystehr.com/oystehr/services/app/users/) are the people who log into the [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) you configure for securing the apps you build on top of Oystehr.\n *\n * Access Policy Action: `App:DeleteUser`\n * Access Policy Resource: `App:User`\n */\n delete(params: UserDeleteParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/user/{id}', 'delete', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Invite a User to the Project. [Users](https://docs.oystehr.com/oystehr/services/app/users/) are the people who log into the [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) you configure for securing the apps you build on top of Oystehr.\n *\n * Access Policy Action: `App:CreateUser`\n * Access Policy Resource: `App:User`\n */\n invite(params: UserInviteParams, request?: OystehrClientRequest): Promise<UserInviteResponse> {\n return this.request('/user/invite', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * DEPRECATED. Please use [v2/list](https://api-reference.oystehr.com/reference/get_user-v2-list) instead.\n *\n * Get all Users in the Project. [Users](https://docs.oystehr.com/oystehr/services/app/users/) are the people who log into the [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) you configure for securing the apps you build on top of Oystehr.\n *\n * Access Policy Action: `App:ListAllUsers`\n * Access Policy Resource: `App:User`\n */\n list(request?: OystehrClientRequest): Promise<UserListResponse> {\n return this.request('/user', 'get', this.#baseUrlThunk.bind(this))(request);\n }\n /**\n * Get Users in the Project with pagination, sort, sort order and filtering. [Users](https://docs.oystehr.com/oystehr/services/app/users/) are the people who log into the [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) you configure for securing the apps you build on top of Oystehr.\n *\n * Access Policy Action: `Project:ListAllUsers`\n * Access Policy Resource: `Project:Settings`\n */\n listV2(params: UserListV2Params, request?: OystehrClientRequest): Promise<UserListV2Response>;\n /**\n * Get Users in the Project with pagination, sort, sort order and filtering. [Users](https://docs.oystehr.com/oystehr/services/app/users/) are the people who log into the [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) you configure for securing the apps you build on top of Oystehr.\n *\n * Access Policy Action: `Project:ListAllUsers`\n * Access Policy Resource: `Project:Settings`\n */\n listV2(request?: OystehrClientRequest): Promise<UserListV2Response>;\n /**\n * Get Users in the Project with pagination, sort, sort order and filtering. [Users](https://docs.oystehr.com/oystehr/services/app/users/) are the people who log into the [Applications](https://docs.oystehr.com/oystehr/services/app/applications/) you configure for securing the apps you build on top of Oystehr.\n *\n * Access Policy Action: `Project:ListAllUsers`\n * Access Policy Resource: `Project:Settings`\n */\n listV2(\n params?: UserListV2Params | OystehrClientRequest,\n request?: OystehrClientRequest\n ): Promise<UserListV2Response> {\n return this.request('/user/v2/list', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport { OystehrClientRequest, VersionGetResponse } from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class Version extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Get project API version. This endpoint is public so there are no access policy requirements.\n */\n get(request?: OystehrClientRequest): Promise<VersionGetResponse> {\n return this.request('/version', 'get', this.#baseUrlThunk.bind(this))(request);\n }\n}\n","import { defaultProjectApiUrl, SDKResource } from '../../client/client';\nimport { OystehrSdkError } from '../../errors';\nimport { Z3GetPresignedUrlParams, Z3GetPresignedUrlResponse } from '../types';\n\nfunction baseUrlThunk(this: SDKResource): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n}\n\n/**\n * Uploads a file to the bucket and key. Files should be Blobs.\n *\n * @param params upload file params\n */\nexport async function uploadFile(\n this: SDKResource,\n {\n bucketName,\n 'objectPath+': key,\n file,\n }: {\n bucketName: string;\n 'objectPath+': string;\n file: Blob;\n }\n): Promise<void> {\n const uploadUrl = await this.request(\n '/z3/{bucketName}/{objectPath+}',\n 'post',\n baseUrlThunk.bind(this)\n )({\n action: 'upload',\n bucketName,\n 'objectPath+': key,\n });\n await fetch(uploadUrl.signedUrl, {\n method: 'PUT',\n body: file,\n });\n}\n\n/**\n * Downloads an object matching the bucket and key. File content is returned as an ArrayBuffer.\n *\n * @param params download file params\n */\nexport async function downloadFile(\n this: SDKResource,\n {\n bucketName,\n 'objectPath+': key,\n }: {\n bucketName: string;\n 'objectPath+': string;\n }\n): Promise<ArrayBuffer> {\n const uploadUrl = await this.request(\n '/z3/{bucketName}/{objectPath+}',\n 'post',\n baseUrlThunk.bind(this)\n )({\n action: 'download',\n bucketName,\n 'objectPath+': key,\n });\n const resp = await fetch(uploadUrl.signedUrl, {\n method: 'GET',\n });\n if (!resp.ok) {\n throw new Error('Failed to download file');\n }\n return resp.arrayBuffer();\n}\n\n/**\n * This helper performs a `getPresignedUrl` request for Z3 URLs of the forms\n * `https://projects-api.oystehr.com/v1/z3/<bucket>/<key>` or `z3://<bucket>/<key>`\n * instead of the standard SDK `Z3GetPresignedUrlParams`.\n *\n * @param params url and action\n */\nexport async function getPresignedUrlForZ3Url(\n this: SDKResource,\n params: { url: string; action: Z3GetPresignedUrlParams['action'] }\n): Promise<Z3GetPresignedUrlResponse> {\n let bucket: string;\n let key: string;\n const url = new URL(params.url);\n if (url.protocol === 'z3:') {\n // remove leading forward slash\n const z3PathParts = url.pathname.split('/').slice(1);\n bucket = url.hostname;\n key = z3PathParts.join('/');\n } else if (url.href.startsWith(this.config.services?.['projectApiUrl'] ?? defaultProjectApiUrl)) {\n // remove leading `/v1/z3`\n const httpsPathParts = url.pathname.split('/').slice(3);\n bucket = httpsPathParts[0];\n key = httpsPathParts.slice(1).join('/');\n } else {\n throw new OystehrSdkError({ message: 'Invalid Z3 URL', code: 400 });\n }\n const requestParams: Z3GetPresignedUrlParams = {\n action: 'upload',\n bucketName: bucket,\n 'objectPath+': key,\n };\n return this.request('/z3/{bucketName}/{objectPath+}', 'post', baseUrlThunk.bind(this))(requestParams);\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n OystehrClientRequest,\n Z3CreateBucketParams,\n Z3CreateBucketResponse,\n Z3DeleteBucketParams,\n Z3DeleteObjectParams,\n Z3GetPresignedUrlParams,\n Z3GetPresignedUrlResponse,\n Z3ListBucketsResponse,\n Z3ListObjectsParams,\n Z3ListObjectsResponse,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\nimport * as ext from './z3-ext';\n\nexport class Z3 extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Uploads a file to the bucket and key. Files should be Blobs.\n * @param params upload file params\n */\n uploadFile = ext.uploadFile;\n /**\n * Downloads an object matching the bucket and key. File content is returned as an ArrayBuffer.\n * @param params download file params\n */\n downloadFile = ext.downloadFile;\n /**\n * This helper performs a `getPresignedUrl` request for Z3 URLs of the forms\n * `https://projects-api.oystehr.com/v1/z3/<bucket>/<key>` or `z3://<bucket>/<key>`\n * instead of the standard SDK `Z3GetPresignedUrlParams`.\n * @param params url and action\n */\n getPresignedUrlForZ3Url = ext.getPresignedUrlForZ3Url;\n /**\n * List all Z3 Buckets. [Z3](https://docs.oystehr.com/oystehr/services/z3/) is Oystehr's built-in and fully integrated solution for file storage.\n *\n * Access Policy Action: `Z3:ListBuckets`\n * Access Policy Resource: `Z3:BucketName`\n */\n listBuckets(request?: OystehrClientRequest): Promise<Z3ListBucketsResponse> {\n return this.request('/z3', 'get', this.#baseUrlThunk.bind(this))(request);\n }\n /**\n * Create a Z3 Bucket with the provided name. [Z3](https://docs.oystehr.com/oystehr/services/z3/) is Oystehr's built-in and fully integrated solution for file storage.\n *\n * Access Policy Action: `Z3:CreateBucket`\n * Access Policy Resource: `Z3:*`\n */\n createBucket(params: Z3CreateBucketParams, request?: OystehrClientRequest): Promise<Z3CreateBucketResponse> {\n return this.request('/z3/{bucketName}', 'put', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Delete the Z3 Bucket with the provided name. [Z3](https://docs.oystehr.com/oystehr/services/z3/) is Oystehr's built-in and fully integrated solution for file storage.\n *\n * Access Policy Action: `Z3:DeleteBucket`\n * Access Policy Resource: `Z3:BucketName`\n */\n deleteBucket(params: Z3DeleteBucketParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/z3/{bucketName}', 'delete', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * List all Z3 Objects at the provided path in the Bucket with the provided name [Z3](https://docs.oystehr.com/oystehr/services/z3/) is Oystehr's built-in and fully integrated solution for file storage.\n *\n * Access Policy Action: `Z3:ListObjects`\n * Access Policy Resource: `Z3:BucketName:ObjectPath`\n */\n listObjects(params: Z3ListObjectsParams, request?: OystehrClientRequest): Promise<Z3ListObjectsResponse> {\n return this.request('/z3/{bucketName}/{objectPath+}', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Get a link for downloading or uploading a Z3 Object to the provided path in the Bucket with the provided name. [Z3](https://docs.oystehr.com/oystehr/services/z3/) is Oystehr's built-in and fully integrated solution for file storage.\n *\n * Access Policy Action: `Z3:PutObject` or `Z3:GetObject`\n * Access Policy Resource: `Z3:BucketName:ObjectPath`\n */\n getPresignedUrl(params: Z3GetPresignedUrlParams, request?: OystehrClientRequest): Promise<Z3GetPresignedUrlResponse> {\n return this.request('/z3/{bucketName}/{objectPath+}', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Delete the Z3 Object at the provided path in the Bucket with the provided name. [Z3](https://docs.oystehr.com/oystehr/services/z3/) is Oystehr's built-in and fully integrated solution for file storage.\n *\n * Access Policy Action: `Z3:DeleteObject`\n * Access Policy Resource: `Z3:BucketName:ObjectPath`\n */\n deleteObject(params: Z3DeleteObjectParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/z3/{bucketName}/{objectPath+}', 'delete', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","import { SDKResource } from '../../client/client';\n\nfunction baseUrlThunk(this: SDKResource): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n}\n\nexport async function uploadFile(\n this: SDKResource,\n {\n id,\n file,\n filename,\n }: {\n id: string;\n file: Blob;\n filename?: string | undefined;\n }\n): Promise<void> {\n const uploadUrl = await this.request('/zambda/{id}/s3-upload', 'post', baseUrlThunk.bind(this))({ id, filename });\n await fetch(uploadUrl.signedUrl, {\n method: 'PUT',\n body: file,\n });\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n OystehrClientRequest,\n ZambdaCreateParams,\n ZambdaCreateResponse,\n ZambdaDeleteParams,\n ZambdaExecuteParams,\n ZambdaExecutePublicParams,\n ZambdaExecutePublicResponse,\n ZambdaExecuteResponse,\n ZambdaGetParams,\n ZambdaGetResponse,\n ZambdaListResponse,\n ZambdaS3UploadParams,\n ZambdaS3UploadResponse,\n ZambdaUpdateParams,\n ZambdaUpdateResponse,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\nimport * as ext from './zambda-ext';\n\nexport class Zambda extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n uploadFile = ext.uploadFile;\n /**\n * Get a list of all Zambda Functions in the Project. [Zambdas](https://docs.oystehr.com/oystehr/services/zambda/) are functions that can be used to execute your code. They can be used to process data received from Oystehr's APIs or to perform operations on third-party services.\n *\n * Access Policy Action: `Zambda:ListAllFunctions`\n * Access Policy Resource: `Zambda:Function`\n */\n list(request?: OystehrClientRequest): Promise<ZambdaListResponse> {\n return this.request('/zambda', 'get', this.#baseUrlThunk.bind(this))(request);\n }\n /**\n * Create a new Zambda Function. [Zambdas](https://docs.oystehr.com/oystehr/services/zambda/) are functions that can be used to execute your code. They can be used to process data received from Oystehr's APIs or to perform operations on third-party services.\n *\n * Access Policy Action: `Zambda:CreateFunction`\n * Access Policy Resource: `Zambda:Function`\n */\n create(params: ZambdaCreateParams, request?: OystehrClientRequest): Promise<ZambdaCreateResponse> {\n return this.request('/zambda', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Get the Zambda Function with the provided ID or name. [Zambdas](https://docs.oystehr.com/oystehr/services/zambda/) are functions that can be used to execute your code. They can be used to process data received from Oystehr's APIs or to perform operations on third-party services.\n *\n * Access Policy Action: `Zambda:GetFunction`\n * Access Policy Resource: `Zambda:Function`\n */\n get(params: ZambdaGetParams, request?: OystehrClientRequest): Promise<ZambdaGetResponse> {\n return this.request('/zambda/{id}', 'get', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Update the Zambda Function with the provided ID or name. [Zambdas](https://docs.oystehr.com/oystehr/services/zambda/) are functions that can be used to execute your code. They can be used to process data received from Oystehr's APIs or to perform operations on third-party services.\n *\n * Access Policy Action: `Zambda:UpdateFunction`\n * Access Policy Resource: `Zambda:Function`\n */\n update(params: ZambdaUpdateParams, request?: OystehrClientRequest): Promise<ZambdaUpdateResponse> {\n return this.request('/zambda/{id}', 'patch', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Delete the Zambda Function with the provided ID or name. [Zambdas](https://docs.oystehr.com/oystehr/services/zambda/) are functions that can be used to execute your code. They can be used to process data received from Oystehr's APIs or to perform operations on third-party services.\n *\n * Access Policy Action: `Zambda:DeleteFunction`\n * Access Policy Resource: `Zambda:Function`\n */\n delete(params: ZambdaDeleteParams, request?: OystehrClientRequest): Promise<void> {\n return this.request('/zambda/{id}', 'delete', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Execute the [Authenticated Zambda Function](https://docs.oystehr.com/oystehr/services/zambda/types/authenticated/) with the provided ID. [Zambdas](https://docs.oystehr.com/oystehr/services/zambda/) are functions that can be used to execute your code. They can be used to process data received from Oystehr's APIs or to perform operations on third-party services.\n *\n * Access Policy Action: `Zambda:InvokeFunction`\n * Access Policy Resource: `Zambda:Function`\n */\n execute(params: ZambdaExecuteParams, request?: OystehrClientRequest): Promise<ZambdaExecuteResponse> {\n return this.request('/zambda/{id}/execute', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Execute the [Public Zambda Function](https://docs.oystehr.com/oystehr/services/zambda/types/public/) with the provided ID. [Zambdas](https://docs.oystehr.com/oystehr/services/zambda/) are functions that can be used to execute your code. They can be used to process data received from Oystehr's APIs or to perform operations on third-party services.\n *\n * Execute a zambda that has method http_open. This endpoint is public so there are no access policy requirements.\n */\n executePublic(\n params: ZambdaExecutePublicParams,\n request?: OystehrClientRequest\n ): Promise<ZambdaExecutePublicResponse> {\n return this.request('/zambda/{id}/execute-public', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Returns a URL that is used to deploy code to the Zambda Function with the provided ID. [Zambdas](https://docs.oystehr.com/oystehr/services/zambda/) are functions that can be used to execute your code. They can be used to process data received from Oystehr's APIs or to perform operations on third-party services.\n *\n * Access Policy Action: `Zambda:UpdateFunction`\n * Access Policy Resource: `Zambda:Function`\n */\n s3Upload(params: ZambdaS3UploadParams, request?: OystehrClientRequest): Promise<ZambdaS3UploadResponse> {\n return this.request('/zambda/{id}/s3-upload', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n}\n","// AUTOGENERATED -- DO NOT EDIT\n\nimport {\n OystehrClientRequest,\n ZambdaLogStreamGetParams,\n ZambdaLogStreamGetResponse,\n ZambdaLogStreamListParams,\n ZambdaLogStreamListResponse,\n ZambdaLogStreamSearchParams,\n ZambdaLogStreamSearchResponse,\n} from '../..';\nimport { SDKResource } from '../../client/client';\nimport { OystehrConfig } from '../../config';\n\nexport class ZambdaLogStream extends SDKResource {\n constructor(config: OystehrConfig) {\n super(config);\n }\n #baseUrlThunk(): string {\n return this.config.services?.['projectApiUrl'] ?? 'https://project-api.zapehr.com/v1';\n }\n /**\n * Get the log streams for the Zambda Function with the provided ID. [Zambdas](https://docs.oystehr.com/oystehr/services/zambda/) are functions that can be used to execute your code. They can be used to process data received from Oystehr's APIs or to perform operations on third-party services.\n *\n * Access Policy Action: `Zambda:ReadLogs`\n * Access Policy Resource: `Zambda:Function`\n */\n list(params: ZambdaLogStreamListParams, request?: OystehrClientRequest): Promise<ZambdaLogStreamListResponse> {\n return this.request('/zambda/{id}/logStream', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Get all logs for the Zambda Function with the provided ID, filtered by any of: text in messages, minimum start date, and/or maximum end date. [Zambdas](https://docs.oystehr.com/oystehr/services/zambda/) are functions that can be used to execute your code. They can be used to process data received from Oystehr's APIs or to perform operations on third-party services.\n *\n * Access Policy Action: `Zambda:ReadLogs`\n * Access Policy Resource: `Zambda:Function`\n */\n search(params: ZambdaLogStreamSearchParams, request?: OystehrClientRequest): Promise<ZambdaLogStreamSearchResponse> {\n return this.request('/zambda/{id}/logStream/search', 'post', this.#baseUrlThunk.bind(this))(params, request);\n }\n /**\n * Get the logs from the specified log stream for the Zambda Function with the provided ID. [Zambdas](https://docs.oystehr.com/oystehr/services/zambda/) are functions that can be used to execute your code. They can be used to process data received from Oystehr's APIs or to perform operations on third-party services.\n *\n * Access Policy Action: `Zambda:ReadLogs`\n * Access Policy Resource: `Zambda:Function`\n */\n get(params: ZambdaLogStreamGetParams, request?: OystehrClientRequest): Promise<ZambdaLogStreamGetResponse> {\n return this.request(\n '/zambda/{id}/logStream/{logStreamName}',\n 'post',\n this.#baseUrlThunk.bind(this)\n )(params, request);\n }\n}\n","// 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 { ErxV1 } from './erxV1';\nimport { ErxV2 } from './erxV2';\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 { 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 rcm: Rcm;\n readonly erxV1: ErxV1;\n readonly erxV2: ErxV2;\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 zambda: Zambda;\n readonly zambdaLogStream: ZambdaLogStream;\n readonly fax: Fax;\n readonly lab: Lab;\n readonly erx: Erx;\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.rcm = new Rcm(config);\n this.erxV1 = new ErxV1(config);\n this.erxV2 = new ErxV2(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.zambda = new Zambda(config);\n this.zambdaLogStream = new ZambdaLogStream(config);\n this.fax = new Fax(config);\n this.lab = new Lab(config);\n this.erx = new Erx(config);\n this.fhir = new Fhir(config);\n }\n}\n","import type { OystehrClientRequest } from './client/client';\nimport { OystehrConfig } from './config';\nimport * as errors from './errors';\nimport { Oystehr as OystehrBase } from './resources/classes';\n\nexport * from './resources';\n\nexport type { OystehrClientRequest };\nexport type { OystehrConfig };\n\nclass Oystehr extends OystehrBase {\n static OystehrFHIRError = errors.OystehrFHIRError;\n static OystehrSdkError = errors.OystehrSdkError;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Oystehr {\n export type OystehrFHIRError = errors.OystehrFHIRError;\n export type OystehrSdkError = errors.OystehrSdkError;\n}\n\nexport default Oystehr;\n"],"names":["OystehrSdkError","Error","constructor","message","code","cause","super","Object","setPrototypeOf","this","prototype","name","toString","toJSON","transformOperationOutcomeToErrorMessage","causes","issue","_a","details","text","push","length","join","OystehrFHIRError","error","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__classPrivateFieldGet","receiver","state","kind","f","TypeError","has","call","get","SuppressedError","STATUS_CODES_TO_RETRY","ERROR_CODES_TO_RETRY","SDKResource","config","request","path","method","baseUrlThunk","params","configThunk","fetcher","err","fhirRequest","_b","services","fhirApiUrl","fullError","isInternalClientRequest","methodParam","providedParams","Array","isArray","requestCtx","toLowerCase","fetchImpl","fetch","accessToken","_c","projectId","_d","finalPath","finalParams","subbedPath","addlParams","unusedParams","assign","replace","_","paramName","match","encodeURIComponent","unusedKeys","keys","reduce","acc","key","subParamsInPath","baseUrlEvaluated","fullBaseUrl","endsWith","url","URL","body","JSON","stringify","addParamsToSearch","searchParams","contentType","search","URLSearchParams","headers","_e","Authorization","ifMatch","requestId","_f","uuidv4","retryConfig","retries","_g","retry","_h","jitter","_j","_k","delay","_l","_m","onRetry","_o","retryOn","_q","_p","work","lastErr","attempt","from","index","isRetryable","includes","Math","floor","random","setTimeout","response","Request","toUpperCase","responseBody","responseJson","_r","_s","parse","_err","ok","status","_x","_w","_v","_u","_t","output","statusText","_0","_z","_y","entries","forEach","v","append","Application","list","bind","create","_Application_instances","_Application_baseUrlThunk","update","rotateSecret","revokeRefreshToken","revokeAccessToken","Charge","_Charge_instances","_Charge_baseUrlThunk","ENCOUNTER_VS_EXTENSION_URL","ENCOUNTER_VS_EXTENSION_RELATIVE_URL","getConversationIdFromEncounter","encounter","hasOwn","isR5Encounter","virtualService","find","vs","channelType","system","addressString","extension","virtualServiceExtension","valueString","Conversation","ext.ENCOUNTER_VS_EXTENSION_URL","ext.ENCOUNTER_VS_EXTENSION_RELATIVE_URL","ext.getConversationIdFromEncounter","_Conversation_instances","_Conversation_baseUrlThunk","getToken","addParticipant","removeParticipant","Developer","_Developer_instances","_Developer_baseUrlThunk","invite","listV2","Erx","searchAllergens","_Erx_instances","_Erx_baseUrlThunk","searchMedications","checkAllergyInteractions","checkMedicationInteractions","checkPrecheckInteractions","syncPatient","connectPractitioner","ErxV1","_ErxV1_instances","_ErxV1_baseUrlThunk","allergySearch","cancelOrder","cancelPrescription","medicationSearch","ErxV2","_ErxV2_instances","_ErxV2_baseUrlThunk","Fax","offboard","onboard","send","_Fax_instances","_Fax_baseUrlThunk","resourceType","paramMap","param","requestBundle","entry","unbundle","map","resource","filter","undefined","id","optimisticLockingVersionId","patch","operations","del","history","versionId","batchInputRequestToBundleEntryItem","baseRequest","split","query","data","Buffer","fullUrl","bundleRequest","type","input","requests","batch","transaction","formatAddress","address","options","builder","line","city","postalCode","cityStateZip","use","all","lineSeparator","trim","formatHumanName","prefix","given","family","suffix","Fhir","ext.search","ext.create","ext.get","ext.update","ext.patch","delete","ext.delete","ext.history","ext.batch","ext.transaction","ext.formatAddress","ext.formatHumanName","Lab","routeList","routeCreate","_Lab_instances","_Lab_baseUrlThunk","routeDelete","orderableItemList","orderableItemQuestionnaireGet","orderSubmit","M2m","_M2m_instances","_M2m_baseUrlThunk","Messaging","getMessagingConfig","PaymentMethod","setUp","_PaymentMethod_instances","_PaymentMethod_baseUrlThunk","setDefault","Project","_Project_instances","_Project_baseUrlThunk","Rcm","eligibilityCheck","_Rcm_instances","_Rcm_baseUrlThunk","validateProfessionalClaim","submitProfessionalClaim","Role","_Role_instances","_Role_baseUrlThunk","Secret","set","_Secret_instances","_Secret_baseUrlThunk","Telemed","createMeeting","_Telemed_instances","_Telemed_baseUrlThunk","joinMeeting","TransactionalSMS","_TransactionalSMS_instances","_TransactionalSMS_baseUrlThunk","User","me","_User_instances","_User_baseUrlThunk","Version","uploadFile","bucketName","file","uploadUrl","action","signedUrl","downloadFile","resp","arrayBuffer","getPresignedUrlForZ3Url","bucket","protocol","z3PathParts","pathname","slice","hostname","href","startsWith","httpsPathParts","requestParams","Z3","ext.uploadFile","ext.downloadFile","ext.getPresignedUrlForZ3Url","listBuckets","createBucket","_Z3_instances","_Z3_baseUrlThunk","deleteBucket","listObjects","getPresignedUrl","deleteObject","filename","Zambda","_Zambda_instances","_Zambda_baseUrlThunk","execute","executePublic","s3Upload","ZambdaLogStream","_ZambdaLogStream_instances","_ZambdaLogStream_baseUrlThunk","projectApiUrl","application","developer","m2m","messaging","conversation","transactionalSMS","paymentMethod","charge","project","rcm","erxV1","erxV2","role","secret","telemed","user","version","z3","zambda","zambdaLogStream","fax","lab","erx","fhir","Oystehr","OystehrBase","errors.OystehrFHIRError","errors.OystehrSdkError"],"mappings":"mCAGM,MAAOA,UAAwBC,MAEnC,WAAAC,EAAYC,QAAEA,EAAOC,KAAEA,EAAIC,MAAEA,IAC3BC,MAAMH,EAAS,CAAEE,UACjBE,OAAOC,eAAeC,KAAMT,EAAgBU,WAC5CD,KAAKL,KAAOA,EACZK,KAAKE,KAAO,iBACb,CACD,QAAAC,GACE,MAAO,GAAGH,KAAKE,SAASF,KAAKN,kBAAkBM,KAAKL,OACrD,CACD,MAAAS,GACE,MAAO,CACLF,KAAMF,KAAKE,KACXR,QAASM,KAAKN,QACdC,KAAMK,KAAKL,KACXC,MAAOI,KAAKJ,MAEf,EAGH,SAASS,EAAwCT,SAC/C,MAAMU,EAAS,GACf,IAAK,MAAMC,KAAwB,QAAfC,EAAAZ,EAAMW,aAAS,IAAAC,EAAAA,EAAA,GAC7BD,EAAME,SAAWF,EAAME,QAAQC,MACjCJ,EAAOK,KAAKJ,EAAME,QAAQC,MAM9B,OAHKJ,EAAOM,QACVN,EAAOK,KAAK,sBAEPL,EAAOO,KAAK,IACrB,CAEM,MAAOC,UAAyBvB,EAEpC,WAAAE,EAAYsB,MAAEA,EAAKpB,KAAEA,IACnBE,MAAM,CACJH,QAASW,EAAwCU,GACjDpB,SAEFG,OAAOC,eAAeC,KAAMc,EAAiBb,WAC7CD,KAAKJ,MAAQmB,EACbf,KAAKE,KAAO,kBACb,CACD,MAAAE,GACE,MAAO,CACLF,KAAMF,KAAKE,KACXR,QAASM,KAAKN,QACdC,KAAMK,KAAKL,KACXC,MAAOI,KAAKJ,MAEf,EC2DI,SAASoB,EAAUC,EAASC,EAAYC,EAAGC,GAE9C,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,GAAQ,CAAG,MAAOG,GAAKL,EAAOK,GAAO,CAC3F,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,GAAU,CAAC,MAAOG,GAAKL,EAAOK,GAAO,CAC9F,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,QAJ1CA,EAIyDK,EAAOL,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,EAAO,KAIhBO,KAAKR,EAAWK,EAAY,CAC9GH,GAAMN,EAAYA,EAAUa,MAAMhB,EAASC,GAAc,KAAKS,OACtE,GACA,CA2JO,SAASO,EAAuBC,EAAUC,EAAOC,EAAMC,GAC1D,GAAa,MAATD,IAAiBC,EAAG,MAAM,IAAIC,UAAU,iDAC5C,GAAqB,mBAAVH,EAAuBD,IAAaC,IAAUE,GAAKF,EAAMI,IAAIL,GAAW,MAAM,IAAII,UAAU,4EACvG,MAAgB,MAATF,EAAeC,EAAa,MAATD,EAAeC,EAAEG,KAAKN,GAAYG,EAAIA,EAAEb,MAAQW,EAAMM,IAAIP,EACxF,CAsCkD,mBAApBQ,iBAAiCA,gBCzTxD,MAEDC,EAAwB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,KAClDC,EAAuB,CAC3B,aACA,eACA,QACA,YACA,0BACA,0BACA,0BACA,wBAkCWC,EAEX,WAAArD,CAAYsD,GACV/C,KAAK+C,OAASA,CACf,CAES,OAAAC,CAAQC,EAAcC,EAAgBC,GAC9C,MAAO,CAAOC,EAAaJ,IAA6DhC,EAAAhB,UAAA,OAAA,GAAA,YACtF,MAAMqD,EAAc,IAAqBrD,KAAK+C,OAC9C,IACE,aAAaO,EAAQH,EAAcE,EAAaJ,EAAMC,EAAzCI,CAAiDF,EAAQJ,EACvE,CAAC,MAAOO,GACP,MAAMxC,EAAQwC,EACd,MAAM,IAAIhE,EAAgB,CAAEG,QAASqB,EAAMrB,QAASC,KAAMoB,EAAMpB,KAAMC,MAAOmB,EAAMnB,OACpF,CACH,GACD,CAES,WAAA4D,CAA0CP,EAAcC,GAChE,MAAO,CAAOE,EAAaJ,IAAoEhC,EAAAhB,UAAA,OAAA,GAAA,YAC7F,IACE,MAAMmD,EAAe,KAAc,IAAA3C,EAAAiD,EAAA,iBAAsB,QAAtBjD,EAAAR,KAAK+C,OAAOW,gBAAU,IAAAlD,OAAA,EAAAA,EAAAmD,0BAjEvC,6BAiEsE,EAClFN,EAAc,IAAqBrD,KAAK+C,OAE9C,aAAaO,EAAQH,EAAcE,EAAaJ,EAAMC,EAAzCI,CAAiDF,EAAQJ,EACvE,CAAC,MAAOO,GAEP,MAAMK,EAAYL,EAClB,GAAiC,iBAAtBK,EAAUlE,QACnB,MAAM,IAAIH,EAAgB,CACxBG,QAASkE,EAAUlE,QACnBC,KAAMiE,EAAUjE,KAChBC,MAAOgE,EAAUhE,QAGrB,MAAM,IAAIkB,EAAiB,CACzBC,MAAO6C,EAAUlE,QACjBC,KAAMiE,EAAUjE,MAEnB,CACH,GACD,EAUH,SAASkE,EAAwBb,GAC/B,MAAO,gBAAiBA,CAC1B,CAEA,SAASM,EACPH,EACAE,EACAJ,EACAa,GAEA,MAAO,CACLV,EACAJ,IAC4BhC,EAAAhB,UAAA,OAAA,GAAA,8CAK5B,MAAM+D,EACFX,IAAWJ,IAAYgB,MAAMC,QAAQb,IAAWS,EAAwBT,GACtE,CAAE,EACiC,QAAnC5C,EAAC4C,SAAkC,IAAA5C,EAAAA,EAAI,GACvC0D,EACFd,IAAWJ,IAAYgB,MAAMC,QAAQb,IAAWS,EAAwBT,GACrEA,EACDJ,EACAE,EAASY,EAAYK,cACrBpB,EAASM,IACTe,EAAwB,QAAZX,EAAAV,EAAOsB,aAAK,IAAAZ,EAAAA,EAAIY,MAC5BC,EAAqC,QAAvBC,EAAAL,aAAU,EAAVA,EAAYI,mBAAW,IAAAC,EAAAA,EAAIxB,EAAOuB,YAChDE,EAAqC,QAAzBC,EAAAP,aAAU,EAAVA,EAAYM,iBAAa,IAAAC,EAAAA,EAAApB,IAAcmB,UACzD,IAAIE,EAAYzB,EACZ0B,EAAcZ,EAClB,IAAKC,MAAMC,QAAQF,GAAiB,CAClC,MAAOa,EAAYC,GA+IzB,SAAyB5B,EAAcG,GACrC,MAAM0B,EAAYhF,OAAAiF,OAAA,CAAA,EAAQ3B,GAEpBwB,EAAa3B,EAAK+B,QAAQ,gBAAgB,CAACC,EAAGC,KAGlD,UAFOJ,EAAaI,GAEhBA,EAAUC,MAAM,UAClB,OAAO/B,EAAO8B,GAAa,GAG7B,IAAK9B,EAAO8B,IAAoC,KAAtB9B,EAAO8B,GAC/B,MAAM,IAAI3F,EAAgB,CAAEG,QAAS,+CAA+CwF,IAAavF,KAAM,MAGzG,OAAIyD,EAAO8B,GACFE,mBAAmBhC,EAAO8B,GAAa,IAEzC,EAAE,IAGLG,EAAavF,OAAOwF,KAAKR,GACzBD,EAAaQ,EAAWzE,OAC1ByE,EAAWE,QAAO,CAACC,EAAKC,IAAQ3F,OAAAiF,OAAAjF,OAAAiF,OAAA,CAAA,EAAMS,GAAK,CAAAC,CAACA,GAAMX,EAAaW,MAAS,IACxE,GACJ,MAAO,CAACb,EAAYC,EACtB,CAxKuCa,CAAgBzC,EAAMc,GACvDW,EAAYE,EACZD,EAAcE,CACf,CACDH,EAAYA,EAAUM,QAAQ,MAAO,IACrC,MAAMW,EAAmBxC,IACnByC,EAAcD,EAAiBE,SAAS,KAAOF,EAAmBA,EAAmB,IACrFG,EAAM,IAAIC,IAAIrB,EAAWkB,GAC/B,IAAII,EAEJ,GAAIhC,MAAMC,QAAQU,GAChBqB,EAAOC,KAAKC,UAAUvB,QACjB,GAAI7E,OAAOwF,KAAKX,GAAa/D,OAClC,GAAe,QAAXsC,EACFiD,EAAkBxB,EAAamB,EAAIM,mBAC9B,GAAgC,uCAA5BlC,aAAU,EAAVA,EAAYmC,aAAqD,CAC1E,MAAMC,EAAS,IAAIC,gBACnBJ,EAAkBxB,EAAa2B,GAC/BN,EAAOM,EAAOnG,UACf,MACC6F,EAAOC,KAAKC,UAAUvB,OAIQ,uCAA5BT,eAAAA,EAAYmC,cAAkE,SAAXnD,IACrE8C,EAAO,MAIX,MAAMQ,EAAkC1G,OAAOiF,OAC7CP,EACI,CACE,sBAAuBA,EACvB,uBAAwBA,GAE1B,GACJ,CACE,eAAuC,QAAvBiC,EAAAvC,eAAAA,EAAYmC,mBAAW,IAAAI,EAAAA,EAAI,oBAE7CnC,EAAc,CAAEoC,cAAe,UAAUpC,KAAkB,CAAA,GAC3DJ,aAAU,EAAVA,EAAYyC,SAAU,CAAE,WAAYzC,EAAWyC,SAAY,GAC3D,CAAE,uBAA6C,UAArBzC,aAAU,EAAVA,EAAY0C,iBAAS,IAAAC,EAAAA,EAAIC,SAE/CC,EAAsC,CAC1CC,QAA8B,UAAT,QAAZC,EAAAlE,EAAOmE,aAAK,IAAAD,OAAA,EAAAA,EAAED,eAAO,IAAAG,EAAAA,EAAI,EAClCC,OAA4B,UAAR,QAAZC,EAAAtE,EAAOmE,aAAK,IAAAG,OAAA,EAAAA,EAAED,cAAM,IAAAE,EAAAA,EAAI,GAChCC,MAA0B,UAAP,QAAZC,EAAAzE,EAAOmE,aAAK,IAAAM,OAAA,EAAAA,EAAED,aAAK,IAAAE,EAAAA,EAAI,IAC9BC,gBAASC,EAAA5E,EAAOmE,4BAAOQ,QAEvBE,QAAS,IAA8B,QAAzBC,EAAY,UAAZ9E,EAAOmE,aAAK,IAAAY,OAAA,EAAAA,EAAEF,eAAW,IAAAC,EAAAA,EAAA,MAAQjF,IAGjD,OADAmE,EAAYa,QAAQjH,QAAQiC,GAiDhC,SAAwBmF,EAAuChF,oDAC7D,IAAIiF,EACJ,IAAK,MAAMC,KAAWjE,MAAMkE,KAAK,CAAEtH,QAA2B,QAAlBJ,EAAAuC,EAAOiE,eAAW,IAAAxG,EAAAA,EAAA,GAAK,IAAK,CAACyE,EAAGkD,IAAUA,IACpF,IACE,aAAaJ,EAAKE,EACnB,CAAC,MAAOrG,GACP,IAAIwG,GAAc,EAClB,GAAI,aAAcxG,EAAG,CAEnB,MAAM2B,EAAM3B,EACZwG,EAAcrF,EAAO6E,QAAQS,SAAS9E,EAAI5D,MAE1CqI,EAAU,CAAEtI,QAASkC,EAAElC,QAASC,KAAMiC,EAAEjC,KACzC,MAGC,GAFAqI,EAAUpG,EAEN,SAAUA,GAAuB,iBAAXA,EAAEjC,KAAmB,CAC7C,MAAM4D,EAAM3B,EACZwG,EAAcvF,EAAqBwF,SAAS9E,EAAI5D,KACjD,CAEH,IAAKyI,EACH,MAEF,MAAMhB,EAASkB,KAAKC,MAAMD,KAAKE,UAAYzF,EAAOqE,OAAS,UACrD,IAAI/F,SAASC,GAAYmH,WAAWnH,EAASyB,EAAOwE,MAAQH,KAC9DrE,EAAO2E,SAAWO,KAA+B,QAAlBxE,EAAAV,EAAOiE,eAAW,IAAAvD,EAAAA,EAAA,IACnDV,EAAO2E,QAAQO,EAAU,EAE5B,CAEH,MAAMD,IACP,CAhFUd,EAAM,IAAWlG,EAAAhB,UAAA,OAAA,GAAA,oCACtB,MAAM0I,QAAiBtE,EACrB,IAAIuE,QAAQ7C,EAAK,CACf5C,OAAQA,EAAO0F,cACf5C,OACAQ,aAGEqC,EAAeH,EAAS1C,WAAa0C,EAAShI,OAAS,KAC7D,IAAIoI,EACJ,IACEA,EACED,KACqC,QAApCE,EAAAL,EAASlC,QAAQ9D,IAAI,uBAAe,IAAAqG,OAAA,EAAAA,EAAEV,SAAS,uBACV,QAApCW,EAAAN,EAASlC,QAAQ9D,IAAI,uBAAe,IAAAsG,OAAA,EAAAA,EAAEX,SAAS,2BAC7CpC,KAAKgD,MAAMJ,GACX,IACP,CAAC,MAAOK,GAEPJ,EAAe,IAChB,CAED,IADiBJ,EAASS,IAAMT,EAASU,QAAU,IACtC,CAcX,KAbe,CACb1J,QAKE,QAJA2J,EAGA,QAHAC,EAEA,QAFAC,EACA,QADAC,EAAmD,QAAnDC,EAACX,aAAY,EAAZA,EAAcY,cAAoC,IAAAD,OAAA,EAAAA,EAAA/J,eACnD,IAAA8J,EAAAA,EAAAV,aAAA,EAAAA,EAAcpJ,eACd,IAAA6J,EAAAA,EAAAT,SACA,IAAAQ,EAAAA,EAAAT,SACA,IAAAQ,EAAAA,EAAAX,EAASiB,WACXhK,KAEoB,QADlBiK,EACA,QADAC,EAAiD,QAAhDC,EAAAhB,aAAY,EAAZA,EAAcY,cAAkC,IAAAI,OAAA,EAAAA,EAAEnK,YACnD,IAAAkK,EAAAA,EAAAf,aAAA,EAAAA,EAAcnJ,YAAI,IAAAiK,EAAAA,EAClBlB,EAASU,OACXV,WAGH,CACD,OAAOI,CACT,KAAG/B,EACL,GACF,CAkFgB,SAAAZ,EAAkB/C,EAAiCkD,GACjE,IAAK,MAAOb,EAAKhE,KAAU3B,OAAOiK,QAAQ3G,GACpCY,MAAMC,QAAQxC,GAChBA,EAAMuI,SAASC,GAAM3D,EAAO4D,OAAOzE,EAAKwE,KAG1C3D,EAAO4D,OAAOzE,EAAKhE,EAEvB,aCzSM,MAAO0I,UAAoBrH,EAC/B,WAAArD,CAAYsD,GACVlD,MAAMkD,cACP,CAUD,IAAAqH,CAAKpH,GACH,OAAOhD,KAAKgD,QAAQ,eAAgB,MAAOd,EAAAlC,cAAmBqK,KAAKrK,MAA5DA,CAAmEgD,EAC3E,CAOD,MAAAsH,CAAOlH,EAAiCJ,GACtC,OAAOhD,KAAKgD,QAAQ,eAAgB,OAAQd,EAAAlC,KAAIuK,EAAA,IAAAC,GAAeH,KAAKrK,MAA7DA,CAAoEoD,EAAQJ,EACpF,CAOD,GAAAN,CAAIU,EAA8BJ,GAChC,OAAOhD,KAAKgD,QAAQ,oBAAqB,MAAOd,EAAAlC,KAAIuK,EAAA,IAAAC,GAAeH,KAAKrK,MAAjEA,CAAwEoD,EAAQJ,EACxF,CAOD,MAAAyH,CAAOrH,EAAiCJ,GACtC,OAAOhD,KAAKgD,QAAQ,oBAAqB,QAASd,EAAAlC,KAAIuK,EAAA,IAAAC,GAAeH,KAAKrK,MAAnEA,CAA0EoD,EAAQJ,EAC1F,CAOD,OAAOI,EAAiCJ,GACtC,OAAOhD,KAAKgD,QAAQ,oBAAqB,SAAUd,EAAAlC,KAAIuK,EAAA,IAAAC,GAAeH,KAAKrK,MAApEA,CAA2EoD,EAAQJ,EAC3F,CAOD,YAAA0H,CACEtH,EACAJ,GAEA,OAAOhD,KAAKgD,QAAQ,kCAAmC,OAAQd,EAAAlC,KAAIuK,EAAA,IAAAC,GAAeH,KAAKrK,MAAhFA,CAAuFoD,EAAQJ,EACvG,CAOD,kBAAA2H,CACEvH,EACAJ,GAEA,OAAOhD,KAAKgD,QACV,yCACA,OACAd,EAAAlC,KAAIuK,EAAA,IAAAC,GAAeH,KAAKrK,MAHnBA,CAILoD,EAAQJ,EACX,CAOD,iBAAA4H,CACExH,EACAJ,GAEA,OAAOhD,KAAKgD,QACV,wCACA,OACAd,EAAAlC,KAAIuK,EAAA,IAAAC,GAAeH,KAAKrK,MAHnBA,CAILoD,EAAQJ,EACX,qCA1FC,OAAkD,QAA3CS,EAAoB,QAApBjD,EAAAR,KAAK+C,OAAOW,gBAAQ,IAAAlD,OAAA,EAAAA,EAAkB,qBAAK,IAAAiD,EAAAA,EAAA,mCACpD,ECtBI,MAAOoH,UAAe/H,EAC1B,WAAArD,CAAYsD,GACVlD,MAAMkD,cACP,CAeD,KAAAxC,CAAM6C,EAA2BJ,GAC/B,OAAOhD,KAAKgD,QAAQ,wBAAyB,OAAQd,EAAAlC,KAAI8K,EAAA,IAAAC,GAAeV,KAAKrK,MAAtEA,CAA6EoD,EAAQJ,EAC7F,CAYD,MAAAoG,CAAOhG,EAA4BJ,GACjC,OAAOhD,KAAKgD,QAAQ,yBAA0B,OAAQd,EAAAlC,KAAI8K,EAAA,IAAAC,GAAeV,KAAKrK,MAAvEA,CAA8EoD,EAAQJ,EAC9F,qCA7BC,OAAkD,QAA3CS,EAAoB,QAApBjD,EAAAR,KAAK+C,OAAOW,gBAAQ,IAAAlD,OAAA,EAAAA,EAAkB,qBAAK,IAAAiD,EAAAA,EAAA,mCACpD,ECTK,MAAMuH,EAA6B,2EAC7BC,EAAsC,gBAY7C,SAAUC,EAA+BC,aAC7C,GAVF,SAAuBA,GACrB,OAAOrL,OAAOsL,OAAOD,EAA0B,iBACjD,CAQME,CAAcF,GAAY,CAC5B,MAAMG,EAAyC,QAAxB9K,EAAA2K,EAAUG,sBAAc,IAAA9K,OAAA,EAAAA,EAAE+K,MAC9CC,IAAO,IAAAhL,EAAA,MAdqB,kDAcP,QAAdA,EAAAgL,EAAGC,mBAAW,IAAAjL,OAAA,EAAAA,EAAEkL,OAAqC,IAE/D,OAAOJ,eAAAA,EAAgBK,aACxB,CACD,IAAKR,EAAUS,UAAW,OAC1B,MAAMC,EAA0BV,EAAUS,UAAUL,MAAMK,GAAcA,EAAU9F,MAAQkF,IAC1F,KAAKa,aAAA,EAAAA,EAAyBD,WAAW,OAIzC,OADG,QAFoBrH,EAAmC,QAAnCd,EAAAoI,EAAwBD,iBAAW,IAAAnI,OAAA,EAAAA,EAAA8H,MACvDK,GAAcA,EAAU9F,MAAQmF,WAChC,IAAA1G,OAAA,EAAAA,EAAAuH,WAEL,6BCfM,MAAOC,UAAqBjJ,EAChC,WAAArD,CAAYsD,GACVlD,MAAMkD,eAKR/C,KAAAgL,2BAA6BgB,EAC7BhM,KAAAiL,oCAAsCgB,EAMtCjM,KAAAkL,+BAAiCgB,CAXhC,CAuBD,MAAA5B,CAAOlH,EAAkCJ,GACvC,OAAOhD,KAAKgD,QAAQ,0BAA2B,OAAQd,EAAAlC,KAAImM,EAAA,IAAAC,GAAe/B,KAAKrK,MAAxEA,CAA+EoD,EAAQJ,EAC/F,CAOD,QAAAqJ,CAASrJ,GACP,OAAOhD,KAAKgD,QAAQ,gCAAiC,MAAOd,EAAAlC,cAAmBqK,KAAKrK,MAA7EA,CAAoFgD,EAC5F,CAYD,cAAAsJ,CAAelJ,EAA0CJ,GACvD,OAAOhD,KAAKgD,QACV,uDACA,OACAd,EAAAlC,KAAImM,EAAA,IAAAC,GAAe/B,KAAKrK,MAHnBA,CAILoD,EAAQJ,EACX,CAUD,iBAAAuJ,CAAkBnJ,EAA6CJ,GAC7D,OAAOhD,KAAKgD,QACV,uDACA,SACAd,EAAAlC,KAAImM,EAAA,IAAAC,GAAe/B,KAAKrK,MAHnBA,CAILoD,EAAQJ,EACX,CAQD,OAAAtD,CAAQ0D,EAAmCJ,GACzC,OAAOhD,KAAKgD,QACV,mDACA,OACAd,EAAAlC,KAAImM,EAAA,IAAAC,GAAe/B,KAAKrK,MAHnBA,CAILoD,EAAQJ,EACX,qCAhFC,OAAkD,QAA3CS,EAAoB,QAApBjD,EAAAR,KAAK+C,OAAOW,gBAAQ,IAAAlD,OAAA,EAAAA,EAAkB,qBAAK,IAAAiD,EAAAA,EAAA,mCACpD,ECHI,MAAO+I,UAAkB1J,EAC7B,WAAArD,CAAYsD,GACVlD,MAAMkD,cACP,CAUD,GAAAL,CAAIU,EAA4BJ,GAC9B,OAAOhD,KAAKgD,QAAQ,kBAAmB,MAAOd,EAAAlC,KAAIyM,EAAA,IAAAC,GAAerC,KAAKrK,MAA/DA,CAAsEoD,EAAQJ,EACtF,CAOD,MAAAyH,CAAOrH,EAA+BJ,GACpC,OAAOhD,KAAKgD,QAAQ,kBAAmB,QAASd,EAAAlC,KAAIyM,EAAA,IAAAC,GAAerC,KAAKrK,MAAjEA,CAAwEoD,EAAQJ,EACxF,CAOD,OAAOI,EAA+BJ,GACpC,OAAOhD,KAAKgD,QAAQ,kBAAmB,SAAUd,EAAAlC,KAAIyM,EAAA,IAAAC,GAAerC,KAAKrK,MAAlEA,CAAyEoD,EAAQJ,EACzF,CAOD,MAAA2J,CAAOvJ,EAA+BJ,GACpC,OAAOhD,KAAKgD,QAAQ,oBAAqB,OAAQd,EAAAlC,KAAIyM,EAAA,IAAAC,GAAerC,KAAKrK,MAAlEA,CAAyEoD,EAAQJ,EACzF,CASD,IAAAoH,CAAKpH,GACH,OAAOhD,KAAKgD,QAAQ,aAAc,MAAOd,EAAAlC,cAAmBqK,KAAKrK,MAA1DA,CAAiEgD,EACzE,CAqBD,MAAA4J,CACExJ,EACAJ,GAEA,OAAOhD,KAAKgD,QAAQ,qBAAsB,MAAOd,EAAAlC,KAAIyM,EAAA,IAAAC,GAAerC,KAAKrK,MAAlEA,CAAyEoD,EAAQJ,EACzF,qCA1EC,OAAkD,QAA3CS,EAAoB,QAApBjD,EAAAR,KAAK+C,OAAOW,gBAAQ,IAAAlD,OAAA,EAAAA,EAAkB,qBAAK,IAAAiD,EAAAA,EAAA,mCACpD,ECHI,MAAOoJ,UAAY/J,EACvB,WAAArD,CAAYsD,GACVlD,MAAMkD,cACP,CAOD,eAAA+J,CACE1J,EACAJ,GAEA,OAAOhD,KAAKgD,QAAQ,YAAa,MAAOd,EAAAlC,KAAI+M,EAAA,IAAAC,GAAe3C,KAAKrK,MAAzDA,CAAgEoD,EAAQJ,EAChF,CAID,iBAAAiK,CACE7J,EACAJ,GAEA,OAAOhD,KAAKgD,QAAQ,cAAe,MAAOd,EAAAlC,KAAI+M,EAAA,IAAAC,GAAe3C,KAAKrK,MAA3DA,CAAkEoD,EAAQJ,EAClF,CAID,wBAAAkK,CACE9J,EACAJ,GAEA,OAAOhD,KAAKgD,QACV,4CACA,MACAd,EAAAlC,KAAI+M,EAAA,IAAAC,GAAe3C,KAAKrK,MAHnBA,CAILoD,EAAQJ,EACX,CAID,2BAAAmK,CACE/J,EACAJ,GAEA,OAAOhD,KAAKgD,QACV,+CACA,MACAd,EAAAlC,KAAI+M,EAAA,IAAAC,GAAe3C,KAAKrK,MAHnBA,CAILoD,EAAQJ,EACX,CAID,yBAAAoK,CACEhK,EACAJ,GAEA,OAAOhD,KAAKgD,QACV,sDACA,MACAd,EAAAlC,KAAI+M,EAAA,IAAAC,GAAe3C,KAAKrK,MAHnBA,CAILoD,EAAQJ,EACX,CAID,WAAAqK,CAAYjK,EAA8BJ,GACxC,OAAOhD,KAAKgD,QAAQ,4BAA6B,OAAQd,EAAAlC,KAAI+M,EAAA,IAAAC,GAAe3C,KAAKrK,MAA1EA,CAAiFoD,EAAQJ,EACjG,CAeD,mBAAAsK,CACElK,EACAJ,GAEA,OAAOhD,KAAKgD,QAAQ,wBAAyB,MAAOd,EAAAlC,KAAI+M,EAAA,IAAAC,GAAe3C,KAAKrK,MAArEA,CAA4EoD,EAAQJ,EAC5F,qCApFC,OAA8C,QAAvCS,EAAoB,QAApBjD,EAAAR,KAAK+C,OAAOW,gBAAQ,IAAAlD,OAAA,EAAAA,EAAc,iBAAK,IAAAiD,EAAAA,EAAA,+BAChD,ECTI,MAAO8J,UAAczK,EACzB,WAAArD,CAAYsD,GACVlD,MAAMkD,cACP,CAOD,WAAAsK,CAAYjK,EAAgCJ,GAC1C,OAAOhD,KAAKgD,QAAQ,gCAAiC,OAAQd,EAAAlC,KAAIwN,EAAA,IAAAC,GAAepD,KAAKrK,MAA9EA,CAAqFoD,EAAQJ,EACrG,CAID,aAAA0K,CAActK,EAAkCJ,GAC9C,OAAOhD,KAAKgD,QAAQ,sBAAuB,MAAOd,EAAAlC,KAAIwN,EAAA,IAAAC,GAAepD,KAAKrK,MAAnEA,CAA0EoD,EAAQJ,EAC1F,CAID,WAAA2K,CAAYvK,EAAgCJ,GAC1C,OAAOhD,KAAKgD,QAAQ,oBAAqB,OAAQd,EAAAlC,KAAIwN,EAAA,IAAAC,GAAepD,KAAKrK,MAAlEA,CAAyEoD,EAAQJ,EACzF,CAID,kBAAA4K,CACExK,EACAJ,GAEA,OAAOhD,KAAKgD,QAAQ,2BAA4B,OAAQd,EAAAlC,KAAIwN,EAAA,IAAAC,GAAepD,KAAKrK,MAAzEA,CAAgFoD,EAAQJ,EAChG,CAeD,gBAAA6K,CACEzK,EACAJ,GAEA,OAAOhD,KAAKgD,QAAQ,yBAA0B,MAAOd,EAAAlC,KAAIwN,EAAA,IAAAC,GAAepD,KAAKrK,MAAtEA,CAA6EoD,EAAQJ,EAC7F,qCAhDC,OAAkD,QAA3CS,EAAoB,QAApBjD,EAAAR,KAAK+C,OAAOW,gBAAQ,IAAAlD,OAAA,EAAAA,EAAkB,qBAAK,IAAAiD,EAAAA,EAAA,mCACpD,EClBI,MAAOqK,UAAchL,EACzB,WAAArD,CAAYsD,GACVlD,MAAMkD,cACP,CAkBD,gBAAA8K,CACEzK,EACAJ,GAEA,OAAOhD,KAAKgD,QAAQ,4BAA6B,MAAOd,EAAAlC,KAAI+N,EAAA,IAAAC,GAAe3D,KAAKrK,MAAzEA,CAAgFoD,EAAQJ,EAChG,qCArBC,OAAkD,QAA3CS,EAAoB,QAApBjD,EAAAR,KAAK+C,OAAOW,gBAAQ,IAAAlD,OAAA,EAAAA,EAAkB,qBAAK,IAAAiD,EAAAA,EAAA,mCACpD,ECNI,MAAOwK,UAAYnL,EACvB,WAAArD,CAAYsD,GACVlD,MAAMkD,cACP,CAWD,QAAAmL,CAASlL,GACP,OAAOhD,KAAKgD,QAAQ,YAAa,OAAQd,EAAAlC,cAAmBqK,KAAKrK,MAA1DA,CAAiEgD,EACzE,CAQD,OAAAmL,CAAQnL,GACN,OAAOhD,KAAKgD,QAAQ,WAAY,OAAQd,EAAAlC,cAAmBqK,KAAKrK,MAAzDA,CAAgEgD,EACxE,CAQD,IAAAoL,CAAKhL,EAAuBJ,GAC1B,OAAOhD,KAAKgD,QAAQ,QAAS,OAAQd,EAAAlC,KAAIqO,EAAA,IAAAC,GAAejE,KAAKrK,MAAtDA,CAA6DoD,EAAQJ,EAC7E,ECCmB,SAAAsD,EAEpBlD,EACAJ,4CAEA,MAAMuL,aAAEA,EAAcnL,OAAQgD,GAAiBhD,EAC/C,IAAIoL,EACApI,IACFoI,EAAW1O,OAAOiK,QAAQ3D,GAAcb,QAAO,CAACC,GAAMP,EAAGwJ,MAClDjJ,EAAIiJ,EAAMvO,QACbsF,EAAIiJ,EAAMvO,MAAQ,IAEpBsF,EAAIiJ,EAAMvO,MAAMS,KAAK8N,EAAMhN,OACpB+D,IACN,CAAyC,IAE9C,MAAMkJ,QAAsB1O,KAAKwD,YAA2B,IAAI+K,YAAwB,OAA5DvO,CAAoEwO,EAC3F1O,OAAAiF,OAAAjF,OAAAiF,OAAA,CAAA,EAAA/B,IACHqD,YAAa,uCASf,OANKvG,OAAAiF,OAAAjF,OAAAiF,OAAA,CAAA,EAAA2J,GACH,CAAAC,MAAOD,EAAcC,MACrBC,SAAU,mBACR,OAAoG,QAA7FnL,EAAU,QAAVjD,EAAAR,KAAK2O,aAAK,IAAAnO,OAAA,EAAAA,EAAEqO,KAAKF,GAAUA,EAAMG,WAAUC,QAAQJ,QAAgCK,IAAVL,WAAoB,IAAAlL,EAAAA,EAAI,EACzG,MAGJ,CAEqB,SAAA6G,EAEpBlH,EACAJ,4CAEA,MAAMuL,aAAEA,GAAiBnL,EACzB,OAAOpD,KAAKwD,YAAY,IAAI+K,IAAgB,OAArCvO,CAA6CoD,EAA8CJ,KACnG,CAEK,SAAgBN,GAEpB6L,aAAEA,EAAYU,GAAEA,GAChBjM,4CAEA,OAAOhD,KAAKwD,YAAe,IAAI+K,KAAgBU,IAAM,MAA9CjP,CAAqD,CAAE,EAAEgD,KACjE,CAEqB,SAAAyH,EAEpBrH,EACAJ,4CAEA,MAAMiM,GAAEA,EAAEV,aAAEA,GAAiBnL,EAC7B,OAAOpD,KAAKwD,YAAY,IAAI+K,KAAgBU,IAAM,MAA3CjP,CAAkDoD,iCACpDJ,GAAO,CACV2D,SAAS3D,aAAA,EAAAA,EAASkM,4BAA6B,MAAMlM,EAAQkM,mCAAgCF,OAEhG,CAEK,SAAgBG,GAEpBZ,aAAEA,EAAYU,GAAEA,EAAEG,WAAEA,GACpBpM,4CAEA,OAAOhD,KAAKwD,YAAY,IAAI+K,KAAgBU,IAAM,QAA3CjP,CAAoDoP,EACtDtP,OAAAiF,OAAAjF,OAAAiF,OAAA,CAAA,EAAA/B,IACHqD,YAAa,8BACbM,SAAS3D,aAAO,EAAPA,EAASkM,4BAA6B,MAAMlM,EAAQkM,mCAAgCF,OAEhG,CAED,SAAeK,GAEbd,aAAEA,EAAYU,GAAEA,GAChBjM,4CAEA,OAAOhD,KAAKwD,YAAY,IAAI+K,KAAgBU,IAAM,SAA3CjP,CAAqD,CAAE,EAAEgD,KACjE,CAaK,SAAgBsM,GAEpBf,aAAEA,EAAYU,GAAEA,EAAEM,UAAEA,GACpBvM,4CAEA,OAAOhD,KAAKwD,YAAY,IAAI+K,KAAgBU,aAAcM,EAAY,IAAIA,IAAc,KAAM,MAAvFvP,CAA8F,CAAA,EAAIgD,KAC1G,CAED,SAASwM,EACPxM,GAEA,MAAME,OAAEA,EAAM4C,IAAEA,GAAQ9C,EAClByM,EAAc,CAClBzM,QAAS,CACPE,SACA4C,QAKJ,GAAIA,EAAI4J,MAAM,KAAK9O,OAAS,EAAG,CAC7B,MAAOkO,EAAUa,GAAS7J,EAAI4J,MAAM,KAC9BtM,EAASuM,EACZD,MAAM,KACNb,KAAKJ,IACJ,MAAOvO,EAAMuB,GAASgN,EAAMiB,MAAM,KAClC,MAAO,CAAExP,OAAMuB,QAAO,IAEvB8D,QAAO,CAACC,GAAOtF,OAAMuB,WACfvB,GAGAsF,EAAItF,KACPsF,EAAItF,GAAQ,IAEdsF,EAAItF,GAAMS,KAAKc,GACR+D,GANEA,GAOR,CAA8B,GAC7Bc,EAAS,IAAIC,gBACnBJ,EAAkB/C,EAAQkD,GAC1BmJ,EAAYzM,QAAQ8C,IAAM,GAAGgJ,KAAYxI,EAAOnG,YACjD,CAGD,GAAI,CAAC,MAAO,SAAU,QAAQkI,SAASnF,GACrC,OAAOuM,EAIT,GAAe,QAAXvM,EAAkB,CACpB,MAAM4L,SAAEA,GAAa9L,EACrB,OAAOlD,+BACF2P,GAAW,CACdX,SAAUA,GAEb,CAGD,GAAe,UAAX5L,EACF,MAAI,aAAcF,EACTlD,OAAAiF,OAAAjF,OAAAiF,OAAA,CAAA,EACF0K,GACH,CAAAX,SAAU9L,EAAQ8L,WAGfhP,OACFiF,OAAAjF,OAAAiF,OAAA,CAAA,EAAA0K,GACH,CAAAX,SAAU,CACRP,aAAc,SACdlI,YAAa,8BACbuJ,KAAMC,OAAO3H,KAAKjC,KAAKC,UAAUlD,EAAQoM,YAAa,QAAQjP,SAAS,aAM7E,GAAe,SAAX+C,EAAmB,CACrB,MAAM4L,SAAEA,EAAQgB,QAAEA,GAAY9M,EAC9B,OAAOlD,OAAAiF,OAAAjF,OAAAiF,OAAA,CAAA,EACF0K,GACH,CAAAX,SAAUA,EACVgB,WAEH,CACD,MAAM,IAAItQ,MAAM,sBAClB,CAEA,SAASuQ,EAAcC,GACrB,OAAO,SAELC,EACAjN,4CAEA,OAAOhD,KAAKwD,YAAY,IAAK,OAAtBxD,CACL,CACEuO,aAAc,SACdyB,OACArB,MAAOsB,EAAMC,SAASrB,IAAIW,IAE5BxM,MAGN,oCDhOI,OAA8C,QAAvCS,EAAoB,QAApBjD,EAAAR,KAAK+C,OAAOW,gBAAQ,IAAAlD,OAAA,EAAAA,EAAc,iBAAK,IAAAiD,EAAAA,EAAA,+BAChD,ECiOK,MAAM0M,EAAQJ,EAAc,SACtBK,EAAcL,EAAc,eAEzB,SAAAM,EACdC,EACAC,GAEA,MAAMC,EAAU,GAMhB,GAJIF,EAAQG,MACVD,EAAQ7P,QAAQ2P,EAAQG,MAGtBH,EAAQI,MAAQJ,EAAQlO,OAASkO,EAAQK,WAAY,CACvD,MAAMC,EAAe,GACjBN,EAAQI,MACVE,EAAajQ,KAAK2P,EAAQI,MAExBJ,EAAQlO,OACVwO,EAAajQ,KAAK2P,EAAQlO,OAExBkO,EAAQK,YACVC,EAAajQ,KAAK2P,EAAQK,YAE5BH,EAAQ7P,KAAKiQ,EAAa/P,KAAK,MAChC,CAMD,OAJIyP,EAAQO,OAAQN,aAAA,EAAAA,EAASO,OAAOP,aAAO,EAAPA,EAASM,OAC3CL,EAAQ7P,KAAK,IAAM2P,EAAQO,IAAM,KAG5BL,EAAQ3P,MAAK0P,aAAO,EAAPA,EAASQ,gBAAiB,MAAMC,MACtD,CAEgB,SAAAC,EACd/Q,EACAqQ,GAOA,MAAMC,EAAU,GAsBhB,OApBItQ,EAAKgR,SAA8B,KAApBX,aAAO,EAAPA,EAASW,SAC1BV,EAAQ7P,QAAQT,EAAKgR,QAGnBhR,EAAKiR,OACPX,EAAQ7P,QAAQT,EAAKiR,OAGnBjR,EAAKkR,QACPZ,EAAQ7P,KAAKT,EAAKkR,QAGhBlR,EAAKmR,SAA8B,KAApBd,aAAO,EAAPA,EAASc,SAC1Bb,EAAQ7P,QAAQT,EAAKmR,QAGnBnR,EAAK2Q,OAAQN,aAAA,EAAAA,EAASO,OAAOP,aAAO,EAAPA,EAASM,OACxCL,EAAQ7P,KAAK,IAAMT,EAAK2Q,IAAM,KAGzBL,EAAQ3P,KAAK,KAAKmQ,MAC3B,gGCzSM,MAAOM,WAAaxO,EACxB,WAAArD,CAAYsD,GACVlD,MAAMkD,eAWR/C,KAAAsG,OAASiL,EACTvR,KAAAsK,OAASkH,EACTxR,KAAA0C,IAAM+O,EACNzR,KAAAyK,OAASiH,EACT1R,KAAAmP,MAAQwC,EACR3R,KAAA4R,OAASC,EACT7R,KAAAsP,QAAUwC,EACV9R,KAAAmQ,MAAQ4B,EACR/R,KAAAoQ,YAAc4B,EACdhS,KAAAqQ,cAAgB4B,EAChBjS,KAAAiR,gBAAkBiB,CApBjB,gBCOG,MAAOC,WAAYrP,EACvB,WAAArD,CAAYsD,GACVlD,MAAMkD,cACP,CAWD,SAAAqP,CAAUpP,GACR,OAAOhD,KAAKgD,QAAQ,SAAU,MAAOd,EAAAlC,eAAmBqK,KAAKrK,MAAtDA,CAA6DgD,EACrE,CAQD,WAAAqP,CAAYjP,EAA8BJ,GACxC,OAAOhD,KAAKgD,QAAQ,SAAU,OAAQd,EAAAlC,KAAIsS,EAAA,IAAAC,IAAelI,KAAKrK,MAAvDA,CAA8DoD,EAAQJ,EAC9E,CAQD,WAAAwP,CAAYpP,EAA8BJ,GACxC,OAAOhD,KAAKgD,QAAQ,qBAAsB,SAAUd,EAAAlC,KAAIsS,EAAA,IAAAC,IAAelI,KAAKrK,MAArEA,CAA4EoD,EAAQJ,EAC5F,CA2BD,iBAAAyP,CACErP,EACAJ,GAEA,OAAOhD,KAAKgD,QAAQ,iBAAkB,MAAOd,EAAAlC,KAAIsS,EAAA,IAAAC,IAAelI,KAAKrK,MAA9DA,CAAqEoD,EAAQJ,EACrF,CAQD,6BAAA0P,CACEtP,EACAJ,GAEA,OAAOhD,KAAKgD,QACV,sGACA,MACAd,EAAAlC,KAAIsS,EAAA,IAAAC,IAAelI,KAAKrK,MAHnBA,CAILoD,EAAQJ,EACX,CAQD,WAAA2P,CAAYvP,EAA8BJ,GACxC,OAAOhD,KAAKgD,QAAQ,UAAW,OAAQd,EAAAlC,KAAIsS,EAAA,IAAAC,IAAelI,KAAKrK,MAAxDA,CAA+DoD,EAAQJ,EAC/E,sCA1FC,OAA8C,QAAvCS,EAAoB,QAApBjD,EAAAR,KAAK+C,OAAOW,gBAAQ,IAAAlD,OAAA,EAAAA,EAAc,iBAAK,IAAAiD,EAAAA,EAAA,gCAChD,ECFI,MAAOmP,WAAY9P,EACvB,WAAArD,CAAYsD,GACVlD,MAAMkD,eACP,CAYD,IAAAqH,CAAKpH,GACH,OAAOhD,KAAKgD,QAAQ,OAAQ,MAAOd,EAAAlC,gBAAmBqK,KAAKrK,MAApDA,CAA2DgD,EACnE,CAOD,MAAAsH,CAAOlH,EAAyBJ,GAC9B,OAAOhD,KAAKgD,QAAQ,OAAQ,OAAQd,EAAAlC,KAAI6S,GAAA,IAAAC,IAAezI,KAAKrK,MAArDA,CAA4DoD,EAAQJ,EAC5E,CAOD,GAAAN,CAAIU,EAAsBJ,GACxB,OAAOhD,KAAKgD,QAAQ,YAAa,MAAOd,EAAAlC,KAAI6S,GAAA,IAAAC,IAAezI,KAAKrK,MAAzDA,CAAgEoD,EAAQJ,EAChF,CAOD,MAAAyH,CAAOrH,EAAyBJ,GAC9B,OAAOhD,KAAKgD,QAAQ,YAAa,QAASd,EAAAlC,KAAI6S,GAAA,IAAAC,IAAezI,KAAKrK,MAA3DA,CAAkEoD,EAAQJ,EAClF,CAOD,OAAOI,EAAyBJ,GAC9B,OAAOhD,KAAKgD,QAAQ,YAAa,SAAUd,EAAAlC,KAAI6S,GAAA,IAAAC,IAAezI,KAAKrK,MAA5DA,CAAmEoD,EAAQJ,EACnF,CAOD,YAAA0H,CAAatH,EAA+BJ,GAC1C,OAAOhD,KAAKgD,QAAQ,0BAA2B,OAAQd,EAAAlC,KAAI6S,GAAA,IAAAC,IAAezI,KAAKrK,MAAxEA,CAA+EoD,EAAQJ,EAC/F,CAqBD,MAAA4J,CAAOxJ,EAAiDJ,GACtD,OAAOhD,KAAKgD,QAAQ,eAAgB,MAAOd,EAAAlC,KAAI6S,GAAA,IAAAC,IAAezI,KAAKrK,MAA5DA,CAAmEoD,EAAQJ,EACnF,uCAhFC,OAAkD,QAA3CS,EAAoB,QAApBjD,EAAAR,KAAK+C,OAAOW,gBAAQ,IAAAlD,OAAA,EAAAA,EAAkB,qBAAK,IAAAiD,EAAAA,EAAA,mCACpD,ECpBI,MAAOsP,WAAkBjQ,EAC7B,WAAArD,CAAYsD,GACVlD,MAAMkD,eACP,CAOD,kBAAAiQ,CAAmBhQ,GACjB,OAAOhD,KAAKgD,QAAQ,oBAAqB,MAAOd,EAAAlC,gBAAmBqK,KAAKrK,MAAjEA,CAAwEgD,EAChF,uCAPC,OAAkD,QAA3CS,EAAoB,QAApBjD,EAAAR,KAAK+C,OAAOW,gBAAQ,IAAAlD,OAAA,EAAAA,EAAkB,qBAAK,IAAAiD,EAAAA,EAAA,mCACpD,ECEI,MAAOwP,WAAsBnQ,EACjC,WAAArD,CAAYsD,GACVlD,MAAMkD,eACP,CAmBD,KAAAmQ,CAAM9P,EAAkCJ,GACtC,OAAOhD,KAAKgD,QAAQ,gCAAiC,OAAQd,EAAAlC,KAAImT,GAAA,IAAAC,IAAe/I,KAAKrK,MAA9EA,CAAqFoD,EAAQJ,EACrG,CAgBD,UAAAqQ,CAAWjQ,EAAuCJ,GAChD,OAAOhD,KAAKgD,QAAQ,sCAAuC,OAAQd,EAAAlC,KAAImT,GAAA,IAAAC,IAAe/I,KAAKrK,MAApFA,CAA2FoD,EAAQJ,EAC3G,CAgBD,OAAOI,EAAmCJ,GACxC,OAAOhD,KAAKgD,QAAQ,0BAA2B,SAAUd,EAAAlC,KAAImT,GAAA,IAAAC,IAAe/I,KAAKrK,MAA1EA,CAAiFoD,EAAQJ,EACjG,CAgBD,IAAAoH,CAAKhH,EAAiCJ,GACpC,OAAOhD,KAAKgD,QAAQ,+BAAgC,OAAQd,EAAAlC,KAAImT,GAAA,IAAAC,IAAe/I,KAAKrK,MAA7EA,CAAoFoD,EAAQJ,EACpG,uCAzEC,OAAkD,QAA3CS,EAAoB,QAApBjD,EAAAR,KAAK+C,OAAOW,gBAAQ,IAAAlD,OAAA,EAAAA,EAAkB,qBAAK,IAAAiD,EAAAA,EAAA,mCACpD,ECdI,MAAO6P,WAAgBxQ,EAC3B,WAAArD,CAAYsD,GACVlD,MAAMkD,eACP,CAUD,GAAAL,CAAIM,GACF,OAAOhD,KAAKgD,QAAQ,WAAY,MAAOd,EAAAlC,gBAAmBqK,KAAKrK,MAAxDA,CAA+DgD,EACvE,CAqBD,MAAAyH,CACErH,EACAJ,GAEA,OAAOhD,KAAKgD,QAAQ,WAAY,QAASd,EAAAlC,KAAIuT,GAAA,IAAAC,IAAenJ,KAAKrK,MAA1DA,CAAiEoD,EAAQJ,EACjF,uCApCC,OAAkD,QAA3CS,EAAoB,QAApBjD,EAAAR,KAAK+C,OAAOW,gBAAQ,IAAAlD,OAAA,EAAAA,EAAkB,qBAAK,IAAAiD,EAAAA,EAAA,mCACpD,ECEI,MAAOgQ,WAAY3Q,EACvB,WAAArD,CAAYsD,GACVlD,MAAMkD,eACP,CAaD,gBAAA2Q,CACEtQ,EACAJ,GAEA,OAAOhD,KAAKgD,QAAQ,yBAA0B,OAAQd,EAAAlC,KAAI2T,GAAA,IAAAC,IAAevJ,KAAKrK,MAAvEA,CAA8EoD,EAAQJ,EAC9F,CAUD,yBAAA6Q,CACEzQ,EACAJ,GAEA,OAAOhD,KAAKgD,QAAQ,mCAAoC,OAAQd,EAAAlC,KAAI2T,GAAA,IAAAC,IAAevJ,KAAKrK,MAAjFA,CAAwFoD,EAAQJ,EACxG,CAaD,uBAAA8Q,CACE1Q,EACAJ,GAEA,OAAOhD,KAAKgD,QAAQ,iCAAkC,OAAQd,EAAAlC,KAAI2T,GAAA,IAAAC,IAAevJ,KAAKrK,MAA/EA,CAAsFoD,EAAQJ,EACtG,uCAjDC,OAAkD,QAA3CS,EAAoB,QAApBjD,EAAAR,KAAK+C,OAAOW,gBAAQ,IAAAlD,OAAA,EAAAA,EAAkB,qBAAK,IAAAiD,EAAAA,EAAA,mCACpD,ECJI,MAAOsQ,WAAajR,EACxB,WAAArD,CAAYsD,GACVlD,MAAMkD,eACP,CAUD,IAAAqH,CAAKpH,GACH,OAAOhD,KAAKgD,QAAQ,YAAa,MAAOd,EAAAlC,gBAAmBqK,KAAKrK,MAAzDA,CAAgEgD,EACxE,CAOD,MAAAsH,CAAOlH,EAA0BJ,GAC/B,OAAOhD,KAAKgD,QAAQ,YAAa,OAAQd,EAAAlC,KAAIgU,GAAA,IAAAC,IAAe5J,KAAKrK,MAA1DA,CAAiEoD,EAAQJ,EACjF,CAOD,GAAAN,CAAIU,EAAuBJ,GACzB,OAAOhD,KAAKgD,QAAQ,qBAAsB,MAAOd,EAAAlC,KAAIgU,GAAA,IAAAC,IAAe5J,KAAKrK,MAAlEA,CAAyEoD,EAAQJ,EACzF,CAOD,MAAAyH,CAAOrH,EAA0BJ,GAC/B,OAAOhD,KAAKgD,QAAQ,qBAAsB,QAASd,EAAAlC,KAAIgU,GAAA,IAAAC,IAAe5J,KAAKrK,MAApEA,CAA2EoD,EAAQJ,EAC3F,CAQD,OAAOI,EAA0BJ,GAC/B,OAAOhD,KAAKgD,QAAQ,qBAAsB,SAAUd,EAAAlC,KAAIgU,GAAA,IAAAC,IAAe5J,KAAKrK,MAArEA,CAA4EoD,EAAQJ,EAC5F,uCA/CC,OAAkD,QAA3CS,EAAoB,QAApBjD,EAAAR,KAAK+C,OAAOW,gBAAQ,IAAAlD,OAAA,EAAAA,EAAkB,qBAAK,IAAAiD,EAAAA,EAAA,mCACpD,ECRI,MAAOyQ,WAAepR,EAC1B,WAAArD,CAAYsD,GACVlD,MAAMkD,eACP,CAUD,IAAAqH,CAAKpH,GACH,OAAOhD,KAAKgD,QAAQ,UAAW,MAAOd,EAAAlC,gBAAmBqK,KAAKrK,MAAvDA,CAA8DgD,EACtE,CAOD,GAAAmR,CAAI/Q,EAAyBJ,GAC3B,OAAOhD,KAAKgD,QAAQ,UAAW,OAAQd,EAAAlC,KAAIoU,GAAA,IAAAC,IAAehK,KAAKrK,MAAxDA,CAA+DoD,EAAQJ,EAC/E,CAOD,GAAAN,CAAIU,EAAyBJ,GAC3B,OAAOhD,KAAKgD,QAAQ,iBAAkB,MAAOd,EAAAlC,KAAIoU,GAAA,IAAAC,IAAehK,KAAKrK,MAA9DA,CAAqEoD,EAAQJ,EACrF,CAOD,OAAOI,EAA4BJ,GACjC,OAAOhD,KAAKgD,QAAQ,iBAAkB,SAAUd,EAAAlC,KAAIoU,GAAA,IAAAC,IAAehK,KAAKrK,MAAjEA,CAAwEoD,EAAQJ,EACxF,uCArCC,OAAkD,QAA3CS,EAAoB,QAApBjD,EAAAR,KAAK+C,OAAOW,gBAAQ,IAAAlD,OAAA,EAAAA,EAAkB,qBAAK,IAAAiD,EAAAA,EAAA,mCACpD,ECRI,MAAO6Q,WAAgBxR,EAC3B,WAAArD,CAAYsD,GACVlD,MAAMkD,eACP,CAeD,aAAAwR,CACEnR,EACAJ,GAEA,OAAOhD,KAAKgD,QAAQ,sBAAuB,OAAQd,EAAAlC,KAAIwU,GAAA,IAAAC,IAAepK,KAAKrK,MAApEA,CAA2EoD,EAAQJ,EAC3F,CAWD,WAAA0R,CAAYtR,EAAkCJ,GAC5C,OAAOhD,KAAKgD,QACV,yCACA,MACAd,EAAAlC,KAAIwU,GAAA,IAAAC,IAAepK,KAAKrK,MAHnBA,CAILoD,EAAQJ,EACX,uCAnCC,OAAkD,QAA3CS,EAAoB,QAApBjD,EAAAR,KAAK+C,OAAOW,gBAAQ,IAAAlD,OAAA,EAAAA,EAAkB,qBAAK,IAAAiD,EAAAA,EAAA,mCACpD,ECZI,MAAOkR,WAAyB7R,EACpC,WAAArD,CAAYsD,GACVlD,MAAMkD,eACP,CAmBD,IAAAqL,CAAKhL,EAAoCJ,GACvC,OAAOhD,KAAKgD,QAAQ,oCAAqC,OAAQd,EAAAlC,KAAI4U,GAAA,IAAAC,IAAexK,KAAKrK,MAAlFA,CAAyFoD,EAAQJ,EACzG,uCAnBC,OAAkD,QAA3CS,EAAoB,QAApBjD,EAAAR,KAAK+C,OAAOW,gBAAQ,IAAAlD,OAAA,EAAAA,EAAkB,qBAAK,IAAAiD,EAAAA,EAAA,mCACpD,ECOI,MAAOqR,WAAahS,EACxB,WAAArD,CAAYsD,GACVlD,MAAMkD,eACP,CASD,EAAAgS,CAAG/R,GACD,OAAOhD,KAAKgD,QAAQ,WAAY,MAAOd,EAAAlC,gBAAmBqK,KAAKrK,MAAxDA,CAA+DgD,EACvE,CAOD,GAAAN,CAAIU,EAAuBJ,GACzB,OAAOhD,KAAKgD,QAAQ,aAAc,MAAOd,EAAAlC,KAAIgV,GAAA,IAAAC,IAAe5K,KAAKrK,MAA1DA,CAAiEoD,EAAQJ,EACjF,CAOD,MAAAyH,CAAOrH,EAA0BJ,GAC/B,OAAOhD,KAAKgD,QAAQ,aAAc,QAASd,EAAAlC,KAAIgV,GAAA,IAAAC,IAAe5K,KAAKrK,MAA5DA,CAAmEoD,EAAQJ,EACnF,CAOD,OAAOI,EAA0BJ,GAC/B,OAAOhD,KAAKgD,QAAQ,aAAc,SAAUd,EAAAlC,KAAIgV,GAAA,IAAAC,IAAe5K,KAAKrK,MAA7DA,CAAoEoD,EAAQJ,EACpF,CAOD,MAAA2J,CAAOvJ,EAA0BJ,GAC/B,OAAOhD,KAAKgD,QAAQ,eAAgB,OAAQd,EAAAlC,KAAIgV,GAAA,IAAAC,IAAe5K,KAAKrK,MAA7DA,CAAoEoD,EAAQJ,EACpF,CASD,IAAAoH,CAAKpH,GACH,OAAOhD,KAAKgD,QAAQ,QAAS,MAAOd,EAAAlC,gBAAmBqK,KAAKrK,MAArDA,CAA4DgD,EACpE,CAqBD,MAAA4J,CACExJ,EACAJ,GAEA,OAAOhD,KAAKgD,QAAQ,gBAAiB,MAAOd,EAAAlC,KAAIgV,GAAA,IAAAC,IAAe5K,KAAKrK,MAA7DA,CAAoEoD,EAAQJ,EACpF,uCAlFC,OAAkD,QAA3CS,EAAoB,QAApBjD,EAAAR,KAAK+C,OAAOW,gBAAQ,IAAAlD,OAAA,EAAAA,EAAkB,qBAAK,IAAAiD,EAAAA,EAAA,mCACpD,ECnBI,MAAOyR,WAAgBpS,EAC3B,WAAArD,CAAYsD,GACVlD,MAAMkD,eACP,CAOD,GAAAL,CAAIM,GACF,OAAOhD,KAAKgD,QAAQ,WAAY,MAAOd,EAAAlC,gBAAmBqK,KAAKrK,MAAxDA,CAA+DgD,EACvE,ECdH,SAASG,aACP,OAAkD,QAA3CM,EAAoB,QAApBjD,EAAAR,KAAK+C,OAAOW,gBAAQ,IAAAlD,OAAA,EAAAA,EAAkB,qBAAK,IAAAiD,EAAAA,EAAA,mCACpD,CAOM,SAAgB0R,IAEpBC,WACEA,EACA,cAAe3P,EAAG4P,KAClBA,6CAOF,MAAMC,QAAkBtV,KAAKgD,QAC3B,iCACA,OACAG,GAAakH,KAAKrK,MAHIA,CAItB,CACAuV,OAAQ,SACRH,aACA,cAAe3P,UAEXpB,MAAMiR,EAAUE,UAAW,CAC/BtS,OAAQ,MACR8C,KAAMqP,MAET,CAOK,SAAgBI,IAEpBL,WACEA,EACA,cAAe3P,6CAMjB,MAAM6P,QAAkBtV,KAAKgD,QAC3B,iCACA,OACAG,GAAakH,KAAKrK,MAHIA,CAItB,CACAuV,OAAQ,WACRH,aACA,cAAe3P,IAEXiQ,QAAarR,MAAMiR,EAAUE,UAAW,CAC5CtS,OAAQ,QAEV,IAAKwS,EAAKvM,GACR,MAAM,IAAI3J,MAAM,2BAElB,OAAOkW,EAAKC,gBACb,CASK,SAAgBC,GAEpBxS,oDAEA,IAAIyS,EACApQ,EACJ,MAAMK,EAAM,IAAIC,IAAI3C,EAAO0C,KAC3B,GAAqB,QAAjBA,EAAIgQ,SAAoB,CAE1B,MAAMC,EAAcjQ,EAAIkQ,SAAStG,MAAM,KAAKuG,MAAM,GAClDJ,EAAS/P,EAAIoQ,SACbzQ,EAAMsQ,EAAYlV,KAAK,IACxB,KAAM,KAAIiF,EAAIqQ,KAAKC,WAAsD,UAApB,QAAvB5V,EAAAR,KAAK+C,OAAOW,gBAAW,IAAAlD,OAAA,EAAAA,EAAe,qBAAK,IAAAiD,EAAAA,ExBtFxC,qCwB4FhC,MAAM,IAAIlE,EAAgB,CAAEG,QAAS,iBAAkBC,KAAM,MANkC,CAE/F,MAAM0W,EAAiBvQ,EAAIkQ,SAAStG,MAAM,KAAKuG,MAAM,GACrDJ,EAASQ,EAAe,GACxB5Q,EAAM4Q,EAAeJ,MAAM,GAAGpV,KAAK,IACpC,CAEA,CACD,MAAMyV,EAAyC,CAC7Cf,OAAQ,SACRH,WAAYS,EACZ,cAAepQ,GAEjB,OAAOzF,KAAKgD,QAAQ,iCAAkC,OAAQG,GAAakH,KAAKrK,MAAzEA,CAAgFsW,KACxF,sCD/FG,OAAkD,QAA3C7S,EAAoB,QAApBjD,EAAAR,KAAK+C,OAAOW,gBAAQ,IAAAlD,OAAA,EAAAA,EAAkB,qBAAK,IAAAiD,EAAAA,EAAA,mCACpD,EEMI,MAAO8S,WAAWzT,EACtB,WAAArD,CAAYsD,GACVlD,MAAMkD,gBASR/C,KAAAmV,WAAaqB,GAKbxW,KAAAyV,aAAegB,GAOfzW,KAAA4V,wBAA0Bc,EApBzB,CA2BD,WAAAC,CAAY3T,GACV,OAAOhD,KAAKgD,QAAQ,MAAO,MAAOd,EAAAlC,gBAAmBqK,KAAKrK,MAAnDA,CAA0DgD,EAClE,CAOD,YAAA4T,CAAaxT,EAA8BJ,GACzC,OAAOhD,KAAKgD,QAAQ,mBAAoB,MAAOd,EAAAlC,KAAI6W,GAAA,IAAAC,IAAezM,KAAKrK,MAAhEA,CAAuEoD,EAAQJ,EACvF,CAOD,YAAA+T,CAAa3T,EAA8BJ,GACzC,OAAOhD,KAAKgD,QAAQ,mBAAoB,SAAUd,EAAAlC,KAAI6W,GAAA,IAAAC,IAAezM,KAAKrK,MAAnEA,CAA0EoD,EAAQJ,EAC1F,CAOD,WAAAgU,CAAY5T,EAA6BJ,GACvC,OAAOhD,KAAKgD,QAAQ,iCAAkC,MAAOd,EAAAlC,KAAI6W,GAAA,IAAAC,IAAezM,KAAKrK,MAA9EA,CAAqFoD,EAAQJ,EACrG,CAOD,eAAAiU,CAAgB7T,EAAiCJ,GAC/C,OAAOhD,KAAKgD,QAAQ,iCAAkC,OAAQd,EAAAlC,KAAI6W,GAAA,IAAAC,IAAezM,KAAKrK,MAA/EA,CAAsFoD,EAAQJ,EACtG,CAOD,YAAAkU,CAAa9T,EAA8BJ,GACzC,OAAOhD,KAAKgD,QAAQ,iCAAkC,SAAUd,EAAAlC,KAAI6W,GAAA,IAAAC,IAAezM,KAAKrK,MAAjFA,CAAwFoD,EAAQJ,EACxG,EC7FH,SAASG,aACP,OAAkD,QAA3CM,EAAoB,QAApBjD,EAAAR,KAAK+C,OAAOW,gBAAQ,IAAAlD,OAAA,EAAAA,EAAkB,qBAAK,IAAAiD,EAAAA,EAAA,mCACpD,CAEM,SAAgB0R,IAEpBlG,GACEA,EAAEoG,KACFA,EAAI8B,SACJA,6CAOF,MAAM7B,QAAkBtV,KAAKgD,QAAQ,yBAA0B,OAAQG,GAAakH,KAAKrK,MAAjEA,CAAwE,CAAEiP,KAAIkI,mBAChG9S,MAAMiR,EAAUE,UAAW,CAC/BtS,OAAQ,MACR8C,KAAMqP,MAET,sCDAG,OAAkD,QAA3C5R,EAAoB,QAApBjD,EAAAR,KAAK+C,OAAOW,gBAAQ,IAAAlD,OAAA,EAAAA,EAAkB,qBAAK,IAAAiD,EAAAA,EAAA,mCACpD,EEDI,MAAO2T,WAAetU,EAC1B,WAAArD,CAAYsD,GACVlD,MAAMkD,gBAKR/C,KAAAmV,WAAaqB,EAJZ,CAWD,IAAApM,CAAKpH,GACH,OAAOhD,KAAKgD,QAAQ,UAAW,MAAOd,EAAAlC,gBAAmBqK,KAAKrK,MAAvDA,CAA8DgD,EACtE,CAOD,MAAAsH,CAAOlH,EAA4BJ,GACjC,OAAOhD,KAAKgD,QAAQ,UAAW,OAAQd,EAAAlC,KAAIqX,GAAA,IAAAC,IAAejN,KAAKrK,MAAxDA,CAA+DoD,EAAQJ,EAC/E,CAOD,GAAAN,CAAIU,EAAyBJ,GAC3B,OAAOhD,KAAKgD,QAAQ,eAAgB,MAAOd,EAAAlC,KAAIqX,GAAA,IAAAC,IAAejN,KAAKrK,MAA5DA,CAAmEoD,EAAQJ,EACnF,CAOD,MAAAyH,CAAOrH,EAA4BJ,GACjC,OAAOhD,KAAKgD,QAAQ,eAAgB,QAASd,EAAAlC,KAAIqX,GAAA,IAAAC,IAAejN,KAAKrK,MAA9DA,CAAqEoD,EAAQJ,EACrF,CAOD,OAAOI,EAA4BJ,GACjC,OAAOhD,KAAKgD,QAAQ,eAAgB,SAAUd,EAAAlC,KAAIqX,GAAA,IAAAC,IAAejN,KAAKrK,MAA/DA,CAAsEoD,EAAQJ,EACtF,CAOD,OAAAuU,CAAQnU,EAA6BJ,GACnC,OAAOhD,KAAKgD,QAAQ,uBAAwB,OAAQd,EAAAlC,KAAIqX,GAAA,IAAAC,IAAejN,KAAKrK,MAArEA,CAA4EoD,EAAQJ,EAC5F,CAMD,aAAAwU,CACEpU,EACAJ,GAEA,OAAOhD,KAAKgD,QAAQ,8BAA+B,OAAQd,EAAAlC,KAAIqX,GAAA,IAAAC,IAAejN,KAAKrK,MAA5EA,CAAmFoD,EAAQJ,EACnG,CAOD,QAAAyU,CAASrU,EAA8BJ,GACrC,OAAOhD,KAAKgD,QAAQ,yBAA0B,OAAQd,EAAAlC,KAAIqX,GAAA,IAAAC,IAAejN,KAAKrK,MAAvEA,CAA8EoD,EAAQJ,EAC9F,uCA5EC,OAAkD,QAA3CS,EAAoB,QAApBjD,EAAAR,KAAK+C,OAAOW,gBAAQ,IAAAlD,OAAA,EAAAA,EAAkB,qBAAK,IAAAiD,EAAAA,EAAA,mCACpD,ECfI,MAAOiU,WAAwB5U,EACnC,WAAArD,CAAYsD,GACVlD,MAAMkD,eACP,CAUD,IAAAqH,CAAKhH,EAAmCJ,GACtC,OAAOhD,KAAKgD,QAAQ,yBAA0B,OAAQd,EAAAlC,KAAI2X,GAAA,IAAAC,IAAevN,KAAKrK,MAAvEA,CAA8EoD,EAAQJ,EAC9F,CAOD,MAAAsD,CAAOlD,EAAqCJ,GAC1C,OAAOhD,KAAKgD,QAAQ,gCAAiC,OAAQd,EAAAlC,KAAI2X,GAAA,IAAAC,IAAevN,KAAKrK,MAA9EA,CAAqFoD,EAAQJ,EACrG,CAOD,GAAAN,CAAIU,EAAkCJ,GACpC,OAAOhD,KAAKgD,QACV,yCACA,OACAd,EAAAlC,KAAI2X,GAAA,IAAAC,IAAevN,KAAKrK,MAHnBA,CAILoD,EAAQJ,EACX,uCAhCC,OAAkD,QAA3CS,EAAoB,QAApBjD,EAAAR,KAAK+C,OAAOW,gBAAQ,IAAAlD,OAAA,EAAAA,EAAkB,qBAAK,IAAAiD,EAAAA,EAAA,mCACpD,eCkCA,WAAAhE,CAAYsD,mBACV/C,KAAK+C,OAASA,EACF,QAAZvC,GAAAiE,EAAAzE,KAAK+C,QAAOW,gBAAA,IAAAlD,IAAAiE,EAAAf,SAAa,CAAE,GACS,QAApCD,GAAAgD,EAAAzG,KAAK+C,OAAOW,UAAwB,qBAAA,IAAAD,IAAAgD,EAAA,cAAM1D,EAAO8U,eAChB,QAAjCtT,GAAAsC,EAAA7G,KAAK+C,OAAOW,UAAqB,kBAAA,IAAAa,IAAAsC,EAAA,WAAM9D,EAAOY,YAC9C3D,KAAK8X,YAAc,IAAI3N,EAAYpH,GACnC/C,KAAK+X,UAAY,IAAIvL,EAAUzJ,GAC/B/C,KAAKgY,IAAM,IAAIpF,GAAI7P,GACnB/C,KAAKiY,UAAY,IAAIlF,GAAUhQ,GAC/B/C,KAAKkY,aAAe,IAAInM,EAAahJ,GACrC/C,KAAKmY,iBAAmB,IAAIxD,GAAiB5R,GAC7C/C,KAAKoY,cAAgB,IAAInF,GAAclQ,GACvC/C,KAAKqY,OAAS,IAAIxN,EAAO9H,GACzB/C,KAAKsY,QAAU,IAAIhF,GAAQvQ,GAC3B/C,KAAKuY,IAAM,IAAI9E,GAAI1Q,GACnB/C,KAAKwY,MAAQ,IAAIjL,EAAMxK,GACvB/C,KAAKyY,MAAQ,IAAI3K,EAAM/K,GACvB/C,KAAK0Y,KAAO,IAAI3E,GAAKhR,GACrB/C,KAAK2Y,OAAS,IAAIzE,GAAOnR,GACzB/C,KAAK4Y,QAAU,IAAItE,GAAQvR,GAC3B/C,KAAK6Y,KAAO,IAAI/D,GAAK/R,GACrB/C,KAAK8Y,QAAU,IAAI5D,GAAQnS,GAC3B/C,KAAK+Y,GAAK,IAAIxC,GAAGxT,GACjB/C,KAAKgZ,OAAS,IAAI5B,GAAOrU,GACzB/C,KAAKiZ,gBAAkB,IAAIvB,GAAgB3U,GAC3C/C,KAAKkZ,IAAM,IAAIjL,EAAIlL,GACnB/C,KAAKmZ,IAAM,IAAIhH,GAAIpP,GACnB/C,KAAKoZ,IAAM,IAAIvM,EAAI9J,GACnB/C,KAAKqZ,KAAO,IAAI/H,GAAKvO,EACtB,GCzEH,MAAMuW,WAAgBC,IACbD,GAAAxY,iBAAmB0Y,EACnBF,GAAA/Z,gBAAkBka","x_google_ignoreList":[1]}
|