示例#1
0
        /// <summary>
        ///chenqiang 2018.04.20 add by Case:31026   打印电子健康卡二维码
        /// </summary>
        /// <param name="imgData">电子健康卡二维码base64数据</param>
        private void printVirtualCard(HealthCardInfoStruct Entity)

        {
            try
            {
                string       path  = Application.StartupPath + @"\\Reports\\电子卡二维码.frx";
                PrintManager print = new PrintManager();
                if (System.IO.File.Exists(path) == true)
                {
                    using (PrintManager report = new PrintManager())
                    {
                        DataTable dtQRCode = new DataTable("reportQR");
                        if (Entity.imgData != "" && Entity.imgData != null)
                        {
                            byte[] bytesImg = Convert.FromBase64String(Entity.imgData);//字符串转换为字节
                            dtQRCode.Columns.Add("QRCode", typeof(byte[]));
                            DataRow drQrCode = dtQRCode.NewRow();
                            drQrCode["QRCode"] = bytesImg;
                            dtQRCode.Rows.Add(drQrCode);
                        }
                        else
                        {
                            dtQRCode.Columns.Add("QRCode", typeof(string));
                            DataRow drQrCode = dtQRCode.NewRow();
                            drQrCode["QRCode"] = Entity.QRCode;
                            dtQRCode.Rows.Add(drQrCode);
                        }
                        string cardType = string.Empty;
                        if (Entity.QRCode.IndexOf("EH") == 0)
                        {
                            cardType = "1";
                        }
                        else if (Entity.QRCode.IndexOf("EM") == 0)
                        {
                            cardType = "2";
                        }
                        else
                        {
                            cardType = "0";
                        }
                        print.InitReport("电子卡二维码");
                        print.AddParam("二维码", Entity.QRCode);
                        print.AddDataSet(dtQRCode, "电子卡二维码");
                        print.AddVariable("姓名", IdInfo.Name);
                        print.AddVariable("性别", IdInfo.Sex);
                        print.AddVariable("年龄", "");
                        print.AddVariable("出生日期", IdInfo.Birthday);
                        string idNumber = IdInfo.Number;
                        print.AddVariable("身份证号", idNumber);
                        print.AddVariable("卡类型", cardType);
                        PrintManager.CanDesign = true;
                        //print.PreView();
                        print.Print();
                        print.Dispose();
                    }
                }
                else
                {
                    SkynetMessage.MsgInfo("系统没有找到报表文件“电子卡二维码.frx”!");
                }
            }
            catch (Exception lex)
            {
                if (lex.Message.IndexOf("灾难性") > 0)
                {
                    SkynetMessage.MsgInfo(lex.Message + ": 打印机连接失败,请检查!");
                }
                else
                {
                    SkynetMessage.MsgInfo(lex.Message);
                }
            }
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            Log.Info(GetType().ToString(), "执行time1", "开始执行timer1_Tick");

            //检测是否有卡
            Thread.Sleep(200);
            StringBuilder sbinput   = new StringBuilder("<invoke name=\"READCARDTESTINSERTCARD\"><arguments></arguments></invoke>");
            string        strResult = "";

            try
            {
                strResult = XuHuiInterface_DLL.XmlTcp(sbinput, 0);
            }
            catch (Exception exception)
            {
                Log.Info(GetType().ToString(), "检测有卡XuHuiInterface_DLL.XmlTcp", exception.Message);
            }
            LogService.GlobalInfoMessage("调用检测有卡方法输出返回:" + strResult + ",输出参数:" + sbinput.ToString());
            if (string.IsNullOrEmpty(sbinput.ToString()))
            {
                return;
            }

            System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
            doc.LoadXml(sbinput.ToString());
            System.Xml.XmlNode xnd = doc.SelectSingleNode("/return/arguments/string[@id='CARDSTACKSTATE']");
            if (xnd != null)
            {
                string CardStackState = xnd.InnerText;
                if (CardStackState == "1")
                {
                    timer1.Stop();
                    timer2.Stop();

                    //如果有卡则读取磁条卡号
                    Thread.Sleep(200);
                    if (CardType == "1")
                    {
                        sbinput   = new StringBuilder("<invoke name=\"READCARDREADMAGCARDNO\"><arguments></arguments></invoke>");
                        strResult = XuHuiInterface_DLL.XmlTcp(sbinput, 0);
                        LogService.GlobalInfoMessage("调用读取磁条卡号卡方法返回:" + strResult + ",输出参数:" + sbinput.ToString());
                        doc.LoadXml(sbinput.ToString());
                        xnd = doc.SelectSingleNode("/return/arguments/string[@id='CARDNO']");
                        if (xnd != null)
                        {
                            string strCardNO = xnd.InnerText;
                            //如果读取到的磁条卡号长度不对,则读取居民健康卡
                            if (strCardNO.Length != 15)
                            {
                                try
                                {
                                    //LogService.GlobalInfoMessage("2");
                                    //移动到IC位读居民健康卡
                                    sbinput = new StringBuilder("<invoke name=\"READCARDMOVECARDTOREAR\"><arguments></arguments></invoke>");
                                    Thread.Sleep(200);
                                    LogService.GlobalInfoMessage("调用移动卡到卡后端方法输入参数:" + sbinput.ToString());
                                    strResult = XuHuiInterface_DLL.XmlTcp(sbinput, 0);
                                    LogService.GlobalInfoMessage("调用移动卡到卡后端方法返回:" + strResult + ",输出参数:" + sbinput.ToString());
                                    if (sbinput.ToString().IndexOf("SUCCESS") > 0)
                                    {
                                        //读居民健康卡
                                        //居民健康卡
                                        HealthCardBase       _cardBase = HealthCardBase.CreateInstance(this);
                                        HealthCardInfoStruct Entity    = _cardBase.HisRead();
                                        SkyComm.cardInfoStruct.CardNo = Entity.HealthCardNo;
                                        if (!backgroundWorker1.IsBusy)
                                        {
                                            backgroundWorker1.RunWorkerAsync();
                                        }
                                        if (string.IsNullOrEmpty(SkyComm.cardInfoStruct.CardNo))
                                        {
                                            SkyComm.ShowMessageInfo("读卡失败,请重新检查卡位方向!");
                                            closePort();
                                            this.DialogResult = DialogResult.Cancel;
                                        }
                                    }
                                }
                                catch (Exception ex)
                                {
                                    LogService.GlobalInfoMessage("移动卡到卡后端,读居民健康卡失败:" + ex.Message);

                                    Thread.Sleep(200);
                                    sbinput   = new StringBuilder("<invoke name=\"READCARDOUTCARD\"><arguments></arguments></invoke>");
                                    strResult = AutoServiceSDK.SDK.XuHuiInterface_DLL.XmlTcp(sbinput, 0);
                                    LogService.GlobalInfoMessage("调用退卡卡方法返回:" + strResult + ",输出参数:" + sbinput.ToString());;
                                    SkyComm.ShowMessageInfo("读卡失败,请重新检查卡位方向!");
                                    closePort();
                                    this.DialogResult = DialogResult.Cancel;
                                }
                            }
                            else
                            {
                                //读取就诊卡
                                SkyComm.cardInfoStruct.CardNo = strCardNO;
                                if (!backgroundWorker1.IsBusy)
                                {
                                    backgroundWorker1.RunWorkerAsync();
                                }
                            }
                        }
                        else
                        {
                            //移动到IC位读居民健康卡
                            sbinput = new StringBuilder("<invoke name=\"ReadCardMoveCardToIC\"><arguments></arguments></invoke>");
                            Thread.Sleep(200);
                            strResult = XuHuiInterface_DLL.XmlTcp(sbinput, 0);
                            if (strResult.IndexOf("SUCCESS") > 0)
                            {
                                //读居民健康卡
                                //居民健康卡
                                HealthCardBase       _cardBase = HealthCardBase.CreateInstance(this);
                                HealthCardInfoStruct Entity    = _cardBase.HisRead();
                                SkyComm.cardInfoStruct.CardNo = Entity.HealthCardNo;
                                if (!backgroundWorker1.IsBusy)
                                {
                                    backgroundWorker1.RunWorkerAsync();
                                }
                            }
                        }
                    }
                    else if (CardType == "2")
                    {
                        #region 读取M1卡方法
                        //卡片移到射频位
                        sbinput   = new StringBuilder("<invoke name=\"READCARDMOVECARDTORF\"><arguments></arguments></invoke>");
                        strResult = XuHuiInterface_DLL.XmlTcp(sbinput, 0);
                        LogService.GlobalInfoMessage("调用卡片移到射频位方法返回:" + strResult + ",输出参数:" + sbinput.ToString());

                        //读第8块的数据
                        string strInput = "<invoke name=\"READCARDREADRFCARD\"><arguments>" +
                                          "<string id=\"SECTORNO\">8</string>" +
                                          "<string id=\"BLOCKNO\">2</string>" +
                                          "<string id=\"PASSWORD\">FFFFFFFFFFFF</string>" +
                                          "</arguments></invoke>";
                        LogService.GlobalInfoMessage("调用读射频卡数据方法输入参数1:" + strInput);
                        sbinput   = new StringBuilder(strInput);
                        strResult = XuHuiInterface_DLL.XmlTcp(sbinput, 0);
                        LogService.GlobalInfoMessage("调用读射频卡数据方法返回:" + strResult + ",输出参数:" + sbinput.ToString());

                        doc.LoadXml(sbinput.ToString());
                        xnd = doc.SelectSingleNode("/return/arguments/string[@id='ERROR']");
                        string strCardNO = string.Empty;
                        if (xnd != null && xnd.InnerText == "SUCCESS")
                        {
                            strCardNO = SkyComm.HexStringToString(doc.SelectSingleNode("/return/arguments/string[@id='CARDNO']").InnerText, ASCIIEncoding.ASCII);
                            LogService.GlobalInfoMessage("=============读8扇区的内容===========================" + strCardNO + "======================================");

                            if (strCardNO.Length >= 16)
                            {
                                strCardNO = strCardNO.Substring(0, 16);
                            }
                        }

                        if (strCardNO.Length >= 16)
                        {
                        }


                        LogService.GlobalInfoMessage("读取到的卡号信息:" + strCardNO + "===========================");

                        if (!string.IsNullOrEmpty(strCardNO) && strCardNO.Length >= 15)
                        {
                            //读取就诊卡
                            SkyComm.cardInfoStruct.CardNo = strCardNO.Replace(" ", "").Replace("\0", "").Trim();
                            if (!backgroundWorker1.IsBusy)
                            {
                                backgroundWorker1.RunWorkerAsync();
                            }
                        }
                        else
                        {
                            SkyComm.ShowMessageInfo("读卡失败,请重新检查卡位方向!");
                            closePort();
                            this.DialogResult = DialogResult.Cancel;
                        }
                        #endregion
                    }
                    else if (CardType == "3")
                    {
                        #region 读取芯片卡方法,暂时屏蔽
                        SkyComm.cardInfoStruct.CardNo = CardCpu.getCardNo();


                        if (string.IsNullOrEmpty(SkyComm.cardInfoStruct.CardNo))
                        {
                            try
                            {
                                //LogService.GlobalInfoMessage("2");
                                //移动到IC位读居民健康卡
                                sbinput = new StringBuilder("<invoke name=\"READCARDMOVECARDTOREAR\"><arguments></arguments></invoke>");
                                Thread.Sleep(200);
                                LogService.GlobalInfoMessage("调用移动卡到卡后端方法输入参数:" + sbinput.ToString());
                                strResult = XuHuiInterface_DLL.XmlTcp(sbinput, 0);
                                LogService.GlobalInfoMessage("调用移动卡到卡后端方法返回:" + strResult + ",输出参数:" + sbinput.ToString());
                                if (sbinput.ToString().IndexOf("SUCCESS") > 0)
                                {
                                    //读居民健康卡
                                    //居民健康卡
                                    HealthCardBase       _cardBase = HealthCardBase.CreateInstance(this);
                                    HealthCardInfoStruct Entity    = _cardBase.HisRead();
                                    SkyComm.cardInfoStruct.CardNo = Entity.HealthCardNo;
                                    if (!backgroundWorker1.IsBusy)
                                    {
                                        backgroundWorker1.RunWorkerAsync();
                                    }
                                    if (string.IsNullOrEmpty(SkyComm.cardInfoStruct.CardNo))
                                    {
                                        SkyComm.ShowMessageInfo("读卡失败,请重新检查卡位方向!");
                                        closePort();
                                        this.DialogResult = DialogResult.Cancel;
                                    }
                                }
                            }
                            catch (Exception ex)
                            {
                                LogService.GlobalInfoMessage("移动卡到卡后端,读居民健康卡失败:" + ex.Message);

                                Thread.Sleep(200);
                                sbinput   = new StringBuilder("<invoke name=\"READCARDOUTCARD\"><arguments></arguments></invoke>");
                                strResult = AutoServiceSDK.SDK.XuHuiInterface_DLL.XmlTcp(sbinput, 0);
                                LogService.GlobalInfoMessage("调用退卡卡方法返回:" + strResult + ",输出参数:" + sbinput.ToString());;
                                SkyComm.ShowMessageInfo("读卡失败,请重新检查卡位方向!");
                                closePort();
                                this.DialogResult = DialogResult.Cancel;
                            }
                        }
                        else
                        {
                            CardRead cardUtility = new CardRead(this);

                            string strMsg = cardUtility.GetPatiantInfo();

                            if (!string.IsNullOrEmpty(strMsg))
                            {
                                SkyComm.ShowMessageInfo(strMsg);
                            }

                            if (!backgroundWorker1.IsBusy)
                            {
                                backgroundWorker1.RunWorkerAsync();
                            }
                        }



                        #endregion
                    }
                }
            }
        }
