using Newtonsoft.Json.Linq;
using PTMedicalInsurance.Common;
using PTMedicalInsurance.Entity;
using PTMedicalInsurance.Entity.Local;
using PTMedicalInsurance.Forms;
using PTMedicalInsurance.Helper;
using PTMedicalInsurance.Variables;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace PTMedicalInsurance.Business
{
    class PatientService
    {
        protected HisMainBusiness hBus = new HisMainBusiness();
        protected InvokeHelper invoker = new InvokeHelper();


        /// <summary>
        /// 读卡
        /// </summary>
        /// <returns></returns>
        public int readCard(out string outParam)
        {
            CallResult ret = new ReadCardProcess().Process(null);
            outParam = ret.Data;
            return ret.Code;
        }



        /// <summary>
        /// 读卡并展示病人信息
        /// </summary>
        /// <param name="outParam"></param>
        /// <returns></returns>
        public string readPatientInfo(out string outParam)
        {
            string patInfo = "";
            //打开读卡窗口,操作员选择读卡类型后进行读卡器读卡,再进行1101获取参保信息
            if (readCard(out outParam) != 0)
            {
                outParam = JsonHelper.setExceptionJson(-100, "读卡失败!", outParam).ToString();
                return outParam;
            }
            else
            {
                patInfo = outParam;
                //展示患者信息界面(合并到后面登记界面)
                if (hBus.showPatInfo(patInfo, out outParam) != 0)
                {
                    return JsonHelper.setExceptionJson(-100, "操作员取消!", outParam).ToString();
                }
                // 转换后的信息
                patInfo = outParam;

                hBus.convertPatientInfo(patInfo, out outParam);

            }
            #region 展示患者信息

            //患者信息赋值给全局变量
            string errMsg = "";
            if (hBus.setGlobalPatAfaterShowPatInfo(outParam, out errMsg) != 0)
            {
                return JsonHelper.setExceptionJson(-1, "setGlobalPatAfaterShowPatInfo", errMsg).ToString();
            }


            //校验HIS姓名与医保姓名是否一致
            if (hBus.checkName(Global.pat.name, out errMsg) != 0)
            {
                return JsonHelper.setExceptionJson(-1, "校验HIS与医保姓名是否一致", errMsg).ToString();
            }

            #endregion

            return "0";
        }



    }
}