diff --git a/erpnext/healthcare/dashboard_chart/clinical_procedures/clinical_procedures.json b/erpnext/healthcare/dashboard_chart/clinical_procedures/clinical_procedures.json
index a59f149..6803528 100644
--- a/erpnext/healthcare/dashboard_chart/clinical_procedures/clinical_procedures.json
+++ b/erpnext/healthcare/dashboard_chart/clinical_procedures/clinical_procedures.json
@@ -12,15 +12,15 @@
  "idx": 0,
  "is_public": 1,
  "is_standard": 1,
- "last_synced_on": "2020-07-22 13:22:47.008622",
- "modified": "2020-07-22 13:36:48.114479",
+ "last_synced_on": "2021-01-30 21:03:30.086891",
+ "modified": "2021-02-01 13:36:04.469863",
  "modified_by": "Administrator",
  "module": "Healthcare",
  "name": "Clinical Procedures",
  "number_of_groups": 0,
  "owner": "Administrator",
  "timeseries": 0,
- "type": "Percentage",
+ "type": "Bar",
  "use_report_chart": 0,
  "y_axis": []
 }
\ No newline at end of file
diff --git a/erpnext/healthcare/dashboard_chart/clinical_procedures_status/clinical_procedures_status.json b/erpnext/healthcare/dashboard_chart/clinical_procedures_status/clinical_procedures_status.json
index 6d560f7..dae9db1 100644
--- a/erpnext/healthcare/dashboard_chart/clinical_procedures_status/clinical_procedures_status.json
+++ b/erpnext/healthcare/dashboard_chart/clinical_procedures_status/clinical_procedures_status.json
@@ -12,15 +12,15 @@
  "idx": 0,
  "is_public": 1,
  "is_standard": 1,
- "last_synced_on": "2020-07-22 13:22:46.691764",
- "modified": "2020-07-22 13:40:17.215775",
+ "last_synced_on": "2021-02-01 13:36:38.787783",
+ "modified": "2021-02-01 13:37:18.718275",
  "modified_by": "Administrator",
  "module": "Healthcare",
  "name": "Clinical Procedures Status",
  "number_of_groups": 0,
  "owner": "Administrator",
  "timeseries": 0,
- "type": "Pie",
+ "type": "Bar",
  "use_report_chart": 0,
  "y_axis": []
 }
\ No newline at end of file
diff --git a/erpnext/healthcare/dashboard_chart/diagnoses/diagnoses.json b/erpnext/healthcare/dashboard_chart/diagnoses/diagnoses.json
index 0195aac..82145d6 100644
--- a/erpnext/healthcare/dashboard_chart/diagnoses/diagnoses.json
+++ b/erpnext/healthcare/dashboard_chart/diagnoses/diagnoses.json
@@ -5,21 +5,22 @@
  "docstatus": 0,
  "doctype": "Dashboard Chart",
  "document_type": "Patient Encounter Diagnosis",
+ "dynamic_filters_json": "",
  "filters_json": "[]",
  "group_by_based_on": "diagnosis",
  "group_by_type": "Count",
  "idx": 0,
  "is_public": 1,
  "is_standard": 1,
- "last_synced_on": "2020-07-22 13:22:47.895521",
- "modified": "2020-07-22 13:43:32.369481",
+ "last_synced_on": "2021-01-30 21:03:33.729487",
+ "modified": "2021-02-01 13:34:57.385335",
  "modified_by": "Administrator",
  "module": "Healthcare",
  "name": "Diagnoses",
  "number_of_groups": 0,
  "owner": "Administrator",
  "timeseries": 0,
- "type": "Percentage",
+ "type": "Bar",
  "use_report_chart": 0,
  "y_axis": []
 }
\ No newline at end of file
diff --git a/erpnext/healthcare/dashboard_chart/lab_tests/lab_tests.json b/erpnext/healthcare/dashboard_chart/lab_tests/lab_tests.json
index 0524835..70293b1 100644
--- a/erpnext/healthcare/dashboard_chart/lab_tests/lab_tests.json
+++ b/erpnext/healthcare/dashboard_chart/lab_tests/lab_tests.json
@@ -12,15 +12,15 @@
  "idx": 0,
  "is_public": 1,
  "is_standard": 1,
- "last_synced_on": "2020-07-22 13:22:47.344055",
- "modified": "2020-07-22 13:37:34.490129",
+ "last_synced_on": "2021-01-30 21:03:28.272914",
+ "modified": "2021-02-01 13:36:08.391433",
  "modified_by": "Administrator",
  "module": "Healthcare",
  "name": "Lab Tests",
  "number_of_groups": 0,
  "owner": "Administrator",
  "timeseries": 0,
- "type": "Percentage",
+ "type": "Bar",
  "use_report_chart": 0,
  "y_axis": []
 }
\ No newline at end of file
diff --git a/erpnext/healthcare/dashboard_chart/symptoms/symptoms.json b/erpnext/healthcare/dashboard_chart/symptoms/symptoms.json
index 8fc86a1..65e5472 100644
--- a/erpnext/healthcare/dashboard_chart/symptoms/symptoms.json
+++ b/erpnext/healthcare/dashboard_chart/symptoms/symptoms.json
@@ -12,15 +12,15 @@
  "idx": 0,
  "is_public": 1,
  "is_standard": 1,
- "last_synced_on": "2020-07-22 13:22:47.296748",
- "modified": "2020-07-22 13:40:59.655129",
+ "last_synced_on": "2021-01-30 21:03:32.067473",
+ "modified": "2021-02-01 13:35:30.953718",
  "modified_by": "Administrator",
  "module": "Healthcare",
  "name": "Symptoms",
  "number_of_groups": 0,
  "owner": "Administrator",
  "timeseries": 0,
- "type": "Percentage",
+ "type": "Bar",
  "use_report_chart": 0,
  "y_axis": []
 }
\ No newline at end of file
diff --git a/erpnext/healthcare/doctype/lab_test/lab_test.py b/erpnext/healthcare/doctype/lab_test/lab_test.py
index 4b57cd0..74495a8 100644
--- a/erpnext/healthcare/doctype/lab_test/lab_test.py
+++ b/erpnext/healthcare/doctype/lab_test/lab_test.py
@@ -34,7 +34,7 @@
 			frappe.db.set_value('Lab Prescription', self.prescription, 'lab_test_created', 1)
 			if frappe.db.get_value('Lab Prescription', self.prescription, 'invoiced'):
 				self.invoiced = True
-		if not self.lab_test_name and self.template:
+		if self.template:
 			self.load_test_from_template()
 			self.reload()
 
@@ -50,7 +50,7 @@
 					item.secondary_uom_result = float(item.result_value) * float(item.conversion_factor)
 				except:
 					item.secondary_uom_result = ''
-					frappe.msgprint(_('Row #{0}: Result for Secondary UOM not calculated'.format(item.idx)), title = _('Warning'))
+					frappe.msgprint(_('Row #{0}: Result for Secondary UOM not calculated').format(item.idx), title = _('Warning'))
 
 	def validate_result_values(self):
 		if self.normal_test_items:
@@ -229,9 +229,9 @@
 			sample_collection = frappe.get_doc('Sample Collection', sample_exists[0][0])
 			quantity = int(sample_collection.sample_qty) + int(template.sample_qty)
 			if template.sample_details:
-				sample_details = sample_collection.sample_details + '\n-\n' + _('Test: ')
+				sample_details = sample_collection.sample_details + '\n-\n' + _('Test :')
 				sample_details += (template.get('lab_test_name') or template.get('template')) +	'\n'
-				sample_details += _('Collection Details: ') + '\n\t' + template.sample_details
+				sample_details += _('Collection Details:') + '\n\t' + template.sample_details
 				frappe.db.set_value('Sample Collection', sample_collection.name, 'sample_details', sample_details)
 
 			frappe.db.set_value('Sample Collection', sample_collection.name, 'sample_qty', quantity)
diff --git a/erpnext/healthcare/doctype/patient_appointment/test_patient_appointment.py b/erpnext/healthcare/doctype/patient_appointment/test_patient_appointment.py
index f5477c0..36ef2d1 100644
--- a/erpnext/healthcare/doctype/patient_appointment/test_patient_appointment.py
+++ b/erpnext/healthcare/doctype/patient_appointment/test_patient_appointment.py
@@ -66,7 +66,7 @@
 		medical_department = create_medical_department()
 		frappe.db.set_value('Healthcare Settings', None, 'enable_free_follow_ups', 0)
 		frappe.db.set_value('Healthcare Settings', None, 'automate_appointment_invoicing', 1)
-		appointment_type = create_appointment_type()
+		appointment_type = create_appointment_type({'medical_department': medical_department})
 
 		appointment = create_appointment(patient, practitioner, add_days(nowdate(), 2),
 			invoice=1, appointment_type=appointment_type.name, department=medical_department)
@@ -91,9 +91,9 @@
 				'op_consulting_charge': 300
 		}]
 		appointment_type = create_appointment_type(args={
-				'name': 'Generic Appointment Type charge',
-				'items': items
-			})
+			'name': 'Generic Appointment Type charge',
+			'items': items
+		})
 
 		appointment = create_appointment(patient, practitioner, add_days(nowdate(), 2),
 			invoice=1, appointment_type=appointment_type.name)
