private ClinicPhysicianRecipeData Facada(ClinicPhysicianRecipeData RecipeData)
        {
            //增加一个组号 用于打印门诊病例使用
            RecipeData.Tables[0].Columns.Add("GROUPNUMBER", typeof(string));

            foreach (DataRow editRow in RecipeData.Tables[0].Rows)
            {
                editRow.BeginEdit();

                editRow[ClinicPhysicianRecipeData.CLINICPHYSICIANRECIPE_NAME] = editRow["NAME"].ToString().Trim()
                                                                                + "<" + editRow["SPECS"].ToString().Trim() + ">"; //合并
                if (editRow["POSITION"].ToString().Trim() == "包装")
                {
                    editRow[ClinicPhysicianRecipeData.CLINICPHYSICIANRECIPE_POSITION] = "包装";
                    editRow[ClinicPhysicianRecipeData.CLINICPHYSICIANRECIPE_UNIT]     = editRow["PACK"].ToString();
                    editRow[ClinicPhysicianRecipeData.CLINICPHYSICIANRECIPE_HUNITPRICE]
                        = Convert.ToDecimal(editRow["UNITPRICE"]) * Convert.ToInt32(editRow["CHANGERATIO"]);
                    editRow[ClinicPhysicianRecipeData.CLINICPHYSICIANRECIPE_HAMOUNT]
                        = Convert.ToInt32(editRow["AMOUNT"]) / Convert.ToInt32(editRow["CHANGERATIO"]);
                    //YF内附院修改程序
                    editRow[ClinicPhysicianRecipeData.CLINICPHYSICIANRECIPE_UNITPRICE]
                        = Convert.ToDecimal(editRow["UNITPRICE"]) * Convert.ToInt32(editRow["CHANGERATIO"]);
                    editRow[ClinicPhysicianRecipeData.CLINICPHYSICIANRECIPE_AMOUNT]
                        = Convert.ToInt32(editRow["AMOUNT"]) / Convert.ToInt32(editRow["CHANGERATIO"]);
                }
                else
                {
                    editRow[ClinicPhysicianRecipeData.CLINICPHYSICIANRECIPE_POSITION]   = "单位";
                    editRow[ClinicPhysicianRecipeData.CLINICPHYSICIANRECIPE_UNIT]       = editRow["UNIT"].ToString();
                    editRow[ClinicPhysicianRecipeData.CLINICPHYSICIANRECIPE_UNITPRICE]  = editRow["UNITPRICE"];
                    editRow[ClinicPhysicianRecipeData.CLINICPHYSICIANRECIPE_HUNITPRICE] = editRow["UNITPRICE"];
                    editRow[ClinicPhysicianRecipeData.CLINICPHYSICIANRECIPE_HAMOUNT]    = editRow["AMOUNT"];
                }

                //组合 组编号
                editRow["GROUPNUMBER"] = editRow[ClinicPhysicianRecipeData.CLINICPHYSICIANRECIPE_CLINICRECIPEID].ToString() + editRow[ClinicPhysicianRecipeData.CLINICPHYSICIANRECIPE_GROUPNUM].ToString();

                editRow.EndEdit();
            }
            return(RecipeData);
        }
        private void lblClinicEmrPrint_Click(object sender, EventArgs e)
        {
            try
            {
                this.ucTime1.timer1.Stop();
                ClinicBriefemrData emr = listEmr.Find(a => a.PITCHON == true);
                if (emr == null)
                {
                    SkyComm.ShowMessageInfo("请选择您要打印的门诊病历信息");
                    return;
                }
                if (false == System.IO.File.Exists(Application.StartupPath + @"\\Reports\\门诊病历.frx"))
                {
                    SkyComm.ShowMessageInfo("系统没有找到报表文件“门诊病历.frx”!");
                    return;
                }
                ClinicPhysicianRecipeFacade recipeFacade = new ClinicPhysicianRecipeFacade();
                ClinicPhysicianRecipeData   RecipeData   = (ClinicPhysicianRecipeData)recipeFacade.FindRecipeInfoRepForReprint(emr.DiagnoseId, emr.Registerid);
                ClinicPhysicianRecipeData   dsTmp        = (ClinicPhysicianRecipeData)RecipeData.Clone();
                ClinicPhysicianRecipeData   dsTmpCheck   = (ClinicPhysicianRecipeData)RecipeData.Clone();
                string          item_Tmp    = string.Empty;
                string          item        = string.Empty;
                string          item2       = string.Empty;
                string          item3       = string.Empty;
                string          item4       = string.Empty;
                ClinicEmrFacade cef         = new ClinicEmrFacade();
                DataSet         CEFData     = cef.GetSchedulInfo(emr.DiagnoseId, emr.Registerid);
                string          ACCEPTSTIME = string.Empty;
                foreach (DataRow dsr in CEFData.Tables[0].Rows)
                {
                    if (dsr["ACCEPTSTIME"].ToString() != "")
                    {
                        ACCEPTSTIME = dsr["ACCEPTSTIME"].ToString();
                    }
                    else
                    {
                        ACCEPTSTIME = "";
                    }
                }
                foreach (DataRow datarow in RecipeData.Tables[0].Rows)
                {
                    if (Convert.ToInt32(datarow["RECIPESTATE"]) == 2)
                    { //过滤退过费
                        continue;
                    }

                    switch (datarow["RECIPETYPE"].ToString())
                    {
                    case "中草药":
                    case "药品费":
                        dsTmp.Tables[0].ImportRow(datarow);
                        break;

                    case "检查":
                        item += datarow["NAME"].ToString() + "    ";
                        dsTmpCheck.Tables[0].ImportRow(datarow);
                        break;

                    case "化验":
                        item2 += datarow["NAME"].ToString() + "    ";
                        dsTmpCheck.Tables[0].ImportRow(datarow);
                        break;

                    case "手术":
                        item3 += datarow["NAME"].ToString() + "    ";
                        dsTmpCheck.Tables[0].ImportRow(datarow);
                        break;

                    case "治疗":
                        datarow["RECIPETYPE"] = "治疗";
                        item4 += datarow["NAME"].ToString() + "    ";
                        dsTmpCheck.Tables[0].ImportRow(datarow);
                        break;
                    }
                }

                dsTmp = Facada(dsTmp);

                item_Tmp = (item == "" ? "" : item + "\r\n") + (item2 == "" ? "" : item2 + "\r\n") + (item3 == "" ? "" : item3 + "\r\n") + (item4 == "" ? "" : item4);
                if (!dsTmp.Tables[0].Columns.Contains("Type"))
                {
                    dsTmp.Tables[0].Columns.Add("Type", typeof(System.String)).DefaultValue = "";
                }


                foreach (DataRow row in dsTmp.Tables[0].Rows)
                {
                    DataSet ds = new MedUsageFacade().FindByMedUsage(row["MEDUSAGE"].ToString());
                    if (ds.Tables[0].Rows.Count > 0 && ds.Tables[0].Rows[0]["TYPE"].ToString().Contains("静滴"))
                    {
                        row["Type"] = "静滴";
                    }
                    if (row["RECIPETYPE"].ToString() == "中草药")
                    {
                        row["DOSE"] = row["AMOUNT"];
                    }
                    foreach (DataColumn dc in dsTmp.Tables[0].Columns)
                    {
                        if (dc.DataType == typeof(System.Decimal))
                        {
                            double decValue = 0;
                            if (double.TryParse(row[dc.ColumnName].ToString(), out decValue))
                            {
                                row[dc.ColumnName] = Convert.ToDouble(decValue).ToString("0.######");
                            }
                        }
                    }
                }

                DataTable tb = dsTmp.Tables[0];
                if (dsTmp.Tables[0].Rows.Count > 0)
                {
                    tb = dsTmp.Tables[0].Select("", "CLINICRECIPEID,GROUPNUM").CopyToDataTable();
                }


                dsTmp.WriteXml(Application.StartupPath + @"\\ReportXML\\门诊病历or治疗建议YP.xml");
                dsTmpCheck.WriteXml(Application.StartupPath + @"\\ReportXML\\门诊病历or治疗建议ZL.xml");

                PatientInfoFacade patientinfo = new PatientInfoFacade();
                DataSet           dataset     = patientinfo.FindPateintByDiagnoseID(emr.DiagnoseId);

                F_DIAGNOSEFacade diagnose = new F_DIAGNOSEFacade();
                DataSet          dataset1 = diagnose.FindByCustomID(emr.DiagnoseId, "DIAGNOSEID");

                PrintManager print = new PrintManager();
                print.InitReport("门诊病历");
                print.AddParam("诊疗号", emr.DiagnoseId);
                print.AddParam("挂号号", emr.Registerid);
                print.AddParam("PATIENTNAME", emr.PATIENTNAME); //姓名  PATIENTNAME
                print.AddParam("SEX", emr.SEX);                 //性别   SEX
                print.AddParam("AVOIRDUPOIS", emr.AVOIRDUPOIS); //体重   AVOIRDUPOIS
                print.AddParam("AGE", emr.AGE);                 //年龄   AGE
                print.AddParam("AGEUNIT", emr.AGEUNIT);         //年龄单位
                print.AddParam("费用类别", "");                     //费用类别
                print.AddParam("OPERATETIME", emr.VisitTime);   //就诊时间  VisitTime
                print.AddParam("REGISTEROFFIC", emr.Office);    //就诊科室  office
                print.AddParam("主诉", emr == null ? "" : emr.CaseinChief);
                print.AddParam("病史", emr == null ? "" : emr.Emrcontent);
                print.AddParam("查体", emr == null ? "" : emr.Physical);
                print.AddParam("治疗建议", emr == null ? "" : emr.Notice);
                print.AddParam("临床诊断", emr.DiagResult);                                             //门诊诊断  DiagResult
                print.AddParam("医生", emr.VisitDoctorName);                                          //接诊医生  VisitDoctorName
                print.AddParam("检查", item_Tmp);                                                     //检查
                print.AddParam("过敏史", emr.Allergen);                                                //过敏史
                print.AddParam("TELEPHONE", emr.TELEPHONE);                                         //联系电话
                print.AddParam("ADDRESS", emr.ADDRESS);                                             //地址
                print.AddParam("EMPLOYMENT", emr.EMPLOYMENT);                                       //职业
                print.AddParam("监护人", emr.Guardian);                                                //监护人
                print.AddParam("血压", emr.SystolicPressure + "/" + emr.DiastolicPressure + " mmHg"); //血压
                print.AddParam("ACCEPTSTIME", ACCEPTSTIME.ToString());                              //就诊开始时间 17417
                print.AddParam("医院名称", SysOperatorInfo.CustomerName);                               //医院名称
                print.AddParam("OPERATETIME", emr.VisitTime == null ? "" : emr.VisitTime.ToString());

                if (dataset != null && dataset.Tables[0].Rows.Count > 0)
                {
                    print.AddParam("BIRTHDAY", dataset.Tables[0].Rows[0]["BIRTHDAY"].ToString());             //出生日期
                    print.AddParam("EMPLOYMENT", dataset.Tables[0].Rows[0]["EMPLOYMENT"].ToString());         //职业
                    print.AddParam("MARRIAGESTATUS", dataset.Tables[0].Rows[0]["MARRIAGESTATUS"].ToString()); //婚姻状况
                    print.AddParam("NATION", dataset.Tables[0].Rows[0]["NATION"].ToString());                 //民族
                    //  print.AddParam("ACCEPTSTIME", dataset.Tables[0].Rows[0]["ACCEPTSTIME"].ToString());   //就诊开始时间
                }
                else
                {
                    print.AddParam("BIRTHDAY", "");       //出生日期
                    print.AddParam("EMPLOYMENT", "");     //职业
                    print.AddParam("MARRIAGESTATUS", ""); //婚姻状况
                    print.AddParam("NATION", "");         //民族
                }

                if (dataset1 != null && dataset1.Tables.Count > 0 && dataset1.Tables[0].Rows.Count > 0)
                {
                    print.AddParam("病名", dataset1.Tables[0].Rows[0]["SICKNESSNAME3"].ToString()); //病名
                    print.AddParam("证型", dataset1.Tables[0].Rows[0]["SICKNESS2"].ToString());     //证型
                }
                else
                {
                    print.AddParam("病名", "");   //病名
                    print.AddParam("证型", "");   //证型
                }
                print.AddData(dsTmpCheck.Tables[0], "report1");

                #region 构造病历数据集

                DataTable dt = new DataTable("reportemr");
                dt.Columns.Add("主诉");
                dt.Columns.Add("病史");
                dt.Columns.Add("查体");
                dt.Columns.Add("治疗建议");
                dt.Columns.Add("临床诊断");
                dt.Columns.Add("病名");
                dt.Columns.Add("证型");
                dt.Columns.Add("医生");
                dt.Columns.Add("检查");

                dt.Columns.Add("病生状态");
                dt.Columns.Add("过敏史");
                dt.Columns.Add("TELEPHONE");
                dt.Columns.Add("ADDRESS");
                dt.Columns.Add("EMPLOYMENT");
                dt.Columns.Add("监护人");

                DataRow theNewRow = dt.NewRow();
                theNewRow["主诉"]   = emr == null ? "" : emr.CaseinChief;
                theNewRow["病史"]   = emr == null ? "" : emr.Emrcontent;
                theNewRow["查体"]   = emr == null ? "" : emr.Physical;
                theNewRow["治疗建议"] = emr == null ? "" : emr.Notice;
                theNewRow["临床诊断"] = emr.DiagResult;
                if (dataset1 != null && dataset1.Tables[0].Rows.Count > 0)
                {
                    theNewRow["病名"] = dataset1.Tables[0].Rows[0]["SICKNESSNAME3"].ToString();
                    theNewRow["证型"] = dataset1.Tables[0].Rows[0]["SICKNESS2"].ToString();
                }
                theNewRow["医生"]         = SysOperatorInfo.OperatorName;
                theNewRow["检查"]         = item;
                theNewRow["病生状态"]       = emr.Morbidity;
                theNewRow["过敏史"]        = emr.Allergen;
                theNewRow["TELEPHONE"]  = emr.TELEPHONE;
                theNewRow["ADDRESS"]    = emr.ADDRESS;
                theNewRow["EMPLOYMENT"] = emr.EMPLOYMENT;
                theNewRow["监护人"]        = emr.Guardian;

                dt.Rows.Add(theNewRow);

                dt.WriteXml(Application.StartupPath + @"\\ReportXML\\门诊病历打印病历数据集.xml");

                print.AddData(dt, "reportemr");

                #endregion

                EPadidiographFacade eFacade = new EPadidiographFacade();
                DataSet             eData   = eFacade.GetByUserid(emr.VisitDoctor);
                print.AddData(eData.Tables[0], "dsPic"); //电子签名
                print.AddData(tb, "report");

                PrintManager.CanDesign = true;

                print.Print();
                print.Dispose();
                Thread.Sleep(100);
            }
            catch (Exception ex)
            {
                Skynet.LoggingService.LogService.GlobalInfoMessage("门诊病历打印异常:" + ex.Message);
            }
            finally
            {
                ucTime1.Sec = 60;
                ucTime1.timer1.Start();
            }
        }