Exemplo n.º 1
0
 /// <summary>
 /// Constructs a new <see cref="PatientNode"/> using actual values from attributes in the given <see cref="DicomAttributeCollection"/>.
 /// </summary>
 /// <param name="dicomDataSet">The data set from which to initialize this node.</param>
 public PatientNode(DicomAttributeCollection dicomDataSet)
 {
     _studies   = new StudyNodeCollection(this);
     _patientId = dicomDataSet[DicomTags.PatientId].GetString(0, "");
     _name      = dicomDataSet[DicomTags.PatientsName].GetString(0, "");
     _birthdate = DicomConverter.GetDateTime(dicomDataSet[DicomTags.PatientsBirthDate].GetDateTime(0), dicomDataSet[DicomTags.PatientsBirthTime].GetDateTime(0));
     _sex       = DicomConverter.GetSex(dicomDataSet[DicomTags.PatientsSex].GetString(0, ""));
 }
Exemplo n.º 2
0
		/// <summary>
		/// Constructs a new <see cref="PatientNode"/> using default values.
		/// </summary>
		public PatientNode()
		{
			_studies = new StudyNodeCollection(this);
			_patientId = string.Format("PN{0}", this.Key);
			_name = "Unnamed Patient";
			_birthdate = null;
			_sex = PatientSex.Undefined;
		}
Exemplo n.º 3
0
 /// <summary>
 /// Constructs a new <see cref="PatientNode"/> using default values.
 /// </summary>
 public PatientNode()
 {
     _studies   = new StudyNodeCollection(this);
     _patientId = string.Format("PN{0}", this.Key);
     _name      = "Unnamed Patient";
     _birthdate = null;
     _sex       = PatientSex.Undefined;
 }
Exemplo n.º 4
0
		/// <summary>
		/// Constructs a new <see cref="PatientNode"/> using actual values from attributes in the given <see cref="DicomAttributeCollection"/>.
		/// </summary>
		/// <param name="dicomDataSet">The data set from which to initialize this node.</param>
		public PatientNode(DicomAttributeCollection dicomDataSet)
		{
			_studies = new StudyNodeCollection(this);
			_patientId = dicomDataSet[DicomTags.PatientId].GetString(0, "");
			_name = dicomDataSet[DicomTags.PatientsName].GetString(0, "");
			_birthdate = DicomConverter.GetDateTime(dicomDataSet[DicomTags.PatientsBirthDate].GetDateTime(0), dicomDataSet[DicomTags.PatientsBirthTime].GetDateTime(0));
			_sex = DicomConverter.GetSex(dicomDataSet[DicomTags.PatientsSex].GetString(0, ""));
		}
Exemplo n.º 5
0
		/// <summary>
		/// Copy constructor
		/// </summary>
		/// <param name="source"></param>
		/// <param name="copyDescendants"></param>
		private PatientNode(PatientNode source, bool copyDescendants)
		{
			_studies = new StudyNodeCollection(this);
			_patientId = source._patientId;
			_name = source._name;
			_birthdate = source._birthdate;
			_sex = source._sex;

			if (copyDescendants) {
				foreach (StudyNode study in source._studies) {
					_studies.Add(study.Copy(true));
				}
			}
		}
Exemplo n.º 6
0
        /// <summary>
        /// Copy constructor
        /// </summary>
        /// <param name="source"></param>
        /// <param name="copyDescendants"></param>
        private PatientNode(PatientNode source, bool copyDescendants)
        {
            _studies   = new StudyNodeCollection(this);
            _patientId = source._patientId;
            _name      = source._name;
            _birthdate = source._birthdate;
            _sex       = source._sex;

            if (copyDescendants)
            {
                foreach (StudyNode study in source._studies)
                {
                    _studies.Add(study.Copy(true));
                }
            }
        }
Exemplo n.º 7
0
        /// <summary>
        /// Gets a patient sex CS string based on a <see cref="PatientSex"/> enumeration, using an empty string for <see cref="PatientSex.Undefined"/>
        /// </summary>
        /// <param name="sex"></param>
        /// <returns></returns>
        public static string SetSex(PatientSex sex)
        {
            switch (sex)
            {
            case PatientSex.Male:
                return("M");

            case PatientSex.Female:
                return("F");

            case PatientSex.Other:
                return("O");

            case PatientSex.Undefined:
            default:
                return("");
            }
        }
