@causalfoundry/js-sdk
Version:
Causal Foundry WEB SDK (JS/TS)
485 lines (432 loc) • 11.4 kB
text/typescript
// ENUMS
import {Country, DiagnosisQuestionItem} from "../../core/commonTypes";
// ENUMS
export enum PatientMgmtEventType {
Patient = "patient",
Encounter = "encounter",
Appointment = "appointment",
Other = "other",
}
export enum PatientMgmtCatalogType {
UserHcw = "user_chw",
Patient = "patient"
}
export enum HcwSiteCategory {
Facility = "facility",
Community = "community",
PatientAddress = "patient_address",
Virtual = "virtual",
Other = "other"
}
export enum AppointmentFollowupType {
PhoneCall = "phone_call",
SMS = "sms",
WhatsApp = "whatsapp",
HouseVisit = "house_visit",
Other = "other"
}
export enum AppointmentStatus {
Upcoming = "upcoming",
Missed = "missed",
Attended = "attended",
Other = "other"
}
export enum CounselingType {
Lifestyle = "lifestyle",
Psychological = "psychological",
Other = "other"
}
export enum DiagnosisCategory {
Computed = "computed",
Given = "given",
Other = "other"
}
export enum DiagnosisQuestionnaireCategory {
MedicalReview = "medical_review",
Assessment = "assessment",
Diagnostic = "diagnostic",
Other = "other"
}
export enum DiagnosisQuestionnaireOutcomeType {
RiskStatus = "risk_status",
RiskScore = "risk_score",
Other = "other"
}
export enum DiagnosisStatusValueType {
Positive= "positive",
Negative= "negative",
Recovered= "recovered",
Unknown= "unknown",
NA = "n_a",
Other = "other"
}
export enum DiagnosisStatusRiskType {
Low = "low",
High = "high",
Unknown = "unknown",
NA = "n_a",
Other = "other"
}
export enum DiagnosisSubType {
Age = "age",
Gender = "gender",
Height = "height",
Weight = "weight",
Smoker = "smoker",
BloodPressure = "blood_pressure",
BloodPressureSystolic = "blood_pressure_systolic",
BloodPressureDiastolic = "blood_pressure_diastolic",
MUAC = "muac",
BloodGlucose = "blood_glucose",
HbA1c = "hbA1c",
Temperature = "temperature",
Bmi = "bmi",
Cvd = "cvd",
Phq4 = "phq_4",
Phq9 = "phq_9",
Gad7 = "gad_7",
PregnancyStatus = "pregnancy_status",
PregnancyDangerSigns = "pregnancy_danger_signs",
SuicidalIdeation = "suicidal_ideation",
HighRiskPregnancy = "high_risk_pregnancy",
Other = "other"
}
export enum DiagnosisSymptomType {
Bio = "bio",
HIV = "hiv",
NCD = "ncd",
TB = "tb",
ECD = "ecd",
Diabetes = "diabetes",
Hypertension = "hypertension",
Pregnancy = "pregnancy",
MentalHealth = "mental_health",
SubstanceUseDisorder = "substance_use_disorder",
AdolescentHealth = "adolescent_health",
GeneralScreening = "general_screening",
Gynecologic = "gynecologic",
Antenatal = "antenatal",
Postnatal = "postnatal",
CervicalCancer = "cervical_cancer",
Lifestyle = "lifestyle",
Psychological = "psychological",
GenderBasedViolence = "gender_based_violence",
SexualBehaviour = "sexual_behaviour",
EconomicStrength = "economic_strengthening",
Other = "other",
}
export enum DiagnosisType {
Bio = "bio",
HIV = "hiv",
NCD = "ncd",
TB = "tb",
ECD = "ecd",
Diabetes = "diabetes",
Hypertension = "hypertension",
Pregnancy = "pregnancy",
MentalHealth = "mental_health",
SubstanceUseDisorder = "substance_use_disorder",
AdolescentHealth = "adolescent_health",
GeneralScreening = "general_screening",
Gynecologic = "gynecologic",
Antenatal = "antenatal",
Postnatal = "postnatal",
CervicalCancer = "cervical_cancer",
Lifestyle = "lifestyle",
Psychological = "psychological",
GenderBasedViolence = "gender_based_violence",
SexualBehaviour = "sexual_behaviour",
EconomicStrength = "economic_strengthening",
Other = "other",
}
export enum EncounterType {
Screening = "screening",
Assessment = "assessment",
Enrolment = "enrolment",
MedicalReview = "medical_review",
Counseling = "counseling",
Other = "other"
}
export enum FrequencyType {
Daily = "daily",
Days = "days",
Weeks = "weeks",
Months = "months",
Other = "other"
}
export enum HcwItemAction {
View = "view",
Add = "add",
Update = "update",
Remove = "remove",
Done = "done",
Other = "other"
}
export enum PatientType {
Triage = "triage",
Outpatient = "outpatient",
Inpatient = "inpatient",
Pharmacy = "pharmacy",
DoorToDoor = "door_to_door",
Camp = "camp",
Other = "other"
}
export enum PrescriptionItemFrequency {
AM = "AM",
PM = "PM",
OD = "OD",
BD = "BD",
TDS = "TDS",
QDS = "QDS",
OM = "OM",
ON = "ON",
CC = "CC",
PC = "PC",
AC = "AC",
PRN = "PRN",
Other = "other"
}
export enum PrescriptionItemFormulationType {
Tablet = "tablet",
Capsule = "capsule",
Syrup = "syrup",
Injection = "injection",
Insulin = "insulin",
Contraceptive = "contraceptive",
Other = "other"
}
export enum ScheduleItemType {
MedicalReview = "medical_review",
Assessment = "assessment",
Other = "other"
}
// Item Objects
export interface AppointmentItem {
id: string,
hcw_id: string,
category: HcwSiteCategory,
status: AppointmentStatus,
time: number,
is_time_sensitive: boolean,
type_list: Array<ScheduleItemType>,
sub_type_list: Array<DiagnosisType>,
update?: AppointmentUpdateItem,
missed?: AppointmentMissedItem,
}
export interface AppointmentUpdateItem {
id: string,
reason: string,
prev_time: number,
}
export interface AppointmentMissedItem {
id: string,
type: AppointmentFollowupType,
time: number,
response: string,
}
export interface CounselingPlanItem {
name: string,
action: HcwItemAction,
clinician_notes?: string,
assessment_remarks?: string,
counselor_notes?: string,
referral_date?: number,
assessment_date?: number,
referred_by?: string,
assessed_by?: string,
remarks?: string
}
export interface ImmunizationItem {
id: string,
action: HcwItemAction,
type: string,
dose: number,
status: boolean,
date?: number,
remarks?: string
}
export interface DiagnosisItem {
type: DiagnosisType,
sub_type: DiagnosisSubType,
category: DiagnosisCategory,
value: any,
unit: string,
observation_time?: number,
remarks?: string,
}
export interface DiagnosisOutcomeItem {
type: DiagnosisQuestionnaireOutcomeType,
sub_type?: string,
value: any,
remarks?: string,
}
export interface DiagnosisQuestionnaireObject {
type: DiagnosisType,
sub_type: DiagnosisSubType,
category: DiagnosisQuestionnaireCategory,
question_list: Array<DiagnosisQuestionItem>,
outcome_list: Array<DiagnosisOutcomeItem>,
remarks?: string,
}
export interface DiagnosisStatusItem {
type: DiagnosisType,
sub_type?: string,
action: HcwItemAction,
status: DiagnosisStatusValueType,
risk: DiagnosisStatusRiskType,
diagnosis_date: number,
is_confirmed?: boolean,
remarks?: string,
stage?: string,
treatment_status?: string
}
export interface DiagnosisSymptomItem {
type: DiagnosisSymptomType,
symptoms_list: Array<string>,
remarks?: string
}
export interface DiagnosticElementItem {
id: string,
investigation_list: Array<InvestigationItem>,
biometric_list: Array<DiagnosisItem>,
sign_symptom_list: Array<DiagnosisSymptomItem>,
treatment_adherence_list: Array<TreatmentAdherenceItem>,
health_questionnaire_list: Array<DiagnosisQuestionnaireObject>
}
export interface EncounterSummaryObject {
id: string,
appointment_id?: string,
encounter_time: number,
hcw_id_list: Array<string>,
prev_diagnosis_status_list: Array<DiagnosisStatusItem>,
diagnosis_status_list: Array<DiagnosisStatusItem>,
prev_treatment_plan?: TreatmentPlanItem,
treatment_plan?: TreatmentPlanItem,
main_complaints_list: Array<string>,
diagnostic_elements?: DiagnosticElementItem,
pregnancy_details?: PregnancyDetailObject,
counseling_list?: Array<CounselingPlanItem>,
immunization_list?: Array<ImmunizationItem>,
remarks?: string,
is_followup_id?: string,
is_referral_id?: string,
has_followup?: boolean,
has_referral?: boolean,
}
export interface InvestigationItem {
name: string,
test_value: string,
test_unit: string,
ordered_date: number,
tested_date: number,
action: HcwItemAction,
remarks: string
}
export interface PregnancyDetailObject {
pregnancy_status: boolean,
last_menstrual_period?: number,
high_risk: boolean,
gravida?: number,
parity?: number,
n_fetus?: number,
neonatal_outcome?: string,
maternal_outcome?: string,
}
export interface PrescriptionItem {
id: string,
name: string,
dosage_value?: number,
dosage_unit: string,
formulation: PrescriptionItemFormulationType,
type: DiagnosisType,
frequency: PrescriptionItemFrequency,
prescribed_days?: number,
dispensed_days?: number,
prescription_date?: number,
action: HcwItemAction,
remarks?: string
}
export interface ScheduleItem {
type: ScheduleItemType,
sub_type: DiagnosisType,
value: number,
frequency: FrequencyType,
action: HcwItemAction,
remarks?: string
start_date?: number,
end_date?: number
}
export interface TreatmentAdherenceItem {
type: string,
medication_adherence: string,
lack_adherence_reason?: string
remarks?: string
}
export interface TreatmentPlanItem {
followup_list: Array<ScheduleItem>,
prescription_list: Array<PrescriptionItem>,
investigation_list: Array<InvestigationItem>
}
// EVENT PROPERTIES
export interface PatientProperties {
patient_id: string,
site_id: string,
action: HcwItemAction,
is_from_gho: boolean,
category: HcwSiteCategory,
type: PatientType,
sub_type?: string,
biometric_list?: Array<DiagnosisItem>,
pregnancy_details?: PregnancyDetailObject,
registration_date?: number,
meta?: any
}
export interface EncounterProperties {
patient_id: string,
site_id: string,
action: HcwItemAction,
category: HcwSiteCategory,
type: EncounterType,
sub_type: DiagnosisType,
encounter_summary: EncounterSummaryObject,
meta?: any
}
export interface AppointmentProperties {
patient_id: string,
site_id: string,
action: HcwItemAction,
appointment: AppointmentItem,
meta?: any
}
// CATALOG VALUES
export interface HcwCatalogModel {
id : string,
name?: string,
role?: string,
site_id_list?: Array<string>,
supervisor_id_list?: Array<string>
}
export interface PatientCatalogModel {
id : string,
country?: Country,
region_state?: string,
city?: string,
profession?: string,
education_level?: string,
site_id_list?: Array<string>,
insurance_id?: string,
insurance_type?: string,
insurance_status?: boolean,
landmark?: string,
phone_number_category?: string,
program_id?: string,
family_id?: string,
hw_id_list?: Array<string>,
buddy_id_list?: Array<string>,
transport_mode?: string,
marital_status?: string,
employment_status?: string,
nationality?: string,
has_whatsapp?: boolean,
has_email?: boolean,
}