2023.01.27(PJ401)

SaGo_MunGcci·2023년 1월 27일
0

업무 프로젝트

목록 보기
13/29

setEvent에 판정문 청구용 글자수제한 이벤트 및 바이트수 표기 공부하기.

using AMIS3.HM.ZZ;
using AMIS3.HM.ZZ.ZZLIB003;
using AMIS3.HM.ZZ.ZZLIB003.AutoCal;
using AMIS3.HM.ZZ.ZZLIB003.Controls;
using AMIS3.HM.ZZ.ZZLIB003.Dto;
using AMIS3.HM.ZZ.ZZLIB003.Mvc.Utils;
using AMIS3.UIFramework;
using AMIS3.UIFramework.DataModel;
using AMIS3.UIFramework.FxExtension;
using AMIS3.UIFramework.UI;
using AMIS3.UIFramework.UI.Controls;
using AMIS3.ZZ.ZZ.ZZ.Common.Message;
using DevExpress.XtraEditors.Repository;
using DevExpress.XtraGrid.Views.Grid;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;

namespace AMIS3.HM.GC.PJ401
{
    public partial class VHMGCPJ401S : ScreenBase, ISmartToolbar
    {
        DataTable svDt = null;
        DataTable dtRes = null;
        DataTable dtMun = null;
        DataTable dtTab = null;
        APanelControl pn = new APanelControl();
        PreData searchParam = null;
        HMPatVO patVO = null;
        DataTable dtExamRsltCd = new DataTable();   //검사결과코드

        private const string strFormNm = "VHMGCPJ401S";       // 폼이름
        private string strJudgDivCd = "G";                    // 판정구분
        private string strFormCd = "PG20220101";              // 서식코드
        private string strFormVerCd = "PG2022010101";         // 서식버전 코드

        string sPatno = "";
        string sheDt = "";
        long vistSn = 0;
        string doclicnsNo = "";                               // 의사면허번호
        string doctorId = "";                                 // 의사아이디
        string doctorNm = "";                                 // 의사명
        string judgDt = "";                                   // 판정일자
        string rsltPrntDt = "";                               // 결과물출력일자
        string gubun = "";                                    // 탭구분
        UserT UserInfo = null;

        public List<ActionButtonItem> ActionButtonItems { get; set; } = new List<ActionButtonItem>();

        public VHMGCPJ401S()
        {
            InitializeComponent();

            UserInfo = SecurityWrapper.Instance.SecurityService.GetUserInfo(this);
            GetDoctorLicnsNo cs = new GetDoctorLicnsNo(UserInfo.usrId);
            if (cs != null)
            {
                doclicnsNo = cs.GetLicnsNo();       // 의사면허번호
                doctorId = cs.GetDoctorId();        // 의사아이디
                doctorNm = cs.GetDoctorNm();        // 의사명
            }
            SetEvent();
            SetControl();
        }

        private void VHMGCPJ401S_Load(object sender, EventArgs e)
        {
            dcHeDt.ToDateTime = DateTime.Today.AddDays(3);
            dcHeDt.FromDateTime = DateTime.Today;

            Screen_Clear();
        }

        private void SetControl()
        {
            //this.pn.SetControl();
            this.Gpanel.SetControl();
            this.Tpanel.SetControl();
            ActionBtnSetting();
            SetDoctorInfo();
        }

        /// <summary>
        /// 조회버튼
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSearch_Click(object sender, EventArgs e)
        {
            retrievePatInfo();
            SetDoctorInfo();
        }


        /// <summary>
        /// 수진자목록
        /// </summary>
        private async void retrievePatInfo()
        {
            PreData preDt = new PreData();
            if (dcHeDt.FromDateTime == null
                || dcHeDt.ToDateTime == null)
            {
                AMessageBox.ShowDialog(this, "필수", "조회기간을 선택하세요");
                return;
            }

            preDt["startDt"] = dcHeDt.FromDateTime.ToString("yyyyMMdd");
            preDt["endDt"] = dcHeDt.ToDateTime.ToString("yyyyMMdd");
            preDt["patno"] = txtPatno.EditValue.ToStringDefault();
            preDt["gubun"] = aTabControl1.SelectedTabPage.Name.ToStringDefault();    // 판정완료, 미판정, 전체
            preDt["heBasisPkgCd"] = "gb";     // 일반,생활습관

            AmcData amcDataParam = new AmcData
            {
                preDatas = new PreDatas
                {
                    { "IPD",  preDt }
                }
            };

            AmcData resultList = await CommService.CallServiceAsync("SHMGC3101R", amcDataParam, this, LoadingType.BlockLoad);

            // 4.응답전문 =>  DT 변환
            if (resultList.IsSuccess)
            {
                DataTable returnDT = resultList.recordSets["ORS"].ToDataTable();
                this.grdPatList.DataSource = returnDT;
            }
        }


