private void ExitAndSave() { if (PatientCurrent != null || RecordCurrent != null) { Filemanagement.SaveToDatabase(PatientCurrent); this.RecordCurrent.BirthInformationList.AddRange(BirthInformationListProperty.Where(x => !RecordCurrent.BirthInformationList.Contains(x))); this.RecordCurrent.ContractionIVDripList.AddRange(ContractionListProperty.Where(x => !RecordCurrent.ContractionIVDripList.Contains(x))); this.RecordCurrent.MicturitionList.AddRange(MicturitionListProperty.Where(x => !RecordCurrent.MicturitionList.Contains(x))); this.RecordCurrent.VaginalExplorationList.AddRange(VaginalExplorationListProperty.Where(x => !RecordCurrent.VaginalExplorationList.Contains(x))); this.RecordCurrent.FetusObservationList.AddRange(FetusObservationListProperty.Where(x => !RecordCurrent.FetusObservationList.Contains(x))); this.RecordCurrent.CurrentBill.BillItemList.AddRange(MedicalServicesList.Where(x => !RecordCurrent.CurrentBill.BillItemList.Contains(x))); Filemanagement.SaveRecord(RecordCurrent); } }
public RecordViewModel() { SetValue(ChildBirthDateProperty, DateTime.Today); SetValue(ChildBirthTimeProperty, DateTime.Now); Messenger.Default.Register <NotificationMessage>(this, "LogOut", parameter => { RecordCurrent.Note = RecordCurrent.NewNote; RecordCurrent.NewNote = null; }); Messenger.Default.Register <Record>(this, "NewRecordToRecordView", (ActiveRecord) => { RecordCurrent = ActiveRecord; Note = ActiveRecord.Note; }); Messenger.Default.Register <Patient>(this, "PatientToRecordView", (ActivePatient) => { PatientCurrent = ActivePatient; }); Messenger.Default.Register <Employee>(this, "EmployeetoRecordView", (ActiveEmployee) => { EmployeeCurrent = ActiveEmployee; }); Messenger.Default.Register <String>(this, "SaveToDatabase", (thestring) => ExitAndSave()); _availableMedicalServices.AddRange(Ward.MedicalServicesList); #region Command Definitions //Command to add a medical service to the list of medical services this.AddMedicalService = new RelayCommand(parameter => { MedicalServicesList.Add(SelectedAvailableMedicalServiceInfo); }); //Command to create a new child in the system this.CreateChildCommand = new RelayCommand(parameter => { Midwife tempMidwife = EmployeeCurrent as Midwife; ChildBirthDate = ChildBirthDate.Add(ChildBirthTime.TimeOfDay); tempMidwife.CreatePatient(PatientCurrent, ChildGender, ChildBirthDate); Patient tempChild = PatientCurrent.Children.Last(); RecordCurrent.ChildCPR = tempChild.CPR; new P3_Midwife.Views.NewChildWindow(RecordCurrent); Messenger.Default.Send(RecordCurrent, "ChildRecordToNewChildView"); Messenger.Default.Send(PatientCurrent, "PatientToNewChildView"); Messenger.Default.Send(EmployeeCurrent, "EmployeetoNewChildView"); Messenger.Default.Send(tempChild, "ChildToNewChildView"); Messenger.Default.Send <NotificationMessage>(new NotificationMessage("ToNewChild")); }); //Command to remove a medical service from the list of medical services this.RemoveMedicalService = new RelayCommand(parameter => { MedicalServicesList.Remove(SelectedMedicalServiceInfo); }); //Command to return to the record view without creating a child this.Cancel = new RelayCommand(parameter => { Messenger.Default.Send <NotificationMessage>(new NotificationMessage("ToRecord")); }); //Command to log the user out of the system this.LogOutCommand = new RelayCommand(parameter => { Filemanagement.SaveToDatabase(PatientCurrent); this.RecordCurrent.BirthInformationList.AddRange(BirthInformationListProperty.Where(x => !RecordCurrent.BirthInformationList.Contains(x))); this.RecordCurrent.ContractionIVDripList.AddRange(ContractionListProperty.Where(x => !RecordCurrent.ContractionIVDripList.Contains(x))); this.RecordCurrent.MicturitionList.AddRange(MicturitionListProperty.Where(x => !RecordCurrent.MicturitionList.Contains(x))); this.RecordCurrent.VaginalExplorationList.AddRange(VaginalExplorationListProperty.Where(x => !RecordCurrent.VaginalExplorationList.Contains(x))); this.RecordCurrent.FetusObservationList.AddRange(FetusObservationListProperty.Where(x => !RecordCurrent.FetusObservationList.Contains(x))); this.RecordCurrent.CurrentBill.BillItemList.AddRange(MedicalServicesList.Where(x => !RecordCurrent.CurrentBill.BillItemList.Contains(x))); Filemanagement.SaveRecord(RecordCurrent); System.Diagnostics.Process.Start(Application.ResourceAssembly.Location); Application.Current.Shutdown(); }); //Command to close to program this.ExitCommand = new RelayCommand(parameter => { ExitAndSave(); }); //Command to return to the previous view this.BackCommand = new RelayCommand(Parameter => { Filemanagement.SaveToDatabase(PatientCurrent); this.RecordCurrent.BirthInformationList.AddRange(BirthInformationListProperty.Where(x => !RecordCurrent.BirthInformationList.Contains(x))); BirthInformationListProperty.Clear(); this.RecordCurrent.ContractionIVDripList.AddRange(ContractionListProperty.Where(x => !RecordCurrent.ContractionIVDripList.Contains(x))); ContractionListProperty.Clear(); this.RecordCurrent.MicturitionList.AddRange(MicturitionListProperty.Where(x => !RecordCurrent.MicturitionList.Contains(x))); MicturitionListProperty.Clear(); this.RecordCurrent.VaginalExplorationList.AddRange(VaginalExplorationListProperty.Where(x => !RecordCurrent.VaginalExplorationList.Contains(x))); VaginalExplorationListProperty.Clear(); this.RecordCurrent.FetusObservationList.AddRange(FetusObservationListProperty.Where(x => !RecordCurrent.FetusObservationList.Contains(x))); FetusObservationListProperty.Clear(); this.RecordCurrent.CurrentBill.BillItemList.AddRange(MedicalServicesList.Where(x => !RecordCurrent.CurrentBill.BillItemList.Contains(x))); MedicalServicesList.Clear(); Filemanagement.SaveRecord(RecordCurrent); Messenger.Default.Send(EmployeeCurrent, "Employee"); Messenger.Default.Send(PatientCurrent, "Patient"); Messenger.Default.Send(new NotificationMessage("ToPatient")); }); //Command to open a view where a new child can be created in the system this.NewChildDialogCommand = new RelayCommand(parameter => { this.RecordCurrent.BirthInformationList.AddRange(BirthInformationListProperty.Where(x => !RecordCurrent.BirthInformationList.Contains(x))); this.RecordCurrent.ContractionIVDripList.AddRange(ContractionListProperty.Where(x => !RecordCurrent.ContractionIVDripList.Contains(x))); this.RecordCurrent.MicturitionList.AddRange(MicturitionListProperty.Where(x => !RecordCurrent.MicturitionList.Contains(x))); this.RecordCurrent.VaginalExplorationList.AddRange(VaginalExplorationListProperty.Where(x => !RecordCurrent.VaginalExplorationList.Contains(x))); this.RecordCurrent.FetusObservationList.AddRange(FetusObservationListProperty.Where(x => !RecordCurrent.FetusObservationList.Contains(x))); this.RecordCurrent.CurrentBill.BillItemList.AddRange(MedicalServicesList.Where(x => !RecordCurrent.CurrentBill.BillItemList.Contains(x))); Messenger.Default.Send(new NotificationMessage("NewChildDialog")); }); //Command to save and archive a record, so that it cannot be edited anymore. The patient is also transfered away from the room this.SaveAndCompleteCommand = new RelayCommand(parameter => { Messenger.Default.Send(new NotificationMessage("RecordSave")); this.RecordCurrent.Note += "\n" + RecordCurrent.NewNote; this.RecordCurrent.BirthInformationList.AddRange(BirthInformationListProperty.Where(x => !RecordCurrent.BirthInformationList.Contains(x))); this.RecordCurrent.BirthInformationList.AddRange(BirthInformationListProperty); BirthInformationListProperty.Clear(); this.RecordCurrent.ContractionIVDripList.AddRange(ContractionListProperty.Where(x => !RecordCurrent.ContractionIVDripList.Contains(x))); ContractionListProperty.Clear(); this.RecordCurrent.MicturitionList.AddRange(MicturitionListProperty.Where(x => !RecordCurrent.MicturitionList.Contains(x))); MicturitionListProperty.Clear(); this.RecordCurrent.VaginalExplorationList.AddRange(VaginalExplorationListProperty.Where(x => !RecordCurrent.VaginalExplorationList.Contains(x))); VaginalExplorationListProperty.Clear(); this.RecordCurrent.FetusObservationList.AddRange(FetusObservationListProperty.Where(x => !RecordCurrent.FetusObservationList.Contains(x))); FetusObservationListProperty.Clear(); this.RecordCurrent.CurrentBill.BillItemList.AddRange(MedicalServicesList.Where(x => !RecordCurrent.CurrentBill.BillItemList.Contains(x))); MedicalServicesList.Clear(); RecordCurrent.IsActive = false; (EmployeeCurrent as Midwife).TransferPatient(PatientCurrent); Filemanagement.SaveToDatabase(PatientCurrent); Filemanagement.SaveRecord(RecordCurrent); Messenger.Default.Send(new NotificationMessage("ToPatient")); Messenger.Default.Send(EmployeeCurrent, "Employee"); Messenger.Default.Send(PatientCurrent, "Patient"); }); //Command to add a new line of the type Birth Information in the record view this.AddBirthInfo = new RelayCommand(parameter => { BirthInfo = new BirthInformation(); BirthInfo.CurrentEmployee = EmployeeCurrent; BirthInformationListProperty.Add(BirthInfo); }); //Command to add a new line of the type ContractionIVDrip Informaion in the record view this.AddContractionIVDripInfo = new RelayCommand(parameter => { ContractionIVDripInfo = new ContractionIVDrip(); ContractionIVDripInfo.CurrentEmployee = EmployeeCurrent; ContractionListProperty.Add(ContractionIVDripInfo); }); //Command to add a new line of the type Fetus Observation Information in the record view this.AddFetusObservationInfo = new RelayCommand(parameter => { FetusObservationInfo = new FetusObservation(); FetusObservationInfo.CurrentEmployee = EmployeeCurrent; FetusObservationListProperty.Add(FetusObservationInfo); }); //Command to add a new line of the type Micturition Information in the record view this.AddMicturitionInfo = new RelayCommand(parameter => { MicturitionInfo = new Micturition(); MicturitionInfo.CurrentEmployee = EmployeeCurrent; MicturitionListProperty.Add(MicturitionInfo); }); //Command to add a new line of the type Vaginal Exploration Information in the record view this.AddVaginalExplorationInfo = new RelayCommand(parameter => { VaginalExplorationInfo = new VaginalExploration(); VaginalExplorationInfo.CurrentEmployee = EmployeeCurrent; VaginalExplorationListProperty.Add(VaginalExplorationInfo); }); #endregion }