Example #1
0
    /// <summary>
    /// 克隆并且初始化服务器Item
    /// </summary>
    /// <param name="data"></param>
    /// <param name="callback"></param>
    public void Init(ServerData data, SelectCallback callback)
    {
        serverData           = data;
        selectServerCallback = callback;
        itemBtn.onClick.AddListener(Click);

        //初始化名字
        serverName.text = data.serverName;
        //初始化图标
        if (hotState == null)
        {
            hotState    = Resources.Load <Sprite>("UI/xuanqv/hong");
            normalState = Resources.Load <Sprite>("UI/xuanqv/lv");
            upholdSate  = Resources.Load <Sprite>("UI/xuanqv/weihu");
        }


        switch (data.serverType)
        {
        case ServerType.Crowd:
            stateImage.sprite = hotState;
            break;

        case ServerType.Fluen:
            stateImage.sprite = normalState;
            break;

        case ServerType.Maintain:
            stateImage.sprite = upholdSate;
            break;

        default:
            break;    //
        }
    }
        public async void PatientSelect(PatientUI patient)
        {
            await SelectCallback.InvokeAsync(patient);

            await CloseCallback.InvokeAsync(true);

            ShowDialog = false;
            StateHasChanged();
        }
Example #3
0
        public void OnSeriesQuery(DicomMessage message, SelectCallback <ISeriesData> callback)
        {
            // Support query conditions :
            // StudyInstanceUid, SeriesInstanceUid, Modality, SeriesDescription
            // SeriesNumber

            var data = message.DataSet;

            using (var ctx = new PacsContext())
            {
                #region Build Query

                //Linq query is lazy query mechanism
                var results = from row in ctx.Series select row;
                foreach (var attrib in message.DataSet)
                {
                    if (!attrib.IsNull)
                    {
                        switch (attrib.Tag.TagValue)
                        {
                        case DicomTags.StudyInstanceUid:
                            var studyUid = data[DicomTags.StudyInstanceUid].GetString(0,
                                                                                      string.Empty);

                            results = from row in results
                                      where row.Study.StudyUid.Equals(studyUid)
                                      select row;

                            break;

                        case DicomTags.SeriesInstanceUid:
                            var uid = data[DicomTags.SeriesInstanceUid].GetString(0, string.Empty);
                            results = from row in results
                                      where row.SeriesUid.Equals(uid)
                                      select row;

                            break;

                        case DicomTags.Modality:
                            var modality = data[DicomTags.Modality].GetString(0, string.Empty);
                            results = from row in results
                                      where row.Modality.Equals(modality)
                                      select row;
                            break;

                        case DicomTags.SeriesDescription:
                            var description = data[DicomTags.SeriesDescription].GetString(0, string.Empty);
                            var replaced    = QueryHelper.ReplacsWildcard(description);

                            if (replaced == null)
                            {
                                results = from row in results
                                          where row.SeriesDescription.Equals(description)
                                          select row;
                            }
                            else
                            {
                                results = from row in results
                                          where row.SeriesDescription.Contains(description)
                                          select row;
                            }

                            break;

                        case DicomTags.SeriesNumber:
                            var number = data[DicomTags.SeriesNumber].GetUInt32(0, 0);
                            results = from row in results
                                      where row.SeriesNumber.Equals(number.ToString())
                                      select row;

                            break;
                        }
                    }
                }

                foreach (var source in results.ToList())
                {
                    callback(source);
                }

                #endregion
            }
        }
Example #4
0
        public void OnPatientQuery(DicomMessage message, SelectCallback <IPatientData> callback)
        {
            // filter condition:
            // PatientsName, PatientsId, PatientsSex, PatientsBirthDate, PatientsBirthTime

            var data = message.DataSet;

            using (var ctx = new PacsContext())
            {
                var results = from patient in ctx.Patients select patient;

                foreach (var attrib in data)
                {
                    if (!attrib.IsNull)
                    {
                        #region Build Query

                        switch (attrib.Tag.TagValue)
                        {
                        case DicomTags.PatientsName:
                        {
                            var patientName = data[DicomTags.PatientsName].GetString(0,
                                                                                     string.Empty);
                            if (patientName.Length == 0)
                            {
                                break;
                            }

                            var replaced = QueryHelper.ReplacsWildcard(patientName);
                            if (replaced == null)
                            {
                                results = from row in results
                                          where row.PatientName.Equals(patientName)
                                          select row;
                            }
                            else
                            {
                                results = from row in results
                                          where row.PatientName.Contains(replaced)
                                          select row;
                            }

                            break;
                        }

                        case DicomTags.PatientId:
                        {
                            var patientId = data[DicomTags.PatientId].GetString(0, string.Empty);
                            if (patientId.Length == 0)
                            {
                                break;
                            }

                            var replaced = QueryHelper.ReplacsWildcard(patientId);
                            if (replaced == null)
                            {
                                results = from row in results
                                          where row.PatientId.Equals(patientId)
                                          select row;
                            }
                            else
                            {
                                results = from row in results
                                          where row.PatientId.Contains(replaced)
                                          select row;
                            }

                            break;
                        }

                        case DicomTags.PatientsBirthDate:
                        {
                            var values = (string[])data[DicomTags.PatientsBirthDate].Values;
                            if (values == null || values.Length == 0)
                            {
                                break;
                            }

                            //results = from study in results
                            //    where values.Length == 1
                            //        ? study.PatientBirthDate.Equals(values[0])
                            //        : values.Contains(study.PatientBirthDate)
                            //    select study;
                            break;
                        }

                        default:
                            break;
                        }

                        #endregion
                    }
                }

                foreach (var source in results.ToList())
                {
                    callback(source);
                }
            }
        }
