diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm
index ddbee4c06a9..da42cc740ca 100644
--- a/code/game/machinery/computer/medical.dm
+++ b/code/game/machinery/computer/medical.dm
@@ -1,4 +1,9 @@
-//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:31
+#define MED_DATA_MAIN 1 // Main menu
+#define MED_DATA_R_LIST 2 // Record list
+#define MED_DATA_MAINT 3 // Records maintenance
+#define MED_DATA_RECORD 4 // Record
+#define MED_DATA_V_DATA 5 // Virus database
+#define MED_DATA_MEDBOT 6 // Medbot monitor
/obj/machinery/computer/med_data//TODO:SANITY
name = "medical records console"
@@ -13,486 +18,516 @@
var/screen = null
var/datum/data/record/active1 = null
var/datum/data/record/active2 = null
- var/a_id = null
var/temp = null
var/printing = null
light_color = LIGHT_COLOR_DARKBLUE
-/obj/machinery/computer/med_data/attack_ai(user as mob)
- return src.attack_hand(user)
+/obj/machinery/computer/med_data/attackby(obj/item/O, mob/user, params)
+ if(istype(O, /obj/item/weapon/card/id) && !scan)
+ usr.drop_item()
+ O.forceMove(src)
+ scan = O
+ ui_interact(user)
+ ..()
-
-/obj/machinery/computer/med_data/attack_hand(mob/user as mob)
+/obj/machinery/computer/med_data/attack_hand(mob/user)
if(..())
return
- var/dat
- if(src.temp)
- dat = text("[src.temp]
Clear Screen")
- else
- dat = text("Confirm Identity: []
", (src.scan ? text("[]", src.scan.name) : "----------"))
- if(src.authenticated)
- switch(src.screen)
- if(1.0)
- dat += {"
-Search Records
-
List Records
-
-
Virus Database
-
Medbot Tracking
-
-
Record Maintenance
-
{Log Out}
-"}
- if(2.0)
- dat += "Record List:
"
- if(!isnull(data_core.general))
- for(var/datum/data/record/R in sortRecord(data_core.general))
- dat += text("[]: []
", R, R.fields["id"], R.fields["name"])
- //Foreach goto(132)
- dat += "
Back"
- if(3.0)
- dat += "Records Maintenance
\nBackup To Disk
\nUpload From disk
\nDelete All Records
\n
\nBack"
- if(4.0)
- dat += "Medical Record
"
- if((istype(src.active1, /datum/data/record) && data_core.general.Find(src.active1)))
- dat += ""
- else
- dat += "General Record Lost!
"
- if((istype(src.active2, /datum/data/record) && data_core.medical.Find(src.active2)))
- dat += text("
\nMedical Data
\nBlood Type: []
\nDNA: []
\n
\nMinor Disabilities: []
\nDetails: []
\n
\nMajor Disabilities: []
\nDetails: []
\n
\nAllergies: []
\nDetails: []
\n
\nCurrent Diseases: [] (per disease info placed in log/comment section)
\nDetails: []
\n
\nImportant Notes:
\n\t[]
\n
\nComments/Log
", src.active2.fields["b_type"], src.active2.fields["b_dna"], src.active2.fields["mi_dis"], src.active2.fields["mi_dis_d"], src.active2.fields["ma_dis"], src.active2.fields["ma_dis_d"], src.active2.fields["alg"], src.active2.fields["alg_d"], src.active2.fields["cdi"], src.active2.fields["cdi_d"], src.active2.fields["notes"])
- var/counter = 1
- while(src.active2.fields[text("com_[]", counter)])
- dat += text("[]
Delete Entry
", src.active2.fields[text("com_[]", counter)], counter)
- counter++
- dat += "Add Entry
"
- dat += "Delete Record (Medical Only)
"
- else
- dat += "Medical Record Lost!
"
- dat += text("New Record
")
- dat += "\nPrint Record
\nBack
"
- if(5.0)
- dat += "Virus Database"
- for(var/Dt in typesof(/datum/disease/))
- var/datum/disease/Dis = new Dt(0)
- if(istype(Dis, /datum/disease/advance))
- continue // TODO (tm): Add advance diseases to the virus database which no one uses.
- if(!Dis.desc)
- continue
- dat += "
[Dis.name]"
- dat += "
Back"
- if(6.0)
- dat += "Medical Robot Monitor"
- dat += "Back"
- dat += "
Medical Robots:"
- var/bdat = null
- for(var/mob/living/simple_animal/bot/medbot/M in world)
+ if(is_away_level(z))
+ to_chat(user, "Unable to establish a connection: You're too far away from the station!")
+ return
+ add_fingerprint(user)
+ ui_interact(user)
- if(M.z != src.z) continue //only find medibots on the same z-level as the computer
- var/turf/bl = get_turf(M)
- if(bl) //if it can't find a turf for the medibot, then it probably shouldn't be showing up
- bdat += "[M.name] - \[[bl.x],[bl.y]\] - [M.on ? "Online" : "Offline"]
"
- if((!isnull(M.reagent_glass)) && M.use_beaker)
- bdat += "Reservoir: \[[M.reagent_glass.reagents.total_volume]/[M.reagent_glass.reagents.maximum_volume]\]
"
- else
- bdat += "Using Internal Synthesizer.
"
- if(!bdat)
- dat += "
None detected"
- else
- dat += "
[bdat]"
+/obj/machinery/computer/med_data/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
+ ui = nanomanager.try_update_ui(user, src, ui_key, ui, force_open)
+ if(!ui)
+ ui = new(user, src, ui_key, "med_data.tmpl", name, 800, 380)
+ ui.open()
+/obj/machinery/computer/med_data/ui_data(mob/user, ui_key = "main", datum/topic_state/state = default_state)
+ var/data[0]
+ data["temp"] = temp
+ data["scan"] = scan ? scan.name : null
+ data["authenticated"] = authenticated
+ data["screen"] = screen
+ if(authenticated)
+ switch(screen)
+ if(MED_DATA_R_LIST)
+ if(!isnull(data_core.general))
+ var/list/records = list()
+ data["records"] = records
+ for(var/datum/data/record/R in sortRecord(data_core.general))
+ records[++records.len] = list("ref" = "\ref[R]", "id" = R.fields["id"], "name" = R.fields["name"])
+ if(MED_DATA_RECORD)
+ var/list/general = list()
+ data["general"] = general
+ if(istype(active1, /datum/data/record) && data_core.general.Find(active1))
+ var/list/fields = list()
+ general["fields"] = fields
+ fields[++fields.len] = list("field" = "Name:", "value" = active1.fields["name"], "edit" = null)
+ fields[++fields.len] = list("field" = "ID:", "value" = active1.fields["id"], "edit" = null)
+ fields[++fields.len] = list("field" = "Sex:", "value" = active1.fields["sex"], "edit" = "sex")
+ fields[++fields.len] = list("field" = "Age:", "value" = active1.fields["age"], "edit" = "age")
+ fields[++fields.len] = list("field" = "Fingerprint:", "value" = active1.fields["fingerprint"], "edit" = "fingerprint")
+ fields[++fields.len] = list("field" = "Physical Status:", "value" = active1.fields["p_stat"], "edit" = "p_stat")
+ fields[++fields.len] = list("field" = "Mental Status:", "value" = active1.fields["m_stat"], "edit" = "m_stat")
+ var/list/photos = list()
+ general["photos"] = photos
+ photos[++photos.len] = list("photo" = active1.fields["photo-south"])
+ photos[++photos.len] = list("photo" = active1.fields["photo-west"])
+ general["has_photos"] = (active1.fields["photo-south"] || active1.fields["photo-west"] ? 1 : 0)
+ general["empty"] = 0
else
- else
- dat += "{Log In}"
- var/datum/browser/popup = new(user, "med_rec", name, 400, 400)
- popup.set_content(dat)
- popup.open(0)
- onclose(user, "med_rec")
- return
+ general["empty"] = 1
+
+ var/list/medical = list()
+ data["medical"] = medical
+ if(istype(active2, /datum/data/record) && data_core.medical.Find(active2))
+ var/list/fields = list()
+ medical["fields"] = fields
+ fields[++fields.len] = list("field" = "Blood Type:", "value" = active2.fields["b_type"], "edit" = "b_type", "line_break" = 0)
+ fields[++fields.len] = list("field" = "DNA:", "value" = active2.fields["b_dna"], "edit" = "b_dna", "line_break" = 1)
+ fields[++fields.len] = list("field" = "Minor Disabilities:", "value" = active2.fields["mi_dis"], "edit" = "mi_dis", "line_break" = 0)
+ fields[++fields.len] = list("field" = "Details:", "value" = active2.fields["mi_dis_d"], "edit" = "mi_dis_d", "line_break" = 1)
+ fields[++fields.len] = list("field" = "Major Disabilities:", "value" = active2.fields["ma_dis"], "edit" = "ma_dis", "line_break" = 0)
+ fields[++fields.len] = list("field" = "Details:", "value" = active2.fields["ma_dis_d"], "edit" = "ma_dis_d", "line_break" = 1)
+ fields[++fields.len] = list("field" = "Allergies:", "value" = active2.fields["alg"], "edit" = "alg", "line_break" = 0)
+ fields[++fields.len] = list("field" = "Details:", "value" = active2.fields["alg_d"], "edit" = "alg_d", "line_break" = 1)
+ fields[++fields.len] = list("field" = "Current Diseases:", "value" = active2.fields["cdi"], "edit" = "cdi", "line_break" = 0)
+ fields[++fields.len] = list("field" = "Details:", "value" = active2.fields["cdi_d"], "edit" = "cdi_d", "line_break" = 1)
+ fields[++fields.len] = list("field" = "Important Notes:", "value" = active2.fields["notes"], "edit" = "notes", "line_break" = 0)
+ if(!active2.fields["comments"] || !islist(active2.fields["comments"]))
+ active2.fields["comments"] = list()
+ medical["comments"] = active2.fields["comments"]
+ medical["empty"] = 0
+ else
+ medical["empty"] = 1
+ if(MED_DATA_V_DATA)
+ data["virus"] = list()
+ for(var/D in typesof(/datum/disease))
+ var/datum/disease/DS = new D(0)
+ if(istype(DS, /datum/disease/advance))
+ continue
+ if(!DS.desc)
+ continue
+ data["virus"] += list(list("name" = DS.name, "D" = D))
+ if(MED_DATA_MEDBOT)
+ data["medbots"] = list()
+ for(var/mob/living/simple_animal/bot/medbot/M in world)
+ if(M.z != z)
+ continue
+ var/turf/T = get_turf(M)
+ if(T)
+ var/medbot = list()
+ medbot["name"] = M.name
+ medbot["x"] = T.x
+ medbot["y"] = T.y
+ medbot["on"] = M.on
+ if(!isnull(M.reagent_glass) && M.use_beaker)
+ medbot["use_beaker"] = 1
+ medbot["total_volume"] = M.reagent_glass.reagents.total_volume
+ medbot["maximum_volume"] = M.reagent_glass.reagents.maximum_volume
+ else
+ medbot["use_beaker"] = 0
+ data["medbots"] += list(medbot)
+ return data
/obj/machinery/computer/med_data/Topic(href, href_list)
if(..())
return 1
- if(!( data_core.general.Find(src.active1) ))
- src.active1 = null
+ if(!data_core.general.Find(active1))
+ active1 = null
+ if(!data_core.medical.Find(active2))
+ active2 = null
- if(!( data_core.medical.Find(src.active2) ))
- src.active2 = null
+ if(href_list["temp"])
+ temp = null
- if((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
- usr.set_machine(src)
+ if(href_list["temp_action"])
+ if(href_list["temp_action"])
+ var/temp_href = splittext(href_list["temp_action"], "=")
+ switch(temp_href[1])
+ if("del_all2")
+ for(var/datum/data/record/R in data_core.medical)
+ qdel(R)
+ temp = list("text" = "All records deleted.", "buttons" = list())
+ if("p_stat")
+ if(active1)
+ switch(temp_href[2])
+ if("deceased")
+ active1.fields["p_stat"] = "*Deceased*"
+ if("ssd")
+ active1.fields["p_stat"] = "*SSD*"
+ if("active")
+ active1.fields["p_stat"] = "Active"
+ if("unfit")
+ active1.fields["p_stat"] = "Physically Unfit"
+ if("disabled")
+ active1.fields["p_stat"] = "Disabled"
+ if("m_stat")
+ if(active1)
+ switch(temp_href[2])
+ if("insane")
+ active1.fields["m_stat"] = "*Insane*"
+ if("unstable")
+ active1.fields["m_stat"] = "*Unstable*"
+ if("watch")
+ active1.fields["m_stat"] = "*Watch*"
+ if("stable")
+ active1.fields["m_stat"] = "Stable"
+ if("b_type")
+ if(active2)
+ switch(temp_href[2])
+ if("an")
+ active2.fields["b_type"] = "A-"
+ if("bn")
+ active2.fields["b_type"] = "B-"
+ if("abn")
+ active2.fields["b_type"] = "AB-"
+ if("on")
+ active2.fields["b_type"] = "O-"
+ if("ap")
+ active2.fields["b_type"] = "A+"
+ if("bp")
+ active2.fields["b_type"] = "B+"
+ if("abp")
+ active2.fields["b_type"] = "AB+"
+ if("op")
+ active2.fields["b_type"] = "O+"
+ if("del_r2")
+ if(active2)
+ qdel(active2)
+ active2 = null
- if(href_list["temp"])
- src.temp = null
+ if(href_list["scan"])
+ if(scan)
+ scan.forceMove(loc)
+ if(ishuman(usr) && !usr.get_active_hand())
+ usr.put_in_hands(scan)
+ scan = null
+ else
+ var/obj/item/I = usr.get_active_hand()
+ if(istype(I, /obj/item/weapon/card/id))
+ usr.drop_item()
+ I.forceMove(src)
+ scan = I
- if(href_list["scan"])
- if(src.scan)
+ if(href_list["login"])
+ if(isAI(usr))
+ authenticated = usr.name
+ rank = "AI"
+ else if(isrobot(usr))
+ authenticated = usr.name
+ var/mob/living/silicon/robot/R = usr
+ rank = "[R.modtype] [R.braintype]"
+ else if(istype(scan, /obj/item/weapon/card/id))
+ if(check_access(scan))
+ authenticated = scan.registered_name
+ rank = scan.assignment
- if(ishuman(usr))
- scan.loc = usr.loc
+ if(authenticated)
+ active1 = null
+ active2 = null
+ screen = MED_DATA_MAIN
- if(!usr.get_active_hand())
- usr.put_in_hands(scan)
+ if(authenticated)
+ var/incapable = (usr.stat || usr.restrained() || (!in_range(src, usr) && !issilicon(usr)))
+ if(href_list["logout"])
+ authenticated = null
+ screen = null
+ active1 = null
+ active2 = null
- scan = null
+ if(href_list["screen"])
+ screen = text2num(href_list["screen"])
+ if(screen < 1)
+ screen = MED_DATA_MAIN
- else
- src.scan.loc = src.loc
- src.scan = null
+ active1 = null
+ active2 = null
- else
- var/obj/item/I = usr.get_active_hand()
- if(istype(I, /obj/item/weapon/card/id))
- usr.drop_item()
- I.loc = src
- src.scan = I
+ if(href_list["vir"])
+ var/type = href_list["vir"]
+ var/datum/disease/D = new type(0)
+ var/afs = ""
+ for(var/mob/M in D.viable_mobtypes)
+ afs += "[initial(M.name)];"
+ var/severity = D.severity
+ switch(severity)
+ if("Harmful", "Minor")
+ severity = "[severity]"
+ if("Medium")
+ severity = "[severity]"
+ if("Dangerous!")
+ severity = "[severity]"
+ if("BIOHAZARD THREAT!")
+ severity = "[severity]
"
+ setTemp({"Name: [D.name]
+
Number of stages: [D.max_stages]
+
Spread: [D.spread_text] Transmission
+
Possible Cure: [(D.cure_text||"none")]
+
Affected Lifeforms:[afs]
+
Notes: [D.desc]
+
Severity: [severity]"})
+ qdel(D)
- else if(href_list["logout"])
- src.authenticated = null
- src.screen = null
- src.active1 = null
- src.active2 = null
+ if(href_list["del_all"])
+ var/list/buttons = list()
+ buttons[++buttons.len] = list("name" = "Yes", "icon" = "check", "href" = "del_all2=1")
+ buttons[++buttons.len] = list("name" = "No", "icon" = "times", "href" = null)
+ setTemp("Are you sure you wish to delete all records?
", buttons)
- else if(href_list["login"])
-
- if(istype(usr, /mob/living/silicon/ai))
- src.active1 = null
- src.active2 = null
- src.authenticated = usr.name
- src.rank = "AI"
- src.screen = 1
-
- else if(istype(usr, /mob/living/silicon/robot))
- src.active1 = null
- src.active2 = null
- src.authenticated = usr.name
- var/mob/living/silicon/robot/R = usr
- src.rank = "[R.modtype] [R.braintype]"
- src.screen = 1
-
- else if(istype(src.scan, /obj/item/weapon/card/id))
- src.active1 = null
- src.active2 = null
-
- if(src.check_access(src.scan))
- src.authenticated = src.scan.registered_name
- src.rank = src.scan.assignment
- src.screen = 1
-
- if(src.authenticated)
-
- if(href_list["screen"])
- src.screen = text2num(href_list["screen"])
- if(src.screen < 1)
- src.screen = 1
-
- src.active1 = null
- src.active2 = null
-
- if(href_list["vir"])
- var/type = href_list["vir"]
- var/datum/disease/Dis = new type(0)
- var/AfS = ""
- for(var/mob/M in Dis.viable_mobtypes)
- AfS += " [initial(M.name)];"
- src.temp = {"Name: [Dis.name]
-
Number of stages: [Dis.max_stages]
-
Spread: [Dis.spread_text] Transmission
-
Possible Cure: [(Dis.cure_text||"none")]
-
Affected Lifeforms:[AfS]
-
-
Notes: [Dis.desc]
-
-
Severity: [Dis.severity]"}
-
- if(href_list["del_all"])
- src.temp = "Are you sure you wish to delete all records?
\n\tYes
\n\tNo
"
-
- if(href_list["del_all2"])
- for(var/datum/data/record/R in data_core.medical)
- //R = null
- qdel(R)
- //Foreach goto(494)
- src.temp = "All records deleted."
-
- if(href_list["field"])
- var/a1 = src.active1
- var/a2 = src.active2
- switch(href_list["field"])
- if("fingerprint")
- if(istype(src.active1, /datum/data/record))
- var/t1 = copytext(trim(sanitize(input("Please input fingerprint hash:", "Med. records", src.active1.fields["fingerprint"], null) as text)),1,MAX_MESSAGE_LEN)
- if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1))
- return
- src.active1.fields["fingerprint"] = t1
- if("sex")
- if(istype(src.active1, /datum/data/record))
- if(src.active1.fields["sex"] == "Male")
- src.active1.fields["sex"] = "Female"
- else
- src.active1.fields["sex"] = "Male"
- if("age")
- if(istype(src.active1, /datum/data/record))
- var/t1 = input("Please input age:", "Med. records", src.active1.fields["age"], null) as num
- if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1))
- return
- src.active1.fields["age"] = t1
- if("mi_dis")
- if(istype(src.active2, /datum/data/record))
- var/t1 = copytext(trim(sanitize(input("Please input minor disabilities list:", "Med. records", src.active2.fields["mi_dis"], null) as text)),1,MAX_MESSAGE_LEN)
- if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
- return
- src.active2.fields["mi_dis"] = t1
- if("mi_dis_d")
- if(istype(src.active2, /datum/data/record))
- var/t1 = copytext(trim(sanitize(input("Please summarize minor dis.:", "Med. records", src.active2.fields["mi_dis_d"], null) as message)),1,MAX_MESSAGE_LEN)
- if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
- return
- src.active2.fields["mi_dis_d"] = t1
- if("ma_dis")
- if(istype(src.active2, /datum/data/record))
- var/t1 = copytext(trim(sanitize(input("Please input major diabilities list:", "Med. records", src.active2.fields["ma_dis"], null) as text)),1,MAX_MESSAGE_LEN)
- if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
- return
- src.active2.fields["ma_dis"] = t1
- if("ma_dis_d")
- if(istype(src.active2, /datum/data/record))
- var/t1 = copytext(trim(sanitize(input("Please summarize major dis.:", "Med. records", src.active2.fields["ma_dis_d"], null) as message)),1,MAX_MESSAGE_LEN)
- if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
- return
- src.active2.fields["ma_dis_d"] = t1
- if("alg")
- if(istype(src.active2, /datum/data/record))
- var/t1 = copytext(trim(sanitize(input("Please state allergies:", "Med. records", src.active2.fields["alg"], null) as text)),1,MAX_MESSAGE_LEN)
- if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
- return
- src.active2.fields["alg"] = t1
- if("alg_d")
- if(istype(src.active2, /datum/data/record))
- var/t1 = copytext(trim(sanitize(input("Please summarize allergies:", "Med. records", src.active2.fields["alg_d"], null) as message)),1,MAX_MESSAGE_LEN)
- if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
- return
- src.active2.fields["alg_d"] = t1
- if("cdi")
- if(istype(src.active2, /datum/data/record))
- var/t1 = copytext(trim(sanitize(input("Please state diseases:", "Med. records", src.active2.fields["cdi"], null) as text)),1,MAX_MESSAGE_LEN)
- if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
- return
- src.active2.fields["cdi"] = t1
- if("cdi_d")
- if(istype(src.active2, /datum/data/record))
- var/t1 = copytext(trim(sanitize(input("Please summarize diseases:", "Med. records", src.active2.fields["cdi_d"], null) as message)),1,MAX_MESSAGE_LEN)
- if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
- return
- src.active2.fields["cdi_d"] = t1
- if("notes")
- if(istype(src.active2, /datum/data/record))
- var/t1 = copytext(html_encode(trim(input("Please summarize notes:", "Med. records", html_decode(src.active2.fields["notes"]), null) as message)),1,MAX_MESSAGE_LEN)
- if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
- return
- src.active2.fields["notes"] = t1
- if("p_stat")
- if(istype(src.active1, /datum/data/record))
- src.temp = "Physical Condition:
\n\t*Deceased*
\n\t*SSD*
\n\tActive
\n\tPhysically Unfit
\n\tDisabled
"
- if("m_stat")
- if(istype(src.active1, /datum/data/record))
- src.temp = "Mental Condition:
\n\t*Insane*
\n\t*Unstable*
\n\t*Watch*
\n\tStable
"
- if("b_type")
- if(istype(src.active2, /datum/data/record))
- src.temp = "Blood Type:
\n\tA- A+
\n\tB- B+
\n\tAB- AB+
\n\tO- O+
"
- if("b_dna")
- if(istype(src.active1, /datum/data/record))
- var/t1 = copytext(trim(sanitize(input("Please input DNA hash:", "Med. records", src.active1.fields["dna"], null) as text)),1,MAX_MESSAGE_LEN)
- if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1))
- return
- src.active1.fields["dna"] = t1
- if("vir_name")
- var/datum/data/record/v = locate(href_list["edit_vir"])
- if(v)
- var/t1 = copytext(trim(sanitize(input("Please input pathogen name:", "VirusDB", v.fields["name"], null) as text)),1,MAX_MESSAGE_LEN)
- if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1))
- return
- v.fields["name"] = t1
- if("vir_desc")
- var/datum/data/record/v = locate(href_list["edit_vir"])
- if(v)
- var/t1 = copytext(trim(sanitize(input("Please input information about pathogen:", "VirusDB", v.fields["description"], null) as message)),1,MAX_MESSAGE_LEN)
- if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1))
- return
- v.fields["description"] = t1
- else
-
- if(href_list["p_stat"])
- if(src.active1)
- switch(href_list["p_stat"])
- if("deceased")
- src.active1.fields["p_stat"] = "*Deceased*"
- if("ssd")
- src.active1.fields["p_stat"] = "*SSD*"
- if("active")
- src.active1.fields["p_stat"] = "Active"
- if("unfit")
- src.active1.fields["p_stat"] = "Physically Unfit"
- if("disabled")
- src.active1.fields["p_stat"] = "Disabled"
-
- if(href_list["m_stat"])
- if(src.active1)
- switch(href_list["m_stat"])
- if("insane")
- src.active1.fields["m_stat"] = "*Insane*"
- if("unstable")
- src.active1.fields["m_stat"] = "*Unstable*"
- if("watch")
- src.active1.fields["m_stat"] = "*Watch*"
- if("stable")
- src.active1.fields["m_stat"] = "Stable"
-
-
- if(href_list["b_type"])
- if(src.active2)
- switch(href_list["b_type"])
- if("an")
- src.active2.fields["b_type"] = "A-"
- if("bn")
- src.active2.fields["b_type"] = "B-"
- if("abn")
- src.active2.fields["b_type"] = "AB-"
- if("on")
- src.active2.fields["b_type"] = "O-"
- if("ap")
- src.active2.fields["b_type"] = "A+"
- if("bp")
- src.active2.fields["b_type"] = "B+"
- if("abp")
- src.active2.fields["b_type"] = "AB+"
- if("op")
- src.active2.fields["b_type"] = "O+"
-
-
- if(href_list["del_r"])
- if(src.active2)
- src.temp = "Are you sure you wish to delete the record (Medical Portion Only)?
\n\tYes
\n\tNo
"
-
- if(href_list["del_r2"])
- if(src.active2)
- //src.active2 = null
- qdel(src.active2)
-
- if(href_list["d_rec"])
- var/datum/data/record/R = locate(href_list["d_rec"])
- var/datum/data/record/M = locate(href_list["d_rec"])
- if(!( data_core.general.Find(R) ))
- src.temp = "Record Not Found!"
- return
- for(var/datum/data/record/E in data_core.medical)
- if((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"]))
- M = E
- else
- //Foreach continue //goto(2540)
- src.active1 = R
- src.active2 = M
- src.screen = 4
-
- if(href_list["new"])
- if((istype(src.active1, /datum/data/record) && !( istype(src.active2, /datum/data/record) )))
- var/datum/data/record/R = new /datum/data/record( )
- R.fields["name"] = src.active1.fields["name"]
- R.fields["id"] = src.active1.fields["id"]
- R.name = text("Medical Record #[]", R.fields["id"])
- R.fields["b_type"] = "Unknown"
- R.fields["b_dna"] = "Unknown"
- R.fields["mi_dis"] = "None"
- R.fields["mi_dis_d"] = "No minor disabilities have been declared."
- R.fields["ma_dis"] = "None"
- R.fields["ma_dis_d"] = "No major disabilities have been diagnosed."
- R.fields["alg"] = "None"
- R.fields["alg_d"] = "No allergies have been detected in this patient."
- R.fields["cdi"] = "None"
- R.fields["cdi_d"] = "No diseases have been diagnosed at the moment."
- R.fields["notes"] = "No notes."
- data_core.medical += R
- src.active2 = R
- src.screen = 4
-
- if(href_list["add_c"])
- if(!( istype(src.active2, /datum/data/record) ))
- return
- var/a2 = src.active2
- var/t1 = copytext(trim(sanitize(input("Add Comment:", "Med. records", null, null) as message)),1,MAX_MESSAGE_LEN)
- if((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2))
- return
- var/counter = 1
- while(src.active2.fields[text("com_[]", counter)])
- counter++
- src.active2.fields[text("com_[counter]")] = text("Made by [authenticated] ([rank]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")]
[t1]")
-
- if(href_list["del_c"])
- if((istype(src.active2, /datum/data/record) && src.active2.fields[text("com_[]", href_list["del_c"])]))
- src.active2.fields[text("com_[]", href_list["del_c"])] = "Deleted"
-
- if(href_list["search"])
- var/t1 = input("Search String: (Name, DNA, or ID)", "Med. records", null, null) as text
- if((!( t1 ) || usr.stat || !( src.authenticated ) || usr.restrained() || ((!in_range(src, usr)) && (!istype(usr, /mob/living/silicon)))))
- return
- src.active1 = null
- src.active2 = null
- t1 = lowertext(t1)
- for(var/datum/data/record/R in data_core.medical)
- if((lowertext(R.fields["name"]) == t1 || t1 == lowertext(R.fields["id"]) || t1 == lowertext(R.fields["b_dna"])))
- src.active2 = R
- else
- //Foreach continue //goto(3229)
- if(!( src.active2 ))
- src.temp = text("Could not locate record [].", t1)
- else
- for(var/datum/data/record/E in data_core.general)
- if((E.fields["name"] == src.active2.fields["name"] || E.fields["id"] == src.active2.fields["id"]))
- src.active1 = E
+ if(href_list["field"])
+ if(incapable)
+ return 1
+ var/a1 = active1
+ var/a2 = active2
+ switch(href_list["field"])
+ if("fingerprint")
+ if(istype(active1, /datum/data/record))
+ var/t1 = copytext(trim(sanitize(input("Please input fingerprint hash:", "Med. records", active1.fields["fingerprint"], null) as text)), 1, MAX_MESSAGE_LEN)
+ if(!t1 || incapable || active1 != a1)
+ return 1
+ active1.fields["fingerprint"] = t1
+ if("sex")
+ if(istype(active1, /datum/data/record))
+ if(active1.fields["sex"] == "Male")
+ active1.fields["sex"] = "Female"
else
- //Foreach continue //goto(3334)
- src.screen = 4
+ active1.fields["sex"] = "Male"
+ if("age")
+ if(istype(active1, /datum/data/record))
+ var/t1 = input("Please input age:", "Med. records", active1.fields["age"], null) as num
+ if(!t1 || incapable || active1 != a1)
+ return 1
+ active1.fields["age"] = t1
+ if("mi_dis")
+ if(istype(active2, /datum/data/record))
+ var/t1 = copytext(trim(sanitize(input("Please input minor disabilities list:", "Med. records", active2.fields["mi_dis"], null) as text)), 1, MAX_MESSAGE_LEN)
+ if(!t1 || incapable || active2 != a2)
+ return 1
+ active2.fields["mi_dis"] = t1
+ if("mi_dis_d")
+ if(istype(active2, /datum/data/record))
+ var/t1 = copytext(trim(sanitize(input("Please summarize minor dis.:", "Med. records", active2.fields["mi_dis_d"], null) as message)), 1, MAX_MESSAGE_LEN)
+ if(!t1 || incapable || active2 != a2)
+ return 1
+ active2.fields["mi_dis_d"] = t1
+ if("ma_dis")
+ if(istype(active2, /datum/data/record))
+ var/t1 = copytext(trim(sanitize(input("Please input major diabilities list:", "Med. records", active2.fields["ma_dis"], null) as text)), 1, MAX_MESSAGE_LEN)
+ if(!t1 || incapable || active2 != a2)
+ return 1
+ active2.fields["ma_dis"] = t1
+ if("ma_dis_d")
+ if(istype(active2, /datum/data/record))
+ var/t1 = copytext(trim(sanitize(input("Please summarize major dis.:", "Med. records", active2.fields["ma_dis_d"], null) as message)), 1, MAX_MESSAGE_LEN)
+ if(!t1 || incapable || active2 != a2)
+ return 1
+ active2.fields["ma_dis_d"] = t1
+ if("alg")
+ if(istype(active2, /datum/data/record))
+ var/t1 = copytext(trim(sanitize(input("Please state allergies:", "Med. records", active2.fields["alg"], null) as text)), 1, MAX_MESSAGE_LEN)
+ if(!t1 || incapable || active2 != a2)
+ return 1
+ active2.fields["alg"] = t1
+ if("alg_d")
+ if(istype(active2, /datum/data/record))
+ var/t1 = copytext(trim(sanitize(input("Please summarize allergies:", "Med. records", active2.fields["alg_d"], null) as message)), 1, MAX_MESSAGE_LEN)
+ if(!t1 || incapable || active2 != a2)
+ return 1
+ active2.fields["alg_d"] = t1
+ if("cdi")
+ if(istype(active2, /datum/data/record))
+ var/t1 = copytext(trim(sanitize(input("Please state diseases:", "Med. records", active2.fields["cdi"], null) as text)), 1, MAX_MESSAGE_LEN)
+ if(!t1 || incapable || active2 != a2)
+ return 1
+ active2.fields["cdi"] = t1
+ if("cdi_d")
+ if(istype(active2, /datum/data/record))
+ var/t1 = copytext(trim(sanitize(input("Please summarize diseases:", "Med. records", active2.fields["cdi_d"], null) as message)), 1, MAX_MESSAGE_LEN)
+ if(!t1 || incapable || active2 != a2)
+ return 1
+ active2.fields["cdi_d"] = t1
+ if("notes")
+ if(istype(active2, /datum/data/record))
+ var/t1 = copytext(html_encode(trim(input("Please summarize notes:", "Med. records", html_decode(active2.fields["notes"]), null) as message)), 1, MAX_MESSAGE_LEN)
+ if(!t1 || incapable || active2 != a2)
+ return 1
+ active2.fields["notes"] = t1
+ if("p_stat")
+ if(istype(active1, /datum/data/record))
+ var/list/buttons = list()
+ buttons[++buttons.len] = list("name" = "*Deceased*", "icon" = "stethoscope", "href" = "p_stat=deceased", "status" = (active1.fields["p_stat"] == "*Deceased*" ? "selected" : null))
+ buttons[++buttons.len] = list("name" = "*SSD*", "icon" = "stethoscope", "href" = "p_stat=ssd", "status" = (active1.fields["p_stat"] == "*SSD*" ? "selected" : null))
+ buttons[++buttons.len] = list("name" = "Active", "icon" = "stethoscope", "href" = "p_stat=active", "status" = (active1.fields["p_stat"] == "Active" ? "selected" : null))
+ buttons[++buttons.len] = list("name" = "Physically Unfit", "icon" = "stethoscope", "href" = "p_stat=unfit", "status" = (active1.fields["p_stat"] == "Physically Unfit" ? "selected" : null))
+ buttons[++buttons.len] = list("name" = "Disabled", "icon" = "stethoscope", "href" = "p_stat=disabled", "status" = (active1.fields["p_stat"] == "Disabled" ? "selected" : null))
+ setTemp("Physical Condition
", buttons)
+ if("m_stat")
+ if(istype(active1, /datum/data/record))
+ var/list/buttons = list()
+ buttons[++buttons.len] = list("name" = "*Insane*", "icon" = "stethoscope", "href" = "m_stat=insane", "status" = (active1.fields["m_stat"] == "*Insane*" ? "selected" : null))
+ buttons[++buttons.len] = list("name" = "*Unstable*", "icon" = "stethoscope", "href" = "m_stat=unstable", "status" = (active1.fields["m_stat"] == "*Unstable*" ? "selected" : null))
+ buttons[++buttons.len] = list("name" = "*Watch*", "icon" = "stethoscope", "href" = "m_stat=watch", "status" = (active1.fields["m_stat"] == "*Watch*" ? "selected" : null))
+ buttons[++buttons.len] = list("name" = "Stable", "icon" = "stethoscope", "href" = "m_stat=stable", "status" = (active1.fields["m_stat"] == "Stable" ? "selected" : null))
+ setTemp("Mental Condition
", buttons)
+ if("b_type")
+ if(istype(active2, /datum/data/record))
+ var/list/buttons = list()
+ buttons[++buttons.len] = list("name" = "A-", "icon" = "tint", "href" = "b_type=an", "status" = (active2.fields["b_type"] == "A-" ? "selected" : null))
+ buttons[++buttons.len] = list("name" = "A+", "icon" = "tint", "href" = "b_type=ap", "status" = (active2.fields["b_type"] == "A+" ? "selected" : null))
+ buttons[++buttons.len] = list("name" = "B-", "icon" = "tint", "href" = "b_type=bn", "status" = (active2.fields["b_type"] == "B-" ? "selected" : null))
+ buttons[++buttons.len] = list("name" = "B+", "icon" = "tint", "href" = "b_type=bp", "status" = (active2.fields["b_type"] == "B+" ? "selected" : null))
+ buttons[++buttons.len] = list("name" = "AB-", "icon" = "tint", "href" = "b_type=abn", "status" = (active2.fields["b_type"] == "AB-" ? "selected" : null))
+ buttons[++buttons.len] = list("name" = "AB+", "icon" = "tint", "href" = "b_type=abp", "status" = (active2.fields["b_type"] == "AB+" ? "selected" : null))
+ buttons[++buttons.len] = list("name" = "O-", "icon" = "tint", "href" = "b_type=on", "status" = (active2.fields["b_type"] == "O-" ? "selected" : null))
+ buttons[++buttons.len] = list("name" = "O+", "icon" = "tint", "href" = "b_type=op", "status" = (active2.fields["b_type"] == "O+" ? "selected" : null))
+ setTemp("Blood Type
", buttons)
+ if("b_dna")
+ if(istype(active2, /datum/data/record))
+ var/t1 = copytext(trim(sanitize(input("Please input DNA hash:", "Med. records", active2.fields["b_dna"], null) as text)), 1, MAX_MESSAGE_LEN)
+ if(!t1 || incapable || active2 != a2)
+ return 1
+ active2.fields["b_dna"] = t1
+ if("vir_name")
+ var/datum/data/record/v = locate(href_list["edit_vir"])
+ if(v)
+ var/t1 = copytext(trim(sanitize(input("Please input pathogen name:", "VirusDB", v.fields["name"], null) as text)), 1, MAX_MESSAGE_LEN)
+ if(!t1 || incapable || active1 != a1)
+ return 1
+ v.fields["name"] = t1
+ if("vir_desc")
+ var/datum/data/record/v = locate(href_list["edit_vir"])
+ if(v)
+ var/t1 = copytext(trim(sanitize(input("Please input information about pathogen:", "VirusDB", v.fields["description"], null) as message)), 1, MAX_MESSAGE_LEN)
+ if(!t1 || incapable || active1 != a1)
+ return 1
+ v.fields["description"] = t1
- if(href_list["print_p"])
- if(!( src.printing ))
- src.printing = 1
- playsound(loc, 'sound/goonstation/machines/printer_dotmatrix.ogg', 50, 1)
- sleep(50)
- var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( src.loc )
- P.info = "Medical Record
"
- if((istype(src.active1, /datum/data/record) && data_core.general.Find(src.active1)))
- P.info += text("Name: [] ID: []
\nSex: []
\nAge: []
\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", src.active1.fields["name"], src.active1.fields["id"], src.active1.fields["sex"], src.active1.fields["age"], src.active1.fields["fingerprint"], src.active1.fields["p_stat"], src.active1.fields["m_stat"])
- else
- P.info += "General Record Lost!
"
- if((istype(src.active2, /datum/data/record) && data_core.medical.Find(src.active2)))
- P.info += text("
\nMedical Data
\nBlood Type: []
\nDNA: []
\n
\nMinor Disabilities: []
\nDetails: []
\n
\nMajor Disabilities: []
\nDetails: []
\n
\nAllergies: []
\nDetails: []
\n
\nCurrent Diseases: [] (per disease info placed in log/comment section)
\nDetails: []
\n
\nImportant Notes:
\n\t[]
\n
\nComments/Log
", src.active2.fields["b_type"], src.active2.fields["b_dna"], src.active2.fields["mi_dis"], src.active2.fields["mi_dis_d"], src.active2.fields["ma_dis"], src.active2.fields["ma_dis_d"], src.active2.fields["alg"], src.active2.fields["alg_d"], src.active2.fields["cdi"], src.active2.fields["cdi_d"], src.active2.fields["notes"])
- var/counter = 1
- while(src.active2.fields[text("com_[]", counter)])
- P.info += text("[]
", src.active2.fields[text("com_[]", counter)])
- counter++
- else
- P.info += "Medical Record Lost!
"
- P.info += ""
- P.name = "paper- 'Medical Record'"
- src.printing = null
+ if(href_list["del_r"])
+ if(active2)
+ var/list/buttons = list()
+ buttons[++buttons.len] = list("name" = "Yes", "icon" = "check", "href" = "del_r2=1", "status" = null)
+ buttons[++buttons.len] = list("name" = "No", "icon" = "times", "href" = null, "status" = null)
+ setTemp("Are you sure you wish to delete the record (Medical Portion Only)?
", buttons)
- src.add_fingerprint(usr)
- src.updateUsrDialog()
- return
+ if(href_list["d_rec"])
+ var/datum/data/record/R = locate(href_list["d_rec"])
+ var/datum/data/record/M = locate(href_list["d_rec"])
+ if(!data_core.general.Find(R))
+ temp = list("text" = "Record not found!
", "buttons" = list())
+ return 1
+ for(var/datum/data/record/E in data_core.medical)
+ if(E.fields["name"] == R.fields["name"] && E.fields["id"] == R.fields["id"])
+ M = E
+ active1 = R
+ active2 = M
+ screen = MED_DATA_RECORD
+
+ if(href_list["new"])
+ if(istype(active1, /datum/data/record) && !istype(active2, /datum/data/record))
+ var/datum/data/record/R = new /datum/data/record()
+ R.fields["name"] = active1.fields["name"]
+ R.fields["id"] = active1.fields["id"]
+ R.name = "Medical Record #[R.fields["id"]]"
+ R.fields["b_type"] = "Unknown"
+ R.fields["b_dna"] = "Unknown"
+ R.fields["mi_dis"] = "None"
+ R.fields["mi_dis_d"] = "No minor disabilities have been declared."
+ R.fields["ma_dis"] = "None"
+ R.fields["ma_dis_d"] = "No major disabilities have been diagnosed."
+ R.fields["alg"] = "None"
+ R.fields["alg_d"] = "No allergies have been detected in this patient."
+ R.fields["cdi"] = "None"
+ R.fields["cdi_d"] = "No diseases have been diagnosed at the moment."
+ R.fields["notes"] = "No notes."
+ data_core.medical += R
+ active2 = R
+ screen = MED_DATA_RECORD
+
+ if(href_list["add_c"])
+ if(!istype(active2, /datum/data/record))
+ return 1
+ var/a2 = active2
+ var/t1 = copytext(trim(sanitize(input("Add Comment:", "Med. records", null, null) as message)), 1, MAX_MESSAGE_LEN)
+ if(!t1 || incapable || active2 != a2)
+ return 1
+ active2.fields["comments"] += "Made by [authenticated] ([rank]) on [current_date_string] [worldtime2text()]
[t1]"
+
+ if(href_list["del_c"])
+ var/index = min(max(text2num(href_list["del_c"]) + 1, 1), length(active2.fields["comments"]))
+ if(istype(active2, /datum/data/record) && active2.fields["comments"][index])
+ active2.fields["comments"] -= active2.fields["comments"][index]
+
+ if(href_list["search"])
+ var/t1 = input("Search String: (Name, DNA, or ID)", "Med. records", null, null) as text
+ if(!t1 || incapable)
+ return 1
+ active1 = null
+ active2 = null
+ t1 = lowertext(t1)
+ for(var/datum/data/record/R in data_core.medical)
+ if(t1 == lowertext(R.fields["name"]) || t1 == lowertext(R.fields["id"]) || t1 == lowertext(R.fields["b_dna"]))
+ active2 = R
+ if(!active2)
+ temp = list("text" = "Could not locate record [t1].
")
+ else
+ for(var/datum/data/record/E in data_core.general)
+ if(E.fields["name"] == active2.fields["name"] && E.fields["id"] == active2.fields["id"])
+ active1 = E
+ screen = MED_DATA_RECORD
+
+ if(href_list["print_p"])
+ if(!printing)
+ printing = 1
+ playsound(loc, 'sound/goonstation/machines/printer_dotmatrix.ogg', 50, 1)
+ sleep(50)
+ var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(loc)
+ P.info = "Medical Record
"
+ if(istype(active1, /datum/data/record) && data_core.general.Find(active1))
+ P.info += {"Name: [active1.fields["name"]] ID: [active1.fields["id"]]
+
\nSex: [active1.fields["sex"]]
+
\nAge: [active1.fields["age"]]
+
\nFingerprint: [active1.fields["fingerprint"]]
+
\nPhysical Status: [active1.fields["p_stat"]]
+
\nMental Status: [active1.fields["m_stat"]]
"}
+ else
+ P.info += "General Record Lost!
"
+ if(istype(active2, /datum/data/record) && data_core.medical.Find(active2))
+ P.info += {"
\nMedical Data
+
\nBlood Type: [active2.fields["b_type"]]
+
\nDNA: [active2.fields["b_dna"]]
\n
+
\nMinor Disabilities: [active2.fields["mi_dis"]]
+
\nDetails: [active2.fields["mi_dis_d"]]
\n
+
\nMajor Disabilities: [active2.fields["ma_dis"]]
+
\nDetails: [active2.fields["ma_dis_d"]]
\n
+
\nAllergies: [active2.fields["alg"]]
+
\nDetails: [active2.fields["alg_d"]]
\n
+
\nCurrent Diseases: [active2.fields["cdi"]] (per disease info placed in log/comment section)
+
\nDetails: [active2.fields["cdi_d"]]
\n
+
\nImportant Notes:
+
\n\t[active2.fields["notes"]]
\n
+
\n
+ Comments/Log
"}
+ for(var/c in active2.fields["comments"])
+ P.info += "[c]
"
+ else
+ P.info += "Medical Record Lost!
"
+ P.info += ""
+ P.name = "paper- 'Medical Record'"
+ printing = 0
+ return 1
+
+/obj/machinery/computer/med_data/proc/setTemp(text, list/buttons = list())
+ temp = list("text" = text, "buttons" = buttons, "has_buttons" = buttons.len > 0)
/obj/machinery/computer/med_data/emp_act(severity)
if(stat & (BROKEN|NOPOWER))
- ..(severity)
- return
+ return ..(severity)
for(var/datum/data/record/R in data_core.medical)
if(prob(10/severity))
@@ -500,7 +535,7 @@
if(1)
R.fields["name"] = "[pick(pick(first_names_male), pick(first_names_female))] [pick(last_names)]"
if(2)
- R.fields["sex"] = pick("Male", "Female")
+ R.fields["sex"] = pick("Male", "Female")
if(3)
R.fields["age"] = rand(5, 85)
if(4)
@@ -525,3 +560,10 @@
icon_keyboard = "laptop_key"
icon_screen = "medlaptop"
density = 0
+
+#undef MED_DATA_MAIN
+#undef MED_DATA_R_LIST
+#undef MED_DATA_MAINT
+#undef MED_DATA_RECORD
+#undef MED_DATA_V_DATA
+#undef MED_DATA_MEDBOT
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 7e54aebf396..c3cec37da1a 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -1049,12 +1049,11 @@
if(R.fields["id"] == E.fields["id"])
if(hasHUD(usr,"medical"))
read = 1
- var/counter = 1
- while(R.fields[text("com_[]", counter)])
- to_chat(usr, text("[]", R.fields[text("com_[]", counter)]))
- counter++
- if(counter == 1)
- to_chat(usr, "No comment found")
+ if(length(R.fields["comments"]))
+ for(var/c in R.fields["comments"])
+ to_chat(usr, c)
+ else
+ to_chat(usr, "No comment found")
to_chat(usr, "\[Add comment\]")
if(!read)
@@ -1076,18 +1075,15 @@
for(var/datum/data/record/R in data_core.medical)
if(R.fields["id"] == E.fields["id"])
if(hasHUD(usr,"medical"))
- var/t1 = sanitize(copytext(input("Add Comment:", "Med. records", null, null) as message,1,MAX_MESSAGE_LEN))
- if( !(t1) || usr.stat || usr.restrained() || !(hasHUD(usr,"medical")) )
+ var/t1 = copytext(trim(sanitize(input("Add Comment:", "Med. records", null, null) as message)), 1, MAX_MESSAGE_LEN)
+ if(!t1 || usr.stat || usr.restrained() || !hasHUD(usr, "medical"))
return
- var/counter = 1
- while(R.fields[text("com_[]", counter)])
- counter++
- if(istype(usr,/mob/living/carbon/human))
+ if(ishuman(usr))
var/mob/living/carbon/human/U = usr
- R.fields[text("com_[counter]")] = text("Made by [U.get_authentification_name()] ([U.get_assignment()]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [game_year]
[t1]")
- if(istype(usr,/mob/living/silicon/robot))
+ R.fields["comments"] += "Made by [U.get_authentification_name()] ([U.get_assignment()]) on [current_date_string] [worldtime2text()]
[t1]"
+ if(isrobot(usr))
var/mob/living/silicon/robot/U = usr
- R.fields[text("com_[counter]")] = text("Made by [U.name] ([U.modtype] [U.braintype]) on [time2text(world.realtime, "DDD MMM DD hh:mm:ss")], [game_year]
[t1]")
+ R.fields["comments"] += "Made by [U.name] ([U.modtype] [U.braintype]) on [current_date_string] [worldtime2text()]
[t1]"
if(href_list["lookitem"])
var/obj/item/I = locate(href_list["lookitem"])
diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm
index 0fe3a6e75a4..7f821f3779e 100644
--- a/code/modules/paperwork/filingcabinet.dm
+++ b/code/modules/paperwork/filingcabinet.dm
@@ -146,17 +146,15 @@
for(var/datum/data/record/G in data_core.general)
var/datum/data/record/M
for(var/datum/data/record/R in data_core.medical)
- if((R.fields["name"] == G.fields["name"] || R.fields["id"] == G.fields["id"]))
+ if(R.fields["name"] == G.fields["name"] || R.fields["id"] == G.fields["id"])
M = R
break
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(src)
P.info = "Medical Record
"
P.info += "Name: [G.fields["name"]] ID: [G.fields["id"]]
\nSex: [G.fields["sex"]]
\nAge: [G.fields["age"]]
\nFingerprint: [G.fields["fingerprint"]]
\nPhysical Status: [G.fields["p_stat"]]
\nMental Status: [G.fields["m_stat"]]
"
P.info += "
\nMedical Data
\nBlood Type: [M.fields["b_type"]]
\nDNA: [M.fields["b_dna"]]
\n
\nMinor Disabilities: [M.fields["mi_dis"]]
\nDetails: [M.fields["mi_dis_d"]]
\n
\nMajor Disabilities: [M.fields["ma_dis"]]
\nDetails: [M.fields["ma_dis_d"]]
\n
\nAllergies: [M.fields["alg"]]
\nDetails: [M.fields["alg_d"]]
\n
\nCurrent Diseases: [M.fields["cdi"]] (per disease info placed in log/comment section)
\nDetails: [M.fields["cdi_d"]]
\n
\nImportant Notes:
\n\t[M.fields["notes"]]
\n
\nComments/Log
"
- var/counter = 1
- while(M.fields["com_[counter]"])
- P.info += "[M.fields["com_[counter]"]]
"
- counter++
+ for(var/c in M.fields["comments"])
+ P.info += "[c]
"
P.info += ""
P.name = "paper - '[G.fields["name"]]'"
virgin = 0 //tabbing here is correct- it's possible for people to try and use it
diff --git a/nano/templates/med_data.tmpl b/nano/templates/med_data.tmpl
new file mode 100644
index 00000000000..f47e13c6885
--- /dev/null
+++ b/nano/templates/med_data.tmpl
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+ Confirm Identity:
+
+
+ {{:helper.link(data.scan ? data.scan : "----------", 'eject', {'scan' : 1}, null, data.scan ? 'itemContentWide' : 'fixedLeft')}}
+
+
+
+{{if data.authenticated}}
+ {{if data.screen == 1}}
+ Menu
+
+
{{:helper.link('Search Records', 'search', {'search' : 1})}}
+
{{:helper.link('List Records', 'list', {'screen' : 2})}}
+
{{:helper.link('Virus Database', 'database', {'screen' : 5})}}
+
{{:helper.link('Medbot Tracking', 'plus-square', {'screen' : 6})}}
+
{{:helper.link('Record Maintenance', 'wrench', {'screen' : 3})}}
+
{{:helper.link('Logout', 'lock', {'logout' : 1})}}
+
+ {{else data.screen == 2}}
+ Record List
+ {{for data.records}}
+ {{:helper.link(value.id + ': ' + value.name, 'user', {'d_rec' : value.ref})}}
+ {{/for}}
+
+ {{:helper.link('Back', 'arrow-left', {'screen' : 1})}}
+ {{else data.screen == 3}}
+ Records Maintenance
+ {{:helper.link('Backup To Disk', 'download', {'back' : 1}, 'disabled')}}
+ {{:helper.link('Upload From disk', 'upload', {'u_load' : 1}, 'disabled')}}
+ {{:helper.link('Delete All Records', 'trash', {'del_all' : 1})}}
+ {{:helper.link('Back', 'arrow-left', {'screen' : 1})}}
+ {{else data.screen == 4}}
+ Medical Record
+ General Data
+ {{if data.general.empty}}
+ General Record Lost!
+ {{else}}
+
+
+
+ {{for data.general.fields}}
+
+ {{:value.field}}
+ {{:helper.link(value.value, value.edit ? 'pencil' : 'user-times', {'field' : value.edit}, value.edit ? null : 'disabled')}}
+
+ {{/for}}
+ |
+
+ {{if data.general.has_photos}}
+ {{for data.general.photos}}
+ {{if value.photo}}
+
+ {{/if}}
+ {{/for}}
+ {{/if}}
+ |
+
+
+ {{/if}}
+
+ Medical Data
+ {{if data.medical.empty}}
+ Medical Record Lost!
+
+
{{:helper.link('New Record', 'plus', {'new' : 1})}}
+
+ Menu
+ {{else}}
+ {{for data.medical.fields}}
+
+
{{:value.field}}
+
{{:helper.link(value.value, 'pencil', {'field' : value.edit})}}
+
+ {{if value.line_break}}
+
+ {{/if}}
+ {{/for}}
+
+ Comments/Log
+ {{for data.medical.comments}}
+ {{:value}}
+ {{:helper.link('Remove entry', 'trash', {'del_c' : index})}}
+
+ {{/for}}
+
+
+
{{:helper.link('Add Entry', 'plus', {'add_c' : 1})}}
+
+
+ Menu
+ {{:helper.link('Delete Record (Medical Only)', 'trash', {'del_r' : 1})}}
+ {{/if}}
+
+ {{:helper.link('Print Record', 'print', {'print_p' : 1})}}
+ {{:helper.link('Back', 'arrow-left', {'screen' : 2})}}
+ {{else data.screen == 5}}
+ Virus Database
+ {{for data.virus}}
+ {{:helper.link(value.name, 'arrow-right', {'vir' : value.D})}}
+ {{/for}}
+
+ {{:helper.link('Back', 'arrow-left', {'screen' : 1})}}
+ {{else data.screen == 6}}
+ Medical Robot Monitor
+ {{for data.medbots}}
+ {{:value.name}}
+
+
Location:
+
{{:value.x}}, {{:value.y}}
+
+
+
Status:
+
+ {{:value.on ? "Online" : "Offline"}}. {{if value.use_beaker}}Reservoir: [{{:value.total_volume}}/{{:value.maximum_volume}}]{{else}}Using internal synthesizer.{{/if}}
+
+
+
+ {{empty}}
+ None detected!
+ {{/for}}
+ {{:helper.link('Back', 'arrow-left', {'screen' : 1})}}
+ {{/if}}
+{{else}}
+ Menu
+ {{:helper.link('Login', 'unlock', {'login' : 1})}}
+{{/if}}
+
+{{if data.temp}}
+
+
+ {{if data.temp.notice}}
+
{{:data.temp.text}}
+ {{else}}
+
{{:data.temp.text}}
+ {{/if}}
+
+
+ {{if data.temp.has_buttons}}
+
+
+
+ {{for data.temp.buttons}}
+ {{:helper.link(value.name, value.icon, {'temp' : 1, 'temp_action' : value.href}, value.status)}}
+ {{/for}}
+
+
+
+ {{/if}}
+
+
+
{{:helper.link('Clear screen', 'home', {'temp' : 1})}}
+
+
+
+{{/if}}
\ No newline at end of file