/datum/computer/file/computer_program/med_data name = "Medical Records" size = 32.0 active_icon = "dna" req_access = list(ACCESS_MEDICAL) var/authenticated = null var/rank = null var/screen = null var/datum/data/record/active1 = null var/datum/data/record/active2 = null var/a_id = null var/temp = null /datum/computer/file/computer_program/med_data/return_text() if(..()) return var/dat if (src.temp) dat = text("[src.temp]

Clear Screen") else dat = text("Confirm Identity: []
", master, (src.master.authid ? text("[]", src.master.authid.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:
" for(var/datum/data/record/R in data_core.general) dat += text("[]: []
", src, R, R.fields["id"], R.fields["name"]) //Foreach goto(132) dat += text("
Back", src) if(3.0) dat += text("Records Maintenance
\nBackup To Disk
\nUpload From disk
\nDelete All Records
\n
\nBack", src, src, src, src) if(4.0) dat += "
Medical Record

" if ((istype(src.active1, /datum/data/record) && data_core.general.Find(src.active1))) dat += text("Name: [] ID: []
\nSex: []
\nAge: []
\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", src.active1.fields["name"], src.active1.fields["id"], src, src.active1.fields["sex"], src, src.active1.fields["age"], src, src.active1.fields["fingerprint"], src, src.active1.fields["p_stat"], src, src.active1.fields["m_stat"]) else dat += "General Record Lost!
" if ((istype(src.active2, /datum/data/record) && data_core.medical.Find(src.active2))) dat += text("
\n
Medical Data

\nBlood Type: []
\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
\n
Comments/Log

", src, src.active2.fields["b_type"], src, src.active2.fields["mi_dis"], src, src.active2.fields["mi_dis_d"], src, src.active2.fields["ma_dis"], src, src.active2.fields["ma_dis_d"], src, src.active2.fields["alg"], src, src.active2.fields["alg_d"], src, src.active2.fields["cdi"], src, src.active2.fields["cdi_d"], src, src.active2.fields["notes"]) var/counter = 1 while(src.active2.fields[text("com_[]", counter)]) dat += text("[]
Delete Entry

", src.active2.fields[text("com_[]", counter)], src, counter) counter++ dat += text("Add Entry

", src) dat += text("Delete Record (Medical Only)

", src) else dat += "Medical Record Lost!
" dat += text("New Record

") dat += text("\nPrint Record
\nBack
", src, src) if(5.0) dat += {"
Virus Database

GBS
Common Cold
Flu
Jungle Fever
Clowning Around
Plasmatoid
Space Rhinovirus
Robot Transformation
Back"} if(6.0) dat += "
Medical Robot Monitor
" dat += "Back" dat += "
Medical Robots:" var/bdat = null for(var/obj/machinery/bot/medbot/M in world) var/turf/bl = get_turf(M) bdat += "[M.name] - \[[bl.x],[bl.y]\] - [M.on ? "Online" : "Offline"]
" if(!isnull(M.reagent_glass)) 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]" else else dat += text("{Log In}", src) dat += "
{Quit}" return dat /datum/computer/file/computer_program/med_data/Topic(href, href_list) if(..()) return if (!( data_core.general.Find(src.active1) )) src.active1 = null if (!( data_core.medical.Find(src.active2) )) src.active2 = null if (href_list["temp"]) src.temp = null else if (href_list["logout"]) src.authenticated = null src.screen = null src.active1 = null src.active2 = null else if (href_list["login"]) if (istype(usr, /mob/living/silicon)) src.active1 = null src.active2 = null src.authenticated = 1 src.rank = "AI" src.screen = 1 else if (istype(src.master.authid, /obj/item/weapon/card/id)) src.active1 = null src.active2 = null if (src.check_access(src.master.authid)) src.authenticated = src.master.authid.registered_name src.rank = src.master.authid.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"]) switch(href_list["vir"]) if("gbs") src.temp = {"Name: GBS
Number of stages: 5
Spread: Airborne Transmission
Possible Cure: Spaceacillin
Affected Species: Human

Notes: If left untreated death will occur.

Severity: Major"} if("cc") src.temp = {"Name: Common Cold
Number of stages: 3
Spread: Airborne Transmission
Possible Cure: Rest
Affected Species: Human

Notes: If left untreated the subject will contract the flu.

Severity: Minor"} if("f") src.temp = {"Name: The Flu
Number of stages: 3
Spread: Airborne Transmission
Possible Cure: Rest
Affected Species: Human

Notes: If left untreated the subject will feel quite unwell.

Severity: Medium"} if("jf") src.temp = {"Name: Jungle Fever
Number of stages: 1
Spread: Airborne Transmission
Possible Cure: None
Affected Species: Monkey

Notes: monkeys with this disease will bite humans, causing humans to spontaneously to mutate into a monkey.

Severity: Medium"} if("ca") src.temp = {"Name: Clowning Around
Number of stages: 4
Spread: Airborne Transmission
Possible Cure: Spaceacillin
Affected Species: Human

Notes: Subjects are affected by rampant honking and a fondness for shenanigans. They may also spontaneously phase through closed airlocks.

Severity: Laughable"} if("p") src.temp = {"Name: Plasmatoid
Number of stages: 3
Spread: Airborne Transmission
Possible Cure: Inaprovaline
Affected Species: Human and Monkey

Notes: With this disease the victim will need phoron to breathe.

Severity: Major"} if("dna") src.temp = {"Name: Space Rhinovirus
Number of stages: 4
Spread: Airborne Transmission
Possible Cure: Spaceacillin
Affected Species: Human

Notes: This disease transplants the genetic code of the intial vector into new hosts.

Severity: Medium"} if("bot") src.temp = {"Name: Robot Transformation
Number of stages: 5
Spread: Infected food
Possible Cure: None
Affected Species: Human

Notes: This disease, actually acute nanomachine infection, converts the victim into a cyborg.

Severity: Major"} if (href_list["del_all"]) src.temp = text("Are you sure you wish to delete all records?
\n\tYes
\n\tNo
", src, src) if (href_list["del_all2"]) for(var/datum/data/record/R in data_core.medical) del(R) 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 = input("Please input fingerprint hash:", "Med. records", src.active1.fields["id"], null) as text if ((!( t1 ) || !( src.authenticated ) || (!src.master) || usr.stat || usr.restrained() || (!in_range(src.master, 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 text if ((!( t1 ) || !( src.authenticated ) || (!src.master) || usr.stat || usr.restrained() || (!in_range(src.master, 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 = input("Please input minor disabilities list:", "Med. records", src.active2.fields["mi_dis"], null) as text if ((!( t1 ) || !( src.authenticated ) || (!src.master) || usr.stat || usr.restrained() || (!in_range(src.master, 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 = input("Please summarize minor dis.:", "Med. records", src.active2.fields["mi_dis_d"], null) as message if ((!( t1 ) || !( src.authenticated ) || (!src.master) || usr.stat || usr.restrained() || (!in_range(src.master, 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 = input("Please input major diabilities list:", "Med. records", src.active2.fields["ma_dis"], null) as text if ((!( t1 ) || !( src.authenticated ) || (!src.master) || usr.stat || usr.restrained() || (!in_range(src.master, 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 = input("Please summarize major dis.:", "Med. records", src.active2.fields["ma_dis_d"], null) as message if ((!( t1 ) || !( src.authenticated ) || (!src.master) || usr.stat || usr.restrained() || (!in_range(src.master, 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 = input("Please state allergies:", "Med. records", src.active2.fields["alg"], null) as text if ((!( t1 ) || !( src.authenticated ) || (!src.master) || usr.stat || usr.restrained() || (!in_range(src.master, 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 = input("Please summarize allergies:", "Med. records", src.active2.fields["alg_d"], null) as message if ((!( t1 ) || !( src.authenticated ) || (!src.master) || usr.stat || usr.restrained() || (!in_range(src.master, 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 = input("Please state diseases:", "Med. records", src.active2.fields["cdi"], null) as text if ((!( t1 ) || !( src.authenticated ) || (!src.master) || usr.stat || usr.restrained() || (!in_range(src.master, 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 = input("Please summarize diseases:", "Med. records", src.active2.fields["cdi_d"], null) as message if ((!( t1 ) || !( src.authenticated ) || (!src.master) || usr.stat || usr.restrained() || (!in_range(src.master, 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 = input("Please summarize notes:", "Med. records", src.active2.fields["notes"], null) as message if ((!( t1 ) || !( src.authenticated ) || (!src.master) || usr.stat || usr.restrained() || (!in_range(src.master, 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 = text("Physical Condition:
\n\t*Deceased*
\n\t*Unconscious*
\n\tActive
\n\tPhysically Unfit
", src, src, src, src) if("m_stat") if (istype(src.active1, /datum/data/record)) src.temp = text("Mental Condition:
\n\t*Insane*
\n\t*Unstable*
\n\t*Watch*
\n\tStable
", src, src, src, src) if("b_type") if (istype(src.active2, /datum/data/record)) src.temp = text("Blood Type:
\n\tA- A+
\n\tB- B+
\n\tAB- AB+
\n\tO- O+
", src, src, src, src, src, src, src, src) else if (href_list["p_stat"]) if (src.active1) switch(href_list["p_stat"]) if("deceased") src.active1.fields["p_stat"] = "*Deceased*" if("unconscious") src.active1.fields["p_stat"] = "*Unconscious*" if("active") src.active1.fields["p_stat"] = "Active" if("unfit") src.active1.fields["p_stat"] = "Physically Unfit" 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.active2.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) del(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["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 = input("Add Comment:", "Med. records", null, null) as message if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src.master, 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 [] ([]) on [], 2556
[]", src.authenticated, src.rank, 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 or ID)", "Med. records", null, null) as text if ((!( t1 ) || usr.stat || (!src.master) || !( src.authenticated ) || usr.restrained() || ((!in_range(src.master, 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.general) if ((lowertext(R.fields["name"]) == t1 || t1 == lowertext(R.fields["id"]))) src.active1 = R else if (!( src.active1 )) src.temp = text("Could not locate record [].", t1) else for(var/datum/data/record/E in data_core.medical) if ((E.fields["name"] == src.active1.fields["name"] || E.fields["id"] == src.active1.fields["id"])) src.active2 = E else src.screen = 4 if (href_list["print_p"]) var/info = "
Medical Record

" if ((istype(src.active1, /datum/data/record) && data_core.general.Find(src.active1))) 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 info += "General Record Lost!
" if ((istype(src.active2, /datum/data/record) && data_core.medical.Find(src.active2))) info += text("
\n
Medical Data

\nBlood Type: []
\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
\n
Comments/Log

", src.active2.fields["b_type"], 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)]) info += text("[]
", src.active2.fields[text("com_[]", counter)]) counter++ else info += "Medical Record Lost!
" info += "" var/datum/signal/signal = new signal.data["data"] = info signal.data["title"] = "Medical Record" src.peripheral_command("print",signal) src.master.add_fingerprint(usr) src.master.updateUsrDialog() return