/// <summary> /// 获取一般续打展现数据 /// </summary> /// <param name="idEn">就诊id </param> /// <param name="fgLong">长临标识</param> /// <param name="pageNum">已打印最后一页的页码,第一页为0</param> /// <param name="rowAssist">返回一般打印数据集合标记参数</param> /// <returns>返回一般打印数据集合</returns> public OrdPrintDO[] GetPreviewContinueOrds(string idEn, FBoolean fgLong, int pageNum, out PrtDORowsAssist rowAssist) { // 构造请求参数 OrdPrintParamDTO paramDTO = this.getOrdPrintParamDTO(idEn, fgLong, pageNum, OrdPrintConst.PRINT_MODE_CONTINUE); return(getPreviewConAndResOrds(paramDTO, out rowAssist)); }
/// <summary> /// 获取医嘱打印对象 /// </summary> /// <returns></returns> public OrdPrintDataDTO[] GetOrdPrintDataDTOs(OrdPrintParamDTO paramDTO) { object[] param = new object[] { paramDTO }; si.url = url; OrdPrintDataDTO[] rtn = si.invokeList <OrdPrintDataDTO>("getOrdPrintDataDTOs", param.ToArray()); return(rtn); }
/// <summary> /// 获取指定页码需要补打作废线或停止时间的数据 /// </summary> /// <param name="idEn"></param> /// <param name="fgLong"></param> /// <param name="pageNum"></param> /// <returns></returns> private OrdPrintDataDTO[] getCancAndStopSingleOrds(string idEn, FBoolean fgLong, int pageNum) { //生成新的参数,场景为单页打印 OrdPrintParamDTO paramDTOCancAndStop = this.getOrdPrintParamDTO(idEn, fgLong, pageNum, OrdPrintConst.PRINT_MODE_SINGLE); return(getCancAndStopSingleOrds(paramDTOCancAndStop)); }
/// <summary> /// 获取一般续打/重整打印展现数据 /// </summary> /// <param name="paramDTO">打印参数</param> /// <param name="rowAssist">返回一般打印数据集合标记参数</param> /// <returns></returns> private OrdPrintDO[] getPreviewConAndResOrds(OrdPrintParamDTO paramDTO, out PrtDORowsAssist rowAssist) { // 获取待打印数据 OrdPrintDataDTO[] ordPrintDataDTOsToPrt = ordPrintExtService.GetOrdPrintDataDTOs(paramDTO); //待打印数据为空,直接返回 if (ordPrintDataDTOsToPrt.Length == 0) { rowAssist = new PrtDORowsAssist(0); return(ordPrintDataDTOsToPrt); } // 获取已打印的最后一页数据 OrdPrintDO[] ordPrintDOsPrted = this.getPrtedOrdsByPage(paramDTO.Id_en, paramDTO.Fg_long, new List <int>() { (int)paramDTO.Page_num }); // 获取已打印的最后一页需要补打作废线或停止时间的数据 OrdPrintDataDTO[] ordPrintDataDTOsPrted = this.getCancAndStopSingleOrds(paramDTO.Id_en, paramDTO.Fg_long, (int)paramDTO.Page_num); List <DORowPrtFlags> rowFlagList = new List <DORowPrtFlags>(); //整合已打印数据、未打印数据,设置标记参数,返回展示数据 OrdPrintDO[] ordPrintDOsConAndRes = this.mergeOrdPrintDOsConAndRes(ordPrintDOsPrted, ordPrintDataDTOsPrted, ordPrintDataDTOsToPrt, ref rowFlagList, paramDTO.Print_mode == OrdPrintConst.PRINT_MODE_RESET); rowAssist = new PrtDORowsAssist(rowFlagList); return(ordPrintDOsConAndRes); }
/// <summary> /// 单页补打 /// </summary> /// <param name="idEn">就诊id</param> /// <param name="fgLong">长临标识</param> /// <param name="pageNum">页码</param> /// <param name="detailDOAssist">预览辅助参数</param> /// <returns></returns> public OrdPrintDO[] GetPreviewSignleOrds(string idEn, FBoolean fgLong, int pageNum, out List <OrdPrintDO> ordPrintList, out List <DORowPrtFlags> rowFlagsList, out PrtDORowsAssist detailDOAssist) { // 构造请求参数 OrdPrintParamDTO paramDTO = this.getOrdPrintParamDTO(idEn, fgLong, pageNum, OrdPrintConst.PRINT_MODE_SINGLE); return(this.getPreviewSingleOrds(paramDTO, out ordPrintList, out rowFlagsList, out detailDOAssist)); }
/// <summary> /// 获取停止打印展现数据 /// </summary> /// <param name="idEn">就诊id</param> /// <param name="fgLong">长临标识</param> /// <param name="ordPrintDos">返回停止打印数据</param> /// <param name="rowAssist">停止打印预览的辅助参数</param> /// <returns>返回停止打印预览数据</returns> public OrdPrintDO[] GetPreviewStopOrds(string idEn, FBoolean fgLong, out List <List <OrdPrintDO> > ordPrintList, out List <List <DORowPrtFlags> > dORowPrtFlagsPrintList, out PrtDORowsAssist rowAssist) { // 构造请求参数 OrdPrintParamDTO paramDTO = this.getOrdPrintParamDTO(idEn, fgLong, -1, OrdPrintConst.PRINT_MODE_STOP); return(this.getPreviewCalAndStpOrds(paramDTO, out ordPrintList, out dORowPrtFlagsPrintList, out rowAssist)); }
/// <summary> /// 获取已经打印的医嘱页码 /// </summary> /// <param name="aggdos"></param> /// <returns></returns> public int[] GetPageNums(OrdPrintParamDTO paramDTO) { List <object> param = new List <object>(); param.Add(paramDTO); si.url = url; int[] rtn = si.invokeList <int>("getPageNums", param.ToArray()); return(rtn); }
/// <summary> /// 根据待打印作废医嘱,获取在已打印医嘱中所在页的数据 /// </summary> /// <param name="paramDTO"></param> /// <param name="pageNums"></param> /// <returns></returns> public OrdPrintDO[] GetOrdPrintDOs(OrdPrintParamDTO paramDTO, OrdPrintDataDTO[] printDataDTOs) { List <object> param = new List <object>(); param.Add(paramDTO); param.Add(printDataDTOs); si.url = url; OrdPrintDO[] rtn = si.invokeList <OrdPrintDO>("GetOrdPrintDOs", param.ToArray()); return(rtn); }
/// <summary> /// 获取传递到服务端的参数 /// </summary> /// <param name="idEn">就诊Id</param> /// <param name="fgLong">长临标识</param> /// <param name="pageNum">页码</param> /// <param name="printMode">打印模式</param> /// <returns></returns> private OrdPrintParamDTO getOrdPrintParamDTO(string idEn, FBoolean fgLong, int pageNum, string printMode) { OrdPrintParamDTO paramDTO = new OrdPrintParamDTO(); paramDTO.Id_en = idEn; paramDTO.Fg_long = fgLong; paramDTO.Page_num = pageNum;; paramDTO.Print_mode = printMode; return(paramDTO); }
/// <summary> /// 获取指定页码需要补打作废线或停止时间的数据 /// </summary> /// <param name="paramDTO"></param> /// <returns></returns> private OrdPrintDataDTO[] getCancAndStopSingleOrds(OrdPrintParamDTO paramDTO) { return(ordPrintExtService.GetOrdPrintDataDTOs(paramDTO)); }
/// <summary> /// 获取单页补打展现数据以及打印数据 /// </summary> /// <param name="paramDTO"></param> /// <param name="detailDOAssist"></param> /// <returns></returns> private OrdPrintDO[] getPreviewSingleOrds(OrdPrintParamDTO paramDTO, out List <OrdPrintDO> ordPrintList, out List <DORowPrtFlags> rowFlagsList, out PrtDORowsAssist detailDOAssist) { //获取指定页码所有已打印的数据 OrdPrintDO[] ordPrintDOsPrted = this.getPrtedOrdsByPage(paramDTO.Id_en, paramDTO.Fg_long, new List <int> { (int)paramDTO.Page_num }); //获取指定页码需要补打作废线or停止时间的数据 OrdPrintDataDTO[] ordPrintDataDTOsToPrt = getCancAndStopSingleOrds(paramDTO); // 需要打印作废标记or停止时间的医嘱集合 Dictionary <string, OrdPrintDataDTO> ordPrintDataDTOsPrtedDic = new Dictionary <string, OrdPrintDataDTO>(); foreach (OrdPrintDataDTO dataDTO in ordPrintDataDTOsToPrt) { if (!ordPrintDataDTOsPrtedDic.ContainsKey(dataDTO.Id_or)) { ordPrintDataDTOsPrtedDic.Add(dataDTO.Id_or, dataDTO); } } ordPrintList = new List <OrdPrintDO>(); rowFlagsList = new List <DORowPrtFlags>(); //设置标记参数 List <DORowPrtFlags> rowFlagList = new List <DORowPrtFlags>(); foreach (OrdPrintDO ordPrintDO in ordPrintDOsPrted) { DORowPrtFlags rowFlag = new DORowPrtFlags(); rowFlag.AtPageIx = (int)ordPrintDO.Page_num; rowFlag.AtGridRowIx = (int)ordPrintDO.Row_num; rowFlag.TakeGridRowCnt = 0;//单页补打,所有数据都需要打印,行数设为0 //rowFlag.TakeGridRowCnt = (int)ordPrintDO.Row_cnt; //rowFlag.ForceInOneGridRow = ordPrintDO.Fg_reformrow == FBoolean.True;// 重整标识行不换行 if (ordPrintDO.Fg_reformrow == FBoolean.True) { rowFlag.ForceInOneGridRow = true; // 重整标识行不换行 rowFlag.MarkType = DORowPrtFlags.ENumMarkType.Text; //重整标记行内容标红 } //根据作废打印标识Fg_canc_prn,判断是否打印过作废线, //打印过作废线的同时显示内容和作废线(黑) rowFlag.InvalidPrtType = ordPrintDO.Fg_canc_prn == true ? DORowPrtFlags.ENumInvalidPrtType.TextWithDelLine : DORowPrtFlags.ENumInvalidPrtType.NotInvalid; rowFlag.IsDataRemedy = (bool)ordPrintDO.Fg_stop_prn; //判断在已打印数据中,是否有需要补打作废线or停止时间 if (ordPrintDO.Id_or != null && ordPrintDataDTOsPrtedDic.ContainsKey(ordPrintDO.Id_or)) { //需要补打停止时间的:停止时间、医生、护士 if (ordPrintDataDTOsPrtedDic[ordPrintDO.Id_or].Fg_chk_stop == true) { rowFlag.IsDataRemedy = true; ordPrintDO.Fg_chk_stop = FBoolean.True; //停止标识 ordPrintDO.Fg_stop_prn = FBoolean.True; //停止打印标识 this.setOrdPrintDatetime(ordPrintDataDTOsPrtedDic[ordPrintDO.Id_or], ordPrintDO); //设置停止时间 } //需要补打作废线的:作废线(黑)、内容(黑) if (ordPrintDataDTOsPrtedDic[ordPrintDO.Id_or].Fg_chk_canc == true) { ordPrintDO.Fg_chk_canc = FBoolean.True; //作废标识 ordPrintDO.Fg_canc_prn = FBoolean.True; //作废打印标识 rowFlag.InvalidPrtType = DORowPrtFlags.ENumInvalidPrtType.TextWithDelLine; } ordPrintList.Add(ordPrintDO); rowFlagsList.Add(rowFlag); } rowFlagList.Add(rowFlag); } detailDOAssist = new PrtDORowsAssist(rowFlagList); return(ordPrintDOsPrted); }
/// <summary> /// 获取作废/停止打印展现数据以及打印数据 /// </summary> /// <param name="paramDTO">参数对象,idEn:就诊id,fgLong:长临标识,Print_mode:打印模式</param> /// <param name="ordPrintDOList"></param> /// <param name="dORowPrtFlagsPrtList"></param> /// <param name="rowAssist"></param> /// <returns>作废、停止打印预览数据</returns> private OrdPrintDO[] getPreviewCalAndStpOrds(OrdPrintParamDTO paramDTO, out List <List <OrdPrintDO> > ordPrintDOList, out List <List <DORowPrtFlags> > dORowPrtFlagsPrtList, out PrtDORowsAssist rowAssist) { // 获取待打印的作废、停止医嘱数据 OrdPrintDataDTO[] ordPrintDataDTOsToPrt = ordPrintExtService.GetOrdPrintDataDTOs(paramDTO); // 获取需要作废、停止医嘱所在页的已打印全部医嘱数据 OrdPrintDO[] ordPrintDOsPrted = ordPrintExtService.GetOrdPrintDOs(paramDTO, ordPrintDataDTOsToPrt); // 需要打印作废标记or停止时间的医嘱集合 Dictionary <string, OrdPrintDataDTO> ordPrintDataDTOsPrtedDic = new Dictionary <string, OrdPrintDataDTO>(); foreach (OrdPrintDataDTO dataDTO in ordPrintDataDTOsToPrt) { if (!ordPrintDataDTOsPrtedDic.ContainsKey(dataDTO.Id_or)) { ordPrintDataDTOsPrtedDic.Add(dataDTO.Id_or, dataDTO); } } // 所有展现数据的标记参数 rowAssist = new PrtDORowsAssist(ordPrintDOsPrted.Length); DORowPrtFlags[] doprtflags = rowAssist.GetDoFlagsArr(); // 用于判断待打印数据是否在一页 int?pageNum = -1; ordPrintDOList = new List <List <OrdPrintDO> >(); dORowPrtFlagsPrtList = new List <List <DORowPrtFlags> >(); List <OrdPrintDO> prtDataList = new List <OrdPrintDO>(); List <DORowPrtFlags> prtFlagsList = new List <DORowPrtFlags>(); // 对已打印数据设置页码、行号、所在行数、是否已打印作废标记 for (int i = 0; i < ordPrintDOsPrted.Length; i++) { doprtflags[i].AtPageIx = (int)ordPrintDOsPrted[i].Page_num; // 所在页码 doprtflags[i].AtGridRowIx = (int)ordPrintDOsPrted[i].Row_num; // 所在行号 doprtflags[i].TakeGridRowCnt = (int)ordPrintDOsPrted[i].Row_cnt; // 所占行数 //根据作废打印标识Fg_canc_prn,判断是否打印过作废线, //打印过作废线的同时显示内容和作废线(置灰),否则只显示内容(置灰) doprtflags[i].InvalidPrtType = ordPrintDOsPrted[i].Fg_canc_prn == true ? DORowPrtFlags.ENumInvalidPrtType.HasPrted : DORowPrtFlags.ENumInvalidPrtType.NotInvalid; if (ordPrintDOsPrted[i].Id_or != null && ordPrintDataDTOsPrtedDic.ContainsKey(ordPrintDOsPrted[i].Id_or)) { switch (paramDTO.Print_mode) { case OrdPrintConst.PRINT_MODE_CANCEL: //需要补打作废线的,作废线(黑),内容(置灰) if (ordPrintDataDTOsPrtedDic[ordPrintDOsPrted[i].Id_or].Fg_chk_canc == true) { doprtflags[i].InvalidPrtType = DORowPrtFlags.ENumInvalidPrtType.DelLine; //doprtflags[i].IsDataRemedy = true; ordPrintDOsPrted[i].Fg_chk_canc = FBoolean.True; //作废核对标识 ordPrintDOsPrted[i].Fg_canc_prn = FBoolean.True; //作废打印标识 } break; case OrdPrintConst.PRINT_MODE_STOP: //需要打印停止时间的数据,将补打标识设置true doprtflags[i].IsDataRemedy = FBoolean.True; ordPrintDOsPrted[i].Fg_chk_stop = FBoolean.True; //停止核对标识 ordPrintDOsPrted[i].Fg_stop_prn = FBoolean.True; //停止打印标识 this.setOrdPrintDatetime(ordPrintDataDTOsPrtedDic[ordPrintDOsPrted[i].Id_or], ordPrintDOsPrted[i]); //设置停止时间 break; } if (pageNum != ordPrintDOsPrted[i].Page_num) { pageNum = ordPrintDOsPrted[i].Page_num; prtDataList = new List <OrdPrintDO>(); prtFlagsList = new List <DORowPrtFlags>(); ordPrintDOList.Add(prtDataList); dORowPrtFlagsPrtList.Add(prtFlagsList); } prtDataList.Add(ordPrintDOsPrted[i]); prtFlagsList.Add(doprtflags[i]); } } return(ordPrintDOsPrted); }
/// <summary> /// 获取已打印的医嘱页码 /// </summary> /// <param name="idEn">就诊id</param> /// <param name="fgLong">长临标识</param> /// <returns></returns> public int[] GetPageNums(string idEn, FBoolean fgLong) { OrdPrintParamDTO paramDTO = this.getOrdPrintParamDTO(idEn, fgLong, -1, null); return(ordPrintExtService.GetPageNums(paramDTO)); }