static void Dischargepayment(List <Patient> patientsList) { try { Console.Write("Enter patient ID number: "); string pid = Console.ReadLine().ToUpper(); Console.Write("Date of discharge (DD/MM/YYYY): "); string dod1 = Console.ReadLine(); DateTime dod = Convert.ToDateTime(dod1); foreach (Patient p in patientsList) { if (p.Id == pid) { Console.WriteLine("Name of patient: {0}", p.Name); Console.WriteLine("ID number: {0}", p.Id); Console.WriteLine("Citizenship status: {0}", p.CitizenStatus); Console.WriteLine("Gender: {0}", p.Gender); Console.WriteLine("Status: {0}", p.Status); Console.WriteLine("\n======Stay ======"); Console.WriteLine("Admission Date: {0}", p.Stay.AdmittedDate); Console.WriteLine("Discharge Date: {0}", dod); p.Stay.DischargedDate = dod; p.Stay.IsPaid = false; int count = 1; foreach (BedStay bs in p.Stay.BedstayList) { DateTime endstaydate = Convert.ToDateTime(bs.EndBedstay); int daysDiff = Convert.ToInt32(bs.StartBedstay.Day - endstaydate.Day); Console.WriteLine("\n======Bed # {0} ======", count); Console.WriteLine("Ward number: {0}", bs.Bed.WardNo); Console.WriteLine("Bed number: {0}", bs.Bed.BedNo); Console.WriteLine("Ward Class: {0}", "A"); Console.WriteLine("Start of bed stay: {0}", bs.StartBedstay); Console.WriteLine("End of bed stay: {0}", bs.EndBedstay); if (bs.Bed is ClassABed) { ClassABed cab = (ClassABed)bs.Bed; Console.WriteLine("Accompanying Person: {0}", cab.AccompanyingPerson); bs.Bed.CalculateCharges(p.CitizenStatus, daysDiff); } else if (bs.Bed is ClassBBed) { ClassBBed cbb = (ClassBBed)bs.Bed; Console.WriteLine("AirCon: {0}", cbb.AirCon); bs.Bed.CalculateCharges(p.CitizenStatus, daysDiff); } else if (bs.Bed is ClassCBed) { ClassCBed ccb = (ClassCBed)bs.Bed; Console.WriteLine("Avaliable: {0}", ccb.Available); bs.Bed.CalculateCharges(p.CitizenStatus, daysDiff); } Console.WriteLine("Number of days stayed: {0}", daysDiff); count++; } Console.WriteLine("[Press any key to proceed with payment]"); Console.ReadKey(); Console.WriteLine("\nCommencing payment...\n"); if (p is Child) { Child ch = (Child)p; Console.WriteLine("${0} has been deducted from CDA", ch.CdaBalance); double chcost = ch.CalculateCharges(); if (ch.CdaBalance > chcost) { ch.CdaBalance -= chcost; chcost = 0; Console.WriteLine("New CDA balance: ${0}", ch.CdaBalance); Console.WriteLine("Sub-total: ${0} has been paid by cash", chcost); Console.WriteLine("Payment Successful!"); p.Stay.IsPaid = true; } else if (ch.CdaBalance < chcost) { chcost -= ch.CdaBalance; ch.CdaBalance = 0; Console.WriteLine("New CDA balance: ${0}", ch.CdaBalance); Console.WriteLine("Sub-total: ${0} has been paid by cash", chcost); Console.WriteLine("Payment Successful!"); p.Stay.IsPaid = true; } else if (ch.CdaBalance == chcost) { chcost = 0; ch.CdaBalance = 0; Console.WriteLine("New CDA balance: ${0}", ch.CdaBalance); Console.WriteLine("Sub-total: ${0} has been paid by cash", chcost); Console.WriteLine("Payment Successful!"); p.Stay.IsPaid = true; } else { Console.WriteLine("Error in calculating Balance"); } } else if (p is Adult) { Adult ad = (Adult)p; Console.WriteLine("${0} has been deducted from Medisave", ad.MedisaveBalance); double adcost = ad.CalculateCharges(); if (ad.MedisaveBalance > adcost) { ad.MedisaveBalance -= adcost; adcost = 0; Console.WriteLine("New CDA balance: ${0}", ad.MedisaveBalance); Console.WriteLine("Sub-total: ${0} has been paid by cash", adcost); Console.WriteLine("Payment Successful!"); p.Stay.IsPaid = true; } else if (ad.MedisaveBalance < adcost) { adcost -= ad.MedisaveBalance; ad.MedisaveBalance = 0; Console.WriteLine("New CDA balance: ${0}", ad.MedisaveBalance); Console.WriteLine("Sub-total: ${0} has been paid by cash", adcost); Console.WriteLine("Payment Successful!"); p.Stay.IsPaid = true; } else if (ad.MedisaveBalance == adcost) { adcost = 0; ad.MedisaveBalance = 0; Console.WriteLine("New CDA balance: ${0}", ad.MedisaveBalance); Console.WriteLine("Sub-total: ${0} has been paid by cash", adcost); Console.WriteLine("Payment Successful!"); p.Stay.IsPaid = true; } else { Console.WriteLine("Error in calculating Balance"); } } else if (p is Senior) { Senior sn = (Senior)p; Console.WriteLine("Total Cost has been reduced by half"); double sncost = sn.CalculateCharges(); Console.WriteLine("Sub-total: ${0} has been paid by cash", sncost); Console.WriteLine("Payment Successful!"); p.Stay.IsPaid = true; } else { Console.WriteLine("Error in Patient (Child/Adult/Senior) Class"); } } } } catch { Console.WriteLine("Unable to Discharge or Settle payments"); } }
static void RegisterPatient(List <Patient> pList) { string patientdeets; Console.Write("Enter Name: "); string name = Console.ReadLine(); Console.Write("Enter Identification Number: "); string Idn = Console.ReadLine().ToUpper(); Console.Write("Enter Age: "); int age = 0; try { age = Convert.ToInt32(Console.ReadLine()); Console.Write("Enter Gender [M/F]: "); char gender = Convert.ToChar(Console.ReadLine().ToUpper()); Console.Write("Enter Citizenship Status [SC/PR/Foreigner]: "); string citizenship = Console.ReadLine(); using (StreamWriter file = new StreamWriter("patients(1).csv", true)) { if (age <= 12) { //if child is sc create patient child object with cdabalance if (citizenship == "SC") { Console.Write("Enter Child Development Account Balance: "); double balance = Convert.ToDouble(Console.ReadLine()); Patient c1 = new Child(Idn, name, age, gender, citizenship, "Registered", balance); pList.Add(c1); patientdeets = name + "," + Idn + "," + age + "," + gender + "," + citizenship + "," + balance; } //if child is not SC , no cdabalance else { Patient c1 = new Child(Idn, name, age, gender, citizenship, "Registered", 0); pList.Add(c1); patientdeets = name + "," + Idn + "," + age + "," + gender + "," + citizenship; } } else if (age < 64) { if (citizenship == "SC" || citizenship == "PR") { Console.Write("Enter Medisave Balance: "); double medisave = Convert.ToDouble(Console.ReadLine()); Patient a1 = new Adult(Idn, name, age, gender, citizenship, "Registered", medisave); pList.Add(a1); patientdeets = name + "," + Idn + "," + age + "," + gender + "," + citizenship + "," + medisave; } else { Patient a1 = new Adult(Idn, name, age, gender, citizenship, "Registered", 0); pList.Add(a1); patientdeets = name + "," + Idn + "," + age + "," + gender + "," + citizenship; } } else { Patient s1 = new Senior(Idn, name, age, gender, citizenship, "Registered"); pList.Add(s1); patientdeets = name + "," + Idn + "," + age + "," + gender + "," + citizenship; } file.WriteLine(patientdeets); Console.WriteLine("{0} is registered successfully", name); } } catch { Console.WriteLine("{0} is not registered successfully", name); } }
//InIt List static void InitData(List <Patient> pList, List <Bed> bList) { // read csv lines from patients string[] lines = File.ReadAllLines("patients(1).csv"); for (int l = 1; l < lines.Length; l++) { string[] info = lines[l].Split(','); if (Convert.ToInt32(info[2]) <= 12) { if (info[4] == "SC") { Patient child = new Child(info[1], info[0], Convert.ToInt32(info[2]), Convert.ToChar(info[3]), info[4], "Registered", Convert.ToDouble(info[5])); pList.Add(child); } else { Patient child = new Child(info[1], info[0], Convert.ToInt32(info[2]), Convert.ToChar(info[3]), info[4], "Registered", 0); pList.Add(child); } } else if (Convert.ToInt32(info[2]) < 64) { if (info[4] == "SC" || info[4] == "PR") { Patient adult = new Adult(info[1], info[0], Convert.ToInt32(info[2]), Convert.ToChar(info[3]), info[4], "Registered", Convert.ToDouble(info[5])); pList.Add(adult); } else { Patient adult = new Adult(info[1], info[0], Convert.ToInt32(info[2]), Convert.ToChar(info[3]), info[4], "Registered", 0); pList.Add(adult); } } else { Senior senior = new Senior(info[1], info[0], Convert.ToInt32(info[2]), Convert.ToChar(info[3]), info[4], "Registered"); pList.Add(senior); } } //Read from Beds.csv try { string[] sents = File.ReadAllLines("beds.csv"); for (int l = 1; l < sents.Length; l++) { string[] sbed = sents[l].Split(','); if (sbed[0] == "A") { Bed cab = new ClassABed(Convert.ToInt32(sbed[1]), Convert.ToInt32(sbed[2]), Convert.ToDouble(sbed[4]), true); bList.Add(cab); } else if (sbed[0] == "B") { Bed cbb = new ClassBBed(Convert.ToInt32(sbed[1]), Convert.ToInt32(sbed[2]), Convert.ToDouble(sbed[4]), true); bList.Add(cbb); } else if (sbed[0] == "C") { Bed ccb = new ClassCBed(Convert.ToInt32(sbed[1]), Convert.ToInt32(sbed[2]), Convert.ToDouble(sbed[4]), true); bList.Add(ccb); } } } catch { Console.WriteLine("Unable to Read File/File does not exist"); } }