示例#3
0
        private void lblOK_Click(object sender, EventArgs e)
        {
            if (lbltel.Text.Length != 11)
            {
                lblErr.Text    = "手机号长度必须是11位!";
                lblErr.Visible = true;
                return;
            }


            this.lblOK.Enabled     = false;
            this.btnReturn.Enabled = false;
            this.btnExit.Enabled   = false;
            panel2.Enabled         = false;
            _telphone = this.lbltel.Text.Trim();
            string CardNo = string.Empty;

            CardAuthorizationFacade eCardAuthorizationFacade = new CardAuthorizationFacade();


            try
            {
                isHadCard = false;
                cardNub   = string.Empty;
                string cardType, cardTypeId;
                HealthCardInfoStruct Entity = new HealthCardInfoStruct();
                if (!cardRegulation(out cardType, out cardTypeId))//电子卡注册签约条件判断
                {
                    return;
                }

                #region 卡管平台电子卡注册

                HealthCardBase _healthcardBase = HealthCardBase.CreateEhealthCardInstance(this);

                HealthCardInfoStruct patientInfo = new HealthCardInfoStruct();
                patientInfo.XM   = IdInfo.Name;
                patientInfo.XB   = IdInfo.Sex;
                patientInfo.LXDH = _telphone;
                patientInfo.CSRQ = IdInfo.Birthday;
                patientInfo.SFZH = IdInfo.Number;
                patientInfo.DZ   = IdInfo.Address;
                patientInfo.MZ   = IdInfo.People;

                Entity = _healthcardBase.registerEHC(patientInfo);



                #endregion

                #region  HIS业务机制处理
                PatientInfoFacade pfacade      = new PatientInfoFacade();
                string            ConditionStr = cardType == "0" ? " AND A.IDENTITYCARD='" + IdInfo.Number + "' " : " AND A.GUARDIANIDNUMBER='" + IdInfo.Number + "' ";
                ConditionStr += " AND A.PATIENTNAME='" + IdInfo.Name + "'  ORDER BY  A.DIAGNOSEID DESC ";
                DataSet dsState = pfacade.FindCardPatientinfoByCondition(ConditionStr);
                if (dsState != null && dsState.Tables[0].Rows.Count > 0)
                {
                    strDiagnoseid = dsState.Tables[0].Rows[0]["DIAGNOSEID"].ToString();
                }
                virtualCardId = Entity.ehealthCardId;


                if (string.IsNullOrEmpty(strDiagnoseid))
                {
                    BindHis(virtualCardId);
                    eCardAuthorizationFacade.updateViceCardIdByCardId(IdInfo.Number, virtualCardId);//根据卡号修改电子健康卡号
                }
                else
                {
                    string    sql = "select * from t_card_authorization where DIAGNOSEID = @DIAGNOSEID and CIRCUIT_STATE = 0 and CARDID = @CARDID and TYPEID = 3";
                    Hashtable ht  = new Hashtable();
                    ht.Add("@DIAGNOSEID", strDiagnoseid);
                    ht.Add("@CARDID", IdInfo.Number);
                    DataSet dataSet = query.ExeQuery(sql, ht);
                    if (dataSet.Tables[0].Rows.Count > 0)
                    {
                        bool flag = true;
                        foreach (DataRow dataRow in dataSet.Tables[0].Rows)
                        {
                            if (!string.IsNullOrEmpty(dataRow["VICECARDID"].ToString()))
                            {
                                flag = false;
                                string    sql1      = "update t_card_authorization set VICECARDID = @VICECARDID where ACCOUNT_ID = @ACCOUNT_ID";
                                Hashtable hashtable = new Hashtable();
                                hashtable.Add("@ACCOUNT_ID", dataRow["ACCOUNT_ID"].ToString());
                                hashtable.Add("@VICECARDID", virtualCardId);
                                query.ExeQuery(sql1, hashtable);
                            }
                        }

                        if (flag)
                        {
                            BindHis(virtualCardId);
                            eCardAuthorizationFacade.updateViceCardIdByCardId(IdInfo.Number, virtualCardId);//根据卡号修改电子健康卡号
                        }
                    }
                    else
                    {
                        BindHis(virtualCardId);
                        eCardAuthorizationFacade.updateViceCardIdByCardId(IdInfo.Number, virtualCardId);//根据卡号修改电子健康卡号
                    }
                }



                if (eLCardAuthorizationData != null)
                {
                    cardNub = eLCardAuthorizationData.Tables[0].Rows.Count > 0 ? eLCardAuthorizationData.Tables["T_CARD_AUTHORIZATION"].Rows[0][CardAuthorizationData.T_CARD_AUTHORIZATION_CARDID].ToString() : "";
                }


                if (strDiagnoseid != "")
                {
                    //eCardAuthorizationFacade.updateViceCardIdByCardId(cardNub, virtualCardId);//根据卡号修改电子健康卡号
                }
                printVirtualCard(Entity);//打印二维码
                #endregion
            }
            catch (Exception ex)
            {
                SkynetMessage.MsgInfo(ex.Message);
            }



            DialogResult = System.Windows.Forms.DialogResult.OK;
        }
