} // end of HealthCareActionEnd #endregion #region HealthCareActionStart /// <summary> /// Method that visualized the start of a health care action, patient is added to /// the drawing system and all entities (staff and patient) are set to /// the corresponding positions in the treatment facility (if it is not a /// multiple patient treatment facility). Further, human resources are /// removed from the parent visualization engine to avoid double drawing. /// </summary> /// <param name="activity">Instance of health care action</param> /// <param name="time">Time the activity is started</param> public void HealthCareActionStart(Activity activity, DateTime time) { ActivityHealthCareAction <T> action = (ActivityHealthCareAction <T>)activity; if (action.ResourceSet.TreatmentFacility is EntityMultiplePatientTreatmentFacility) { return; } DrawPatient drawPatient = (DrawPatient)DrawingObjectPerEntity(action.Patient); DrawBaseTreatmentFacility drawTreatFac = (DrawBaseTreatmentFacility)ParentDepartmentVisualization.DrawingObjectPerEntity(action.ResourceSet.TreatmentFacility); drawPatient.SetPositionType(drawTreatFac.PatientPositionType); drawPatient.SetPosition(drawTreatFac.PatientInRoomPosition); int staffCount = 0; if (action.ResourceSet.MainDoctor != null) { ParentDepartmentVisualization.RemoveDrawingObjectPerEntity(action.ResourceSet.MainDoctor); DrawDoctor drawMainDoctor = (DrawDoctor)DrawingObjectPerEntity(action.ResourceSet.MainDoctor); drawMainDoctor.SetPosition(drawTreatFac.GetStaffPosition(staffCount)); staffCount++; } // end if if (action.ResourceSet.MainNurse != null) { ParentDepartmentVisualization.RemoveDrawingObjectPerEntity(action.ResourceSet.MainNurse); DrawNurse drawMainNurse = (DrawNurse)DrawingObjectPerEntity(action.ResourceSet.MainNurse); drawMainNurse.SetPosition(drawTreatFac.GetStaffPosition(staffCount)); staffCount++; } // end if if (action.ResourceSet.AssistingDoctors != null) { foreach (EntityDoctor ent in action.ResourceSet.AssistingDoctors) { ParentDepartmentVisualization.RemoveDrawingObjectPerEntity(ent); DrawDoctor drawAssistDoctor = (DrawDoctor)DrawingObjectPerEntity(ent); drawAssistDoctor.SetPosition(drawTreatFac.GetStaffPosition(staffCount)); staffCount++; } // end foreach } // end if if (action.ResourceSet.AssistingNurses != null) { foreach (EntityNurse ent in action.ResourceSet.AssistingNurses) { ParentDepartmentVisualization.RemoveDrawingObjectPerEntity(ent); DrawNurse drawAssistNurse = (DrawNurse)DrawingObjectPerEntity(ent); drawAssistNurse.SetPosition(drawTreatFac.GetStaffPosition(staffCount)); staffCount++; } // end foreach } // end if } // end of HealthCareActionEnd
} // end of WaitInFacilityEnd #endregion #region WaitInFacilityStart /// <summary> /// Method that visualized the start of a wait in facility action, patient is added to /// the drawing system and set to the corresponding positions in the treatment facility /// (if it is not a multiple patient treatment facility). /// </summary> /// <param name="activity">Instance of health care action</param> /// <param name="time">Time the activity is started</param> public void WaitInFacilityStart(Activity activity, DateTime time) { ActivityWaitInFacility waitInFac = (ActivityWaitInFacility)activity; if (waitInFac.Facility is EntityMultiplePatientTreatmentFacility) { return; } DrawPatient drawPatient = (DrawPatient)DrawingObjectPerEntity(waitInFac.Patient); DrawTreatmentFacility drawTreatFac = (DrawTreatmentFacility)ParentDepartmentVisualization.DrawingObjectPerEntity(waitInFac.Facility); drawPatient.SetPositionType(drawTreatFac.PatientPositionType); drawPatient.SetPosition(drawTreatFac.PatientInRoomPosition); } // end of WaitInFacilityEnd