diff --git a/code/__DEFINES/medical.dm b/code/__DEFINES/medical.dm
new file mode 100644
index 00000000000..899de5c273f
--- /dev/null
+++ b/code/__DEFINES/medical.dm
@@ -0,0 +1,27 @@
+/// Physical statuses
+#define PHYSICAL_ACTIVE "Active"
+#define PHYSICAL_DEBILITATED "Debilitated"
+#define PHYSICAL_UNCONSCIOUS "Unconscious"
+#define PHYSICAL_DECEASED "Deceased"
+
+/// List of available physical statuses
+#define PHYSICAL_STATUSES list(\
+ PHYSICAL_ACTIVE, \
+ PHYSICAL_DEBILITATED, \
+ PHYSICAL_UNCONSCIOUS, \
+ PHYSICAL_DECEASED, \
+)
+
+/// Mental statuses
+#define MENTAL_STABLE "Stable"
+#define MENTAL_WATCH "Watch"
+#define MENTAL_UNSTABLE "Unstable"
+#define MENTAL_INSANE "Insane"
+
+/// List of available mental statuses
+#define MENTAL_STATUSES list(\
+ MENTAL_STABLE, \
+ MENTAL_WATCH, \
+ MENTAL_UNSTABLE, \
+ MENTAL_INSANE, \
+)
diff --git a/code/datums/records/record.dm b/code/datums/records/record.dm
index 9664f3ad1c3..def50e2a286 100644
--- a/code/datums/records/record.dm
+++ b/code/datums/records/record.dm
@@ -70,6 +70,10 @@
var/minor_disabilities
/// Fancy description of minor disabilities
var/minor_disabilities_desc
+ /// Physical status of this person in medical records.
+ var/physical_status
+ /// Mental status of this person in medical records.
+ var/mental_status
/// Positive and neutral quirk strings
var/quirk_notes
/// Security note
@@ -95,6 +99,8 @@
major_disabilities_desc = "No disabilities have been diagnosed at the moment.",
minor_disabilities = "None",
minor_disabilities_desc = "No disabilities have been diagnosed at the moment.",
+ physical_status = PHYSICAL_ACTIVE,
+ mental_status = MENTAL_STABLE,
quirk_notes,
// SKYRAT EDIT START - RP Records
background_information = "",
@@ -110,6 +116,8 @@
src.major_disabilities_desc = major_disabilities_desc
src.minor_disabilities = minor_disabilities
src.minor_disabilities_desc = minor_disabilities_desc
+ src.physical_status = physical_status
+ src.mental_status = mental_status
src.quirk_notes = quirk_notes
// SKYRAT EDIT START - RP Records
src.background_information = background_information
diff --git a/code/game/machinery/computer/records/medical.dm b/code/game/machinery/computer/records/medical.dm
index e5b82f248be..3b80f80888b 100644
--- a/code/game/machinery/computer/records/medical.dm
+++ b/code/game/machinery/computer/records/medical.dm
@@ -58,6 +58,8 @@
gender = target.gender,
major_disabilities = target.major_disabilities_desc,
minor_disabilities = target.minor_disabilities_desc,
+ physical_status = target.physical_status,
+ mental_status = target.mental_status,
name = target.name,
notes = notes,
quirk_notes = target.quirk_notes,
@@ -77,6 +79,8 @@
var/list/data = list()
data["min_age"] = AGE_MIN
data["max_age"] = AGE_MAX
+ data["physical_statuses"] = PHYSICAL_STATUSES
+ data["mental_statuses"] = MENTAL_STATUSES
return data
/obj/machinery/computer/records/medical/ui_act(action, list/params, datum/tgui/ui)
@@ -114,6 +118,24 @@
return TRUE
+ if("set_physical_status")
+ var/physical_status = params["physical_status"]
+ if(!physical_status || !(physical_status in PHYSICAL_STATUSES))
+ return FALSE
+
+ target.physical_status = physical_status
+
+ return TRUE
+
+ if("set_mental_status")
+ var/mental_status = params["mental_status"]
+ if(!mental_status || !(mental_status in MENTAL_STATUSES))
+ return FALSE
+
+ target.mental_status = mental_status
+
+ return TRUE
+
return FALSE
/// Deletes medical information from a record.
@@ -130,6 +152,8 @@
target.medical_notes.Cut()
target.minor_disabilities = ""
target.minor_disabilities_desc = ""
+ target.physical_status = ""
+ target.mental_status = ""
target.name = "Unknown"
target.quirk_notes = ""
target.rank = "Unknown"
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index ccad7d5eed2..46e27d3bf85 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -420,6 +420,11 @@
if(cyberimp_detect)
. += "Detected cybernetic modifications:"
. += "[cyberimp_detect]"
+ if(target_record)
+ var/health_record = target_record.physical_status
+ . += "\[[health_record]\]"
+ health_record = target_record.mental_status
+ . += "\[[health_record]\]"
target_record = find_record(perpname)
if(target_record)
. += "\[Medical evaluation\]
"
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 08e743a20ae..35ad3246858 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -174,6 +174,23 @@
if(!(ACCESS_MEDICAL in access))
to_chat(human_user, span_warning("ERROR: Invalid access"))
return
+
+ if(href_list["physical_status"])
+ var/health_status = tgui_input_list(human_user, "Specify a new physical status for this person.", "Medical HUD", PHYSICAL_STATUSES, target_record.physical_status)
+ if(!health_status || !target_record || !human_user.canUseHUD() || !HAS_TRAIT(human_user, TRAIT_MEDICAL_HUD))
+ return
+
+ target_record.physical_status = health_status
+ return
+
+ if(href_list["mental_status"])
+ var/health_status = tgui_input_list(human_user, "Specify a new mental status for this person.", "Medical HUD", MENTAL_STATUSES, target_record.mental_status)
+ if(!health_status || !target_record || !human_user.canUseHUD() || !HAS_TRAIT(human_user, TRAIT_MEDICAL_HUD))
+ return
+
+ target_record.mental_status = health_status
+ return
+
if(href_list["quirk"])
var/quirkstring = get_quirk_string(TRUE, CAT_QUIRK_ALL)
if(quirkstring)
diff --git a/code/modules/modular_computers/file_system/programs/records.dm b/code/modules/modular_computers/file_system/programs/records.dm
index 7f3d099b719..0d8cec96378 100644
--- a/code/modules/modular_computers/file_system/programs/records.dm
+++ b/code/modules/modular_computers/file_system/programs/records.dm
@@ -54,6 +54,8 @@
current_record["bloodtype"] = person.blood_type
current_record["ma_dis"] = person.major_disabilities_desc
current_record["mi_dis"] = person.minor_disabilities_desc
+ current_record["physical_status"] = person.physical_status
+ current_record["mental_status"] = person.mental_status
current_record["name"] = person.name
current_record["notes"] = person.medical_notes
diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm
index 0c49a6b1cad..429050d1825 100644
--- a/code/modules/paperwork/filingcabinet.dm
+++ b/code/modules/paperwork/filingcabinet.dm
@@ -154,7 +154,7 @@
var/obj/item/paper/med_record_paper = new /obj/item/paper(src)
var/med_record_text = "