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": {