/* * Med_data -- a computer that shows player medical data. * * */ obj/machinery/computer/med_data name = "Medical Records" icon = 'weap_sat.dmi' icon_state = "computer" var obj/item/weapon/card/id/scan = null // ID card inserted in the computer authenticated = null // name on ID card (if has access) rank = null // job assignment of ID card screen = null // active screen displayed // 1=menu, 2=list of records, 3=maint. menu ,4=record edit datum/data/record/active1 = null // selected general record (from data_core.general) datum/data/record/active2 = null // selected medical record (from data_code.medical) a_id = null // not used temp = null // temporary text to show in window printing = null // true if printing a record allowed = "Medical Researcher/Medical Doctor/Head of Personnel/Captain" // the job assignments which have access access // the access levels which have access (none) // Monkey interact same as human attack_paw(mob/user) return src.attack_hand(user) // AI interact attack_ai(mob/user) return src.attack_hand(user) // Human interact // Show interaction window attack_hand(mob/user) var/dat if (src.temp) // show temporary text dat = "[temp]

Clear Screen" else // show ID card inserted dat = "Confirm Identity: [src.scan ? "[src.scan.name]" : "----------"]
" if (src.authenticated) switch(src.screen) if(1.0) dat += {"Search Records
List Records

Record Maintenance
{Log Out}
"} if(2.0) dat += "Record List:
" for(var/datum/data/record/R in data_core.general) dat += "[R.fields["id"]]: [R.fields["name"]]
" dat += "
Back" if(3.0) dat += {"Records Maintenance
Backup To Disk
Upload From disk
Delete All Records

Back"} if(4.0) dat += "
Medical Record

" if ((istype(src.active1, /datum/data/record) && data_core.general.Find(src.active1))) dat += {"Name: [src.active1.fields["name"]] ID: [src.active1.fields["id"]]
Sex: [src.active1.fields["sex"]]
Age: [src.active1.fields["age"]]
Fingerprint: [src.active1.fields["fingerprint"]]
Physical Status: [src.active1.fields["p_stat"]]
Mental Status: [src.active1.fields["m_stat"]]
"} else dat += "General Record Lost!
" if ((istype(src.active2, /datum/data/record) && data_core.medical.Find(src.active2))) dat += {"
Medical Data

Blood Type: [src.active2.fields["b_type"]]

Minor Disabilities: [src.active2.fields["mi_dis"]]
Details: [src.active2.fields["mi_dis_d"]]

Major Disabilities: [src.active2.fields["ma_dis"]]
Details: [src.active2.fields["ma_dis_d"]]

Allergies: [src.active2.fields["alg"]]
Details: [src.active2.fields["alg_d"]]

Current Diseases: [src.active2.fields["cdi"]] (per disease info placed in log/comment section)
Details: [src.active2.fields["cdi_d"]]

Important Notes:
[src.active2.fields["notes"]]

Comments/Log

"} var/counter = 1 while(src.active2.fields["com_[counter]"]) dat += "[src.active2.fields["com_[counter]"]]
Delete Entry

" counter++ dat += "Add Entry

" dat += "Delete Record (Medical Only)

" else dat += "Medical Record Lost!
" dat += "New Record

" dat += "\nPrint Record
\nBack
" else dat += "{Log In}" user.client_mob() << browse("Medical Records[dat]", "window=med_rec") // Handle topic links from interaction window Topic(href, href_list) ..() if (!( data_core.general.Find(src.active1) )) src.active1 = null if (!( data_core.medical.Find(src.active2) )) src.active2 = null if ((usr.stat || usr.restrained())) if (!istype(usr, /mob/ai)) return if ((usr.contents.Find(src) || (get_dist(src, usr) <= 1 && istype(src.loc, /turf))) || (istype(usr, /mob/ai))) usr.machine = src if (href_list["temp"]) src.temp = null // close the temporary display if (href_list["scan"]) if (src.scan) src.scan.loc = src.loc // remove ID card from computer src.scan = null else var/obj/item/I = usr.equipped() if (istype(I, /obj/item/weapon/card/id)) usr.drop_item() I.loc = src // insert ID card into computer src.scan = I else if (href_list["logout"]) src.authenticated = null src.screen = null src.active1 = null src.active2 = null else if (href_list["login"]) // check inserted ID card against access requirements if (istype(src.scan, /obj/item/weapon/card/id)) src.active1 = null src.active2 = null if(scan.check_access(access, allowed)) src.authenticated = src.scan.registered src.rank = src.scan.assignment src.screen = 1 if (src.authenticated) if (href_list["list"]) src.screen = 2 src.active1 = null src.active2 = null else if (href_list["rec_m"]) src.screen = 3 src.active1 = null src.active2 = null else if (href_list["del_all"]) src.temp = "Are you sure you wish to delete all records?
\n\tYes
\n\tNo
" else if (href_list["del_all2"]) for(var/datum/data/record/R in data_core.medical) del(R) src.temp = "All records deleted." else if (href_list["main"]) src.screen = 1 src.active1 = null src.active2 = null else if (href_list["field"]) // edit fields 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 ) || usr.stat || usr.restrained() || get_dist(src, usr) > 1 || 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 ) || usr.stat || usr.restrained() || get_dist(src, usr) > 1 || 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 ) || usr.stat || usr.restrained() || get_dist(src, usr) > 1 || 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 ) || usr.stat || usr.restrained() || get_dist(src, usr) > 1 || 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 ) || usr.stat || usr.restrained() || get_dist(src, usr) > 1 || 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 ) || usr.stat || usr.restrained() || get_dist(src, usr) > 1 || 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 ) || usr.stat || usr.restrained() || get_dist(src, usr) > 1 || 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 ) || usr.stat || usr.restrained() || get_dist(src, usr) > 1 || 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 ) || usr.stat || usr.restrained() || get_dist(src, usr) > 1 || 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 ) || usr.stat || usr.restrained() || get_dist(src, usr) > 1 || 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 ) || usr.stat || usr.restrained() || get_dist(src, usr) > 1 || 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" else 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" else 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+" else if (href_list["del_r"]) if (src.active2) src.temp = text("Are you sure you wish to delete the record (Medical Portion Only)?
\n\tYes
\n\tNo
", src, src) else if (href_list["del_r2"]) if (src.active2) del(src.active2) else 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 src.active1 = R src.active2 = M src.screen = 4 else 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 else 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() || get_dist(src, usr) > 1 || 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 [], 2053
[]", src.authenticated, src.rank, time2text(world.realtime, "DDD MMM DD hh:mm:ss"), t1) else 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" else if (href_list["search"]) var/t1 = input("Search String: (Name or ID)", "Med. records", null, null) as text if ((!( t1 ) || usr.stat || !( src.authenticated ) || usr.restrained() || get_dist(src, usr) > 1)) 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 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 src.screen = 4 else if (href_list["print_p"]) if (!( src.printing )) src.printing = 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("
\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)]) 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 src.add_fingerprint(usr) src.updateDialog()