chore: Removed healthcare demo, patch files
diff --git a/erpnext/demo/setup/healthcare.py b/erpnext/demo/setup/healthcare.py
deleted file mode 100644
index 5d5707f..0000000
--- 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 bbeb2c6..0000000
--- 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 9bb91dc..0000000
--- 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 b1ed0f5..0000000
--- 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 a4f53b0..0000000
--- 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 7a8c52f..0000000
--- 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 5c96367..0000000
--- 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 024cb2b..0000000
--- 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 543faeb..0000000
--- 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 80622d4..0000000
--- 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()