        /// <summary>
        /// 의사정보셋팅
        /// </summary>
        private void SetDoctorInfo()
        {
            this.txtLnoG.EditValue = doclicnsNo;           // 의사자격번호
            this.txtLnoT.EditValue = doclicnsNo;
            this.txtDoctorNmG.EditValue = doctorNm;        // 의사명
            this.txtDoctorNmT.EditValue = doctorNm;
        }

        private void ActionBtnSetting()
        {
            ActionButtonItems = new List<ActionButtonItem>();

            ActionButtonItems.Add(new ActionButtonItem
            {
                Text = "저장",
                Idx = 0,
                IsImportant = true,
                Permissions = "W",
                ClickAction = OnSaveAction,
                Name = "actSave"
            });

            btnAction.Items = ActionButtonItems;
            DocumentService.ChangeActionButtons(this);
            btnAction.FallDownMenuWidth = 80;
        }

        #region ====== 단축키 설정 ======
        /// <summary>
        /// 저장 Ctrl+S
        /// </summary>
        protected override void SaveMethod()
        {
            OnSaveAction();
            base.SaveMethod();
        }

        #endregion

        private void SetEvent()
        {
            //그리드 행 선택시
            grvPatList.RowCellClick += (sender, e) =>
            {
                Screen_Clear();

                GridView gv = sender as GridView;
                if (!gv.IsValidRowHandle(e.RowHandle)) return;

                sPatno = grvPatList.GetFocusedRowCellValue("patno").ToStringDefault();
                string sPatNm = grvPatList.GetFocusedRowCellValue("patNm").ToStringDefault();
                sheDt = grvPatList.GetFocusedRowCellValue("heDt").ToString().Replace("-", "");
                string ssexAge = grvPatList.GetFocusedRowCellValue("sexage").ToStringDefault();
                vistSn = grvPatList.GetFocusedRowCellValue("vistSn").ToStringDefault("0").ToLong();
                rsltPrntDt = grvPatList.GetFocusedRowCellValue("rsltPrntDt").ToStringDefault();        // 결과물출력일자
                gubun = grvPatList.GetFocusedRowCellValue("gubun").ToStringDefault();                  // 탭

                string[] sSexAge = ssexAge.Split('/');

                patVO = new HMPatVO();
                patVO.patNo = sPatno;
                patVO.heDt = sheDt;
                patVO.dept = "GHS";
                patVO.vistSn = vistSn;
                patVO.sex = sSexAge[0];
                patVO.age = ssexAge[1].To<long>(0);

                lblSelHedt.Text = sheDt;
                lblSelName.Text = sPatNm;
                lblSelPatno.Text = sPatno;
                lblSelSexAge.Text = ssexAge;

                searchParam = new PreData()
                {
                    ["patno"] = sPatno,
                    ["heDt"] = sheDt,
                    ["vistSn", ADataType.L] = vistSn,
                    ["formCd"] = strFormCd,
                    ["formVerCd"] = strFormVerCd,
                    ["heFormDivCd"] = strJudgDivCd
                };

                if ("G".Equals(this.tabGubun.SelectedTabPage.Name.ToStringDefault()))
                {
                    strJudgDivCd = "G";      // 일반
                    strFormCd = "PG20220101";
                    strFormVerCd = "PG2022010101";
                    pn = this.Gpanel;
                }
                else if ("T".Equals(this.tabGubun.SelectedTabPage.Name.ToStringDefault()))
                {
                    strJudgDivCd = "T";                                // 생활습관처방  
                    strFormCd = "PT20220101";
                    strFormVerCd = "PT2022010101";
                    pn = this.Tpanel;
                }
                if ("G".Equals(gubun))
                {
                    this.tabGubun.TabPages[1].PageEnabled = false;     // 생활습관처방
                }
                else
                {
                    this.tabGubun.TabPages[0].PageEnabled = true;
                    this.tabGubun.TabPages[1].PageEnabled = true;
                    //생활습관처방 상세탭
                }
                retrieveOrdrLIstItemInfo(searchParam);     // 검사내역 및 서식값조회
                SetDoctorInfo();
            };

            txtPatno.KeyPress += (sender, e) =>
            {
                Screen_Clear();

                btnSearch.PerformClick();
            };

            grvExamItem.CustomRowCellEdit += (sender, e) =>
            {
                RepositoryItemImageComboBox rCombo = new RepositoryItemImageComboBox();
                RepositoryItemTextEdit rText = new RepositoryItemTextEdit();

                if (e.Column.FieldName == "rsltVal")
                {
                    string rsltValCd = grvExamItem.GetRowCellValue(e.RowHandle, "rsltValCd").ToStringDefault();
                    DataRow[] dtDtl = dtExamRsltCd.AsEnumerable().Where(r => r["rsltValCd"].ToStringDefault() == rsltValCd).ToArray();
                    if (dtDtl != null && dtDtl.Length > 0)   //rsltVal 명  rsltValDtlCd 코드
                    {
                        rCombo.SetDataSource(dtDtl.CopyToDataTable(), "rsltVal", "rsltValDtlCd", AComboFirstValueType.None);
                        e.RepositoryItem = rCombo;
                    }
                    else
                    {
                        e.RepositoryItem = rText;
                    }
                }
                else
                {
                    e.RepositoryItem = rText;
                }
            };
            grvExamItem.RowStyle += GrvExamItem_RowStyle;
            // 판정문 청구용 글자수제한 이벤트
            aMemoEdit1.EditValueChanged += (s, e) => { memoEdit_EditValueChanged(aMemoEdit1, aLabelControl72); };
            aMemoEdit2.EditValueChanged += (s, e) => { memoEdit_EditValueChanged(aMemoEdit2, aLabelControl75); };
            aMemoEdit3.EditValueChanged += (s, e) => { memoEdit_EditValueChanged(aMemoEdit3, aLabelControl77); };
            aMemoEdit4.EditValueChanged += (s, e) => { memoEdit_EditValueChanged(aMemoEdit4, aLabelControl79); };

            //바이트수 표기
            aMemoEdit1.Click += (s, e) => { aMemoEdit_Click(aMemoEdit1, aLabelControl72); };
            aMemoEdit2.Click += (s, e) => { aMemoEdit_Click(aMemoEdit2, aLabelControl75); };
            aMemoEdit3.Click += (s, e) => { aMemoEdit_Click(aMemoEdit3, aLabelControl77); };
            aMemoEdit4.Click += (s, e) => { aMemoEdit_Click(aMemoEdit4, aLabelControl79); };

            //2023.01.27 오은진 주석처리
            //// 의심질환 (청구용)
            //aMemoEdit1.EditValueChanged += (sender, e) =>
            //{               
            //    int messageSize = Encoding.UTF8.GetBytes(aMemoEdit1.Text).Length;
            //    aLabelControl72.Text = messageSize.ToString();

            //    if (messageSize > 500)
            //    {
            //        AMessageBox.ShowInstant("입력데이터는 500바이트를 초과할 수 없습니다.");
            //        Byte[] bt = Encoding.UTF8.GetBytes(aMemoEdit1.Text);
            //        aMemoEdit1.Text = Encoding.UTF8.GetString(bt, 0, 498);
            //        aLabelControl72.Focus();
            //        SuspecDisease.Focus();
            //        aLabelControl72.Text = messageSize.ToString();
            //    }
            //};

            //aMemoEdit1.Click += (sender, e) =>
            //{
            //    int messageSize = Encoding.UTF8.GetBytes(aMemoEdit1.Text).Length;
            //    aLabelControl72.Text = messageSize.ToString();
            //};

            //// 의심질환소견 판정문 탭 누를시 바이트수 초기화.
            //aTabControl2.SelectedPageChanged += (sender, e) =>
            //{
            //    if (aTabControl2.SelectedTabPageIndex == 0)
            //    {
            //        aLabelControl72.Text = "-";
            //    }
            //};           

            //// 유질환(청구용)
            //aMemoEdit2.EditValueChanged += (sender, e) =>
            //{
            //    int messageSize = Encoding.UTF8.GetBytes(aMemoEdit2.Text).Length;
            //    aLabelControl75.Text = messageSize.ToString();

            //    if (messageSize > 500)
            //    {
            //        AMessageBox.ShowInstant("입력데이터는 500바이트를 초과할 수 없습니다.");
            //        Byte[] bt = Encoding.UTF8.GetBytes(aMemoEdit2.Text);
            //        aMemoEdit2.Text = Encoding.UTF8.GetString(bt, 0, 498);
            //        aLabelControl75.Focus();
            //        aMemoEdit2.Focus();
            //        aLabelControl75.Text = messageSize.ToString();
            //    }
            //};

            //aMemoEdit2.Click += (sender, e) =>
            //{
            //    int messageSize = Encoding.UTF8.GetBytes(aMemoEdit2.Text).Length;
            //    aLabelControl75.Text = messageSize.ToString();
            //};

            //aTabControl3.SelectedPageChanged += (sender, e) =>
            //{
            //    if (aTabControl3.SelectedTabPageIndex == 0)
            //    {
            //        aLabelControl75.Text = "-";
            //    }
            //};

            //// 생활습관 (청구용) 
            //aMemoEdit3.EditValueChanged += (sender, e) =>
            //{
            //    int messageSize = Encoding.UTF8.GetBytes(aMemoEdit3.Text).Length;
            //    aLabelControl77.Text = messageSize.ToString();

            //    if (messageSize > 500)
            //    {
            //        AMessageBox.ShowInstant("입력데이터는 500바이트를 초과할 수 없습니다.");
            //        Byte[] bt = Encoding.UTF8.GetBytes(aMemoEdit3.Text);
            //        aMemoEdit3.Text = Encoding.UTF8.GetString(bt, 0, 498);
            //        aLabelControl77.Focus();
            //        aMemoEdit3.Focus();
            //        aLabelControl77.Text = messageSize.ToString();
            //    }
            //};

            //aMemoEdit3.Click += (sender, e) =>
            //{
            //    int messageSize = Encoding.UTF8.GetBytes(aMemoEdit3.Text).Length;
            //    aLabelControl77.Text = messageSize.ToString();
            //};

            //aTabControl4.SelectedPageChanged += (sender, e) =>
            //{
            //    if (aTabControl4.SelectedTabPageIndex == 0)
            //    {
            //        aLabelControl77.Text = "-";
            //    }
            //};

            //// 기타질환(청구용)
            //aMemoEdit4.EditValueChanged += (sender, e) =>
            //{
            //    int messageSize = Encoding.UTF8.GetBytes(aMemoEdit4.Text).Length;
            //    aLabelControl79.Text = messageSize.ToString();

            //    if (messageSize > 500)
            //    {
            //        AMessageBox.ShowInstant("입력데이터는 500바이트를 초과할 수 없습니다.");
            //        Byte[] bt = Encoding.UTF8.GetBytes(aMemoEdit4.Text);
            //        aMemoEdit4.Text = Encoding.UTF8.GetString(bt, 0, 498);
            //        aLabelControl79.Focus();
            //        aMemoEdit4.Focus();
            //        aLabelControl79.Text = messageSize.ToString();
            //    }
            //};

            //aMemoEdit4.Click += (sender, e) =>
            //{
            //    int messageSize = Encoding.UTF8.GetBytes(aMemoEdit4.Text).Length;
            //    aLabelControl79.Text = messageSize.ToString();
            //};

            //aTabControl5.SelectedPageChanged += (sender, e) =>
            //{
            //    if (aTabControl5.SelectedTabPageIndex == 0)
            //    {
            //        aLabelControl79.Text = "-";
            //    }
            //};
        }

