UNPKG

@causalfoundry/js-sdk

Version:

Causal Foundry WEB SDK (JS/TS)

86 lines (79 loc) 2.27 kB
import { injectEvent } from "../../core/injector"; import { AppointmentProperties, EncounterProperties, HcwCatalogModel, PatientCatalogModel, PatientProperties, PatientMgmtCatalogType, PatientMgmtEventType, DiagnosisProperties, } from "./typings"; import { validateAppointmentEvent, validateDiagnosisEvent, validateEncounterEvent, validatePatientEvent, } from "./validators"; import { validateAndSaveHCWCatalog, validateAndSavePatientCatalog, } from "./validators/PatientMgmtCatalogValidator"; /** * logPatientModuleEvent is to log the selection of the module selected by the user in the app. */ const logIngestEvent = async ( eventType: PatientMgmtEventType, properties: PatientProperties | EncounterProperties | AppointmentProperties, sendNow = false, eventTime?: string ) => { let checkProps: | PatientProperties | EncounterProperties | AppointmentProperties | null = null; switch (eventType) { case PatientMgmtEventType.Patient: checkProps = validatePatientEvent(properties as PatientProperties); break; case PatientMgmtEventType.Encounter: checkProps = validateEncounterEvent(properties as EncounterProperties); break; case PatientMgmtEventType.Appointment: checkProps = validateAppointmentEvent( properties as AppointmentProperties ); break; case PatientMgmtEventType.Diagnosis: checkProps = validateDiagnosisEvent(properties as DiagnosisProperties); break; default: return; // Exit early if eventType is unrecognized } if (!checkProps) { return; // Exit if the properties validation failed } injectEvent(eventType, properties.action, properties, sendNow, "", eventTime); }; const logCatalogEvent = ( subjectId: string, catalogType: PatientMgmtCatalogType, catalogModel: HcwCatalogModel | PatientCatalogModel ) => { switch (catalogType) { case PatientMgmtCatalogType.UserHcw: validateAndSaveHCWCatalog(subjectId, catalogModel as HcwCatalogModel); break; case PatientMgmtCatalogType.Patient: validateAndSavePatientCatalog( subjectId, catalogModel as PatientCatalogModel ); break; } }; export default { logIngestEvent, logCatalogEvent, };