diff --git a/src/Common/constants.tsx b/src/Common/constants.tsx index 069a39e1539..23c02e389f3 100644 --- a/src/Common/constants.tsx +++ b/src/Common/constants.tsx @@ -330,7 +330,10 @@ export const CONSULTATION_SUGGESTION = [ { id: "OP", text: "OP Consultation" }, { id: "DC", text: "Domiciliary Care" }, { id: "DD", text: "Declare Death" }, -]; +] as const; + +export type ConsultationSuggestionValue = + (typeof CONSULTATION_SUGGESTION)[number]["id"]; export const ADMITTED_TO = [ { id: "1", text: "Isolation" }, diff --git a/src/Components/DeathReport/DeathReport.tsx b/src/Components/DeathReport/DeathReport.tsx index 9908b4fa852..3901996e119 100644 --- a/src/Components/DeathReport/DeathReport.tsx +++ b/src/Components/DeathReport/DeathReport.tsx @@ -115,8 +115,8 @@ export default function PrintDeathReport(props: { id: string }) { date_declared_positive: res.data?.date_declared_positive ? dayjs(res.data?.date_declared_positive).toDate() : "", - date_of_admission: res.data?.last_consultation?.admission_date - ? dayjs(res.data?.last_consultation?.admission_date).toDate() + date_of_admission: res.data?.last_consultation?.encounter_date + ? dayjs(res.data?.last_consultation?.encounter_date).toDate() : "", date_of_test: res.data?.date_of_test ? dayjs(res.data?.date_of_test).toDate() diff --git a/src/Components/Facility/ConsultationCard.tsx b/src/Components/Facility/ConsultationCard.tsx index 2c0fa54db21..c402853f366 100644 --- a/src/Components/Facility/ConsultationCard.tsx +++ b/src/Components/Facility/ConsultationCard.tsx @@ -63,14 +63,14 @@ export const ConsultationCard = (props: ConsultationProps) => { )} - {itemData.admitted && itemData.admission_date && ( + {itemData.admitted && itemData.encounter_date && (
Admitted on
- {formatDateTime(itemData.admission_date)} + {formatDateTime(itemData.encounter_date)} {itemData.is_readmission && ( { name: consultationData.suggestion === "A" ? `Admitted on ${formatDateTime( - consultationData.admission_date! + consultationData.encounter_date! )}` : consultationData.suggestion_text, }, @@ -345,19 +345,19 @@ export const ConsultationDetails = (props: any) => { {consultationData.admitted_to}
- {(consultationData.admission_date ?? - consultationData.discharge_date) && ( + {(consultationData.discharge_date ?? + consultationData.encounter_date) && (
{relativeTime( consultationData.discharge_date ? consultationData.discharge_date - : consultationData.admission_date + : consultationData.encounter_date )}
)}
- {consultationData.admission_date && - formatDateTime(consultationData.admission_date)} + {consultationData.encounter_date && + formatDateTime(consultationData.encounter_date)} {consultationData.discharge_date && ` - ${formatDateTime(consultationData.discharge_date)}`}
diff --git a/src/Components/Facility/ConsultationForm.tsx b/src/Components/Facility/ConsultationForm.tsx index 3207787a27d..72944389235 100644 --- a/src/Components/Facility/ConsultationForm.tsx +++ b/src/Components/Facility/ConsultationForm.tsx @@ -3,6 +3,7 @@ import * as Notification from "../../Utils/Notifications.js"; import { BedModel, FacilityModel } from "./models"; import { CONSULTATION_SUGGESTION, + ConsultationSuggestionValue, PATIENT_CATEGORIES, REVIEW_AT_CHOICES, TELEMEDICINE_ACTIONS, @@ -82,14 +83,14 @@ type FormDetails = { symptoms: number[]; other_symptoms: string; symptoms_onset_date?: Date; - suggestion: string; + suggestion: ConsultationSuggestionValue; route_to_facility?: RouteToFacility; patient: string; facility: string; admitted: BooleanStrings; admitted_to: string; category: string; - admission_date?: Date; + encounter_date?: Date; icu_admission_date?: Date; discharge_date: null; referred_to?: string; @@ -139,7 +140,7 @@ const initForm: FormDetails = { admitted: "false", admitted_to: "", category: "", - admission_date: new Date(), + encounter_date: new Date(), icu_admission_date: undefined, discharge_date: null, referred_to: "", @@ -375,7 +376,7 @@ export const ConsultationForm = (props: any) => { const formData = { ...res.data, symptoms_onset_date: isoStringToDate(res.data.symptoms_onset_date), - admission_date: isoStringToDate(res.data.admission_date), + encounter_date: isoStringToDate(res.data.encounter_date), icu_admission_date: isoStringToDate(res.data.icu_admission_date), admitted: res.data.admitted ? String(res.data.admitted) : "false", admitted_to: res.data.admitted_to ? res.data.admitted_to : "", @@ -485,15 +486,12 @@ export const ConsultationForm = (props: any) => { invalidForm = true; } return; - case "admission_date": - if ( - ["A", "DC"].includes(state.form.suggestion) && - !state.form[field] - ) { + case "encounter_date": + if (!state.form[field]) { errors[field] = "Field is required"; invalidForm = true; } - if (dayjs(state.form.admission_date).isBefore(dayjs("2000-01-01"))) { + if (dayjs(state.form.encounter_date).isBefore(dayjs("2000-01-01"))) { errors[field] = "Admission date cannot be before 01/01/2000"; invalidForm = true; } @@ -685,9 +683,7 @@ export const ConsultationForm = (props: any) => { suggestion: state.form.suggestion, route_to_facility: state.form.route_to_facility, admitted: state.form.suggestion === "A", - admission_date: ["A", "DC"].includes(state.form.suggestion) - ? state.form.admission_date - : undefined, + encounter_date: state.form.encounter_date, category: state.form.category, is_kasp: state.form.is_kasp, kasp_enabled_date: JSON.parse(state.form.is_kasp) ? new Date() : null, @@ -1134,7 +1130,7 @@ export const ConsultationForm = (props: any) => { label="Decision after consultation" {...selectField("suggestion")} options={CONSULTATION_SUGGESTION.filter( - ({ deprecated }) => !deprecated + (option) => !("deprecated" in option) )} />
@@ -1200,30 +1196,35 @@ export const ConsultationForm = (props: any) => { )} - {["A", "DC"].includes(state.form.suggestion) && ( -
+ - -
- )} + label={ + { + A: "Date & Time of Admission to the Facility", + DC: "Date & Time of Domiciliary Care commencement", + OP: "Date & Time of Out-patient visit", + DD: "Date & Time of Encounter", + HI: "Date & Time of Encounter", + R: "Date & Time of Encounter", + }[state.form.suggestion] + } + type="datetime-local" + value={dayjs(state.form.encounter_date).format( + "YYYY-MM-DDTHH:mm" + )} + max={dayjs().format("YYYY-MM-DDTHH:mm")} + /> +
{state.form.route_to_facility === 30 && (
({ ...form, ...updates })); }} required - min={dayjs( - consultationData?.admission_date ?? consultationData?.created_date - ).format("YYYY-MM-DDTHH:mm")} + min={dayjs(consultationData?.encounter_date).format( + "YYYY-MM-DDTHH:mm" + )} max={dayjs().format("YYYY-MM-DDTHH:mm")} error={ preDischargeForm.discharge_reason === "EXP" diff --git a/src/Components/Facility/TreatmentSummary.tsx b/src/Components/Facility/TreatmentSummary.tsx index 7adb4dcfbe2..8291e0e8ba4 100644 --- a/src/Components/Facility/TreatmentSummary.tsx +++ b/src/Components/Facility/TreatmentSummary.tsx @@ -140,7 +140,7 @@ const TreatmentSummary = (props: any) => { Date of admission : {consultationData.admitted - ? formatDateTime(consultationData.admission_date) + ? formatDateTime(consultationData.encounter_date) : " --/--/----"}
diff --git a/src/Components/Facility/models.tsx b/src/Components/Facility/models.tsx index 0cf0a4da986..c4a5196511d 100644 --- a/src/Components/Facility/models.tsx +++ b/src/Components/Facility/models.tsx @@ -5,6 +5,7 @@ import { AssetData, AssetLocationType } from "../Assets/AssetTypes"; import { UserBareMinimum } from "../Users/models"; import { RouteToFacility } from "../Common/RouteToFacilitySelect"; import { ConsultationDiagnosis, CreateDiagnosis } from "../Diagnosis/types"; +import { ConsultationSuggestionValue } from "../../Common/constants"; export interface LocalBodyModel { id: number; @@ -93,7 +94,7 @@ export type PatientCategory = | "Critical"; export interface ConsultationModel { - admission_date?: string; + encounter_date: string; icu_admission_date?: string; admitted?: boolean; test_id?: string; @@ -123,7 +124,7 @@ export interface ConsultationModel { referred_by_external?: string; transferred_from_location?: LocationModel["id"]; transferred_from_location_object?: LocationModel; - suggestion?: string; + suggestion?: ConsultationSuggestionValue; patient_no?: string; route_to_facility?: RouteToFacility; is_kasp?: boolean; diff --git a/src/Components/Patient/ManagePatients.tsx b/src/Components/Patient/ManagePatients.tsx index 9113e8654bf..e1d982148f1 100644 --- a/src/Components/Patient/ManagePatients.tsx +++ b/src/Components/Patient/ManagePatients.tsx @@ -194,10 +194,10 @@ export const PatientManager = () => { date_of_result_after: qParams.date_of_result_after || undefined, last_consultation_medico_legal_case: qParams.last_consultation_medico_legal_case || undefined, - last_consultation_admission_date_before: - qParams.last_consultation_admission_date_before || undefined, - last_consultation_admission_date_after: - qParams.last_consultation_admission_date_after || undefined, + last_consultation_encounter_date_before: + qParams.last_consultation_encounter_date_before || undefined, + last_consultation_encounter_date_after: + qParams.last_consultation_encounter_date_after || undefined, last_consultation_discharge_date_before: qParams.last_consultation_discharge_date_before || undefined, last_consultation_discharge_date_after: @@ -239,8 +239,8 @@ export const PatientManager = () => { [params.date_of_result_before, params.date_of_result_after], [params.last_vaccinated_date_before, params.last_vaccinated_date_after], [ - params.last_consultation_admission_date_before, - params.last_consultation_admission_date_after, + params.last_consultation_encounter_date_before, + params.last_consultation_encounter_date_after, ], [ params.last_consultation_discharge_date_before, @@ -345,8 +345,8 @@ export const PatientManager = () => { }, [ dispatch, qParams.last_consultation_medico_legal_case, - qParams.last_consultation_admission_date_before, - qParams.last_consultation_admission_date_after, + qParams.last_consultation_encounter_date_before, + qParams.last_consultation_encounter_date_after, qParams.last_consultation_discharge_date_before, qParams.last_consultation_discharge_date_after, qParams.age_max, @@ -967,7 +967,7 @@ export const PatientManager = () => { badge("IP/OP number", "patient_no"), ...dateRange("Modified", "modified_date"), ...dateRange("Created", "created_date"), - ...dateRange("Admitted", "last_consultation_admission_date"), + ...dateRange("Admitted", "last_consultation_encounter_date"), ...dateRange("Discharged", "last_consultation_discharge_date"), // Admitted to type badges badge("No. of vaccination doses", "number_of_doses"), diff --git a/src/Components/Patient/PatientFilter.tsx b/src/Components/Patient/PatientFilter.tsx index 0599cb2625b..481d2dcc67b 100644 --- a/src/Components/Patient/PatientFilter.tsx +++ b/src/Components/Patient/PatientFilter.tsx @@ -67,10 +67,10 @@ export default function PatientFilter(props: any) { date_declared_positive: filter.date_declared_positive || null, last_consultation_medico_legal_case: filter.last_consultation_medico_legal_case || null, - last_consultation_admission_date_before: - filter.last_consultation_admission_date_before || null, - last_consultation_admission_date_after: - filter.last_consultation_admission_date_after || null, + last_consultation_encounter_date_before: + filter.last_consultation_encounter_date_before || null, + last_consultation_encounter_date_after: + filter.last_consultation_encounter_date_after || null, last_consultation_discharge_date_before: filter.last_consultation_discharge_date_before || null, last_consultation_discharge_date_after: @@ -125,8 +125,8 @@ export default function PatientFilter(props: any) { date_of_result: null, date_declared_positive: null, last_consultation_medico_legal_case: null, - last_consultation_admission_date_before: "", - last_consultation_admission_date_after: "", + last_consultation_encounter_date_before: "", + last_consultation_encounter_date_after: "", last_consultation_discharge_date_before: "", last_consultation_discharge_date_after: "", last_consultation_admitted_to_list: [], @@ -236,8 +236,8 @@ export default function PatientFilter(props: any) { age_max, date_of_result, last_consultation_medico_legal_case, - last_consultation_admission_date_before, - last_consultation_admission_date_after, + last_consultation_encounter_date_before, + last_consultation_encounter_date_after, last_consultation_discharge_date_before, last_consultation_discharge_date_after, last_consultation_admitted_bed_type_list, @@ -278,11 +278,11 @@ export default function PatientFilter(props: any) { date_of_result: dateQueryString(date_of_result), last_consultation_medico_legal_case: last_consultation_medico_legal_case || "", - last_consultation_admission_date_before: dateQueryString( - last_consultation_admission_date_before + last_consultation_encounter_date_before: dateQueryString( + last_consultation_encounter_date_before ), - last_consultation_admission_date_after: dateQueryString( - last_consultation_admission_date_after + last_consultation_encounter_date_after: dateQueryString( + last_consultation_encounter_date_after ), last_consultation_discharge_date_before: dateQueryString( last_consultation_discharge_date_before @@ -537,13 +537,13 @@ export default function PatientFilter(props: any) { /> {" "} diff --git a/src/Components/Shifting/ShiftDetails.tsx b/src/Components/Shifting/ShiftDetails.tsx index a898b0cde15..493c56e71c0 100644 --- a/src/Components/Shifting/ShiftDetails.tsx +++ b/src/Components/Shifting/ShiftDetails.tsx @@ -22,6 +22,7 @@ import { useTranslation } from "react-i18next"; import useQuery from "../../Utils/request/useQuery.js"; import routes from "../../Redux/api.js"; import request from "../../Utils/request/request.js"; +import { ConsultationModel } from "../Facility/models.js"; const Loading = lazy(() => import("../Common/Loading")); @@ -316,7 +317,7 @@ export default function ShiftDetails(props: { id: string }) { const printData = (data: any) => { const patientData = data.patient_object; - const consultation = data.patient.last_consultation; + const consultation = data.patient.last_consultation as ConsultationModel; const patientGender = GENDER_TYPES.find( (i) => i.id === patientData?.gender )?.text; @@ -409,7 +410,7 @@ export default function ShiftDetails(props: { id: string }) { {t("date_of_admission")}:{" "} {formatDateTime( - consultation.admission_date || consultation.created_date + consultation.encounter_date || consultation.created_date ) || "-"}