Example #1
0
        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));
        }
Example #2
0
        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));
        }
Example #4
0
        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);
        }
Example #5
0
        //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));
        }
Example #6
0
        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));
        }
Example #7
0
        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));
        }
Example #8
0
        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);
        }
Example #9
0
        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);
        }
Example #10
0
        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);
            }
        }
Example #11
0
        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));
        }
Example #12
0
        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();
        }
Example #13
0
        /// <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));
        }
Example #14
0
        /// <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);
        }
Example #15
0
        /// <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);
        }
Example #16
0
        /// <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);
        }
Example #17
0
        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);
        }
Example #18
0
        /// <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);
        }