feat: hooks for updating and deleting medical records
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 20b062e..367c34f 100644
--- a/erpnext/healthcare/doctype/patient_history_settings/patient_history_settings.py
+++ b/erpnext/healthcare/doctype/patient_history_settings/patient_history_settings.py
@@ -26,11 +26,11 @@
 
 
 def create_medical_record(doc, method=None):
-	if frappe.flags.in_patch or frappe.flags.in_install or frappe.flags.in_setup_wizard or \
-		frappe.db.get_value('Doctype', doc.doctype, 'module') != 'Healthcare':
+	medical_record_required = validate_medical_record_required(doc)
+	if not medical_record_required:
 		return
 
-	if doc.doctype not in get_patient_history_doctypes():
+	if frappe.db.exists('Patient Medical Record', { 'reference_name': doc.name }):
 		return
 
 	subject = set_subject_field(doc)
@@ -46,6 +46,30 @@
 	medical_record.save(ignore_permissions=True)
 
 
+def update_medical_record(doc, method=None):
+	medical_record_required = validate_medical_record_required(doc)
+	if not medical_record_required:
+		return
+
+	medical_record_id = frappe.db.exists('Patient Medical Record', { 'reference_name': doc.name })
+
+	if medical_record_id:
+		subject = set_subject_field(doc)
+		frappe.db.set_value('Patient Medical Record', medical_record_id[0][0], 'subject', subject)
+	else:
+		create_medical_record(doc)
+
+
+def delete_medical_record(doc, method=None):
+	medical_record_required = validate_medical_record_required(doc)
+	if not medical_record_required:
+		return
+
+	record = frappe.db.exists('Patient Medical Record', { 'reference_name': doc.name })
+	if record:
+		frappe.delete_doc('Patient Medical Record', record, force=1)
+
+
 def set_subject_field(doc):
 	from frappe.utils.formatters import format_value
 
@@ -114,3 +138,14 @@
 		return 'Patient History Custom Document Type'
 	else:
 		return 'Patient History Standard Document Type'
+
+
+def validate_medical_record_required(doc):
+	if frappe.flags.in_patch or frappe.flags.in_install or frappe.flags.in_setup_wizard or \
+		frappe.db.get_value('Doctype', doc.doctype, 'module') != 'Healthcare':
+		return False
+
+	if doc.doctype not in get_patient_history_doctypes():
+		return False
+
+	return True
\ No newline at end of file
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index aa5291a..51c169f 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -223,7 +223,7 @@
 doc_events = {
 	"*": {
 		"on_submit": "erpnext.healthcare.doctype.patient_history_settings.patient_history_settings.create_medical_record",
-		"on_cancel": "erpnext.healthcare.doctype.patient_history_settings.patient_history_settings.update_medical_record",
+		"on_update": "erpnext.healthcare.doctype.patient_history_settings.patient_history_settings.update_medical_record",
 		"on_cancel": "erpnext.healthcare.doctype.patient_history_settings.patient_history_settings.delete_medical_record"
 	},
 	"Stock Entry": {