diff --git a/changemakers/frappe_changemakers/doctype/care_centre/__init__.py b/changemakers/frappe_changemakers/doctype/care_centre/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/changemakers/frappe_changemakers/doctype/care_centre/care_centre.js b/changemakers/frappe_changemakers/doctype/care_centre/care_centre.js
new file mode 100644
index 0000000..1250093
--- /dev/null
+++ b/changemakers/frappe_changemakers/doctype/care_centre/care_centre.js
@@ -0,0 +1,8 @@
+// Copyright (c) 2023, hussain@frappe.io and contributors
+// For license information, please see license.txt
+
+// frappe.ui.form.on("Care Centre", {
+// refresh(frm) {
+
+// },
+// });
diff --git a/changemakers/frappe_changemakers/doctype/care_centre/care_centre.json b/changemakers/frappe_changemakers/doctype/care_centre/care_centre.json
new file mode 100644
index 0000000..2db9db1
--- /dev/null
+++ b/changemakers/frappe_changemakers/doctype/care_centre/care_centre.json
@@ -0,0 +1,172 @@
+{
+ "actions": [],
+ "allow_rename": 1,
+ "autoname": "field:facility_name",
+ "creation": "2023-10-25 10:50:17.900084",
+ "default_view": "List",
+ "doctype": "DocType",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "field_order": [
+ "facility_name",
+ "capacity",
+ "location",
+ "column_break_zkks",
+ "organisation",
+ "vacant_beds"
+ ],
+ "fields": [
+ {
+ "fieldname": "facility_name",
+ "fieldtype": "Data",
+ "in_list_view": 1,
+ "label": "Facility Name",
+ "reqd": 1,
+ "unique": 1
+ },
+ {
+ "fieldname": "capacity",
+ "fieldtype": "Int",
+ "in_list_view": 1,
+ "label": "Capacity",
+ "non_negative": 1,
+ "reqd": 1
+ },
+ {
+ "fieldname": "location",
+ "fieldtype": "Small Text",
+ "label": "Location"
+ },
+ {
+ "fieldname": "organisation",
+ "fieldtype": "Link",
+ "label": "Organisation",
+ "options": "Organisation"
+ },
+ {
+ "fieldname": "vacant_beds",
+ "fieldtype": "Data",
+ "is_virtual": 1,
+ "label": "Vacant Beds"
+ },
+ {
+ "fieldname": "column_break_zkks",
+ "fieldtype": "Column Break"
+ }
+ ],
+ "index_web_pages_for_search": 1,
+ "links": [
+ {
+ "link_doctype": "Care Centre Admission",
+ "link_fieldname": "facility_name"
+ }
+ ],
+ "modified": "2023-10-27 17:41:48.472208",
+ "modified_by": "Administrator",
+ "module": "Frappe Changemakers",
+ "name": "Care Centre",
+ "naming_rule": "By fieldname",
+ "owner": "Administrator",
+ "permissions": [
+ {
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "System Manager",
+ "share": 1,
+ "write": 1
+ },
+ {
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "Admin (Partner)",
+ "share": 1,
+ "write": 1
+ },
+ {
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "Partner SMT",
+ "share": 1,
+ "write": 1
+ },
+ {
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "Social Worker",
+ "share": 1,
+ "write": 1
+ },
+ {
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "Program Manager",
+ "share": 1,
+ "write": 1
+ },
+ {
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "Healthcare Team Member",
+ "share": 1,
+ "write": 1
+ },
+ {
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "SMT(NGO)-Field Co-ordinator",
+ "share": 1,
+ "write": 1
+ },
+ {
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "Medical Co-ordinator",
+ "share": 1,
+ "write": 1
+ }
+ ],
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "states": [],
+ "track_changes": 1
+}
\ No newline at end of file
diff --git a/changemakers/frappe_changemakers/doctype/care_centre/care_centre.py b/changemakers/frappe_changemakers/doctype/care_centre/care_centre.py
new file mode 100644
index 0000000..7c85be0
--- /dev/null
+++ b/changemakers/frappe_changemakers/doctype/care_centre/care_centre.py
@@ -0,0 +1,25 @@
+# Copyright (c) 2023, hussain@frappe.io and contributors
+# For license information, please see license.txt
+
+import frappe
+from frappe.model.document import Document
+
+
+class CareCentre(Document):
+ @property
+ def vacant_beds(self):
+ """
+ Calculating vacant beds in a care centre facility.
+ :return: int or str if count is 0
+ """
+ filters = {
+ "facility_name": self.facility_name,
+ "status": ("in", ("Admitted", "Hospitalised")),
+ "docstatus": 0,
+ }
+ occupants = frappe.get_all(
+ "Care Centre Admission", filters=filters, fields=["name"], pluck="name"
+ )
+
+ vacant_beds = self.capacity - len(occupants)
+ return vacant_beds if vacant_beds > 0 else str(0)
diff --git a/changemakers/frappe_changemakers/doctype/care_centre/test_care_centre.py b/changemakers/frappe_changemakers/doctype/care_centre/test_care_centre.py
new file mode 100644
index 0000000..17ad5e5
--- /dev/null
+++ b/changemakers/frappe_changemakers/doctype/care_centre/test_care_centre.py
@@ -0,0 +1,9 @@
+# Copyright (c) 2023, hussain@frappe.io and Contributors
+# See license.txt
+
+# import frappe
+from frappe.tests.utils import FrappeTestCase
+
+
+class TestCareCentre(FrappeTestCase):
+ pass
diff --git a/changemakers/frappe_changemakers/doctype/care_centre_admission/__init__.py b/changemakers/frappe_changemakers/doctype/care_centre_admission/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/changemakers/frappe_changemakers/doctype/care_centre_admission/care_centre_admission.js b/changemakers/frappe_changemakers/doctype/care_centre_admission/care_centre_admission.js
new file mode 100644
index 0000000..1f85eee
--- /dev/null
+++ b/changemakers/frappe_changemakers/doctype/care_centre_admission/care_centre_admission.js
@@ -0,0 +1,8 @@
+// Copyright (c) 2023, hussain@frappe.io and contributors
+// For license information, please see license.txt
+
+// frappe.ui.form.on("Care Centre Admission", {
+// refresh(frm) {
+
+// },
+// });
diff --git a/changemakers/frappe_changemakers/doctype/care_centre_admission/care_centre_admission.json b/changemakers/frappe_changemakers/doctype/care_centre_admission/care_centre_admission.json
new file mode 100644
index 0000000..7ecd717
--- /dev/null
+++ b/changemakers/frappe_changemakers/doctype/care_centre_admission/care_centre_admission.json
@@ -0,0 +1,308 @@
+{
+ "actions": [],
+ "allow_rename": 1,
+ "autoname": "naming_series:",
+ "creation": "2023-10-25 11:06:54.099690",
+ "default_view": "List",
+ "doctype": "DocType",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "field_order": [
+ "column_break_vnwn",
+ "column_break_xedh",
+ "amended_from",
+ "section_break_oktc",
+ "facility_name",
+ "column_break_qkbc",
+ "naming_series",
+ "column_break_aala",
+ "status",
+ "section_break_getk",
+ "beneficiary",
+ "admission_date",
+ "column_break_xcyq",
+ "doctor_name",
+ "discharge_date",
+ "column_break_msuj",
+ "file_number",
+ "exit_pathway",
+ "section_break_tgsq",
+ "column_break_mjah",
+ "est_duration_days",
+ "actual_duration_days",
+ "column_break_sqpn",
+ "column_break_gsff",
+ "admission_type",
+ "referred_by",
+ "section_break_pumi",
+ "medical_conditions",
+ "doctors_assessment",
+ "section_break_cjtk",
+ "work_performed"
+ ],
+ "fields": [
+ {
+ "fieldname": "facility_name",
+ "fieldtype": "Link",
+ "in_list_view": 1,
+ "label": "Facility Name",
+ "options": "Care Centre",
+ "reqd": 1,
+ "search_index": 1
+ },
+ {
+ "fieldname": "doctor_name",
+ "fieldtype": "Data",
+ "label": "Doctor's Name"
+ },
+ {
+ "fieldname": "beneficiary",
+ "fieldtype": "Link",
+ "in_list_view": 1,
+ "label": "Beneficiary",
+ "options": "Beneficiary",
+ "reqd": 1
+ },
+ {
+ "fieldname": "file_number",
+ "fieldtype": "Data",
+ "label": "File Number"
+ },
+ {
+ "fieldname": "admission_date",
+ "fieldtype": "Date",
+ "in_list_view": 1,
+ "label": "Date of Admission",
+ "reqd": 1
+ },
+ {
+ "fieldname": "section_break_tgsq",
+ "fieldtype": "Section Break"
+ },
+ {
+ "default": "Voluntary",
+ "fieldname": "admission_type",
+ "fieldtype": "Select",
+ "in_list_view": 1,
+ "label": "Type of Admission",
+ "options": "\nVoluntary\nInvoluntary",
+ "reqd": 1
+ },
+ {
+ "fieldname": "column_break_sqpn",
+ "fieldtype": "Column Break"
+ },
+ {
+ "fieldname": "referred_by",
+ "fieldtype": "Select",
+ "label": "Referred By",
+ "options": "\nPolice\nPS - Partners\nSelf"
+ },
+ {
+ "fieldname": "amended_from",
+ "fieldtype": "Link",
+ "label": "Amended From",
+ "no_copy": 1,
+ "options": "Care Centre Admission",
+ "print_hide": 1,
+ "read_only": 1
+ },
+ {
+ "fieldname": "column_break_vnwn",
+ "fieldtype": "Column Break"
+ },
+ {
+ "fieldname": "column_break_xedh",
+ "fieldtype": "Column Break"
+ },
+ {
+ "fieldname": "section_break_getk",
+ "fieldtype": "Section Break"
+ },
+ {
+ "fieldname": "section_break_oktc",
+ "fieldtype": "Section Break"
+ },
+ {
+ "fieldname": "column_break_qkbc",
+ "fieldtype": "Column Break"
+ },
+ {
+ "fieldname": "column_break_msuj",
+ "fieldtype": "Column Break"
+ },
+ {
+ "fieldname": "section_break_pumi",
+ "fieldtype": "Section Break"
+ },
+ {
+ "fieldname": "medical_conditions",
+ "fieldtype": "Table MultiSelect",
+ "label": "Medical Conditions",
+ "options": "Medical Conditions Multiselect"
+ },
+ {
+ "fieldname": "doctors_assessment",
+ "fieldtype": "Text",
+ "label": "Doctor's Assessment",
+ "max_height": "15rem"
+ },
+ {
+ "fieldname": "est_duration_days",
+ "fieldtype": "Int",
+ "label": "Estimated Duration (Days)"
+ },
+ {
+ "depends_on": "eval: doc.status == 'Discharged';",
+ "fieldname": "actual_duration_days",
+ "fieldtype": "Int",
+ "label": "Actual Duration (Days)",
+ "non_negative": 1,
+ "read_only": 1
+ },
+ {
+ "depends_on": "eval: doc.status == 'Discharged';",
+ "fieldname": "discharge_date",
+ "fieldtype": "Date",
+ "label": "Date of Discharge",
+ "mandatory_depends_on": "eval: doc.status == 'Discharged';"
+ },
+ {
+ "depends_on": "eval: doc.status == 'Discharged';",
+ "fieldname": "exit_pathway",
+ "fieldtype": "Select",
+ "label": "Exit Pathway",
+ "mandatory_depends_on": "eval: doc.discharge_date && doc.status == 'Discharged';",
+ "options": "\nFamily Reintegration\nDeath\nShelter Home"
+ },
+ {
+ "fieldname": "column_break_aala",
+ "fieldtype": "Column Break"
+ },
+ {
+ "fieldname": "column_break_xcyq",
+ "fieldtype": "Column Break"
+ },
+ {
+ "fieldname": "section_break_cjtk",
+ "fieldtype": "Section Break"
+ },
+ {
+ "fieldname": "work_performed",
+ "fieldtype": "Table",
+ "label": "Work Performed",
+ "options": "Care Centre Admission Detail"
+ },
+ {
+ "fieldname": "status",
+ "fieldtype": "Select",
+ "in_list_view": 1,
+ "label": "Status",
+ "options": "\nAdmitted\nHospitalised\nDischarged",
+ "reqd": 1
+ },
+ {
+ "fieldname": "column_break_mjah",
+ "fieldtype": "Column Break"
+ },
+ {
+ "fieldname": "column_break_gsff",
+ "fieldtype": "Column Break"
+ },
+ {
+ "default": "CC-ADM-",
+ "fieldname": "naming_series",
+ "fieldtype": "Select",
+ "hidden": 1,
+ "label": "Series",
+ "options": "CC-ADM-"
+ }
+ ],
+ "index_web_pages_for_search": 1,
+ "is_submittable": 1,
+ "links": [],
+ "modified": "2023-11-05 14:36:09.303010",
+ "modified_by": "Administrator",
+ "module": "Frappe Changemakers",
+ "name": "Care Centre Admission",
+ "naming_rule": "By \"Naming Series\" field",
+ "owner": "Administrator",
+ "permissions": [
+ {
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "System Manager",
+ "share": 1,
+ "write": 1
+ },
+ {
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "Admin (Partner)",
+ "share": 1,
+ "write": 1
+ },
+ {
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "Partner SMT",
+ "share": 1,
+ "write": 1
+ },
+ {
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "Social Worker",
+ "share": 1,
+ "write": 1
+ },
+ {
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "Program Manager",
+ "share": 1,
+ "write": 1
+ },
+ {
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "SMT(NGO)-Field Co-ordinator",
+ "share": 1,
+ "write": 1
+ }
+ ],
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "states": [],
+ "track_changes": 1
+}
\ No newline at end of file
diff --git a/changemakers/frappe_changemakers/doctype/care_centre_admission/care_centre_admission.py b/changemakers/frappe_changemakers/doctype/care_centre_admission/care_centre_admission.py
new file mode 100644
index 0000000..dd1c524
--- /dev/null
+++ b/changemakers/frappe_changemakers/doctype/care_centre_admission/care_centre_admission.py
@@ -0,0 +1,80 @@
+# Copyright (c) 2023, hussain@frappe.io and contributors
+# For license information, please see license.txt
+
+import frappe
+from frappe.model.document import Document
+from frappe.utils import getdate
+
+
+class CareCentreAdmission(Document):
+ actual_duration_days: int
+
+ def validate(self):
+ self.validate_duplication()
+ self.validate_work_performed()
+ self.validate_capacity()
+
+ def before_save(self):
+ if self.discharge_date:
+ duration = getdate(self.discharge_date) - getdate(self.admission_date)
+ self.actual_duration_days = duration.days
+
+ def before_submit(self):
+ self.validate_discharge_date()
+
+ def validate_duplication(self):
+ """
+ Checking DB for existing admission record for same beneficiary and facility.
+ :return: None
+ """
+ exists = frappe.db.exists(
+ "Care Centre Admission",
+ {
+ "beneficiary": self.beneficiary,
+ "facility_name": self.facility_name,
+ "docstatus": 0,
+ "status": ("in", ("", "Admitted", "Hospitalised")),
+ },
+ )
+
+ if exists and (self.name != exists):
+ frappe.throw(
+ f"There is an active admission record for Beneficiary: {self.beneficiary} in Care Centre: {self.facility_name}"
+ )
+
+ def validate_work_performed(self):
+ """
+ Checking if work performed date is before admission date.
+ :return: None
+ """
+ for idx, item in enumerate(self.work_performed):
+ if getdate(item.date) < getdate(self.admission_date):
+ frappe.throw(
+ f"Work performed at Sr #. {idx} for Category {item.category} cannot be before admission date"
+ )
+
+ def validate_discharge_date(self):
+ """
+ Checking if discharge date is before admission date.
+ :return: None
+ """
+ if not self.discharge_date or (self.discharge_date < self.admission_date):
+ frappe.throw(
+ f"Date of discharge is mandatory for submission and has to be greater than or equal to admission date {self.admission_date}"
+ )
+
+ if self.status.lower() != "discharged":
+ frappe.throw(
+ f"Beneficiary {self.beneficiary} has to be discharged before this document can be submitted"
+ )
+
+ def validate_capacity(self):
+ """
+ Checking if facility has enough capacity to admit beneficiary.
+ :return: None
+ """
+ facility = frappe.get_doc("Care Centre", self.facility_name)
+ if not facility.vacant_beds:
+ frappe.throw(
+ f"Care Centre {self.facility_name} does not have any vacant beds left, please select a different facility."
+ )
diff --git a/changemakers/frappe_changemakers/doctype/care_centre_admission/test_care_centre_admission.py b/changemakers/frappe_changemakers/doctype/care_centre_admission/test_care_centre_admission.py
new file mode 100644
index 0000000..b9892cb
--- /dev/null
+++ b/changemakers/frappe_changemakers/doctype/care_centre_admission/test_care_centre_admission.py
@@ -0,0 +1,9 @@
+# Copyright (c) 2023, hussain@frappe.io and Contributors
+# See license.txt
+
+# import frappe
+from frappe.tests.utils import FrappeTestCase
+
+
+class TestCareCentreAdmission(FrappeTestCase):
+ pass
diff --git a/changemakers/frappe_changemakers/doctype/care_centre_admission_detail/__init__.py b/changemakers/frappe_changemakers/doctype/care_centre_admission_detail/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/changemakers/frappe_changemakers/doctype/care_centre_admission_detail/care_centre_admission_detail.json b/changemakers/frappe_changemakers/doctype/care_centre_admission_detail/care_centre_admission_detail.json
new file mode 100644
index 0000000..89c43d3
--- /dev/null
+++ b/changemakers/frappe_changemakers/doctype/care_centre_admission_detail/care_centre_admission_detail.json
@@ -0,0 +1,80 @@
+{
+ "actions": [],
+ "allow_rename": 1,
+ "creation": "2023-10-25 11:40:09.332361",
+ "doctype": "DocType",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "field_order": [
+ "column_break_cnwn",
+ "date",
+ "column_break_enyy",
+ "time",
+ "column_break_gbfc",
+ "category",
+ "column_break_xiza",
+ "description"
+ ],
+ "fields": [
+ {
+ "columns": 1,
+ "fieldname": "date",
+ "fieldtype": "Date",
+ "in_list_view": 1,
+ "label": "Date",
+ "reqd": 1
+ },
+ {
+ "fieldname": "column_break_enyy",
+ "fieldtype": "Column Break"
+ },
+ {
+ "columns": 1,
+ "fieldname": "time",
+ "fieldtype": "Time",
+ "in_list_view": 1,
+ "label": "Time",
+ "reqd": 1
+ },
+ {
+ "fieldname": "column_break_gbfc",
+ "fieldtype": "Column Break"
+ },
+ {
+ "columns": 2,
+ "fieldname": "category",
+ "fieldtype": "Select",
+ "in_list_view": 1,
+ "label": "Category",
+ "options": "\nTest\nMedication"
+ },
+ {
+ "fieldname": "column_break_xiza",
+ "fieldtype": "Column Break"
+ },
+ {
+ "columns": 6,
+ "fieldname": "description",
+ "fieldtype": "Text",
+ "in_list_view": 1,
+ "label": "Description",
+ "width": "6"
+ },
+ {
+ "fieldname": "column_break_cnwn",
+ "fieldtype": "Column Break"
+ }
+ ],
+ "index_web_pages_for_search": 1,
+ "istable": 1,
+ "links": [],
+ "modified": "2023-10-27 12:34:40.538519",
+ "modified_by": "Administrator",
+ "module": "Frappe Changemakers",
+ "name": "Care Centre Admission Detail",
+ "owner": "Administrator",
+ "permissions": [],
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "states": []
+}
\ No newline at end of file
diff --git a/changemakers/frappe_changemakers/doctype/care_centre_admission_detail/care_centre_admission_detail.py b/changemakers/frappe_changemakers/doctype/care_centre_admission_detail/care_centre_admission_detail.py
new file mode 100644
index 0000000..f09edb8
--- /dev/null
+++ b/changemakers/frappe_changemakers/doctype/care_centre_admission_detail/care_centre_admission_detail.py
@@ -0,0 +1,9 @@
+# Copyright (c) 2023, hussain@frappe.io and contributors
+# For license information, please see license.txt
+
+# import frappe
+from frappe.model.document import Document
+
+
+class CareCentreAdmissionDetail(Document):
+ pass
diff --git a/changemakers/frappe_changemakers/doctype/health_condition/__init__.py b/changemakers/frappe_changemakers/doctype/health_condition/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/changemakers/frappe_changemakers/doctype/health_condition/health_condition.js b/changemakers/frappe_changemakers/doctype/health_condition/health_condition.js
new file mode 100644
index 0000000..b7f7983
--- /dev/null
+++ b/changemakers/frappe_changemakers/doctype/health_condition/health_condition.js
@@ -0,0 +1,8 @@
+// Copyright (c) 2023, hussain@frappe.io and contributors
+// For license information, please see license.txt
+
+// frappe.ui.form.on("Health Condition", {
+// refresh(frm) {
+
+// },
+// });
diff --git a/changemakers/frappe_changemakers/doctype/health_condition/health_condition.json b/changemakers/frappe_changemakers/doctype/health_condition/health_condition.json
new file mode 100644
index 0000000..cbb8b87
--- /dev/null
+++ b/changemakers/frappe_changemakers/doctype/health_condition/health_condition.json
@@ -0,0 +1,98 @@
+{
+ "actions": [],
+ "allow_rename": 1,
+ "autoname": "field:health_condition",
+ "creation": "2023-10-25 11:29:17.715700",
+ "default_view": "List",
+ "doctype": "DocType",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "field_order": [
+ "health_condition"
+ ],
+ "fields": [
+ {
+ "fieldname": "health_condition",
+ "fieldtype": "Data",
+ "in_list_view": 1,
+ "label": "Health Condition",
+ "reqd": 1,
+ "unique": 1
+ }
+ ],
+ "index_web_pages_for_search": 1,
+ "links": [],
+ "modified": "2023-10-27 11:33:53.748804",
+ "modified_by": "Administrator",
+ "module": "Frappe Changemakers",
+ "name": "Health Condition",
+ "naming_rule": "By fieldname",
+ "owner": "Administrator",
+ "permissions": [
+ {
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "System Manager",
+ "share": 1,
+ "write": 1
+ },
+ {
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "Admin (Partner)",
+ "share": 1,
+ "write": 1
+ },
+ {
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "Partner SMT",
+ "share": 1,
+ "write": 1
+ },
+ {
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "Social Worker",
+ "share": 1,
+ "write": 1
+ },
+ {
+ "create": 1,
+ "delete": 1,
+ "email": 1,
+ "export": 1,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "Program Manager",
+ "share": 1,
+ "write": 1
+ }
+ ],
+ "quick_entry": 1,
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "states": [],
+ "track_changes": 1
+}
\ No newline at end of file
diff --git a/changemakers/frappe_changemakers/doctype/health_condition/health_condition.py b/changemakers/frappe_changemakers/doctype/health_condition/health_condition.py
new file mode 100644
index 0000000..5253b4b
--- /dev/null
+++ b/changemakers/frappe_changemakers/doctype/health_condition/health_condition.py
@@ -0,0 +1,9 @@
+# Copyright (c) 2023, hussain@frappe.io and contributors
+# For license information, please see license.txt
+
+# import frappe
+from frappe.model.document import Document
+
+
+class HealthCondition(Document):
+ pass
diff --git a/changemakers/frappe_changemakers/doctype/health_condition/test_health_condition.py b/changemakers/frappe_changemakers/doctype/health_condition/test_health_condition.py
new file mode 100644
index 0000000..eb5d3e8
--- /dev/null
+++ b/changemakers/frappe_changemakers/doctype/health_condition/test_health_condition.py
@@ -0,0 +1,9 @@
+# Copyright (c) 2023, hussain@frappe.io and Contributors
+# See license.txt
+
+# import frappe
+from frappe.tests.utils import FrappeTestCase
+
+
+class TestHealthCondition(FrappeTestCase):
+ pass
diff --git a/changemakers/frappe_changemakers/doctype/medical_conditions_multiselect/__init__.py b/changemakers/frappe_changemakers/doctype/medical_conditions_multiselect/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/changemakers/frappe_changemakers/doctype/medical_conditions_multiselect/medical_conditions_multiselect.json b/changemakers/frappe_changemakers/doctype/medical_conditions_multiselect/medical_conditions_multiselect.json
new file mode 100644
index 0000000..f141d09
--- /dev/null
+++ b/changemakers/frappe_changemakers/doctype/medical_conditions_multiselect/medical_conditions_multiselect.json
@@ -0,0 +1,33 @@
+{
+ "actions": [],
+ "allow_rename": 1,
+ "creation": "2023-10-25 11:26:26.480898",
+ "doctype": "DocType",
+ "editable_grid": 1,
+ "engine": "InnoDB",
+ "field_order": [
+ "medical_condition"
+ ],
+ "fields": [
+ {
+ "fieldname": "medical_condition",
+ "fieldtype": "Link",
+ "in_list_view": 1,
+ "label": "Medical Condition",
+ "options": "Health Condition",
+ "reqd": 1
+ }
+ ],
+ "index_web_pages_for_search": 1,
+ "istable": 1,
+ "links": [],
+ "modified": "2023-10-25 11:33:31.206136",
+ "modified_by": "Administrator",
+ "module": "Frappe Changemakers",
+ "name": "Medical Conditions Multiselect",
+ "owner": "Administrator",
+ "permissions": [],
+ "sort_field": "modified",
+ "sort_order": "DESC",
+ "states": []
+}
\ No newline at end of file
diff --git a/changemakers/frappe_changemakers/doctype/medical_conditions_multiselect/medical_conditions_multiselect.py b/changemakers/frappe_changemakers/doctype/medical_conditions_multiselect/medical_conditions_multiselect.py
new file mode 100644
index 0000000..caca069
--- /dev/null
+++ b/changemakers/frappe_changemakers/doctype/medical_conditions_multiselect/medical_conditions_multiselect.py
@@ -0,0 +1,9 @@
+# Copyright (c) 2023, hussain@frappe.io and contributors
+# For license information, please see license.txt
+
+# import frappe
+from frappe.model.document import Document
+
+
+class MedicalConditionsMultiselect(Document):
+ pass
diff --git a/changemakers/frappe_changemakers/workspace/changemakers/changemakers.json b/changemakers/frappe_changemakers/workspace/changemakers/changemakers.json
index 215e9ec..2be9c4c 100644
--- a/changemakers/frappe_changemakers/workspace/changemakers/changemakers.json
+++ b/changemakers/frappe_changemakers/workspace/changemakers/changemakers.json
@@ -1,6 +1,6 @@
{
"charts": [],
- "content": "[{\"id\":\"CecwNbV5Aq\",\"type\":\"header\",\"data\":{\"text\":\"Frappe Changemakers\",\"col\":12}},{\"id\":\"I9e4OurK7Y\",\"type\":\"paragraph\",\"data\":{\"text\":\" Manage Beneficiaries\",\"col\":12}},{\"id\":\"JhoJIvxYwo\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"New Beneficiary\",\"col\":3}},{\"id\":\"PMA7sL0zHl\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"All Beneficiaries\",\"col\":3}},{\"id\":\"j_2-NL3927\",\"type\":\"paragraph\",\"data\":{\"text\":\"Daily Visit Update\",\"col\":12}},{\"id\":\"arnB4anEZl\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"New Daily Visit Update\",\"col\":3}},{\"id\":\"lB7YAlkP4m\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"All Daily Visit Update List\",\"col\":3}},{\"id\":\"K20J6BDf9I\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Daily Visit Report View\",\"col\":3}},{\"id\":\"GlS-4ygjkT\",\"type\":\"paragraph\",\"data\":{\"text\":\"Rescues\",\"col\":12}},{\"id\":\"W7ZBgFg0CJ\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"New Rescue\",\"col\":3}},{\"id\":\"TEcaVdnIhr\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"All Rescues\",\"col\":3}},{\"id\":\"g2frCR54Gw\",\"type\":\"paragraph\",\"data\":{\"text\":\"Cases\",\"col\":12}},{\"id\":\"YY4UpDO22w\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"My Cases\",\"col\":3}},{\"id\":\"o-NQxJOqB9\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"New Case\",\"col\":3}},{\"id\":\"1X_H_JUulh\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Open Cases\",\"col\":3}},{\"id\":\"2faOuV0vIj\",\"type\":\"paragraph\",\"data\":{\"text\":\"Entitlements\",\"col\":12}},{\"id\":\"xllISW0jRt\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Entitlements\",\"col\":3}},{\"id\":\"wjYeZ-C3Yj\",\"type\":\"paragraph\",\"data\":{\"text\":\"Food\",\"col\":12}},{\"id\":\"mB90BbrugG\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"New Distribution\",\"col\":3}},{\"id\":\"2Dxn3AA-OY\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"All Distributions\",\"col\":3}},{\"id\":\"2qZW9NgrCQ\",\"type\":\"paragraph\",\"data\":{\"text\":\"Healthcare\",\"col\":12}},{\"id\":\"JYx1hK5EYf\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Hospitalisation Record\",\"col\":3}},{\"id\":\"aGZflLrU8F\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Healthcare Providers\",\"col\":3}},{\"id\":\"SMiDbH7oHO\",\"type\":\"paragraph\",\"data\":{\"text\":\"Shelter Services\",\"col\":12}},{\"id\":\"_zTFcA698A\",\"type\":\"quick_list\",\"data\":{\"quick_list_name\":\"Shelter Homes\",\"col\":4}},{\"id\":\"ZMLz_em53Q\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Create Entry Record\",\"col\":3}},{\"id\":\"j51o5hQMDV\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Create Exit Record\",\"col\":3}},{\"id\":\"hIEZu5hDaF\",\"type\":\"spacer\",\"data\":{\"col\":12}},{\"id\":\"2QJ1oA29Tv\",\"type\":\"paragraph\",\"data\":{\"text\":\"Others\",\"col\":12}},{\"id\":\"a3oRewN8WJ\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Family Reintegrations\",\"col\":3}},{\"id\":\"AtcrGpwYkn\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Awareness Camps\",\"col\":3}},{\"id\":\"vOv18I4R0A\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Health Camps\",\"col\":3}}]",
+ "content": "[{\"id\":\"CecwNbV5Aq\",\"type\":\"header\",\"data\":{\"text\":\"Frappe Changemakers\",\"col\":12}},{\"id\":\"I9e4OurK7Y\",\"type\":\"paragraph\",\"data\":{\"text\":\" Manage Beneficiaries\",\"col\":12}},{\"id\":\"JhoJIvxYwo\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"New Beneficiary\",\"col\":3}},{\"id\":\"PMA7sL0zHl\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"All Beneficiaries\",\"col\":3}},{\"id\":\"j_2-NL3927\",\"type\":\"paragraph\",\"data\":{\"text\":\"Daily Visit Update\",\"col\":12}},{\"id\":\"arnB4anEZl\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"New Daily Visit Update\",\"col\":3}},{\"id\":\"lB7YAlkP4m\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"All Daily Visit Update List\",\"col\":3}},{\"id\":\"K20J6BDf9I\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Daily Visit Report View\",\"col\":3}},{\"id\":\"GlS-4ygjkT\",\"type\":\"paragraph\",\"data\":{\"text\":\"Rescues\",\"col\":12}},{\"id\":\"W7ZBgFg0CJ\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"New Rescue\",\"col\":3}},{\"id\":\"TEcaVdnIhr\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"All Rescues\",\"col\":3}},{\"id\":\"g2frCR54Gw\",\"type\":\"paragraph\",\"data\":{\"text\":\"Cases\",\"col\":12}},{\"id\":\"YY4UpDO22w\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"My Cases\",\"col\":3}},{\"id\":\"o-NQxJOqB9\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"New Case\",\"col\":3}},{\"id\":\"1X_H_JUulh\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Open Cases\",\"col\":3}},{\"id\":\"2faOuV0vIj\",\"type\":\"paragraph\",\"data\":{\"text\":\"Entitlements\",\"col\":12}},{\"id\":\"xllISW0jRt\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Entitlements\",\"col\":3}},{\"id\":\"wjYeZ-C3Yj\",\"type\":\"paragraph\",\"data\":{\"text\":\"Food\",\"col\":12}},{\"id\":\"mB90BbrugG\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"New Distribution\",\"col\":3}},{\"id\":\"2Dxn3AA-OY\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"All Distributions\",\"col\":3}},{\"id\":\"2qZW9NgrCQ\",\"type\":\"paragraph\",\"data\":{\"text\":\"Healthcare\",\"col\":12}},{\"id\":\"JYx1hK5EYf\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Hospitalisation Record\",\"col\":3}},{\"id\":\"aGZflLrU8F\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Healthcare Providers\",\"col\":3}},{\"id\":\"cAplmOLdjf\",\"type\":\"paragraph\",\"data\":{\"text\":\"Care Centre\",\"col\":12}},{\"id\":\"ObebyzwyH1\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Care Centre\",\"col\":3}},{\"id\":\"scHLTq6_3v\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Care Centre Admission\",\"col\":3}},{\"id\":\"SMiDbH7oHO\",\"type\":\"paragraph\",\"data\":{\"text\":\"Shelter Services\",\"col\":12}},{\"id\":\"_zTFcA698A\",\"type\":\"quick_list\",\"data\":{\"quick_list_name\":\"Shelter Homes\",\"col\":4}},{\"id\":\"ZMLz_em53Q\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Create Entry Record\",\"col\":3}},{\"id\":\"j51o5hQMDV\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Create Exit Record\",\"col\":3}},{\"id\":\"hIEZu5hDaF\",\"type\":\"spacer\",\"data\":{\"col\":12}},{\"id\":\"2QJ1oA29Tv\",\"type\":\"paragraph\",\"data\":{\"text\":\"Others\",\"col\":12}},{\"id\":\"a3oRewN8WJ\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Family Reintegrations\",\"col\":3}},{\"id\":\"AtcrGpwYkn\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Awareness Camps\",\"col\":3}},{\"id\":\"vOv18I4R0A\",\"type\":\"shortcut\",\"data\":{\"shortcut_name\":\"Health Camps\",\"col\":3}}]",
"creation": "2022-10-13 13:51:43.725589",
"custom_blocks": [],
"docstatus": 0,
@@ -12,7 +12,7 @@
"is_hidden": 0,
"label": "Changemakers",
"links": [],
- "modified": "2023-07-16 16:18:10.088671",
+ "modified": "2023-10-27 19:23:52.631875",
"modified_by": "Administrator",
"module": "Frappe Changemakers",
"name": "Changemakers",
@@ -36,6 +36,22 @@
"link_to": "Daily Visit Update",
"type": "DocType"
},
+ {
+ "color": "Grey",
+ "doc_view": "List",
+ "label": "Care Centre",
+ "link_to": "Care Centre",
+ "stats_filter": "[]",
+ "type": "DocType"
+ },
+ {
+ "color": "Grey",
+ "doc_view": "List",
+ "label": "Care Centre Admission",
+ "link_to": "Care Centre Admission",
+ "stats_filter": "[]",
+ "type": "DocType"
+ },
{
"color": "Grey",
"doc_view": "New",