        private void GrvExamItem_RowStyle(object sender, RowStyleEventArgs e)
        {
            GridView view = sender as GridView;
            if (e.RowHandle >= 0)
            {
                string data = view.GetRowCellValue(e.RowHandle, "rsltJudgCd").ToStringDefault();
                if ("R".Equals(data.ToStringDefault()))
                {
                    e.Appearance.BackColor = System.Drawing.Color.MistyRose;
                    e.HighPriority = true;
                }
            }
        }
        /// <summary>
        /// 결과코드리스트 조회
        /// </summary>
        private void RetrieveExamRsltCdList()
        {
            AmcData amcDataParam = new AmcData
            {
            };

            var responseData = CommService.CallService("SHMGX4010R", amcDataParam);
            if (string.Equals(responseData.header.resultCode, "S"))
            {
                dtExamRsltCd = responseData.recordSets["ORS"].ToDataTable(true);
            }

        }
        private void Screen_Clear()
        {
            this.pn.SetControlClear();

            lblSelHedt.Text = "";
            lblSelName.Text = "";
            lblSelPatno.Text = "";
            lblSelSexAge.Text = "";

            patVO = null;
            dtMun = null;
            dtRes = null;
        }

        /// <summary>
        /// 검사내역 및 서식데이터
        /// </summary>
        private async void retrieveOrdrLIstItemInfo(PreData searchParam)
        {

            AmcData amcDataParam = new AmcData
            {
                preDatas = new PreDatas
                {
                    { "IPD",  searchParam }
                }
            };

            AmcData resultList = await CommService.CallServiceAsync("SHMGC3102R", amcDataParam, this, LoadingType.BlockLoad);

            // 4.응답전문 =>  DT 변환
            if (resultList.IsSuccess)
            {
                DataTable returnDT = resultList.recordSets["ORS"].ToDataTable();
                DataTable returnItem = resultList.recordSets["ORS_ITEM"].ToDataTable();
                dtTab = resultList.recordSets["ORS_PK"].ToDataTable();

                this.grdExamItem.DataSource = returnDT;

                if (dtTab.Rows.Count > 0)
                {
                    foreach (DataRow dr in dtTab.Rows)
                    {
                        if ("gbT01".Equals(dr["heBasisPkgCd"].ToString()))
                        {
                            gbT01.PageEnabled = true;
                        }
                        else if ("gbT02".Equals(dr["heBasisPkgCd"].ToString()))
                        {
                            gbT02.PageEnabled = true;
                        }
                        else if ("gbT03".Equals(dr["heBasisPkgCd"].ToString()))
                        {
                            gbT031.PageEnabled = true;
                            gbT032.PageEnabled = true;
                            gbT033.PageEnabled = true;
                        }
                    }
                }
                if (returnItem.Rows.Count > 0)
                {
                    pn.SetData(returnItem, "itemCd", "answer");
                }
                else
                {
                    //검사수행정보
                    dtRes = RetrieveExamList(patVO);

                    //문진정보
                    dtMun = RetrieveMunjinInfo(patVO);

                    //신규판정대상의 경우 자동판정 진행
                    AutoJudgment autoJM = new AutoJudgment();

                    //검사결과참고치
                    List<HeExRefVal> heExRefVal = new List<HeExRefVal>();

                    AmcData adParam = new AmcData
                    {
                        header = new HeaderData { debug = 0 },
                        preDatas = new PreDatas
                        {
                            { "IPD", searchParam },
                        }
                    };

                    var responseData = await CommService.CallServiceAsync("SHMGZ7110R", adParam, this, LoadingType.BlockSearch);
                    DataTable dtExRefVal = responseData.recordSets["ORS"].ToDataTable(false);
                    dtExRefVal.AcceptChanges(); // 조회후 데이터 상태 초기화

                    for (int i = 0; i < dtExRefVal.Rows.Count; i++)
                    {
                        HeExRefVal dto = new HeExRefVal
                        {
                            rsltJudgCd = dtExRefVal.Rows[i]["rsltJudgCd"].ToStringDefault(),
                            ordrCd = dtExRefVal.Rows[i]["ordrCd"].ToStringDefault(),
                            dtlCd = dtExRefVal.Rows[i]["dtlCd"].ToStringDefault(),
                            rsltTypVal = dtExRefVal.Rows[i]["rsltTypVal"].ToStringDefault(),
                            useSexCd = dtExRefVal.Rows[i]["useSexCd"].ToStringDefault(),
                            applyStDt = dtExRefVal.Rows[i]["applyStDt"].ToStringDefault(),
                            applyEndDt = dtExRefVal.Rows[i]["applyEndDt"].ToStringDefault(),
                            crteLowAge = dtExRefVal.Rows[i]["crteLowAge"].ToLong(),
                            crteUplmtAge = dtExRefVal.Rows[i]["crteUplmtAge"].ToLong(),
                            rmrk = dtExRefVal.Rows[i]["rmrk"].ToStringDefault()
                        };

                        heExRefVal.Add(dto);
                    }

                    //검진자동판정
                    AutoCalculator.AutoJudgment(patVO, dtRes, dtMun, ref autoJM, heExRefVal);

                    //Display
                    DisplayAutoJudgement(autoJM);

                }

                SetDoctorInfo();
            }
        }

