Advertisement
Guest User

Untitled

a guest
Apr 7th, 2016
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.00 KB | None | 0 0
  1. class Hospital
  2. attr_accessor :name, :address, :employees, :patients
  3.  
  4. def initialize(args)
  5. @name = args[:name]
  6. @address = args[:address]
  7. @employees = args[:employees] || []
  8. @patients = args[:patients] || []
  9. end
  10.  
  11. def print_all_patients
  12. @patients.each { |patient| print_patient(patient) }
  13. end
  14.  
  15. def print_patient(patient)
  16. puts "Name: #{patient.name}"
  17. puts "Age: #{patient.age}"
  18. puts "Gender: #{patient.gender}"
  19. puts "Blood Type: #{patient.blood_type}"
  20. puts "Is Sick? #{patient.is_sick}"
  21. puts ""
  22. end
  23.  
  24. def admit_patient(patient)
  25. patient.is_sick = true
  26. @patients << patient
  27. end
  28.  
  29. def discharge_patient(patient)
  30. patient.is_sick = false
  31. @patients.delete(patient)
  32. end
  33.  
  34. def print_all_employees
  35. @employees.each { |employee| print_employee(employee) }
  36. end
  37.  
  38. def print_employee(employee)
  39. puts "Name: #{employee.name}"
  40. puts "Age: #{employee.age}"
  41. puts "Gender: #{employee.gender}"
  42. puts "Job: #{employee.job}"
  43. puts ""
  44. end
  45.  
  46. def add_employee(employee)
  47. @employees << employee
  48. end
  49.  
  50. def remove_employee(employee)
  51. @employees.delete(employee)
  52. end
  53.  
  54. def to_s
  55. "#{@name}"
  56. end
  57. end
  58.  
  59. class Person
  60. attr_accessor :name, :age, :gender, :username, :password
  61.  
  62. def initialize(args)
  63. @name = args[:name]
  64. @age = args[:age]
  65. @gender = args[:gender]
  66. @username = args[:username] || args[:name].downcase
  67. @password = args[:password] || '1234'
  68. end
  69.  
  70. def to_s
  71. "#{@name}"
  72. end
  73. end
  74.  
  75. class Patient < Person
  76. attr_accessor :is_sick
  77. attr_reader :blood_type
  78.  
  79. def initialize(args)
  80. @is_sick = false
  81. @blood_type = args[:blood_type]
  82. super(args)
  83. end
  84. end
  85.  
  86. class Employee < Person
  87. attr_accessor :job
  88.  
  89. def initialize(args)
  90. @job = args[:job]
  91. super(args)
  92. end
  93.  
  94. end
  95.  
  96. class HostpitalRecordManagement
  97. attr_accessor :hospital
  98.  
  99. def initialize(hospital)
  100. @hospital = hospital
  101. end
  102.  
  103. def authenticate
  104. puts "Welcome to #{@hospital.name}"
  105. puts "----------------------------------------------------"
  106.  
  107. access = nil
  108. while access == nil
  109. puts "Please enter your username:"
  110. username = gets.chomp
  111. puts "Please enter your password:"
  112. password = gets.chomp
  113. puts "----------------------------------------------------"
  114. person = retrieve_person(username)
  115. access = password_access_level(person, password)
  116. puts "Cannot find username/password combination. Please try again." if access == nil
  117. end
  118.  
  119. puts "Welcome, #{person.name}. Your access level is: #{access}"
  120. puts "----------------------------------------------------"
  121. activate_options(person, access)
  122. end
  123.  
  124. def activate_options(person, access)
  125. puts "What would you like to do?"
  126. puts "Enter a command. Options:"
  127.  
  128. input = ""
  129. until input == "exit"
  130. puts ""
  131. case access
  132. when "ADMINISTRATOR"
  133. puts "view self record"
  134. puts "view patients"
  135. puts "add patient"
  136. puts "remove patient"
  137. puts "view employees"
  138. puts "add employee"
  139. puts "remove employee"
  140. puts "exit"
  141. puts ""
  142. input = gets.chomp
  143. puts ""
  144.  
  145. case input
  146. when "view self record"
  147. view_self_employee_record(person)
  148. when "view patients"
  149. view_patient_records
  150. when "add patient"
  151. add_patient_to_records
  152. when "remove patient"
  153. remove_patient_from_records
  154. when "view employees"
  155. view_employee_records
  156. when "add employee"
  157. add_employee_to_records
  158. when "remove employee"
  159. remove_employee_from_records
  160. when "exit"
  161. puts "Thank you. Good day!"
  162. else
  163. puts "Cannot understand command. Please try agian:"
  164. end
  165.  
  166. when "DOCTOR"
  167. puts "view self record"
  168. puts "view patients"
  169. puts "exit"
  170. input = gets.chomp
  171. puts ""
  172.  
  173. case input
  174. when "view self record"
  175. view_self_employee_record(person)
  176. when "view patients"
  177. view_patient_records
  178. when "exit"
  179. puts "Thank you. Good day!"
  180. else
  181. puts "Cannot understand command. Please try agian:"
  182. end
  183.  
  184. when "RECEPTIONIST"
  185. puts "view self record"
  186. puts "view patient records"
  187. puts "view employee records"
  188. puts "exit"
  189. input = gets.chomp
  190. puts ""
  191.  
  192. case input
  193. when "view self record"
  194. view_self_employee_record(person)
  195. when "view patients"
  196. view_patient_records
  197. when "view employees"
  198. view_employee_records
  199. when "exit"
  200. puts "Thank you. Good day!"
  201. else
  202. puts "Cannot understand command. Please try agian:"
  203. end
  204.  
  205. when "JANITOR"
  206. puts "view self record"
  207. puts "exit"
  208. input = gets.chomp
  209. puts ""
  210.  
  211. case input
  212. when "view self record"
  213. view_self_employee_record(person)
  214. when "exit"
  215. puts "Thank you. Good day!"
  216. else
  217. puts "Cannot understand command. Please try agian:"
  218. end
  219.  
  220. when "PATIENT"
  221. puts "view self record"
  222. puts "exit"
  223. input = gets.chomp
  224. puts ""
  225.  
  226. case input
  227. when "view self record"
  228. view_self_patient_record(person)
  229. when "exit"
  230. puts "Thank you. Good day!"
  231. else
  232. puts "Cannot understand command. Please try agian:"
  233. end
  234.  
  235. end
  236. end
  237. end
  238.  
  239. def view_self_patient_record(person)
  240. @hospital.print_patient(person)
  241. end
  242.  
  243. def view_patient_records
  244. @hospital.print_all_patients
  245. end
  246.  
  247. def add_patient_to_records
  248. puts "Enter patient's name:"
  249. name = gets.chomp
  250. puts "Enter patient's age:"
  251. age = gets.chomp
  252. puts "Enter patient's gender:"
  253. gender = gets.chomp
  254. puts "Enter patient's blood type:"
  255. blood_type = gets.chomp
  256. @hospital.admit_patient(Patient.new( {name: name, age: age, gender: gender, blood_type: blood_type } ))
  257. puts "#{name} has been added to 'PATIENT RECORDS'."
  258. end
  259.  
  260. def remove_patient_from_records
  261. puts "Enter patient's username:"
  262. username = gets.chomp
  263. patient = retrieve_patient(username)
  264. if patient
  265. @hospital.discharge_patient(patient)
  266. puts "#{username} has been discharged."
  267. else
  268. puts "Cannot find patient's username."
  269. end
  270. end
  271.  
  272. def view_self_employee_record(person)
  273. @hospital.print_employee(person)
  274. end
  275.  
  276. def view_employee_records
  277. @hospital.print_all_employees
  278. end
  279.  
  280. def add_employee_to_records
  281. puts "Enter employee's name:"
  282. name = gets.chomp
  283. puts "Enter employee's age:"
  284. age = gets.chomp
  285. puts "Enter employee's gender:"
  286. gender = gets.chomp
  287. puts "Enter employee's job position:"
  288. job = gets.chomp
  289. @hospital.add_employee(Employee.new( {name: name, age: age, gender: gender, job: job } ))
  290. puts "#{name} has been added to 'EMPLOYEE RECORDS'."
  291. end
  292.  
  293. def remove_employee_from_records
  294. puts "Enter employee's username:"
  295. username = gets.chomp
  296. employee = retrieve_employee(username)
  297. if employee
  298. @hospital.remove_employee(employee)
  299. puts "#{username} has been removed."
  300. else
  301. puts "Cannot find employee's username."
  302. end
  303. end
  304.  
  305. def retrieve_patient(username)
  306. @hospital.patients.each { |patient| return patient if patient.username.downcase == username.downcase }
  307. nil
  308. end
  309.  
  310. def retrieve_employee(username)
  311. @hospital.employees.each { |employee| return employee if employee.username.downcase == username.downcase }
  312. nil
  313. end
  314.  
  315. def retrieve_person(username)
  316. all_people = @hospital.employees | @hospital.patients
  317. all_people.each { |person| return person if person.username.downcase == username.downcase }
  318. nil
  319. end
  320.  
  321. def password_access_level(person, password)
  322. return nil if person == nil
  323. if person.password == password
  324. return "PATIENT" if person.is_a? Patient
  325. return person.job.upcase if person.is_a? Employee
  326. end
  327. nil
  328. end
  329. end
  330.  
  331.  
  332. # DRIVER CODE
  333.  
  334. admin = Employee.new( { name: "Administrator", age: "35", gender: "male", job: "administrator", username: "admin" } )
  335. tim = Employee.new( { name: "Timothy", age: "27", gender: "male", job: "doctor", username: "tim" } )
  336. ling = Employee.new( { name: "Ling", age: "25", gender: "female", job: "doctor", username: "ling" } )
  337. kevin = Employee.new( { name: "Kevin", age: "22", gender: "male", job: "receptionist", username: "kevin" } )
  338. tony = Employee.new( { name: "Tony", age: "25", gender: "male", job: "janitor", username: "tony" } )
  339. mikhail = Patient.new( { name: "Mikhail", age: "28", gender: "male", blood_type: "O", username: "mikhail" } )
  340. marko = Patient.new( { name: "Marko", age: "29", gender: "male", blood_type: "AB", username: "marko" } )
  341. erin = Patient.new( { name: "Erin", age: "27", gender: "female", blood_type: "B", username: "erin" } )
  342.  
  343. maimonides = Hospital.new( {name: "Maimonides Medical Center", address: "4802 10th Ave, Brooklyn, NY 11219", employees: [admin, tim, ling, kevin, tony], patients: [mikhail, marko, erin] } )
  344.  
  345. software = HostpitalRecordManagement.new(maimonides)
  346. software.authenticate
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement