@ohm_studio/sdk-core 0.3.3 → 0.5.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/client.d.ts +172 -5
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +272 -13
- package/dist/client.js.map +1 -1
- package/dist/errors.d.ts +11 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +16 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/phi.d.ts +23 -0
- package/dist/phi.d.ts.map +1 -0
- package/dist/phi.js +46 -0
- package/dist/phi.js.map +1 -0
- package/dist/types.d.ts +132 -4
- package/dist/types.d.ts.map +1 -1
- package/package.json +11 -1
package/dist/client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AudioExtractInput, AudioExtractResult, AudioTranscribeInput, AudioTranscribeResult, ExtractInput, ExtractResult, InsightsInput, InsightsResult, OHMClientOptions, OHMInit, StreamChunk, SummarizeInput, SummarizeResult, UsageEvent } from "./types";
|
|
1
|
+
import type { ApiDetail, ApiSummary, AudioExtractInput, AudioExtractResult, AudioTranscribeInput, AudioTranscribeResult, ExtractInput, ExtractResult, GetApiOptions, InsightsInput, InsightsResult, ListApisOptions, OHMClientOptions, OHMInit, RequestOptions, SearchInvocationsByPatientOptions, SearchInvocationsByPatientResult, StreamChunk, SummarizeInput, SummarizeResult, UploadProgressEvent, UsageEvent } from "./types";
|
|
2
2
|
/**
|
|
3
3
|
* Platform-agnostic core client. Subclasses (sdk-js, sdk-react-native)
|
|
4
4
|
* supply the platform-specific multipart/audio adapter via the `attachAudio`
|
|
@@ -15,9 +15,49 @@ export declare abstract class OHMCoreClient {
|
|
|
15
15
|
protected readonly _mock: boolean;
|
|
16
16
|
protected readonly _mockResponses?: OHMClientOptions["mockResponses"];
|
|
17
17
|
constructor(init: OHMInit);
|
|
18
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* Audio surface — speech-to-text and audio-to-structured-JSON.
|
|
20
|
+
* Subclasses fill in the platform-specific multipart adapter (browser
|
|
21
|
+
* `File`/`Blob`, Node `Buffer`/`ReadStream`, RN `{ uri, name, type }`).
|
|
22
|
+
*/
|
|
19
23
|
audio: {
|
|
24
|
+
/**
|
|
25
|
+
* Transcribe an audio file to text. The transcript is **always returned
|
|
26
|
+
* in English**, regardless of the spoken language — the server runs
|
|
27
|
+
* Sarvam saaras:v3 in `mode: 'translate'`, so a Tamil / Hindi / Telugu
|
|
28
|
+
* / Bengali / code-mixed consult comes back as clean English text.
|
|
29
|
+
*
|
|
30
|
+
* Use this when you only need the transcript and not structured fields.
|
|
31
|
+
* If you want both, use {@link audio.extract} instead — it does
|
|
32
|
+
* transcription + extraction in a single round-trip.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* const { transcript, language } = await ohm.audio.transcribe({
|
|
36
|
+
* file: blob, // browser File/Blob
|
|
37
|
+
* language: "auto", // or "en" / "hi" / "ta" / ...
|
|
38
|
+
* speakerMode: "doctor", // or "doctor_patient"
|
|
39
|
+
* });
|
|
40
|
+
* console.log(transcript); // English text
|
|
41
|
+
* console.log(language); // detected source language
|
|
42
|
+
*/
|
|
20
43
|
transcribe: (input: AudioTranscribeInput) => Promise<AudioTranscribeResult>;
|
|
44
|
+
/**
|
|
45
|
+
* Audio → transcript → structured JSON in one call. The most common
|
|
46
|
+
* entry point — pair with {@link useOhmAudioExtract} in React or pass
|
|
47
|
+
* the result of `Recorder.stop()` directly.
|
|
48
|
+
*
|
|
49
|
+
* Throws {@link OHMValidationError} on schema violations (with the
|
|
50
|
+
* failing JSON-Schema path), {@link OHMRateLimitError} on 429,
|
|
51
|
+
* {@link OHMAuthError} on 401, {@link OHMServerError} on 5xx.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* const { transcript, data } = await ohm.audio.extract({
|
|
55
|
+
* apiSlug: "opd-clinic",
|
|
56
|
+
* file: blob,
|
|
57
|
+
* inputs: { patientAge: 35 },
|
|
58
|
+
* });
|
|
59
|
+
* form.setValues(data); // your published API's shape
|
|
60
|
+
*/
|
|
21
61
|
extract: <T = Record<string, unknown>>(input: AudioExtractInput) => Promise<AudioExtractResult<T>>;
|
|
22
62
|
/**
|
|
23
63
|
* Streaming variant of audio.extract — returns an AsyncIterable of
|
|
@@ -34,20 +74,145 @@ export declare abstract class OHMCoreClient {
|
|
|
34
74
|
*/
|
|
35
75
|
extractStream: <T = Record<string, unknown>>(input: AudioExtractInput) => AsyncIterable<StreamChunk<T>>;
|
|
36
76
|
};
|
|
77
|
+
/**
|
|
78
|
+
* Text → structured JSON. Use this when you already have a transcript
|
|
79
|
+
* (e.g. typed notes, prior STT output, OCR'd lab reports). For audio
|
|
80
|
+
* input, use {@link audio.extract} which does both steps in one call.
|
|
81
|
+
*
|
|
82
|
+
* `apiSlug` is your published Studio API's slug (visible in the Studio
|
|
83
|
+
* URL). `text` should be in English — the server's clinical foundation
|
|
84
|
+
* prompt is English-first.
|
|
85
|
+
*
|
|
86
|
+
* Throws {@link OHMValidationError} on schema violations (the error's
|
|
87
|
+
* `fields` array points to the failing JSON-Schema path),
|
|
88
|
+
* {@link OHMAuthError} on bad/missing API key,
|
|
89
|
+
* {@link OHMRateLimitError} with `retryAfterSec` on 429.
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* try {
|
|
93
|
+
* const { data, version } = await ohm.extract({
|
|
94
|
+
* apiSlug: "opd-clinic",
|
|
95
|
+
* text: "Patient reports fever for 3 days...",
|
|
96
|
+
* inputs: { patientAge: 35 },
|
|
97
|
+
* });
|
|
98
|
+
* console.log(data); // matches your schema
|
|
99
|
+
* } catch (e) {
|
|
100
|
+
* if (e instanceof OHMValidationError) console.warn(e.fields);
|
|
101
|
+
* if (e instanceof OHMRateLimitError) await sleep(e.retryAfterSec! * 1000);
|
|
102
|
+
* }
|
|
103
|
+
*/
|
|
37
104
|
extract<T = Record<string, unknown>>(input: ExtractInput): Promise<ExtractResult<T>>;
|
|
38
105
|
/**
|
|
39
106
|
* One-line convenience: pass a transcript, get back the data field.
|
|
40
107
|
* Equivalent to `(await ohm.extract({ apiSlug, text })).data` — the most
|
|
41
108
|
* common shape customers want.
|
|
42
109
|
*/
|
|
43
|
-
extractData<T = Record<string, unknown>>(apiSlug: string, text: string, inputs?: Record<string, unknown
|
|
110
|
+
extractData<T = Record<string, unknown>>(apiSlug: string, text: string, inputs?: Record<string, unknown>, options?: RequestOptions): Promise<T>;
|
|
111
|
+
/**
|
|
112
|
+
* Summarise free clinical text in one of four styles:
|
|
113
|
+
*
|
|
114
|
+
* - `"patient"` — patient-friendly, plain language, second person
|
|
115
|
+
* - `"handover"` — clinician-to-clinician SBAR (Situation / Background /
|
|
116
|
+
* Assessment / Recommendation)
|
|
117
|
+
* - `"executive"` — for hospital admins; leads with action items
|
|
118
|
+
* - `"progress-note"` — condensed SOAP, 2–4 lines per section
|
|
119
|
+
*
|
|
120
|
+
* Honours clinical safety priors (negation, hedging, past-vs-current,
|
|
121
|
+
* verbatim numbers) so "denies chest pain" never flattens to "chest
|
|
122
|
+
* pain" and "probably dengue" stays "probably dengue" in the output.
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* const { summary } = await ohm.summarize({
|
|
126
|
+
* text: longConsultTranscript,
|
|
127
|
+
* style: "patient",
|
|
128
|
+
* maxLines: 5,
|
|
129
|
+
* language: "en",
|
|
130
|
+
* });
|
|
131
|
+
* showInPatientPortal(summary);
|
|
132
|
+
*/
|
|
44
133
|
summarize(input: SummarizeInput): Promise<SummarizeResult>;
|
|
134
|
+
/**
|
|
135
|
+
* Run the second-pass insights extraction on a transcript. Insights are
|
|
136
|
+
* the specialty-specific analytics layer (e.g. psychiatry: mental status
|
|
137
|
+
* exam structured fields; cardiology: risk-stratification flags). The
|
|
138
|
+
* `apiSlug` must point at a published Studio API that has insights
|
|
139
|
+
* enabled in its Settings tab.
|
|
140
|
+
*
|
|
141
|
+
* Pass `priorNoteSummary` for follow-up visits — the assistant uses it
|
|
142
|
+
* to track changes across encounters.
|
|
143
|
+
*
|
|
144
|
+
* @example
|
|
145
|
+
* const { insights } = await ohm.insights({
|
|
146
|
+
* apiSlug: "psychiatry-followup",
|
|
147
|
+
* transcript: visitTranscript,
|
|
148
|
+
* priorNoteSummary: "Patient seen 4 weeks ago, on Sertraline 50mg, ...",
|
|
149
|
+
* });
|
|
150
|
+
* updateInsightsTab(insights);
|
|
151
|
+
*/
|
|
45
152
|
insights<T = unknown>(input: InsightsInput): Promise<InsightsResult<T>>;
|
|
46
|
-
|
|
153
|
+
/**
|
|
154
|
+
* Discover the published Studio APIs available to the current
|
|
155
|
+
* credential. Powered by the Studio management API; works with either
|
|
156
|
+
* an API key (returns project-scoped APIs) or a JWT (returns
|
|
157
|
+
* organisation-wide APIs).
|
|
158
|
+
*
|
|
159
|
+
* Useful for typeahead pickers, dashboards, or codegen tools that need
|
|
160
|
+
* to enumerate slugs without hard-coding them.
|
|
161
|
+
*
|
|
162
|
+
* @example
|
|
163
|
+
* const apis = await ohm.apis.list();
|
|
164
|
+
* for (const a of apis) console.log(a.slug, a.status, "v" + a.version);
|
|
165
|
+
*
|
|
166
|
+
* // Filter to drafts (admin dashboards)
|
|
167
|
+
* const drafts = await ohm.apis.list({ status: "DRAFT" });
|
|
168
|
+
*/
|
|
169
|
+
apis: {
|
|
170
|
+
list: (options?: ListApisOptions) => Promise<ApiSummary[]>;
|
|
171
|
+
/**
|
|
172
|
+
* Fetch full schema detail for one published API. Useful for
|
|
173
|
+
* dynamic playground / preview UIs that need to render the
|
|
174
|
+
* field structure at runtime, or for build pipelines that want
|
|
175
|
+
* the system prompt + inputs without going through the CLI.
|
|
176
|
+
*
|
|
177
|
+
* @example
|
|
178
|
+
* const api = await ohm.apis.get("opd-clinic");
|
|
179
|
+
* console.log(api.publishedSchema, api.publishedSystemPrompt);
|
|
180
|
+
*/
|
|
181
|
+
get: (slug: string, options?: GetApiOptions) => Promise<ApiDetail>;
|
|
182
|
+
};
|
|
183
|
+
/**
|
|
184
|
+
* Patient-level audit search — "every extraction touching this
|
|
185
|
+
* patient in the last N days". Backed by `GET /api/studio/v1/
|
|
186
|
+
* invocations?patientHash=...`. The hospital sends a hash of its
|
|
187
|
+
* patient identifier (ABHA / MRN / IPD) — OHM never sees the raw
|
|
188
|
+
* value. Returns a slim metadata-only view; transcripts and
|
|
189
|
+
* extracted JSON are NEVER returned via this surface.
|
|
190
|
+
*
|
|
191
|
+
* Auth: works under either an API key (project-scoped) or a Studio
|
|
192
|
+
* JWT (organisation-wide). Compliance-critical surface — the
|
|
193
|
+
* caller is expected to enforce role checks before exposing this
|
|
194
|
+
* to end users.
|
|
195
|
+
*
|
|
196
|
+
* @example
|
|
197
|
+
* const audit = await ohm.invocations.searchByPatient({
|
|
198
|
+
* patientHash: sha256(`abha:${patient.abhaId}`),
|
|
199
|
+
* sinceDays: 30,
|
|
200
|
+
* });
|
|
201
|
+
* audit.invocations.forEach((row) => {
|
|
202
|
+
* console.log(row.endpoint, row.recordedById, row.createdAt);
|
|
203
|
+
* });
|
|
204
|
+
*/
|
|
205
|
+
invocations: {
|
|
206
|
+
searchByPatient: (options: SearchInvocationsByPatientOptions) => Promise<SearchInvocationsByPatientResult>;
|
|
207
|
+
};
|
|
208
|
+
protected requestJson<T>(method: string, path: string, body?: unknown, options?: RequestOptions): Promise<T>;
|
|
47
209
|
protected abstract runMultipart<T>(opts: {
|
|
48
210
|
path: string;
|
|
49
211
|
file: any;
|
|
50
212
|
fields?: Record<string, string>;
|
|
213
|
+
signal?: AbortSignal;
|
|
214
|
+
idempotencyKey?: string;
|
|
215
|
+
onProgress?: (event: UploadProgressEvent) => void;
|
|
51
216
|
}): Promise<T>;
|
|
52
217
|
/**
|
|
53
218
|
* Default SSE-based streaming for audio.extract.stream. Subclasses
|
|
@@ -65,6 +230,8 @@ export declare abstract class OHMCoreClient {
|
|
|
65
230
|
path: string;
|
|
66
231
|
file: any;
|
|
67
232
|
fields?: Record<string, string>;
|
|
233
|
+
signal?: AbortSignal;
|
|
234
|
+
idempotencyKey?: string;
|
|
68
235
|
}): AsyncGenerator<StreamChunk<T>>;
|
|
69
236
|
/**
|
|
70
237
|
* Builds a `FormData` (web/Node) or RN-shaped FormData. Subclasses
|
|
@@ -73,7 +240,7 @@ export declare abstract class OHMCoreClient {
|
|
|
73
240
|
* implement.
|
|
74
241
|
*/
|
|
75
242
|
protected buildMultipartBody(_file: unknown, _fields?: Record<string, string>): Promise<unknown>;
|
|
76
|
-
protected requestRaw<T>(method: string, path: string, init: RequestInit): Promise<T>;
|
|
243
|
+
protected requestRaw<T>(method: string, path: string, init: RequestInit, options?: RequestOptions): Promise<T>;
|
|
77
244
|
private parseError;
|
|
78
245
|
}
|
|
79
246
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { OHMAuthError, OHMConfigError, OHMError, OHMRateLimitError, OHMServerError, OHMValidationError, } from "./errors";
|
|
1
|
+
import { OHMAbortError, OHMAuthError, OHMConfigError, OHMError, OHMRateLimitError, OHMServerError, OHMValidationError, } from "./errors";
|
|
2
2
|
import { backoffMs, isRetriableStatus } from "./retry";
|
|
3
3
|
import { mockResponseFor } from "./mock";
|
|
4
4
|
const DEFAULT_BASE_URL = "https://api.ohm.doctor";
|
|
@@ -40,8 +40,31 @@ export class OHMCoreClient {
|
|
|
40
40
|
this._mock = !!opts.mock;
|
|
41
41
|
this._mockResponses = opts.mockResponses;
|
|
42
42
|
}
|
|
43
|
-
/**
|
|
43
|
+
/**
|
|
44
|
+
* Audio surface — speech-to-text and audio-to-structured-JSON.
|
|
45
|
+
* Subclasses fill in the platform-specific multipart adapter (browser
|
|
46
|
+
* `File`/`Blob`, Node `Buffer`/`ReadStream`, RN `{ uri, name, type }`).
|
|
47
|
+
*/
|
|
44
48
|
audio = {
|
|
49
|
+
/**
|
|
50
|
+
* Transcribe an audio file to text. The transcript is **always returned
|
|
51
|
+
* in English**, regardless of the spoken language — the server runs
|
|
52
|
+
* Sarvam saaras:v3 in `mode: 'translate'`, so a Tamil / Hindi / Telugu
|
|
53
|
+
* / Bengali / code-mixed consult comes back as clean English text.
|
|
54
|
+
*
|
|
55
|
+
* Use this when you only need the transcript and not structured fields.
|
|
56
|
+
* If you want both, use {@link audio.extract} instead — it does
|
|
57
|
+
* transcription + extraction in a single round-trip.
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* const { transcript, language } = await ohm.audio.transcribe({
|
|
61
|
+
* file: blob, // browser File/Blob
|
|
62
|
+
* language: "auto", // or "en" / "hi" / "ta" / ...
|
|
63
|
+
* speakerMode: "doctor", // or "doctor_patient"
|
|
64
|
+
* });
|
|
65
|
+
* console.log(transcript); // English text
|
|
66
|
+
* console.log(language); // detected source language
|
|
67
|
+
*/
|
|
45
68
|
transcribe: (input) => {
|
|
46
69
|
if (this._mock) {
|
|
47
70
|
return Promise.resolve(mockResponseFor.transcribe(this._mockResponses));
|
|
@@ -52,9 +75,31 @@ export class OHMCoreClient {
|
|
|
52
75
|
fields: {
|
|
53
76
|
...(input.language ? { language: input.language } : {}),
|
|
54
77
|
...(input.speakerMode ? { speakerMode: input.speakerMode } : {}),
|
|
78
|
+
...(input.patientHash ? { patientHash: input.patientHash } : {}),
|
|
79
|
+
...(input.recordedById ? { recordedById: input.recordedById } : {}),
|
|
55
80
|
},
|
|
81
|
+
signal: input.signal,
|
|
82
|
+
idempotencyKey: input.idempotencyKey,
|
|
83
|
+
onProgress: input.onProgress,
|
|
56
84
|
});
|
|
57
85
|
},
|
|
86
|
+
/**
|
|
87
|
+
* Audio → transcript → structured JSON in one call. The most common
|
|
88
|
+
* entry point — pair with {@link useOhmAudioExtract} in React or pass
|
|
89
|
+
* the result of `Recorder.stop()` directly.
|
|
90
|
+
*
|
|
91
|
+
* Throws {@link OHMValidationError} on schema violations (with the
|
|
92
|
+
* failing JSON-Schema path), {@link OHMRateLimitError} on 429,
|
|
93
|
+
* {@link OHMAuthError} on 401, {@link OHMServerError} on 5xx.
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* const { transcript, data } = await ohm.audio.extract({
|
|
97
|
+
* apiSlug: "opd-clinic",
|
|
98
|
+
* file: blob,
|
|
99
|
+
* inputs: { patientAge: 35 },
|
|
100
|
+
* });
|
|
101
|
+
* form.setValues(data); // your published API's shape
|
|
102
|
+
*/
|
|
58
103
|
extract: (input) => {
|
|
59
104
|
if (this._mock) {
|
|
60
105
|
return Promise.resolve(mockResponseFor.audioExtract(input.apiSlug, this._mockResponses));
|
|
@@ -66,7 +111,12 @@ export class OHMCoreClient {
|
|
|
66
111
|
...(input.language ? { language: input.language } : {}),
|
|
67
112
|
...(input.speakerMode ? { speakerMode: input.speakerMode } : {}),
|
|
68
113
|
...(input.inputs ? { inputs: JSON.stringify(input.inputs) } : {}),
|
|
114
|
+
...(input.patientHash ? { patientHash: input.patientHash } : {}),
|
|
115
|
+
...(input.recordedById ? { recordedById: input.recordedById } : {}),
|
|
69
116
|
},
|
|
117
|
+
signal: input.signal,
|
|
118
|
+
idempotencyKey: input.idempotencyKey,
|
|
119
|
+
onProgress: input.onProgress,
|
|
70
120
|
});
|
|
71
121
|
},
|
|
72
122
|
/**
|
|
@@ -93,10 +143,41 @@ export class OHMCoreClient {
|
|
|
93
143
|
...(input.language ? { language: input.language } : {}),
|
|
94
144
|
...(input.speakerMode ? { speakerMode: input.speakerMode } : {}),
|
|
95
145
|
...(input.inputs ? { inputs: JSON.stringify(input.inputs) } : {}),
|
|
146
|
+
...(input.patientHash ? { patientHash: input.patientHash } : {}),
|
|
147
|
+
...(input.recordedById ? { recordedById: input.recordedById } : {}),
|
|
96
148
|
},
|
|
149
|
+
signal: input.signal,
|
|
150
|
+
idempotencyKey: input.idempotencyKey,
|
|
97
151
|
});
|
|
98
152
|
},
|
|
99
153
|
};
|
|
154
|
+
/**
|
|
155
|
+
* Text → structured JSON. Use this when you already have a transcript
|
|
156
|
+
* (e.g. typed notes, prior STT output, OCR'd lab reports). For audio
|
|
157
|
+
* input, use {@link audio.extract} which does both steps in one call.
|
|
158
|
+
*
|
|
159
|
+
* `apiSlug` is your published Studio API's slug (visible in the Studio
|
|
160
|
+
* URL). `text` should be in English — the server's clinical foundation
|
|
161
|
+
* prompt is English-first.
|
|
162
|
+
*
|
|
163
|
+
* Throws {@link OHMValidationError} on schema violations (the error's
|
|
164
|
+
* `fields` array points to the failing JSON-Schema path),
|
|
165
|
+
* {@link OHMAuthError} on bad/missing API key,
|
|
166
|
+
* {@link OHMRateLimitError} with `retryAfterSec` on 429.
|
|
167
|
+
*
|
|
168
|
+
* @example
|
|
169
|
+
* try {
|
|
170
|
+
* const { data, version } = await ohm.extract({
|
|
171
|
+
* apiSlug: "opd-clinic",
|
|
172
|
+
* text: "Patient reports fever for 3 days...",
|
|
173
|
+
* inputs: { patientAge: 35 },
|
|
174
|
+
* });
|
|
175
|
+
* console.log(data); // matches your schema
|
|
176
|
+
* } catch (e) {
|
|
177
|
+
* if (e instanceof OHMValidationError) console.warn(e.fields);
|
|
178
|
+
* if (e instanceof OHMRateLimitError) await sleep(e.retryAfterSec! * 1000);
|
|
179
|
+
* }
|
|
180
|
+
*/
|
|
100
181
|
async extract(input) {
|
|
101
182
|
if (this._mock) {
|
|
102
183
|
return mockResponseFor.extract(input.apiSlug, this._mockResponses);
|
|
@@ -105,6 +186,14 @@ export class OHMCoreClient {
|
|
|
105
186
|
text: input.text,
|
|
106
187
|
inputs: input.inputs,
|
|
107
188
|
includeInsights: input.includeInsights,
|
|
189
|
+
// Audit fields — recorded on the server's StudioInvocation
|
|
190
|
+
// row. Each is opt-in; the server treats absent fields as
|
|
191
|
+
// "not provided", never falls back to a default.
|
|
192
|
+
...(input.patientHash ? { patientHash: input.patientHash } : {}),
|
|
193
|
+
...(input.recordedById ? { recordedById: input.recordedById } : {}),
|
|
194
|
+
}, {
|
|
195
|
+
signal: input.signal,
|
|
196
|
+
idempotencyKey: input.idempotencyKey,
|
|
108
197
|
});
|
|
109
198
|
}
|
|
110
199
|
/**
|
|
@@ -112,29 +201,165 @@ export class OHMCoreClient {
|
|
|
112
201
|
* Equivalent to `(await ohm.extract({ apiSlug, text })).data` — the most
|
|
113
202
|
* common shape customers want.
|
|
114
203
|
*/
|
|
115
|
-
async extractData(apiSlug, text, inputs) {
|
|
116
|
-
const r = await this.extract({ apiSlug, text, inputs });
|
|
204
|
+
async extractData(apiSlug, text, inputs, options) {
|
|
205
|
+
const r = await this.extract({ apiSlug, text, inputs, signal: options?.signal });
|
|
117
206
|
return r.data;
|
|
118
207
|
}
|
|
208
|
+
/**
|
|
209
|
+
* Summarise free clinical text in one of four styles:
|
|
210
|
+
*
|
|
211
|
+
* - `"patient"` — patient-friendly, plain language, second person
|
|
212
|
+
* - `"handover"` — clinician-to-clinician SBAR (Situation / Background /
|
|
213
|
+
* Assessment / Recommendation)
|
|
214
|
+
* - `"executive"` — for hospital admins; leads with action items
|
|
215
|
+
* - `"progress-note"` — condensed SOAP, 2–4 lines per section
|
|
216
|
+
*
|
|
217
|
+
* Honours clinical safety priors (negation, hedging, past-vs-current,
|
|
218
|
+
* verbatim numbers) so "denies chest pain" never flattens to "chest
|
|
219
|
+
* pain" and "probably dengue" stays "probably dengue" in the output.
|
|
220
|
+
*
|
|
221
|
+
* @example
|
|
222
|
+
* const { summary } = await ohm.summarize({
|
|
223
|
+
* text: longConsultTranscript,
|
|
224
|
+
* style: "patient",
|
|
225
|
+
* maxLines: 5,
|
|
226
|
+
* language: "en",
|
|
227
|
+
* });
|
|
228
|
+
* showInPatientPortal(summary);
|
|
229
|
+
*/
|
|
119
230
|
async summarize(input) {
|
|
120
231
|
if (this._mock)
|
|
121
232
|
return mockResponseFor.summarize(this._mockResponses);
|
|
122
|
-
|
|
233
|
+
const { signal, ...body } = input;
|
|
234
|
+
return this.requestJson("POST", "/api/studio/v1/summarize", body, { signal });
|
|
123
235
|
}
|
|
236
|
+
/**
|
|
237
|
+
* Run the second-pass insights extraction on a transcript. Insights are
|
|
238
|
+
* the specialty-specific analytics layer (e.g. psychiatry: mental status
|
|
239
|
+
* exam structured fields; cardiology: risk-stratification flags). The
|
|
240
|
+
* `apiSlug` must point at a published Studio API that has insights
|
|
241
|
+
* enabled in its Settings tab.
|
|
242
|
+
*
|
|
243
|
+
* Pass `priorNoteSummary` for follow-up visits — the assistant uses it
|
|
244
|
+
* to track changes across encounters.
|
|
245
|
+
*
|
|
246
|
+
* @example
|
|
247
|
+
* const { insights } = await ohm.insights({
|
|
248
|
+
* apiSlug: "psychiatry-followup",
|
|
249
|
+
* transcript: visitTranscript,
|
|
250
|
+
* priorNoteSummary: "Patient seen 4 weeks ago, on Sertraline 50mg, ...",
|
|
251
|
+
* });
|
|
252
|
+
* updateInsightsTab(insights);
|
|
253
|
+
*/
|
|
124
254
|
async insights(input) {
|
|
125
255
|
if (this._mock)
|
|
126
256
|
return mockResponseFor.insights(this._mockResponses);
|
|
127
257
|
return this.requestJson("POST", `/api/studio/v1/insights/${encodeURIComponent(input.apiSlug)}`, {
|
|
128
258
|
transcript: input.transcript,
|
|
129
259
|
priorNoteSummary: input.priorNoteSummary,
|
|
260
|
+
...(input.patientHash ? { patientHash: input.patientHash } : {}),
|
|
261
|
+
...(input.recordedById ? { recordedById: input.recordedById } : {}),
|
|
262
|
+
}, {
|
|
263
|
+
signal: input.signal,
|
|
264
|
+
idempotencyKey: input.idempotencyKey,
|
|
130
265
|
});
|
|
131
266
|
}
|
|
267
|
+
/**
|
|
268
|
+
* Discover the published Studio APIs available to the current
|
|
269
|
+
* credential. Powered by the Studio management API; works with either
|
|
270
|
+
* an API key (returns project-scoped APIs) or a JWT (returns
|
|
271
|
+
* organisation-wide APIs).
|
|
272
|
+
*
|
|
273
|
+
* Useful for typeahead pickers, dashboards, or codegen tools that need
|
|
274
|
+
* to enumerate slugs without hard-coding them.
|
|
275
|
+
*
|
|
276
|
+
* @example
|
|
277
|
+
* const apis = await ohm.apis.list();
|
|
278
|
+
* for (const a of apis) console.log(a.slug, a.status, "v" + a.version);
|
|
279
|
+
*
|
|
280
|
+
* // Filter to drafts (admin dashboards)
|
|
281
|
+
* const drafts = await ohm.apis.list({ status: "DRAFT" });
|
|
282
|
+
*/
|
|
283
|
+
apis = {
|
|
284
|
+
list: async (options = {}) => {
|
|
285
|
+
if (this._mock)
|
|
286
|
+
return [];
|
|
287
|
+
const status = options.status ?? "PUBLISHED";
|
|
288
|
+
const qs = status === "ALL" ? "" : `?status=${encodeURIComponent(status)}`;
|
|
289
|
+
return this.requestJson("GET", `/api/studio/v1/apis${qs}`, undefined, { signal: options.signal });
|
|
290
|
+
},
|
|
291
|
+
/**
|
|
292
|
+
* Fetch full schema detail for one published API. Useful for
|
|
293
|
+
* dynamic playground / preview UIs that need to render the
|
|
294
|
+
* field structure at runtime, or for build pipelines that want
|
|
295
|
+
* the system prompt + inputs without going through the CLI.
|
|
296
|
+
*
|
|
297
|
+
* @example
|
|
298
|
+
* const api = await ohm.apis.get("opd-clinic");
|
|
299
|
+
* console.log(api.publishedSchema, api.publishedSystemPrompt);
|
|
300
|
+
*/
|
|
301
|
+
get: async (slug, options = {}) => {
|
|
302
|
+
if (this._mock) {
|
|
303
|
+
return {
|
|
304
|
+
slug,
|
|
305
|
+
name: slug,
|
|
306
|
+
status: "PUBLISHED",
|
|
307
|
+
version: 1,
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
const qs = options.includeArchived ? "?includeArchived=true" : "";
|
|
311
|
+
return this.requestJson("GET", `/api/studio/v1/apis/by-slug/${encodeURIComponent(slug)}${qs}`, undefined, { signal: options.signal });
|
|
312
|
+
},
|
|
313
|
+
};
|
|
314
|
+
/**
|
|
315
|
+
* Patient-level audit search — "every extraction touching this
|
|
316
|
+
* patient in the last N days". Backed by `GET /api/studio/v1/
|
|
317
|
+
* invocations?patientHash=...`. The hospital sends a hash of its
|
|
318
|
+
* patient identifier (ABHA / MRN / IPD) — OHM never sees the raw
|
|
319
|
+
* value. Returns a slim metadata-only view; transcripts and
|
|
320
|
+
* extracted JSON are NEVER returned via this surface.
|
|
321
|
+
*
|
|
322
|
+
* Auth: works under either an API key (project-scoped) or a Studio
|
|
323
|
+
* JWT (organisation-wide). Compliance-critical surface — the
|
|
324
|
+
* caller is expected to enforce role checks before exposing this
|
|
325
|
+
* to end users.
|
|
326
|
+
*
|
|
327
|
+
* @example
|
|
328
|
+
* const audit = await ohm.invocations.searchByPatient({
|
|
329
|
+
* patientHash: sha256(`abha:${patient.abhaId}`),
|
|
330
|
+
* sinceDays: 30,
|
|
331
|
+
* });
|
|
332
|
+
* audit.invocations.forEach((row) => {
|
|
333
|
+
* console.log(row.endpoint, row.recordedById, row.createdAt);
|
|
334
|
+
* });
|
|
335
|
+
*/
|
|
336
|
+
invocations = {
|
|
337
|
+
searchByPatient: async (options) => {
|
|
338
|
+
if (this._mock) {
|
|
339
|
+
return {
|
|
340
|
+
patientHash: options.patientHash,
|
|
341
|
+
sinceDays: options.sinceDays ?? 90,
|
|
342
|
+
total: 0,
|
|
343
|
+
invocations: [],
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
const params = new URLSearchParams({ patientHash: options.patientHash });
|
|
347
|
+
if (options.sinceDays != null)
|
|
348
|
+
params.set("sinceDays", String(options.sinceDays));
|
|
349
|
+
if (options.limit != null)
|
|
350
|
+
params.set("limit", String(options.limit));
|
|
351
|
+
return this.requestJson("GET", `/api/studio/v1/invocations?${params.toString()}`, undefined, { signal: options.signal });
|
|
352
|
+
},
|
|
353
|
+
};
|
|
132
354
|
// ─── HTTP plumbing ───────────────────────────────────────────────────────
|
|
133
|
-
async requestJson(method, path, body) {
|
|
134
|
-
|
|
135
|
-
headers: { "Content-Type": "application/json" },
|
|
355
|
+
async requestJson(method, path, body, options) {
|
|
356
|
+
const init = {
|
|
136
357
|
body: body !== undefined ? JSON.stringify(body) : undefined,
|
|
137
|
-
}
|
|
358
|
+
};
|
|
359
|
+
if (body !== undefined) {
|
|
360
|
+
init.headers = { "Content-Type": "application/json" };
|
|
361
|
+
}
|
|
362
|
+
return this.requestRaw(method, path, init, options);
|
|
138
363
|
}
|
|
139
364
|
/**
|
|
140
365
|
* Default SSE-based streaming for audio.extract.stream. Subclasses
|
|
@@ -155,11 +380,19 @@ export class OHMCoreClient {
|
|
|
155
380
|
headers.Authorization = `Bearer ${this.apiKey}`;
|
|
156
381
|
else if (this.jwt)
|
|
157
382
|
headers.Authorization = `Bearer ${this.jwt}`;
|
|
158
|
-
headers["X-OHM-Client"] = "@ohm_studio/sdk@0.
|
|
383
|
+
headers["X-OHM-Client"] = "@ohm_studio/sdk-core@0.5.0";
|
|
384
|
+
if (opts.idempotencyKey) {
|
|
385
|
+
headers["Idempotency-Key"] = opts.idempotencyKey;
|
|
386
|
+
}
|
|
159
387
|
const body = (await this.buildMultipartBody(opts.file, opts.fields));
|
|
160
388
|
let res;
|
|
161
389
|
try {
|
|
162
|
-
res = await this.fetchImpl(url, {
|
|
390
|
+
res = await this.fetchImpl(url, {
|
|
391
|
+
method: "POST",
|
|
392
|
+
headers,
|
|
393
|
+
body,
|
|
394
|
+
signal: opts.signal,
|
|
395
|
+
});
|
|
163
396
|
}
|
|
164
397
|
catch (err) {
|
|
165
398
|
yield { type: "error", message: err?.message || "network error" };
|
|
@@ -223,7 +456,7 @@ export class OHMCoreClient {
|
|
|
223
456
|
message: "Streaming requires the SDK wrapper to implement buildMultipartBody",
|
|
224
457
|
});
|
|
225
458
|
}
|
|
226
|
-
async requestRaw(method, path, init) {
|
|
459
|
+
async requestRaw(method, path, init, options) {
|
|
227
460
|
const url = `${this.baseUrl}${path}`;
|
|
228
461
|
const headers = new Headers(init.headers || {});
|
|
229
462
|
if (this.apiKey)
|
|
@@ -231,12 +464,30 @@ export class OHMCoreClient {
|
|
|
231
464
|
else if (this.jwt)
|
|
232
465
|
headers.set("Authorization", `Bearer ${this.jwt}`);
|
|
233
466
|
if (!headers.has("X-OHM-Client")) {
|
|
234
|
-
headers.set("X-OHM-Client", "@ohm_studio/sdk@0.
|
|
467
|
+
headers.set("X-OHM-Client", "@ohm_studio/sdk-core@0.5.0");
|
|
468
|
+
}
|
|
469
|
+
// Idempotency-Key — server short-circuits same-key retries within
|
|
470
|
+
// 24 h to the cached response. Stripe / Twilio convention.
|
|
471
|
+
if (options?.idempotencyKey) {
|
|
472
|
+
headers.set("Idempotency-Key", options.idempotencyKey);
|
|
473
|
+
}
|
|
474
|
+
// Caller-supplied signal short-circuits before any work is started —
|
|
475
|
+
// matches DOM fetch() semantics and avoids burning a retry on an
|
|
476
|
+
// already-cancelled request.
|
|
477
|
+
if (options?.signal?.aborted) {
|
|
478
|
+
throw new OHMAbortError();
|
|
235
479
|
}
|
|
236
480
|
let lastError;
|
|
237
481
|
for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
|
|
238
482
|
const ac = new AbortController();
|
|
239
483
|
const t = setTimeout(() => ac.abort(), this.timeoutMs);
|
|
484
|
+
// Bridge the caller's signal into our internal AbortController so
|
|
485
|
+
// either source (timeout, user cancel) trips the same fetch abort.
|
|
486
|
+
let onCallerAbort;
|
|
487
|
+
if (options?.signal) {
|
|
488
|
+
onCallerAbort = () => ac.abort();
|
|
489
|
+
options.signal.addEventListener("abort", onCallerAbort, { once: true });
|
|
490
|
+
}
|
|
240
491
|
const tStart = Date.now();
|
|
241
492
|
try {
|
|
242
493
|
const res = await this.fetchImpl(url, {
|
|
@@ -270,6 +521,11 @@ export class OHMCoreClient {
|
|
|
270
521
|
clearTimeout(t);
|
|
271
522
|
if (err instanceof OHMError)
|
|
272
523
|
throw err;
|
|
524
|
+
// If the caller cancelled, surface that immediately — don't
|
|
525
|
+
// burn retries on a request the user no longer wants.
|
|
526
|
+
if (options?.signal?.aborted) {
|
|
527
|
+
throw new OHMAbortError();
|
|
528
|
+
}
|
|
273
529
|
lastError = err;
|
|
274
530
|
if (attempt < this.maxRetries) {
|
|
275
531
|
await sleep(backoffMs(attempt));
|
|
@@ -278,6 +534,9 @@ export class OHMCoreClient {
|
|
|
278
534
|
}
|
|
279
535
|
finally {
|
|
280
536
|
clearTimeout(t);
|
|
537
|
+
if (onCallerAbort && options?.signal) {
|
|
538
|
+
options.signal.removeEventListener("abort", onCallerAbort);
|
|
539
|
+
}
|
|
281
540
|
}
|
|
282
541
|
}
|
|
283
542
|
if (lastError instanceof OHMError)
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -59,4 +59,15 @@ export declare class OHMConfigError extends OHMError {
|
|
|
59
59
|
message: string;
|
|
60
60
|
});
|
|
61
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Thrown when the caller's `AbortSignal` fires (e.g. a React component
|
|
64
|
+
* unmounts mid-extract, or the user navigates away). Carries `code:
|
|
65
|
+
* "aborted"` so callers can distinguish cancellation from genuine
|
|
66
|
+
* server / network failures.
|
|
67
|
+
*/
|
|
68
|
+
export declare class OHMAbortError extends OHMError {
|
|
69
|
+
constructor(opts?: {
|
|
70
|
+
message?: string;
|
|
71
|
+
});
|
|
72
|
+
}
|
|
62
73
|
//# sourceMappingURL=errors.d.ts.map
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;gBAChB,IAAI,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB;CAOF;AAED,qBAAa,YAAa,SAAQ,QAAQ;gBAC5B,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;CAI1E;AAED,qBAAa,iBAAkB,SAAQ,QAAQ;IAC7C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;gBACpB,IAAI,EAAE;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB;CAKF;AAED,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;gBACf,IAAI,EAAE;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB;CAKF;AAED,qBAAa,cAAe,SAAQ,QAAQ;gBAC9B,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;CAI1E;AAED,qBAAa,cAAe,SAAQ,QAAQ;gBAC9B,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;CAItC"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;gBAChB,IAAI,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB;CAOF;AAED,qBAAa,YAAa,SAAQ,QAAQ;gBAC5B,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;CAI1E;AAED,qBAAa,iBAAkB,SAAQ,QAAQ;IAC7C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;gBACpB,IAAI,EAAE;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB;CAKF;AAED,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;gBACf,IAAI,EAAE;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB;CAKF;AAED,qBAAa,cAAe,SAAQ,QAAQ;gBAC9B,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;CAI1E;AAED,qBAAa,cAAe,SAAQ,QAAQ;gBAC9B,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;CAItC;AAED;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,QAAQ;gBAC7B,IAAI,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO;CAQ5C"}
|
package/dist/errors.js
CHANGED
|
@@ -57,4 +57,20 @@ export class OHMConfigError extends OHMError {
|
|
|
57
57
|
this.name = "OHMConfigError";
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Thrown when the caller's `AbortSignal` fires (e.g. a React component
|
|
62
|
+
* unmounts mid-extract, or the user navigates away). Carries `code:
|
|
63
|
+
* "aborted"` so callers can distinguish cancellation from genuine
|
|
64
|
+
* server / network failures.
|
|
65
|
+
*/
|
|
66
|
+
export class OHMAbortError extends OHMError {
|
|
67
|
+
constructor(opts = {}) {
|
|
68
|
+
super({
|
|
69
|
+
code: "aborted",
|
|
70
|
+
message: opts.message || "Request aborted by caller",
|
|
71
|
+
status: 0,
|
|
72
|
+
});
|
|
73
|
+
this.name = "OHMAbortError";
|
|
74
|
+
}
|
|
75
|
+
}
|
|
60
76
|
//# sourceMappingURL=errors.js.map
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,IAAI,CAAS;IACb,MAAM,CAAS;IACf,SAAS,CAAU;IAC5B,YAAY,IAKX;QACC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAClC,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,QAAQ;IACxC,YAAY,IAA6D;QACvE,KAAK,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,QAAQ;IACpC,aAAa,CAAU;IAChC,YAAY,IAKX;QACC,KAAK,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,QAAQ;IACrC,MAAM,CAAY;IAC3B,YAAY,IAKX;QACC,KAAK,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAC1C,YAAY,IAA6D;QACvE,KAAK,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAC1C,YAAY,IAAyB;QACnC,KAAK,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,IAAI,CAAS;IACb,MAAM,CAAS;IACf,SAAS,CAAU;IAC5B,YAAY,IAKX;QACC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAClC,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,QAAQ;IACxC,YAAY,IAA6D;QACvE,KAAK,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,QAAQ;IACpC,aAAa,CAAU;IAChC,YAAY,IAKX;QACC,KAAK,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,QAAQ;IACrC,MAAM,CAAY;IAC3B,YAAY,IAKX;QACC,KAAK,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAC1C,YAAY,IAA6D;QACvE,KAAK,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAC1C,YAAY,IAAyB;QACnC,KAAK,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,aAAc,SAAQ,QAAQ;IACzC,YAAY,OAA6B,EAAE;QACzC,KAAK,CAAC;YACJ,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,2BAA2B;YACpD,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC"}
|
package/dist/phi.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PHI helpers — used when an API has `redactPHI: true` configured in
|
|
3
|
+
* Studio. The server replaces patient identifiers with typed tokens
|
|
4
|
+
* before extraction; the response carries the tokens. Customers who
|
|
5
|
+
* need the original strings restore them client-side via this helper.
|
|
6
|
+
*
|
|
7
|
+
* const { data, phiTokenMap } = await ohm.extract<MyData>({ apiSlug, text });
|
|
8
|
+
* const restored = restoreTokens(data, phiTokenMap ?? {});
|
|
9
|
+
* // restored.patientName: "Mr Rajesh" (was "[PATIENT_1]" in `data`)
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Walk a JSON value and replace any string field that EXACTLY equals
|
|
13
|
+
* a key of `tokenMap` with the corresponding original string. Pure —
|
|
14
|
+
* never mutates the input. Conservative — only swaps full-string
|
|
15
|
+
* matches, never partial substring replacements (avoids accidentally
|
|
16
|
+
* mangling a clinical note that happens to contain the token text).
|
|
17
|
+
*
|
|
18
|
+
* Use this AFTER the server extraction returns. The token-map only
|
|
19
|
+
* exists when `redactPHI` was on; otherwise this function is a no-op
|
|
20
|
+
* deep clone.
|
|
21
|
+
*/
|
|
22
|
+
export declare function restoreTokens<T>(data: T, tokenMap: Record<string, string>): T;
|
|
23
|
+
//# sourceMappingURL=phi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phi.d.ts","sourceRoot":"","sources":["../src/phi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAqB7E"}
|
package/dist/phi.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PHI helpers — used when an API has `redactPHI: true` configured in
|
|
3
|
+
* Studio. The server replaces patient identifiers with typed tokens
|
|
4
|
+
* before extraction; the response carries the tokens. Customers who
|
|
5
|
+
* need the original strings restore them client-side via this helper.
|
|
6
|
+
*
|
|
7
|
+
* const { data, phiTokenMap } = await ohm.extract<MyData>({ apiSlug, text });
|
|
8
|
+
* const restored = restoreTokens(data, phiTokenMap ?? {});
|
|
9
|
+
* // restored.patientName: "Mr Rajesh" (was "[PATIENT_1]" in `data`)
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Walk a JSON value and replace any string field that EXACTLY equals
|
|
13
|
+
* a key of `tokenMap` with the corresponding original string. Pure —
|
|
14
|
+
* never mutates the input. Conservative — only swaps full-string
|
|
15
|
+
* matches, never partial substring replacements (avoids accidentally
|
|
16
|
+
* mangling a clinical note that happens to contain the token text).
|
|
17
|
+
*
|
|
18
|
+
* Use this AFTER the server extraction returns. The token-map only
|
|
19
|
+
* exists when `redactPHI` was on; otherwise this function is a no-op
|
|
20
|
+
* deep clone.
|
|
21
|
+
*/
|
|
22
|
+
export function restoreTokens(data, tokenMap) {
|
|
23
|
+
if (data == null || typeof data !== "object") {
|
|
24
|
+
if (typeof data === "string" && data in tokenMap) {
|
|
25
|
+
return tokenMap[data];
|
|
26
|
+
}
|
|
27
|
+
return data;
|
|
28
|
+
}
|
|
29
|
+
if (Array.isArray(data)) {
|
|
30
|
+
return data.map((v) => restoreTokens(v, tokenMap));
|
|
31
|
+
}
|
|
32
|
+
const out = {};
|
|
33
|
+
for (const [k, v] of Object.entries(data)) {
|
|
34
|
+
if (typeof v === "string" && v in tokenMap) {
|
|
35
|
+
out[k] = tokenMap[v];
|
|
36
|
+
}
|
|
37
|
+
else if (v && typeof v === "object") {
|
|
38
|
+
out[k] = restoreTokens(v, tokenMap);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
out[k] = v;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return out;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=phi.js.map
|
package/dist/phi.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phi.js","sourceRoot":"","sources":["../src/phi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAI,IAAO,EAAE,QAAgC;IACxE,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC;YACjD,OAAO,QAAQ,CAAC,IAAI,CAAiB,CAAC;QACxC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAiB,CAAC;IACrE,CAAC;IACD,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAA+B,CAAC,EAAE,CAAC;QACrE,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC;YAC3C,GAAG,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YACtC,GAAG,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IACD,OAAO,GAAQ,CAAC;AAClB,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -60,7 +60,61 @@ export interface UsageEvent {
|
|
|
60
60
|
latencyMs: number;
|
|
61
61
|
retries: number;
|
|
62
62
|
}
|
|
63
|
-
|
|
63
|
+
/**
|
|
64
|
+
* Mixin for request-scoped controls. Every public method accepts these.
|
|
65
|
+
*
|
|
66
|
+
* - `signal` — pass an `AbortController.signal` to cancel the request.
|
|
67
|
+
* React hooks auto-attach a signal that fires on unmount, so a user
|
|
68
|
+
* navigating away never debits a half-finished extraction.
|
|
69
|
+
* - `onProgress` — multipart-upload methods (`audio.transcribe`,
|
|
70
|
+
* `audio.extract`) emit upload progress events. No-op for JSON
|
|
71
|
+
* methods (`extract`, `summarize`, `insights`).
|
|
72
|
+
*/
|
|
73
|
+
export interface RequestOptions {
|
|
74
|
+
signal?: AbortSignal;
|
|
75
|
+
/**
|
|
76
|
+
* Idempotency key for de-duplication. Send the same key on retry —
|
|
77
|
+
* the server replays the cached response if the key matches a prior
|
|
78
|
+
* call from the same org within 24 h. Stripe / Twilio convention.
|
|
79
|
+
* Sent as the `Idempotency-Key` HTTP header.
|
|
80
|
+
*/
|
|
81
|
+
idempotencyKey?: string;
|
|
82
|
+
}
|
|
83
|
+
export interface UploadProgressEvent {
|
|
84
|
+
/** Bytes uploaded so far. */
|
|
85
|
+
loaded: number;
|
|
86
|
+
/** Total bytes (0 if unknown — RN polyfills sometimes can't measure). */
|
|
87
|
+
total: number;
|
|
88
|
+
/** loaded/total × 100, rounded to one decimal. 0 when total is unknown. */
|
|
89
|
+
percent: number;
|
|
90
|
+
}
|
|
91
|
+
export interface UploadOptions extends RequestOptions {
|
|
92
|
+
onProgress?: (event: UploadProgressEvent) => void;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Audit fields hospitals attach to every extraction. Stamped on the
|
|
96
|
+
* `StudioInvocation` row so the hospital can later answer "every
|
|
97
|
+
* extraction touching Patient X" or "every call recorded by user
|
|
98
|
+
* Y" — without OHM ever seeing raw PHI.
|
|
99
|
+
*
|
|
100
|
+
* - `patientHash` — opaque hash of the hospital's patient identifier
|
|
101
|
+
* (ABHA 14-digit ID, internal MRN, IPD number). Hash on the
|
|
102
|
+
* hospital side; OHM stores the hash only.
|
|
103
|
+
* - `recordedById` — verified user id from the hospital's session
|
|
104
|
+
* token. The hospital is the source of truth on identity.
|
|
105
|
+
*
|
|
106
|
+
* - `idempotencyKey` — a stable client-generated key (UUID v4 is
|
|
107
|
+
* fine). The same key in the same org within 24 h short-circuits
|
|
108
|
+
* to the cached response. Use for mobile retries to prevent
|
|
109
|
+
* duplicate chart entries. Sent as the `Idempotency-Key` HTTP
|
|
110
|
+
* header (Stripe / Twilio convention).
|
|
111
|
+
*/
|
|
112
|
+
export interface AuditOptions {
|
|
113
|
+
patientHash?: string;
|
|
114
|
+
recordedById?: string;
|
|
115
|
+
idempotencyKey?: string;
|
|
116
|
+
}
|
|
117
|
+
export interface ExtractInput extends RequestOptions, AuditOptions {
|
|
64
118
|
apiSlug: string;
|
|
65
119
|
text: string;
|
|
66
120
|
inputs?: Record<string, unknown>;
|
|
@@ -71,6 +125,13 @@ export interface ExtractResult<T = Record<string, unknown>> {
|
|
|
71
125
|
apiSlug: string;
|
|
72
126
|
version?: string;
|
|
73
127
|
insights?: unknown;
|
|
128
|
+
/**
|
|
129
|
+
* Token → original-string map populated only when the API has
|
|
130
|
+
* `redactPHI: true` enabled. Pair with `restoreTokens(data, map)`
|
|
131
|
+
* to swap tokens like `[PATIENT_1]` back to the original string in
|
|
132
|
+
* any field that should keep the patient-facing identifier.
|
|
133
|
+
*/
|
|
134
|
+
phiTokenMap?: Record<string, string>;
|
|
74
135
|
}
|
|
75
136
|
/**
|
|
76
137
|
* Who is speaking on the recording. The two supported modes:
|
|
@@ -83,7 +144,7 @@ export interface ExtractResult<T = Record<string, unknown>> {
|
|
|
83
144
|
* plan to the doctor. Use for full visit recordings.
|
|
84
145
|
*/
|
|
85
146
|
export type SpeakerMode = "doctor" | "doctor_patient";
|
|
86
|
-
export interface AudioTranscribeInput {
|
|
147
|
+
export interface AudioTranscribeInput extends UploadOptions, AuditOptions {
|
|
87
148
|
/** Platform-specific file shape resolved by the wrapper. */
|
|
88
149
|
file: any;
|
|
89
150
|
language?: string;
|
|
@@ -104,7 +165,7 @@ export interface AudioExtractResult<T = Record<string, unknown>> extends AudioTr
|
|
|
104
165
|
data: T;
|
|
105
166
|
apiSlug: string;
|
|
106
167
|
}
|
|
107
|
-
export interface SummarizeInput {
|
|
168
|
+
export interface SummarizeInput extends RequestOptions {
|
|
108
169
|
text: string;
|
|
109
170
|
style: "patient" | "handover" | "executive" | "progress-note";
|
|
110
171
|
maxLines?: number;
|
|
@@ -113,7 +174,7 @@ export interface SummarizeInput {
|
|
|
113
174
|
export interface SummarizeResult {
|
|
114
175
|
summary: string;
|
|
115
176
|
}
|
|
116
|
-
export interface InsightsInput {
|
|
177
|
+
export interface InsightsInput extends RequestOptions, AuditOptions {
|
|
117
178
|
apiSlug: string;
|
|
118
179
|
transcript: string;
|
|
119
180
|
priorNoteSummary?: string;
|
|
@@ -121,6 +182,73 @@ export interface InsightsInput {
|
|
|
121
182
|
export interface InsightsResult<T = unknown> {
|
|
122
183
|
insights: T;
|
|
123
184
|
}
|
|
185
|
+
/**
|
|
186
|
+
* One entry returned by `ohm.apis.list()`. Useful for typeahead pickers
|
|
187
|
+
* and dashboards that need to enumerate the customer's published Studio
|
|
188
|
+
* APIs without hard-coding slug strings.
|
|
189
|
+
*/
|
|
190
|
+
export interface ApiSummary {
|
|
191
|
+
slug: string;
|
|
192
|
+
name: string;
|
|
193
|
+
status: "DRAFT" | "PUBLISHED" | "ARCHIVED";
|
|
194
|
+
version: number;
|
|
195
|
+
/** ISO-8601 timestamp of the last publish, when available. */
|
|
196
|
+
updatedAt?: string;
|
|
197
|
+
}
|
|
198
|
+
export interface ListApisOptions extends RequestOptions {
|
|
199
|
+
/** Filter by status. Defaults to PUBLISHED only. */
|
|
200
|
+
status?: "DRAFT" | "PUBLISHED" | "ARCHIVED" | "ALL";
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Full schema detail for one Studio API — fetched via
|
|
204
|
+
* `ohm.apis.get(slug)`. Contains the published schema + system prompt
|
|
205
|
+
* + inputs the customer's app may need at runtime (e.g. dynamic
|
|
206
|
+
* playground UIs, server-side schema validation).
|
|
207
|
+
*/
|
|
208
|
+
export interface ApiDetail extends ApiSummary {
|
|
209
|
+
description?: string;
|
|
210
|
+
schema?: unknown;
|
|
211
|
+
systemPrompt?: string;
|
|
212
|
+
inputs?: unknown;
|
|
213
|
+
publishedSchema?: unknown;
|
|
214
|
+
publishedSystemPrompt?: string;
|
|
215
|
+
publishedInputs?: unknown;
|
|
216
|
+
publishedAt?: string;
|
|
217
|
+
}
|
|
218
|
+
export interface GetApiOptions extends RequestOptions {
|
|
219
|
+
/** Include archived APIs in the lookup. Default false. */
|
|
220
|
+
includeArchived?: boolean;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Slim invocation row from `ohm.invocations.searchByPatient(...)` —
|
|
224
|
+
* suitable for audit dashboards. The full transcript / extracted
|
|
225
|
+
* JSON is NEVER returned via this surface for compliance reasons;
|
|
226
|
+
* only metadata (timing, tokens, recordedById, status, audio seconds).
|
|
227
|
+
*/
|
|
228
|
+
export interface InvocationSummary {
|
|
229
|
+
id: string;
|
|
230
|
+
apiId: string | null;
|
|
231
|
+
endpoint: string;
|
|
232
|
+
status: string;
|
|
233
|
+
latencyMs: number;
|
|
234
|
+
audioSeconds: number | null;
|
|
235
|
+
totalTokens: number | null;
|
|
236
|
+
recordedById: string | null;
|
|
237
|
+
createdAt: string;
|
|
238
|
+
}
|
|
239
|
+
export interface SearchInvocationsByPatientOptions extends RequestOptions {
|
|
240
|
+
patientHash: string;
|
|
241
|
+
/** How many days back to search. Default 90 (server-capped). */
|
|
242
|
+
sinceDays?: number;
|
|
243
|
+
/** Max rows. Default 100, capped at 500 server-side. */
|
|
244
|
+
limit?: number;
|
|
245
|
+
}
|
|
246
|
+
export interface SearchInvocationsByPatientResult {
|
|
247
|
+
patientHash: string;
|
|
248
|
+
sinceDays: number;
|
|
249
|
+
total: number;
|
|
250
|
+
invocations: InvocationSummary[];
|
|
251
|
+
}
|
|
124
252
|
/**
|
|
125
253
|
* Streaming chunk emitted by `ohm.audio.extract.stream(...)`.
|
|
126
254
|
* Server emits, in order:
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,gBAAgB,CAAC;AAEhD,4CAA4C;AAC5C,MAAM,WAAW,gBAAgB;IAC/B,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACtC;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;;;;;;OASG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;QACtB,OAAO,EAAE,aAAa,CAAC;QACvB,UAAU,EAAE,qBAAqB,CAAC;QAClC,YAAY,EAAE,kBAAkB,CAAC;QACjC,SAAS,EAAE,eAAe,CAAC;QAC3B,QAAQ,EAAE,cAAc,CAAC;KAC1B,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACxD,IAAI,EAAE,CAAC,CAAC;IACR,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ohm_studio/sdk-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Shared core for @ohm/sdk and @ohm/sdk-react-native — http client, types, errors, retry, streaming. Use one of the platform wrappers instead of consuming this directly.",
|
|
5
5
|
"license": "MIT",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"ohm",
|
|
8
|
+
"ohm-studio",
|
|
9
|
+
"clinical",
|
|
10
|
+
"ehr",
|
|
11
|
+
"fhir",
|
|
12
|
+
"stt",
|
|
13
|
+
"extraction",
|
|
14
|
+
"sdk-core"
|
|
15
|
+
],
|
|
6
16
|
"publishConfig": {
|
|
7
17
|
"access": "public"
|
|
8
18
|
},
|