augnitoambientsdk
Version:
Use this typescript SDK to integrate Augnito’s Ambient Tech within your EMR. To get access credentials or know more about how Augnito Ambient can benefit you, please visit our website and connect with our sales team: https://augnito.ai/
191 lines (173 loc) • 6.41 kB
text/typescript
import AmbientConfig from "../config/AmbientConfig";
import { NoteTypeConfig } from "../config/NoteTypeConfig";
import { Guard } from "../utils/Guard";
import { BaseAPI } from "./BaseAPI";
export class AmbientRestAPI extends BaseAPI {
private _baseUrl: string;
constructor(private _config: AmbientConfig) {
super();
this._baseUrl = `https://${_config.server}/ambient/v1`;
}
private getURL(path: string): string {
return `${this._baseUrl}${path}`;
}
async GetNoteParams(): Promise<any> {
const url = this.getURL("/note-params");
const requestData = {
SubscriptionCode: this._config.subscriptionCode,
AccessKey: this._config.accessKey,
UserTag: this._config.userTag,
};
return await this.makePostRequest(url, requestData);
}
async ListJobs(_pageSize: number, _pageId?: string): Promise<any> {
Guard.Against.NullOrEmpty(_pageSize, "Page Size");
const url = this.getURL("/list-jobs");
const requestData = {
SubscriptionCode: this._config.subscriptionCode,
AccessKey: this._config.accessKey,
UserTag: this._config.userTag,
PageSize: _pageSize,
PageID: _pageId,
};
return await this.makePostRequest(url, requestData);
}
async FetchJob(_jobId: string): Promise<any> {
Guard.Against.NullOrEmpty(_jobId, "Job Id");
const url = this.getURL("/fetch-job");
const requestData = {
SubscriptionCode: this._config.subscriptionCode,
AccessKey: this._config.accessKey,
UserTag: this._config.userTag,
JobID: _jobId,
};
return await this.makePostRequest(url, requestData);
}
async SendFinalNote(_jobId: string, _noteDate: string): Promise<any> {
Guard.Against.NullOrEmpty(_jobId, "Job Id");
Guard.Against.NullOrEmpty(_noteDate, "Note Data");
const url = this.getURL("/send-final-note");
const requestData = {
SubscriptionCode: this._config.subscriptionCode,
AccessKey: this._config.accessKey,
UserTag: this._config.userTag,
JobID: _jobId,
SoapData: _noteDate,
};
return await this.makePostRequest(url, requestData);
}
async DeleteNotes(_jobIds: string[]): Promise<any> {
Guard.Against.NullOrEmpty(_jobIds, "Job Id");
const url = this.getURL("/delete-job");
const requestData = {
SubscriptionCode: this._config.subscriptionCode,
AccessKey: this._config.accessKey,
UserTag: this._config.userTag,
JobIDs: _jobIds,
};
return await this.makePostRequest(url, requestData);
}
async RenameNoteTitle(_jobId: string, _newJobName: string): Promise<any> {
Guard.Against.NullOrEmpty(_jobId, "Job Id");
Guard.Against.NullOrEmpty(_newJobName, "Job Name");
const url = this.getURL("/rename-job");
const requestData = {
SubscriptionCode: this._config.subscriptionCode,
AccessKey: this._config.accessKey,
UserTag: this._config.userTag,
JobID: _jobId,
JobName: _newJobName,
};
return await this.makePostRequest(url, requestData);
}
async DownloadNotePDF(_jobId: string, _noteType: NoteTypeConfig, _specialityId: number, _language?: string, _personnelInfo?: string, _regenerateNote?: boolean): Promise<any> {
Guard.Against.NullOrEmpty(_jobId, "Job Id");
const url = this.getURL("/download-pdf");
var personalInfo = _personnelInfo
if (!personalInfo || personalInfo == '') {
personalInfo = '{"PatientName":"","PatientID":"","Age":"","Gender":"","ReceivingDoctor":"","DoctorName":"","DoctorDesignation":"","DoctorEmail":""}'
}
const requestData = {
SubscriptionCode: this._config.subscriptionCode,
AccessKey: this._config.accessKey,
UserTag: this._config.userTag,
JobID: _jobId,
NoteType: _noteType as number,
Language: _language ?? 'English',
SpecialityID: _specialityId,
Regenerate: _regenerateNote ?? false,
PersonnelInfo: personalInfo
};
return await this.makePostRequest(url, requestData);
}
async EndJob(_jobId: string): Promise<any> {
Guard.Against.NullOrEmpty(_jobId, "Job Id");
const url = this.getURL("/end-job");
const requestData = {
SubscriptionCode: this._config.subscriptionCode,
AccessKey: this._config.accessKey,
UserTag: this._config.userTag,
JobID: _jobId,
};
return await this.makePostRequest(url, requestData);
}
async UpdatePatientContext(_jobId: string, _context: string, _replace: boolean) {
Guard.Against.NullOrEmpty(_jobId, "Job Id");
Guard.Against.NullOrEmpty(_context, "Patient Context");
const url = this.getURL('/patient-context')
const requestData = {
SubscriptionCode: this._config.subscriptionCode,
AccessKey: this._config.accessKey,
UserTag: this._config.userTag,
JobID: _jobId,
NewContext: _context,
Replace: _replace
}
return await this.makePostRequest(url, requestData);
}
async GenerateSuggestions(
_jobId: string,
_regenerate: boolean,
_note?: string,
_context?: string,
_codes?: string
) {
Guard.Against.NullOrEmpty(_jobId, "Job Id");
const url = this.getURL('/cdi');
const requestData = {
SubscriptionCode: this._config.subscriptionCode,
AccessKey: this._config.accessKey,
UserTag: this._config.userTag,
JobID: _jobId,
Regenerate: _regenerate,
SoapData: _note,
PatientContext: _context,
Codes: _codes
};
return await this.makePostRequest(url, requestData);
}
async ModifyGeneratedNote(_jobId: string, _noteType: NoteTypeConfig, _modifiedNote?: string) {
Guard.Against.NullOrEmpty(_jobId, "Job Id");
const url = this.getURL('/modify-note');
const requestData = {
SubscriptionCode: this._config.subscriptionCode,
AccessKey: this._config.accessKey,
UserTag: this._config.userTag,
JobID: _jobId,
NoteType: _noteType as number,
NewNote: _modifiedNote ?? ''
};
return await this.makePostRequest(url, requestData);
}
async FetchTranscription(_jobId: string) {
Guard.Against.NullOrEmpty(_jobId, "Job Id");
const url = this.getURL('/fetch-transcript');
const requestData = {
SubscriptionCode: this._config.subscriptionCode,
AccessKey: this._config.accessKey,
UserTag: this._config.userTag,
JobID: _jobId,
};
return await this.makePostRequest(url, requestData);
}
}