示例#4
0
        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                isHadCard = false;
                cardNub   = string.Empty;
                string cardType, cardTypeId;
                HealthCardInfoStruct Entity = new HealthCardInfoStruct();
                if (!cardRegulation(out cardType, out cardTypeId))//电子卡注册签约条件判断
                {
                    return;
                }
                decimal decMoney = 0;

                #region 卡管平台电子卡注册
                LogService.GlobalInfoMessage("HIS组织调用电子卡数据");
                HealthCardBase _healthcardBase = HealthCardBase.CreateEhealthCardInstance(this);
                LogService.GlobalInfoMessage("电子XML加载完成");
                HealthCardInfoStruct patientInfo = new HealthCardInfoStruct();
                patientInfo.XM   = patientName;
                patientInfo.XB   = gender;
                patientInfo.LXDH = phoneNo;
                patientInfo.CSRQ = birthday;
                patientInfo.SFZH = cbxCertificateNO;
                patientInfo.DZ   = address;
                patientInfo.MZ   = nation;

                Entity = _healthcardBase.registerEHC(patientInfo);
                if (cardType == "0")
                {
                    //Entity = _healthcardBase.registerEHC(patientInfo);
                }
                else if (cardType == "1")
                {
                    //FrmMaxCard frm = new FrmMaxCard();
                    //frm.labelText = "请扫描家长电子卡......";
                    //if (frm.ShowDialog() == DialogResult.OK)
                    //    patientInfo.ehealthCardId = frm.VirtualNub.Substring(0, frm.VirtualNub.Length - 2);
                    //else
                    //    return;
                    //Entity = _healthcardBase.registerEHC_Child(patientInfo);
                }
                else
                {
                    //if (strDiagnoseid == "")
                    //{
                    //    BindHis("00000000000000000");
                    //    strDiagnoseid = eLCardAuthorizationData.Tables["T_CARD_AUTHORIZATION"].Rows[0][CardAuthorizationData.T_CARD_AUTHORIZATION_DIAGNOSEID].ToString();
                    //    cardNub = eLCardAuthorizationData.Tables["T_CARD_AUTHORIZATION"].Rows[0][CardAuthorizationData.T_CARD_AUTHORIZATION_CARDID].ToString();
                    //    this.txtCureID.Text = cardNub;
                    //}
                    //patientInfo.diagnoseId = strDiagnoseid;
                    //patientInfo.cardId = cardNub;
                    //Entity = _healthcardBase.registerEHC_medicalCard(patientInfo);
                }

                #endregion

                #region  HIS业务机制处理
                //if (cardType != "2")
                //{
                //    PatientInfoFacade pfacade = new PatientInfoFacade();
                //    string ConditionStr = cardType == "0" ? " AND A.IDENTITYCARD='" + cbxCertificateNO.Text.Trim() + "' " : " AND A.GUARDIANIDNUMBER='" + txtGudrdianIDNumber.Text.Trim() + "' ";
                //    ConditionStr += " AND A.PATIENTNAME='" + this.tbxName.Text + "'  ORDER BY  A.DIAGNOSEID DESC ";
                //    DataSet dsState = pfacade.FindCardPatientinfoByCondition(ConditionStr);
                //    if (dsState != null && dsState.Tables[0].Rows.Count > 0)
                //    {
                //        this.txtCureID.Text = dsState.Tables[0].Rows[0]["DIAGNOSEID"].ToString();
                //    }
                //}
                //virtualCardId = cardType == "1" ? Entity.childEhealthCardId : Entity.ehealthCardId;
                //if (strDiagnoseid == "")//未办卡,办卡完成后获取患者院内卡号
                //{
                //    LogService.GlobalInfoMessage("患者未办理院内卡");

                //    BindHis(virtualCardId);
                //    if (eLCardAuthorizationData != null)
                //    {
                //        cardNub = eLCardAuthorizationData.Tables[0].Rows.Count > 0 ? eLCardAuthorizationData.Tables["T_CARD_AUTHORIZATION"].Rows[0][CardAuthorizationData.T_CARD_AUTHORIZATION_CARDID].ToString() : "";
                //    }
                //}

                //if (cardNub != "")
                //{
                //    LogService.GlobalInfoMessage("患者已办理院内卡");
                //    eCardAuthorizationFacade.updateViceCardIdByCardId(cardNub, virtualCardId);//根据卡号修改电子健康卡号
                //    printVirtualCard(Entity);//打印二维码
                //}
                #endregion
            }
            catch (Exception ex)
            {
                SkynetMessage.MsgInfo(ex.Message);
            }
        }