From 5d4133ecacdcc3ac69c4208c12a81bac303ad394 Mon Sep 17 00:00:00 2001 From: ChillarAnand Date: Thu, 2 Sep 2021 18:25:36 +0530 Subject: [PATCH] chore: Removed healthcare demo, patch files --- erpnext/demo/setup/healthcare.py | 171 ------------------ erpnext/domains/healthcare.py | 71 -------- .../add_healthcare_service_unit_tree_root.py | 22 --- .../redesign_healthcare_billing_work_flow.py | 69 ------- .../patches/v11_0/rename_health_insurance.py | 11 -- .../rename_healthcare_doctype_and_fields.py | 67 ------- .../patches/v11_0/rename_healthcare_fields.py | 54 ------ ...te_appointment_reminder_scheduler_entry.py | 8 - ...are_custom_fields_in_stock_entry_detail.py | 12 -- ..._history_settings_for_standard_doctypes.py | 19 -- 10 files changed, 504 deletions(-) delete mode 100644 erpnext/demo/setup/healthcare.py delete mode 100644 erpnext/domains/healthcare.py delete mode 100644 erpnext/patches/v11_0/add_healthcare_service_unit_tree_root.py delete mode 100644 erpnext/patches/v11_0/redesign_healthcare_billing_work_flow.py delete mode 100644 erpnext/patches/v11_0/rename_health_insurance.py delete mode 100644 erpnext/patches/v11_0/rename_healthcare_doctype_and_fields.py delete mode 100644 erpnext/patches/v11_0/rename_healthcare_fields.py delete mode 100644 erpnext/patches/v12_0/update_appointment_reminder_scheduler_entry.py delete mode 100644 erpnext/patches/v13_0/create_healthcare_custom_fields_in_stock_entry_detail.py delete mode 100644 erpnext/patches/v13_0/setup_patient_history_settings_for_standard_doctypes.py diff --git a/erpnext/demo/setup/healthcare.py b/erpnext/demo/setup/healthcare.py deleted file mode 100644 index 5d5707f647..0000000000 --- a/erpnext/demo/setup/healthcare.py +++ /dev/null @@ -1,171 +0,0 @@ -# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors -# License: GNU General Public License v3. See license.txt -from __future__ import unicode_literals - -import datetime -import json - -import frappe -from frappe.utils import getdate -from frappe.utils.make_random import get_random - -from erpnext.demo.setup.setup_data import import_json -from erpnext.healthcare.doctype.lab_test.lab_test import create_test_from_template - - -def setup_data(): - frappe.flags.mute_emails = True - make_masters() - make_patient() - make_lab_test() - make_consulation() - make_appointment() - consulation_on_appointment() - lab_test_on_encounter() - frappe.db.commit() - frappe.clear_cache() - -def make_masters(): - import_json("Healthcare Practitioner") - import_drug() - frappe.db.commit() - -def make_patient(): - file_path = get_json_path("Patient") - with open(file_path, "r") as open_file: - patient_data = json.loads(open_file.read()) - count = 1 - - for d in enumerate(patient_data): - patient = frappe.new_doc("Patient") - patient.patient_name = d[1]['patient_name'].title() - patient.sex = d[1]['gender'] - patient.blood_group = "A Positive" - patient.date_of_birth = datetime.datetime(1990, 3, 25) - patient.email_id = d[1]['patient_name'] + "_" + patient.date_of_birth.strftime('%m/%d/%Y') + "@example.com" - if count <5: - patient.insert() - frappe.db.commit() - count+=1 - -def make_appointment(): - i = 1 - while i <= 4: - practitioner = get_random("Healthcare Practitioner") - department = frappe.get_value("Healthcare Practitioner", practitioner, "department") - patient = get_random("Patient") - patient_sex = frappe.get_value("Patient", patient, "sex") - appointment = frappe.new_doc("Patient Appointment") - startDate = datetime.datetime.now() - for x in random_date(startDate,0): - appointment_datetime = x - appointment.appointment_datetime = appointment_datetime - appointment.appointment_time = appointment_datetime - appointment.appointment_date = appointment_datetime - appointment.patient = patient - appointment.patient_sex = patient_sex - appointment.practitioner = practitioner - appointment.department = department - appointment.save(ignore_permissions = True) - i += 1 - -def make_consulation(): - for i in range(3): - practitioner = get_random("Healthcare Practitioner") - department = frappe.get_value("Healthcare Practitioner", practitioner, "department") - patient = get_random("Patient") - patient_sex = frappe.get_value("Patient", patient, "sex") - encounter = set_encounter(patient, patient_sex, practitioner, department, getdate(), i) - encounter.save(ignore_permissions=True) - -def consulation_on_appointment(): - for i in range(3): - appointment = get_random("Patient Appointment") - appointment = frappe.get_doc("Patient Appointment",appointment) - encounter = set_encounter(appointment.patient, appointment.patient_sex, appointment.practitioner, appointment.department, appointment.appointment_date, i) - encounter.appointment = appointment.name - encounter.save(ignore_permissions=True) - -def set_encounter(patient, patient_sex, practitioner, department, encounter_date, i): - encounter = frappe.new_doc("Patient Encounter") - encounter.patient = patient - encounter.patient_sex = patient_sex - encounter.practitioner = practitioner - encounter.visit_department = department - encounter.encounter_date = encounter_date - if i > 2 and patient_sex=='Female': - encounter.symptoms = "Having chest pains for the last week." - encounter.diagnosis = """This patient's description of dull, aching, - exertion related substernal chest pain is suggestive of ischemic - cardiac origin. Her findings of a FH of early ASCVD, hypertension, - and early surgical menopause are pertinent risk factors for development - of coronary artery disease. """ - else: - encounter = append_drug_rx(encounter) - encounter = append_test_rx(encounter) - return encounter - -def make_lab_test(): - practitioner = get_random("Healthcare Practitioner") - patient = get_random("Patient") - patient_sex = frappe.get_value("Patient", patient, "sex") - template = get_random("Lab Test Template") - set_lab_test(patient, patient_sex, practitioner, template) - -def lab_test_on_encounter(): - i = 1 - while i <= 2: - test_rx = get_random("Lab Prescription", filters={'test_created': 0}) - test_rx = frappe.get_doc("Lab Prescription", test_rx) - encounter = frappe.get_doc("Patient Encounter", test_rx.parent) - set_lab_test(encounter.patient, encounter.patient_sex, encounter.practitioner, test_rx.test_code, test_rx.name) - i += 1 - -def set_lab_test(patient, patient_sex, practitioner, template, rx=None): - lab_test = frappe.new_doc("Lab Test") - lab_test.practitioner = practitioner - lab_test.patient = patient - lab_test.patient_sex = patient_sex - lab_test.template = template - lab_test.prescription = rx - create_test_from_template(lab_test) - -def append_test_rx(encounter): - i = 1 - while i <= 2: - test_rx = encounter.append("test_prescription") - test_rx.test_code = get_random("Lab Test Template") - i += 1 - return encounter - -def append_drug_rx(encounter): - i = 1 - while i <= 3: - drug = get_random("Item", filters={"item_group":"Drug"}) - drug = frappe.get_doc("Item", drug) - drug_rx = encounter.append("drug_prescription") - drug_rx.drug_code = drug.item_code - drug_rx.drug_name = drug.item_name - drug_rx.dosage = get_random("Prescription Dosage") - drug_rx.period = get_random("Prescription Duration") - i += 1 - return encounter - -def random_date(start,l): - current = start - while l >= 0: - curr = current + datetime.timedelta(minutes=60) - yield curr - l-=1 - -def import_drug(): - frappe.flags.in_import = True - data = json.loads(open(frappe.get_app_path('erpnext', 'demo', 'data', 'drug_list.json')).read()) - for d in data: - doc = frappe.new_doc("Item") - doc.update(d) - doc.insert() - frappe.flags.in_import = False - -def get_json_path(doctype): - return frappe.get_app_path('erpnext', 'demo', 'data', frappe.scrub(doctype) + '.json') diff --git a/erpnext/domains/healthcare.py b/erpnext/domains/healthcare.py deleted file mode 100644 index bbeb2c66bc..0000000000 --- a/erpnext/domains/healthcare.py +++ /dev/null @@ -1,71 +0,0 @@ -from __future__ import unicode_literals - -data = { - 'desktop_icons': [ - 'Patient', - 'Patient Appointment', - 'Patient Encounter', - 'Lab Test', - 'Healthcare', - 'Vital Signs', - 'Clinical Procedure', - 'Inpatient Record', - 'Accounts', - 'Buying', - 'Stock', - 'HR', - 'ToDo' - ], - 'default_portal_role': 'Patient', - 'restricted_roles': [ - 'Healthcare Administrator', - 'LabTest Approver', - 'Laboratory User', - 'Nursing User', - 'Physician', - 'Patient' - ], - 'custom_fields': { - 'Sales Invoice': [ - { - 'fieldname': 'patient', 'label': 'Patient', 'fieldtype': 'Link', 'options': 'Patient', - 'insert_after': 'naming_series' - }, - { - 'fieldname': 'patient_name', 'label': 'Patient Name', 'fieldtype': 'Data', 'fetch_from': 'patient.patient_name', - 'insert_after': 'patient', 'read_only': True - }, - { - 'fieldname': 'ref_practitioner', 'label': 'Referring Practitioner', 'fieldtype': 'Link', 'options': 'Healthcare Practitioner', - 'insert_after': 'customer' - } - ], - 'Sales Invoice Item': [ - { - 'fieldname': 'reference_dt', 'label': 'Reference DocType', 'fieldtype': 'Link', 'options': 'DocType', - 'insert_after': 'edit_references' - }, - { - 'fieldname': 'reference_dn', 'label': 'Reference Name', 'fieldtype': 'Dynamic Link', 'options': 'reference_dt', - 'insert_after': 'reference_dt' - } - ], - 'Stock Entry': [ - { - 'fieldname': 'inpatient_medication_entry', 'label': 'Inpatient Medication Entry', 'fieldtype': 'Link', 'options': 'Inpatient Medication Entry', - 'insert_after': 'credit_note', 'read_only': True - } - ], - 'Stock Entry Detail': [ - { - 'fieldname': 'patient', 'label': 'Patient', 'fieldtype': 'Link', 'options': 'Patient', - 'insert_after': 'po_detail', 'read_only': True - }, - { - 'fieldname': 'inpatient_medication_entry_child', 'label': 'Inpatient Medication Entry Child', 'fieldtype': 'Data', - 'insert_after': 'patient', 'read_only': True - } - ] - }, - 'on_setup': 'erpnext.healthcare.setup.setup_healthcare' -} diff --git a/erpnext/patches/v11_0/add_healthcare_service_unit_tree_root.py b/erpnext/patches/v11_0/add_healthcare_service_unit_tree_root.py deleted file mode 100644 index 9bb91dc14c..0000000000 --- a/erpnext/patches/v11_0/add_healthcare_service_unit_tree_root.py +++ /dev/null @@ -1,22 +0,0 @@ -from __future__ import unicode_literals - -import frappe -from frappe import _ - - -def execute(): - """ assign lft and rgt appropriately """ - if "Healthcare" not in frappe.get_active_domains(): - return - - frappe.reload_doc("healthcare", "doctype", "healthcare_service_unit") - frappe.reload_doc("healthcare", "doctype", "healthcare_service_unit_type") - company = frappe.get_value("Company", {"domain": "Healthcare"}, "name") - - if company: - frappe.get_doc({ - 'doctype': 'Healthcare Service Unit', - 'healthcare_service_unit_name': _('All Healthcare Service Units'), - 'is_group': 1, - 'company': company - }).insert(ignore_permissions=True) diff --git a/erpnext/patches/v11_0/redesign_healthcare_billing_work_flow.py b/erpnext/patches/v11_0/redesign_healthcare_billing_work_flow.py deleted file mode 100644 index b1ed0f598c..0000000000 --- a/erpnext/patches/v11_0/redesign_healthcare_billing_work_flow.py +++ /dev/null @@ -1,69 +0,0 @@ -from __future__ import unicode_literals - -import frappe -from frappe.custom.doctype.custom_field.custom_field import create_custom_fields -from frappe.modules import get_doctype_module, scrub - -from erpnext.domains.healthcare import data - -sales_invoice_referenced_doc = { - "Patient Appointment": "sales_invoice", - "Patient Encounter": "invoice", - "Lab Test": "invoice", - "Lab Prescription": "invoice", - "Sample Collection": "invoice" -} - -def execute(): - frappe.reload_doc('accounts', 'doctype', 'loyalty_program') - frappe.reload_doc('accounts', 'doctype', 'sales_invoice_item') - - if "Healthcare" not in frappe.get_active_domains(): - return - - healthcare_custom_field_in_sales_invoice() - for si_ref_doc in sales_invoice_referenced_doc: - if frappe.db.exists('DocType', si_ref_doc): - frappe.reload_doc(get_doctype_module(si_ref_doc), 'doctype', scrub(si_ref_doc)) - - if frappe.db.has_column(si_ref_doc, sales_invoice_referenced_doc[si_ref_doc]) \ - and frappe.db.has_column(si_ref_doc, 'invoiced'): - # Set Reference DocType and Reference Docname - doc_list = frappe.db.sql(""" - select name from `tab{0}` - where {1} is not null - """.format(si_ref_doc, sales_invoice_referenced_doc[si_ref_doc])) - if doc_list: - frappe.reload_doc(get_doctype_module("Sales Invoice"), 'doctype', 'sales_invoice') - for doc_id in doc_list: - invoice_id = frappe.db.get_value(si_ref_doc, doc_id[0], sales_invoice_referenced_doc[si_ref_doc]) - if frappe.db.exists("Sales Invoice", invoice_id): - if si_ref_doc == "Lab Test": - template = frappe.db.get_value("Lab Test", doc_id[0], "template") - if template: - item = frappe.db.get_value("Lab Test Template", template, "item") - if item: - frappe.db.sql("""update `tabSales Invoice Item` set reference_dt = '{0}', - reference_dn = '{1}' where parent = '{2}' and item_code='{3}'""".format\ - (si_ref_doc, doc_id[0], invoice_id, item)) - else: - invoice = frappe.get_doc("Sales Invoice", invoice_id) - for item_line in invoice.items: - if not item_line.reference_dn: - item_line.db_set({"reference_dt":si_ref_doc, "reference_dn": doc_id[0]}) - break - # Documents mark invoiced for submitted sales invoice - frappe.db.sql("""update `tab{0}` doc, `tabSales Invoice` si - set doc.invoiced = 1 where si.docstatus = 1 and doc.{1} = si.name - """.format(si_ref_doc, sales_invoice_referenced_doc[si_ref_doc])) - -def healthcare_custom_field_in_sales_invoice(): - frappe.reload_doc('healthcare', 'doctype', 'patient') - frappe.reload_doc('healthcare', 'doctype', 'healthcare_practitioner') - if data['custom_fields']: - create_custom_fields(data['custom_fields']) - - frappe.db.sql(""" - delete from `tabCustom Field` - where fieldname = 'appointment' and options = 'Patient Appointment' - """) diff --git a/erpnext/patches/v11_0/rename_health_insurance.py b/erpnext/patches/v11_0/rename_health_insurance.py deleted file mode 100644 index a4f53b078e..0000000000 --- a/erpnext/patches/v11_0/rename_health_insurance.py +++ /dev/null @@ -1,11 +0,0 @@ -# Copyright (c) 2018, Frappe and Contributors -# License: GNU General Public License v3. See license.txt - -from __future__ import unicode_literals - -import frappe - - -def execute(): - frappe.rename_doc('DocType', 'Health Insurance', 'Employee Health Insurance', force=True) - frappe.reload_doc('hr', 'doctype', 'employee_health_insurance') diff --git a/erpnext/patches/v11_0/rename_healthcare_doctype_and_fields.py b/erpnext/patches/v11_0/rename_healthcare_doctype_and_fields.py deleted file mode 100644 index 7a8c52f102..0000000000 --- a/erpnext/patches/v11_0/rename_healthcare_doctype_and_fields.py +++ /dev/null @@ -1,67 +0,0 @@ -from __future__ import unicode_literals - -import frappe -from frappe.model.utils.rename_field import rename_field -from frappe.modules import get_doctype_module, scrub - -field_rename_map = { - "Patient Encounter": [ - ["consultation_time", "encounter_time"], - ["consultation_date", "encounter_date"], - ["consultation_comment", "encounter_comment"], - ["physician", "practitioner"] - ], - "Fee Validity": [ - ["physician", "practitioner"] - ], - "Lab Test": [ - ["physician", "practitioner"] - ], - "Patient Appointment": [ - ["physician", "practitioner"], - ["referring_physician", "referring_practitioner"] - ], - "Procedure Prescription": [ - ["physician", "practitioner"] - ] -} - -doc_rename_map = { - "Physician Schedule Time Slot": "Healthcare Schedule Time Slot", - "Physician Schedule": "Practitioner Schedule", - "Physician Service Unit Schedule": "Practitioner Service Unit Schedule", - "Consultation": "Patient Encounter", - "Physician": "Healthcare Practitioner" -} - -def execute(): - for dt in doc_rename_map: - if frappe.db.exists('DocType', dt): - frappe.rename_doc('DocType', dt, doc_rename_map[dt], force=True) - - for dn in field_rename_map: - if frappe.db.exists('DocType', dn): - frappe.reload_doc(get_doctype_module(dn), "doctype", scrub(dn)) - - for dt, field_list in field_rename_map.items(): - if frappe.db.exists('DocType', dt): - for field in field_list: - if frappe.db.has_column(dt, field[0]): - rename_field(dt, field[0], field[1]) - - if frappe.db.exists('DocType', 'Practitioner Service Unit Schedule'): - if frappe.db.has_column('Practitioner Service Unit Schedule', 'parentfield'): - frappe.db.sql(""" - update `tabPractitioner Service Unit Schedule` set parentfield = 'practitioner_schedules' - where parentfield = 'physician_schedules' and parenttype = 'Healthcare Practitioner' - """) - - if frappe.db.exists("DocType", "Healthcare Practitioner"): - frappe.reload_doc("healthcare", "doctype", "healthcare_practitioner") - frappe.reload_doc("healthcare", "doctype", "practitioner_service_unit_schedule") - if frappe.db.has_column('Healthcare Practitioner', 'physician_schedule'): - for doc in frappe.get_all('Healthcare Practitioner'): - _doc = frappe.get_doc('Healthcare Practitioner', doc.name) - if _doc.physician_schedule: - _doc.append('practitioner_schedules', {'schedule': _doc.physician_schedule}) - _doc.save() diff --git a/erpnext/patches/v11_0/rename_healthcare_fields.py b/erpnext/patches/v11_0/rename_healthcare_fields.py deleted file mode 100644 index 5c96367a73..0000000000 --- a/erpnext/patches/v11_0/rename_healthcare_fields.py +++ /dev/null @@ -1,54 +0,0 @@ -from __future__ import unicode_literals - -import frappe -from frappe.model.utils.rename_field import rename_field -from frappe.modules import get_doctype_module, scrub - -lab_test_name = ["test_name", "lab_test_name"] -lab_test_code = ["test_code", "lab_test_code"] -lab_test_comment = ["test_comment", "lab_test_comment"] -lab_test_created = ["test_created", "lab_test_created"] -lab_test_template = ["test_template", "lab_test_template"] -lab_test_rate = ["test_rate", "lab_test_rate"] -lab_test_description = ["test_description", "lab_test_description"] -lab_test_group = ["test_group", "lab_test_group"] -lab_test_template_type = ["test_template_type", "lab_test_template_type"] -lab_test_uom = ["test_uom", "lab_test_uom"] -lab_test_normal_range = ["test_normal_range", "lab_test_normal_range"] -lab_test_event = ["test_event", "lab_test_event"] -lab_test_particulars = ["test_particulars", "lab_test_particulars"] - -field_rename_map = { - "Lab Test Template": [lab_test_name, lab_test_code, lab_test_rate, lab_test_description, - lab_test_group, lab_test_template_type, lab_test_uom, lab_test_normal_range], - "Normal Test Items": [lab_test_name, lab_test_comment, lab_test_uom, lab_test_event], - "Lab Test": [lab_test_name, lab_test_comment, lab_test_group], - "Lab Prescription": [lab_test_name, lab_test_code, lab_test_comment, lab_test_created], - "Lab Test Groups": [lab_test_template, lab_test_rate, lab_test_description], - "Lab Test UOM": [lab_test_uom], - "Normal Test Template": [lab_test_uom, lab_test_event], - "Special Test Items": [lab_test_particulars] -} - - -def execute(): - for dt, field_list in field_rename_map.items(): - if frappe.db.exists('DocType', dt): - frappe.reload_doc(get_doctype_module(dt), "doctype", scrub(dt)) - for field in field_list: - if frappe.db.has_column(dt, field[0]): - rename_field(dt, field[0], field[1]) - - if frappe.db.exists('DocType', 'Lab Prescription'): - if frappe.db.has_column('Lab Prescription', 'parentfield'): - frappe.db.sql(""" - update `tabLab Prescription` set parentfield = 'lab_test_prescription' - where parentfield = 'test_prescription' - """) - - if frappe.db.exists('DocType', 'Lab Test Groups'): - if frappe.db.has_column('Lab Test Groups', 'parentfield'): - frappe.db.sql(""" - update `tabLab Test Groups` set parentfield = 'lab_test_groups' - where parentfield = 'test_groups' - """) diff --git a/erpnext/patches/v12_0/update_appointment_reminder_scheduler_entry.py b/erpnext/patches/v12_0/update_appointment_reminder_scheduler_entry.py deleted file mode 100644 index 024cb2b763..0000000000 --- a/erpnext/patches/v12_0/update_appointment_reminder_scheduler_entry.py +++ /dev/null @@ -1,8 +0,0 @@ -import frappe - - -def execute(): - job = frappe.db.exists('Scheduled Job Type', 'patient_appointment.send_appointment_reminder') - if job: - method = 'erpnext.healthcare.doctype.patient_appointment.patient_appointment.send_appointment_reminder' - frappe.db.set_value('Scheduled Job Type', job, 'method', method) diff --git a/erpnext/patches/v13_0/create_healthcare_custom_fields_in_stock_entry_detail.py b/erpnext/patches/v13_0/create_healthcare_custom_fields_in_stock_entry_detail.py deleted file mode 100644 index 543faeb74a..0000000000 --- a/erpnext/patches/v13_0/create_healthcare_custom_fields_in_stock_entry_detail.py +++ /dev/null @@ -1,12 +0,0 @@ -import frappe -from frappe.custom.doctype.custom_field.custom_field import create_custom_fields - -from erpnext.domains.healthcare import data - - -def execute(): - if 'Healthcare' not in frappe.get_active_domains(): - return - - if data['custom_fields']: - create_custom_fields(data['custom_fields']) diff --git a/erpnext/patches/v13_0/setup_patient_history_settings_for_standard_doctypes.py b/erpnext/patches/v13_0/setup_patient_history_settings_for_standard_doctypes.py deleted file mode 100644 index 80622d4609..0000000000 --- a/erpnext/patches/v13_0/setup_patient_history_settings_for_standard_doctypes.py +++ /dev/null @@ -1,19 +0,0 @@ -from __future__ import unicode_literals - -import frappe - -from erpnext.healthcare.setup import setup_patient_history_settings - - -def execute(): - if "Healthcare" not in frappe.get_active_domains(): - return - - frappe.reload_doc("healthcare", "doctype", "Inpatient Medication Order") - frappe.reload_doc("healthcare", "doctype", "Therapy Session") - frappe.reload_doc("healthcare", "doctype", "Clinical Procedure") - frappe.reload_doc("healthcare", "doctype", "Patient History Settings") - frappe.reload_doc("healthcare", "doctype", "Patient History Standard Document Type") - frappe.reload_doc("healthcare", "doctype", "Patient History Custom Document Type") - - setup_patient_history_settings()