Exemplo n.º 8
0
        public static string ToDcmSex(PatientSex theSex)
        {
            string res = "U";

            switch (theSex)
            {
            case PatientSex.Male:
                res = "M";
                break;

            case PatientSex.Female:
                res = "F";
                break;

            case PatientSex.Other:
                res = "O";
                break;

            default:
                break;
            }
            return(res);
        }
        public Guid Execute(CreatePatientModel model)
        {
            var firstName    = PatientFirstName.Create(model.FirstName);
            var middleName   = PatientMiddleName.Create(model.MiddleName);
            var lastName     = PatientLastName.Create(model.LastName);
            var dateOfBirth  = PatientDateOfBirth.Create(model.DateOfBirth);
            var placeOfBirth = PatientPlaceOfBirth.Create(model.PlaceOfBirth);
            var sex          = PatientSex.Create(model.Sex);
            var occupation   = PatientOccupation.Create(model.Occupation);
            var patientType  = PatientType.Create(model.PatientType);

            var patient = Patient.Create(firstName,
                                         middleName,
                                         lastName,
                                         dateOfBirth,
                                         placeOfBirth,
                                         occupation,
                                         sex,
                                         patientType);

            _databaseService.PatientsRepository.Add(patient);

            return(patient.Id);
        }
Exemplo n.º 10
0
        public void Execute(UpdatePatientModel model)
        {
            var dateOfBirth  = PatientDateOfBirth.Create(model.DateOfBirth);
            var sex          = PatientSex.Create(model.Sex);
            var patientType  = PatientType.Create(model.PatientType);
            var firstName    = PatientFirstName.Create(model.FirstName);
            var middleName   = PatientMiddleName.Create(model.MiddleName);
            var lastName     = PatientLastName.Create(model.LastName);
            var occupation   = PatientOccupation.Create(model.Occupation);
            var placeOfBirth = PatientPlaceOfBirth.Create(model.PlaceOfBirth);

            var patient = _databaseService.PatientsRepository.GetById(model.Id);

            patient.FirstName    = firstName;
            patient.MiddleName   = middleName;
            patient.LastName     = lastName;
            patient.DateOfBirth  = dateOfBirth;
            patient.PatientType  = patientType;
            patient.Occupation   = occupation;
            patient.PlaceOfBirth = placeOfBirth;
            patient.Sex          = sex;

            _databaseService.PatientsRepository.Update(patient);
        }
Exemplo n.º 11
0
		/// <summary>
		/// Gets a patient sex CS string based on a <see cref="PatientSex"/> enumeration, using an empty string for <see cref="PatientSex.Undefined"/>
		/// </summary>
		/// <param name="sex"></param>
		/// <returns></returns>
		public static string SetSex(PatientSex sex)
		{
			switch (sex)
			{
				case PatientSex.Male:
					return "M";
				case PatientSex.Female:
					return "F";
				case PatientSex.Other:
					return "O";
				case PatientSex.Undefined:
				default:
					return "";
			}
		}
Exemplo n.º 12
0
 public static string GetDisplayedName(this PatientSex sex) => EnumHelper <PatientSex> .GetDisplayedValue(sex);
