public void CommitChanges() { /* * // PopulateDatabase(); * this.phrasebookTableAdapter.Update( MyDataSet ); * this.cat2PhraseTableAdapter.Update( MyDataSet ); * this.categoriesTableAdapter.Update( MyDataSet ); */ this.tableAdapterManager.UpdateAll(MyDataSet); MyDataSet.AcceptChanges(); }
internal static void UpdateCompositeInstance ( MyDataSet compositeInstanceDataSet, DbConnection connection, MyUpdateTableDelegate updateTable ) { try { DbTransaction DbTransaction = null; connection.Open(); try { try { MyDataSet.MyPatientTableRow patientRow = compositeInstanceDataSet.Tables["MyPatientTable"].Rows[0] as MyDataSet.MyPatientTableRow; MyDataSet.MyStudyTableRow studyRow = compositeInstanceDataSet.Tables["MyStudyTable"].Rows[0] as MyDataSet.MyStudyTableRow; MyDataSet.MySeriesTableRow seriesRow = compositeInstanceDataSet.Tables["MySeriesTable"].Rows[0] as MyDataSet.MySeriesTableRow; MyDataSet.MyInstanceTableRow dimageRow = compositeInstanceDataSet.Tables["MyInstanceTable"].Rows[0] as MyDataSet.MyInstanceTableRow; int?patientId = -1; int?studyId = -1; int?seriesId = -1; // ************************* // Patient // ************************* DbTransaction = connection.BeginTransaction(); UpdatePatientDataset(compositeInstanceDataSet, connection, DbTransaction, updateTable); DbTransaction.Commit(); // Use the last generated PatientId -- if RowState is 'unchanged', nothing gets updated in the patientRow // In this case, we need to read the patientId from the database patientId = patientRow.PatientId; if (patientId == -1) { patientId = GetIntValue(connection, "MyPatientTable", "patientId", "PatientIdentification", patientRow.PatientIdentification); } // ************************* // Study // ************************* DbTransaction = connection.BeginTransaction(); if ((studyRow.RowState != DataRowState.Unchanged && studyRow.StudyPatientId == -1) && (patientId != null)) { studyRow.StudyPatientId = patientId.Value; } UpdateStudyDataset(compositeInstanceDataSet, connection, DbTransaction, updateTable); DbTransaction.Commit(); studyId = studyRow.StudyId; if (studyId == -1) { studyId = GetIntValue(connection, "MyStudyTable", "studyId", "StudyStudyInstanceUID", studyRow.StudyStudyInstanceUID); } // ************************* // Series // ************************* // Use the last generated StudyId DbTransaction = connection.BeginTransaction(); if ((seriesRow.RowState != DataRowState.Unchanged && seriesRow.SeriesStudyId == -1) && (studyId != null)) { seriesRow.SeriesStudyId = studyId.Value; } UpdateSeriesDataset(compositeInstanceDataSet, connection, DbTransaction, updateTable); DbTransaction.Commit(); seriesId = seriesRow.SeriesId; if (seriesId == -1) { seriesId = GetIntValue(connection, "MySeriesTable", "SeriesId", "SeriesSeriesInstanceUID", seriesRow.SeriesSeriesInstanceUID); } // ************************* // Instance // ************************* // Use the last generated SeriesId DbTransaction = connection.BeginTransaction(); if ((dimageRow.RowState != DataRowState.Unchanged && dimageRow.ImageSeriesId == -1) && (seriesId != null)) { dimageRow.ImageSeriesId = seriesId.Value; } UpdateInstanceDataset(compositeInstanceDataSet, connection, DbTransaction, updateTable); DbTransaction.Commit(); } catch (Exception exception) { System.Diagnostics.Debug.Assert(false, exception.ToString()); DbTransaction.Rollback(); throw; } } finally { connection.Close(); } compositeInstanceDataSet.AcceptChanges(); } catch (Exception exception) { System.Diagnostics.Debug.WriteLine(exception.Message); System.Diagnostics.Debug.Assert(false); throw; } }
// Returns a DataSet that reflects the existence of PatientID, StudyInstanceUID, SeriesInstanceUID, and SOPInstanceUID // * If the patient does not exist, returns an empty DataSet // * If patient exists but no study returns a DataSet where MyPatientTable has row with PatientID of DicomDataSet // * If patient exists, study exists but no series, returns a DataSet that has PatientID (MyPatientTable), and StudyInstanceUID (MyStudyTable) // * If patient, study, series exist but no Instance, returns a DataSet with PatientID, StudyInstanceUID, and SeriesInstanceUID // * If patinet, study series, instance exist, returns empty dataset private DataSet GetUpdateDataSet ( DicomDataSet ds, bool updateExistentPatient, bool updateExistentStudy, bool updateExistentSeries, bool updateExistentInstances ) { MatchingParameterCollection matchingEntitiesCollection = new MatchingParameterCollection(); MatchingParameterList matchingEntitiesList = new MatchingParameterList(); matchingEntitiesCollection.Add(matchingEntitiesList); MyInstance instance = new MyInstance(); instance.SOPInstanceUID = ds.MyGetStringValue(DicomTag.SOPInstanceUID); bool instanceExists = IsCompositeInstancesExists(instance.SOPInstanceUID); if (instanceExists) { matchingEntitiesList.Add(instance); DeleteInstance(matchingEntitiesCollection); matchingEntitiesList.Remove(instance); instanceExists = false; } MyPatient patient = new MyPatient(); patient.PatientIdentification = ds.MyGetStringValue(DicomTag.PatientID); if (null != patient.PatientIdentification) { matchingEntitiesList.Add(patient); } bool patientExist = IsPatientsExists(patient.PatientIdentification); if (updateExistentPatient && patientExist) { // case #1 return(QueryCompositeInstances(matchingEntitiesCollection)); } else if (!patientExist) { // case #2 return(new MyDataSet()); } else { // case #3 // (!updateExistentPatient) && (patientExist) // int ? patientId = GetIntValue(patient.PatientIdentification); MyStudy study = new MyStudy(); study.StudyStudyInstanceUID = ds.MyGetStringValue(DicomTag.StudyInstanceUID); if (null != study.StudyStudyInstanceUID) { matchingEntitiesList.Add(study); } bool studyExists = IsStudyExists(study.StudyStudyInstanceUID); if (updateExistentStudy && studyExists) { return(QueryCompositeInstances(matchingEntitiesCollection)); } else if (!studyExists) { if (matchingEntitiesList.Contains(study)) { matchingEntitiesList.Remove(study); } return(QueryPatients(matchingEntitiesCollection)); } else { MySeries series = new MySeries(); series.SeriesSeriesInstanceUID = ds.MyGetStringValue(DicomTag.SeriesInstanceUID); if (!string.IsNullOrEmpty(series.SeriesSeriesInstanceUID)) { matchingEntitiesList.Add(series); } bool seriesExists = IsSeriesExists(series.SeriesSeriesInstanceUID); if (updateExistentSeries && seriesExists) { return(QueryCompositeInstances(matchingEntitiesCollection)); } else if (!seriesExists) { if (matchingEntitiesList.Contains(series)) { matchingEntitiesList.Remove(series); } return(QueryStudies(matchingEntitiesCollection)); } else { if (!string.IsNullOrEmpty(instance.SOPInstanceUID)) { matchingEntitiesList.Add(instance); } if (updateExistentInstances && instanceExists) { return(QueryCompositeInstances(matchingEntitiesCollection)); } else { MyDataSet.MyPatientTableRow patientRow; MyDataSet.MyStudyTableRow studyRow; MyDataSet.MySeriesTableRow seriesRow; MyDataSet myDataSet = new MyDataSet(); myDataSet.EnforceConstraints = false; myDataSet.MyPatientTable.BeginLoadData(); myDataSet.MyStudyTable.BeginLoadData(); myDataSet.MySeriesTable.BeginLoadData(); myDataSet.MyInstanceTable.BeginLoadData(); patientRow = myDataSet.MyPatientTable.AddMyPatientTableRow(patient.PatientIdentification, string.Empty, DateTime.MinValue, string.Empty, string.Empty); //if (patientId != null) //{ // patientRow.PatientId = patientId.Value; //} //dicomDataSet.MyPatientTable.Rows[0]["PatientId"] = patientId; studyRow = myDataSet.MyStudyTable.AddMyStudyTableRow(patientRow, study.StudyStudyInstanceUID, DateTime.MinValue, string.Empty, string.Empty, string.Empty, string.Empty); seriesRow = myDataSet.MySeriesTable.AddMySeriesTableRow( studyRow, series.SeriesSeriesInstanceUID, string.Empty, 0, string.Empty, DateTime.MinValue, string.Empty); //1. if updateInstance and instance exist not valid (will be in the above IF //2. if updateInstance and instance NOT exist don't fill from Db //3. if NOT updateInstance and instance exist then insert SOP Instance UID //4. if NOT updateInstnace and NOT instance exist then don't fill from Db //case 3 above if (instanceExists) { myDataSet.MyInstanceTable.AddMyInstanceTableRow(seriesRow, instance.SOPInstanceUID, 0, DateTime.MinValue, string.Empty, string.Empty, 0, 0, 0); } myDataSet.AcceptChanges(); myDataSet.MyPatientTable.EndLoadData(); myDataSet.MyStudyTable.EndLoadData(); myDataSet.MySeriesTable.EndLoadData(); myDataSet.MyInstanceTable.EndLoadData(); myDataSet.EnforceConstraints = true; return(myDataSet); } } } } }