private static void UpdatePatientDataset( MyDataSet updatingDataset, DbConnection updatingDbConnection, DbTransaction updatingTransaction, MyUpdateTableDelegate updateTable ) { try { updateTable(updatingDataset, updatingDbConnection, updatingTransaction, updatingDataset.MyPatientTable.TableName); } catch (Exception exception) { System.Diagnostics.Debug.WriteLine(exception.Message); System.Diagnostics.Debug.Assert(false); throw; } }
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; } }