        private DataTable RetrieveMunjinInfo(HMPatVO patVO)
        {
            DataTable dt = new DataTable();

            PreData searchParam = new PreData
            {
                ["patno"] = patVO.patNo,
                ["heDt"] = patVO.heDt.Replace("-", ""),
                ["vistSn"] = patVO.vistSn.ToStringDefault(),
                ["examActDeptCd"] = "",

            };

            AmcData amcDataParam = new AmcData
            {
                header = new HeaderData { debug = 0 },
                preDatas = new PreDatas { { "IPD", searchParam }, }
            };

            var responseData = CommService.CallService("SHMGX4007R", amcDataParam);

            if (string.Equals(responseData.header.resultCode, "S"))
            {
                dt = responseData.recordSets["ORS"].ToDataTable(true);
                dt.AcceptChanges(); // 조회후 데이터 상태 초기화
            }

            return dt;
        }

        private DataTable RetrieveExamList(HMPatVO patVO)
        {
            DataTable dt = new DataTable();

            PreData searchParam = new PreData
            {
                ["patno"] = patVO.patNo,
                ["heDt"] = patVO.heDt.Replace("-", ""),
                ["vistSn"] = patVO.vistSn.ToStringDefault(),
                ["examActDeptCd"] = "",

            };

            AmcData amcDataParam = new AmcData
            {
                header = new HeaderData { debug = 0 },
                preDatas = new PreDatas { { "IPD", searchParam }, }
            };

            var responseData = CommService.CallService("SHMGX4007R", amcDataParam);

            if (string.Equals(responseData.header.resultCode, "S"))
            {
                dt = responseData.recordSets["ORS"].ToDataTable(true);
                dt.AcceptChanges(); // 조회후 데이터 상태 초기화
            }

            return dt;
        }

