Exemple #1
0
        //1.2.156.112605.75006877305224.20121123025201.9.4420.2
        private void LoadStudyByInterationInfo(byte[] interationStudyInfo)
        {
            try
            {
                Logger.LogFuncUp();

                var infoWrapper = new InteractionInfoWrapper();
                infoWrapper.Deserialize(interationStudyInfo);

                var studyUidList = (from study in infoWrapper.GetStudyList()
                                    select study.UID).ToList();
                var seriesUidList = (from series in infoWrapper.GetSeriesList()
                                     select series.UID).ToList();

                LoadStudies(studyUidList);

                if (seriesUidList.Count == 1 && infoWrapper.GetSrcAppName() == "PA")//Efilm series from PA
                {
                    AddEFilmSeriesToFilmPage(seriesUidList.FirstOrDefault());
                }

                Logger.LogFuncDown();
            }
            catch (Exception ex)
            {
                Logger.LogError(ex.StackTrace);
            }
        }
Exemple #2
0
        public static void SendReplaceStudyToMainFrame(string studyInstanceUid)
        {
            try
            {
                Logger.LogFuncUp();

                //Create interData
                var interData = new InteractionInfoWrapper();
                interData.SetSrcAppName("PA");
                interData.SetDestAppName("FilmingCard");
                interData.SetOperationID(131);//(int)PAToFilmingOperationID.SendImage);

                PrepareStudyInfo(studyInstanceUid, ref interData);

                object[] param = new object[7];
                param[0] = (int)CommandID.REPLACE_STUDY;
                param[1] = CommandType.AsyncCommand;
                //param[2] = "FilmingFE";
                param[4] = null;
                param[5] = interData.Serialize();
                param[6] = null;

                param[3] = CommunicationNodeName.CreateCommunicationProxyName("MainFrame_FE");

                FilmingViewerContainee.SendCommand(param);

                Logger.LogFuncDown();
            }
            catch (System.Exception ex)
            {
                Logger.LogFuncException(ex.Message + ex.StackTrace);
            }
        }
Exemple #3
0
        private void ReceiveSeriesCompareHandler(InteractionInfoWrapper infoWrapper)
        {
            try
            {
                Logger.LogFuncUp();

                var seriesUidList = infoWrapper.GetSeriesList().Select(seriesInfo => seriesInfo.UID).ToList();
                var filmingCard   = FilmingViewerContainee.FilmingViewerWindow as FilmingCard;
                if (null == filmingCard)
                {
                    Logger.LogError("Can't get filmingCard Instance");
                    return;
                }
                if (null != FilmingViewerContainee.FilmingViewerWindow.Dispatcher)
                {
                    var dispatcher = Dispatcher.FromThread(FilmingViewerContainee.FilmingViewerWindow.Dispatcher.Thread);
                    if (dispatcher != null)
                    {
                        dispatcher.Invoke((FilmingCard.MethodInvoker)(() => filmingCard.studyTreeCtrl.SwitchToSeriesCompare(seriesUidList)), null);
                    }
                }
                else
                {
                    filmingCard.studyTreeCtrl.SwitchToSeriesCompare(seriesUidList);
                }

                Logger.LogFuncDown();
            }
            catch (Exception ex)
            {
                Logger.LogFuncException(ex.Message + ex.StackTrace);
                throw;
            }
        }
Exemple #4
0
        private void ReceiveImagesHandler(InteractionInfoWrapper infoWrapper)
        {
            try
            {
                Logger.LogFuncUp();

                List <string> imageUiDs   = infoWrapper.GetImageList().Select(image => image.UID).ToList();
                var           filmingCard = FilmingViewerContainee.FilmingViewerWindow as FilmingCard;
                if (null == filmingCard)
                {
                    Logger.LogError("Can't get filmingCard Instance");
                    return;
                }
                if (null != FilmingViewerContainee.FilmingViewerWindow.Dispatcher)
                {
                    var dispatcher = Dispatcher.FromThread(FilmingViewerContainee.FilmingViewerWindow.Dispatcher.Thread);
                    if (dispatcher != null)
                    {
                        dispatcher.Invoke((FilmingCard.MethodInvoker)(() => filmingCard.studyTreeCtrl.SwitchFilmingWithImages(imageUiDs)), null);
                    }
                }
                else
                {
                    filmingCard.studyTreeCtrl.SwitchFilmingWithImages(imageUiDs);
                }

                Logger.LogFuncDown();
            }
            catch (Exception ex)
            {
                Logger.LogFuncException(ex.Message + ex.StackTrace);
                throw;
            }
        }
