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); } }
/// <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>()); }