Exemplo n.º 13
0
        private void saveNewPatientButton_Click(object sender, RoutedEventArgs e)
        {
            //here comes the code for saving a new patient
            // first check inputs
            string   _newPatientId        = patientIdTextBox.Text;
            string   _newPatientFirstName = patientFirstNameTextBox.Text;
            string   _newPatientLastName  = patientLastNameTextBox.Text;
            string   _newPatientComment   = patientCommentTextBox.Text;
            DateTime _newPatientBirthDate = new DateTime(1900, 1, 1);

            try
            {
                _newPatientBirthDate = (DateTime)patientBirthDate.SelectedDate;
            }
            catch { }
            int        _newPatientSexIndex = patientSexComboBox.SelectedIndex;
            PatientSex _newPatientSex      = PatientSex.N;

            switch (_newPatientSexIndex)
            {
            case 0: _newPatientSex = PatientSex.F;
                break;

            case 1: _newPatientSex = PatientSex.M;
                break;

            case 2: _newPatientSex = PatientSex.N;
                break;

            case 3: _newPatientSex = PatientSex.O;
                break;
            }
            //patientSexComboBox.SelectedItem as PatientSex;
            DateTime _newPatientCreationTime = DateTime.Now;
            // create new study folder
            string path = fileParameters.RSOMdataFolder + "\\study" + _newPatientId;

            if (Directory.Exists(path))
            {
                Console.WriteLine("That study exists already.");
                System.Windows.MessageBox.Show("That study exists already. Please change ID");
                return;
            }
            else
            {
                try
                {
                    Directory.CreateDirectory(@path);
                }
                catch
                {
                    System.Windows.MessageBox.Show("Not able to create new patient folder. Please check permissions");
                }
            }

            // Create patient Study nod-file and save data
            XDocument objXDoc = new XDocument(

                new XElement("DataModelPatient",
                             new XElement("FriendlyName", ""),
                             new XElement("CreationTime", _newPatientCreationTime.ToString("o")),
                             new XElement("Comment", _newPatientComment),
                             new XElement("FirstName", _newPatientFirstName),
                             new XElement("LastName", _newPatientLastName),
                             new XElement("Id", _newPatientId),
                             new XElement("BirthDate", _newPatientBirthDate.ToString("o")),
                             new XElement("Sex", _newPatientSex.ToString()),
                             new XElement("LastExam", "")
                             )
                );

            objXDoc.Declaration = new XDeclaration("1.0", "utf-8", "true");
            //
            string filename = path + "\\study" + _newPatientId + studyParameters.PatientFileNameExtension;

            objXDoc.Save(@filename);

            // Add to patient List
            DataModelPatient _newCreatedPatient = (new DataModelPatient {
                FirstName = _newPatientFirstName, LastName = _newPatientLastName, Id = _newPatientId, BirthDate = _newPatientBirthDate, Sex = _newPatientSex, Comment = _newPatientComment, FriendlyName = "", CreationTime = _newPatientCreationTime, PatientFilePath = path
            });

            patientList.Add(_newCreatedPatient);
            studyParameters.highestCurrentStudyId = Convert.ToInt32(_newPatientId);
            //
            //ViewModelPatient selected = patientsListView.SelectedItem as ViewModelPatient;
            //selectAndScrollToPatientListViewItem(selected);
            // fill the patient details with last selected patient
            //fillPatientDetails(_newCreatedPatient);
            patientsListView.SelectedItem = _newCreatedPatient;
            patientsListView.Items.Refresh();
            EditingNewPatient = false;


            // Change back GUI behaviour
            patientsListView.IsEnabled      = true;
            deletePatientButton.IsEnabled   = true;
            clearFilterButton.IsEnabled     = true;
            filterTextBox.IsEnabled         = true;
            selectButton.Visibility         = Visibility.Visible;
            saveNewPatientButton.Visibility = Visibility.Collapsed;
        }