Exemple #5
0
 public SwitchToFilmingCommandHandler(InteractionInfoWrapper interactionStudyInfo)
 {
     infoWrapper          = interactionStudyInfo;
     _paIdToHandlerMapper = new Dictionary <PaOperationId, Action <InteractionInfoWrapper> >
     {
         { PaOperationId.Study, ReceiveStudyHandler },
         { PaOperationId.Series, ReceiveSeriesHandler },
         { PaOperationId.Images, ReceiveImagesHandler },
         { PaOperationId.SeriesInterleavePrintInfo, ReceiveInterleavePrintHandler },
         { PaOperationId.SeriesCompareInfo, ReceiveSeriesCompareHandler }
     };
 }
 private void SynchronousLoadStudyByInterationInfo(byte[] interationStudyInfo)
 {
     try
     {
         var infoWrapper = new InteractionInfoWrapper();
         infoWrapper.Deserialize(interationStudyInfo);
         List <string> studyInstanceUidList = (from study in infoWrapper.GetStudyList() select study.UID).ToList();
         LoadStudies(studyInstanceUidList);
     }
     catch (Exception ex)
     {
         Logger.LogError(ex.StackTrace);
     }
 }
Exemple #7
0
        private static void PrepareStudyInfo(string studyInstanceUid, ref InteractionInfoWrapper interData)
        {
            var db      = FilmingDbOperation.Instance.FilmingDbWrapper;
            var study   = db.GetStudyByStudyInstanceUID(studyInstanceUid);
            var patient = db.GetPatientByPatientUID(study.PatientUIDFk);

            //fill patient info
            var mfPatientBuilder = new PatientInfo.Builder();

            mfPatientBuilder.SetAge(study.PatientAge);
            string birthdate = null == patient.PatientBirthDate
                                   ? string.Empty
                                   : patient.PatientBirthDate.Value.ToString();

            if (!string.IsNullOrEmpty(birthdate))
            {
                birthdate = string.Format("{0:yyyy/MM/dd}", patient.PatientBirthDate);
            }
            mfPatientBuilder.SetDateOfBirth(birthdate);
            mfPatientBuilder.SetGender(patient.PatientSex ?? string.Empty);
            mfPatientBuilder.SetID(patient.PatientID ?? string.Empty);
            mfPatientBuilder.SetName(patient.PatientName ?? string.Empty);

            var interPatient = mfPatientBuilder.Build();

            var interPatientList = new List <PatientInfo> {
                interPatient
            };

            interData.SetPatientList(interPatientList);

            //fill study info
            var mfStudyBuilder = new StudyInfo.Builder();

            mfStudyBuilder.SetExamStatus(study.StudyFlag);
            mfStudyBuilder.SetModalityType(study.ModalitiesInStudy ?? String.Empty);
            mfStudyBuilder.SetID(study.StudyID ?? String.Empty);
            mfStudyBuilder.SetUID(study.StudyInstanceUID ?? String.Empty);

            mfStudyBuilder.SetParentPatient(interPatient);

            var mfStudy = mfStudyBuilder.Build();

            var mfStudyList = new List <StudyInfo> {
                mfStudy
            };

            interData.SetStudyList(mfStudyList);
        }
 private void LoadStudyByInterationInfo(byte[] interationStudyInfo)
 {
     try
     {
         var infoWrapper = new InteractionInfoWrapper();
         infoWrapper.Deserialize(interationStudyInfo);
         List <string> studyInstanceUidList = (from study in infoWrapper.GetStudyList() select study.UID).ToList();
         FilmingViewerContainee.Main.StudyInstanceUID = studyInstanceUidList[0];
         LoadStudies(studyInstanceUidList);
         FilmingViewerContainee.DataHeaderJobManagerInstance.JobFinished();
     }
     catch (Exception ex)
     {
         Logger.LogError(ex.StackTrace);
     }
 }
Exemple #9
0
        private void ProcessInfomationFromPa(InteractionInfoWrapper infoWrapper)
        {
            if (FilmingViewerContainee.FilmingViewerWindow as FilmingCard == null)
            {
                return;
            }
            Action <InteractionInfoWrapper> action;
            var operateId = (PaOperationId)infoWrapper.GetOperationID();

            if (_paIdToHandlerMapper.TryGetValue(operateId, out action))
            {
                action(infoWrapper);
            }
            else
            {
                Logger.LogError("Wrong OperationId from PA : " + infoWrapper.GetOperationID());
                FilmingViewerContainee.DataHeaderJobManagerInstance.JobFinished();
            }
        }
