Example #1
0
        private static void UpdateGUID(DataTable dt, DataColumn dc, string columnName, GWDataDBField field)
        {
            if (dc.ColumnName == columnName)
            {
                Dictionary <string, string> rpIDs = new Dictionary <string, string>();
                foreach (DataRow dr in dt.Rows)
                {
                    object o    = dr[dc];
                    string rpID = (o == null) ? "" : o.ToString();
                    if (rpID.Length < 1)    // need to generate GUID
                    {
                        string guid = DicomMappingHelper.GetGUID(dr);
                        if (rpIDs.ContainsKey(guid))
                        {
                            // 20100222
                            // has already generated GUID in this loop,
                            // for example there are two records with same guid and splitted according to multiple procedure codes

                            // 20100227
                            // as we move the auto generating STDUID before the procedure code spliting in the class Kodak.GCGateway.DicomAdapter.MWLServer.Dicom.WorklistSCP,
                            // this (different records with the same guid/data_id) will not happen any more.

                            rpID = rpIDs[guid];
                        }
                        else
                        {
                            rpID = DHelper.GetDicomGUID(Program.DeviceMgt.DeviceDirInfor.Header.ID, Program.ConfigMgt.Config.MaxAutoGeneratedLengthOfSTDUID);
                            rpIDs.Add(guid, rpID);
                        }
                        dr[dc] = rpID;
                    }
                }
                if (rpIDs.Count > 0)
                {
                    StringBuilder sb = new StringBuilder();
                    foreach (KeyValuePair <string, string> pair in rpIDs)
                    {
                        string tableName = GWDataDB.GetTableName(Program.InterfaceName, GWDataDBTable.Order);
                        string pkName    = GWDataDBField.o_DATA_ID.FieldName;
                        string fieldName = field.FieldName;
                        sb.Append("UPDATE ").Append(tableName)
                        .Append(" SET ").Append(fieldName).Append(" = '").Append(pair.Value).Append("'")
                        .Append(" WHERE ").Append(pkName).Append(" = '").Append(pair.Key).Append("';\r\n");
                    }
                    if (Program.Database.DoQuery(sb.ToString()) == null)
                    {
                        Program.Log.Write(LogType.Error, "Update " + columnName + " into database failed.");
                    }
                    else
                    {
                        Program.Log.Write("Update " + columnName + " into database succeeded.");
                    }
                }
            }
        }
Example #2
0
        private static void UpdateID(DataTable dt, DataColumn dc, string columnName, GWDataDBField field)
        {
            if (dc.ColumnName == columnName)
            {
                Dictionary <string, string> rpIDs = new Dictionary <string, string>();
                foreach (DataRow dr in dt.Rows)
                {
                    object o    = dr[dc];
                    string rpID = (o == null) ? "" : o.ToString();
                    if (rpID.Length < 1)
                    {
                        string guid = DicomMappingHelper.GetGUID(dr);
                        if (rpIDs.ContainsKey(guid))
                        {
                            // 20100222
                            // please see the function UpdateGUID() for details

                            rpID = rpIDs[guid];
                        }
                        else
                        {
                            rpID = GetRandomNumber(Program.ConfigMgt.Config.MaxAutoGeneratedLengthOfRPIDAndSPSID).ToString();
                            rpIDs.Add(guid, rpID);
                        }
                        dr[dc] = rpID;
                    }
                }
                if (rpIDs.Count > 0)
                {
                    StringBuilder sb = new StringBuilder();
                    foreach (KeyValuePair <string, string> pair in rpIDs)
                    {
                        string tableName = GWDataDB.GetTableName(Program.InterfaceName, GWDataDBTable.Order);
                        string pkName    = GWDataDBField.o_DATA_ID.FieldName;
                        string fieldName = field.FieldName;
                        sb.Append("UPDATE ").Append(tableName)
                        .Append(" SET ").Append(fieldName).Append(" = '").Append(pair.Value).Append("'")
                        .Append(" WHERE ").Append(pkName).Append(" = '").Append(pair.Key).Append("';\r\n");
                    }
                    //Program.Log.Write(sb.ToString());
                    if (Program.Database.DoQuery(sb.ToString()) == null)
                    {
                        Program.Log.Write(LogType.Error, "Update " + columnName + " into database failed.");
                    }
                    else
                    {
                        Program.Log.Write("Update " + columnName + " into database succeeded.");
                    }
                }
            }
        }
Example #3
0
        public static DElementListWrapper[] CreateQRElementList <TR>(XCollection <TR> qrList, DataSet dsQR)
            where TR : QueryResultItem, IDicomMappingItem
        {
            if (qrList == null || dsQR == null || dsQR.Tables.Count < 1)
            {
                return(null);
            }

            DataTable dt       = dsQR.Tables[0];
            string    pkColumn = Program.ConfigMgt.Config.PrimaryKeyColumnName;

            if (!dt.Columns.Contains(pkColumn))
            {
                return(null);
            }

            Dictionary <string, List <DataRow> > drDict = new Dictionary <string, List <DataRow> >();

            foreach (DataRow dr in dt.Rows)
            {
                string key     = null;
                string pkValue = dr[pkColumn] as string;
                //if (pkValue != null || pkValue.Length > 0)
                if (pkValue != null && pkValue.Length > 0)
                {
                    key = pkValue;
                }
                else
                {
                    key = "_" + dt.Rows.IndexOf(dr).ToString();
                }

                if (drDict.ContainsKey(key))
                {
                    drDict[key].Add(dr);
                }
                else
                {
                    List <DataRow> drList = new List <DataRow>();
                    drDict.Add(key, drList);
                    drList.Add(dr);
                }
            }

            List <DElementListWrapper> dcmResult = new List <DElementListWrapper>();

            foreach (KeyValuePair <string, List <DataRow> > pair in drDict)
            {
                int          count      = qrList.Count;
                DicomDataset dcmEleList = new DicomDataset();
                for (int index = 0; index < count; index++)
                {
                    IDicomMappingItem qr = qrList[index] as IDicomMappingItem;
                    if (!qr.DPath.Enable)
                    {
                        continue;
                    }
                    //int tag = qr.DPath.GetTag(0);
                    List <string> tagList  = qr.DPath.GetTagGE(0);
                    ushort        uGroup   = DHelper.HexString2ushort(tagList[0]);
                    ushort        uElement = DHelper.HexString2ushort(tagList[1]);
                    DicomTag      tag      = new DicomTag(uGroup, uElement);
                    FillElement <TR>(dcmEleList, tag, qr.DPath.VR, ref index, 0, qrList, pair.Value.ToArray());
                    //dcmEleList.Add(ele);
                }
                DElementListWrapper w = new DElementListWrapper(dcmEleList);
                foreach (DataRow dr in pair.Value)
                {
                    w.GUIDs.Add(DicomMappingHelper.GetGUID(dr));
                }
                dcmResult.Add(w);
            }

            return(dcmResult.ToArray());
        }