Exemplo n.º 14
0
        public void InitiatePatientList()
        {
            patientList.Clear();
            try
            {
                if (!Directory.Exists(fileParameters.RSOMdataFolder))
                {
                    System.Windows.MessageBox.Show("Couldn't load patient list. Directory doesn't exist: " + fileParameters.RSOMdataFolder);
                    return;
                }
                // Get all directories in study folder
                string[] patientsPaths = Directory.GetDirectories(fileParameters.RSOMdataFolder);

                string patientMetaXMLPath;
                string patientStudyName;
                string studyNodePath;

                foreach (string path in patientsPaths)
                {
                    // Combine paths to get the patientMetaData-file
                    patientStudyName   = System.IO.Path.GetFileName(path);
                    patientMetaXMLPath = System.IO.Path.Combine(path, patientStudyName + studyParameters.PatientFileNameExtension);

                    studyNodePath = System.IO.Path.Combine(path, patientStudyName + studyParameters.StudyFileExtension);
                    //if (!File.Exists(studyNodePath))
                    //    continue;

                    if (File.Exists(patientMetaXMLPath))
                    {
                        // Open Patient.Metadata-file
                        XmlDocument xml = new XmlDocument();
                        try
                        {
                            xml.Load(@patientMetaXMLPath);
                        }
                        catch
                        {
                            Console.Write("ERROR Loading Data from Study Folder '" + patientMetaXMLPath + "'.\n");
                            return;
                        }
                        try
                        {
                            string   _firstName       = xml.SelectSingleNode("DataModelPatient/FirstName").InnerText;
                            string   _lastName        = xml.SelectSingleNode("DataModelPatient/LastName").InnerText;
                            string   _birthDateString = xml.SelectSingleNode("DataModelPatient/BirthDate").InnerText;
                            DateTime _birthDate       = Convert.ToDateTime(_birthDateString);
                            string   _id             = xml.SelectSingleNode("DataModelPatient/Id").InnerText;
                            string   _sexString      = xml.SelectSingleNode("DataModelPatient/Sex").InnerText;
                            string   _lastExamString = xml.SelectSingleNode("DataModelPatient/LastExam").InnerText;
                            DateTime _lastExam       = DateTime.Now;
                            if (_lastExamString != "")
                            {
                                _lastExam = Convert.ToDateTime(_lastExamString);
                            }
                            string _comment            = xml.SelectSingleNode("DataModelPatient/Comment").InnerText;
                            string _creationTimeString = xml.SelectSingleNode("DataModelPatient/CreationTime").InnerText;
                            //DateTime _creationTime = DateTime.ParseExact(_creationTimeString, "yyyy-MM-ddTHH:mm:ss,fff", System.Globalization.CultureInfo.InvariantCulture)
                            DateTime   _creationTime = Convert.ToDateTime(_creationTimeString);
                            string     _friendlyName = xml.SelectSingleNode("DataModelPatient/FriendlyName").InnerText;
                            PatientSex _sex          = PatientSex.N;
                            switch (_sexString)
                            {
                            case "F":
                                _sex = PatientSex.F;
                                break;

                            case "M":
                                _sex = PatientSex.M;
                                break;

                            case "N":
                                _sex = PatientSex.N;
                                break;

                            case "O":
                                _sex = PatientSex.O;
                                break;
                            }
                            //DateTime _birthDate = new DateTime(Convert.ToInt32(_birthDateString.Substring(0, 4)), Convert.ToInt32(_birthDateString.Substring(5, 2)), Convert.ToInt32(_birthDateString.Substring(8, 2)));
                            patientList.Add(new DataModelPatient {
                                FirstName = _firstName, LastName = _lastName, Id = _id, BirthDate = _birthDate, Sex = _sex, Comment = _comment, FriendlyName = _friendlyName, LastExam = _lastExam, CreationTime = _creationTime, PatientFilePath = path
                            });

                            //check the patient ID , and save it if it is higher then the previous one. This will get you get the max current patient ID
                            int _actualLoadedID = Convert.ToInt32(_id);
                            if (_actualLoadedID > studyParameters.highestCurrentStudyId)
                            {
                                studyParameters.highestCurrentStudyId = _actualLoadedID;
                            }
                        }
                        catch
                        {
                            Console.Write("ERROR reading Study Meta Data: '" + patientMetaXMLPath + "'.\n");
                            return;
                        }

                        //patientDM = DataModelSerialization.LoadFromPath<DataModelPatient>(patientMetaXMLPath, Log);
                        //TODO Remove PatientSex.O enum
                        //                       if (patientDM.Sex == PatientSex.O)
                        //                       {
                        //                           patientDM.Sex = PatientSex.M;
                        ////                           DataModelSerialization.SaveToPath(patientDM, patientMetaXMLPath, Log);
                        //                       }
                        //                       patientDM.PatientFilePath = patientMetaXMLPath;
                        //ViewModelPatient patientVM = new ViewModelPatient();
                        //patientVM.InitializePlugin(patientDM.FriendlyName, new DataModelCatalogItem(patientDM), this);
                        //patientVM.CommandLoad.Execute(null);
                        //patientVM.CheckDuplicateId += patientVM_CheckDuplicateId;
                        //_patients.Add(patientVM);
                    }

                    //added for testing, will create a default patient file .ptm for every study found in RootDirectory
                    //else
                    //{
                    //    random rg = new random();
                    //    datamodelpatient mockpatientdm = new datamodelpatient()
                    //    {
                    //        birthdate = datetime.now,
                    //        comment = "automatically created patient meta file.",
                    //        creationtime = datetime.now,
                    //        firstname = "first " + patientstudyname,
                    //        lastname = "last " + patientstudyname,
                    //        friendlyname = "friendly " + patientstudyname,
                    //        sex = (patientsex)(rg.next(3)),
                    //        lastexam = datetime.minvalue,
                    //        id = patientstudyname,
                    //        patientfilepath = patientmetaxmlpath
                    //    };
                    //    datamodelserialization.savetopath(mockpatientdm, patientmetaxmlpath, log);
                    //    viewmodelpatient patientvm = new viewmodelpatient();
                    //    patientvm.initializeplugin(mockpatientdm.friendlyname, new datamodelcatalogitem(mockpatientdm), this);
                    //    patientvm.commandload.execute(null);
                    //    _patients.add(patientvm);
                    //}
                }
            }
            catch (Exception ex)
            {
                //MSOTService.IMSOTLog.HandleError(EnumLogType.Warning, DisplayName, "Exception initiating patients manager: " + ex.Message);
                System.Windows.MessageBox.Show("Exception initiating patients manager: " + ex.Message);
            }
        }