        private void DisplayAutoJudgement(AutoJudgment autoJM)
        {
            PanA.EditValue = "1";

            for (int i = 0; i < autoJM.PanB.Length; i++)
            {
                if ("1".Equals(autoJM.PanB[i]))
                {
                    PanA.EditValue = "0";
                    break;
                }
            }

            if ("1".Equals(PanA.EditValue))
            {
                for (int i = 0; i < autoJM.PanR1.Length; i++)
                {
                    if ("1".Equals(autoJM.PanR1[i]))
                    {
                        PanA.EditValue = "0";
                        break;
                    }
                }
            }

            //정상 B
            PanB0.EditValue = autoJM.PanB[0]; PanB1.EditValue = autoJM.PanB[1]; PanB2.EditValue = autoJM.PanB[2];
            PanB3.EditValue = autoJM.PanB[3]; PanB4.EditValue = autoJM.PanB[4]; PanB5.EditValue = autoJM.PanB[5];
            PanB6.EditValue = autoJM.PanB[6]; PanB7.EditValue = autoJM.PanB[7]; PanB8.EditValue = autoJM.PanB[8];
            PanB9.EditValue = autoJM.PanB[9];

            //의심 R
            PanR0.EditValue = autoJM.PanR1[0]; PanR1.EditValue = autoJM.PanR1[1]; PanR2.EditValue = autoJM.PanR1[2];
            PanR3.EditValue = autoJM.PanR1[3]; PanR4.EditValue = autoJM.PanR1[4]; PanR5.EditValue = autoJM.PanR1[5];
            PanR6.EditValue = autoJM.PanR1[6]; PanR7.EditValue = autoJM.PanR1[7]; PanR8.EditValue = autoJM.PanR1[8];
            PanR9.EditValue = autoJM.PanR1[9]; PanR10.EditValue = autoJM.PanR1[10]; PanR11.EditValue = autoJM.PanR1[11];

            //유질환 D
            PanD0.EditValue = autoJM.PanD[0]; PanD1.EditValue = autoJM.PanD[1]; PanD2.EditValue = autoJM.PanD[2]; PanD3.EditValue = autoJM.PanD[3];

            //의심질환소견
            SuspecDisease.EditValue = autoJM.SuspecDisease;

            //유질환소견
            Disease.EditValue = autoJM.Disease;

            //생활습관소견
            LifeDisease.EditValue = autoJM.LifeDisease;

            //기타소견
            EtcDisease.EditValue = autoJM.EtcDisease;
        }

