oro-sdk-apis 1.35.0 → 1.38.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.
@@ -1,5 +1,5 @@
1
1
  import { APIService } from './api';
2
- import { Uuid, Consult, ConsultRequest, MedicalStatus, ConsultTransmission, TransmissionStatus } from '../models';
2
+ import { Uuid, Consult, ConsultRequest, MedicalStatus, ConsultTransmission, ClosedReasonType, TransmissionStatus } from '../models';
3
3
  export declare class ConsultService {
4
4
  private api;
5
5
  private baseURL;
@@ -43,6 +43,8 @@ export declare class ConsultService {
43
43
  getConsultByUUID(uuidConsult: Uuid, uuidPractice?: Uuid): Promise<Consult>;
44
44
  updateConsultByUUID(uuidConsult: Uuid, consult: {
45
45
  statusMedical?: MedicalStatus;
46
+ closedReasonType?: ClosedReasonType;
47
+ closedReasonDescription?: string;
46
48
  uuidAssignedDoctor?: Uuid;
47
49
  neverExpires?: boolean;
48
50
  }, uuidPractice?: Uuid, uuidRequester?: Uuid): Promise<Consult>;
@@ -4,6 +4,7 @@ export * from './axios';
4
4
  export * from './consult';
5
5
  export * from './diagnosis';
6
6
  export * from './guard';
7
+ export * from './search';
7
8
  export * from './practice';
8
9
  export * from './teller';
9
10
  export * from './vault';
@@ -75,7 +75,17 @@ export declare class PracticeService {
75
75
  */
76
76
  practiceCreatePaymentsIntent(practiceUuid: Uuid, planId: number, userEmail: string, isoLocality?: string, url_subdomain?: string, consultRequest?: ConsultRequestMetadata): Promise<PracticePaymentIntent>;
77
77
  practiceGetPaymentsIntent(practiceUuid: Uuid, paymentIntentId: number): Promise<PracticePaymentIntent>;
78
- practiceUpdatePaymentsIntent(practiceUuid: string, idPraticePaymentIntent: number, practicePaymentIntent: PracticePaymentIntent, userEmail: string, promotionCode?: string): Promise<PracticePaymentIntent>;
78
+ /**
79
+ * Updates a PracticePaymentIntent
80
+ * @param practiceUuid the practice uuid
81
+ * @param idPraticePaymentIntent the id of the PracticePaymentIntent to update
82
+ * @param practicePaymentIntent the desired PracticePaymentIntent
83
+ * @param userEmail the email of the user
84
+ * @param promotionCode (optional) promotional code to apply
85
+ * @param finalize (optional) if true will finalize the PracticePaymentIntent and related Stripe.Invoice. Once, finalized you cannot modify the PracticePaymentIntent anymore.
86
+ * @returns the updated PracticePaymentIntent
87
+ */
88
+ practiceUpdatePaymentsIntent(practiceUuid: string, idPraticePaymentIntent: number, practicePaymentIntent: PracticePaymentIntent, userEmail: string, promotionCode?: string, finalize?: boolean): Promise<PracticePaymentIntent>;
79
89
  /**
80
90
  * Invoice
81
91
  * @param practiceUuid UUID of the practice to get the invoice from
@@ -0,0 +1,18 @@
1
+ import { APIService } from "./api";
2
+ import { SearchResponse, Terms } from "../models/search";
3
+ export declare class SearchService {
4
+ private api;
5
+ private baseURL;
6
+ constructor(api: APIService, baseURL: string);
7
+ /**
8
+ * Creates search indexes for the terms passed in order to be able to search for it in the future
9
+ * @param consultUUID
10
+ * @param terms the search terms to be indexed
11
+ */
12
+ index(consultUUID: string, terms: Terms): Promise<any>;
13
+ /**
14
+ * Searches for the consultations corresponding to the search terms entered in the query
15
+ * @param terms array of search terms
16
+ */
17
+ search(terms: Terms): Promise<SearchResponse>;
18
+ }
@@ -1,11 +1,11 @@
1
1
  import { APIService } from './api';
2
- import { Consult, DataCreateResponse, LockboxDataRequest, MedicalStatus, Uuid, ResumeConsultEmailRequest } from '../models';
2
+ import { ClosedReasonType, Consult, DataCreateResponse, LockboxDataRequest, MedicalStatus, ResumeConsultEmailRequest, Uuid } from '../models';
3
3
  export declare class TellerService {
4
4
  private api;
5
5
  private baseURL;
6
6
  constructor(api: APIService, baseURL: string);
7
7
  lockboxDataStore(lockboxUuid: Uuid, req: LockboxDataRequest, lockboxOwnerUuid?: Uuid, previousDataUuid?: Uuid): Promise<DataCreateResponse>;
8
- updateConsultByUUID(patientUuid: Uuid, uuidConsult: Uuid, statusMedical: MedicalStatus, neverExpires?: boolean): Promise<Consult>;
8
+ updateConsultByUUID(patientUuid: Uuid, uuidConsult: Uuid, statusMedical: MedicalStatus, closedReasonType?: ClosedReasonType, closedReasonDescription?: string, neverExpires?: boolean): Promise<Consult>;
9
9
  /**
10
10
  * This function notifies teller that the fax sent for a specific consult did not get through
11
11
  * @todo - Make service only exposed route
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.35.0",
2
+ "version": "1.38.0",
3
3
  "main": "dist/index.js",
4
4
  "typings": "dist/index.d.ts",
5
5
  "files": [
@@ -5,6 +5,7 @@ import {
5
5
  DiagnosisService,
6
6
  GuardService,
7
7
  PracticeService,
8
+ SearchService,
8
9
  TellerService,
9
10
  VaultService,
10
11
  WorkflowService,
@@ -28,6 +29,7 @@ export const init = (
28
29
  consultBaseURL,
29
30
  vaultBaseURL,
30
31
  guardBaseURL,
32
+ searchBaseURL,
31
33
  workflowBaseURL,
32
34
  diagnosisBaseURL,
33
35
  } = services
@@ -41,6 +43,7 @@ export const init = (
41
43
  consultService: consultBaseURL ? new ConsultService(apiService, consultBaseURL) : undefined,
42
44
  vaultService: vaultBaseURL ? new VaultService(apiService, vaultBaseURL) : undefined,
43
45
  guardService: guardBaseURL ? new GuardService(apiService, guardBaseURL) : undefined,
46
+ searchService: searchBaseURL ? new SearchService(apiService, searchBaseURL) : undefined,
44
47
  workflowService: workflowBaseURL ? new WorkflowService(apiService, workflowBaseURL) : undefined,
45
48
  diagnosisService: diagnosisBaseURL ? new DiagnosisService(apiService, diagnosisBaseURL) : undefined,
46
49
  }
@@ -82,6 +82,59 @@ export enum TaskStatus {
82
82
  Done = 'Done',
83
83
  }
84
84
 
85
+ export enum ClosedReasonType {
86
+ /**
87
+ * A completed consultation
88
+ */
89
+ Completed = "Completed",
90
+ /**
91
+ * The conclusion was that what the patient submitted was not a disease
92
+ */
93
+ NotADisease = "NotADisease",
94
+ /**
95
+ * The consultation was not appropriate for virtual
96
+ */
97
+ NotAppropriateForVirtual = "NotAppropriateForVirtual",
98
+ /**
99
+ * Any other reason why the consultation was closed
100
+ */
101
+ Other = "Other",
102
+ /**
103
+ * A consultation that is required to be done in person
104
+ */
105
+ RequiresInPerson = "RequiresInPerson"
106
+ }
107
+
108
+ export interface ClosedConsultReasonInsertFields {
109
+ /**
110
+ * The uuid of the consultation
111
+ */
112
+ consult_uuid: string
113
+ /**
114
+ * The reason why the consultation was closed
115
+ */
116
+ closed_reason_type: ClosedReasonType
117
+ /**
118
+ * The description why the consultation was closed
119
+ */
120
+ closed_reason_description: string
121
+ /**
122
+ * When the consultation was closed
123
+ */
124
+ created_at: string
125
+ }
126
+
127
+ export interface ConsultClosedReason {
128
+ /**
129
+ * The reason why the consultation was closed
130
+ */
131
+ closedReasonType: ClosedReasonType
132
+ /**
133
+ * The description why the consultation was closed
134
+ */
135
+ closedReasonDescription?: string
136
+ }
137
+
85
138
  export interface ConsultRequest {
86
139
  uuidPractice: string
87
140
  tagSpecialtyRequired: string
@@ -104,6 +157,7 @@ export interface Consult {
104
157
  statusTask?: TaskStatus
105
158
  hasTransmissions?: boolean
106
159
  assignedAssistant?: ConsultAssignedAssistant[]
160
+ closeConsultReason?: ConsultClosedReason
107
161
  shortId?: string
108
162
  createdAt?: string
109
163
  expiresAt?: string
@@ -3,6 +3,7 @@ import {
3
3
  ConsultService,
4
4
  DiagnosisService,
5
5
  GuardService,
6
+ SearchService,
6
7
  PracticeService,
7
8
  TellerService,
8
9
  VaultService,
@@ -16,6 +17,7 @@ export interface ServiceCollectionRequest {
16
17
  tellerBaseURL?: string
17
18
  vaultBaseURL?: string
18
19
  guardBaseURL?: string
20
+ searchBaseURL?: string
19
21
  practiceBaseURL?: string
20
22
  consultBaseURL?: string
21
23
  workflowBaseURL?: string
@@ -32,6 +34,7 @@ export interface ServiceCollection {
32
34
  consultService?: ConsultService
33
35
  vaultService?: VaultService
34
36
  guardService?: GuardService
37
+ searchService?: SearchService
35
38
  workflowService?: WorkflowService
36
39
  diagnosisService?: DiagnosisService
37
40
  }
@@ -143,40 +143,40 @@ export enum PracticeConfigKind {
143
143
  PracticePharmacyPicker = 'PracticePharmacyPicker',
144
144
  PracticePrescriptionFields = 'PracticePrescriptionFields',
145
145
  PractitionerChatbox = 'PractitionerChatbox',
146
- PractitionerConsultList = 'PractitionerConsultList'
146
+ PractitionerConsultList = 'PractitionerConsultList',
147
147
  }
148
148
 
149
149
  /**
150
150
  * Defines the close consultation types to hide in the close consultation modal of a practice
151
151
  */
152
- export type PracticeConfigPracticeCloseConsultationTypes = PracticeConfig<
153
- PracticeConfigKind.PracticeCloseConsultationTypes,
154
- {
155
- /**
156
- * Should hide item with value "Completed"
157
- */
158
- hideCompleted?: boolean
159
-
160
- /**
161
- * Should hide item with value "Requires-in-person"
162
- */
163
- hideRequiresInPerson?: boolean
164
-
165
- /**
166
- * Should hide item with value "Other"
167
- */
168
- hideOther?: boolean
169
-
170
- /**
171
- * Should hide item with value "Not-a-disease"
172
- */
173
- hideNotADisease?: boolean
174
-
175
- /**
176
- * Should hide item with value "Appropriate-for-virtual"
177
- */
178
- hideNotAppropriateForVirtual?: boolean
179
- }
152
+ export type PracticeConfigPracticeCloseConsultationTypes = PracticeConfig<
153
+ PracticeConfigKind.PracticeCloseConsultationTypes,
154
+ {
155
+ /**
156
+ * Should hide item with value "Completed"
157
+ */
158
+ hideCompleted?: boolean
159
+
160
+ /**
161
+ * Should hide item with value "Requires-in-person"
162
+ */
163
+ hideRequiresInPerson?: boolean
164
+
165
+ /**
166
+ * Should hide item with value "Other"
167
+ */
168
+ hideOther?: boolean
169
+
170
+ /**
171
+ * Should hide item with value "Not-a-disease"
172
+ */
173
+ hideNotADisease?: boolean
174
+
175
+ /**
176
+ * Should hide item with value "Appropriate-for-virtual"
177
+ */
178
+ hideNotAppropriateForVirtual?: boolean
179
+ }
180
180
  >
181
181
 
182
182
  /**
@@ -202,95 +202,95 @@ export interface PracticeConfig<K, T> {
202
202
 
203
203
  /**
204
204
  * This type is for test (do not remove without updating the integration tests)
205
- */
206
- export type PracticeConfigPracticeConfigExample = PracticeConfig<
207
- PracticeConfigKind.PracticeConfigExample,
208
- { primaryColor?: string }
205
+ */
206
+ export type PracticeConfigPracticeConfigExample = PracticeConfig<
207
+ PracticeConfigKind.PracticeConfigExample,
208
+ { primaryColor?: string }
209
209
  >
210
210
 
211
211
  /**
212
212
  * Defines the practice cookie banner
213
213
  */
214
- export type PracticeConfigPracticeCookieBanner = PracticeConfig<
215
- PracticeConfigKind.PracticeCookieBanner,
216
- {
217
- showCookieBanner?: boolean
218
- policyLink?: string
219
- useOfCookieLink?: string
220
- }
214
+ export type PracticeConfigPracticeCookieBanner = PracticeConfig<
215
+ PracticeConfigKind.PracticeCookieBanner,
216
+ {
217
+ showCookieBanner?: boolean
218
+ policyLink?: string
219
+ useOfCookieLink?: string
220
+ }
221
221
  >
222
222
 
223
223
  /**
224
224
  * This interface describes all practice css variables
225
225
  * The keys should reflect the exact css name
226
226
  */
227
- export type PracticeConfigPracticeCssVariables = PracticeConfig<
228
- PracticeConfigKind.PracticeCssVariables,
229
- Record<string, string>
227
+ export type PracticeConfigPracticeCssVariables = PracticeConfig<
228
+ PracticeConfigKind.PracticeCssVariables,
229
+ Record<string, string>
230
230
  >
231
231
 
232
232
  /**
233
233
  * Defines the font of the practice css url
234
234
  */
235
- export type PracticeConfigPracticeFontsLinks = PracticeConfig<
236
- PracticeConfigKind.PracticeFontsLinks,
237
- {
238
- /**
239
- * sans serif font family
240
- */
241
- sansSerif?: string
242
- /**
243
- * serif font family
244
- */
245
- serif?: string
246
- }
235
+ export type PracticeConfigPracticeFontsLinks = PracticeConfig<
236
+ PracticeConfigKind.PracticeFontsLinks,
237
+ {
238
+ /**
239
+ * sans serif font family
240
+ */
241
+ sansSerif?: string
242
+ /**
243
+ * serif font family
244
+ */
245
+ serif?: string
246
+ }
247
247
  >
248
248
 
249
249
  /**
250
250
  * Defines the locale switcher config
251
251
  */
252
- export type PracticeConfigPracticeLocaleSwitcher = PracticeConfig<
253
- PracticeConfigKind.PracticeLocaleSwitcher,
254
- {
255
- /**
256
- * Should hide the locale switcher
257
- */
258
- hideLocaleSwitcher?: boolean
259
- }
252
+ export type PracticeConfigPracticeLocaleSwitcher = PracticeConfig<
253
+ PracticeConfigKind.PracticeLocaleSwitcher,
254
+ {
255
+ /**
256
+ * Should hide the locale switcher
257
+ */
258
+ hideLocaleSwitcher?: boolean
259
+ }
260
260
  >
261
261
 
262
262
  /**
263
- * Defines the online pharmacy address of the practice
263
+ * Defines the online pharmacy address of the practice
264
264
  */
265
- export type PracticeConfigPracticeOnlinePharmacy = PracticeConfig<
266
- PracticeConfigKind.PracticePharmacyPicker,
267
- {
268
- /**
269
- * The address of the online pharmacy
270
- */
271
- onlinePharmacy?: PlaceData
272
- }
265
+ export type PracticeConfigPracticeOnlinePharmacy = PracticeConfig<
266
+ PracticeConfigKind.PracticePharmacyPicker,
267
+ {
268
+ /**
269
+ * The address of the online pharmacy
270
+ */
271
+ onlinePharmacy?: PlaceData
272
+ }
273
273
  >
274
274
 
275
275
  /**
276
276
  * Defines the consultation chatbox configs
277
277
  */
278
- export type PracticeConfigPractitionerChatbox = PracticeConfig<
279
- PracticeConfigKind.PractitionerChatbox,
280
- {
281
- /**
282
- * If defined will replace the automatic chatbox comment notifiying the patient a new treatment plan has been added. Indexed by locale.
283
- */
284
- planAddedMessage?: { [languageISO639_3: string]: string }
285
- /**
286
- * If defined will replace the automatic chatbox comment notifiying the patient a new treatment plan has been updated. Indexed by locale.
287
- */
288
- planUpdatedMessage?: { [languageISO639_3: string]: string }
289
- /**
290
- * If defined will replace the automatic chatbox comment notifiying the patient a new exam has been dispatched. Indexed by locale.
291
- */
292
- examsUpdatedMessage?: { [languageISO639_3: string]: string }
293
- }
278
+ export type PracticeConfigPractitionerChatbox = PracticeConfig<
279
+ PracticeConfigKind.PractitionerChatbox,
280
+ {
281
+ /**
282
+ * If defined will replace the automatic chatbox comment notifiying the patient a new treatment plan has been added. Indexed by locale.
283
+ */
284
+ planAddedMessage?: { [languageISO639_3: string]: string }
285
+ /**
286
+ * If defined will replace the automatic chatbox comment notifiying the patient a new treatment plan has been updated. Indexed by locale.
287
+ */
288
+ planUpdatedMessage?: { [languageISO639_3: string]: string }
289
+ /**
290
+ * If defined will replace the automatic chatbox comment notifiying the patient a new exam has been dispatched. Indexed by locale.
291
+ */
292
+ examsUpdatedMessage?: { [languageISO639_3: string]: string }
293
+ }
294
294
  >
295
295
 
296
296
  /**
@@ -329,7 +329,7 @@ export type PracticeConfigPracticePrescriptionFields = PracticeConfig<
329
329
  */
330
330
  yCoordinate?: number
331
331
  }
332
- >
332
+ >
333
333
 
334
334
  export type PracticeConfigs =
335
335
  | PracticeConfigPractitionerConsultList
@@ -444,7 +444,10 @@ export interface PracticePaymentIntent {
444
444
  numPlatformFeeAmount: number
445
445
  idStripeInvoice: string
446
446
  idStripePaymtIntent: string
447
- stripeClientSecret: string
447
+ /**
448
+ * This value is set only after the PracticePaymentIntent has been finalized and ready to be paid
449
+ */
450
+ stripeClientSecret?: string
448
451
  dateCreatedAt?: Date
449
452
  dateUpdateAt?: Date
450
453
  }
@@ -612,4 +615,4 @@ export interface PracticeInvoice {
612
615
  subtotal: number
613
616
  currency: string
614
617
  discount: number
615
- }
618
+ }
@@ -0,0 +1,34 @@
1
+ export interface SearchRequest {
2
+ terms: Terms
3
+ }
4
+
5
+ export interface SearchResponse {
6
+ results: SearchResult[]
7
+ }
8
+
9
+ export interface SearchResult {
10
+ consultUUID: string
11
+ kind: string
12
+ score: number
13
+ }
14
+
15
+ export interface IndexRequest {
16
+ consultUUID: string
17
+ terms: Terms
18
+ }
19
+
20
+ export type Terms = Term[]
21
+ export interface Term {
22
+ kind?: string
23
+ value: string
24
+ }
25
+
26
+
27
+ export enum IndexKind {
28
+ consultUuid,
29
+ consultShortid,
30
+ firstName,
31
+ lastName,
32
+ healthId,
33
+ dob,
34
+ }
@@ -5,6 +5,7 @@ import {
5
5
  ConsultRequest,
6
6
  MedicalStatus,
7
7
  ConsultTransmission,
8
+ ClosedReasonType,
8
9
  TransmissionKind,
9
10
  TransmissionStatus,
10
11
  } from '../models'
@@ -141,6 +142,8 @@ export class ConsultService {
141
142
  uuidConsult: Uuid,
142
143
  consult: {
143
144
  statusMedical?: MedicalStatus
145
+ closedReasonType?: ClosedReasonType
146
+ closedReasonDescription?: string
144
147
  uuidAssignedDoctor?: Uuid
145
148
  neverExpires?: boolean
146
149
  },
@@ -4,6 +4,7 @@ export * from './axios'
4
4
  export * from './consult'
5
5
  export * from './diagnosis'
6
6
  export * from './guard'
7
+ export * from './search'
7
8
  export * from './practice'
8
9
  export * from './teller'
9
10
  export * from './vault'
@@ -215,12 +215,23 @@ export class PracticeService {
215
215
  )
216
216
  }
217
217
 
218
+ /**
219
+ * Updates a PracticePaymentIntent
220
+ * @param practiceUuid the practice uuid
221
+ * @param idPraticePaymentIntent the id of the PracticePaymentIntent to update
222
+ * @param practicePaymentIntent the desired PracticePaymentIntent
223
+ * @param userEmail the email of the user
224
+ * @param promotionCode (optional) promotional code to apply
225
+ * @param finalize (optional) if true will finalize the PracticePaymentIntent and related Stripe.Invoice. Once, finalized you cannot modify the PracticePaymentIntent anymore.
226
+ * @returns the updated PracticePaymentIntent
227
+ */
218
228
  public practiceUpdatePaymentsIntent(
219
229
  practiceUuid: string,
220
230
  idPraticePaymentIntent: number,
221
231
  practicePaymentIntent: PracticePaymentIntent,
222
232
  userEmail: string,
223
- promotionCode?: string
233
+ promotionCode?: string,
234
+ finalize?: boolean
224
235
  ) {
225
236
  return this.api.put<PracticePaymentIntent>(
226
237
  `${this.baseURL}/v1/practices/${practiceUuid}/payments/intents/${idPraticePaymentIntent}`,
@@ -228,7 +239,7 @@ export class PracticeService {
228
239
  ...practicePaymentIntent,
229
240
  hashUserEmail: userEmail ? this.getPaymentIntentHashedEmail(userEmail) : undefined,
230
241
  },
231
- { params: { promotionCode } }
242
+ { params: { promotionCode, finalize } }
232
243
  )
233
244
  }
234
245
 
@@ -0,0 +1,39 @@
1
+ import {APIService} from "./api";
2
+ import {IndexRequest, SearchRequest, SearchResponse, Terms} from "../models/search";
3
+
4
+ export class SearchService {
5
+ constructor(private api: APIService, private baseURL: string) {}
6
+
7
+ /**
8
+ * Creates search indexes for the terms passed in order to be able to search for it in the future
9
+ * @param consultUUID
10
+ * @param terms the search terms to be indexed
11
+ */
12
+ public index(
13
+ consultUUID: string,
14
+ terms: Terms
15
+ ): Promise<any> {
16
+ return this.api.post<IndexRequest>(
17
+ `${this.baseURL}/v1/search`,
18
+ <IndexRequest> {
19
+ consultUUID,
20
+ terms
21
+ }
22
+ )
23
+ }
24
+
25
+ /**
26
+ * Searches for the consultations corresponding to the search terms entered in the query
27
+ * @param terms array of search terms
28
+ */
29
+ public search(
30
+ terms: Terms
31
+ ): Promise<SearchResponse> {
32
+ return this.api.post<SearchResponse>(
33
+ `${this.baseURL}/v1/search`,
34
+ <SearchRequest> {
35
+ terms
36
+ }
37
+ )
38
+ }
39
+ }
@@ -1,11 +1,12 @@
1
1
  import { APIService } from './api'
2
2
  import {
3
+ ClosedReasonType,
3
4
  Consult,
4
5
  DataCreateResponse,
5
6
  LockboxDataRequest,
6
7
  MedicalStatus,
7
- Uuid,
8
8
  ResumeConsultEmailRequest,
9
+ Uuid,
9
10
  } from '../models'
10
11
  export class TellerService {
11
12
  constructor(private api: APIService, private baseURL: string) {}
@@ -28,11 +29,15 @@ export class TellerService {
28
29
  patientUuid: Uuid,
29
30
  uuidConsult: Uuid,
30
31
  statusMedical: MedicalStatus,
32
+ closedReasonType?: ClosedReasonType,
33
+ closedReasonDescription?: string,
31
34
  neverExpires?: boolean
32
35
  ): Promise<Consult> {
33
36
  return this.api.put<Consult>(`${this.baseURL}/v1/consults/${uuidConsult}`, {
34
37
  patientUuid,
35
38
  statusMedical,
39
+ closedReasonType,
40
+ closedReasonDescription,
36
41
  neverExpires,
37
42
  })
38
43
  }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2021 ORO Health Inc.
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.