Exemplo n.º 15
0
        private void CheckAndSaveChangesInPatientData()
        {
            // first get inputs
            string     _newPatientId        = patientIdTextBox.Text;
            string     _newPatientFirstName = patientFirstNameTextBox.Text;
            string     _newPatientLastName  = patientLastNameTextBox.Text;
            string     _newPatientComment   = patientCommentTextBox.Text;
            DateTime   _newPatientBirthDate = (DateTime)patientBirthDate.SelectedDate;
            int        _newPatientSexIndex  = patientSexComboBox.SelectedIndex;
            PatientSex _newPatientSex       = PatientSex.N;

            switch (_newPatientSexIndex)
            {
            case 0: _newPatientSex = PatientSex.F;
                break;

            case 1: _newPatientSex = PatientSex.M;
                break;

            case 2: _newPatientSex = PatientSex.O;
                break;

            case 3: _newPatientSex = PatientSex.N;
                break;
            }
            // check conformity of inputs
            // checkinputs();

            // compare inputs with actual data
            if (_newPatientId != (patientsListView.SelectedItem as DataModelPatient).Id || _newPatientFirstName != (patientsListView.SelectedItem as DataModelPatient).FirstName || _newPatientLastName != (patientsListView.SelectedItem as DataModelPatient).LastName || _newPatientComment != (patientsListView.SelectedItem as DataModelPatient).Comment || _newPatientBirthDate != (patientsListView.SelectedItem as DataModelPatient).BirthDate || _newPatientSex != (patientsListView.SelectedItem as DataModelPatient).Sex)
            {
                string           messageBoxText = "Save changes to study?";
                string           caption        = "Study data changed";
                MessageBoxButton button         = MessageBoxButton.YesNo;
                MessageBoxImage  icon           = MessageBoxImage.Warning;
                MessageBoxResult result         = MessageBox.Show(messageBoxText, caption, button, icon);

                // Process message box results
                switch (result)
                {
                case MessageBoxResult.Yes:
                    try
                    {
                        //save Changes to patientInfoFile
                        XDocument objXDoc = new XDocument(

                            new XElement("DataModelPatient",
                                         new XElement("FriendlyName", ""),
                                         new XElement("CreationTime", (patientsListView.SelectedItem as DataModelPatient).CreationTime.ToString("o")),
                                         new XElement("Comment", _newPatientComment),
                                         new XElement("FirstName", _newPatientFirstName),
                                         new XElement("LastName", _newPatientLastName),
                                         new XElement("Id", _newPatientId),
                                         new XElement("BirthDate", _newPatientBirthDate.ToString("o")),
                                         new XElement("Sex", _newPatientSex.ToString()),
                                         new XElement("LastExam", "")
                                         )
                            );

                        objXDoc.Declaration = new XDeclaration("1.0", "utf-8", "true");
                        //
                        string path     = fileParameters.RSOMdataFolder + "\\study" + _newPatientId;
                        string filename = path + "\\study" + _newPatientId + studyParameters.PatientFileNameExtension;
                        objXDoc.Save(@filename);

                        //Refresh patient List
                        (patientsListView.SelectedItem as DataModelPatient).FirstName = _newPatientFirstName;
                        (patientsListView.SelectedItem as DataModelPatient).LastName  = _newPatientLastName;
                        (patientsListView.SelectedItem as DataModelPatient).BirthDate = _newPatientBirthDate;
                        (patientsListView.SelectedItem as DataModelPatient).Sex       = _newPatientSex;
                        (patientsListView.SelectedItem as DataModelPatient).Comment   = _newPatientComment;

                        //refresh View
                        int lastSelectedIndex = patientsListView.SelectedIndex;
                        patientsListView.SelectedIndex = lastSelectedIndex;
                        patientsListView.Items.Refresh();
                    }
                    catch { }


                    break;

                case MessageBoxResult.No:

                    break;
                }
            }
        }