        /// <summary>
        /// 서식데이터조회
        /// </summary>
        /// <param name="searchParam"></param>
        private async void retrievetItemInfo(PreData searchParam)
        {
            AmcData amcDataParam = new AmcData
            {
                preDatas = new PreDatas
                {
                    { "IPD",  searchParam }
                }
            };

            AmcData resultList = await CommService.CallServiceAsync("SHMGC3103R", amcDataParam, this, LoadingType.BlockLoad);

            // 4.응답전문 =>  DT 변환
            if (resultList.IsSuccess)
            {
                DataTable returnItem = resultList.recordSets["ORS_ITEM"].ToDataTable();
                if (returnItem.Rows.Count > 0)
                {
                    pn.SetData(returnItem, "itemCd", "answer");
                }
                SetDoctorInfo();
            }
        }

        /// <summary>
        /// 저장
        /// </summary>
        private void OnSaveAction()
        {
            SvCallSaveInfo();
            //  SavePanJ();
        }

        /// <summary>
        /// 판정저장
        /// </summary>
        private async void SavePanJ()
        {
            PreData sParam = new PreData();
            sParam["patno"] = sPatno;
            sParam["vistSn", ADataType.L] = vistSn;
            sParam["heDt"] = sheDt;
            sParam["heFormDivCd"] = strJudgDivCd;
            sParam["judgDt"] = this.judgDt;
            sParam["judgDrLcnsNo"] = this.doclicnsNo;

            AmcData amcDataSearchParam = new AmcData
            {
                preDatas = new PreDatas { { "IPD", sParam } }
            };
            AmcData amcMainData = await CommService.CallServiceAsync("SHMGC3200U", amcDataSearchParam, this, LoadingType.BlockLoad);
        }

