@rinse-dental/open-dental 2.4.10 → 2.4.12

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.
@@ -20,4 +20,5 @@ export { default as Allergies } from "./allergies";
20
20
  export { default as MedicationPats } from "./medicationPats";
21
21
  export { default as ProcTPs } from "./procTPs";
22
22
  export { default as ProcNotes } from "./procNotes";
23
+ export { default as Queries } from "./queries";
23
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC"}
package/dist/api/index.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.ProcNotes = exports.ProcTPs = exports.MedicationPats = exports.Allergies = exports.Diseases = exports.Fees = exports.DiscountPlans = exports.DiscountPlanSubs = exports.Definitions = exports.Payments = exports.Operatories = exports.Providers = exports.Schedules = exports.TreatmentPlanAttaches = exports.TreatmentPlans = exports.Recalls = exports.ProcedureLogs = exports.Patients = exports.PatFields = exports.CommLogs = exports.ChartModules = exports.Appointments = void 0;
6
+ exports.Queries = exports.ProcNotes = exports.ProcTPs = exports.MedicationPats = exports.Allergies = exports.Diseases = exports.Fees = exports.DiscountPlans = exports.DiscountPlanSubs = exports.Definitions = exports.Payments = exports.Operatories = exports.Providers = exports.Schedules = exports.TreatmentPlanAttaches = exports.TreatmentPlans = exports.Recalls = exports.ProcedureLogs = exports.Patients = exports.PatFields = exports.CommLogs = exports.ChartModules = exports.Appointments = void 0;
7
7
  var appointments_1 = require("./appointments");
8
8
  Object.defineProperty(exports, "Appointments", { enumerable: true, get: function () { return __importDefault(appointments_1).default; } });
9
9
  var chartModules_1 = require("./chartModules");
@@ -48,4 +48,6 @@ var procTPs_1 = require("./procTPs");
48
48
  Object.defineProperty(exports, "ProcTPs", { enumerable: true, get: function () { return __importDefault(procTPs_1).default; } });
49
49
  var procNotes_1 = require("./procNotes");
50
50
  Object.defineProperty(exports, "ProcNotes", { enumerable: true, get: function () { return __importDefault(procNotes_1).default; } });
51
+ var queries_1 = require("./queries");
52
+ Object.defineProperty(exports, "Queries", { enumerable: true, get: function () { return __importDefault(queries_1).default; } });
51
53
  // Add other APIs as needed
@@ -0,0 +1,21 @@
1
+ import HttpClient from "../utils/httpClient";
2
+ import { ShortQueryParams, ShortQueryResult, RowParser } from "../types/queryTypes";
3
+ export default class Queries {
4
+ private httpClient;
5
+ constructor(httpClient: HttpClient);
6
+ /**
7
+ * Execute a ShortQuery (arbitrary read-only SQL).
8
+ * Open Dental: PUT /queries/ShortQuery?Offset=#
9
+ * Body: { SqlCommand }
10
+ * Returns at most 100 rows (use Queries POST for longer results).
11
+ *
12
+ * Example:
13
+ * queries.shortQuery<{ PayPeriodNum: number; DateStart: string; DateStop: string; DatePaycheck: string }>({
14
+ * SqlCommand: "SELECT * FROM payperiod"
15
+ * })
16
+ */
17
+ shortQuery<Row = unknown>({ SqlCommand, Offset }: ShortQueryParams, opts?: {
18
+ parse?: RowParser<Row>;
19
+ }): Promise<ShortQueryResult<Row>>;
20
+ }
21
+ //# sourceMappingURL=queries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/api/queries.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,SAAS,EACV,MAAM,qBAAqB,CAAC;AAE7B,MAAM,CAAC,OAAO,OAAO,OAAO;IAC1B,OAAO,CAAC,UAAU,CAAa;gBAEnB,UAAU,EAAE,UAAU;IAIlC;;;;;;;;;;OAUG;IACU,UAAU,CAAC,GAAG,GAAG,OAAO,EACnC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,gBAAgB,EACxC,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAA;KAAE,GAChC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;CAclC"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class Queries {
4
+ httpClient;
5
+ constructor(httpClient) {
6
+ this.httpClient = httpClient;
7
+ }
8
+ /**
9
+ * Execute a ShortQuery (arbitrary read-only SQL).
10
+ * Open Dental: PUT /queries/ShortQuery?Offset=#
11
+ * Body: { SqlCommand }
12
+ * Returns at most 100 rows (use Queries POST for longer results).
13
+ *
14
+ * Example:
15
+ * queries.shortQuery<{ PayPeriodNum: number; DateStart: string; DateStop: string; DatePaycheck: string }>({
16
+ * SqlCommand: "SELECT * FROM payperiod"
17
+ * })
18
+ */
19
+ async shortQuery({ SqlCommand, Offset }, opts) {
20
+ let path = "/queries/ShortQuery";
21
+ if (typeof Offset === "number") {
22
+ path += `?Offset=${encodeURIComponent(String(Offset))}`;
23
+ }
24
+ // HttpClient.put(url, data) per your implementation
25
+ const data = await this.httpClient.put(path, { SqlCommand });
26
+ if (opts?.parse) {
27
+ return data.map(opts.parse);
28
+ }
29
+ return data;
30
+ }
31
+ }
32
+ exports.default = Queries;
@@ -32,6 +32,7 @@ import Allergies from "./api/allergies";
32
32
  import MedicationPats from "./api/medicationPats";