Example #5
0
        public void OnStudyQuery(DicomMessage message, SelectCallback <IStudyData> callback)
        {
            // Supported Query Condition includes:
            // PatientsName, PatientsId, PatientsSex, PatientsBirthDate, PatientsBirthTime
            // StudyInstanceUid, StudyId, StudyDescription, AccessionNumber, ModalitiesInStudy
            // ReferringPhysiciansName, StudyDate, StudyTime

            var data = message.DataSet;

            using (var ctx = new PacsContext())
            {
                #region Build Query

                //Linq query is lazy query mechanism
                var results = from study in ctx.Studies select study;
                foreach (var attrib in message.DataSet)
                {
                    if (!attrib.IsNull)
                    {
                        switch (attrib.Tag.TagValue)
                        {
                        case DicomTags.PatientsName:
                        {
                            var patientName = data[DicomTags.PatientsName].GetString(0,
                                                                                     string.Empty);
                            if (patientName.Length == 0)
                            {
                                break;
                            }

                            var replaced = QueryHelper.ReplacsWildcard(patientName);
                            if (replaced == null)
                            {
                                results = from study in results
                                          where study.PatientName.Equals(patientName)
                                          select study;
                            }
                            else
                            {
                                results = from study in results
                                          where study.PatientName.Contains(replaced)
                                          select study;
                            }

                            break;
                        }

                        case DicomTags.PatientId:
                        {
                            var patientId = data[DicomTags.PatientId].GetString(0, string.Empty);
                            if (patientId.Length == 0)
                            {
                                break;
                            }

                            var replaced = QueryHelper.ReplacsWildcard(patientId);
                            if (replaced == null)
                            {
                                results = from row in results
                                          where row.PatientId.Equals(patientId)
                                          select row;
                            }
                            else
                            {
                                results = from row in results
                                          where row.PatientId.Contains(replaced)
                                          select row;
                            }

                            break;
                        }

                        case DicomTags.PatientsSex:
                        {
                            var values = (string[])data[DicomTags.PatientsSex].Values;
                            if (values == null || values.Length == 0)
                            {
                                break;
                            }

                            results = from study in results
                                      where values.Length == 1
                                        ? study.PatientSex.Equals(values[0])
                                        : values.Contains(study.PatientSex)
                                      select study;
                            break;
                        }

                        case DicomTags.PatientsBirthDate:
                        {
                            var values = (string[])data[DicomTags.PatientsBirthDate].Values;
                            if (values == null || values.Length == 0)
                            {
                                break;
                            }

                            var dt = DateParser.Parse(values[0]);
                            if (dt == null)
                            {
                                break;
                            }

                            results = from study in results
                                      where values.Length == 1
                                        ? study.PatientBirthday.Equals(dt.Value)
                                        : values.Contains(DateParser.ToDicomString(study.PatientBirthday))
                                      select study;
                            break;
                        }

                        case DicomTags.StudyDate:
                        {
                            var v = data[DicomTags.StudyDate].GetString(0, string.Empty);
                            if (string.IsNullOrEmpty(v))
                            {
                                break;
                            }

                            DateTime?startDate;
                            DateTime?toDate;
                            bool     isRange;
                            DateRangeHelper.Parse(v, out startDate, out toDate, out isRange);

                            if (isRange)
                            {
                                results = from study in results
                                          where study.StudyDate >= startDate.Value &&
                                          study.StudyDate <= toDate.Value
                                          select study;
                            }
                            else
                            {
                                if (startDate != null)
                                {
                                    results = from study in results
                                              where study.StudyDate >= startDate.Value
                                              select study;
                                }
                                else
                                {
                                    results = from study in results
                                              where study.StudyDate <= toDate.Value
                                              select study;
                                }
                            }

                            break;
                        }
                        }
                    }
                }

                #endregion

                Logger.Warn(results.ToString());

                foreach (var source in results.ToList())
                {
                    callback(source);
                }
            }
        }
Example #6
0
 //显示View面板
 public void Init(SelectCallback action)
 {
     selectServerCallback = action;
     //初始化View去显示面板
     serverPlaneView.Init(action, serverDatasList);
 }
Example #7
0
    //面板的初始化
    public void Init(SelectCallback callback, List <ServerData> serverDataList)
    {
        selectServerCallback = callback;

        ShowServer(serverDataList);
    }