        /// <summary>
        /// 판정데이터저장
        /// </summary>         
        private async void SvCallSaveInfo()
        {
            if (!("").Equals(rsltPrntDt))
            {
                AMessageBox.Show("", "결과지를 출력한 서식은 수정할수 없습니다. ");
                return;
            }
            if (ValidationCheck())
            {
                // 저장로직 처리
                svDt = new DataTable();
                AmcData amcDataParam = new AmcData();
                amcDataParam.recordSets = new RecordSets();
                amcDataParam.preDatas = new PreDatas();

                PreData sParam = new PreData();
                sParam["patno"] = sPatno;
                sParam["vistSn", ADataType.L] = vistSn;
                sParam["heDt"] = sheDt;
                sParam["heFormDivCd"] = strJudgDivCd;
                sParam["judgDt"] = judgDt;
                sParam["judgDrLcnsNo"] = this.doclicnsNo;

                svDt.SetSvDataTable("판정", strJudgDivCd, strFormCd, strFormVerCd, sPatno, sheDt, vistSn, false);
                pn.GetData(ref svDt, "itemItemCd", "itemResultVal");

                amcDataParam.recordSets.Add("IRS", svDt.ToRecordSet(true));     // 데이터저장
                amcDataParam.preDatas.Add("IPD", sParam);                       //  상태값변경

                var responseData = await CommService.CallServiceAsync("SHMGC3001T", amcDataParam);

                AMessageBox.ShowInstant(this, responseData.header.message);

                //성공인 경우, 재 조회~
                if (string.Equals(responseData.header.resultCode, "S"))
                {
                    AMessageBox.Show("저장완료", "정상적으로 수정되었습니다.", AMessageType.OK);
                    if ("B".Equals(gubun))
                    {
                        if ("G".Equals(this.tabGubun.SelectedTabPage.Name.ToStringDefault()))
                        {
                            AMessageBox.Show("", "생활습관 처방이 있습니다. \n");
                            this.tabGubun.SelectedTabPage = this.T;
                            return;
                        }
                    }
                    retrievePatInfo();    // 수신자목록재조회
                }
                else
                {
                    AMessageBox.Show("저장에러", responseData.header.message, AMessageType.Error);
                }
            }

        }