33
33
  import ProcTPs from "./api/procTPs";
34
34
  import ProcNotes from "./api/procNotes";
35
+ import Queries from "./api/queries";
35
36
  import * as Transformers from './transformers';
36
37
  declare class OpenDental {
37
38
  private static httpClient;
@@ -175,6 +176,10 @@ declare class OpenDental {
175
176
  * Create a new instance of the ProcNotes API.
176
177
  */
177
178
  static ProcNotes(): ProcNotes;
179
+ /**
180
+ * Create a new instance of the ProcNotes API.
181
+ */
182
+ static Queries(): Queries;
178
183
  /**
179
184
  * Access stateless Transformers (no initialization needed)
180
185
  */
@@ -1 +1 @@
1
- {"version":3,"file":"openDental.d.ts","sourceRoot":"","sources":["../src/openDental.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openDental.d.ts","sourceRoot":"","sources":["../src/openDental.ts"],"names":[],"mappings":"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"}
@@ -72,6 +72,7 @@ const allergies_1 = __importDefault(require("./api/allergies"));
72
72
  const medicationPats_1 = __importDefault(require("./api/medicationPats"));
73
73
  const procTPs_1 = __importDefault(require("./api/procTPs"));
74
74
  const procNotes_1 = __importDefault(require("./api/procNotes"));
75
+ const queries_1 = __importDefault(require("./api/queries"));
75
76
  const Transformers = __importStar(require("./transformers"));
76
77
  class OpenDental {
77
78
  static httpClient;
@@ -392,6 +393,15 @@ class OpenDental {
392
393
  }
393
394
  return new procNotes_1.default(this.httpClient);
394
395
  }
396
+ /**
397
+ * Create a new instance of the ProcNotes API.
398
+ */
399
+ static Queries() {
400
+ if (!this.httpClient) {
401
+ throw new Error("OpenDental not initialized. Call OpenDental.initialize() first.");
402
+ }
403
+ return new queries_1.default(this.httpClient);
404
+ }
395
405
  /**
396
406
  * Access stateless Transformers (no initialization needed)
397
407
  */
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Parameters for Queries PUT ShortQuery
3
+ * Endpoint: PUT /queries/ShortQuery?Offset=#
4
+ * Body: { SqlCommand: string }
5
+ * Returns: up to 100 rows; use Queries POST for longer results.
6
+ * @see https://www.opendental.com/site/apiqueries.html
7
+ */
8
+ export interface ShortQueryParams {
9
+ SqlCommand: string;
10
+ Offset?: number;
11
+ }
12
+ /** Generic result rows for ShortQuery; supply Row when you know the shape */
13
+ export type ShortQueryResult<Row = unknown> = Row[];
14
+ /** Optional runtime validator for rows (e.g., Zod) */
15
+ export type RowParser<Row> = (value: unknown) => Row;
16
+ //# sourceMappingURL=queryTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryTypes.d.ts","sourceRoot":"","sources":["../../src/types/queryTypes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,6EAA6E;AAC7E,MAAM,MAAM,gBAAgB,CAAC,GAAG,GAAG,OAAO,IAAI,GAAG,EAAE,CAAC;AAEpD,sDAAsD;AACtD,MAAM,MAAM,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,KAAK,GAAG,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rinse-dental/open-dental",
3
- "version": "2.4.10",
3
+ "version": "2.4.12",
4
4
  "description": "A TypeScript library for easily accessing Open Dental APIs.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/api/index.ts CHANGED
@@ -20,4 +20,5 @@ export { default as Allergies } from "./allergies";
20
20
  export { default as MedicationPats } from "./medicationPats";
21
21
  export { default as ProcTPs } from "./procTPs";
22
22
  export { default as ProcNotes } from "./procNotes";
23
+ export { default as Queries } from "./queries";
23
24
  // Add other APIs as needed
@@ -0,0 +1,43 @@
1
+ import HttpClient from "../utils/httpClient";
2
+ import {
3
+ ShortQueryParams,
4
+ ShortQueryResult,
5
+ RowParser,
6
+ } from "../types/queryTypes";
7
+
8
+ export default class Queries {
9
+ private httpClient: HttpClient;
10
+
11
+ constructor(httpClient: HttpClient) {
12
+ this.httpClient = httpClient;
13
+ }
14
+
15
+ /**
16
+ * Execute a ShortQuery (arbitrary read-only SQL).
17
+ * Open Dental: PUT /queries/ShortQuery?Offset=#
18
+ * Body: { SqlCommand }
19
+ * Returns at most 100 rows (use Queries POST for longer results).
20
+ *
21
+ * Example:
22
+ * queries.shortQuery<{ PayPeriodNum: number; DateStart: string; DateStop: string; DatePaycheck: string }>({
23
+ * SqlCommand: "SELECT * FROM payperiod"
24
+ * })
25
+ */
26
+ public async shortQuery<Row = unknown>(
27
+ { SqlCommand, Offset }: ShortQueryParams,
28
+ opts?: { parse?: RowParser<Row> }
29
+ ): Promise<ShortQueryResult<Row>> {
30
+ let path = "/queries/ShortQuery";
31
+ if (typeof Offset === "number") {
32
+ path += `?Offset=${encodeURIComponent(String(Offset))}`;
33
+ }
34
+
35
+ // HttpClient.put(url, data) per your implementation
36
+ const data = await this.httpClient.put<unknown[]>(path, { SqlCommand });
37
+
38
+ if (opts?.parse) {
39
+ return (data as unknown[]).map(opts.parse);
40
+ }
41
+ return data as Row[];
42
+ }
43
+ }
package/src/openDental.ts CHANGED
@@ -33,6 +33,7 @@ import Allergies from "./api/allergies";
33
33
  import MedicationPats from "./api/medicationPats";
34
34
  import ProcTPs from "./api/procTPs";
35
35
  import ProcNotes from "./api/procNotes";
36
+ import Queries from "./api/queries";
36
37
 
37
38
 
38
39
  import * as Transformers from './transformers';
@@ -395,6 +396,16 @@ class OpenDental {
395
396
  return new ProcNotes(this.httpClient);
396
397
  }
397
398
 
399
+ /**
400
+ * Create a new instance of the ProcNotes API.
401
+ */
402
+ public static Queries() {
403
+ if (!this.httpClient) {
404
+ throw new Error("OpenDental not initialized. Call OpenDental.initialize() first.");
405
+ }
406
+ return new Queries(this.httpClient);
407
+ }
408
+
398
409
  /**
399
410
  * Access stateless Transformers (no initialization needed)
400
411
  */
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Parameters for Queries PUT ShortQuery
3
+ * Endpoint: PUT /queries/ShortQuery?Offset=#
4
+ * Body: { SqlCommand: string }
5
+ * Returns: up to 100 rows; use Queries POST for longer results.
6
+ * @see https://www.opendental.com/site/apiqueries.html
7
+ */
8
+ export interface ShortQueryParams {
9
+ SqlCommand: string; // Required (in request body)
10
+ Offset?: number; // Optional (in query string)
11
+ }
12
+
13
+ /** Generic result rows for ShortQuery; supply Row when you know the shape */
14
+ export type ShortQueryResult<Row = unknown> = Row[];
15
+
16
+ /** Optional runtime validator for rows (e.g., Zod) */
17
+ export type RowParser<Row> = (value: unknown) => Row;