Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
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)
Ejemplo n.º 3
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"))
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
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 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
Ejemplo n.º 7
0
    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`""")
Ejemplo n.º 8
0
	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`""")
Ejemplo n.º 9
0
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
Ejemplo n.º 10
0
	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"))
Ejemplo n.º 12
0
    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())