public DbDataReader Find( int siteId, string loginProvider, string providerKey) { StringBuilder sqlCommand = new StringBuilder(); sqlCommand.Append("SELECT * "); sqlCommand.Append("FROM mp_UserLogins "); sqlCommand.Append("WHERE "); sqlCommand.Append("SiteId = @SiteId "); sqlCommand.Append(" AND "); sqlCommand.Append("LoginProvider = @LoginProvider "); sqlCommand.Append(" AND "); sqlCommand.Append("ProviderKey = @ProviderKey "); sqlCommand.Append(";"); SqlCeParameter[] arParams = new SqlCeParameter[3]; arParams[0] = new SqlCeParameter("@LoginProvider", SqlDbType.NVarChar, 128); arParams[0].Value = loginProvider; arParams[1] = new SqlCeParameter("@ProviderKey", SqlDbType.NVarChar, 128); arParams[1].Value = providerKey; arParams[2] = new SqlCeParameter("@SiteId", SqlDbType.Int); arParams[2].Value = siteId; return(AdoHelper.ExecuteReader( connectionString, CommandType.Text, sqlCommand.ToString(), arParams)); }
public DbDataReader GetByUser(int siteId, string userId) { StringBuilder sqlCommand = new StringBuilder(); sqlCommand.Append("SELECT * "); sqlCommand.Append("FROM mp_UserClaims "); sqlCommand.Append("WHERE "); sqlCommand.Append("SiteId = @SiteId "); sqlCommand.Append(" AND "); sqlCommand.Append("UserId = @UserId "); sqlCommand.Append(";"); SqlCeParameter[] arParams = new SqlCeParameter[2]; arParams[0] = new SqlCeParameter("@UserId", SqlDbType.NVarChar, 128); arParams[0].Value = userId; arParams[1] = new SqlCeParameter("@SiteId", SqlDbType.Int); arParams[1].Value = siteId; return(AdoHelper.ExecuteReader( connectionString, CommandType.Text, sqlCommand.ToString(), arParams)); }
/// <summary> /// Gets a page of data from the mp_SystemLog table. /// </summary> /// <param name="pageNumber">The page number.</param> /// <param name="pageSize">Size of the page.</param> /// <param name="totalPages">total pages</param> public DbDataReader GetPageAscending( int pageNumber, int pageSize) { int pageLowerBound = (pageSize * pageNumber) - pageSize; //totalPages = 1; //int totalRows = GetCount(); //if (pageSize > 0) totalPages = totalRows / pageSize; //if (totalRows <= pageSize) //{ // totalPages = 1; //} //else //{ // int remainder; // Math.DivRem(totalRows, pageSize, out remainder); // if (remainder > 0) // { // totalPages += 1; // } //} int offset = 0; if (pageNumber > 1) { offset = (pageSize * pageNumber) - pageSize; } StringBuilder sqlCommand = new StringBuilder(); sqlCommand.Append("SELECT * "); sqlCommand.Append("FROM mp_SystemLog "); //sqlCommand.Append("WHERE "); sqlCommand.Append("ORDER BY ID "); //order by is required if using fetch and offset or an error will occur, uncomment it and put at least one column to sort by sqlCommand.Append("OFFSET " + offset.ToString(CultureInfo.InvariantCulture) + " ROWS "); sqlCommand.Append("FETCH NEXT " + pageSize.ToString(CultureInfo.InvariantCulture) + "ROWS ONLY "); sqlCommand.Append(";"); //SqlCeParameter[] arParams = new SqlCeParameter[1]; //arParams[0] = new SqlCeParameter("@ApplicationID", SqlDbType.UniqueIdentifier); //arParams[0].Value = applicationId; return(AdoHelper.ExecuteReader( connectionString, CommandType.Text, sqlCommand.ToString(), null)); }
public static int ListAllImages(string ConnectionString, ListView listView) { int count = 0; ListViewItem item = null; listView.Items.Clear(); SqlCeDataReader reader = SqlCeHelper.ExecuteReader(ConnectionString, sQueryGetAllImages); while (reader.Read()) { item = AddItem(reader, "PatientId", listView, null); if (item != null) { item.Tag = reader["SOPInstanceUid"]; // set the item data to be SOPInstanceUid AddItem(reader, "Name", listView, item); AddItem(reader, "StudyId", listView, item); AddItem(reader, "SeriesNumber", listView, item); AddItem(reader, "Modality", listView, item); AddItem(reader, "ImageNumber", listView, item); AddItem(reader, "TransferSyntax", listView, item); AddItem(reader, "SOPClassUid", listView, item); AddItem(reader, "ReferencedFile", listView, item); count++; } } reader.Close(); return(count); }
//disable warning about not really being async // we know it is not, and for SqlCe there is probably no benefit to making it really async #pragma warning disable 1998 public async Task <DbDataReader> SchemaVersionGetAll(CancellationToken cancellationToken = default(CancellationToken)) { StringBuilder sqlCommand = new StringBuilder(); sqlCommand.Append("SELECT * "); sqlCommand.Append("FROM mp_SchemaVersion "); sqlCommand.Append("ORDER BY ApplicationName "); sqlCommand.Append(";"); return(AdoHelper.ExecuteReader( connectionString, CommandType.Text, sqlCommand.ToString(), null)); }
public DbDataReader GetSiteSettingsExList(int siteId) { StringBuilder sqlCommand = new StringBuilder(); sqlCommand.Append("SELECT * "); sqlCommand.Append("FROM mp_SiteSettingsEx "); sqlCommand.Append("WHERE "); sqlCommand.Append("SiteID = @SiteID "); sqlCommand.Append(";"); SqlCeParameter[] arParams = new SqlCeParameter[1]; arParams[0] = new SqlCeParameter("@SiteID", SqlDbType.Int); arParams[0].Value = siteId; return(AdoHelper.ExecuteReader( connectionString, CommandType.Text, sqlCommand.ToString(), arParams)); }
public DbDataReader GetOne(Guid guid) { StringBuilder sqlCommand = new StringBuilder(); sqlCommand.Append("SELECT * "); sqlCommand.Append("FROM mp_SiteFolders "); sqlCommand.Append("WHERE "); sqlCommand.Append("Guid = @Guid "); sqlCommand.Append(";"); SqlCeParameter[] arParams = new SqlCeParameter[1]; arParams[0] = new SqlCeParameter("@Guid", SqlDbType.UniqueIdentifier); arParams[0].Value = guid; return(AdoHelper.ExecuteReader( connectionString, CommandType.Text, sqlCommand.ToString(), arParams)); }
public void MyDelegate(MyParameters p) { Leadtools.AddIn.StorageCommit.StorageCommit commit = new Leadtools.AddIn.StorageCommit.StorageCommit(); DicomRequest request = new DicomRequest(p._client); this.AddCommitItem(p._ds, DicomTag.ReferencedPerformedProcedureStepSequence, commit); this.AddCommitItem(p._ds, DicomTag.ReferencedSOPSequence, commit); foreach (StorageCommitItem item in commit.Items) { string sql = string.Format("SELECT * FROM Images WHERE SOPInstanceUID = '{0}'", item.SOPInstanceUID); SqlCeDataReader r = SqlCeHelper.ExecuteReader(p._connectionString, sql); if (r.Read()) { if (r["SOPClassUID"].ToString() == item.SOPClassUID) { string referencedFile = r["referencedFile"].ToString(); if (File.Exists(referencedFile)) { item.Status = DicomCommandStatusType.Success; } else { item.Status = DicomCommandStatusType.NoSuchObjectInstance; } } else { item.Status = DicomCommandStatusType.ClaseInstanceConflict; } item.StudyInstanceUID = r["StudyInstanceUID"].ToString(); } else { item.Status = DicomCommandStatusType.NoSuchObjectInstance; } r.Close(); } DicomDataSet commitDS = BuildDataset(p._client, commit, p.ServerAE); PresentationContext pc = new PresentationContext(); pc.AbstractSyntax = DicomUidType.StorageCommitmentPushModelClass; pc.TransferSyntaxes.Add(DicomUidType.ImplicitVRLittleEndian); request.PresentationContexts.Add(pc); request.RequireMessagePump = true; request.ReceiveNReportResponse += new ReceiveNReportResponseDelegate(request_ReceiveNReportResponse); request.ConnectType = ConnectType.Conditional; _DicomRequest.SendNReportRequest(request, p._presentationId, p._messageId, DicomUidType.StorageCommitmentPushModelClass, DicomUidType.StorageCommitmentPushModelInstance, commit.FailedCount > 0 ? 2 : 1, commitDS); }
public static int GetCount(string ConnectionString, string sTable, string sUniqueId, string sValue) { string sCount = "0"; string sQuery = string.Format(sQueryCount, sTable, sUniqueId, sValue); SqlCeDataReader reader = SqlCeHelper.ExecuteReader(ConnectionString, sQuery); if (reader.Read()) { sCount = reader["count"].ToString(); } reader.Close(); int nCount = Convert.ToInt32(sCount); return(nCount); }
public static void DeleteDicomRecord(string ConnectionString, string sSOPInstanceUid) { string sReferencedFile = string.Empty; string sPatientId = string.Empty; string sStudyInstanceUid = string.Empty; string sSeriesInstanceUid = string.Empty; string sQuery = string.Format(sQueryGetOneImage, "AND (SOPInstanceUid = '" + sSOPInstanceUid + "')"); SqlCeDataReader reader = SqlCeHelper.ExecuteReader(ConnectionString, sQuery); if (reader.Read()) { sReferencedFile = reader["ReferencedFile"].ToString(); sPatientId = reader["PatientId"].ToString(); sStudyInstanceUid = reader["StudyInstanceUid"].ToString(); sSeriesInstanceUid = reader["SeriesInstanceUid"].ToString(); } reader.Close(); // Delete file from folder if ((sReferencedFile.Length > 0) && (File.Exists(sReferencedFile))) { try { File.Delete(sReferencedFile); } catch (Exception) { } } // Delete from the Image table bool bDelete = true; DeleteTableItem(ConnectionString, "Images", "SOPInstanceUid", sSOPInstanceUid); bDelete = DeleteTableItemIfNecessary(ConnectionString, "Series", "Images", "SeriesInstanceUid", sSeriesInstanceUid); if (bDelete) { bDelete = DeleteTableItemIfNecessary(ConnectionString, "Studies", "Series", "StudyInstanceUid", sStudyInstanceUid); } if (bDelete) { DeleteTableItemIfNecessary(ConnectionString, "Patients", "Studies", "PatientId", sPatientId); } }
public DbDataReader GetById(int roleId) { StringBuilder sqlCommand = new StringBuilder(); sqlCommand.Append("SELECT * "); sqlCommand.Append("FROM mp_Roles "); sqlCommand.Append("WHERE "); sqlCommand.Append("RoleID = @RoleID "); sqlCommand.Append(";"); SqlCeParameter[] arParams = new SqlCeParameter[1]; arParams[0] = new SqlCeParameter("@RoleID", SqlDbType.Int); arParams[0].Value = roleId; return(AdoHelper.ExecuteReader( connectionString, CommandType.Text, sqlCommand.ToString(), arParams)); }
public static void DeleteAllReferencedFiles(string ConnectionString) { SqlCeDataReader reader = SqlCeHelper.ExecuteReader(ConnectionString, sQueryReferencedFiles); while (reader.Read()) { string sReferencedFile = reader["ReferencedFile"].ToString(); if ((sReferencedFile.Length > 0) && (File.Exists(sReferencedFile))) { try { File.Delete(sReferencedFile); } catch (Exception) { } } } reader.Close(); }
/// <summary> /// Gets an IDataReader with one row from the mp_UserLocation table. /// </summary> /// <param name="rowID"> rowID </param> public DbDataReader GetOne(Guid rowID) { StringBuilder sqlCommand = new StringBuilder(); sqlCommand.Append("SELECT * "); sqlCommand.Append("FROM mp_UserLocation "); sqlCommand.Append("WHERE "); sqlCommand.Append("RowID = @RowID "); sqlCommand.Append(";"); SqlCeParameter[] arParams = new SqlCeParameter[1]; arParams[0] = new SqlCeParameter("@RowID", SqlDbType.UniqueIdentifier); arParams[0].Value = rowID; return(AdoHelper.ExecuteReader( connectionString, CommandType.Text, sqlCommand.ToString(), arParams)); }
/// <summary> /// Finds the image. /// </summary> /// <param name="addin">The addin.</param> /// <param name="affectedClass">The affected class.</param> /// <param name="connection">The connection.</param> /// <param name="ds">The ds.</param> /// <param name="response">The response.</param> /// <returns></returns> public static DicomCommandStatusType FindImage(FindAddIn addin, string affectedClass, string connection, DicomDataSet ds, DicomDataSet response) { string filter = string.Empty; string temp; SqlCeDataReader reader; filter = "s.StudyInstanceUID = '" + ds.GetValue <string>(DicomTag.StudyInstanceUID, string.Empty) + "'"; filter += " AND SeriesInstanceUID = '" + ds.GetValue <string>(DicomTag.SeriesInstanceUID, string.Empty) + "'"; temp = ds.GetValue <string>(DicomTag.PatientID, string.Empty); if (affectedClass == DicomUidType.PatientRootQueryFind && temp.Length > 0) { filter += " AND p.PatientID = '" + temp + "'"; } List <string> instances = ds.GetValue <List <string> >(DicomTag.SOPInstanceUID, new List <string>()); foreach (string instance in instances) { filter += " AND SOPInstanceUID ='" + instance + "'"; } temp = ds.GetValue <string>(DicomTag.InstanceNumber, string.Empty); if (temp.Length > 0) { filter += " AND InstanceNumber = " + temp.ToString(); } filter = "SELECT p.PatientId,Name,Images.* FROM Images JOIN Studies s ON s.StudyInstanceUid = images.StudyInstanceUid JOIN Patients p ON p.PatientId = s.PatientId WHERE " + filter; reader = SqlCeHelper.ExecuteReader(connection, filter); while (reader.Read()) { response.InsertElementAndSetValue(DicomTag.SOPInstanceUID, reader["SOPInstanceUID"]); if (affectedClass == DicomUidType.PatientRootQueryFind) { response.InsertElementAndSetValue(DicomTag.PatientID, ds.GetValue <string>(DicomTag.PatientID, string.Empty)); } if (reader["ImageNumber"] != null && reader["ImageNumber"].ToString().Length > 0) { response.InsertElementAndSetValue(DicomTag.InstanceNumber, reader["ImageNumber"]); } if (addin.OnMatchFound(response)) { reader.Close(); return(DicomCommandStatusType.Cancel); } else if (addin.Cancel) { if (addin.BreakType == BreakType.Cancel) { return(DicomCommandStatusType.Cancel); } else { return(DicomCommandStatusType.Failure); } } //response.Clear(); } return(DicomCommandStatusType.Success); }
/// <summary> /// Finds the series. /// </summary> /// <param name="addin">The addin.</param> /// <param name="affectedClass">The affected class.</param> /// <param name="connection">The connection.</param> /// <param name="ds">The ds.</param> /// <param name="response">The response.</param> /// <returns></returns> public static DicomCommandStatusType FindSeries(FindAddIn addin, string affectedClass, string connection, DicomDataSet ds, DicomDataSet response) { string filter = string.Empty; string temp; SqlCeDataReader reader; filter = "s.StudyInstanceUID = '" + ds.GetValue <string>(DicomTag.StudyInstanceUID, string.Empty) + "'"; temp = ds.GetValue <string>(DicomTag.PatientID, string.Empty); if (affectedClass == DicomUidType.PatientRootQueryFind && temp.Length > 0) { filter += " AND p.PatientID = '" + temp + "'"; } temp = ds.GetValue <string>(DicomTag.SeriesInstanceUID, string.Empty); if (temp.Length > 0) { filter += " AND SeriesInstanceUID='" + temp + "'"; } temp = ds.GetValue <string>(DicomTag.Modality, string.Empty); if (temp.Length > 0) { filter += " AND Modality LIKE '" + temp + "'"; } temp = ds.GetValue <string>(DicomTag.SeriesNumber, string.Empty); if (temp.Length > 0) { filter += " AND SeriesNumber = " + temp; } filter = "SELECT p.PatientId,Name,Series.* FROM Series JOIN Studies s ON s.StudyInstanceUid = Series.StudyInstanceUid JOIN Patients p ON p.PatientId = s.PatientId WHERE " + filter; reader = SqlCeHelper.ExecuteReader(connection, filter); while (reader.Read()) { response.InsertElementAndSetValue(DicomTag.SeriesInstanceUID, reader["SeriesInstanceUID"]); if (reader["Modality"] != null) { response.InsertElementAndSetValue(DicomTag.Modality, reader["Modality"]); } if (reader["SeriesNumber"] != null && IsInteger(reader["SeriesNumber"].ToString())) { response.InsertElementAndSetValue(DicomTag.SeriesNumber, reader["SeriesNumber"]); } if (reader["SeriesDate"] != null && reader["SeriesDate"].ToString().Length > 0) { DateTime date = DateTime.Parse(reader["SeriesDate"].ToString()); response.InsertElementAndSetValue(DicomTag.SeriesDate, date.ToShortDateString()); response.InsertElementAndSetValue(DicomTag.SeriesTime, date.ToShortTimeString()); } if (reader["SeriesDesscription"] != null) { response.InsertElementAndSetValue(DicomTag.SeriesDescription, reader["SeriesDesscription"].ToString()); } if (reader["StudyInstanceUID"] != null) { response.InsertElementAndSetValue(DicomTag.StudyInstanceUID, reader["StudyInstanceUID"].ToString()); } try { string sql = string.Format("SELECT Count(*) FROM Images WHERE SeriesInstanceUID = '{0}'", reader["SeriesInstanceUID"]); response.InsertElementAndSetValue(DicomTag.NumberOfSeriesRelatedInstances, (int)SqlCeHelper.ExecuteScalar(connection, sql)); } catch { } if (addin.OnMatchFound(response)) { reader.Close(); return(DicomCommandStatusType.Cancel); } else if (addin.Cancel) { if (addin.BreakType == BreakType.Cancel) { return(DicomCommandStatusType.Cancel); } else { return(DicomCommandStatusType.Failure); } } //response.Clear(); } return(DicomCommandStatusType.Success); }
/// <summary> /// Finds the study. /// </summary> /// <param name="addin">The addin.</param> /// <param name="connection">The connection.</param> /// <param name="ds">The ds.</param> /// <param name="response">The response.</param> /// <returns></returns> public static DicomCommandStatusType FindStudy(FindAddIn addin, string connection, DicomDataSet ds, DicomDataSet response) { string filter = string.Empty; string temp; SqlCeDataReader reader; temp = ds.GetValue <string>(DicomTag.PatientID, string.Empty); if (temp.Length > 0) { filter = CheckForWildcards("Studies.PatientId = '" + temp + "'"); } temp = ds.GetValue <string>(DicomTag.PatientName, string.Empty); if (temp.Length > 0) { if (filter.Length > 0) { filter += " AND "; } filter += CheckForWildcards("Name LIKE '" + temp + "'"); } List <string> instances = ds.GetValue <List <string> >(DicomTag.StudyInstanceUID, new List <string>()); foreach (string instance in instances) { if (filter.Length > 0) { filter += " AND "; } filter += CheckForWildcards("StudyInstanceUid = '" + instance + "'"); } DicomDateRangeValue[] d = ExtensionMethods.GetDateRange(ds, DicomTag.StudyDate); DicomTimeRangeValue[] t = ExtensionMethods.GetTimeRange(ds, DicomTag.StudyTime); int dCount = (d == null ? 0 : d.Length); int tCount = (t == null ? 0 : t.Length); int maxEntries = Math.Max(dCount, tCount); for (int i = 0; i < maxEntries; i++) { DateTime startDate = new DateTime(1900, 1, 1, 0, 0, 0); DateTime endDate = new DateTime(3000, 12, 31, 23, 59, 59); DateTime startTime = DateTime.MinValue; DateTime endTime = DateTime.MaxValue; string sStartDateTime = string.Empty; string sEndDateTime = string.Empty; // Get the start date and end date if (i < dCount) { // start date if ((d[i].Type == DicomRangeType.Lower) || (d[i].Type == DicomRangeType.Both)) { startDate = new DateTime(d[i].Date1.Year, d[i].Date1.Month, d[i].Date1.Day, 0, 0, 0); } // end date if (d[i].Type == DicomRangeType.Upper) { endDate = new DateTime(d[i].Date1.Year, d[i].Date1.Month, d[i].Date1.Day, 23, 59, 59); } else if (d[i].Type == DicomRangeType.Both) { endDate = new DateTime(d[i].Date2.Year, d[i].Date2.Month, d[i].Date2.Day, 23, 59, 59); } } // Get the start time and end time if (i < tCount) { // start date if ((t[i].Type == DicomRangeType.Lower) || (t[i].Type == DicomRangeType.Both)) { startTime = new DateTime(1, 1, 1, t[i].Time1.Hours, t[i].Time1.Minutes, t[i].Time1.Seconds); } // end date if (t[i].Type == DicomRangeType.Upper) { endTime = new DateTime(1, 1, 1, t[i].Time1.Hours, t[i].Time1.Minutes, t[i].Time1.Seconds); } else if (t[i].Type == DicomRangeType.Both) { endTime = new DateTime(1, 1, 1, t[i].Time2.Hours, t[i].Time2.Minutes, t[i].Time2.Seconds); } } string sAdd = string.Format("( (StudyDate >= '{0}') and (StudyDate <= '{1}'))", startDate, endDate); string sTimeFormatString = "AND ((CONVERT(nvarchar,StudyDate,108) BETWEEN '{0}' AND '{1}'))"; filter += sAdd; sAdd = string.Format(sTimeFormatString, startTime.ToString("HH:mm:ss"), endTime.ToString("HH:mm:ss")); filter += sAdd; } temp = ds.GetValue <string>(DicomTag.AccessionNumber, string.Empty); if (temp.Length > 0) { if (filter.Length > 0) { filter += " AND "; } filter += CheckForWildcards("AccessionNumber = '" + temp + "'"); } temp = ds.GetValue <string>(DicomTag.StudyID, string.Empty); if (temp.Length > 0) { if (filter.Length > 0) { filter += " AND "; } filter += CheckForWildcards("StudyId LIKE '" + temp + "'"); } temp = ds.GetValue <string>(DicomTag.ReferringPhysicianName, string.Empty); if (temp.Length > 0) { temp = temp.Replace("*", "%"); if (filter.Length > 0) { filter += " AND "; } filter += CheckForWildcards("ReferDrName LIKE '" + temp + "'"); } temp = FindElementModalitiesInStudy(ds); if (temp.Length > 0) { if (filter.Length > 0) { filter += " AND "; } filter += temp; } if (string.IsNullOrEmpty(filter)) { filter = "SELECT p.PatientId,Name,Studies.* FROM Studies JOIN Patients p ON p.PatientId = Studies.PatientId"; } else { filter = "SELECT p.PatientId,Name,Studies.* FROM Studies JOIN Patients p ON p.PatientId = Studies.PatientId WHERE " + filter; } reader = SqlCeHelper.ExecuteReader(connection, filter); while (reader.Read()) { response.InsertElementAndSetValue(DicomTag.StudyInstanceUID, reader["StudyInstanceUID"]); if (reader["StudyDate"] != System.DBNull.Value) { DateTime date = DateTime.Parse(reader["StudyDate"].ToString()); response.InsertElementAndSetValue(DicomTag.StudyDate, date.ToShortDateString()); response.InsertElementAndSetValue(DicomTag.StudyTime, date.ToShortTimeString()); } if (reader["AccessionNumber"] != null) { response.InsertElementAndSetValue(DicomTag.AccessionNumber, reader["AccessionNumber"]); } if (reader["StudyId"] != null) { response.InsertElementAndSetValue(DicomTag.StudyID, reader["StudyId"]); } if (reader["PatientID"] != null) { response.InsertElementAndSetValue(DicomTag.PatientID, reader["PatientId"]); } if (reader["Name"] != null) { response.InsertElementAndSetValue(DicomTag.PatientName, reader["Name"]); } if (reader["ReferDrName"] != null) { response.InsertElementAndSetValue(DicomTag.ReferringPhysicianName, reader["ReferDrName"]); } if (reader["StudyDescription"] != null) { response.InsertElementAndSetValue(DicomTag.StudyDescription, reader["StudyDescription"]); } try { string sql = string.Format("SELECT Count(*) FROM Series WHERE StudyInstanceUid = '{0}'", reader["StudyInstanceUID"]); response.InsertElementAndSetValue(DicomTag.NumberOfStudyRelatedSeries, (int)SqlCeHelper.ExecuteScalar(connection, sql)); sql = string.Format("SELECT Count(*) FROM Images WHERE StudyInstanceUid = '{0}'", reader["StudyInstanceUID"]); response.InsertElementAndSetValue(DicomTag.NumberOfStudyRelatedInstances, (int)SqlCeHelper.ExecuteScalar(connection, sql)); } catch { } if (addin.OnMatchFound(response)) { reader.Close(); return(DicomCommandStatusType.Cancel); } else if (addin.Cancel) { if (addin.BreakType == BreakType.Cancel) { return(DicomCommandStatusType.Cancel); } else { return(DicomCommandStatusType.Failure); } } //response.Clear(); } return(DicomCommandStatusType.Success); }
public static DicomCommandStatusType FindPatient(FindAddIn addin, string connection, DicomDataSet ds, DicomDataSet response) { string filter = string.Empty; string patientID = ds.GetValue <string>(DicomTag.PatientID, string.Empty); string patientName = ds.GetValue <string>(DicomTag.PatientName, string.Empty); SqlCeDataReader reader = null; if (patientID.Length > 0) { filter = CheckForWildcards("PatientID LIKE '" + patientID + "'"); } if (patientName.Length > 0) { if (filter.Length > 0) { filter += " AND "; } filter += CheckForWildcards("Name LIKE '" + patientName + "'"); } if (string.IsNullOrEmpty(filter)) { filter = "SELECT * FROM Patients"; } else { filter = "SELECT * FROM Patients WHERE " + filter; } reader = SqlCeHelper.ExecuteReader(connection, filter); while (reader.Read()) { response.InsertElementAndSetValue(DicomTag.PatientID, reader["PatientID"]); if (reader["Name"] != null) { response.InsertElementAndSetValue(DicomTag.PatientName, reader["Name"]); } if (reader["BirthDate"] != null) { response.InsertElementAndSetValue(DicomTag.PatientBirthDate, reader["BirthDate"]); } if (reader["Sex"] != null) { response.InsertElementAndSetValue(DicomTag.PatientSex, reader["Sex"]); } if (reader["EthnicGroup"] != null) { response.InsertElementAndSetValue(DicomTag.EthnicGroup, reader["EthnicGroup"]); } if (reader["Comments"] != null) { response.InsertElementAndSetValue(DicomTag.PatientComments, reader["Comments"]); } if (addin.OnMatchFound(response)) { reader.Close(); return(DicomCommandStatusType.Cancel); } else if (addin.Cancel) { if (addin.BreakType == BreakType.Cancel) { return(DicomCommandStatusType.Cancel); } else { return(DicomCommandStatusType.Failure); } } //response.Clear(); } return(DicomCommandStatusType.Success); }
/// <summary> /// Moves the images. /// </summary> /// <param name="addin">The addin.</param> /// <param name="level">The level.</param> /// <param name="affectedClass">The affected class.</param> /// <param name="connection">The connection.</param> /// <param name="ds">The ds.</param> /// <returns></returns> internal static DicomCommandStatusType MoveImages(MoveAddIn addin, string level, string affectedClass, string connection, DicomDataSet ds) { string filter = string.Empty; string countFilter = string.Empty; string queryFilter = string.Empty; string sTemp = string.Empty; object count = null; SqlCeDataReader reader; MoveDataSetEventArgs move = new MoveDataSetEventArgs(); if (affectedClass == DicomUidType.PatientRootQueryMove || affectedClass == DicomUidType.PatientRootQueryGet) { filter += " AND "; filter += AddParen("p.PatientID = '" + ds.GetValue <string>(DicomTag.PatientID, string.Empty) + "'"); } if (level == "STUDY" || level == "SERIES" || level == "IMAGE") { filter += " AND "; if (level == "STUDY") { filter += AddParen("s.StudyInstanceUID = '" + ds.GetValue <string>(DicomTag.StudyInstanceUID, string.Empty) + "'"); } else { List <string> instances = ds.GetValue <List <string> >(DicomTag.StudyInstanceUID, new List <string>()); sTemp = string.Empty; foreach (string instance in instances) { sTemp += "s.StudyInstanceUID ='" + instance + "'"; if (instances.IndexOf(instance) < instances.Count - 1) { sTemp += " AND "; } } filter += AddParen(sTemp); } } if (level == "SERIES" || level == "IMAGE") { filter += " AND "; if (level != "SERIES") { filter += AddParen("r.SeriesInstanceUID = '" + ds.GetValue <string>(DicomTag.SeriesInstanceUID, string.Empty) + "'"); } else { List <string> instances = ds.GetValue <List <string> >(DicomTag.SeriesInstanceUID, new List <string>()); sTemp = string.Empty; foreach (string instance in instances) { sTemp += "r.SeriesInstanceUID ='" + instance + "'"; if (instances.IndexOf(instance) < instances.Count - 1) { sTemp += " AND "; } } filter += AddParen(sTemp); } } if (level == "IMAGE") { List <string> instances = ds.GetValue <List <string> >(DicomTag.SOPInstanceUID, new List <string>()); if (instances.Count > 0) { filter += " AND "; } sTemp = string.Empty; foreach (string instance in instances) { sTemp += "i.SOPInstanceUID ='" + instance + "'"; if (instances.IndexOf(instance) < instances.Count - 1) { sTemp += " AND "; } } filter += AddParen(sTemp); } //countFilter = "SELECT COUNT(*) FROM IMAGES WHERE " + filter; //filter = "SELECT * FROM IMAGES WHERE " + filter; countFilter = "SELECT COUNT(*) " + "FROM Patients p, Studies s, Series r, Images i " + "WHERE (p.PatientID = s.PatientID) AND (s.StudyInstanceUID = r.StudyInstanceUID) AND (r.SeriesInstanceUID = i.SeriesInstanceUID) " + filter; queryFilter = "SELECT i.* " + "FROM Patients p, Studies s, Series r, Images i " + "WHERE (p.PatientID = s.PatientID) AND (s.StudyInstanceUID = r.StudyInstanceUID) AND (r.SeriesInstanceUID = i.SeriesInstanceUID) " + filter; count = SqlCeHelper.ExecuteScalar(connection, countFilter); if (count == null || Convert.ToInt32(count) == 0) { return(DicomCommandStatusType.Success); } move.Remaining = Convert.ToInt32(count); reader = SqlCeHelper.ExecuteReader(connection, queryFilter); while (reader.Read()) { try { DicomCommandStatusType status; using (DicomDataSet dicom = new DicomDataSet()) { dicom.Load(reader["ReferencedFile"].ToString(), DicomDataSetLoadFlags.LoadAndClose); //move.StoreFileName = reader["ReferencedFile"].ToString(); move.StoreDataSet = dicom; move.Remaining--; status = addin.OnMoveDataSet(move); if (status != DicomCommandStatusType.Success || addin.Cancel) { reader.Close(); if (addin.Cancel) { if (addin.BreakType == BreakType.Cancel) { status = DicomCommandStatusType.Cancel; } else { status = DicomCommandStatusType.Failure; } } return(status); } } } catch { } } return(DicomCommandStatusType.Success); }