/// <summary> /// 获取排序数据集 /// 一般打印时,未打数据 /// </summary> public void GetDataListForSort() { //获取排序数据集 LstOrdPrintDOsPreview = new XapDataList <OrdPrintDO>(); dicDORowPrtFlagsPreview.Clear(); DORowPrtFlags[] doRowPrtFlags = prtDORowsAssistPreview.GetDoFlagsArr(); for (int i = 0; i < ArryOrdPrintDOsPreview.Length; i++) { if (ArryOrdPrintDOsPreview[i] != null && ArryOrdPrintDOsPreview[i].Id_orprn == null) { LstOrdPrintDOsPreview.Add(ArryOrdPrintDOsPreview[i]); //以id_or为标记,暂存行标记参数 if (!dicDORowPrtFlagsPreview.ContainsKey(ArryOrdPrintDOsPreview[i].Id_or)) { dicDORowPrtFlagsPreview.Add(ArryOrdPrintDOsPreview[i].Id_or, doRowPrtFlags[i]); } } } }
/// <summary> /// 根据就诊Id获取已经打印的全部医嘱数据 /// <para>获取表ci_or_prn中数据</para> /// </summary> /// <param name="idEn">就诊id</param> /// <param name="fgLong">长期医嘱、临时医嘱标识</param> /// <returns>返回本次就诊全部已打印的数据</returns> public OrdPrintDO[] GetPreviewAllPrtedOrds(string idEn, FBoolean fgLong, out PrtDORowsAssist rowAssist) { List <object> args = new List <object>(); args.Add(idEn); args.Add(fgLong); StringBuilder builder = new StringBuilder(); builder.Append("Id_en = '{0}' and Fg_long = '{1}'"); // builder.Append("Id_en = '{0}' and Fg_long = '{1}' and Id_orprn='0001Z7100000000E2YD6'"); string condition = string.Format(builder.ToString(), args.ToArray()); string orderBy = "Page_num,Row_num"; OrdPrintDO[] printDOsAll = ordPrintService.find(condition, orderBy, FBoolean.False); // 所有展现数据的标记参数 rowAssist = new PrtDORowsAssist(printDOsAll.Length); DORowPrtFlags[] doprtflags = rowAssist.GetDoFlagsArr(); for (int i = 0; i < printDOsAll.Length; i++) { doprtflags[i].AtPageIx = (int)printDOsAll[i].Page_num; // 所在页码 doprtflags[i].AtGridRowIx = (int)printDOsAll[i].Row_num; // 所在行号 doprtflags[i].TakeGridRowCnt = 0; // if (printDOsAll[i].Fg_reformrow == FBoolean.True) { doprtflags[i].ForceInOneGridRow = true; // 重整标识行不换行 doprtflags[i].MarkType = DORowPrtFlags.ENumMarkType.Text; //重整标记行内容标红 } //根据作废打印标识Fg_canc_prn,判断是否打印过作废线, //打印过作废线的同时显示内容和作废线(置灰),否则只显示内容(置灰) doprtflags[i].InvalidPrtType = printDOsAll[i].Fg_canc_prn == true ? DORowPrtFlags.ENumInvalidPrtType.TextWithDelLine : DORowPrtFlags.ENumInvalidPrtType.NotInvalid; // doprtflags[i].IsDataRemedy = (bool)printDOsAll[i].Fg_stop_prn; } return(printDOsAll); }
/// <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); }