Exemple #10
0
        public void LoadStudyByInterationInfo(InteractionInfoWrapper infoWrapper)
        {
            try
            {
                //var infoWrapper = new InteractionInfoWrapper();
                //infoWrapper.Deserialize(interationStudyInfo);
                List <string> studyInstanceUidList = (from study in infoWrapper.GetStudyList() select study.UID).ToList();
                FilmingViewerContainee.Main.StudyInstanceUID = studyInstanceUidList[0];

                LoadStudies(studyInstanceUidList);
                var contextString = "[Switched to Filming Application]" + string.Join(";", studyInstanceUidList);
                Logger.Instance.LogSvcInfo(Logger.Source, FilmingSvcLogUid.LogUidSvcInfoSwitchToFilming, contextString);

                ProcessInfomationFromPa(infoWrapper);
            }
            catch (Exception ex)
            {
                Logger.LogError(ex.StackTrace);
            }
        }
        /// \brief  Handle command
        ///
        /// \param[in] cc       command context
        /// \param[in] marObj   marshal object
        ///
        /// \return 0 for success and -1 for failure
        public override int HandleCommand(CommandContext pContext, ISyncResult pSyncResult)
        {
            try
            {
                CommandID id = (CommandID)pContext.iCommandId;
                Logger.LogFuncUp("Command: " + id.ToString());
                switch (id)
                {
                case CommandID.SWITCH_TO_APPLICATION:
                {
                    Logger.LogInfo("Get Mainframe's SWITCH_TO_APPLICATION information!");

                    if (!FilmingViewerContainee.IsInitialized)
                    {
                        FilmingViewerContainee.InitializeFilmingCard();
                    }

                    //var switchHandler=new SwitchToFilmingCommandHandler(pContext.sSerializeObject);
                    //switchHandler.LoadStudyByInterationInfo(pContext.sSerializeObject);
                    var infoWrapper = new InteractionInfoWrapper();
                    infoWrapper.Deserialize(pContext.sSerializeObject);

                    if (infoWrapper.GetSrcAppName().ToUpper() == "PA")         //只有从pa进入的切换才进入JobManager队列处理
                    {
                        var filmingCard = FilmingViewerContainee.FilmingViewerWindow as FilmingCard;
                        if (filmingCard != null && filmingCard.IsModalityDBT())
                        {
                            break;
                        }
                        List <string> studyInstanceUidList = (from study in infoWrapper.GetStudyList() select study.UID).ToList();
                        if (studyInstanceUidList.Count > 0)
                        {
                            FilmingViewerContainee.DataHeaderJobManagerInstance.PushProcessedJob(
                                new SwitchToFilmingCommandHandler(infoWrapper));
                        }
                    }
                }
                break;

                case CommandID.SynchronousStudyList:
                {
                    Logger.LogInfo("Get Mainframe's Update_StudyList information!");

                    if (!FilmingViewerContainee.IsInitialized)
                    {
                        FilmingViewerContainee.InitializeFilmingCard();
                    }
                    SynchronousLoadStudyByInterationInfo(pContext.sSerializeObject);
                    //  FilmingViewerContainee.DataHeaderJobManagerInstance.PushProcessedJob(new SynchronousToFilmingCommandHandler(pContext.sSerializeObject));
                }
                break;

                case CommandID.SAVE_EFILM_COMPLETE_COMMAND:
                    var      encoding          = new UTF8Encoding( );
                    string   constructedString = encoding.GetString(pContext.sSerializeObject);
                    string[] msg = constructedString.Split('#');       //msg = "patientName" + ["#ErrorInfo"]
                    if (msg.Length > 1)
                    {
                        //FilmingViewerContainee.ShowStatusWarning("UID_Filming_Fail_To_Save_EFilm", msg[0]);
                        FilmingViewerContainee.Main.ShowStatusWarning("UID_Filming_Fail_To_Save_EFilm", msg[0]);
                    }
                    else
                    {
                        //FilmingViewerContainee.Main.ShowStatusInfo("UID_Filming_Complete_To_Save_EFilm", msg[0]);
                        FilmingViewerContainee.Main.ShowStatusInfo("UID_Filming_Complete_To_Save_EFilm", msg[0]);
                    }


                    break;

                case CommandID.AutoLoadSeries:      //auto load series from review
                    //var seriesUids = pContext.sStringObject.Split(';');
                    //LoadSeries(seriesUids);

                    //FilmingViewerContainee.Main.ShowStatusInfo("UID_Filming_Request_Of_Loading_Series_From_Review");
                    FilmingViewerContainee.Main.ShowStatusInfo("UID_Filming_Request_Of_Loading_Series_From_Review");

                    FilmingViewerContainee.DataHeaderJobManagerInstance.PushProcessedJob(new ReviewSeriesCommandHandler(pContext.sStringObject));
                    break;

                case CommandID.SET_LAYOUT_COMMAND:

                    if (!FilmingViewerContainee.IsInitialized)
                    {
                        FilmingViewerContainee.InitializeFilmingCard();
                    }

                    FilmingViewerContainee.DataHeaderJobManagerInstance.PushProcessedJob(new SetLayoutCommandHandler(new LayoutCommandInfo(pContext.sStringObject)));
                    break;

                default:
                    break;
                }

                Logger.LogFuncDown();
            }
            catch (Exception exp)
            {
                //MedViewerLogger.Instance.LOG_DEV_ERROR(
                //    MedViewerLogger.Source,
                //    MedViewerLogger.LogUID,
                //    "Exception: " + exp.Message);
                Logger.LogFuncException(exp.Message);
                return(-1);
            }

            return(0);
        }
Exemple #12
0
        private void ReceiveStudyHandler(InteractionInfoWrapper infoWrapper)
        {
            var seriesList = (from series in infoWrapper.GetSeriesList() select series.UID).ToList();

            LoadSeriesIntoCard(seriesList);
        }
Exemple #13
0
        private void ReceiveSeriesHandler(InteractionInfoWrapper infoWrapper)
        {
            var seriesList = infoWrapper.GetSeriesList();

            LoadSeriesIntoCard(seriesList.Select(seriesInfo => seriesInfo.UID).ToList());
        }