feat: Only allow submittable doctypes for Patient Medical Record
diff --git a/erpnext/healthcare/doctype/patient_history_settings/patient_history_settings.js b/erpnext/healthcare/doctype/patient_history_settings/patient_history_settings.js
index bf3c5b9..92922b2 100644
--- a/erpnext/healthcare/doctype/patient_history_settings/patient_history_settings.js
+++ b/erpnext/healthcare/doctype/patient_history_settings/patient_history_settings.js
@@ -7,7 +7,8 @@
 			return {
 				filters: {
 					custom: 1,
-					module: 'Healthcare'
+					is_submittable: 1,
+					module: 'Healthcare',
 				}
 			};
 		});
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 7c7b6c8..9ef9721 100644
--- a/erpnext/healthcare/doctype/patient_history_settings/patient_history_settings.py
+++ b/erpnext/healthcare/doctype/patient_history_settings/patient_history_settings.py
@@ -6,14 +6,23 @@
 import frappe
 import json
 from frappe import _
-from frappe.utils import cstr
+from frappe.utils import cstr, cint
 from frappe.model.document import Document
 from erpnext.healthcare.page.patient_history.patient_history import get_patient_history_doctypes
 
 class PatientHistorySettings(Document):
 	def validate(self):
+		self.validate_submittable_doctypes()
 		self.validate_date_fieldnames()
 
+	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(
+					entry.idx, frappe.bold(entry.document_type))
+				msg += _('Patient Medical Record can only be created for submittable document types.')
+				frappe.throw(msg)
+
 	def validate_date_fieldnames(self):
 		for entry in self.custom_doctypes:
 			field = frappe.get_meta(entry.document_type).get_field(entry.date_fieldname)
@@ -155,10 +164,17 @@
 
 def validate_medical_record_required(doc):
 	if frappe.flags.in_patch or frappe.flags.in_install or frappe.flags.in_setup_wizard \
-		or doc.meta.module != 'Healthcare':
+		or get_module(doc) != 'Healthcare':
 		return False
 
 	if doc.doctype not in get_patient_history_doctypes():
 		return False
 
-	return True
\ No newline at end of file
+	return True
+
+def get_module(doc):
+	module = doc.meta.module
+	if not module:
+		module = frappe.db.get_value('DocType', doc.doctype, 'module')
+
+	return module
\ No newline at end of file
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 3190d84..c93b788 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
@@ -12,7 +12,7 @@
 class TestPatientHistorySettings(unittest.TestCase):
 	def setUp(self):
 		dt = create_custom_doctype()
-		settings = frappe.get_single('Patient History Settings')
+		settings = frappe.get_single("Patient History Settings")
 		settings.append("custom_doctypes", {
 			"document_type": dt.name,
 			"date_fieldname": "date",
@@ -40,12 +40,12 @@
 		doc = create_doc(patient)
 
 		# check for medical record
-		medical_rec = frappe.db.exists('Patient Medical Record', {'status': 'Open', 'reference_name': doc.name})
+		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)
+		medical_rec = frappe.get_doc("Patient Medical Record", medical_rec)
 		expected_subject = "<b>Date: </b>{0}<br><b>Rating: </b>3<br><b>Feedback: </b>Test Patient History Settings<br>".format(
-			getdate().strftime("%d-%m-%Y"))
+			frappe.utils.format_date(getdate()))
 		self.assertEqual(medical_rec.subject, expected_subject)
 		self.assertEqual(medical_rec.patient, patient)
 		self.assertEqual(medical_rec.communication_date, getdate())