コード例 #1
0
 private Capability GetCapabilitiesOfARoom(TreatmentRoom room)
 {
     return(HospitalConfiguration.GetInstance()
            .TreatmentMachines
            .Where(tm => tm.Name == room.TreatmentMachine)
            .Select(rm => rm.Capability)
            .ToList()
            .First());
 }
コード例 #2
0
        public void Test_AddPatient()
        {
            Patient patient = new Patient();
            HospitalConfiguration hospitalConfiguration = HospitalConfiguration.GetInstance();

            HospitalService.AddPatient(patient);
            Assert.AreEqual(hospitalConfiguration.Patients[0], patient);
            Assert.AreEqual(hospitalConfiguration.Patients.Count, 1);
        }
コード例 #3
0
        public void Test_AddConsultation()
        {
            HospitalConfiguration hospitalConfiguration = HospitalConfiguration.GetInstance();
            Consultation          consultation          = new Consultation();

            ConsultationService.AddConsultation(consultation);
            Assert.AreEqual(hospitalConfiguration.Consultations[0], consultation);
            Assert.AreEqual(hospitalConfiguration.Consultations.Count, 1);
        }
コード例 #4
0
 /// <summary>
 /// Displays all the consulations in the hospital.
 /// </summary>
 public static void ShowConsultations()
 {
     Console.Clear();
     if (HospitalConfiguration.GetInstance().Consultations.Count() == 0)
     {
         Console.WriteLine("No scheduled consultations yet.");
         return;
     }
     HospitalConfiguration.GetInstance().Consultations.ForEach(consultation => ConsultationHelper.PrintConsultationInfo(consultation));
 }
コード例 #5
0
 /// <summary>
 /// Displays all the registered patients in the hospital.
 /// </summary>
 public static void ShowRegisteredPatients()
 {
     if (!Console.IsOutputRedirected)
     {
         Console.Clear();
     }
     if (HospitalConfiguration.GetInstance().Patients.Count() == 0)
     {
         Console.WriteLine("No registered patients yet.");
         return;
     }
     HospitalConfiguration.GetInstance().Patients.ForEach(patient => PatientHelper.PrintPatientInfo(patient));
 }
コード例 #6
0
        private void AddMachineRooms(ref List <TreatmentRoom> rooms, List <Capability> capabilities, bool treatmentMachineNeeded)
        {
            HospitalConfiguration hc       = HospitalConfiguration.GetInstance();
            List <TreatmentRoom>  allRooms = hc.TreatmentRooms;

            if (treatmentMachineNeeded)
            {
                rooms = allRooms.Where(tr => tr.TreatmentMachine != null)
                        .Where(tr => capabilities.Contains(GetCapabilitiesOfARoom(tr)))
                        .ToList();
            }
            else
            {
                rooms = allRooms;
            }
        }
コード例 #7
0
        /// <summary>
        /// Schedule a patient
        /// </summary>
        /// <param name="patient"></param>
        /// <param name="registrationDay"></param>
        /// <returns></returns>
        public Consultation Schedule(Patient patient, int registrationDay)
        {
            List <TreatmentRoom> rooms   = new List <TreatmentRoom>();
            List <Doctor>        doctors = new List <Doctor>();

            HospitalConfiguration hc = HospitalConfiguration.GetInstance();

            if (patient.Condition.conditionType.Equals(ConditionType.Cancer))
            {
                AddDoctors(Role.Oncologist, ref doctors);
                if (((CancerCondition)patient.Condition).TopographyType.Equals(TopographyType.HeadAndNeck))
                {
                    List <Capability> capabilities = new List <Capability>();
                    capabilities.Add(Capability.Advanced);
                    AddMachineRooms(ref rooms, capabilities, true);
                }
                else
                {
                    List <Capability> capabilities = new List <Capability>();
                    capabilities.Add(Capability.Simple);
                    capabilities.Add(Capability.Advanced);
                    AddMachineRooms(ref rooms, capabilities, true);
                }
            }
            else
            {
                AddDoctors(Role.GeneralPractitioner, ref doctors);
                AddMachineRooms(ref rooms, new List <Capability>(), false);
            }

            try {
                Consultation consultation = ScheduleConsultation(rooms, doctors, registrationDay + 1);
                consultation.patient = patient;
                return(consultation);
            } catch (InvalidOperationException e)
            {
                Console.WriteLine(e.Message);
                throw e;
            }
        }
コード例 #8
0
        /// <summary>
        /// Add Consultation adds a consultation to the hospital configuration.
        /// </summary>
        /// <param name="consultation"></param>
        public static void AddConsultation(Consultation consultation)
        {
            HospitalConfiguration hospitalConfiguration = HospitalConfiguration.GetInstance();

            hospitalConfiguration.Consultations.Add(consultation);
        }
コード例 #9
0
 /// <summary>
 /// Adds a patient to the hospital configuration.
 /// </summary>
 /// <param name="patient"></param>
 public static void AddPatient(Patient patient)
 {
     HospitalConfiguration.GetInstance().Patients.Add(patient);
 }
コード例 #10
0
 /// <summary>
 /// Initializes hospital configuration.
 /// </summary>
 private static void InitializeHospitalConfiguration()
 {
     HospitalConfiguration.SetInstance(JsonHelper.ReadJsonFile());
 }
コード例 #11
0
        private void AddDoctors(Role role, ref List <Doctor> doctors)
        {
            HospitalConfiguration hc = HospitalConfiguration.GetInstance();

            doctors = hc.Doctors.Where(d => d.Roles.Contains(role)).ToList();
        }