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'
			""")