@@ -408,9 +408,9 @@
 	else:
 		item = create_healthcare_service_items()
 		items = [{
-				'medical_department': '_Test Medical Department',
-				'op_consulting_charge_item': item,
-				'op_consulting_charge': 200
+			'medical_department': args.get('medical_department') or '_Test Medical Department',
+			'op_consulting_charge_item': item,
+			'op_consulting_charge': 200
 		}]
 		return frappe.get_doc({
 			'doctype': 'Appointment Type',
diff --git a/erpnext/healthcare/doctype/patient_history_settings/patient_history_settings.py b/erpnext/healthcare/doctype/patient_history_settings/patient_history_settings.py
index 63b0085..9e0d3c3 100644
--- a/erpnext/healthcare/doctype/patient_history_settings/patient_history_settings.py
+++ b/erpnext/healthcare/doctype/patient_history_settings/patient_history_settings.py
@@ -18,7 +18,7 @@
 	def validate_submittable_doctypes(self):
 		for entry in self.custom_doctypes:
 			if not cint(frappe.db.get_value('DocType', entry.document_type, 'is_submittable')):
-				msg = _('Row #{0}: Document Type {1} is not submittable. ').format(
+				msg = _('Row #{0}: Document Type {1} is not submittable.').format(
 					entry.idx, frappe.bold(entry.document_type))
 				msg += _('Patient Medical Record can only be created for submittable document types.')
 				frappe.throw(msg)
@@ -116,12 +116,12 @@
 		fieldname = entry.get('fieldname')
 		if entry.get('fieldtype') == 'Table' and doc.get(fieldname):
 			formatted_value = get_formatted_value_for_table_field(doc.get(fieldname), meta.get_field(fieldname))
-			subject += frappe.bold(_(entry.get('label')) + ': ') + '<br>' + cstr(formatted_value) + '<br>'
+			subject += frappe.bold(_(entry.get('label')) + ':') + '<br>' + cstr(formatted_value) + '<br>'
 
 		else:
 			if doc.get(fieldname):
 				formatted_value = format_value(doc.get(fieldname), meta.get_field(fieldname), doc)
-				subject += frappe.bold(_(entry.get('label')) + ': ') + cstr(formatted_value) + '<br>'
+				subject += frappe.bold(_(entry.get('label')) + ':') + cstr(formatted_value) + '<br>'
 
 	return subject
 
diff --git a/erpnext/healthcare/doctype/patient_history_settings/test_patient_history_settings.py b/erpnext/healthcare/doctype/patient_history_settings/test_patient_history_settings.py
index 33119d8..9169ea6 100644
--- a/erpnext/healthcare/doctype/patient_history_settings/test_patient_history_settings.py
+++ b/erpnext/healthcare/doctype/patient_history_settings/test_patient_history_settings.py
@@ -38,13 +38,12 @@
 		# tests for medical record creation of standard doctypes in test_patient_medical_record.py
 		patient = create_patient()
 		doc = create_doc(patient)
-
 		# check for medical record
 		medical_rec = frappe.db.exists("Patient Medical Record", {"status": "Open", "reference_name": doc.name})
 		self.assertTrue(medical_rec)
 
 		medical_rec = frappe.get_doc("Patient Medical Record", medical_rec)
-		expected_subject = "Date: {0}Rating: 3Feedback: Test Patient History Settings".format(
+		expected_subject = "Date:{0}Rating:3Feedback:Test Patient History Settings".format(
 			frappe.utils.format_date(getdate()))
 		self.assertEqual(strip_html(medical_rec.subject), expected_subject)
 		self.assertEqual(medical_rec.patient, patient)
diff --git a/erpnext/healthcare/module_onboarding/healthcare/healthcare.json b/erpnext/healthcare/module_onboarding/healthcare/healthcare.json
index 56c3c13..0aa8f9a 100644
--- a/erpnext/healthcare/module_onboarding/healthcare/healthcare.json
+++ b/erpnext/healthcare/module_onboarding/healthcare/healthcare.json
@@ -10,7 +10,7 @@
  "documentation_url": "https://docs.erpnext.com/docs/user/manual/en/healthcare",
  "idx": 0,
  "is_complete": 0,
- "modified": "2020-07-08 14:06:19.512946",
+ "modified": "2021-01-30 19:22:20.273766",
  "modified_by": "Administrator",
  "module": "Healthcare",
  "name": "Healthcare",
diff --git a/erpnext/healthcare/onboarding_step/create_healthcare_practitioner/create_healthcare_practitioner.json b/erpnext/healthcare/onboarding_step/create_healthcare_practitioner/create_healthcare_practitioner.json
index c45a347..3f25a9d 100644
--- a/erpnext/healthcare/onboarding_step/create_healthcare_practitioner/create_healthcare_practitioner.json
+++ b/erpnext/healthcare/onboarding_step/create_healthcare_practitioner/create_healthcare_practitioner.json
@@ -5,14 +5,14 @@
  "doctype": "Onboarding Step",
  "idx": 0,
  "is_complete": 0,
- "is_mandatory": 1,
  "is_single": 0,
  "is_skipped": 0,
- "modified": "2020-05-26 23:16:31.965521",
+ "modified": "2021-01-30 12:02:22.849260",
  "modified_by": "Administrator",
  "name": "Create Healthcare Practitioner",
  "owner": "Administrator",
  "reference_document": "Healthcare Practitioner",
+ "show_form_tour": 0,
  "show_full_form": 1,
  "title": "Create Healthcare Practitioner",
  "validate_action": 1
diff --git a/erpnext/healthcare/onboarding_step/create_patient/create_patient.json b/erpnext/healthcare/onboarding_step/create_patient/create_patient.json
index 77bc5bd..b46bb15 100644
--- a/erpnext/healthcare/onboarding_step/create_patient/create_patient.json
+++ b/erpnext/healthcare/onboarding_step/create_patient/create_patient.json
@@ -5,14 +5,14 @@
  "doctype": "Onboarding Step",
  "idx": 0,
  "is_complete": 0,
- "is_mandatory": 1,
  "is_single": 0,
  "is_skipped": 0,
- "modified": "2020-05-19 12:26:24.023418",
- "modified_by": "Administrator",
+ "modified": "2021-01-30 00:09:28.786428",
+ "modified_by": "ruchamahabal2@gmail.com",
  "name": "Create Patient",
  "owner": "Administrator",
  "reference_document": "Patient",
+ "show_form_tour": 0,
  "show_full_form": 1,
  "title": "Create Patient",
  "validate_action": 1
diff --git a/erpnext/healthcare/onboarding_step/create_practitioner_schedule/create_practitioner_schedule.json b/erpnext/healthcare/onboarding_step/create_practitioner_schedule/create_practitioner_schedule.json
index 65980ef..7ce122d 100644
--- a/erpnext/healthcare/onboarding_step/create_practitioner_schedule/create_practitioner_schedule.json
+++ b/erpnext/healthcare/onboarding_step/create_practitioner_schedule/create_practitioner_schedule.json
@@ -5,14 +5,14 @@
  "doctype": "Onboarding Step",
  "idx": 0,
  "is_complete": 0,
- "is_mandatory": 1,
  "is_single": 0,
  "is_skipped": 0,
- "modified": "2020-05-19 12:27:09.437825",
- "modified_by": "Administrator",
+ "modified": "2021-01-30 00:09:28.794602",
+ "modified_by": "ruchamahabal2@gmail.com",
  "name": "Create Practitioner Schedule",
  "owner": "Administrator",
  "reference_document": "Practitioner Schedule",
+ "show_form_tour": 0,
  "show_full_form": 1,
  "title": "Create Practitioner Schedule",
  "validate_action": 1
diff --git a/erpnext/healthcare/onboarding_step/explore_clinical_procedure_templates/explore_clinical_procedure_templates.json b/erpnext/healthcare/onboarding_step/explore_clinical_procedure_templates/explore_clinical_procedure_templates.json
index 697b761..dfe9f71 100644
--- a/erpnext/healthcare/onboarding_step/explore_clinical_procedure_templates/explore_clinical_procedure_templates.json
+++ b/erpnext/healthcare/onboarding_step/explore_clinical_procedure_templates/explore_clinical_procedure_templates.json
@@ -5,14 +5,14 @@
  "doctype": "Onboarding Step",
  "idx": 0,
  "is_complete": 0,
- "is_mandatory": 0,
  "is_single": 0,
  "is_skipped": 0,
- "modified": "2020-05-26 23:10:24.504030",
+ "modified": "2021-01-30 19:22:08.257160",
  "modified_by": "Administrator",
  "name": "Explore Clinical Procedure Templates",
  "owner": "Administrator",
  "reference_document": "Clinical Procedure Template",
+ "show_form_tour": 0,
  "show_full_form": 0,
  "title": "Explore Clinical Procedure Templates",
  "validate_action": 1
diff --git a/erpnext/healthcare/onboarding_step/explore_healthcare_settings/explore_healthcare_settings.json b/erpnext/healthcare/onboarding_step/explore_healthcare_settings/explore_healthcare_settings.json
index b2d5aef..2d952f3 100644
--- a/erpnext/healthcare/onboarding_step/explore_healthcare_settings/explore_healthcare_settings.json
+++ b/erpnext/healthcare/onboarding_step/explore_healthcare_settings/explore_healthcare_settings.json
@@ -5,14 +5,14 @@
  "doctype": "Onboarding Step",
  "idx": 0,
  "is_complete": 0,
- "is_mandatory": 1,
  "is_single": 1,
  "is_skipped": 0,
- "modified": "2020-05-26 23:10:24.507648",
+ "modified": "2021-01-30 19:22:07.275735",
  "modified_by": "Administrator",
  "name": "Explore Healthcare Settings",
  "owner": "Administrator",
  "reference_document": "Healthcare Settings",
+ "show_form_tour": 0,
  "show_full_form": 0,
  "title": "Explore Healthcare Settings",
  "validate_action": 1
diff --git a/erpnext/healthcare/onboarding_step/introduction_to_healthcare_practitioner/introduction_to_healthcare_practitioner.json b/erpnext/healthcare/onboarding_step/introduction_to_healthcare_practitioner/introduction_to_healthcare_practitioner.json
index fa4c903..baa8358 100644
--- a/erpnext/healthcare/onboarding_step/introduction_to_healthcare_practitioner/introduction_to_healthcare_practitioner.json
+++ b/erpnext/healthcare/onboarding_step/introduction_to_healthcare_practitioner/introduction_to_healthcare_practitioner.json
@@ -6,14 +6,14 @@
  "field": "schedule",
  "idx": 0,
  "is_complete": 0,
- "is_mandatory": 1,
  "is_single": 0,
  "is_skipped": 0,
- "modified": "2020-05-26 22:07:07.482530",
- "modified_by": "Administrator",
+ "modified": "2021-01-30 00:09:28.807129",
+ "modified_by": "ruchamahabal2@gmail.com",
  "name": "Introduction to Healthcare Practitioner",
  "owner": "Administrator",
  "reference_document": "Healthcare Practitioner",
+ "show_form_tour": 0,
  "show_full_form": 0,
  "title": "Introduction to Healthcare Practitioner",
  "validate_action": 0
diff --git a/erpnext/healthcare/page/patient_history/patient_history.css b/erpnext/healthcare/page/patient_history/patient_history.css
index 1bb5891..74b5e7e 100644
--- a/erpnext/healthcare/page/patient_history/patient_history.css
+++ b/erpnext/healthcare/page/patient_history/patient_history.css
@@ -9,6 +9,26 @@
 	cursor: pointer;
 }
 
+.patient-image-container {
+	margin-top: 17px;
+  }
+
+.patient-image {
+	display: inline-block;
+	width: 100%;
+	height: 0;
+	padding: 50% 0px;
+	background-size: cover;
+	background-repeat: no-repeat;
+	background-position: center center;
+	border-radius: 4px;
+}
+
+.patient-name {
+	font-size: 20px;
+	margin-top: 25px;
+}
+
 .medical_record-label {
 	max-width: 100px;
 	margin-bottom: -4px;
@@ -19,19 +39,19 @@
 }
 
 .date-indicator {
-    background:none;
-    font-size:12px;
-    vertical-align:middle;
-    font-weight:bold;
-    color:#6c7680;
+	background:none;
+	font-size:12px;
+	vertical-align:middle;
+	font-weight:bold;
+	color:#6c7680;
 }
 .date-indicator::after {
-    margin:0 -4px 0 12px;
-    content:'';
-    display:inline-block;
-    height:8px;
-    width:8px;
-    border-radius:8px;
+	margin:0 -4px 0 12px;
+	content:'';
+	display:inline-block;
+	height:8px;
+	width:8px;
+	border-radius:8px;
 	background: #d1d8dd;
 }
 
diff --git a/erpnext/healthcare/page/patient_history/patient_history.html b/erpnext/healthcare/page/patient_history/patient_history.html
index f170655..d16b386 100644
--- a/erpnext/healthcare/page/patient_history/patient_history.html
+++ b/erpnext/healthcare/page/patient_history/patient_history.html
@@ -1,26 +1,18 @@
-<div class="col-sm-12">
-	<div class="col-sm-3">
-	<p class="patient" style="margin: auto; max-width: 300px; margin-bottom: 20px;"></p>
-	<div class="patient_details" style="z-index=0"></div>
+<div class="row patient-documents">
+	<div class="col-sm-12">
+		<div class="col-sm-12 show_chart_btns" align="center">
+		</div>
+		<div id="chart" class="col-sm-12 patient_vital_charts">
+		</div>
 	</div>
-	<div class="col-sm-9 patient_documents">
-		<div class="col-sm-12">
-			<div class="col-sm-12 show_chart_btns" align="center">
-			</div>
-			<div id="chart" class="col-sm-12 patient_vital_charts">
-			</div>
-		</div>
-		<div class="header-separator col-sm-12 d-flex border-bottom py-3" style="display:none"></div>
-		<div class="row">
-			<div class="col-sm-12 d-flex">
-				<div class="patient-history-filter doctype-filter"></div>
-				<div class="patient-history-filter date-filter"></div>
-			</div>
-		</div>
-		<div class="col-sm-12 patient_documents_list">
-		</div>
-		<div class="col-sm-12 text-center py-3">
-			<a class="btn btn-sm btn-default btn-get-records" style="display:none">More..</a>
-		</div>
+	<div class="header-separator col-sm-12 d-flex border-bottom py-3" style="display:none"></div>
+	<div class="col-sm-12 d-flex">
+		<div class="patient-history-filter doctype-filter"></div>
+		<div class="patient-history-filter date-filter"></div>
+	</div>
+	<div class="col-sm-12 patient_documents_list">
+	</div>
+	<div class="col-sm-12 text-center py-3">
+		<a class="btn btn-sm btn-default btn-get-records" style="display:none">More..</a>
 	</div>
 </div>
diff --git a/erpnext/healthcare/page/patient_history/patient_history.js b/erpnext/healthcare/page/patient_history/patient_history.js
index 54343aa..bf947ca 100644
--- a/erpnext/healthcare/page/patient_history/patient_history.js
+++ b/erpnext/healthcare/page/patient_history/patient_history.js
@@ -1,403 +1,455 @@
 frappe.provide('frappe.patient_history');
 frappe.pages['patient_history'].on_page_load = function(wrapper) {
-	let me = this;
-	let page = frappe.ui.make_app_page({
+	frappe.ui.make_app_page({
 		parent: wrapper,
-		title: 'Patient History',
-		single_column: true
+		title: __('Patient History')
 	});
 
-	frappe.breadcrumbs.add('Healthcare');
-	let pid = '';
-	page.main.html(frappe.render_template('patient_history', {}));
-	page.main.find('.header-separator').hide();
-
-	let patient = frappe.ui.form.make_control({
-		parent: page.main.find('.patient'),
-		df: {
-			fieldtype: 'Link',
-			options: 'Patient',
-			fieldname: 'patient',
-			placeholder: __('Select Patient'),
-			only_select: true,
-			change: function() {
-				let patient_id = patient.get_value();
-				if (pid != patient_id && patient_id) {
-					me.start = 0;
-					me.page.main.find('.patient_documents_list').html('');
-					setup_filters(patient_id, me);
-					get_documents(patient_id, me);
-					show_patient_info(patient_id, me);
-					show_patient_vital_charts(patient_id, me, 'bp', 'mmHg', 'Blood Pressure');
-				}
-				pid = patient_id;
-			}
-		},
-	});
-	patient.refresh();
-
-	if (frappe.route_options) {
-		patient.set_value(frappe.route_options.patient);
-	}
-
-	this.page.main.on('click', '.btn-show-chart', function() {
-		let	btn_show_id = $(this).attr('data-show-chart-id'), pts = $(this).attr('data-pts');
-		let title = $(this).attr('data-title');
-		show_patient_vital_charts(patient.get_value(), me, btn_show_id, pts, title);
-	});
-
-	this.page.main.on('click', '.btn-more', function() {
-		let	doctype = $(this).attr('data-doctype'), docname = $(this).attr('data-docname');
-		if (me.page.main.find('.'+docname).parent().find('.document-html').attr('data-fetched') == '1') {
-			me.page.main.find('.'+docname).hide();
-			me.page.main.find('.'+docname).parent().find('.document-html').show();
-		} else {
-			if (doctype && docname) {
-				let exclude = ['patient', 'patient_name', 'patient_sex', 'encounter_date'];
-				frappe.call({
-					method: 'erpnext.healthcare.utils.render_doc_as_html',
-					args:{
-						doctype: doctype,
-						docname: docname,
-						exclude_fields: exclude
-					},
-					freeze: true,
-					callback: function(r) {
-						if (r.message) {
-							me.page.main.find('.' + docname).hide();
-
-							me.page.main.find('.' + docname).parent().find('.document-html').html(
-								`${r.message.html}
-									<div align='center'>
-										<a class='btn octicon octicon-chevron-up btn-default btn-xs btn-less'
-											data-doctype='${doctype}'
-											data-docname='${docname}'>
-										</a>
-									</div>
-								`);
-
-							me.page.main.find('.' + docname).parent().find('.document-html').show();
-							me.page.main.find('.' + docname).parent().find('.document-html').attr('data-fetched', '1');
-						}
-					}
-				});
-			}
-		}
-	});
-
-	this.page.main.on('click', '.btn-less', function() {
-		let docname = $(this).attr('data-docname');
-		me.page.main.find('.' + docname).parent().find('.document-id').show();
-		me.page.main.find('.' + docname).parent().find('.document-html').hide();
-	});
-	me.start = 0;
-	me.page.main.on('click', '.btn-get-records', function() {
-		get_documents(patient.get_value(), me);
+	let patient_history = new PatientHistory(wrapper);
+	$(wrapper).bind('show', ()=> {
+		patient_history.show();
 	});
 };
 
-let setup_filters = function(patient, me) {
-	$('.doctype-filter').empty();
-	frappe.xcall(
-		'erpnext.healthcare.page.patient_history.patient_history.get_patient_history_doctypes'
-	).then(document_types => {
-		let doctype_filter = frappe.ui.form.make_control({
-			parent: $('.doctype-filter'),
+class PatientHistory {
+	constructor(wrapper) {
+		this.wrapper = $(wrapper);
+		this.page = wrapper.page;
+		this.sidebar = this.wrapper.find('.layout-side-section');
+		this.main_section = this.wrapper.find('.layout-main-section');
+		this.start = 0;
+	}
+
+	show() {
+		frappe.breadcrumbs.add('Healthcare');
+		this.sidebar.empty();
+
+		let me = this;
+		let patient = frappe.ui.form.make_control({
+			parent: me.sidebar,
 			df: {
-				fieldtype: 'MultiSelectList',
-				fieldname: 'document_type',
-				placeholder: __('Select Document Type'),
-				input_class: 'input-xs',
+				fieldtype: 'Link',
+				options: 'Patient',
+				fieldname: 'patient',
+				placeholder: __('Select Patient'),
+				only_select: true,
 				change: () => {
-					me.start = 0;
-					me.page.main.find('.patient_documents_list').html('');
-					get_documents(patient, me, doctype_filter.get_value(), date_range_field.get_value());
-				},
-				get_data: () => {
-					return document_types.map(document_type => {
-						return {
-							description: document_type,
-							value: document_type
-						};
-					});
-				},
+					me.patient_id = '';
+					if (me.patient_id != patient.get_value() && patient.get_value()) {
+						me.start = 0;
+						me.patient_id = patient.get_value();
+						me.make_patient_profile();
+					}
+				}
 			}
 		});
-		doctype_filter.refresh();
+		patient.refresh();
 
-		$('.date-filter').empty();
-		let date_range_field = frappe.ui.form.make_control({
-			df: {
-				fieldtype: 'DateRange',
-				fieldname: 'date_range',
-				placeholder: __('Date Range'),
-				input_class: 'input-xs',
-				change: () => {
-					let selected_date_range = date_range_field.get_value();
-					if (selected_date_range && selected_date_range.length === 2) {
+		if (frappe.route_options && !this.patient_id) {
+			patient.set_value(frappe.route_options.patient);
+			this.patient_id = frappe.route_options.patient;
+		}
+
+		this.sidebar.find('[data-fieldname="patient"]').append('<div class="patient-info"></div>');
+	}
+
+	make_patient_profile() {
+		this.page.set_title(__('Patient History'));
+		this.main_section.empty().append(frappe.render_template('patient_history'));
+		this.setup_filters();
+		this.setup_documents();
+		this.show_patient_info();
+		this.setup_buttons();
+		this.show_patient_vital_charts('bp', 'mmHg', 'Blood Pressure');
+	}
+
+	setup_filters() {
+		$('.doctype-filter').empty();
+		let me = this;
+
+		frappe.xcall(
+			'erpnext.healthcare.page.patient_history.patient_history.get_patient_history_doctypes'
+		).then(document_types => {
+			let doctype_filter = frappe.ui.form.make_control({
+				parent: $('.doctype-filter'),
+				df: {
+					fieldtype: 'MultiSelectList',
+					fieldname: 'document_type',
+					placeholder: __('Select Document Type'),
+					change: () => {
 						me.start = 0;
 						me.page.main.find('.patient_documents_list').html('');
-						get_documents(patient, me, doctype_filter.get_value(), selected_date_range);
-					}
+						this.setup_documents(doctype_filter.get_value(), date_range_field.get_value());
+					},
+					get_data: () => {
+						return document_types.map(document_type => {
+							return {
+								description: document_type,
+								value: document_type
+							};
+						});
+					},
 				}
-			},
-			parent: $('.date-filter')
+			});
+			doctype_filter.refresh();
+
+			$('.date-filter').empty();
+			let date_range_field = frappe.ui.form.make_control({
+				df: {
+					fieldtype: 'DateRange',
+					fieldname: 'date_range',
+					placeholder: __('Date Range'),
+					input_class: 'input-xs',
+					change: () => {
+						let selected_date_range = date_range_field.get_value();
+						if (selected_date_range && selected_date_range.length === 2) {
+							me.start = 0;
+							me.page.main.find('.patient_documents_list').html('');
+							this.setup_documents(doctype_filter.get_value(), date_range_field.get_value());
+						}
+					}
+				},
+				parent: $('.date-filter')
+			});
+			date_range_field.refresh();
 		});
-		date_range_field.refresh();
-	});
-};
+	}
 
-let get_documents = function(patient, me, document_types="", selected_date_range="") {
-	let filters = {
-		name: patient,
-		start: me.start,
-		page_length: 20
-	};
-	if (document_types)
-		filters['document_types'] = document_types;
-	if (selected_date_range)
-		filters['date_range'] = selected_date_range;
+	setup_documents(document_types="", selected_date_range="") {
+		let filters = {
+			name: this.patient_id,
+			start: this.start,
+			page_length: 20
+		};
+		if (document_types)
+			filters['document_types'] = document_types;
+		if (selected_date_range)
+			filters['date_range'] = selected_date_range;
 
-	frappe.call({
-		'method': 'erpnext.healthcare.page.patient_history.patient_history.get_feed',
-		args: filters,
-		callback: function(r) {
-			let data = r.message;
-			if (data.length) {
-				add_to_records(me, data);
-			} else {
-				me.page.main.find('.patient_documents_list').append(`
-					<div class='text-muted' align='center'>
-						<br><br>${__('No more records..')}<br><br>
-					</div>`);
-				me.page.main.find('.btn-get-records').hide();
+		let me = this;
+		frappe.call({
+			'method': 'erpnext.healthcare.page.patient_history.patient_history.get_feed',
+			args: filters,
+			callback: function(r) {
+				let data = r.message;
+				if (data.length) {
+					me.add_to_records(data);
+				} else {
+					me.page.main.find('.patient_documents_list').append(`
+						<div class='text-muted' align='center'>
+							<br><br>${__('No more records..')}<br><br>
+						</div>`);
+					me.page.main.find('.btn-get-records').hide();
+				}
 			}
-		}
-	});
-};
+		});
+	}
 
-let add_to_records = function(me, data) {
-	let details = "<ul class='nav nav-pills nav-stacked'>";
-	let i;
-	for (i=0; i<data.length; i++) {
-		if (data[i].reference_doctype) {
-			let label = '';
-			if (data[i].subject) {
-				label += "<br/>" + data[i].subject;
-			}
-			data[i] = add_date_separator(data[i]);
+	add_to_records(data) {
+		let details = "";
+		let i;
+		for (i=0; i<data.length; i++) {
+			if (data[i].reference_doctype) {
+				let label = '';
+				if (data[i].subject) {
+					label += "<br/>" + data[i].subject;
+				}
+				data[i] = this.add_date_separator(data[i]);
 
-			if (frappe.user_info(data[i].owner).image) {
-				data[i].imgsrc = frappe.utils.get_file_link(frappe.user_info(data[i].owner).image);
-			} else {
-				data[i].imgsrc = false;
-			}
+				if (frappe.user_info(data[i].owner).image) {
+					data[i].imgsrc = frappe.utils.get_file_link(frappe.user_info(data[i].owner).image);
+				} else {
+					data[i].imgsrc = false;
+				}
 
-			let time_line_heading = data[i].practitioner ? `${data[i].practitioner} ` : ``;
-			time_line_heading += data[i].reference_doctype + " - " +
-				`<a onclick="frappe.set_route('Form', '${data[i].reference_doctype}', '${data[i].reference_name}');">
-					${data[i].reference_name}
-				</a>`;
+				let time_line_heading = data[i].practitioner ? `${data[i].practitioner} ` : ``;
+				time_line_heading += data[i].reference_doctype + " - " +
+					`<a onclick="frappe.set_route('Form', '${data[i].reference_doctype}', '${data[i].reference_name}');">
+						${data[i].reference_name}
+					</a>`;
 
-			details += `
-				<li data-toggle='pill' class='patient_doc_menu'
-					data-doctype='${data[i].reference_doctype}' data-docname='${data[i].reference_name}'>
-					<div class='col-sm-12 d-flex border-bottom py-3'>`;
-
-			if (data[i].imgsrc) {
 				details += `
-					<span class='mr-3'>
-						<img class='avtar' src='${data[i].imgsrc}' width='32' height='32'></img>
-					</span>`;
-			} else {
-				details += `<span class='mr-3 avatar avatar-small' style='width:32px; height:32px;'>
-					<div align='center' class='standard-image' style='background-color: #fafbfc;'>
-						${data[i].practitioner ? data[i].practitioner.charAt(0) : 'U'}
-					</div>
-				</span>`;
-			}
+					<div data-toggle='pill' class='patient_doc_menu'
+						data-doctype='${data[i].reference_doctype}' data-docname='${data[i].reference_name}'>
+						<div class='col-sm-12 d-flex border-bottom py-3'>`;
 
-			details += `<div class='d-flex flex-column width-full'>
-					<div>
-						`+time_line_heading+`
-							<span>
-								${data[i].date_sep}
+				if (data[i].imgsrc) {
+					details += `<span class='mr-3 avatar avatar-small' style='width:32px; height:32px;'>
+							<img class='avatar-frame' src='${data[i].imgsrc}' width='32' height='32'></img>
+						</span>`;
+				} else {
+					details += `<span class='mr-3 avatar avatar-small' style='width:32px; height:32px;'>
+						<div align='center' class='avatar-frame' style='background-color: #fafbfc;'>
+							${data[i].practitioner ? data[i].practitioner.charAt(0) : 'U'}
+						</div>
+					</span>`;
+				}
+
+				details += `<div class='d-flex flex-column width-full'>
+						<div>
+							`+time_line_heading+`
+								<span>
+									${data[i].date_sep}
+								</span>
+						</div>
+						<div class='frappe-card p-5 mt-3'>
+							<span class='${data[i].reference_name} document-id'>${label}
+							<br>
+								<div align='center'>
+									<a class='btn octicon octicon-chevron-down btn-default btn-xs btn-more'
+										data-doctype='${data[i].reference_doctype}' data-docname='${data[i].reference_name}'>
+									</a>
+								</div>
 							</span>
-					</div>
-					<div class='Box p-3 mt-2'>
-						<span class='${data[i].reference_name} document-id'>${label}
-							<div align='center'>
-								<a class='btn octicon octicon-chevron-down btn-default btn-xs btn-more'
-									data-doctype='${data[i].reference_doctype}' data-docname='${data[i].reference_name}'>
-								</a>
-							</div>
-						</span>
-						<span class='document-html' hidden  data-fetched="0">
-						</span>
+
+							<span class='document-html' hidden data-fetched='0'>
+							</span>
+						</div>
 					</div>
 				</div>
-			</div>
-			</li>`;
+				</div>`;
+			}
+		}
+
+		this.page.main.find('.patient_documents_list').append(details);
+		this.start += data.length;
+
+		if (data.length === 20) {
+			this.page.main.find(".btn-get-records").show();
+		} else {
+			this.page.main.find(".btn-get-records").hide();
+			this.page.main.find(".patient_documents_list").append(`
+				<div class='text-muted' align='center'>
+					<br><br>${__('No more records..')}<br><br>
+				</div>`);
 		}
 	}
 
-	details += '</ul>';
-	me.page.main.find('.patient_documents_list').append(details);
-	me.start += data.length;
+	add_date_separator(data) {
+		let date = frappe.datetime.str_to_obj(data.communication_date);
+		let pdate = '';
+		let diff = frappe.datetime.get_day_diff(frappe.datetime.get_today(),
+			frappe.datetime.obj_to_str(date));
 
-	if (data.length === 20) {
-		me.page.main.find(".btn-get-records").show();
-	} else {
-		me.page.main.find(".btn-get-records").hide();
-		me.page.main.find(".patient_documents_list").append(`
-			<div class='text-muted' align='center'>
-				<br><br>${__('No more records..')}<br><br>
-			</div>`);
-	}
-};
-
-let add_date_separator = function(data) {
-	let date = frappe.datetime.str_to_obj(data.communication_date);
-	let pdate = '';
-	let diff = frappe.datetime.get_day_diff(frappe.datetime.get_today(), frappe.datetime.obj_to_str(date));
-
-	if (diff < 1) {
-		pdate = __('Today');
-	} else if (diff < 2) {
-		pdate = __('Yesterday');
-	} else {
-		pdate = __('on ') + frappe.datetime.global_date_format(date);
-	}
-	data.date_sep = pdate;
-	return data;
-};
-
-let show_patient_info = function(patient, me) {
-	frappe.call({
-		'method': 'erpnext.healthcare.doctype.patient.patient.get_patient_detail',
-		args: {
-			patient: patient
-		},
-		callback: function(r) {
-			let data = r.message;
-			let details = '';
-			if (data.image) {
-				details += `<div><img class='thumbnail' width=75% src='${data.image}'></div>`;
-			}
-
-			details += `<b> ${data.patient_name} </b><br> ${data.sex}`;
-			if (data.email) details += `<br> ${data.email}`;
-			if (data.mobile) details += `<br> ${data.mobile}`;
-			if (data.occupation) details += `<br><br><b> ${__('Occupation')} : </b> ${data.occupation}`;
-			if (data.blood_group) details += `<br><b> ${__('Blood Group')} : </b> ${data.blood_group}`;
-			if (data.allergies) details +=  `<br><br><b> ${__('Allerigies')} : </b> ${data.allergies.replace("\n", ", ")}`;
-			if (data.medication) details +=  `<br><b> ${__('Medication')} : </b> ${data.medication.replace("\n", ", ")}`;
-			if (data.alcohol_current_use) details +=  `<br><br><b> ${__('Alcohol use')} : </b> ${data.alcohol_current_use}`;
-			if (data.alcohol_past_use) details +=  `<br><b> ${__('Alcohol past use')} : </b> ${data.alcohol_past_use}`;
-			if (data.tobacco_current_use) details +=  `<br><b> ${__('Tobacco use')} : </b> ${data.tobacco_current_use}`;
-			if (data.tobacco_past_use) details +=  `<br><b> ${__('Tobacco past use')} : </b> ${data.tobacco_past_use}`;
-			if (data.medical_history) details +=  `<br><br><b> ${__('Medical history')} : </b> ${data.medical_history.replace("\n", ", ")}`;
-			if (data.surgical_history) details +=  `<br><b> ${__('Surgical history')} : </b> ${data.surgical_history.replace("\n", ", ")}`;
-			if (data.surrounding_factors) details +=  `<br><br><b> ${__('Occupational hazards')} : </b> ${data.surrounding_factors.replace("\n", ", ")}`;
-			if (data.other_risk_factors) details += `<br><b> ${__('Other risk factors')} : </b> ${data.other_risk_factors.replace("\n", ", ")}`;
-			if (data.patient_details) details += `<br><br><b> ${__('More info')} : </b> ${data.patient_details.replace("\n", ", ")}`;
-
-			if (details) {
-				details = `<div style='padding-left:10px; font-size:13px;' align='left'>` + details + `</div>`;
-			}
-			me.page.main.find('.patient_details').html(details);
+		if (diff < 1) {
+			pdate = __('Today');
+		} else if (diff < 2) {
+			pdate = __('Yesterday');
+		} else {
+			pdate = __('on {0}', [frappe.datetime.global_date_format(date)]);
 		}
-	});
-};
+		data.date_sep = pdate;
+		return data;
+	}
 
-let show_patient_vital_charts = function(patient, me, btn_show_id, pts, title) {
-	frappe.call({
-		method: 'erpnext.healthcare.utils.get_patient_vitals',
-		args:{
-			patient: patient
-		},
-		callback: function(r) {
-			if (r.message) {
-				let show_chart_btns_html = `
-					<div style='padding-top:10px;'>
-						<a class='btn btn-default btn-xs btn-show-chart' data-show-chart-id='bp' data-pts='mmHg' data-title='Blood Pressure'>
-							${__('Blood Pressure')}
-						</a>
-						<a class='btn btn-default btn-xs btn-show-chart' data-show-chart-id='pulse_rate' data-pts='per Minutes' data-title='Respiratory/Pulse Rate'>
-							${__('Respiratory/Pulse Rate')}
-						</a>
-						<a class='btn btn-default btn-xs btn-show-chart' data-show-chart-id='temperature' data-pts='°C or °F' data-title='Temperature'>
-							${__('Temperature')}
-						</a>
-						<a class='btn btn-default btn-xs btn-show-chart' data-show-chart-id='bmi' data-pts='' data-title='BMI'>
-							${__('BMI')}
-						</a>
-					</div>`;
+	show_patient_info() {
+		this.get_patient_info().then(() => {
+			$('.patient-info').empty().append(frappe.render_template('patient_history_sidebar', {
+				patient_image: this.patient.image,
+				patient_name: this.patient.patient_name,
+				patient_gender: this.patient.sex,
+				patient_mobile: this.patient.mobile
+			}));
+			this.show_patient_details();
+		});
+	}
 
-				me.page.main.find('.show_chart_btns').html(show_chart_btns_html);
+	show_patient_details() {
+		let me = this;
+		frappe.call({
+			'method': 'erpnext.healthcare.doctype.patient.patient.get_patient_detail',
+			args: {
+				patient: me.patient_id
+			},
+			callback: function(r) {
 				let data = r.message;
-				let labels = [], datasets = [];
-				let bp_systolic = [], bp_diastolic = [], temperature = [];
-				let pulse = [], respiratory_rate = [], bmi = [], height = [], weight = [];
+				let details = ``;
 
-				for (let i=0; i<data.length; i++) {
-					labels.push(data[i].signs_date+'||'+data[i].signs_time);
+				if (data.occupation) details += `<br><br><b> ${__('Occupation')} : </b> ${data.occupation}`;
+				if (data.blood_group) details += `<br><b> ${__('Blood Group')} : </b> ${data.blood_group}`;
+				if (data.allergies) details +=  `<br><br><b> ${__('Allerigies')} : </b> ${data.allergies.replace("\n", ", ")}`;
+				if (data.medication) details +=  `<br><b> ${__('Medication')} : </b> ${data.medication.replace("\n", ", ")}`;
+				if (data.alcohol_current_use) details +=  `<br><br><b> ${__('Alcohol use')} : </b> ${data.alcohol_current_use}`;
+				if (data.alcohol_past_use) details +=  `<br><b> ${__('Alcohol past use')} : </b> ${data.alcohol_past_use}`;
+				if (data.tobacco_current_use) details +=  `<br><b> ${__('Tobacco use')} : </b> ${data.tobacco_current_use}`;
+				if (data.tobacco_past_use) details +=  `<br><b> ${__('Tobacco past use')} : </b> ${data.tobacco_past_use}`;
+				if (data.medical_history) details +=  `<br><br><b> ${__('Medical history')} : </b> ${data.medical_history.replace("\n", ", ")}`;
+				if (data.surgical_history) details +=  `<br><b> ${__('Surgical history')} : </b> ${data.surgical_history.replace("\n", ", ")}`;
+				if (data.surrounding_factors) details +=  `<br><br><b> ${__('Occupational hazards')} : </b> ${data.surrounding_factors.replace("\n", ", ")}`;
+				if (data.other_risk_factors) details += `<br><b> ${__('Other risk factors')} : </b> ${data.other_risk_factors.replace("\n", ", ")}`;
+				if (data.patient_details) details += `<br><br><b> ${__('More info')} : </b> ${data.patient_details.replace("\n", ", ")}`;
 
-					if (btn_show_id === 'bp') {
-						bp_systolic.push(data[i].bp_systolic);
-						bp_diastolic.push(data[i].bp_diastolic);
-					}
-					if (btn_show_id === 'temperature') {
-						temperature.push(data[i].temperature);
-					}
-					if (btn_show_id === 'pulse_rate') {
-						pulse.push(data[i].pulse);
-						respiratory_rate.push(data[i].respiratory_rate);
-					}
-					if (btn_show_id === 'bmi') {
-						bmi.push(data[i].bmi);
-						height.push(data[i].height);
-						weight.push(data[i].weight);
-					}
+				if (details) {
+					details = `<div style='font-size:13px;' align='left'>` + details + `</div>`;
 				}
-				if (btn_show_id === 'temperature') {
-					datasets.push({name: 'Temperature', values: temperature, chartType: 'line'});
-				}
-				if (btn_show_id === 'bmi') {
-					datasets.push({name: 'BMI', values: bmi, chartType: 'line'});
-					datasets.push({name: 'Height', values: height, chartType: 'line'});
-					datasets.push({name: 'Weight', values: weight, chartType: 'line'});
-				}
-				if (btn_show_id === 'bp') {
-					datasets.push({name: 'BP Systolic', values: bp_systolic, chartType: 'line'});
-					datasets.push({name: 'BP Diastolic', values: bp_diastolic, chartType: 'line'});
-				}
-				if (btn_show_id === 'pulse_rate') {
-					datasets.push({name: 'Heart Rate / Pulse', values: pulse, chartType: 'line'});
-					datasets.push({name: 'Respiratory Rate', values: respiratory_rate, chartType: 'line'});
-				}
-				new frappe.Chart('.patient_vital_charts', {
-					data: {
-						labels: labels,
-						datasets: datasets
-					},
 
-					title: title,
-					type: 'axis-mixed',
-					height: 200,
-					colors: ['purple', '#ffa3ef', 'light-blue'],
-
-					tooltipOptions: {
-						formatTooltipX: d => (d + '').toUpperCase(),
-						formatTooltipY: d => d + ' ' + pts,
-					}
-				});
-				me.page.main.find('.header-separator').show();
-			} else {
-				me.page.main.find('.patient_vital_charts').html('');
-				me.page.main.find('.show_chart_btns').html('');
-				me.page.main.find('.header-separator').hide();
+				me.sidebar.find('.patient-details').html(details);
 			}
-		}
-	});
-};
+		});
+	}
+
+	get_patient_info() {
+		return frappe.xcall('frappe.client.get', {
+			doctype: 'Patient',
+			name: this.patient_id,
+		}).then((patient) => {
+			if (patient) {
+				this.patient = patient;
+			}
+		});
+	}
+
+	setup_buttons() {
+		let me = this;
+		this.page.main.on("click", ".btn-show-chart", function() {
+			let btn_id = $(this).attr("data-show-chart-id"), scale_unit = $(this).attr("data-pts");
+			let title = $(this).attr("data-title");
+			me.show_patient_vital_charts(btn_id, scale_unit, title);
+		});
+
+		this.page.main.on('click', '.btn-more', function() {
+			let	doctype = $(this).attr('data-doctype'), docname = $(this).attr('data-docname');
+			if (me.page.main.find('.'+docname).parent().find('.document-html').attr('data-fetched') == '1') {
+				me.page.main.find('.'+docname).hide();
+				me.page.main.find('.'+docname).parent().find('.document-html').show();
+			} else {
+				if (doctype && docname) {
+					let exclude = ['patient', 'patient_name', 'patient_sex', 'encounter_date', 'naming_series'];
+					frappe.call({
+						method: 'erpnext.healthcare.utils.render_doc_as_html',
+						args: {
+							doctype: doctype,
+							docname: docname,
+							exclude_fields: exclude
+						},
+						freeze: true,
+						callback: function(r) {
+							if (r.message) {
+								me.page.main.find('.' + docname).hide();
+
+								me.page.main.find('.' + docname).parent().find('.document-html').html(
+									`${r.message.html}
+									<br>
+										<div align='center'>
+											<a class='btn octicon octicon-chevron-up btn-default btn-xs btn-less'
+												data-doctype='${doctype}'
+												data-docname='${docname}'>
+											</a>
+										</div>
+									`);
+
+								me.page.main.find('.' + docname).parent().find('.document-html').attr('hidden', false);
+								me.page.main.find('.' + docname).parent().find('.document-html').attr('data-fetched', '1');
+							}
+						}
+					});
+				}
+			}
+		});
+
+		this.page.main.on('click', '.btn-less', function() {
+			let docname = $(this).attr('data-docname');
+			me.page.main.find('.' + docname).parent().find('.document-id').show();
+			me.page.main.find('.' + docname).parent().find('.document-html').hide();
+		});
+
+		me.page.main.on('click', '.btn-get-records', function() {
+			this.setup_documents();
+		});
+	}
+
+	show_patient_vital_charts(btn_id, scale_unit, title) {
+		let me = this;
+
+		frappe.call({
+			method: 'erpnext.healthcare.utils.get_patient_vitals',
+			args: {
+				patient: me.patient_id
+			},
+			callback: function(r) {
+				if (r.message) {
+					let show_chart_btns_html = `
+						<div style='padding-top:10px;'>
+							<a class='btn btn-default btn-xs btn-show-chart' data-show-chart-id='bp' data-pts='mmHg' data-title='Blood Pressure'>
+								${__('Blood Pressure')}
+							</a>
+							<a class='btn btn-default btn-xs btn-show-chart' data-show-chart-id='pulse_rate' data-pts='per Minutes' data-title='Respiratory/Pulse Rate'>
+								${__('Respiratory/Pulse Rate')}
+							</a>
+							<a class='btn btn-default btn-xs btn-show-chart' data-show-chart-id='temperature' data-pts='°C or °F' data-title='Temperature'>
+								${__('Temperature')}
+							</a>
+							<a class='btn btn-default btn-xs btn-show-chart' data-show-chart-id='bmi' data-pts='' data-title='BMI'>
+								${__('BMI')}
+							</a>
+						</div>`;
+
+					me.page.main.find('.show_chart_btns').html(show_chart_btns_html);
+					let data = r.message;
+					let labels = [], datasets = [];
+					let bp_systolic = [], bp_diastolic = [], temperature = [];
+					let pulse = [], respiratory_rate = [], bmi = [], height = [], weight = [];
+
+					for (let i=0; i<data.length; i++) {
+						labels.push(data[i].signs_date+' | '+data[i].signs_time);
+
+						if (btn_id === 'bp') {
+							bp_systolic.push(data[i].bp_systolic);
+							bp_diastolic.push(data[i].bp_diastolic);
+						}
+						if (btn_id === 'temperature') {
+							temperature.push(data[i].temperature);
+						}
+						if (btn_id === 'pulse_rate') {
+							pulse.push(data[i].pulse);
+							respiratory_rate.push(data[i].respiratory_rate);
+						}
+						if (btn_id === 'bmi') {
+							bmi.push(data[i].bmi);
+							height.push(data[i].height);
+							weight.push(data[i].weight);
+						}
+					}
+					if (btn_id === 'temperature') {
+						datasets.push({name: 'Temperature', values: temperature, chartType: 'line'});
+					}
+					if (btn_id === 'bmi') {
+						datasets.push({name: 'BMI', values: bmi, chartType: 'line'});
+						datasets.push({name: 'Height', values: height, chartType: 'line'});
+						datasets.push({name: 'Weight', values: weight, chartType: 'line'});
+					}
+					if (btn_id === 'bp') {
+						datasets.push({name: 'BP Systolic', values: bp_systolic, chartType: 'line'});
+						datasets.push({name: 'BP Diastolic', values: bp_diastolic, chartType: 'line'});
+					}
+					if (btn_id === 'pulse_rate') {
+						datasets.push({name: 'Heart Rate / Pulse', values: pulse, chartType: 'line'});
+						datasets.push({name: 'Respiratory Rate', values: respiratory_rate, chartType: 'line'});
+					}
+
+					new frappe.Chart('.patient_vital_charts', {
+						data: {
+							labels: labels,
+							datasets: datasets
+						},
+
+						title: title,
+						type: 'axis-mixed',
+						height: 200,
+						colors: ['purple', '#ffa3ef', 'light-blue'],
+
+						tooltipOptions: {
+							formatTooltipX: d => (d + '').toUpperCase(),
+							formatTooltipY: d => d + ' ' + scale_unit,
+						}
+					});
+					me.page.main.find('.header-separator').show();
+				} else {
+					me.page.main.find('.patient_vital_charts').html('');
+					me.page.main.find('.show_chart_btns').html('');
+					me.page.main.find('.header-separator').hide();
+				}
+			}
+		});
+	}
+}
\ No newline at end of file
diff --git a/erpnext/healthcare/page/patient_history/patient_history_sidebar.html b/erpnext/healthcare/page/patient_history/patient_history_sidebar.html
new file mode 100644
index 0000000..4560e7e
--- /dev/null
+++ b/erpnext/healthcare/page/patient_history/patient_history_sidebar.html
@@ -0,0 +1,21 @@
+<div class="patient-history-sidebar">
+    <div class="patient-image-container">
+		{% if patient_image %}
+			<div class="patient-image" src={{patient_image}} style="background-image: url(\'{%= patient_image %}\')"></div>
+		{% endif %}
+    </div>
+    <div class="patient-intro">
+		{% if patient_name %}
+		<p class="patient-name bold">{{patient_name}}</p>
+		{% endif %}
+		{% if patient_gender %}
+		<p class="patient-gender text-muted">{%=__("Gender: ") %} {{patient_gender}}</p>
+		{% endif %}
+		{% if patient_mobile %}
+		<p class="patient-mobile text-muted">{%=__("Contact: ") %} {{patient_mobile}}</p>
+		{% endif %}
+	</div>
+    <div class="patient-details">
+    </div>
+</div>
+
diff --git a/erpnext/healthcare/page/patient_progress/patient_progress.css b/erpnext/healthcare/page/patient_progress/patient_progress.css
index 5d85a74..737b2e0 100644
--- a/erpnext/healthcare/page/patient_progress/patient_progress.css
+++ b/erpnext/healthcare/page/patient_progress/patient_progress.css
@@ -29,6 +29,7 @@
 
 .patient-name {
   font-size: 20px;
+  margin-top: 25px;
 }
 
 /* heatmap */
@@ -55,6 +56,7 @@
 }
 
 .heatmap-container .chart-filter {
+  z-index: 1;
   position: relative;
   top: 5px;
   margin-right: 10px;
@@ -111,10 +113,13 @@
 }
 
 .chart-column-container {
-  border-bottom: 1px solid #d1d8dd;
   margin: 5px 0;
 }
 
+.progress-graphs .progress-container {
+  margin-bottom: var(--margin-xl);
+}
+
 .line-chart-container .frappe-chart {
   margin-top: -20px;
 }
@@ -146,6 +151,7 @@
   }
 
   .percentage-chart-container .chart-filter {
+    z-index: 1;
     position: relative;
     top: 12px;
     margin-right: 10px;
diff --git a/erpnext/healthcare/page/patient_progress/patient_progress.html b/erpnext/healthcare/page/patient_progress/patient_progress.html
index 30064bd..ee60065 100644
--- a/erpnext/healthcare/page/patient_progress/patient_progress.html
+++ b/erpnext/healthcare/page/patient_progress/patient_progress.html
@@ -1,14 +1,15 @@
 <div class="row patient-progress">
 	<div class="col-md-12">
 		<div class="progress-graphs">
-			<div class="chart-column-container heatmap-container hidden-xs hidden-sm">
+			<div class="progress-container chart-column-container heatmap-container hidden-xs hidden-sm frappe-card">
 				<div class="patient-heatmap"></div>
 			</div>
-			<div class="chart-column-container percentage-chart-container">
+
+			<div class="progress-container chart-column-container percentage-chart-container frappe-card">
 				<div class="therapy-session-percentage-chart"></div>
 			</div>
 
-			<div class="therapy-progress">
+			<div class="progress-container therapy-progress frappe-card">
 				<div class="chart-head">
 					<text class="title" text-anchor="start">Therapy Progress</text>
 					<div class="chart-control pull-right"></div>
@@ -22,7 +23,7 @@
 				</div>
 			</div>
 
-			<div class="assessment-results">
+			<div class="progress-container assessment-results frappe-card">
 				<div class="chart-head">
 					<text class="title" text-anchor="start">Assessment Results</text>
 					<div class="chart-control pull-right"></div>
@@ -36,7 +37,7 @@
 				</div>
 			</div>
 
-			<div class="therapy-assessment-correlation progress-line-chart">
+			<div class="progress-container therapy-assessment-correlation progress-line-chart frappe-card">
 				<div class="chart-head">
 					<text class="title" text-anchor="start">Therapy Type and Assessment Correlation</text>
 					<div class="chart-control pull-right"></div>
@@ -50,7 +51,7 @@
 				</div>
 			</div>
 
-			<div class="assessment-parameter-progress progress-line-chart">
+			<div class="progress-container assessment-parameter-progress progress-line-chart frappe-card">
 				<div class="chart-head">
 					<text class="title" text-anchor="start">Assessment Parameter Wise Progress</text>
 					<div class="chart-control pull-right"></div>
diff --git a/erpnext/healthcare/page/patient_progress/patient_progress.js b/erpnext/healthcare/page/patient_progress/patient_progress.js
index 4b7599d..3f06f1f 100644
--- a/erpnext/healthcare/page/patient_progress/patient_progress.js
+++ b/erpnext/healthcare/page/patient_progress/patient_progress.js
@@ -133,8 +133,11 @@
 			type: 'heatmap',
 			countLabel: 'Interactions',
 			data: {},
-			discreteDomains: 0
+			discreteDomains: 1,
+			radius: 3,
+			height: 150
 		});
+
 		this.update_heatmap_data();
 		this.create_heatmap_chart_filters();
 	}
@@ -164,33 +167,35 @@
 	}
 
 	render_percentage_chart(field, title) {
-		frappe.xcall(
-			'erpnext.healthcare.page.patient_progress.patient_progress.get_therapy_sessions_distribution_data', {
-				patient: this.patient_id,
-				field: field
-			}
-		).then(chart => {
-			if (chart.labels.length) {
-				this.percentage_chart = new frappe.Chart('.therapy-session-percentage-chart', {
-					title: title,
-					type: 'percentage',
-					data: {
-						labels: chart.labels,
-						datasets: chart.datasets
-					},
-					truncateLegends: 1,
-					barOptions: {
-						height: 11,
-						depth: 1
-					},
-					height: 160,
-					maxSlices: 8,
-					colors: ['#5e64ff', '#743ee2', '#ff5858', '#ffa00a', '#feef72', '#28a745', '#98d85b', '#a9a7ac'],
-				});
-			} else {
-				this.wrapper.find('.percentage-chart-container').hide();
-			}
-		});
+		// REDESIGN-TODO: chart seems to be broken. Enable this once fixed.
+		this.wrapper.find('.percentage-chart-container').hide();
+		// frappe.xcall(
+		// 	'erpnext.healthcare.page.patient_progress.patient_progress.get_therapy_sessions_distribution_data', {
+		// 		patient: this.patient_id,
+		// 		field: field
+		// 	}
+		// ).then(chart => {
+		// 	if (chart.labels.length) {
+		// 		this.percentage_chart = new frappe.Chart('.therapy-session-percentage-chart', {
+		// 			title: title,
+		// 			type: 'percentage',
+		// 			data: {
+		// 				labels: chart.labels,
+		// 				datasets: chart.datasets
+		// 			},
+		// 			truncateLegends: 1,
+		// 			barOptions: {
+		// 				height: 11,
+		// 				depth: 1
+		// 			},
+		// 			height: 160,
+		// 			maxSlices: 8,
+		// 			colors: ['#5e64ff', '#743ee2', '#ff5858', '#ffa00a', '#feef72', '#28a745', '#98d85b', '#a9a7ac'],
+		// 		});
+		// 	} else {
+		// 		this.wrapper.find('.percentage-chart-container').hide();
+		// 	}
+		// });
 	}
 
 	create_percentage_chart_filters() {
@@ -311,7 +316,7 @@
 						},
 						axisOptions: {
 							xIsSeries: 1
-						},
+						}
 					});
 				} else {
 					$(parent).find('.chart-container').show();
@@ -377,7 +382,7 @@
 							xIsSeries: 1
 						},
 						tooltipOptions: {
-							formatTooltipY: d => d + __(' out of ') + chart.max_score
+							formatTooltipY: d => __('{0} out of {1}', [d, chart.max_score])
 						}
 					});
 				} else {
diff --git a/erpnext/healthcare/report/lab_test_report/lab_test_report.py b/erpnext/healthcare/report/lab_test_report/lab_test_report.py
index 2e59bed..ba4ca41 100644
--- a/erpnext/healthcare/report/lab_test_report/lab_test_report.py
+++ b/erpnext/healthcare/report/lab_test_report/lab_test_report.py
@@ -169,7 +169,7 @@
 			'labels': labels,
 			'datasets': datasets
 		},
-		'type': 'donut',
+		'type': 'bar',
 		'height': 300,
 	}
 
diff --git a/erpnext/healthcare/utils.py b/erpnext/healthcare/utils.py
index ffecf4d..7c80bdb 100644
--- a/erpnext/healthcare/utils.py
+++ b/erpnext/healthcare/utils.py
@@ -8,8 +8,7 @@
 import json
 from frappe import _
 from frappe.utils.formatters import format_value
-from frappe.utils import time_diff_in_hours, rounded
-from six import string_types
+from frappe.utils import time_diff_in_hours, rounded, cstr
 from erpnext.healthcare.doctype.healthcare_settings.healthcare_settings import get_income_account
 from erpnext.healthcare.doctype.fee_validity.fee_validity import create_fee_validity
 from erpnext.healthcare.doctype.lab_test.lab_test import create_multiple
@@ -181,9 +180,9 @@
 
 			service_item = frappe.db.get_single_value('Healthcare Settings', 'clinical_procedure_consumable_item')
 			if not service_item:
-				msg = _('Please Configure Clinical Procedure Consumable Item in ')
-				msg += '''<b><a href='/app/Form/Healthcare Settings'>Healthcare Settings</a></b>'''
-				frappe.throw(msg, title=_('Missing Configuration'))
+				frappe.throw(_('Please configure Clinical Procedure Consumable Item in {0}').format(
+					frappe.utils.get_link_to_form('Healthcare Settings', 'Healthcare Settings')),
+					title=_('Missing Configuration'))
 
 			clinical_procedures_to_invoice.append({
 				'reference_type': 'Clinical Procedure',
@@ -312,7 +311,7 @@
 
 @frappe.whitelist()
 def get_service_item_and_practitioner_charge(doc):
-	if isinstance(doc, string_types):
+	if isinstance(doc, str):
 		doc = json.loads(doc)
 		doc = frappe.get_doc(doc)
 
@@ -607,101 +606,147 @@
 
 @frappe.whitelist()
 def render_doc_as_html(doctype, docname, exclude_fields = []):
-	#render document as html, three column layout will break
+	"""
+		Render document as HTML
+	"""
+
 	doc = frappe.get_doc(doctype, docname)
 	meta = frappe.get_meta(doctype)
-	doc_html = "<div class='col-md-12 col-sm-12'>"
-	section_html = ''
-	section_label = ''
-	html = ''
-	sec_on = False
+	doc_html = section_html = section_label = html = ""
+	sec_on = has_data = False
 	col_on = 0
-	has_data = False
+
 	for df in meta.fields:
-		#on section break append append previous section and html to doc html
+		# on section break append previous section and html to doc html
 		if df.fieldtype == "Section Break":
 			if has_data and col_on and sec_on:
 				doc_html += section_html + html + "</div>"
+
 			elif has_data and not col_on and sec_on:
-				doc_html += "<div class='col-md-12 col-sm-12'\
-				><div class='col-md-12 col-sm-12'>" \
-				+ section_html + html +"</div></div>"
+				doc_html += """
+					<br>
+					<div class='row'>
+						<div class='col-md-12 col-sm-12'>
+							<b>{0}</b>
+						</div>
+					</div>
+					<div class='row'>
+						<div class='col-md-12 col-sm-12'>
+							{1} {2}
+						</div>
+					</div>
+				""".format(section_label, section_html, html)
+
+			# close divs for columns
 			while col_on:
 				doc_html += "</div>"
 				col_on -= 1
+
 			sec_on = True
-			has_data= False
+			has_data = False
 			col_on = 0
-			section_html = ''
-			html = ''
+			section_html = html = ""
+
 			if df.label:
 				section_label = df.label
 			continue
-		#on column break append html to section html or doc html
+
+		# on column break append html to section html or doc html
 		if df.fieldtype == "Column Break":
-			if sec_on and has_data:
-				section_html += "<div class='col-md-12 col-sm-12'\
-				><div class='col-md-6 col\
-				-sm-6'><b>" + section_label + "</b>" + html + "</div><div \
-				class='col-md-6 col-sm-6'>"
-			elif has_data:
-				doc_html += "<div class='col-md-12 col-sm-12'><div class='col-m\
-				d-6 col-sm-6'>" + html + "</div><div class='col-md-6 col-sm-6'>"
-			elif sec_on and not col_on:
-				section_html += "<div class='col-md-6 col-sm-6'>"
-			html = ''
+			if sec_on and not col_on and has_data:
+				section_html += """
+					<br>
+					<div class='row'>
+						<div class='col-md-12 col-sm-12'>
+							<b>{0}</b>
+						</div>
+					</div>
+					<div class='row'>
+						<div class='col-md-4 col-sm-4'>
+							{1}
+						</div>
+				""".format(section_label, html)
+			elif col_on == 1 and has_data:
+				section_html += "<div class='col-md-4 col-sm-4'>" + html + "</div>"
+			elif col_on > 1 and has_data:
+				doc_html += "<div class='col-md-4 col-sm-4'>" + html + "</div>"
+			else:
+				doc_html += """
+					<div class='row'>
+						<div class='col-md-12 col-sm-12'>
+							{0}
+						</div>
+					</div>
+				""".format(html)
+
+			html = ""
 			col_on += 1
+
 			if df.label:
-				html += '<br>' + df.label
+				html += "<br>" + df.label
 			continue
-		#on table iterate in items and create table based on in_list_view, append to section html or doc html
-		if df.fieldtype == 'Table':
+
+		# on table iterate through items and create table
+		# based on the in_list_view property
+		# append to section html or doc html
+		if df.fieldtype == "Table":
 			items = doc.get(df.fieldname)
-			if not items: continue
+			if not items:
+				continue
 			child_meta = frappe.get_meta(df.options)
-			if not has_data : has_data = True
-			table_head = ''
-			table_row = ''
+
+			if not has_data:
+				has_data = True
+			table_head = table_row = ""
 			create_head = True
+
 			for item in items:
-				table_row += '<tr>'
+				table_row += "<tr>"
 				for cdf in child_meta.fields:
 					if cdf.in_list_view:
 						if create_head:
-							table_head += '<th>' + cdf.label + '</th>'
+							table_head += "<th class='text-muted'>" + cdf.label + "</th>"
 						if item.get(cdf.fieldname):
-							table_row += '<td>' + str(item.get(cdf.fieldname)) \
-							+ '</td>'
+							table_row += "<td>" + cstr(item.get(cdf.fieldname)) + "</td>"
 						else:
-							table_row += '<td></td>'
+							table_row += "<td></td>"
+
 				create_head = False
-				table_row += '</tr>'
+				table_row += "</tr>"
+
 			if sec_on:
-				section_html += "<table class='table table-condensed \
-				bordered'>" + table_head +  table_row + '</table>'
+				section_html += """
+					<table class='table table-condensed bordered'>
+						{0} {1}
+					</table>
+				""".format(table_head, table_row)
 			else:
-				html += "<table class='table table-condensed table-bordered'>" \
-				+ table_head +  table_row + "</table>"
+				html += """
+					<table class='table table-condensed table-bordered'>
+						{0} {1}
+					</table>
+				""".format(table_head, table_row)
 			continue
 
-		#on other field types add label and value to html
+		# on any other field type add label and value to html
 		if not df.hidden and not df.print_hide and doc.get(df.fieldname) and df.fieldname not in exclude_fields:
-			if doc.get(df.fieldname):
-				formatted_value = format_value(doc.get(df.fieldname), meta.get_field(df.fieldname), doc)
-				html +=  '<br>{0} : {1}'.format(df.label or df.fieldname, formatted_value)
+			formatted_value = format_value(doc.get(df.fieldname), meta.get_field(df.fieldname), doc)
+			html += "<br>{0} : {1}".format(df.label or df.fieldname, formatted_value)
 
 			if not has_data : has_data = True
 
 	if sec_on and col_on and has_data:
-		doc_html += section_html + html + '</div></div>'
+		doc_html += section_html + html + "</div></div>"
 	elif sec_on and not col_on and has_data:
-		doc_html += "<div class='col-md-12 col-sm-12'\
-		><div class='col-md-12 col-sm-12'>" \
-		+ section_html + html +'</div></div>'
-	if doc_html:
-		doc_html = "<div class='small'><div class='col-md-12 text-right'><a class='btn btn-default btn-xs' href='/app/Form/%s/%s'></a></div>" %(doctype, docname) + doc_html + '</div>'
+		doc_html += """
+			<div class='col-md-12 col-sm-12'>
+				<div class='col-md-12 col-sm-12'>
+					{0} {1}
+				</div>
+			</div>
+		""".format(section_html, html)
 
-	return {'html': doc_html}
+	return {"html": doc_html}
 
 
 def update_address_links(address, method):
diff --git a/erpnext/healthcare/workspace/healthcare/healthcare.json b/erpnext/healthcare/workspace/healthcare/healthcare.json
index 55132f3..f69604c 100644
--- a/erpnext/healthcare/workspace/healthcare/healthcare.json
+++ b/erpnext/healthcare/workspace/healthcare/healthcare.json
@@ -7,7 +7,7 @@
   }
  ],
  "charts_label": "",
- "content": "[{\"type\": \"onboarding\", \"data\": {\"onboarding_name\":\"Healthcare\", \"col\": 12}}, {\"type\": \"chart\", \"data\": {\"chart_name\": \"Patient Appointments\", \"col\": 12}}, {\"type\": \"spacer\", \"data\": {\"col\": 12}}, {\"type\": \"header\", \"data\": {\"text\": \"Your Shortcuts\", \"level\": 4, \"col\": 12}}, {\"type\": \"shortcut\", \"data\": {\"shortcut_name\": \"Patient Appointment\", \"col\": 4}}, {\"type\": \"shortcut\", \"data\": {\"shortcut_name\": \"Patient\", \"col\": 4}}, {\"type\": \"shortcut\", \"data\": {\"shortcut_name\": \"Healthcare Service Unit\", \"col\": 4}}, {\"type\": \"shortcut\", \"data\": {\"shortcut_name\": \"Healthcare Practitioner\", \"col\": 4}}, {\"type\": \"shortcut\", \"data\": {\"shortcut_name\": \"Patient History\", \"col\": 4}}, {\"type\": \"shortcut\", \"data\": {\"shortcut_name\": \"Dashboard\", \"col\": 4}}, {\"type\": \"spacer\", \"data\": {\"col\": 12}}, {\"type\": \"header\", \"data\": {\"text\": \"Reports & Masters\", \"level\": 4, \"col\": 12}}, {\"type\": \"card\", \"data\": {\"card_name\": \"Masters\", \"col\": 4}}, {\"type\": \"card\", \"data\": {\"card_name\": \"Consultation Setup\", \"col\": 4}}, {\"type\": \"card\", \"data\": {\"card_name\": \"Consultation\", \"col\": 4}}, {\"type\": \"card\", \"data\": {\"card_name\": \"Settings\", \"col\": 4}}, {\"type\": \"card\", \"data\": {\"card_name\": \"Laboratory Setup\", \"col\": 4}}, {\"type\": \"card\", \"data\": {\"card_name\": \"Laboratory\", \"col\": 4}}, {\"type\": \"card\", \"data\": {\"card_name\": \"Rehabilitation and Physiotherapy\", \"col\": 4}}, {\"type\": \"card\", \"data\": {\"card_name\": \"Records and History\", \"col\": 4}}, {\"type\": \"card\", \"data\": {\"card_name\": \"Reports\", \"col\": 4}}]",
+ "content": "[{\"type\": \"onboarding\", \"data\": {\"onboarding_name\":\"Healthcare\", \"col\": 12}}, {\"type\": \"chart\", \"data\": {\"chart_name\": \"Patient Appointments\", \"col\": 12}}, {\"type\": \"spacer\", \"data\": {\"col\": 12}}, {\"type\": \"header\", \"data\": {\"text\": \"Your Shortcuts\", \"level\": 4, \"col\": 12}}, {\"type\": \"shortcut\", \"data\": {\"shortcut_name\": \"Patient Appointment\", \"col\": 4}}, {\"type\": \"shortcut\", \"data\": {\"shortcut_name\": \"Patient\", \"col\": 4}}, {\"type\": \"shortcut\", \"data\": {\"shortcut_name\": \"Healthcare Service Unit\", \"col\": 4}}, {\"type\": \"shortcut\", \"data\": {\"shortcut_name\": \"Healthcare Practitioner\", \"col\": 4}}, {\"type\": \"shortcut\", \"data\": {\"shortcut_name\": \"Patient History\", \"col\": 4}}, {\"type\": \"shortcut\", \"data\": {\"shortcut_name\": \"Dashboard\", \"col\": 4}}, {\"type\": \"spacer\", \"data\": {\"col\": 12}}, {\"type\": \"header\", \"data\": {\"text\": \"Reports & Masters\", \"level\": 4, \"col\": 12}}, {\"type\": \"card\", \"data\": {\"card_name\": \"Masters\", \"col\": 4}}, {\"type\": \"card\", \"data\": {\"card_name\": \"Consultation Setup\", \"col\": 4}}, {\"type\": \"card\", \"data\": {\"card_name\": \"Consultation\", \"col\": 4}}, {\"type\": \"card\", \"data\": {\"card_name\": \"Facility Management\", \"col\": 4}}, {\"type\": \"card\", \"data\": {\"card_name\": \"Settings\", \"col\": 4}}, {\"type\": \"card\", \"data\": {\"card_name\": \"Inpatient\", \"col\": 4}}, {\"type\": \"card\", \"data\": {\"card_name\": \"Laboratory Setup\", \"col\": 4}}, {\"type\": \"card\", \"data\": {\"card_name\": \"Laboratory\", \"col\": 4}}, {\"type\": \"card\", \"data\": {\"card_name\": \"Rehabilitation and Physiotherapy\", \"col\": 4}}, {\"type\": \"card\", \"data\": {\"card_name\": \"Records and History\", \"col\": 4}}, {\"type\": \"card\", \"data\": {\"card_name\": \"Reports\", \"col\": 4}}]",
  "creation": "2020-03-02 17:23:17.919682",
  "developer_mode_only": 0,
  "disable_user_customization": 0,
@@ -76,54 +76,9 @@
    "type": "Link"
   },
   {
-   "dependencies": "",
-   "hidden": 0,
-   "is_query_report": 0,
-   "label": "Healthcare Service Unit Type",
-   "link_count": 0,
-   "link_to": "Healthcare Service Unit Type",
-   "link_type": "DocType",
-   "onboard": 0,
-   "type": "Link"
-  },
-  {
-   "dependencies": "",
-   "hidden": 0,
-   "is_query_report": 0,
-   "label": "Healthcare Service Unit",
-   "link_count": 0,
-   "link_to": "Healthcare Service Unit",
-   "link_type": "DocType",
-   "onboard": 0,
-   "type": "Link"
-  },
-  {
-   "dependencies": "",
-   "hidden": 0,
-   "is_query_report": 0,
-   "label": "Medical Code Standard",
-   "link_count": 0,
-   "link_to": "Medical Code Standard",
-   "link_type": "DocType",
-   "onboard": 0,
-   "type": "Link"
-  },
-  {
-   "dependencies": "",
-   "hidden": 0,
-   "is_query_report": 0,
-   "label": "Medical Code",
-   "link_count": 0,
-   "link_to": "Medical Code",
-   "link_type": "DocType",
-   "onboard": 0,
-   "type": "Link"
-  },
-  {
    "hidden": 0,
    "is_query_report": 0,
    "label": "Consultation Setup",
-   "link_count": 0,
    "onboard": 0,
    "type": "Card Break"
   },
@@ -132,7 +87,6 @@
    "hidden": 0,
    "is_query_report": 0,
    "label": "Appointment Type",
-   "link_count": 0,
    "link_to": "Appointment Type",
    "link_type": "DocType",
    "onboard": 0,
@@ -143,7 +97,6 @@
    "hidden": 0,
    "is_query_report": 0,
    "label": "Clinical Procedure Template",
-   "link_count": 0,
    "link_to": "Clinical Procedure Template",
    "link_type": "DocType",
    "onboard": 0,
@@ -154,7 +107,6 @@
    "hidden": 0,
    "is_query_report": 0,
    "label": "Prescription Dosage",
-   "link_count": 0,
    "link_to": "Prescription Dosage",
    "link_type": "DocType",
    "onboard": 0,
@@ -165,7 +117,6 @@
    "hidden": 0,
    "is_query_report": 0,
    "label": "Prescription Duration",
-   "link_count": 0,
    "link_to": "Prescription Duration",
    "link_type": "DocType",
    "onboard": 0,
@@ -176,70 +127,16 @@
    "hidden": 0,
    "is_query_report": 0,
    "label": "Antibiotic",
-   "link_count": 0,
    "link_to": "Antibiotic",
    "link_type": "DocType",
    "onboard": 0,
    "type": "Link"
   },
   {
-   "hidden": 0,
-   "is_query_report": 0,
-   "label": "Consultation",
-   "link_count": 0,
-   "onboard": 0,
-   "type": "Card Break"
-  },
-  {
-   "dependencies": "",
-   "hidden": 0,
-   "is_query_report": 0,
-   "label": "Patient Appointment",
-   "link_count": 0,
-   "link_to": "Patient Appointment",
-   "link_type": "DocType",
-   "onboard": 0,
-   "type": "Link"
-  },
-  {
-   "dependencies": "",
-   "hidden": 0,
-   "is_query_report": 0,
-   "label": "Clinical Procedure",
-   "link_count": 0,
-   "link_to": "Clinical Procedure",
-   "link_type": "DocType",
-   "onboard": 0,
-   "type": "Link"
-  },
-  {
-   "dependencies": "",
-   "hidden": 0,
-   "is_query_report": 0,
-   "label": "Patient Encounter",
-   "link_count": 0,
-   "link_to": "Patient Encounter",
-   "link_type": "DocType",
-   "onboard": 0,
-   "type": "Link"
-  },
-  {
-   "dependencies": "",
-   "hidden": 0,
-   "is_query_report": 0,
-   "label": "Vital Signs",
-   "link_count": 0,
-   "link_to": "Vital Signs",
-   "link_type": "DocType",
-   "onboard": 0,
-   "type": "Link"
-  },
-  {
    "dependencies": "",
    "hidden": 0,
    "is_query_report": 0,
    "label": "Complaint",
-   "link_count": 0,
    "link_to": "Complaint",
    "link_type": "DocType",
    "onboard": 0,
@@ -250,18 +147,63 @@
    "hidden": 0,
    "is_query_report": 0,
    "label": "Diagnosis",
-   "link_count": 0,
    "link_to": "Diagnosis",
    "link_type": "DocType",
    "onboard": 0,
    "type": "Link"
   },
   {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Consultation",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Patient Appointment",
+   "link_to": "Patient Appointment",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Clinical Procedure",
+   "link_to": "Clinical Procedure",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Patient Encounter",
+   "link_to": "Patient Encounter",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Vital Signs",
+   "link_to": "Vital Signs",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
    "dependencies": "",
    "hidden": 0,
    "is_query_report": 0,
    "label": "Fee Validity",
-   "link_count": 0,
    "link_to": "Fee Validity",
    "link_type": "DocType",
    "onboard": 0,
@@ -270,6 +212,62 @@
   {
    "hidden": 0,
    "is_query_report": 0,
+   "label": "Facility Management",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Healthcare Service Unit Type",
+   "link_to": "Healthcare Service Unit Type",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Healthcare Service Unit",
+   "link_to": "Healthcare Service Unit",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Medical Coding",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Medical Code Standard",
+   "link_to": "Medical Code Standard",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Medical Code",
+   "link_to": "Medical Code",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
    "label": "Settings",
    "link_count": 0,
    "onboard": 0,
@@ -339,6 +337,16 @@
    "type": "Link"
   },
   {
+   "dependencies": "",
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Dosage Form",
+   "link_to": "Dosage Form",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
    "hidden": 0,
    "is_query_report": 0,
    "label": "Laboratory",
@@ -369,12 +377,36 @@
    "type": "Link"
   },
   {
-   "dependencies": "",
    "hidden": 0,
    "is_query_report": 0,
-   "label": "Dosage Form",
-   "link_count": 0,
-   "link_to": "Dosage Form",
+   "label": "Inpatient",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Card Break"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Inpatient Medication Order",
+   "link_to": "Inpatient Medication Order",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Inpatient Record",
+   "link_to": "Inpatient Record",
+   "link_type": "DocType",
+   "onboard": 0,
+   "type": "Link"
+  },
+  {
+   "hidden": 0,
+   "is_query_report": 0,
+   "label": "Inpatient Medication Entry",
+   "link_to": "Inpatient Medication Entry",
    "link_type": "DocType",
    "onboard": 0,
    "type": "Link"
@@ -536,7 +568,7 @@
    "type": "Link"
   }
  ],
- "modified": "2021-08-05 12:15:59.434612",
+ "modified": "2021-08-30 17:37:45.316999",
  "modified_by": "Administrator",
  "module": "Healthcare",
  "name": "Healthcare",
