diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index 09e067afde2..673b5cb010b 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -374,6 +374,7 @@
if(hasHUD(user,MED_HUDTYPE))
var/perpname = "wot"
var/medical = "None"
+ var/bloodtype = "Unknown"
var/obj/item/card/id/ID = GetIdCard()
if(ID)
@@ -384,10 +385,12 @@
var/datum/record/general/R = SSrecords.find_record("name", perpname)
if(istype(R))
medical = R.physical_status
+ bloodtype = R.medical.blood_type
msg += "Physical Status: \[[medical]\]\n"
msg += "Medical Records: \[View\] \[Add Comment\]\n"
msg += "Triage Tag: \[[triage_tag]\]\n"
+ msg += "Blood type: [bloodtype]\n"
if(print_flavor_text()) msg += "[print_flavor_text()]\n"
diff --git a/code/modules/modular_computers/file_system/programs/generic/records.dm b/code/modules/modular_computers/file_system/programs/generic/records.dm
index 32506850851..6c9a1b402e8 100644
--- a/code/modules/modular_computers/file_system/programs/generic/records.dm
+++ b/code/modules/modular_computers/file_system/programs/generic/records.dm
@@ -28,7 +28,7 @@
"physical_status" = list("Active", "*Deceased*", "*SSD*", "*Missing*", "Physically Unfit", "Disabled"),
"criminal_status" = list("None", "*Arrest*", "Search", "Incarcerated", "Parolled", "Released"),
"mental_status" = list("Stable", "*Insane*", "*Unstable*", "*Watch*"),
- "medical" = list("A-", "B-", "AB-", "O-", "A+", "B+", "AB+", "O+", "SBS")
+ "blood_type" = list("A-", "B-", "AB-", "O-", "A+", "B+", "AB+", "O+", "SBS")
)
/datum/computer_file/program/records/New()
@@ -118,6 +118,7 @@
data["physical_status_options"] = typechoices["physical_status"]
data["criminal_status_options"] = typechoices["criminal_status"]
data["mental_status_options"] = typechoices["mental_status"]
+ data["blood_type_options"] = typechoices["blood_type"]
data["medical_options"] = typechoices["medical"]
data["allrecords"] = list()
data["allrecords_locked"] = list()
@@ -141,7 +142,7 @@
"religion" = R.religion,
"employer" = R.employer,
"notes" = html_decode(R.notes),
- "blood" = R.medical ? R.medical.blood_type : null,
+ "blood_type" = R.medical ? R.medical.blood_type : null,
"dna" = R.medical ? R.medical.blood_dna : null,
"ccia_notes" = R.ccia_record,
"ccia_actions" = R.ccia_actions,
@@ -272,6 +273,9 @@
if("allergies")
if(!(edit_type & RECORD_MEDICAL))
return FALSE
+ if("blood_type")
+ if(!(edit_type & RECORD_MEDICAL) || (edit_type & RECORD_SECURITY))
+ return FALSE
if("blood_dna")
if(!(edit_type & RECORD_MEDICAL) || (edit_type & RECORD_SECURITY))
return FALSE
diff --git a/html/changelogs/BloodTypeIsShown.yml b/html/changelogs/BloodTypeIsShown.yml
new file mode 100644
index 00000000000..8d9250656f8
--- /dev/null
+++ b/html/changelogs/BloodTypeIsShown.yml
@@ -0,0 +1,7 @@
+author: TheGreyWolf
+
+delete-after: True
+
+changes:
+ - rscadd: "The medical records can now see and edit blood types."
+ - rscadd: "Medhuds now show blood types of people that are examined, based on their medical record."
diff --git a/tgui/packages/tgui/interfaces/Records.tsx b/tgui/packages/tgui/interfaces/Records.tsx
index 6b4db0369b8..8cff47a89ad 100644
--- a/tgui/packages/tgui/interfaces/Records.tsx
+++ b/tgui/packages/tgui/interfaces/Records.tsx
@@ -11,6 +11,7 @@ export type RecordsData = {
physical_status_options: string[];
criminal_status_options: string[];
mental_status_options: string[];
+ blood_type_options: string[];
medical_options: string[];
authenticated: BooleanLike;
@@ -33,7 +34,7 @@ type Record = {
age: string;
fingerprint: string;
has_notes: string;
- blood: string;
+ blood_dna: string;
dna: string;
physical_status: string;
mental_status: string;
@@ -192,6 +193,11 @@ export const ListActive = (props, context) => {
'editingMentalStatus',
false
);
+ const [editingBloodType, setEditingBloodType] = useLocalState(
+ context,
+ 'editingBloodType',
+ false
+ );
const [editingFingerprint, setEditingFingerprint] = useLocalState(
context,
'editingFingerprint',
@@ -476,6 +482,36 @@ export const ListActive = (props, context) => {
{data.active.medical && recordTab === 'Medical' ? (
<>
+
+ {data.editable & 1 || data.editable & 2 ? (
+
+ {editingBloodType ? (
+
+ act('editrecord', {
+ record_type: 'medical',
+ key: 'blood_type',
+ value: v,
+ })
+ }
+ />
+ ) : (
+
+ {data.active.medical.blood_type}
+
+ )}
+
+ ) : (
+ data.active.medical.blood_type
+ )}
+
{data.editable & 2 ? (