        /// <summary>
        /// 판정(청구용)바이트제한 체크
        /// </summary>
        /// <returns></returns>
        private bool ValidationCheck()
        {
            bool rslt = true;
            if(Encoding.UTF8.GetByteCount(aMemoEdit1.EditValue.ToStringDefault()) > 500)
            {
                AMessageBox.ShowDialog("", "[의심질환 소견] 입력데이터가 500바이트를 초과하였습니다.");
                aTabControl2.SelectedTabPageIndex = 1;
                aMemoEdit1.Focus();
                aMemoEdit1.Select(aMemoEdit1.EditValue.ToStringDefault().Length, 1);
                return rslt = false;
            }

            if (Encoding.UTF8.GetByteCount(aMemoEdit2.EditValue.ToStringDefault()) > 500)
            {
                AMessageBox.ShowDialog("", "[유질환 소견] 입력데이터가 500바이트를 초과하였습니다.");
                aTabControl3.SelectedTabPageIndex = 1;
                aMemoEdit2.Focus();
                aMemoEdit2.Select(aMemoEdit2.EditValue.ToStringDefault().Length, 1);
                return rslt = false;
            }

            if (Encoding.UTF8.GetByteCount(aMemoEdit3.EditValue.ToStringDefault()) > 500)
            {
                AMessageBox.ShowDialog("", "[생활습관 소견] 입력데이터가 500바이트를 초과하였습니다.");
                aTabControl4.SelectedTabPageIndex = 1;
                aMemoEdit3.Focus();
                aMemoEdit3.Select(aMemoEdit3.EditValue.ToStringDefault().Length, 1);
                return rslt = false;
            }
            if (Encoding.UTF8.GetByteCount(aMemoEdit4.EditValue.ToStringDefault()) > 500)
            {
                AMessageBox.ShowDialog("", "[기타 소견] 입력데이터가 500바이트를 초과하였습니다.");
                aTabControl5.SelectedTabPageIndex = 1;
                aMemoEdit4.Focus();
                aMemoEdit4.Select(aMemoEdit4.EditValue.ToStringDefault().Length, 1);
                return rslt = false;
            }
            return rslt;

        }
        private void tabGubun_SelectedPageChanged(object sender, DevExpress.XtraTab.TabPageChangedEventArgs e)
        {
            if (searchParam == null) return;
            if ("G".Equals(this.tabGubun.SelectedTabPage.Name.ToStringDefault()))
            {
                strJudgDivCd = "G";      // 일반
                strFormCd = "PG20220101";
                strFormVerCd = "PG2022010101";
                judgDt = this.txtJudgDtG.EditValue.ToDate().ToString("yyyyMMdd");
                pn = this.Gpanel;
            }
            else if ("T".Equals(this.tabGubun.SelectedTabPage.Name.ToStringDefault()))
            {
                strJudgDivCd = "T";      // 생활습관처방
                strFormCd = "PT20220101";
                strFormVerCd = "PT2022010101";
                judgDt = this.txtJudgDtT.EditValue.ToDate().ToString("yyyyMMdd");
                pn = this.Tpanel;
            }
            searchParam = new PreData()
            {
                ["patno"] = sPatno,
                ["heDt"] = sheDt,
                ["vistSn", ADataType.L] = vistSn,
                ["formCd"] = strFormCd,
                ["formVerCd"] = strFormVerCd,
                ["heFormDivCd"] = strJudgDivCd
            };
            retrievetItemInfo(searchParam);       // 서식재조회
        }

        private void aTabControl1_Click(object sender, EventArgs e)
        {
            // 판정, 미판정 탭구분해서 재조회, 쿼리차후 수정
            retrievePatInfo();
            this.grdExamItem.DataSource = null;
            this.grdPatList.DataSource = null;
            this.pnlMain.SetControlClear();
        }

        private void txtJudgDtT_EditValueChanged(object sender, EventArgs e)
        {
            judgDt = this.txtJudgDtT.EditValue.ToDate().ToString("yyyyMMdd");
        }

        private void txtJudgDtG_EditValueChanged(object sender, EventArgs e)
        {
            judgDt = this.txtJudgDtG.EditValue.ToDate().ToString("yyyyMMdd");
        }

        /// <summary>
        /// 2023.01.27 오은진
        /// 판정문(청구용)글자수 제한이벤트
        /// </summary>
        /// <param name="aMemo"></param>
        /// <param name="alCtrl"></param>
        private void memoEdit_EditValueChanged(AMemoEdit aMemo, ALabelControl albCtrl)
        {
            int messageSize = Encoding.UTF8.GetByteCount(aMemo.EditValue.ToStringDefault());
            albCtrl.Text = messageSize.ToStringDefault("0");      // 바이트수

            if (messageSize > 500)
            {
                AMessageBox.ShowInstant("입력글자는 500바이트를 초과할수 없습니다.");
                albCtrl.Text = messageSize.ToStringDefault("0");
            }
        }

        /// <summary>
        /// 바이트표기
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void aMemoEdit_Click(AMemoEdit aMemo, ALabelControl albCtrl)
        {
            aLabelControl72.Text = Encoding.UTF8.GetByteCount(aMemoEdit1.EditValue.ToStringDefault()).ToStringDefault("0");
        }

    }
}

profile
이리저리 생각만 많은 사고뭉치입니다.

0개의 댓글