def test_allow_discharge_despite_unbilled_services(self): frappe.db.sql("""delete from `tabInpatient Record`""") setup_inpatient_settings( key="allow_discharge_despite_unbilled_services", value=1) patient = create_patient() # Schedule Admission ip_record = create_inpatient(patient) ip_record.expected_length_of_stay = 0 ip_record.save(ignore_permissions=True) # Admit service_unit = get_healthcare_service_unit() admit_patient(ip_record, service_unit, now_datetime()) # Discharge schedule_discharge(frappe.as_json({"patient": patient})) self.assertEqual( "Vacant", frappe.db.get_value("Healthcare Service Unit", service_unit, "occupancy_status")) ip_record = frappe.get_doc("Inpatient Record", ip_record.name) # Should not validate Pending Invoices ip_record.discharge() self.assertEqual( None, frappe.db.get_value("Patient", patient, "inpatient_record")) self.assertEqual( None, frappe.db.get_value("Patient", patient, "inpatient_status")) setup_inpatient_settings( key="allow_discharge_despite_unbilled_services", value=0)
def test_do_not_bill_patient_encounters_for_inpatients(self): frappe.db.sql("""delete from `tabInpatient Record`""") setup_inpatient_settings(key="do_not_bill_inpatient_encounters", value=1) patient = create_patient() # Schedule Admission ip_record = create_inpatient(patient) ip_record.expected_length_of_stay = 0 ip_record.save(ignore_permissions=True) # Admit service_unit = get_healthcare_service_unit() admit_patient(ip_record, service_unit, now_datetime()) # Patient Encounter patient_encounter = create_patient_encounter() encounters = get_encounters_to_invoice(patient, "_Test Company") encounter_ids = [entry.reference_name for entry in encounters] self.assertFalse(patient_encounter.name in encounter_ids) # Discharge schedule_discharge(frappe.as_json({"patient": patient})) self.assertEqual( "Vacant", frappe.db.get_value("Healthcare Service Unit", service_unit, "occupancy_status")) ip_record = frappe.get_doc("Inpatient Record", ip_record.name) mark_invoiced_inpatient_occupancy(ip_record) discharge_patient(ip_record) setup_inpatient_settings(key="do_not_bill_inpatient_encounters", value=0)
def test_admit_and_discharge(self): frappe.db.sql("""delete from `tabInpatient Record`""") patient = get_patient() # Schedule Admission ip_record = create_inpatient(patient) ip_record.save(ignore_permissions = True) self.assertEqual(ip_record.name, frappe.db.get_value("Patient", patient, "inpatient_record")) self.assertEqual(ip_record.status, frappe.db.get_value("Patient", patient, "inpatient_status")) # Admit service_unit = get_healthcare_service_unit() admit_patient(ip_record, service_unit, now_datetime()) self.assertEqual("Admitted", frappe.db.get_value("Patient", patient, "inpatient_status")) self.assertEqual("Occupied", frappe.db.get_value("Healthcare Service Unit", service_unit, "occupancy_status")) # Discharge schedule_discharge(patient=patient) self.assertEqual("Vacant", frappe.db.get_value("Healthcare Service Unit", service_unit, "occupancy_status")) ip_record1 = frappe.get_doc("Inpatient Record", ip_record.name) # Validate Pending Invoices self.assertRaises(frappe.ValidationError, ip_record.discharge) mark_invoiced_inpatient_occupancy(ip_record1) discharge_patient(ip_record1) self.assertEqual(None, frappe.db.get_value("Patient", patient, "inpatient_record")) self.assertEqual(None, frappe.db.get_value("Patient", patient, "inpatient_status"))
def test_invalid_healthcare_service_unit_validation(self): from erpnext.healthcare.doctype.inpatient_record.inpatient_record import admit_patient, discharge_patient, schedule_discharge from erpnext.healthcare.doctype.inpatient_record.test_inpatient_record import \ create_inpatient, get_healthcare_service_unit, mark_invoiced_inpatient_occupancy frappe.db.sql("""delete from `tabInpatient Record`""") patient, medical_department, practitioner = create_healthcare_docs() patient = create_patient() # Schedule Admission ip_record = create_inpatient(patient) ip_record.expected_length_of_stay = 0 ip_record.save(ignore_permissions=True) # Admit service_unit = get_healthcare_service_unit( 'Test Service Unit Ip Occupancy') admit_patient(ip_record, service_unit, now_datetime()) appointment_service_unit = get_healthcare_service_unit( 'Test Service Unit Ip Occupancy for Appointment') appointment = create_appointment(patient, practitioner, nowdate(), service_unit=appointment_service_unit, save=0) self.assertRaises(frappe.exceptions.ValidationError, appointment.save) # Discharge schedule_discharge(frappe.as_json({'patient': patient})) ip_record1 = frappe.get_doc("Inpatient Record", ip_record.name) mark_invoiced_inpatient_occupancy(ip_record1) discharge_patient(ip_record1)
def test_admit_and_discharge(self): frappe.db.sql("""delete from `tabInpatient Record`""") patient = get_patient() # Schedule Admission ip_record = create_inpatient(patient) ip_record.save(ignore_permissions = True) self.assertEqual(ip_record.name, frappe.db.get_value("Patient", patient, "inpatient_record")) self.assertEqual(ip_record.status, frappe.db.get_value("Patient", patient, "inpatient_status")) # Admit service_unit = get_healthcare_service_unit() admit_patient(ip_record, service_unit, now_datetime()) self.assertEqual("Admitted", frappe.db.get_value("Patient", patient, "inpatient_status")) self.assertEqual("Occupied", frappe.db.get_value("Healthcare Service Unit", service_unit, "occupancy_status")) # Discharge schedule_discharge(patient=patient) self.assertEqual("Vacant", frappe.db.get_value("Healthcare Service Unit", service_unit, "occupancy_status")) ip_record1 = frappe.get_doc("Inpatient Record", ip_record.name) # Validate Pending Invoices self.assertRaises(frappe.ValidationError, ip_record.discharge) mark_invoiced_inpatient_occupancy(ip_record1) discharge_patient(ip_record1) self.assertEqual(None, frappe.db.get_value("Patient", patient, "inpatient_record")) self.assertEqual(None, frappe.db.get_value("Patient", patient, "inpatient_status"))
def setUp(self): frappe.db.sql("""delete from `tabInpatient Record`""") self.patient = create_patient() # Admit ip_record = create_inpatient(self.patient) ip_record.expected_length_of_stay = 0 ip_record.save() ip_record.reload() service_unit = get_healthcare_service_unit() admit_patient(ip_record, service_unit, now_datetime()) self.ip_record = ip_record
def test_validate_overlap_admission(self): frappe.db.sql("""delete from `tabInpatient Record`""") patient = create_patient() ip_record = create_inpatient(patient) ip_record.save(ignore_permissions=True) ip_record_new = create_inpatient(patient) self.assertRaises(frappe.ValidationError, ip_record_new.save) service_unit = get_healthcare_service_unit() admit_patient(ip_record, service_unit, now_datetime()) ip_record_new = create_inpatient(patient) self.assertRaises(frappe.ValidationError, ip_record_new.save) frappe.db.sql("""delete from `tabInpatient Record`""")
def test_validate_overlap_admission(self): frappe.db.sql("""delete from `tabInpatient Record`""") patient = get_patient() ip_record = create_inpatient(patient) ip_record.save(ignore_permissions = True) ip_record_new = create_inpatient(patient) self.assertRaises(frappe.ValidationError, ip_record_new.save) service_unit = get_healthcare_service_unit() admit_patient(ip_record, service_unit, now_datetime()) ip_record_new = create_inpatient(patient) self.assertRaises(frappe.ValidationError, ip_record_new.save) frappe.db.sql("""delete from `tabInpatient Record`""")
def create_records(patient): frappe.db.sql("""delete from `tabInpatient Record`""") # Admit ip_record = create_inpatient(patient) ip_record.expected_length_of_stay = 0 ip_record.save() ip_record.reload() service_unit = get_healthcare_service_unit() admit_patient(ip_record, service_unit, now_datetime()) ipmo = create_ipmo(patient) ipmo.submit() return ip_record
def test_admit_and_discharge(self): patient = get_patient() # Schedule Admission ip_record = create_inpatient(patient) ip_record.save(ignore_permissions = True) self.assertEqual(ip_record.name, frappe.db.get_value("Patient", patient, "inpatient_record")) self.assertEqual(ip_record.status, frappe.db.get_value("Patient", patient, "inpatient_status")) # Admit service_unit = get_healthcare_service_unit() admit_patient(ip_record, service_unit, now_datetime()) self.assertEqual("Admitted", frappe.db.get_value("Patient", patient, "inpatient_status")) self.assertEqual(1, frappe.db.get_value("Healthcare Service Unit", service_unit, "occupied")) # Discharge discharge_patient(ip_record) self.assertEqual(None, frappe.db.get_value("Patient", patient, "inpatient_record")) self.assertEqual(None, frappe.db.get_value("Patient", patient, "inpatient_status")) self.assertEqual(0, frappe.db.get_value("Healthcare Service Unit", service_unit, "occupied"))
def test_admit_and_discharge(self): frappe.db.sql("""delete from `tabInpatient Record`""") patient = get_patient() # Schedule Admission ip_record = create_inpatient(patient) ip_record.save(ignore_permissions = True) self.assertEqual(ip_record.name, frappe.db.get_value("Patient", patient, "inpatient_record")) self.assertEqual(ip_record.status, frappe.db.get_value("Patient", patient, "inpatient_status")) # Admit service_unit = get_healthcare_service_unit() admit_patient(ip_record, service_unit, now_datetime()) self.assertEqual("Admitted", frappe.db.get_value("Patient", patient, "inpatient_status")) self.assertEqual("Occupied", frappe.db.get_value("Healthcare Service Unit", service_unit, "status")) # Discharge args = { "patient": patient, "encounter_id": "", "discharge_practitioner": "", "discharge_ordered": "", "followup_date": "", "discharge_instruction": "", "discharge_note": "", "include_chief_complaint": "", "include_diagnosis": "", "include_medication": "", "include_investigations": "", "include_procedures": "", "include_occupancy_details": "" } schedule_discharge(args=json.dumps(args)) self.assertEqual(get_check_out_stats(), frappe.db.get_value("Healthcare Service Unit", service_unit, "status")) ip_record1 = frappe.get_doc("Inpatient Record", ip_record.name) # Validate Pending Invoices self.assertRaises(frappe.ValidationError, ip_record.discharge) mark_invoiced_inpatient_occupancy(ip_record1) discharge_patient(ip_record1) self.assertEqual(None, frappe.db.get_value("Patient", patient, "inpatient_record")) self.assertEqual(None, frappe.db.get_value("Patient", patient, "inpatient_status"))
def test_appointment_booking_for_admission_service_unit(self): from erpnext.healthcare.doctype.inpatient_record.inpatient_record import ( admit_patient, discharge_patient, schedule_discharge, ) from erpnext.healthcare.doctype.inpatient_record.test_inpatient_record import ( create_inpatient, get_healthcare_service_unit, mark_invoiced_inpatient_occupancy, ) frappe.db.sql("""delete from `tabInpatient Record`""") patient, practitioner = create_healthcare_docs() patient = create_patient() # Schedule Admission ip_record = create_inpatient(patient) ip_record.expected_length_of_stay = 0 ip_record.save(ignore_permissions=True) # Admit service_unit = get_healthcare_service_unit( "_Test Service Unit Ip Occupancy") admit_patient(ip_record, service_unit, now_datetime()) appointment = create_appointment(patient, practitioner, nowdate(), service_unit=service_unit) self.assertEqual(appointment.service_unit, service_unit) # Discharge schedule_discharge( frappe.as_json({ "patient": patient, "discharge_ordered_datetime": now_datetime() })) ip_record1 = frappe.get_doc("Inpatient Record", ip_record.name) mark_invoiced_inpatient_occupancy(ip_record1) discharge_patient(ip_record1, now_datetime())