Example #1
0
        public void Execute(IJobExecutionContext context)
        {
            GetJobParams();

            _logger.Info("执行云归档患者信息同步任务");
            try
            {
                PatientExamListQuery query = new PatientExamListQuery
                {
                    ObservationDate = this.startObservationDate,
                    RowCount        = this.taskRowsForEachJob
                };
                var examresult = WebApiRequestHelper.GetPatientExamList(query);
                if (examresult != null && examresult.Count <= 0)
                {
                    // 查不到数据了
                    throw new EmptyResultException();
                }
                _logger.DebugFormat("总共查询到{0}待注册的患者主索引记录", examresult.Count);

                int nIndex = 1;
                foreach (var item in examresult)
                {
                    _logger.InfoFormat("同步第{0}条ObservationRequest记录,ObservationUID={1}", nIndex, item.ObservationRequest.ObservationUID);
                    try
                    {
                        if (CollectExam(item))
                        {
                            UpdateCollectState(item.ObservationRequest.ObservationUID, 1);//更新已注册标示
                        }
                        else
                        {
                            UpdateCollectState(item.ObservationRequest.ObservationUID, 2);//更新注册失败标示
                        }
                        nIndex++;
                    }
                    catch (Exception ex)
                    {
                        UpdateCollectState(item.ObservationRequest.ObservationUID, 2);//更新注册失败标示
                        _logger.Error($"同步第{nIndex}条ObservationRequest记录,出现异常:{JsonConvert.SerializeObject(item)}", ex);
                        continue;
                    }
                }
            }
            catch (EmptyResultException)
            {
                int s = 1000 * 60 * 2;
                _logger.InfoFormat("未查询到待同步的患者信息,休眠{0}", s);
                Thread.Sleep(s);
            }
            catch (Exception e)
            {
                _logger.Error($"执行同步患者信息到主索引库,出现异常:{e.Message}", e);
            }
        }
Example #2
0
        /// <summary>
        /// 获取云平台待同步患者信息列表
        /// </summary>
        /// <param name="query"></param>
        public static List <PatientExamListDTO> GetPatientExamList(PatientExamListQuery query)
        {
            string webApiUrl  = AppConfig.GetConfig("IDCASApiUrl").TrimEnd('/') + "/v2/thirdparty/get_empi_exam_list";
            string strContent = JsonConvert.SerializeObject(query);
            var    auth       = GetAuth();
            string userToken  = string.Format("{0} {1}", auth.token_type, auth.access_token);
            string value      = HttpHelper.Post(webApiUrl, strContent, userToken);

            if (!string.IsNullOrEmpty(value))
            {
                OldListResult <PatientExamListDTO> result = JsonConvert.DeserializeObject <OldListResult <PatientExamListDTO> >(value);
                return(result.ResultList);
            }

            return(new List <PatientExamListDTO>());
        }