package sg import ( "archive/zip" "bytes" "encoding/json" "fmt" "gdyb/controllers" "gdyb/enums" "gdyb/models" "gdyb/service" "gdyb/utils" "github.com/astaxie/beego" "github.com/axgle/mahonia" "github.com/jinzhu/gorm" "github.com/shopspring/decimal" "io" "io/ioutil" "math/rand" "net/http" "os" "path/filepath" "regexp" "strconv" "strings" "syscall" "time" "unsafe" ) type HisApiController struct { controllers.BaseAuthAPIController } func HisManagerApiRegistRouters() { //挂号 beego.Router("/api/register/get", &HisApiController{}, "get:GetRegisterInfo") //上传就诊信息-上传明细-结算 beego.Router("/api/upload/get", &HisApiController{}, "get:GetUploadInfo") //查询 beego.Router("/api/settle/query", &HisApiController{}, "get:GetSettleAccounts") //对总账 beego.Router("/api/checkaccount/get", &HisApiController{}, "get:GetCheckAccount") //对明细 beego.Router("/api/checkdetailaccount/get", &HisApiController{}, "get:GetCheckDetailAccount") //退费,退明细 beego.Router("/api/refund/post", &HisApiController{}, "get:Refund") //退号 beego.Router("/api/refundnumber/post", &HisApiController{}, "get:RefundNumber") //退明细 beego.Router("/api/refunddetail/post", &HisApiController{}, "get:RefundDetail") //上传就诊信息-上传明细-预结算 beego.Router("/api/presettle/get", &HisApiController{}, "get:GetPreUploadInfo") beego.Router("/api/treatment/check", &HisApiController{}, "get:CheckTreatment") beego.Router("/api/org/info", &HisApiController{}, "get:GetOrgInfo") beego.Router("/api/readcard", &HisApiController{}, "get:ReadCard") beego.Router("/api/310", &HisApiController{}, "get:Check310") beego.Router("/api/390", &HisApiController{}, "get:Check390") beego.Router("/api/patient/info", &HisApiController{}, "get:GetPatientInfo") beego.Router("/api/checkcode/get", &HisApiController{}, "get:GetCheckCode") beego.Router("/api/uncheckcode/get", &HisApiController{}, "get:UnCheckCode") beego.Router("/api/psn/putonrecord", &HisApiController{}, "get:PsnPutOnRecord") beego.Router("/api/psn/unputonrecord", &HisApiController{}, "get:PsnUnPutOnRecord") beego.Router("/api/psn/ncds/putonrecord", &HisApiController{}, "get:PsnPutNCDSOnRecord") beego.Router("/api/psn/ncds/unputonrecord", &HisApiController{}, "get:PsnPutUnNCDSOnRecord") beego.Router("/api/reversal", &HisApiController{}, "get:ReversalData") beego.Router("/api/reversal/other", &HisApiController{}, "get:ReversalOtherData") beego.Router("/api/settlelist/get", &HisApiController{}, "get:GetSettleList") beego.Router("/api/settlelisthosptial/get", &HisApiController{}, "get:GetSettleListHospital") beego.Router("/api/pwd/check", &HisApiController{}, "get:CheckCardPWD") beego.Router("/api/insutype/check", &HisApiController{}, "get:CheckInsutype") beego.Router("/api/batchsettlelist/get", &HisApiController{}, "get:GetBatchSettleList") beego.Router("/api/psn/info", &HisApiController{}, "get:GetPsnNcdsInfo") beego.Router("/api/allopatry/refund", &HisApiController{}, "post:RefundAllopatry") beego.Router("/api/check", &HisApiController{}, "get:Check") //beego.Router("/api/check3101", &HisApiController{}, "get:Check3101") //beego.Router("/api/check3102", &HisApiController{}, "get:Check3102") beego.Router("/90990", &HisApiController{}, "get:CheckCardPWDTwo") beego.Router("/9001", &HisApiController{}, "get:Get9001") //beego.Router("/api/readelecard", &HisApiController{}, "get:ReadEleCard") beego.Router("/api/3202", &HisApiController{}, "get:Post3202") beego.Router("/api/3501", &HisApiController{}, "post:Post3501") beego.Router("/api/readele", &HisApiController{}, "get:ReadEleToken") beego.Router("/api/2505", &HisApiController{}, "get:Get2505") //beego.Router("/api/4201A", &HisApiController{}, "get:Get4201A") //beego.Router("/api/4202", &HisApiController{}, "get:Get4202") //beego.Router("/api/4203", &HisApiController{}, "get:Get4203") //beego.Router("/api/4205", &HisApiController{}, "get:Get4205") //beego.Router("/api/4207", &HisApiController{}, "get:Get4207") //beego.Router("/api/4208", &HisApiController{}, "get:Get4208") //beego.Router("/api/4209", &HisApiController{}, "get:Get4209") // } func (c *HisApiController) Get2505() { miConfig, _ := service.FindMedicalInsuranceInfo(10215) service.Gdyb2505("44120000000010585742", "高慧裕", miConfig.OrgName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, "2022-12-23 09:00:00", "2023-12-31 23:00:00") } //func (c *HisApiController) Get4201A(){ // order_id, _ := c.GetInt64("order_id") // admin_user_id, _ := c.GetInt64("admin_user_id") // order, _ := service.GetHisOrderByIDTwo(order_id) // his, _ := service.GetInHospitalRecordByNumber(order.MdtrtId) // order_info, _ := service.GetHisOrderInfoByNumber(order.MdtrtId) // order_info_two, _ := service.GetHisOrderInfoByNumberTwo(order.MdtrtId) // order_info = append(order_info, order_info_two...) // curRoles, _ := service.GetAdminUserInfoByID(c.GetAdminUserInfo().CurrentOrgId, admin_user_id) // miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId) // // department,_ := service.GetDepartMentDetail(his.Departments) // // // // // if order.ID == 0 { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisOrderNoExistParamWrong) // return // } // var fsiOPFLDs []models.FsiOwnpayPatnFeeListDDTO // for _,items := range order_info{ // var fsiOPFLD models.FsiOwnpayPatnFeeListDDTO // fsiOPFLD.FixmedinsMdtrtID = items.OrderNumber // fsiOPFLD.MedType = "14" // fsiOPFLD.BkkpSn = items.OrderNumber // fsiOPFLD.FeeOcurTime = time.Unix(items.HisDoctorAdviceInfo.CreatedTime,0).Format("2006-01-02 15:04:05") // fsiOPFLD.FixmedinsCode = miConfig.Code // fsiOPFLD.FixmedinsName = miConfig.OrgName // fsiOPFLD.Cnt = fmt.Sprintf("%.2f", items.Cnt) // fsiOPFLD.Pric = fmt.Sprintf("%.2f", items.Pric) // fsiOPFLD.MedChrgitmType = "09" // fsiOPFLD.Prodname = items.HisDoctorAdviceInfo.AdviceName // fsiOPFLD.BilgDeptCodg = department.Number // fsiOPFLD.BilgDeptName = department.Name // // // // // // // } // // // // // // //} //func (c *HisApiController) Get4202(){ // order_id, _ := c.GetInt64("order_id") // admin_user_id, _ := c.GetInt64("admin_user_id") // order, _ := service.GetHisOrderByIDTwo(order_id) // his, _ := service.GetInHospitalRecordByNumber(order.MdtrtId) // curRoles, _ := service.GetAdminUserInfoByID(c.GetAdminUserInfo().CurrentOrgId, admin_user_id) // miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId) // // if order.ID == 0 { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisOrderNoExistParamWrong) // return // } // // var struct4202 models.Struct4202 // struct4202.OwnPayPatnMdtrtD.FixmedinsMdtrtID = his.Number // struct4202.OwnPayPatnMdtrtD.FixmedinsCode = miConfig.Code // struct4202.OwnPayPatnMdtrtD.FixmedinsName = miConfig.OrgName // struct4202.OwnPayPatnMdtrtD.PsnCertType ="01" // struct4202.OwnPayPatnMdtrtD.Certno =his.IdCardNo // struct4202.OwnPayPatnMdtrtD.PsnName = his.Name // struct4202.OwnPayPatnMdtrtD.Begntime = his.InHosptialTime // struct4202.OwnPayPatnMdtrtD.MedType = "14" // struct4202.OwnPayPatnMdtrtD.ValiFlag = "1" // struct4202.OwnPayPatnMdtrtD.MedfeeSumamt = fmt.Sprintf("%.2f",order.MedfeeSumamt) // // // diagnosis_ids := strings.Split(his.Diagnosis, ",") // var config []*models.HisXtDiagnoseConfig // for _, item := range diagnosis_ids { // id, _ := strconv.ParseInt(item, 10, 64) // diagnosisConfig, _ := service.FindDiagnoseById(id) // config = append(config, &diagnosisConfig) // } // var tempDiaginfos []models.OwnPayPatnDiagListD // for index, item := range config { // if index == 0 { // var tempDiaginfo models.OwnPayPatnDiagListD // tempDiaginfo.InoutDiagType = "1" // tempDiaginfo.DiagCode = item.CountryCode // tempDiaginfo.DiagName = item.CountryContentName // tempDiaginfo.DiagType = "1" // tempDiaginfo.DiagSrtNo = "1" // tempDiaginfo.MaindiagFlag = "1" // tempDiaginfo.ValiFlag = "1" // tempDiaginfos = append(tempDiaginfos, tempDiaginfo) // } else { // // var tempDiaginfo models.OwnPayPatnDiagListD // tempDiaginfo.DiagCode = item.CountryCode // tempDiaginfo.DiagName = item.CountryContentName // tempDiaginfo.DiagType = "2" // tempDiaginfo.DiagSrtNo = strconv.FormatInt(int64(index+1),10) // tempDiaginfo.MaindiagFlag = "0" // tempDiaginfo.ValiFlag = "1" // tempDiaginfos = append(tempDiaginfos, tempDiaginfo) // } // } // struct4202.ODiagListD = tempDiaginfos // service.Gdyb4202(miConfig.OrgName,curRoles.UserName,miConfig.Code,miConfig.InsuplcAdmdvs,miConfig.MdtrtareaAdmvs,miConfig.SecretKey,struct4202) // // // // //} //func (c *HisApiController) Get4203(){ // // //} //func (c *HisApiController) Get4205(){ // // //} //func (c *HisApiController) Get4207(){ // // //} //func (c *HisApiController) Get4208(){ // // //} //func (c *HisApiController) Get4209(){ // // //} type Result3101 struct { Infcode string `json:"infcode"` InfRefmsgid string `json:"inf_refmsgid"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Enctype string `json:"enctype"` Signtype string `json:"signtype"` ErrMsg string `json:"err_msg"` Output struct { Result []struct { JudgeResultDetailDtos []struct { VolaItemType string `json:"vola_item_type"` MdtrtID string `json:"mdtrt_id"` JrdID string `json:"jrd_id"` PatnID string `json:"patn_id"` RxID string `json:"rx_id"` VolaAmt interface{} `json:"vola_amt"` } `json:"judge_result_detail_dtos"` RuleID string `json:"rule_id"` VolaEvid string `json:"vola_evid"` MdtrtID string `json:"mdtrt_id"` RuleName string `json:"rule_name"` VolaAmtStas string `json:"vola_amt_stas"` JrID string `json:"jr_id"` PatnID string `json:"patn_id"` SevDeg string `json:"sev_deg"` VolaAmt float64 `json:"vola_amt"` VolaBhvrType string `json:"vola_bhvr_type"` VolaCont string `json:"vola_cont"` } `json:"result"` } `json:"output"` } func (c *HisApiController) ReadEleToken() { admin_user_id, _ := c.GetInt64("admin_user_id") his_patient_id, _ := c.GetInt64("his_patient_id") adminUser := c.GetAdminUserInfo() miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) roles, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) his, _ := service.GetNewHisPatientInfoFour(c.GetAdminUserInfo().CurrentOrgId, his_patient_id) if miConfig.MdtrtareaAdmvs == "320921" || miConfig.MdtrtareaAdmvs == "320982" { tokens := ReadEleCard(admin_user_id, c.GetAdminUserInfo().CurrentOrgId, c) if len(tokens) > 0 { c.ServeSuccessJSON(map[string]interface{}{ "msg": "读取成功", }) } else { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": "读取失败", }) } } else if miConfig.MdtrtareaAdmvs == "440305" || miConfig.MdtrtareaAdmvs == "440305" || miConfig.MdtrtareaAdmvs == "441202" { if initFlag == 0 { c.TestGetBasBaseInit() } token := c.GetEleBaseInfo() token = Remove0000(token) if len(token) > 0 { result2, requestLog2 := service.Gdyb1101ForEleCert(miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, token, "", "") saveLog(result2, requestLog2, "1101", "获取人员信息") var res ResultTwo if err := json.Unmarshal([]byte(result2), &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Infcode == 0 { patient, err := service.GetPatientByNumber(res.Output.Baseinfo.Certno, c.GetAdminUserInfo().CurrentOrgId) if err == gorm.ErrRecordNotFound { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException) return } else if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) return } else { Iinfos, _ := json.Marshal(res.Output.Iinfo) Idetinfos, _ := json.Marshal(res.Output.Idetinfo) infoStr := string(Iinfos) idetinfoStr := string(Idetinfos) psn := &models.HisPsn{ PsnNo: res.Output.Baseinfo.PsnNo, Age: res.Output.Baseinfo.Age, PatientId: patient.ID, Certno: res.Output.Baseinfo.Certno, Brdy: res.Output.Baseinfo.Brdy, Gend: res.Output.Baseinfo.Gend, Naty: res.Output.Baseinfo.Naty, PsnCertType: res.Output.Baseinfo.PsnCertType, PsnName: res.Output.Baseinfo.PsnName, Idetinfo: idetinfoStr, Insuinfo: infoStr, UserOrgId: c.GetAdminUserInfo().CurrentOrgId, CardInfo: "", VerifyNumber: token, } service.CreateHisPsn(psn) c.ServeSuccessJSON(map[string]interface{}{ "msg": "读取成功", }) } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisFailedException) return } } else { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": "读取失败", }) } } else if miConfig.MdtrtareaAdmvs == "350500" { _, outPutInfo, errMsg := service.ReadEleCardForSettle(miConfig.Code, roles.UserName, roles.AdminUserId) if len(errMsg) == 0 { type ELeData struct { Data struct { IdNo string `json:"idNo"` IdType string `json:"idType"` UserName string `json:"userName"` EcToken string `json:"ecToken"` InsuOrg string `json:"insuOrg"` Gender string `json:"gender"` Birthday string `json:"birthday"` Nationality string `json:"nationality"` Email string `json:"email"` Extra string `json:"extra"` } `json:"data"` Code int `json:"code"` Message string `json:"message"` } var ele ELeData err := json.Unmarshal([]byte(outPutInfo), &ele) if err != nil { utils.ErrorLog("解析失败:%v", err) } token := ele.Data.EcToken if len(token) > 0 { psn := &models.HisPsn{ PsnNo: his.PsnNo, Age: 0, PatientId: his.PatientId, Certno: his.Certno, Brdy: his.Brdy, Gend: his.Gend, Naty: his.Naty, PsnCertType: his.PsnCertType, PsnName: his.PsnName, Idetinfo: his.Idetinfo, Insuinfo: his.Iinfo, UserOrgId: c.GetAdminUserInfo().CurrentOrgId, CardInfo: outPutInfo, VerifyNumber: token, } service.CreateHisPsn(psn) } if len(token) > 0 { c.ServeSuccessJSON(map[string]interface{}{ "msg": "读取成功", }) } else { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": "读取失败", }) } } } else if miConfig.MdtrtareaAdmvs == "360399" { if initFlag == 0 { c.TestGetJiangXiBasBaseInit() } json_result := GetJxEleBaseInfo(c.GetAdminUserInfo().CurrentOrgId) type ELeData struct { Data struct { IdNo string `json:"idNo"` IdType string `json:"idType"` UserName string `json:"userName"` EcToken string `json:"ecToken"` InsuOrg string `json:"insuOrg"` Gender string `json:"gender"` Birthday string `json:"birthday"` Nationality string `json:"nationality"` Email string `json:"email"` Extra string `json:"extra"` } `json:"data"` Code int `json:"code"` Message string `json:"message"` } var ele ELeData err := json.Unmarshal([]byte(json_result), &ele) if err != nil { utils.ErrorLog("解析失败:%v", err) } token := ele.Data.EcToken token = Remove0000(token) fmt.Println(ele.Data.UserName) result2, requestLog2 := service.Jxyb1101ForEleCert(miConfig.OrgName, roles.UserName, miConfig.Code, ele.Data.InsuOrg, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, miConfig.Url, miConfig.AccessKey, token, "", ele.Data.IdNo, ele.Data.UserName) saveLog(result2, requestLog2, "1101", "获取人员信息") var res ResultTwo if err := json.Unmarshal([]byte(result2), &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Infcode == 0 { patient, err := service.GetPatientByNumber(res.Output.Baseinfo.Certno, c.GetAdminUserInfo().CurrentOrgId) if err == gorm.ErrRecordNotFound { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException) return } else if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) return } else { Iinfos, _ := json.Marshal(res.Output.Iinfo) Idetinfos, _ := json.Marshal(res.Output.Idetinfo) infoStr := string(Iinfos) idetinfoStr := string(Idetinfos) psn := &models.HisPsn{ PsnNo: res.Output.Baseinfo.PsnNo, Age: res.Output.Baseinfo.Age, PatientId: patient.ID, Certno: res.Output.Baseinfo.Certno, Brdy: res.Output.Baseinfo.Brdy, Gend: res.Output.Baseinfo.Gend, Naty: res.Output.Baseinfo.Naty, PsnCertType: res.Output.Baseinfo.PsnCertType, PsnName: res.Output.Baseinfo.PsnName, Idetinfo: idetinfoStr, Insuinfo: infoStr, UserOrgId: c.GetAdminUserInfo().CurrentOrgId, CardInfo: "", VerifyNumber: token, } service.CreateHisPsn(psn) c.ServeSuccessJSON(map[string]interface{}{ "patient": patient, "number": token, }) } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisFailedException) return } } else if miConfig.MdtrtareaAdmvs == "430800" { if initFlag == 0 { c.TestGetJiangXiBasBaseInit() } json_result := GetJxEleBaseInfo(c.GetAdminUserInfo().CurrentOrgId) type ELeData struct { Data struct { IdNo string `json:"idNo"` IdType string `json:"idType"` UserName string `json:"userName"` EcToken string `json:"ecToken"` InsuOrg string `json:"insuOrg"` Gender string `json:"gender"` Birthday string `json:"birthday"` Nationality string `json:"nationality"` Email string `json:"email"` Extra string `json:"extra"` } `json:"data"` Code int `json:"code"` Message string `json:"message"` } var ele ELeData err := json.Unmarshal([]byte(json_result), &ele) if err != nil { utils.ErrorLog("解析失败:%v", err) } token := ele.Data.EcToken token = Remove0000(token) fmt.Println(ele.Data.UserName) result2, requestLog2 := service.Hnyb1101ForEleCert(miConfig.OrgName, roles.UserName, miConfig.Code, ele.Data.InsuOrg, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, miConfig.Url, miConfig.AccessKey, token, "", ele.Data.IdNo, ele.Data.UserName) saveLog(result2, requestLog2, "1101", "获取人员信息") var res ResultTwo if err := json.Unmarshal([]byte(result2), &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Infcode == 0 { patient, err := service.GetPatientByNumber(res.Output.Baseinfo.Certno, c.GetAdminUserInfo().CurrentOrgId) if err == gorm.ErrRecordNotFound { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException) return } else if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) return } else { Iinfos, _ := json.Marshal(res.Output.Iinfo) Idetinfos, _ := json.Marshal(res.Output.Idetinfo) infoStr := string(Iinfos) idetinfoStr := string(Idetinfos) psn := &models.HisPsn{ PsnNo: res.Output.Baseinfo.PsnNo, Age: res.Output.Baseinfo.Age, PatientId: patient.ID, Certno: res.Output.Baseinfo.Certno, Brdy: res.Output.Baseinfo.Brdy, Gend: res.Output.Baseinfo.Gend, Naty: res.Output.Baseinfo.Naty, PsnCertType: res.Output.Baseinfo.PsnCertType, PsnName: res.Output.Baseinfo.PsnName, Idetinfo: idetinfoStr, Insuinfo: infoStr, UserOrgId: c.GetAdminUserInfo().CurrentOrgId, CardInfo: "", VerifyNumber: token, } service.CreateHisPsn(psn) c.ServeSuccessJSON(map[string]interface{}{ "patient": patient, "number": token, }) } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisFailedException) return } } } func (c *HisApiController) Get9001() { adminUser := c.GetAdminUserInfo() miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) roles, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, 185) if miConfig.MdtrtareaAdmvs == "350500" { service.GetFjAuthorizationInfo(miConfig.Code) } else if miConfig.MdtrtareaAdmvs == "131023" { result, _ := service.HeBeiyb9001(miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, 1669) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) var res models.Result9001 if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else { result, _ := service.Gdyb9001(miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, 1669) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) var res models.Result9001 if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } } func Check3101ForOne(c *HisApiController, patient_id int64, his models.VMHisPatient, admin_user_id int64, trig_scen string, record_time string, prescriptions []*models.HisPrescription) (res2 Result3101) { var res Result3101 adminUser := c.GetAdminUserInfo() roles, _ := service.GetAdminUserInfoByID(c.GetAdminUserInfo().CurrentOrgId, admin_user_id) //his, _ := service.GetNewHisPatientInfoFour(c.GetAdminUserInfo().CurrentOrgId, his_patient_id) miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId) //record_time := c.GetString("record_time") //trig_scen := c.GetString("trig_scen") timeLayout := "2006-01-02" loc, _ := time.LoadLocation("Local") theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", record_time+" 00:00:00", loc) if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return res } recordDateTime := theTime.Unix() var patientPrescription models.HisPrescriptionInfo //patientPrescription, _ = service.FindHisPatientPrescriptionInfo(adminUser.CurrentOrgId, his_patient_id, recordDateTime) //if patientPrescription.ID == 0 { patientPrescription, _ = service.FindLastPatientPrescriptionInfoTwo(adminUser.CurrentOrgId, patient_id, recordDateTime) //} department, _ := service.GetDepartMentDetail(patientPrescription.Departments) doctor_info, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, patientPrescription.DoctorId) // diagnosis_ids := strings.Split(patientPrescription.Diagnosis, ",") //prescriptions, _ := service.GetNewHisPrescriptionTen(adminUser.CurrentOrgId, his_patient_id, recordDateTime) var pp models.PublicParams pp.InsuplcAdmdvs = miConfig.InsuplcAdmdvs pp.MdtrtareaAdmvs = miConfig.MdtrtareaAdmvs pp.FixmedinsName = miConfig.OrgName pp.FixmedinsCode = miConfig.Code pp.RequestUrl = miConfig.Url pp.Cainfo = miConfig.Cainfo pp.SecretKey = miConfig.SecretKey pp.AccessKey = miConfig.AccessKey pp.OpterName = roles.UserName var config []*models.HisXtDiagnoseConfig for _, item := range diagnosis_ids { id, _ := strconv.ParseInt(item, 10, 64) diagnosisConfig, _ := service.FindDiagnoseById(id) config = append(config, &diagnosisConfig) } var pd models.PatientDtos pd.PatnID = his.PsnNo pd.PatnName = his.Name pd.Gend = his.Gend pd.Brdy = his.Brdy pd.Poolarea = miConfig.MdtrtareaAdmvs pd.CurrMdtrtID = his.Number var fed models.FsiEncounterDtos fed.MdtrtID = his.Number fed.MedinsID = miConfig.Code fed.MedinsName = miConfig.OrgName fed.MedinsAdmdvs = miConfig.MdtrtareaAdmvs fed.MedMdtrtType = "1" fed.MedinsType = "1" fed.MedinsLv = "11" tm := time.Unix(his.RecordDate, 0) s_tm := tm.Format("2006-01-02 15:04:05") fed.AdmDate = s_tm fed.DscgDate = s_tm fed.DscgMainDiseCodg = config[0].CountryCode fed.DscgMainDiseName = config[0].CountryContentName //诊断信息 var fdds []*models.FsiDiagnoseDtos for index, item := range config { if index == 0 { var fdd models.FsiDiagnoseDtos fdd.DiseID = strconv.FormatInt(item.ID, 10) fdd.InoutDiseType = "1" fdd.MaindiseFlag = "1" fdd.DiseDate = s_tm fdd.DiasSrtNo = "1" fdd.DiseName = item.CountryContentName fdd.DiseCodg = item.CountryCode fdds = append(fdds, &fdd) } else { var fdd models.FsiDiagnoseDtos fdd.DiseID = strconv.FormatInt(item.ID, 10) fdd.InoutDiseType = "1" fdd.MaindiseFlag = "1" fdd.DiseDate = s_tm fdd.DiasSrtNo = strconv.FormatInt(int64(index), 10) fdd.DiseName = item.CountryContentName fdd.DiseCodg = item.CountryCode fdds = append(fdds, &fdd) } } fed.DrCodg = strconv.FormatInt(doctor_info.ID, 10) fed.AdmDeptCodg = strconv.FormatInt(department.ID, 10) fed.AdmDeptName = department.Name fed.DscgDeptCodg = strconv.FormatInt(department.ID, 10) fed.DscgDeptName = department.Name fed.MedMdtrtType = "1" fed.MedType = "11" //if his.Insutype == "390" { // fed.MedType = "1402" //} else { // fed.MedType = "9933" //} var orders []*models.FsiOrderDtos if trig_scen == "2" { //处方医嘱信息 for _, item := range prescriptions { for _, subItem := range item.HisDoctorAdviceInfo { var order models.FsiOrderDtos order.RxID = strconv.FormatInt(item.ID, 10) order.Rxno = strconv.FormatInt(item.ID, 10) order.LongDrordFlag = "0" order.HilistType = "1" order.ChrgType = "1" order.DrordBhvr = "-" order.HilistCode = subItem.BaseDrugLib.MedicalInsuranceNumber order.HosplistName = subItem.BaseDrugLib.DrugName order.HilistLv = "1" order.HilistPric = fmt.Sprintf("%.2f", subItem.Price) order.HosplistCode = subItem.BaseDrugLib.MedicalInsuranceNumber order.HosplistName = subItem.BaseDrugLib.DrugName order.Cnt = fmt.Sprintf("%.2f", subItem.PrescribingNumber) order.Pric = fmt.Sprintf("%.2f", subItem.Price) order.Sumamt = fmt.Sprintf("%.2f", (subItem.PrescribingNumber * subItem.Price)) order.OwnpayAmt = "" order.SelfpayAmt = "" order.Spec = "" order.SpecUnt = "" order.DrordBegnDate = s_tm order.DrordStopDate = "" order.DrordDrCodg = "1" order.DrordDeptName = department.Name order.DrordDrCodg = "1" order.DrordDrName = doctor_info.UserName order.DrordDrProfttl = "" order.CurrDrordFlag = "1" orders = append(orders, &order) } for _, subItem := range item.HisPrescriptionProject { if subItem.Type == 2 { var order models.FsiOrderDtos order.RxID = strconv.FormatInt(item.ID, 10) order.Rxno = strconv.FormatInt(item.ID, 10) order.LongDrordFlag = "0" order.HilistType = "1" order.ChrgType = "1" order.DrordBhvr = "-" order.HilistCode = subItem.HisProject.MedicalCode order.HosplistName = subItem.HisProject.ProjectName order.HilistLv = "1" order.HilistPric = fmt.Sprintf("%.2f", subItem.Price) order.HosplistCode = subItem.HisProject.MedicalCode order.HosplistName = subItem.HisProject.ProjectName order.Cnt = subItem.Count cnt, _ := strconv.ParseFloat(subItem.Count, 64) order.Pric = fmt.Sprintf("%.2f", subItem.Price) order.Sumamt = fmt.Sprintf("%.2f", subItem.Price*cnt) order.OwnpayAmt = "" order.SelfpayAmt = "" order.Spec = "" order.SpecUnt = "" order.DrordBegnDate = s_tm order.DrordStopDate = "" order.DrordDrCodg = "1" order.DrordDeptName = department.Name order.DrordDrCodg = "1" order.DrordDrName = doctor_info.UserName order.DrordDrProfttl = "" order.CurrDrordFlag = "1" orders = append(orders, &order) } if subItem.Type == 3 { var order models.FsiOrderDtos order.RxID = strconv.FormatInt(item.ID, 10) order.Rxno = strconv.FormatInt(item.ID, 10) order.LongDrordFlag = "0" order.HilistType = "1" order.ChrgType = "1" order.DrordBhvr = "-" order.HilistCode = subItem.GoodInfo.MedicalInsuranceNumber order.HosplistName = subItem.GoodInfo.GoodName order.HilistLv = "1" order.HilistPric = fmt.Sprintf("%.2f", subItem.Price) order.HosplistCode = subItem.GoodInfo.MedicalInsuranceNumber order.HosplistName = subItem.GoodInfo.GoodName order.Cnt = subItem.Count cnt, _ := strconv.ParseFloat(subItem.Count, 64) order.Pric = fmt.Sprintf("%.2f", subItem.Price) order.Sumamt = fmt.Sprintf("%.2f", subItem.Price*cnt) order.OwnpayAmt = "" order.SelfpayAmt = "" order.Spec = "" order.SpecUnt = "" order.DrordBegnDate = s_tm order.DrordStopDate = "" order.DrordDrCodg = "1" order.DrordDeptName = department.Name order.DrordDrCodg = "1" order.DrordDrName = doctor_info.UserName order.DrordDrProfttl = "" order.CurrDrordFlag = "1" orders = append(orders, &order) } } } //处方医嘱信息 } fed.MatnStas = "0" fed.MedfeeSumamt = "0" fed.OwnpayAmt = "0" fed.SelfpayAmt = "0" fed.AcctPayamt = "0" fed.MaAmt = "0" fed.HifpPayamt = "0" fed.SetlTotlnum = "1" fed.Insutype = his.Insutype fed.ReimFlag = "0" fed.OutSetlFlag = "0" var fopd []*models.FsiOperationDtosData data := make(map[string]interface{}) data["fed"] = fed data["fdd"] = fdds data["fod"] = orders data["pd"] = pd data["pp"] = pp data["fopd"] = fopd data["trig_scen"] = trig_scen fmt.Println(data) fmt.Println(fed) fmt.Println(fdds) fmt.Println(orders) fmt.Println(pd) fmt.Println(pp) fmt.Println(fopd) client := &http.Client{} bytesData, _ := json.Marshal(data) var req *http.Request if miConfig.MdtrtareaAdmvs == "320921" { req, _ = http.NewRequest("POST", "http://192.168.2.110:9532/"+"jsyb/3101", bytes.NewReader(bytesData)) } else { req, _ = http.NewRequest("POST", "http://192.168.5.251:9532/"+"jsyb/3101", bytes.NewReader(bytesData)) } resp, _ := client.Do(req) defer resp.Body.Close() body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return res } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(body), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return res } respJSON = respJSON["data"].(map[string]interface{})["request_log"].(map[string]interface{}) fmt.Println(respJSON) result, _ := json.Marshal(respJSON) fmt.Println(result) if err := json.Unmarshal([]byte(result), &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return res } return res } func Check3101(c *HisApiController, patient_id int64, his_patient_id int64, admin_user_id int64, trig_scen string, record_time string, prescriptions []*models.HisPrescription) (res Result3101) { adminUser := c.GetAdminUserInfo() roles, _ := service.GetAdminUserInfoByID(c.GetAdminUserInfo().CurrentOrgId, admin_user_id) his, _ := service.GetNewHisPatientInfoFour(c.GetAdminUserInfo().CurrentOrgId, his_patient_id) miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId) //record_time := c.GetString("record_time") //trig_scen := c.GetString("trig_scen") timeLayout := "2006-01-02" loc, _ := time.LoadLocation("Local") theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", record_time+" 00:00:00", loc) if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return res } recordDateTime := theTime.Unix() var patientPrescription models.HisPrescriptionInfo patientPrescription, _ = service.FindHisPatientPrescriptionInfo(adminUser.CurrentOrgId, his_patient_id, recordDateTime) if patientPrescription.ID == 0 { patientPrescription, _ = service.FindLastPatientPrescriptionInfo(adminUser.CurrentOrgId, patient_id, recordDateTime) } department, _ := service.GetDepartMentDetail(patientPrescription.Departments) doctor_info, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, patientPrescription.DoctorId) // diagnosis_ids := strings.Split(patientPrescription.Diagnosis, ",") //prescriptions, _ := service.GetNewHisPrescriptionTen(adminUser.CurrentOrgId, his_patient_id, recordDateTime) var pp models.PublicParams pp.InsuplcAdmdvs = miConfig.InsuplcAdmdvs pp.MdtrtareaAdmvs = miConfig.MdtrtareaAdmvs pp.FixmedinsName = miConfig.OrgName pp.FixmedinsCode = miConfig.Code pp.RequestUrl = miConfig.Url pp.Cainfo = miConfig.Cainfo pp.SecretKey = miConfig.SecretKey pp.AccessKey = miConfig.AccessKey pp.OpterName = roles.UserName var config []*models.HisXtDiagnoseConfig for _, item := range diagnosis_ids { id, _ := strconv.ParseInt(item, 10, 64) diagnosisConfig, _ := service.FindDiagnoseById(id) config = append(config, &diagnosisConfig) } var pd models.PatientDtos pd.PatnID = his.PsnNo pd.PatnName = his.Name pd.Gend = his.Gend pd.Brdy = his.Brdy pd.Poolarea = his.InsuplcAdmdvs pd.CurrMdtrtID = his.Number var fed models.FsiEncounterDtos fed.MdtrtID = his.Number fed.MedinsID = miConfig.Code fed.MedinsName = miConfig.OrgName fed.MedinsAdmdvs = miConfig.MdtrtareaAdmvs fed.MedMdtrtType = "1" fed.MedinsType = "1" fed.MedinsLv = "11" tm := time.Unix(his.RecordDate, 0) s_tm := tm.Format("2006-01-02 15:04:05") fed.AdmDate = s_tm fed.DscgDate = s_tm fed.DscgMainDiseCodg = config[0].CountryCode fed.DscgMainDiseName = config[0].CountryContentName //诊断信息 var fdds []*models.FsiDiagnoseDtos for index, item := range config { if index == 0 { var fdd models.FsiDiagnoseDtos fdd.DiseID = strconv.FormatInt(item.ID, 10) fdd.InoutDiseType = "1" fdd.MaindiseFlag = "1" fdd.DiseDate = s_tm fdd.DiasSrtNo = "1" fdd.DiseName = item.CountryContentName fdd.DiseCodg = item.CountryCode fdds = append(fdds, &fdd) } else { var fdd models.FsiDiagnoseDtos fdd.DiseID = strconv.FormatInt(item.ID, 10) fdd.InoutDiseType = "1" fdd.MaindiseFlag = "1" fdd.DiseDate = s_tm fdd.DiasSrtNo = strconv.FormatInt(int64(index), 10) fdd.DiseName = item.CountryContentName fdd.DiseCodg = item.CountryCode fdds = append(fdds, &fdd) } } fed.DrCodg = strconv.FormatInt(doctor_info.ID, 10) fed.AdmDeptCodg = strconv.FormatInt(department.ID, 10) fed.AdmDeptName = department.Name fed.DscgDeptCodg = strconv.FormatInt(department.ID, 10) fed.DscgDeptName = department.Name fed.MedMdtrtType = "1" fed.MedType = "11" //if his.Insutype == "390" { // fed.MedType = "1402" //} else { // fed.MedType = "9933" //} var orders []*models.FsiOrderDtos if trig_scen == "2" { //处方医嘱信息 for _, item := range prescriptions { for _, subItem := range item.HisDoctorAdviceInfo { var order models.FsiOrderDtos order.RxID = strconv.FormatInt(item.ID, 10) order.Rxno = strconv.FormatInt(item.ID, 10) order.LongDrordFlag = "0" order.HilistType = "1" order.ChrgType = "1" order.DrordBhvr = "-" order.HilistCode = subItem.BaseDrugLib.MedicalInsuranceNumber order.HosplistName = subItem.BaseDrugLib.DrugName order.HilistLv = "1" order.HilistPric = fmt.Sprintf("%.2f", subItem.Price) order.HosplistCode = subItem.BaseDrugLib.MedicalInsuranceNumber order.HosplistName = subItem.BaseDrugLib.DrugName order.Cnt = fmt.Sprintf("%.2f", subItem.PrescribingNumber) order.Pric = fmt.Sprintf("%.2f", subItem.Price) order.Sumamt = fmt.Sprintf("%.2f", (subItem.PrescribingNumber * subItem.Price)) order.OwnpayAmt = "" order.SelfpayAmt = "" order.Spec = "" order.SpecUnt = "" order.DrordBegnDate = s_tm order.DrordStopDate = "" order.DrordDrCodg = "1" order.DrordDeptName = department.Name order.DrordDrCodg = "1" order.DrordDrName = doctor_info.UserName order.DrordDrProfttl = "" order.CurrDrordFlag = "1" orders = append(orders, &order) } for _, subItem := range item.HisPrescriptionProject { if subItem.Type == 2 { var order models.FsiOrderDtos order.RxID = strconv.FormatInt(item.ID, 10) order.Rxno = strconv.FormatInt(item.ID, 10) order.LongDrordFlag = "0" order.HilistType = "1" order.ChrgType = "1" order.DrordBhvr = "-" order.HilistCode = subItem.HisProject.MedicalCode order.HosplistName = subItem.HisProject.ProjectName order.HilistLv = "1" order.HilistPric = fmt.Sprintf("%.2f", subItem.Price) order.HosplistCode = subItem.HisProject.MedicalCode order.HosplistName = subItem.HisProject.ProjectName order.Cnt = subItem.Count cnt, _ := strconv.ParseFloat(subItem.Count, 64) order.Pric = fmt.Sprintf("%.2f", subItem.Price) order.Sumamt = fmt.Sprintf("%.2f", subItem.Price*cnt) order.OwnpayAmt = "" order.SelfpayAmt = "" order.Spec = "" order.SpecUnt = "" order.DrordBegnDate = s_tm order.DrordStopDate = "" order.DrordDrCodg = "1" order.DrordDeptName = department.Name order.DrordDrCodg = "1" order.DrordDrName = doctor_info.UserName order.DrordDrProfttl = "" order.CurrDrordFlag = "1" orders = append(orders, &order) } if subItem.Type == 3 { var order models.FsiOrderDtos order.RxID = strconv.FormatInt(item.ID, 10) order.Rxno = strconv.FormatInt(item.ID, 10) order.LongDrordFlag = "0" order.HilistType = "1" order.ChrgType = "1" order.DrordBhvr = "-" order.HilistCode = subItem.GoodInfo.MedicalInsuranceNumber order.HosplistName = subItem.GoodInfo.GoodName order.HilistLv = "1" order.HilistPric = fmt.Sprintf("%.2f", subItem.Price) order.HosplistCode = subItem.GoodInfo.MedicalInsuranceNumber order.HosplistName = subItem.GoodInfo.GoodName order.Cnt = subItem.Count cnt, _ := strconv.ParseFloat(subItem.Count, 64) order.Pric = fmt.Sprintf("%.2f", subItem.Price) order.Sumamt = fmt.Sprintf("%.2f", subItem.Price*cnt) order.OwnpayAmt = "" order.SelfpayAmt = "" order.Spec = "" order.SpecUnt = "" order.DrordBegnDate = s_tm order.DrordStopDate = "" order.DrordDrCodg = "1" order.DrordDeptName = department.Name order.DrordDrCodg = "1" order.DrordDrName = doctor_info.UserName order.DrordDrProfttl = "" order.CurrDrordFlag = "1" orders = append(orders, &order) } } } //处方医嘱信息 } fed.MatnStas = "0" fed.MedfeeSumamt = "0" fed.OwnpayAmt = "0" fed.SelfpayAmt = "0" fed.AcctPayamt = "0" fed.MaAmt = "0" fed.HifpPayamt = "0" fed.SetlTotlnum = "1" fed.Insutype = his.Insutype fed.ReimFlag = "0" fed.OutSetlFlag = "0" var fopd []*models.FsiOperationDtosData data := make(map[string]interface{}) data["fed"] = fed data["fdd"] = fdds data["fod"] = orders data["pd"] = pd data["pp"] = pp data["fopd"] = fopd data["trig_scen"] = trig_scen fmt.Println(data) fmt.Println(fed) fmt.Println(fdds) fmt.Println(orders) fmt.Println(pd) fmt.Println(pp) fmt.Println(fopd) client := &http.Client{} bytesData, _ := json.Marshal(data) var req *http.Request if miConfig.MdtrtareaAdmvs == "320921" { req, _ = http.NewRequest("POST", "http://192.168.2.110:9532/"+"jsyb/3101", bytes.NewReader(bytesData)) } else { req, _ = http.NewRequest("POST", "http://192.168.5.251:9532/"+"jsyb/3101", bytes.NewReader(bytesData)) } resp, _ := client.Do(req) defer resp.Body.Close() body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return res } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(body), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return res } respJSON = respJSON["data"].(map[string]interface{})["request_log"].(map[string]interface{}) result, _ := json.Marshal(respJSON) if err := json.Unmarshal([]byte(result), &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return res } return res } func Check3102(c *HisApiController, patient_id int64, his_patient_id int64, admin_user_id int64, trig_scen string, order_id int64) (res Result3101) { ////patient_id, _ := c.GetInt64("patient_id") //order_id, _ := c.GetInt64("order_id") ////his_patient_id, _ := c.GetInt64("his_patient_id") ////admin_user_id, _ := c.GetInt64("admin_user_id") //trig_scen := c.GetString("trig_scen") adminUser := c.GetAdminUserInfo() roles, _ := service.GetAdminUserInfoByID(c.GetAdminUserInfo().CurrentOrgId, admin_user_id) his, _ := service.GetNewHisPatientInfoFour(c.GetAdminUserInfo().CurrentOrgId, his_patient_id) miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId) record_time := c.GetString("record_time") order, _ := service.GetHisOrderByID(order_id) timeLayout := "2006-01-02" loc, _ := time.LoadLocation("Local") theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", record_time+" 00:00:00", loc) if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } recordDateTime := theTime.Unix() var patientPrescription models.HisPrescriptionInfo patientPrescription, _ = service.FindHisPatientPrescriptionInfo(adminUser.CurrentOrgId, his_patient_id, recordDateTime) if patientPrescription.ID == 0 { patientPrescription, _ = service.FindLastPatientPrescriptionInfo(adminUser.CurrentOrgId, patient_id, recordDateTime) } department, _ := service.GetDepartMentDetail(patientPrescription.Departments) doctor_info, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, patientPrescription.DoctorId) // diagnosis_ids := strings.Split(his.Diagnosis, ",") prescriptions, _ := service.GetNewHisPrescriptionTen(adminUser.CurrentOrgId, his_patient_id, recordDateTime) var pp models.PublicParams pp.InsuplcAdmdvs = miConfig.InsuplcAdmdvs pp.MdtrtareaAdmvs = miConfig.MdtrtareaAdmvs pp.FixmedinsName = miConfig.OrgName pp.FixmedinsCode = miConfig.Code pp.RequestUrl = miConfig.Url pp.Cainfo = miConfig.Cainfo pp.SecretKey = miConfig.SecretKey pp.AccessKey = miConfig.AccessKey pp.OpterName = roles.UserName var config []*models.HisXtDiagnoseConfig for _, item := range diagnosis_ids { id, _ := strconv.ParseInt(item, 10, 64) diagnosisConfig, _ := service.FindDiagnoseById(id) config = append(config, &diagnosisConfig) } var pd models.PatientDtos pd.PatnID = his.PsnNo pd.PatnName = his.Name pd.Gend = his.Gend pd.Brdy = his.Brdy pd.Poolarea = his.InsuplcAdmdvs pd.CurrMdtrtID = his.Number var fed models.FsiEncounterDtos fed.MdtrtID = his.Number fed.MedinsID = miConfig.Code fed.MedinsName = miConfig.OrgName fed.MedinsAdmdvs = miConfig.MdtrtareaAdmvs fed.MedMdtrtType = "1" fed.MedinsType = "1" fed.MedinsLv = "11" tm := time.Unix(his.RecordDate, 0) s_tm := tm.Format("2006-01-02 15:04:05") fed.AdmDate = s_tm fed.DscgDate = s_tm fed.DscgMainDiseCodg = config[0].CountryCode fed.DscgMainDiseName = config[0].CountryContentName //诊断信息 var fdds []*models.FsiDiagnoseDtos for index, item := range config { if index == 0 { var fdd models.FsiDiagnoseDtos fdd.DiseID = strconv.FormatInt(item.ID, 10) fdd.InoutDiseType = "1" fdd.MaindiseFlag = "1" fdd.DiseDate = s_tm fdd.DiasSrtNo = "1" fdd.DiseName = item.CountryContentName fdd.DiseCodg = item.CountryCode fdds = append(fdds, &fdd) } else { var fdd models.FsiDiagnoseDtos fdd.DiseID = strconv.FormatInt(item.ID, 10) fdd.InoutDiseType = "1" fdd.MaindiseFlag = "1" fdd.DiseDate = s_tm fdd.DiasSrtNo = strconv.FormatInt(int64(index), 10) fdd.DiseName = item.CountryContentName fdd.DiseCodg = item.CountryCode fdds = append(fdds, &fdd) } } fed.DrCodg = strconv.FormatInt(doctor_info.ID, 10) fed.AdmDeptCodg = strconv.FormatInt(department.ID, 10) fed.AdmDeptName = department.Name fed.DscgDeptCodg = strconv.FormatInt(department.ID, 10) fed.DscgDeptName = department.Name fed.MedType = order.MedType //处方医嘱信息 var orders []*models.FsiOrderDtos //for _, item := range prescriptions { // for _, subItem := range item.HisDoctorAdviceInfo { // var order models.FsiOrderDtos // order.RxID = strconv.FormatInt(item.ID, 10) // order.Rxno = strconv.FormatInt(item.ID, 10) // order.LongDrordFlag = "0" // order.HilistType = "1" // order.ChrgType = "1" // order.DrordBhvr = "-" // order.HilistCode = subItem.BaseDrugLib.MedicalInsuranceNumber // order.HosplistName = subItem.BaseDrugLib.DrugName // order.HilistLv = "1" // order.HilistPric = strconv.FormatFloat(subItem.Price, 'E', -1, 64) // order.HosplistCode = subItem.BaseDrugLib.MedicalInsuranceNumber // order.HosplistName = subItem.BaseDrugLib.DrugName // order.Cnt = strconv.FormatFloat(subItem.PrescribingNumber, 'E', -1, 64) // order.Pric = strconv.FormatFloat(subItem.Price, 'E', -1, 64) // order.Sumamt = strconv.FormatFloat((subItem.Price * subItem.PrescribingNumber), 'E', -1, 64) // order.OwnpayAmt = "" // order.SelfpayAmt = "" // order.Spec = "" // order.SpecUnt = "" // order.DrordBegnDate = s_tm // order.DrordStopDate = "" // order.DrordDrCodg = "1" // order.DrordDeptName = department.Name // order.DrordDrCodg = "1" // order.DrordDrName = doctor_info.UserName // order.DrordDrProfttl = "" // order.CurrDrordFlag = "1" // orders = append(orders, &order) // } // for _, subItem := range item.HisPrescriptionProject { // if subItem.Type == 2 { // var order models.FsiOrderDtos // order.RxID = strconv.FormatInt(item.ID, 10) // order.Rxno = strconv.FormatInt(item.ID, 10) // order.LongDrordFlag = "0" // order.HilistType = "1" // order.ChrgType = "1" // order.DrordBhvr = "-" // order.HilistCode = subItem.HisProject.MedicalCode // order.HosplistName = subItem.HisProject.ProjectName // order.HilistLv = "1" // order.HilistPric = strconv.FormatFloat(subItem.Price, 'E', -1, 64) // order.HosplistCode = subItem.HisProject.MedicalCode // order.HosplistName = subItem.HisProject.ProjectName // order.Cnt = subItem.Count // cnt, _ := strconv.ParseFloat(subItem.Count, 64) // // order.Pric = strconv.FormatFloat(subItem.Price, 'E', -1, 64) // order.Sumamt = strconv.FormatFloat((subItem.Price * cnt), 'E', -1, 64) // order.OwnpayAmt = "" // order.SelfpayAmt = "" // order.Spec = "" // order.SpecUnt = "" // order.DrordBegnDate = s_tm // order.DrordStopDate = "" // order.DrordDrCodg = "1" // order.DrordDeptName = department.Name // order.DrordDrCodg = "1" // order.DrordDrName = doctor_info.UserName // order.DrordDrProfttl = "" // order.CurrDrordFlag = "1" // orders = append(orders, &order) // // } // if subItem.Type == 3 { // // var order models.FsiOrderDtos // order.RxID = strconv.FormatInt(item.ID, 10) // order.Rxno = strconv.FormatInt(item.ID, 10) // order.LongDrordFlag = "0" // order.HilistType = "1" // order.ChrgType = "1" // order.DrordBhvr = "-" // order.HilistCode = subItem.GoodInfo.MedicalInsuranceNumber // order.HosplistName = subItem.GoodInfo.GoodName // order.HilistLv = "1" // order.HilistPric = strconv.FormatFloat(subItem.Price, 'E', -1, 64) // order.HosplistCode = subItem.GoodInfo.MedicalInsuranceNumber // order.HosplistName = subItem.GoodInfo.GoodName // order.Cnt = subItem.Count // cnt, _ := strconv.ParseFloat(subItem.Count, 64) // order.Pric = strconv.FormatFloat(subItem.Price, 'E', -1, 64) // order.Sumamt = strconv.FormatFloat((subItem.Price * cnt), 'E', -1, 64) // order.OwnpayAmt = "" // order.SelfpayAmt = "" // order.Spec = "" // order.SpecUnt = "" // order.DrordBegnDate = s_tm // order.DrordStopDate = "" // order.DrordDrCodg = "1" // order.DrordDeptName = department.Name // order.DrordDrCodg = "1" // order.DrordDrName = doctor_info.UserName // order.DrordDrProfttl = "" // order.CurrDrordFlag = "1" // orders = append(orders, &order) // // } // } //} for _, item := range prescriptions { for _, subItem := range item.HisDoctorAdviceInfo { var order models.FsiOrderDtos order.RxID = strconv.FormatInt(item.ID, 10) order.Rxno = strconv.FormatInt(item.ID, 10) order.LongDrordFlag = "0" order.HilistType = "1" order.ChrgType = "1" order.DrordBhvr = "-" order.HilistCode = subItem.BaseDrugLib.MedicalInsuranceNumber order.HosplistName = subItem.BaseDrugLib.DrugName order.HilistLv = "1" order.HilistPric = fmt.Sprintf("%.2f", subItem.Price) order.HosplistCode = subItem.BaseDrugLib.MedicalInsuranceNumber order.HosplistName = subItem.BaseDrugLib.DrugName order.Cnt = fmt.Sprintf("%.2f", subItem.PrescribingNumber) order.Pric = fmt.Sprintf("%.2f", subItem.Price) order.Sumamt = fmt.Sprintf("%.2f", (subItem.PrescribingNumber * subItem.Price)) order.OwnpayAmt = "" order.SelfpayAmt = "" order.Spec = "" order.SpecUnt = "" order.DrordBegnDate = s_tm order.DrordStopDate = "" order.DrordDrCodg = "1" order.DrordDeptName = department.Name order.DrordDrCodg = "1" order.DrordDrName = doctor_info.UserName order.DrordDrProfttl = "" order.CurrDrordFlag = "1" orders = append(orders, &order) } for _, subItem := range item.HisPrescriptionProject { if subItem.Type == 2 { var order models.FsiOrderDtos order.RxID = strconv.FormatInt(item.ID, 10) order.Rxno = strconv.FormatInt(item.ID, 10) order.LongDrordFlag = "0" order.HilistType = "1" order.ChrgType = "1" order.DrordBhvr = "-" order.HilistCode = subItem.HisProject.MedicalCode order.HosplistName = subItem.HisProject.ProjectName order.HilistLv = "1" order.HilistPric = fmt.Sprintf("%.2f", subItem.Price) order.HosplistCode = subItem.HisProject.MedicalCode order.HosplistName = subItem.HisProject.ProjectName order.Cnt = subItem.Count cnt, _ := strconv.ParseFloat(subItem.Count, 64) order.Pric = fmt.Sprintf("%.2f", subItem.Price) order.Sumamt = fmt.Sprintf("%.2f", subItem.Price*cnt) order.OwnpayAmt = "" order.SelfpayAmt = "" order.Spec = "" order.SpecUnt = "" order.DrordBegnDate = s_tm order.DrordStopDate = "" order.DrordDrCodg = "1" order.DrordDeptName = department.Name order.DrordDrCodg = "1" order.DrordDrName = doctor_info.UserName order.DrordDrProfttl = "" order.CurrDrordFlag = "1" orders = append(orders, &order) } if subItem.Type == 3 { var order models.FsiOrderDtos order.RxID = strconv.FormatInt(item.ID, 10) order.Rxno = strconv.FormatInt(item.ID, 10) order.LongDrordFlag = "0" order.HilistType = "1" order.ChrgType = "1" order.DrordBhvr = "-" order.HilistCode = subItem.GoodInfo.MedicalInsuranceNumber order.HosplistName = subItem.GoodInfo.GoodName order.HilistLv = "1" order.HilistPric = fmt.Sprintf("%.2f", subItem.Price) order.HosplistCode = subItem.GoodInfo.MedicalInsuranceNumber order.HosplistName = subItem.GoodInfo.GoodName order.Cnt = subItem.Count cnt, _ := strconv.ParseFloat(subItem.Count, 64) order.Pric = fmt.Sprintf("%.2f", subItem.Price) order.Sumamt = fmt.Sprintf("%.2f", subItem.Price*cnt) order.OwnpayAmt = "" order.SelfpayAmt = "" order.Spec = "" order.SpecUnt = "" order.DrordBegnDate = s_tm order.DrordStopDate = "" order.DrordDrCodg = "1" order.DrordDeptName = department.Name order.DrordDrCodg = "1" order.DrordDrName = doctor_info.UserName order.DrordDrProfttl = "" order.CurrDrordFlag = "1" orders = append(orders, &order) } } } //处方医嘱信息 fed.MatnStas = "0" fed.MedfeeSumamt = fmt.Sprintf("%.2f", order.MedfeeSumamt) fed.OwnpayAmt = fmt.Sprintf("%.2f", order.FulamtOwnpayAmt) fed.SelfpayAmt = fmt.Sprintf("%.2f", order.PreselfpayAmt) fed.AcctPayamt = fmt.Sprintf("%.2f", order.AcctPay) fed.MaAmt = fmt.Sprintf("%.2f", order.MafPay) fed.HifpPayamt = fmt.Sprintf("%.2f", order.HifpPay) fed.SetlTotlnum = "1" fed.Insutype = his.Insutype fed.ReimFlag = "0" fed.OutSetlFlag = "0" var fopd []*models.FsiOperationDtosData data := make(map[string]interface{}) data["fed"] = fed data["fdd"] = fdds data["fod"] = orders data["pd"] = pd data["pp"] = pp data["fopd"] = fopd data["trig_scen"] = trig_scen client := &http.Client{} bytesData, _ := json.Marshal(data) var req *http.Request if miConfig.MdtrtareaAdmvs == "320921" { req, _ = http.NewRequest("POST", "http://192.168.2.110:9532/"+"jsyb/3102", bytes.NewReader(bytesData)) } else { req, _ = http.NewRequest("POST", "http://192.168.5.251:9532/"+"jsyb/3102", bytes.NewReader(bytesData)) } resp, _ := client.Do(req) defer resp.Body.Close() body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return res } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(body), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return res } respJSON = respJSON["data"].(map[string]interface{})["request_log"].(map[string]interface{}) result, _ := json.Marshal(respJSON) if err := json.Unmarshal([]byte(result), &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return res } return res //手术操作集合 //手术操作集合 } func (c *HisApiController) Check() { psn_no := c.GetString("psn_no") in := c.GetString("in") mt := c.GetString("mt") baseParams := models.BaseParams{ SecretKey: "MSDBYGxXm1Mtyi3PtOUB7n1ktcxwyW57", FixmedinsCode: "H15049901371", InsuplcAdmdvs: "150499", MdtrtareaAdmvs: "150499", OrgName: "赤峰费森血液透析中心", Doctor: "1111", } service.Gdyb2001(baseParams, psn_no, in, mt) } func (c *HisApiController) GetPsnNcdsInfo() { admin_user_id, _ := c.GetInt64("admin_user_id") patient_id, _ := c.GetInt64("patient_id") id, _ := c.GetInt64("id") adminUser := c.GetAdminUserInfo() miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) //config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId) //patient, _ := service.GetPatientByID(c.GetAdminUserInfo().CurrentOrgId, id) role, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) psn_record, _ := service.GetPsnNCDSRecordById(id) // //if psn_record.ID == 0 { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorPsnRecordNoExistWrong) // return //} var res Result5301 var res10265 Result5301For10265 if miConfig.MdtrtareaAdmvs == "320921" || miConfig.MdtrtareaAdmvs == "320982" { psn_info, _ := service.GetPsnByPatientId(patient_id) var api string if miConfig.MdtrtareaAdmvs == "320921" { api = "http://192.168.2.110:9532/" + "jsyb/5301?" + "fixmedins_code=" + miConfig.Code + "&secret_key=" + miConfig.SecretKey + "&ak=" + miConfig.AccessKey + "&org_name=" + miConfig.OrgName + "&doctor=" + role.UserName + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&url=" + miConfig.Url + "&psn_no=" + psn_info.PsnNo + "&cainfo=" + miConfig.Cainfo } else { api = "http://192.168.5.251:9532/" + "jsyb/5301?" + "fixmedins_code=" + miConfig.Code + "&secret_key=" + miConfig.SecretKey + "&ak=" + miConfig.AccessKey + "&org_name=" + miConfig.OrgName + "&doctor=" + role.UserName + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&url=" + miConfig.Url + "&psn_no=" + psn_info.PsnNo + "&cainfo=" + miConfig.Cainfo } resp, requestErr := http.Get(api) if requestErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) result, _ := json.Marshal(respJSON) if err := json.Unmarshal([]byte(result), &res10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.ErrMsg = res10265.ErrMsg res.Output = res10265.Output res.InfRefmsgid = res10265.InfRefmsgid infocode, _ := strconv.ParseInt(res10265.Infcode, 10, 64) res.Infcode = infocode } else if miConfig.MdtrtareaAdmvs == "360399" { p, _ := service.GetHisPatientById(patient_id) result, _ := service.Jxyb5301(p.PsnNo, miConfig.OrgName, role.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, miConfig.Url, miConfig.AccessKey, "") var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "430800" { p, _ := service.GetHisPatientById(patient_id) result, _ := service.Hnyb5301(p.PsnNo, miConfig.OrgName, role.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, miConfig.Url, miConfig.AccessKey, "") var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else { result := service.Gdyb5301(psn_record.PsnNo, miConfig.OrgName, role.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) if miConfig.Code == "H15049901371" { if err := json.Unmarshal(userJSONBytes, &res10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = res10265.InfRefmsgid res.Output = res10265.Output res.ErrMsg = res10265.ErrMsg infocode, _ := strconv.ParseInt(res10265.Infcode, 10, 64) res.Infcode = infocode } else { if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } } if res.Infcode == 0 { c.ServeSuccessJSON(map[string]interface{}{ "result": res.Output.Result, }) } } func (c *HisApiController) CheckInsutype() { his_patient_id, _ := c.GetInt64("his_patient_id") admin_user_id, _ := c.GetInt64("admin_user_id") roles, _ := service.GetAdminUserInfoByID(c.GetAdminUserInfo().CurrentOrgId, admin_user_id) his, _ := service.GetNewHisPatientInfoFour(c.GetAdminUserInfo().CurrentOrgId, his_patient_id) miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId) result := service.Gdyb90100(his.PsnNo, miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) var res Result90100 if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Infcode != 0 { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.ErrMsg, }) return } else { fmt.Println(res) } } func (c *HisApiController) CheckCardPWD() { card_pwd := c.GetString("card_pwd") his_patient_id, _ := c.GetInt64("his_patient_id") admin_user_id, _ := c.GetInt64("admin_user_id") roles, _ := service.GetAdminUserInfoByID(c.GetAdminUserInfo().CurrentOrgId, admin_user_id) miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId) his, _ := service.GetNewHisPatientInfoFour(c.GetAdminUserInfo().CurrentOrgId, his_patient_id) psn, _ := service.GetPsnByPatientId(his.PatientId) bas := strings.Split(psn.CardInfo, "|") basNumber := bas[2] result := service.Gdyb90991(his.PsnNo, miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, card_pwd, basNumber) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) var res Result90991 if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Infcode != 0 { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.ErrMsg, }) return } else { if res.Output.Result.SscnoCheckStat == "0" { var msg string switch res.Output.Result.CardStat { case "00": msg = "未激活" break case "10": msg = "激活" break case "20": msg = "窗口挂失" break case "21": msg = "电话挂失" break case "22": msg = "单位网上申报挂失" break case "23": msg = "保健办挂失" break case "24": msg = "个人网上挂失" break case "25": msg = "网上服务大厅挂失" break case "30": msg = "注销" break case "40": msg = "回收" break case "99": msg = "制卡中(无效卡)" break } c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": msg, }) return } else { c.ServeSuccessJSON(map[string]interface{}{ "msg": "校验成功", }) return } } } func (c *HisApiController) CheckCardPWDTwo() { //card_pwd := c.GetString("card_pwd") //his_patient_id, _ := c.GetInt64("his_patient_id") admin_user_id, _ := c.GetInt64("admin_user_id") roles, _ := service.GetAdminUserInfoByID(c.GetAdminUserInfo().CurrentOrgId, admin_user_id) miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId) result := service.Gdyb90991("44030000000629690364", miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, "000000", "BDM421363") var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) var res Result90991 if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Infcode != 0 { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.ErrMsg, }) return } else { if res.Output.Result.SscnoCheckStat == "0" { var msg string switch res.Output.Result.CardStat { case "00": msg = "未激活" break case "10": msg = "激活" break case "20": msg = "窗口挂失" break case "21": msg = "电话挂失" break case "22": msg = "单位网上申报挂失" break case "23": msg = "保健办挂失" break case "24": msg = "个人网上挂失" break case "25": msg = "网上服务大厅挂失" break case "30": msg = "注销" break case "40": msg = "回收" break case "99": msg = "制卡中(无效卡)" break } c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": msg, }) return } else { c.ServeSuccessJSON(map[string]interface{}{ "msg": "校验成功", }) return } } } type ELeCertData struct { Data struct { Extra string `json:"extra"` IDNo string `json:"idNo"` IDType string `json:"idType"` EcToken string `json:"ecToken"` InsuOrg string `json:"insuOrg"` UserName string `json:"userName"` EcIndexNo string `json:"ecIndexNo"` Gender string `json:"gender"` Birthday string `json:"birthday"` Nationality string `json:"nationality"` Email string `json:"email"` } `json:"OutData"` } func (c *HisApiController) ReadCard() { id_card_type, _ := c.GetInt64("id_card_type") admin_user_id, _ := c.GetInt64("admin_user_id") certificates, _ := c.GetInt64("certificates") roles, _ := service.GetAdminUserInfoByID(c.GetAdminUserInfo().CurrentOrgId, admin_user_id) miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId) switch id_card_type { case 1: if miConfig.MdtrtareaAdmvs == "421300" { var res ResultTwo api := "http://192.168.124.4:9532/" + "hbyb/1101?cert_no=" + "" + "&org_name=" + miConfig.OrgName + "&doctor=" + roles.UserName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&id_card_type=" + strconv.FormatInt(id_card_type, 10) + "&card_sn=" + "" + "&certificates=" + strconv.FormatInt(certificates, 10) resp, requestErr := http.Get(api) if requestErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) result, _ := json.Marshal(respJSON) fmt.Println("log") fmt.Println(string(result)) if err := json.Unmarshal([]byte(result), &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Infcode == 0 { patient, err := service.GetPatientByIDCard(res.Output.Baseinfo.Certno, c.GetAdminUserInfo().CurrentOrgId) if err == gorm.ErrRecordNotFound { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException) return } else if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) return } else { Iinfos, _ := json.Marshal(res.Output.Iinfo) Idetinfos, _ := json.Marshal(res.Output.Idetinfo) infoStr := string(Iinfos) idetinfoStr := string(Idetinfos) psn := &models.HisPsn{ PsnNo: res.Output.Baseinfo.PsnNo, Age: res.Output.Baseinfo.Age, PatientId: patient.ID, Certno: res.Output.Baseinfo.Certno, Brdy: res.Output.Baseinfo.Brdy, Gend: res.Output.Baseinfo.Gend, Naty: res.Output.Baseinfo.Naty, PsnCertType: res.Output.Baseinfo.PsnCertType, PsnName: res.Output.Baseinfo.PsnName, Idetinfo: idetinfoStr, Insuinfo: infoStr, UserOrgId: c.GetAdminUserInfo().CurrentOrgId, } service.CreateHisPsn(psn) c.ServeSuccessJSON(map[string]interface{}{ "patient": patient, "number": res.Output.Baseinfo.Certno, }) } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisFailedException) return } } else if miConfig.MdtrtareaAdmvs == "320921" || miConfig.MdtrtareaAdmvs == "320982" { var api string if miConfig.MdtrtareaAdmvs == "320921" { api = "http://192.168.2.110:9532/" + "jsyb/readcard?" + "fixmedins_code=" + miConfig.Code + "&secret_key=" + miConfig.SecretKey + "&ak=" + miConfig.AccessKey + "&org_name=" + miConfig.OrgName + "&doctor=" + roles.UserName + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&url=" + miConfig.Url + "&cainfo=" + miConfig.Cainfo + "&id_card_type=" + strconv.FormatInt(id_card_type, 10) + "&operator_id=" + strconv.FormatInt(admin_user_id, 10) + "&operator=" + roles.UserName fmt.Println(api) } else { api = "http://192.168.5.251:9532/" + "jsyb/readcard?" + "fixmedins_code=" + miConfig.Code + "&secret_key=" + miConfig.SecretKey + "&ak=" + miConfig.AccessKey + "&org_name=" + miConfig.OrgName + "&doctor=" + roles.UserName + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&url=" + miConfig.Url + "&cainfo=" + miConfig.Cainfo + "&id_card_type=" + strconv.FormatInt(id_card_type, 10) } resp, requestErr := http.Get(api) if requestErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var status string status = respJSON["data"].(map[string]interface{})["status"].(string) card_type := respJSON["data"].(map[string]interface{})["type"].(string) //console.log() fmt.Println("type===") fmt.Println(card_type) var token string var res ResultTwo //1101结果 var res10265 ResultTwo10265 //1101结果 var card_info string //卡信息 var busi_card_info string card_info = respJSON["data"].(map[string]interface{})["card_info"].(string) busi_card_info = respJSON["data"].(map[string]interface{})["busi_card_info"].(string) if status == "0" { //读卡成功 if card_type == "1" { respJSON = respJSON["data"].(map[string]interface{})["result"].(map[string]interface{}) result, _ := json.Marshal(respJSON) if err := json.Unmarshal([]byte(result), &res10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.ErrMsg = res10265.ErrMsg infocode, _ := strconv.ParseInt(res10265.Infcode, 10, 64) res.Infcode = infocode res.Output = res10265.Output res.InfRefmsgid = res10265.InfRefmsgid } else { //var card_info string //卡信息 //var busi_card_info string token = respJSON["data"].(map[string]interface{})["token"].(string) //busi_card_info = respJSON["data"].(map[string]interface{})["busi_card_info"].(string) //fmt.Println(card_info) //fmt.Println(busi_card_info) respJSON = respJSON["data"].(map[string]interface{})["result"].(map[string]interface{}) result, _ := json.Marshal(respJSON) if err := json.Unmarshal([]byte(result), &res10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.ErrMsg = res10265.ErrMsg infocode, _ := strconv.ParseInt(res10265.Infcode, 10, 64) res.Infcode = infocode res.Output = res10265.Output res.InfRefmsgid = res10265.InfRefmsgid } if res.Infcode == 0 { patient, err := service.GetPatientByIDCard(res.Output.Baseinfo.Certno, c.GetAdminUserInfo().CurrentOrgId) if err == gorm.ErrRecordNotFound { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException) return } else if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) return } else { if card_type == "1" { bas := strings.Split(card_info, "|") basNumber := bas[2] Iinfos, _ := json.Marshal(res.Output.Iinfo) Idetinfos, _ := json.Marshal(res.Output.Idetinfo) infoStr := string(Iinfos) idetinfoStr := string(Idetinfos) psn := &models.HisPsn{ PsnNo: res.Output.Baseinfo.PsnNo, Age: res.Output.Baseinfo.Age, PatientId: patient.ID, Certno: res.Output.Baseinfo.Certno, Brdy: res.Output.Baseinfo.Brdy, Gend: res.Output.Baseinfo.Gend, Naty: res.Output.Baseinfo.Naty, PsnCertType: res.Output.Baseinfo.PsnCertType, PsnName: res.Output.Baseinfo.PsnName, Idetinfo: idetinfoStr, Insuinfo: infoStr, UserOrgId: c.GetAdminUserInfo().CurrentOrgId, CardInfo: card_info, VerifyNumber: busi_card_info, } service.CreateHisPsn(psn) var rf []*ResultFive json.Unmarshal([]byte(infoStr), &rf) var insutypes []*ResultFive var insutype string var is390 int = 0 var is310 int = 0 for _, item := range rf { if (item.Insutype == "390" && item.PsnInsuStas == "1") || (item.Insutype == "310" && item.PsnInsuStas == "1") { insutypes = append(insutypes, item) } } if len(insutypes) == 1 { insutype = insutypes[0].Insutype //insuplc_admdvs = insutypes[0].InsuplcAdmdvs } else { for _, i := range insutypes { if i.Insutype == "390" { is390 = 1 } if i.Insutype == "310" { is310 = 1 } } } if is390 == 1 { insutype = "390" } if is310 == 1 { insutype = "310" } if len(insutypes) == 0 { insutype = "310" } c.ServeSuccessJSON(map[string]interface{}{ "patient": patient, "number": basNumber, "insutype": insutype, }) } else { Iinfos, _ := json.Marshal(res.Output.Iinfo) Idetinfos, _ := json.Marshal(res.Output.Idetinfo) infoStr := string(Iinfos) idetinfoStr := string(Idetinfos) psn := &models.HisPsn{ PsnNo: res.Output.Baseinfo.PsnNo, Age: res.Output.Baseinfo.Age, PatientId: patient.ID, Certno: res.Output.Baseinfo.Certno, Brdy: res.Output.Baseinfo.Brdy, Gend: res.Output.Baseinfo.Gend, Naty: res.Output.Baseinfo.Naty, PsnCertType: res.Output.Baseinfo.PsnCertType, PsnName: res.Output.Baseinfo.PsnName, Idetinfo: idetinfoStr, Insuinfo: infoStr, UserOrgId: c.GetAdminUserInfo().CurrentOrgId, CardInfo: card_info, VerifyNumber: token, } service.CreateHisPsn(psn) c.ServeSuccessJSON(map[string]interface{}{ "patient": patient, "number": token, }) } } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisFailedException) return } } else { //读卡失败 c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisFailedException) return } } else if miConfig.MdtrtareaAdmvs == "350500" { cardnum, cardCode, id_card_no, name, errmsg := c.GetFjBasBaseInfo() cardnum = DeleteExtraSpaceTwo(cardnum) cardCode = DeleteExtraSpaceTwo(cardCode) id_card_no = DeleteExtraSpaceTwo(id_card_no) name = DeleteExtraSpaceTwo(name) errmsg = DeleteExtraSpaceTwo(errmsg) cardnum = Remove0000(cardnum) cardCode = Remove0000(cardCode) id_card_no = Remove0000(id_card_no) name = Remove0000(name) errmsg = Remove0000(errmsg) basStr := cardnum + "|" + cardCode + "|" + id_card_no + "|" + name result, requestLog, errMsgLog := service.FJyb1101(cardnum, miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, id_card_type, cardCode, certificates, miConfig.Url, miConfig.Cainfo, miConfig.AppSecret, miConfig.SignKey, miConfig.EncKey) saveLog(result, requestLog, "1101", "获取人员信息") fmt.Println(errMsgLog) if len(errMsgLog) > 0 { } else { var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) var res ResultTwo if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.ErrMsg = errMsgLog if res.Infcode == 0 { patient, err := service.GetPatientByNumber(id_card_no, c.GetAdminUserInfo().CurrentOrgId) if err == gorm.ErrRecordNotFound { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException) return } else if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) return } else { fmt.Println(res) Iinfos, _ := json.Marshal(res.Output.Iinfo) Idetinfos, _ := json.Marshal(res.Output.Idetinfo) infoStr := string(Iinfos) idetinfoStr := string(Idetinfos) psn := &models.HisPsn{ PsnNo: res.Output.Baseinfo.PsnNo, Age: res.Output.Baseinfo.Age, PatientId: patient.ID, Certno: res.Output.Baseinfo.Certno, Brdy: res.Output.Baseinfo.Brdy, Gend: res.Output.Baseinfo.Gend, Naty: res.Output.Baseinfo.Naty, PsnCertType: res.Output.Baseinfo.PsnCertType, PsnName: res.Output.Baseinfo.PsnName, Idetinfo: idetinfoStr, Insuinfo: infoStr, UserOrgId: c.GetAdminUserInfo().CurrentOrgId, CardInfo: basStr, VerifyNumber: "", } service.CreateHisPsn(psn) var rf []*ResultFive json.Unmarshal([]byte(infoStr), &rf) var insutypes []*ResultFive var insutype string var is390 int = 0 var is310 int = 0 for _, item := range rf { if (item.Insutype == "390" && item.PsnInsuStas == "1") || (item.Insutype == "310" && item.PsnInsuStas == "1") { insutypes = append(insutypes, item) } } if len(insutypes) == 1 { insutype = insutypes[0].Insutype //insuplc_admdvs = insutypes[0].InsuplcAdmdvs } else { for _, i := range insutypes { if i.Insutype == "390" { is390 = 1 } if i.Insutype == "310" { is310 = 1 } } } if is390 == 1 { insutype = "390" } if is310 == 1 { insutype = "310" } if len(insutypes) == 0 { insutype = "310" } c.ServeSuccessJSON(map[string]interface{}{ "patient": patient, "number": cardnum, "insutype": insutype, }) } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisFailedException) return } } } else if miConfig.MdtrtareaAdmvs == "360399" { fmt.Println(initFlag) fmt.Println("initFlag") if initFlag == 0 { c.TestGetJiangXiBasBaseInit() } basStr := c.GetBasBaseInfo() if len(basStr) == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeReadCardException) return } fmt.Println(basStr) bas := strings.Split(basStr, "|") basNumber := bas[1] fmt.Println(basNumber) card_sn := bas[3] fmt.Println(card_sn) result, _ := service.Jxyb1101(basNumber, miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, id_card_type, card_sn, "1", miConfig.Url, miConfig.AccessKey, "") //result := service.Jxyb1101(basNumber, miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, id_card_type, card_sn, certificates) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) var res ResultTwo if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Infcode == 0 { patient, err := service.GetPatientByNumber(basNumber, c.GetAdminUserInfo().CurrentOrgId) if err == gorm.ErrRecordNotFound { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException) return } else if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) return } else { Iinfos, _ := json.Marshal(res.Output.Iinfo) Idetinfos, _ := json.Marshal(res.Output.Idetinfo) infoStr := string(Iinfos) idetinfoStr := string(Idetinfos) psn := &models.HisPsn{ PsnNo: res.Output.Baseinfo.PsnNo, Age: res.Output.Baseinfo.Age, PatientId: patient.ID, Certno: res.Output.Baseinfo.Certno, Brdy: res.Output.Baseinfo.Brdy, Gend: res.Output.Baseinfo.Gend, Naty: res.Output.Baseinfo.Naty, PsnCertType: res.Output.Baseinfo.PsnCertType, PsnName: res.Output.Baseinfo.PsnName, Idetinfo: idetinfoStr, Insuinfo: infoStr, UserOrgId: c.GetAdminUserInfo().CurrentOrgId, CardInfo: basStr, VerifyNumber: "", } service.CreateHisPsn(psn) var rf []*ResultFive json.Unmarshal([]byte(infoStr), &rf) var insutypes []*ResultFive var insutype string var is390 int = 0 var is310 int = 0 for _, item := range rf { if (item.Insutype == "390" && item.PsnInsuStas == "1") || (item.Insutype == "310" && item.PsnInsuStas == "1") { insutypes = append(insutypes, item) } } if len(insutypes) == 1 { insutype = insutypes[0].Insutype //insuplc_admdvs = insutypes[0].InsuplcAdmdvs } else { for _, i := range insutypes { if i.Insutype == "390" { is390 = 1 } if i.Insutype == "310" { is310 = 1 } } } if is390 == 1 { insutype = "390" } if is310 == 1 { insutype = "310" } if len(insutypes) == 0 { insutype = "310" } c.ServeSuccessJSON(map[string]interface{}{ "patient": patient, "number": basNumber, "insutype": insutype, }) } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisFailedException) return } } else if miConfig.MdtrtareaAdmvs == "430800" { fmt.Println(initFlag) fmt.Println("initFlag") if initFlag == 0 { c.TestGetHnBasBaseInit() } basStr := c.GetBasBaseInfo() if len(basStr) == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeReadCardException) return } fmt.Println(basStr) bas := strings.Split(basStr, "|") basNumber := bas[1] fmt.Println(basNumber) card_sn := bas[3] card_no := bas[2] fmt.Println(card_sn) name := bas[4] name = ConvertToString(name, "gbk", "utf-8") result, _ := service.Hnyb1101(basNumber, miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, id_card_type, card_sn, "1", miConfig.Url, miConfig.AccessKey, "", name, card_no) //result := service.Jxyb1101(basNumber, miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, id_card_type, card_sn, certificates) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) var res ResultTwo if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Infcode == 0 { patient, err := service.GetPatientByNumber(basNumber, c.GetAdminUserInfo().CurrentOrgId) if err == gorm.ErrRecordNotFound { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException) return } else if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) return } else { Iinfos, _ := json.Marshal(res.Output.Iinfo) Idetinfos, _ := json.Marshal(res.Output.Idetinfo) infoStr := string(Iinfos) idetinfoStr := string(Idetinfos) psn := &models.HisPsn{ PsnNo: res.Output.Baseinfo.PsnNo, Age: res.Output.Baseinfo.Age, PatientId: patient.ID, Certno: res.Output.Baseinfo.Certno, Brdy: res.Output.Baseinfo.Brdy, Gend: res.Output.Baseinfo.Gend, Naty: res.Output.Baseinfo.Naty, PsnCertType: res.Output.Baseinfo.PsnCertType, PsnName: res.Output.Baseinfo.PsnName, Idetinfo: idetinfoStr, Insuinfo: infoStr, UserOrgId: c.GetAdminUserInfo().CurrentOrgId, CardInfo: basStr, VerifyNumber: "", } service.CreateHisPsn(psn) var rf []*ResultFive json.Unmarshal([]byte(infoStr), &rf) var insutypes []*ResultFive var insutype string var is390 int = 0 var is310 int = 0 for _, item := range rf { if (item.Insutype == "390" && item.PsnInsuStas == "1") || (item.Insutype == "310" && item.PsnInsuStas == "1") { insutypes = append(insutypes, item) } } if len(insutypes) == 1 { insutype = insutypes[0].Insutype //insuplc_admdvs = insutypes[0].InsuplcAdmdvs } else { for _, i := range insutypes { if i.Insutype == "390" { is390 = 1 } if i.Insutype == "310" { is310 = 1 } } } if is390 == 1 { insutype = "390" } if is310 == 1 { insutype = "310" } if len(insutypes) == 0 { insutype = "310" } c.ServeSuccessJSON(map[string]interface{}{ "patient": patient, "number": basNumber, "insutype": insutype, }) } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisFailedException) return } } else { if initFlag == 0 { c.TestGetBasBaseInit() } basStr := c.GetBasBaseInfo() if len(basStr) == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeReadCardException) return } fmt.Println(basStr) bas := strings.Split(basStr, "|") basNumber := bas[1] fmt.Println(basNumber) card_sn := bas[3] fmt.Println(card_sn) result := service.Gdyb1101B(basNumber, miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, id_card_type, card_sn, certificates) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) var res ResultTwo if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Infcode == 0 { patient, err := service.GetPatientByNumber(basNumber, c.GetAdminUserInfo().CurrentOrgId) if err == gorm.ErrRecordNotFound { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException) return } else if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) return } else { Iinfos, _ := json.Marshal(res.Output.Iinfo) Idetinfos, _ := json.Marshal(res.Output.Idetinfo) infoStr := string(Iinfos) idetinfoStr := string(Idetinfos) psn := &models.HisPsn{ PsnNo: res.Output.Baseinfo.PsnNo, Age: res.Output.Baseinfo.Age, PatientId: patient.ID, Certno: res.Output.Baseinfo.Certno, Brdy: res.Output.Baseinfo.Brdy, Gend: res.Output.Baseinfo.Gend, Naty: res.Output.Baseinfo.Naty, PsnCertType: res.Output.Baseinfo.PsnCertType, PsnName: res.Output.Baseinfo.PsnName, Idetinfo: idetinfoStr, Insuinfo: infoStr, UserOrgId: c.GetAdminUserInfo().CurrentOrgId, CardInfo: basStr, VerifyNumber: "", } service.CreateHisPsn(psn) c.ServeSuccessJSON(map[string]interface{}{ "patient": patient, "number": basNumber, }) } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisFailedException) return } break } case 2: if miConfig.MdtrtareaAdmvs == "430800" { if initFlag == 0 { c.TestGetHnBasBaseInit() } SFZStr := c.GetSFZBaseInfo() if len(SFZStr) == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeReadCardException) return } fmt.Println(SFZStr) id_card_str := strings.Split(SFZStr, "^") card_no := id_card_str[0] patient, _ := service.GetPatientByNumber(card_no, c.GetAdminUserInfo().CurrentOrgId) //name := id_card_str[1] //name = ConvertToString(name, "gbk", "utf-8") result, _ := service.Hnyb1101(card_no, miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, id_card_type, "", "1", miConfig.Url, miConfig.AccessKey, "", patient.Name, card_no) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) var res ResultTwo if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Infcode == 0 { patient, err := service.GetPatientByNumber(card_no, c.GetAdminUserInfo().CurrentOrgId) if err == gorm.ErrRecordNotFound { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException) return } else if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) return } else { Iinfos, _ := json.Marshal(res.Output.Iinfo) Idetinfos, _ := json.Marshal(res.Output.Idetinfo) infoStr := string(Iinfos) idetinfoStr := string(Idetinfos) psn := &models.HisPsn{ PsnNo: res.Output.Baseinfo.PsnNo, Age: res.Output.Baseinfo.Age, PatientId: patient.ID, Certno: res.Output.Baseinfo.Certno, Brdy: res.Output.Baseinfo.Brdy, Gend: res.Output.Baseinfo.Gend, Naty: res.Output.Baseinfo.Naty, PsnCertType: res.Output.Baseinfo.PsnCertType, PsnName: res.Output.Baseinfo.PsnName, Idetinfo: idetinfoStr, Insuinfo: infoStr, UserOrgId: c.GetAdminUserInfo().CurrentOrgId, CardInfo: SFZStr, VerifyNumber: "", } service.CreateHisPsn(psn) var rf []*ResultFive json.Unmarshal([]byte(infoStr), &rf) var insutypes []*ResultFive var insutype string var is390 int = 0 var is310 int = 0 for _, item := range rf { if (item.Insutype == "390" && item.PsnInsuStas == "1") || (item.Insutype == "310" && item.PsnInsuStas == "1") { insutypes = append(insutypes, item) } } if len(insutypes) == 1 { insutype = insutypes[0].Insutype } else { for _, i := range insutypes { if i.Insutype == "390" { is390 = 1 } if i.Insutype == "310" { is310 = 1 } } } if is390 == 1 { insutype = "390" } if is310 == 1 { insutype = "310" } if len(insutypes) == 0 { insutype = "310" } c.ServeSuccessJSON(map[string]interface{}{ "patient": patient, "number": card_no, "insutype": insutype, }) } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisFailedException) return } } else { SFZStr := c.GetSFZBaseInfo() id_card_str := strings.Split(SFZStr, "^") id_card_number := id_card_str[0] card_sn := "" result := service.Gdyb1101B(id_card_number, miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, id_card_type, card_sn, certificates) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) var res ResultTwo if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Infcode == 0 { patient, err := service.GetPatientByNumber(id_card_number, c.GetAdminUserInfo().CurrentOrgId) if err == gorm.ErrRecordNotFound { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException) return } else if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) return } else { c.ServeSuccessJSON(map[string]interface{}{ "patient": patient, "number": id_card_number, }) } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisFailedException) return } } break case 3: if miConfig.MdtrtareaAdmvs == "320921" || miConfig.MdtrtareaAdmvs == "320982" { var api string if miConfig.MdtrtareaAdmvs == "320921" { api = "http://192.168.2.110:9532/" + "jsyb/readcard?" + "fixmedins_code=" + miConfig.Code + "&secret_key=" + miConfig.SecretKey + "&ak=" + miConfig.AccessKey + "&org_name=" + miConfig.OrgName + "&doctor=" + roles.UserName + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&url=" + miConfig.Url + "&cainfo=" + miConfig.Cainfo + "&id_card_type=" + strconv.FormatInt(id_card_type, 10) + "&operator_id=" + strconv.FormatInt(admin_user_id, 10) + "&operator=" + roles.UserName fmt.Println(api) } else { api = "http://192.168.5.251:9532/" + "jsyb/readcard?" + "fixmedins_code=" + miConfig.Code + "&secret_key=" + miConfig.SecretKey + "&ak=" + miConfig.AccessKey + "&org_name=" + miConfig.OrgName + "&doctor=" + roles.UserName + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&url=" + miConfig.Url + "&cainfo=" + miConfig.Cainfo + "&id_card_type=" + strconv.FormatInt(id_card_type, 10) } resp, requestErr := http.Get(api) if requestErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var status string status = respJSON["data"].(map[string]interface{})["status"].(string) card_type := respJSON["data"].(map[string]interface{})["type"].(string) var token string var res ResultTwo //1101结果 var res10265 ResultTwo10265 //1101结果 var card_info string //卡信息 var busi_card_info string //card_info = respJSON["data"].(map[string]interface{})["card_info"].(string) busi_card_info = respJSON["data"].(map[string]interface{})["busi_card_info"].(string) if status == "0" { //读卡成功 if card_type == "1" { respJSON = respJSON["data"].(map[string]interface{})["result"].(map[string]interface{}) result, _ := json.Marshal(respJSON) if err := json.Unmarshal([]byte(result), &res10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.ErrMsg = res10265.ErrMsg infocode, _ := strconv.ParseInt(res10265.Infcode, 10, 64) res.Infcode = infocode res.Output = res10265.Output res.InfRefmsgid = res10265.InfRefmsgid } else { //var card_info string //卡信息 //var busi_card_info string token = respJSON["data"].(map[string]interface{})["token"].(string) //busi_card_info = respJSON["data"].(map[string]interface{})["busi_card_info"].(string) //fmt.Println(card_info) //fmt.Println(busi_card_info) respJSON = respJSON["data"].(map[string]interface{})["result"].(map[string]interface{}) result, _ := json.Marshal(respJSON) if err := json.Unmarshal([]byte(result), &res10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.ErrMsg = res10265.ErrMsg infocode, _ := strconv.ParseInt(res10265.Infcode, 10, 64) res.Infcode = infocode res.Output = res10265.Output res.InfRefmsgid = res10265.InfRefmsgid } if res.Infcode == 0 { patient, err := service.GetPatientByIDCard(res.Output.Baseinfo.Certno, c.GetAdminUserInfo().CurrentOrgId) if err == gorm.ErrRecordNotFound { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException) return } else if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) return } else { if card_type == "1" { bas := strings.Split(card_info, "|") basNumber := bas[2] Iinfos, _ := json.Marshal(res.Output.Iinfo) Idetinfos, _ := json.Marshal(res.Output.Idetinfo) infoStr := string(Iinfos) idetinfoStr := string(Idetinfos) psn := &models.HisPsn{ PsnNo: res.Output.Baseinfo.PsnNo, Age: res.Output.Baseinfo.Age, PatientId: patient.ID, Certno: res.Output.Baseinfo.Certno, Brdy: res.Output.Baseinfo.Brdy, Gend: res.Output.Baseinfo.Gend, Naty: res.Output.Baseinfo.Naty, PsnCertType: res.Output.Baseinfo.PsnCertType, PsnName: res.Output.Baseinfo.PsnName, Idetinfo: idetinfoStr, Insuinfo: infoStr, UserOrgId: c.GetAdminUserInfo().CurrentOrgId, CardInfo: card_info, VerifyNumber: busi_card_info, } service.CreateHisPsn(psn) c.ServeSuccessJSON(map[string]interface{}{ "patient": patient, "number": basNumber, }) } else { Iinfos, _ := json.Marshal(res.Output.Iinfo) Idetinfos, _ := json.Marshal(res.Output.Idetinfo) infoStr := string(Iinfos) idetinfoStr := string(Idetinfos) psn := &models.HisPsn{ PsnNo: res.Output.Baseinfo.PsnNo, Age: res.Output.Baseinfo.Age, PatientId: patient.ID, Certno: res.Output.Baseinfo.Certno, Brdy: res.Output.Baseinfo.Brdy, Gend: res.Output.Baseinfo.Gend, Naty: res.Output.Baseinfo.Naty, PsnCertType: res.Output.Baseinfo.PsnCertType, PsnName: res.Output.Baseinfo.PsnName, Idetinfo: idetinfoStr, Insuinfo: infoStr, UserOrgId: c.GetAdminUserInfo().CurrentOrgId, CardInfo: card_info, VerifyNumber: token, } service.CreateHisPsn(psn) var rf []*ResultFive json.Unmarshal([]byte(infoStr), &rf) var insutypes []*ResultFive var insutype string var is390 int = 0 var is310 int = 0 for _, item := range rf { if (item.Insutype == "390" && item.PsnInsuStas == "1") || (item.Insutype == "310" && item.PsnInsuStas == "1") { insutypes = append(insutypes, item) } } if len(insutypes) == 1 { insutype = insutypes[0].Insutype //insuplc_admdvs = insutypes[0].InsuplcAdmdvs } else { for _, i := range insutypes { if i.Insutype == "390" { is390 = 1 } if i.Insutype == "310" { is310 = 1 } } } if is390 == 1 { insutype = "390" } if is310 == 1 { insutype = "310" } if len(insutypes) == 0 { insutype = "310" } c.ServeSuccessJSON(map[string]interface{}{ "patient": patient, "number": token, "insutype": insutype, }) } } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisFailedException) return } } else { //读卡失败 c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisFailedException) return } } break case 4: if miConfig.MdtrtareaAdmvs == "320921" || miConfig.MdtrtareaAdmvs == "320982" { var api string if miConfig.MdtrtareaAdmvs == "320921" { api = "http://192.168.2.110:9532/" + "jsyb/readcard?" + "fixmedins_code=" + miConfig.Code + "&secret_key=" + miConfig.SecretKey + "&ak=" + miConfig.AccessKey + "&org_name=" + miConfig.OrgName + "&doctor=" + roles.UserName + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&url=" + miConfig.Url + "&cainfo=" + miConfig.Cainfo + "&id_card_type=" + strconv.FormatInt(id_card_type, 10) + "&operator_id=" + strconv.FormatInt(admin_user_id, 10) + "&operator=" + roles.UserName fmt.Println(api) } else { api = "http://192.168.5.251:9532/" + "jsyb/readcard?" + "fixmedins_code=" + miConfig.Code + "&secret_key=" + miConfig.SecretKey + "&ak=" + miConfig.AccessKey + "&org_name=" + miConfig.OrgName + "&doctor=" + roles.UserName + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&url=" + miConfig.Url + "&cainfo=" + miConfig.Cainfo + "&id_card_type=" + strconv.FormatInt(id_card_type, 10) } resp, requestErr := http.Get(api) if requestErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var status string status = respJSON["data"].(map[string]interface{})["status"].(string) //card_type := respJSON["data"].(map[string]interface{})["type"].(string) var token string var res ResultTwo //1101结果 var res10265 ResultTwo10265 //1101结果 if status == "0" { //读卡成功 var card_info string //卡信息 var busi_card_info string token = respJSON["data"].(map[string]interface{})["token"].(string) busi_card_info = respJSON["data"].(map[string]interface{})["busi_card_info"].(string) card_info = respJSON["data"].(map[string]interface{})["card_info"].(string) fmt.Println(card_info) fmt.Println(busi_card_info) respJSON = respJSON["data"].(map[string]interface{})["result"].(map[string]interface{}) result, _ := json.Marshal(respJSON) if err := json.Unmarshal([]byte(result), &res10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.ErrMsg = res10265.ErrMsg infocode, _ := strconv.ParseInt(res10265.Infcode, 10, 64) res.Infcode = infocode res.Output = res10265.Output res.InfRefmsgid = res10265.InfRefmsgid if res.Infcode == 0 { patient, err := service.GetPatientByIDCard(res.Output.Baseinfo.Certno, c.GetAdminUserInfo().CurrentOrgId) if err == gorm.ErrRecordNotFound { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException) return } else if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) return } else { Iinfos, _ := json.Marshal(res.Output.Iinfo) Idetinfos, _ := json.Marshal(res.Output.Idetinfo) infoStr := string(Iinfos) idetinfoStr := string(Idetinfos) psn := &models.HisPsn{ PsnNo: res.Output.Baseinfo.PsnNo, Age: res.Output.Baseinfo.Age, PatientId: patient.ID, Certno: res.Output.Baseinfo.Certno, Brdy: res.Output.Baseinfo.Brdy, Gend: res.Output.Baseinfo.Gend, Naty: res.Output.Baseinfo.Naty, PsnCertType: res.Output.Baseinfo.PsnCertType, PsnName: res.Output.Baseinfo.PsnName, Idetinfo: idetinfoStr, Insuinfo: infoStr, UserOrgId: c.GetAdminUserInfo().CurrentOrgId, CardInfo: card_info, VerifyNumber: token, } var rf []*ResultFive json.Unmarshal([]byte(infoStr), &rf) var insutypes []*ResultFive var insutype string var is390 int = 0 var is310 int = 0 for _, item := range rf { if (item.Insutype == "390" && item.PsnInsuStas == "1") || (item.Insutype == "310" && item.PsnInsuStas == "1") { insutypes = append(insutypes, item) } } if len(insutypes) == 1 { insutype = insutypes[0].Insutype //insuplc_admdvs = insutypes[0].InsuplcAdmdvs } else { for _, i := range insutypes { if i.Insutype == "390" { is390 = 1 } if i.Insutype == "310" { is310 = 1 } } } if is390 == 1 { insutype = "390" } if is310 == 1 { insutype = "310" } if len(insutypes) == 0 { insutype = "310" } service.CreateHisPsn(psn) c.ServeSuccessJSON(map[string]interface{}{ "patient": patient, "number": token, "insutype": insutype, }) } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisFailedException) return } } else { //读卡失败 c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisFailedException) return } } else if miConfig.MdtrtareaAdmvs == "440300" || miConfig.MdtrtareaAdmvs == "440305" { if initFlag == 0 { c.TestGetBasBaseInit() } token := c.GetEleBaseInfo() token = Remove0000(token) result2, requestLog2 := service.Gdyb1101ForEleCert(miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, token, "", "") saveLog(result2, requestLog2, "1101", "获取人员信息") // var res ResultTwo if err := json.Unmarshal([]byte(result2), &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Infcode == 0 { patient, err := service.GetPatientByNumber(res.Output.Baseinfo.Certno, c.GetAdminUserInfo().CurrentOrgId) if err == gorm.ErrRecordNotFound { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException) return } else if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) return } else { Iinfos, _ := json.Marshal(res.Output.Iinfo) Idetinfos, _ := json.Marshal(res.Output.Idetinfo) infoStr := string(Iinfos) idetinfoStr := string(Idetinfos) psn := &models.HisPsn{ PsnNo: res.Output.Baseinfo.PsnNo, Age: res.Output.Baseinfo.Age, PatientId: patient.ID, Certno: res.Output.Baseinfo.Certno, Brdy: res.Output.Baseinfo.Brdy, Gend: res.Output.Baseinfo.Gend, Naty: res.Output.Baseinfo.Naty, PsnCertType: res.Output.Baseinfo.PsnCertType, PsnName: res.Output.Baseinfo.PsnName, Idetinfo: idetinfoStr, Insuinfo: infoStr, UserOrgId: c.GetAdminUserInfo().CurrentOrgId, CardInfo: "", VerifyNumber: token, } service.CreateHisPsn(psn) c.ServeSuccessJSON(map[string]interface{}{ "patient": patient, "number": token, }) } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisFailedException) return } } else if miConfig.MdtrtareaAdmvs == "430800" { if initFlag == 0 { c.TestGetBasBaseInit() } token := c.GetEleBaseInfo() token = Remove0000(token) result2, requestLog2 := service.Hnyb1101ForEleCert(miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, miConfig.Url, miConfig.AccessKey, token, "", "", "") saveLog(result2, requestLog2, "1101", "获取人员信息") // var res ResultTwo if err := json.Unmarshal([]byte(result2), &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Infcode == 0 { patient, err := service.GetPatientByNumber(res.Output.Baseinfo.Certno, c.GetAdminUserInfo().CurrentOrgId) if err == gorm.ErrRecordNotFound { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException) return } else if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) return } else { Iinfos, _ := json.Marshal(res.Output.Iinfo) Idetinfos, _ := json.Marshal(res.Output.Idetinfo) infoStr := string(Iinfos) idetinfoStr := string(Idetinfos) psn := &models.HisPsn{ PsnNo: res.Output.Baseinfo.PsnNo, Age: res.Output.Baseinfo.Age, PatientId: patient.ID, Certno: res.Output.Baseinfo.Certno, Brdy: res.Output.Baseinfo.Brdy, Gend: res.Output.Baseinfo.Gend, Naty: res.Output.Baseinfo.Naty, PsnCertType: res.Output.Baseinfo.PsnCertType, PsnName: res.Output.Baseinfo.PsnName, Idetinfo: idetinfoStr, Insuinfo: infoStr, UserOrgId: c.GetAdminUserInfo().CurrentOrgId, CardInfo: "", VerifyNumber: token, } service.CreateHisPsn(psn) c.ServeSuccessJSON(map[string]interface{}{ "patient": patient, "number": token, }) } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisFailedException) return } } else if miConfig.MdtrtareaAdmvs == "360399" { //if initFlag == 0 { c.TestGetJiangXiBasBaseInit() //} //if initEleFlag == 0 { // GetJxEleBaseInitInfo(c.GetAdminUserInfo().CurrentOrgId) //} json_result := GetJxEleBaseInfo(c.GetAdminUserInfo().CurrentOrgId) type ELeData struct { Data struct { IdNo string `json:"idNo"` IdType string `json:"idType"` UserName string `json:"userName"` EcToken string `json:"ecToken"` InsuOrg string `json:"insuOrg"` Gender string `json:"gender"` Birthday string `json:"birthday"` Nationality string `json:"nationality"` Email string `json:"email"` Extra string `json:"extra"` } `json:"data"` Code int `json:"code"` Message string `json:"message"` } var ele ELeData err := json.Unmarshal([]byte(json_result), &ele) if err != nil { utils.ErrorLog("解析失败:%v", err) } token := ele.Data.EcToken token = Remove0000(token) result2, requestLog2 := service.Jxyb1101ForEleCert(miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, miConfig.Url, miConfig.AccessKey, token, "", ele.Data.IdNo, ele.Data.UserName) saveLog(result2, requestLog2, "1101", "获取人员信息") var res ResultTwo if err := json.Unmarshal([]byte(result2), &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Infcode == 0 { patient, err := service.GetPatientByNumber(res.Output.Baseinfo.Certno, c.GetAdminUserInfo().CurrentOrgId) if err == gorm.ErrRecordNotFound { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException) return } else if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) return } else { Iinfos, _ := json.Marshal(res.Output.Iinfo) Idetinfos, _ := json.Marshal(res.Output.Idetinfo) infoStr := string(Iinfos) idetinfoStr := string(Idetinfos) psn := &models.HisPsn{ PsnNo: res.Output.Baseinfo.PsnNo, Age: res.Output.Baseinfo.Age, PatientId: patient.ID, Certno: res.Output.Baseinfo.Certno, Brdy: res.Output.Baseinfo.Brdy, Gend: res.Output.Baseinfo.Gend, Naty: res.Output.Baseinfo.Naty, PsnCertType: res.Output.Baseinfo.PsnCertType, PsnName: res.Output.Baseinfo.PsnName, Idetinfo: idetinfoStr, Insuinfo: infoStr, UserOrgId: c.GetAdminUserInfo().CurrentOrgId, CardInfo: "", VerifyNumber: token, } service.CreateHisPsn(psn) var rf []*ResultFive json.Unmarshal([]byte(infoStr), &rf) var insutypes []*ResultFive var insutype string var is390 int = 0 var is310 int = 0 for _, item := range rf { if (item.Insutype == "390" && item.PsnInsuStas == "1") || (item.Insutype == "310" && item.PsnInsuStas == "1") { insutypes = append(insutypes, item) } } if len(insutypes) == 1 { insutype = insutypes[0].Insutype //insuplc_admdvs = insutypes[0].InsuplcAdmdvs } else { for _, i := range insutypes { if i.Insutype == "390" { is390 = 1 } if i.Insutype == "310" { is310 = 1 } } } if is390 == 1 { insutype = "390" } if is310 == 1 { insutype = "310" } if len(insutypes) == 0 { insutype = "310" } c.ServeSuccessJSON(map[string]interface{}{ "patient": patient, "number": token, "insutype": insutype, }) } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisFailedException) return } } else if miConfig.MdtrtareaAdmvs == "430800" { //if initFlag == 0 { c.TestGetJiangXiBasBaseInit() //} //if initEleFlag == 0 { // GetJxEleBaseInitInfo(c.GetAdminUserInfo().CurrentOrgId) //} json_result := GetJxEleBaseInfo(c.GetAdminUserInfo().CurrentOrgId) type ELeData struct { Data struct { IdNo string `json:"idNo"` IdType string `json:"idType"` UserName string `json:"userName"` EcToken string `json:"ecToken"` InsuOrg string `json:"insuOrg"` Gender string `json:"gender"` Birthday string `json:"birthday"` Nationality string `json:"nationality"` Email string `json:"email"` Extra string `json:"extra"` } `json:"data"` Code int `json:"code"` Message string `json:"message"` } var ele ELeData err := json.Unmarshal([]byte(json_result), &ele) if err != nil { utils.ErrorLog("解析失败:%v", err) } token := ele.Data.EcToken token = Remove0000(token) result2, requestLog2 := service.Hnyb1101ForEleCert(miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, miConfig.Url, miConfig.AccessKey, token, "", ele.Data.IdNo, ele.Data.UserName) saveLog(result2, requestLog2, "1101", "获取人员信息") var res ResultTwo if err := json.Unmarshal([]byte(result2), &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Infcode == 0 { patient, err := service.GetPatientByNumber(res.Output.Baseinfo.Certno, c.GetAdminUserInfo().CurrentOrgId) if err == gorm.ErrRecordNotFound { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException) return } else if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) return } else { Iinfos, _ := json.Marshal(res.Output.Iinfo) Idetinfos, _ := json.Marshal(res.Output.Idetinfo) infoStr := string(Iinfos) idetinfoStr := string(Idetinfos) psn := &models.HisPsn{ PsnNo: res.Output.Baseinfo.PsnNo, Age: res.Output.Baseinfo.Age, PatientId: patient.ID, Certno: res.Output.Baseinfo.Certno, Brdy: res.Output.Baseinfo.Brdy, Gend: res.Output.Baseinfo.Gend, Naty: res.Output.Baseinfo.Naty, PsnCertType: res.Output.Baseinfo.PsnCertType, PsnName: res.Output.Baseinfo.PsnName, Idetinfo: idetinfoStr, Insuinfo: infoStr, UserOrgId: c.GetAdminUserInfo().CurrentOrgId, CardInfo: "", VerifyNumber: token, } service.CreateHisPsn(psn) var rf []*ResultFive json.Unmarshal([]byte(infoStr), &rf) var insutypes []*ResultFive var insutype string var is390 int = 0 var is310 int = 0 for _, item := range rf { if (item.Insutype == "390" && item.PsnInsuStas == "1") || (item.Insutype == "310" && item.PsnInsuStas == "1") { insutypes = append(insutypes, item) } } if len(insutypes) == 1 { insutype = insutypes[0].Insutype //insuplc_admdvs = insutypes[0].InsuplcAdmdvs } else { for _, i := range insutypes { if i.Insutype == "390" { is390 = 1 } if i.Insutype == "310" { is310 = 1 } } } if is390 == 1 { insutype = "390" } if is310 == 1 { insutype = "310" } if len(insutypes) == 0 { insutype = "310" } c.ServeSuccessJSON(map[string]interface{}{ "patient": patient, "number": token, "insutype": insutype, }) } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisFailedException) return } } else if miConfig.MdtrtareaAdmvs == "350500" { type ELeData struct { Code string `json:"code"` Data struct { Aac002 string `json:"aac002"` Aaz500 string `json:"aaz500"` ActCardNo string `json:"actCardNo"` Bab520 string `json:"bab520"` Bkz543 string `json:"bkz543"` BusinessType string `json:"businessType"` CertfCodg string `json:"certfCodg"` EcIndexNo string `json:"ecIndexNo"` EcToken string `json:"ecToken"` ID0000 string `json:"id0000"` IDNo string `json:"idNo"` IDType string `json:"idType"` Idcode string `json:"idcode"` IdentityToken string `json:"identity_token"` InsuOrg string `json:"insuOrg"` OfficeID string `json:"officeId"` OfficeName string `json:"officeName"` OperatorID string `json:"operatorId"` OperatorName string `json:"operatorName"` OrgID string `json:"orgId"` UserName string `json:"userName"` } `json:"data"` Infno interface{} `json:"infno"` Message string `json:"message"` OrgID string `json:"orgId"` TransType string `json:"transType"` } inputInfo, outPutInfo, _ := service.ReadEleCard(miConfig.Code) outPutInfo = Remove0000(outPutInfo) if len(outPutInfo) > 0 { var ele ELeData err := json.Unmarshal([]byte(outPutInfo), &ele) if err != nil { utils.ErrorLog("解析失败:%v", err) } token := ele.Data.EcToken fmt.Println(inputInfo) fmt.Println(outPutInfo) result, requestLog, errMsgLog := service.FJyb1101ForEleToken(ele.Data.IDNo, miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, id_card_type, "", 1, miConfig.Url, miConfig.Cainfo, miConfig.AppSecret, miConfig.SignKey, miConfig.EncKey, token, ele.Data.UserName) saveLog(result, requestLog, "1101", "获取人员信息") var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) var res ResultTwo if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.ErrMsg = errMsgLog if res.Infcode == 0 { patient, err := service.GetPatientByNumber(ele.Data.IDNo, c.GetAdminUserInfo().CurrentOrgId) if err == gorm.ErrRecordNotFound { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException) return } else if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) return } else { fmt.Println(res) Iinfos, _ := json.Marshal(res.Output.Iinfo) Idetinfos, _ := json.Marshal(res.Output.Idetinfo) infoStr := string(Iinfos) idetinfoStr := string(Idetinfos) psn := &models.HisPsn{ PsnNo: res.Output.Baseinfo.PsnNo, Age: res.Output.Baseinfo.Age, PatientId: patient.ID, Certno: res.Output.Baseinfo.Certno, Brdy: res.Output.Baseinfo.Brdy, Gend: res.Output.Baseinfo.Gend, Naty: res.Output.Baseinfo.Naty, PsnCertType: res.Output.Baseinfo.PsnCertType, PsnName: res.Output.Baseinfo.PsnName, Idetinfo: idetinfoStr, Insuinfo: infoStr, UserOrgId: c.GetAdminUserInfo().CurrentOrgId, CardInfo: outPutInfo, VerifyNumber: token, } service.CreateHisPsn(psn) var rf []*ResultFive json.Unmarshal([]byte(infoStr), &rf) var insutypes []*ResultFive var insutype string var is390 int = 0 var is310 int = 0 for _, item := range rf { if (item.Insutype == "390" && item.PsnInsuStas == "1") || (item.Insutype == "310" && item.PsnInsuStas == "1") { insutypes = append(insutypes, item) } } if len(insutypes) == 1 { insutype = insutypes[0].Insutype //insuplc_admdvs = insutypes[0].InsuplcAdmdvs } else { for _, i := range insutypes { if i.Insutype == "390" { is390 = 1 } if i.Insutype == "310" { is310 = 1 } } } if is390 == 1 { insutype = "390" } if is310 == 1 { insutype = "310" } if len(insutypes) == 0 { insutype = "310" } c.ServeSuccessJSON(map[string]interface{}{ "patient": patient, "number": token, "insutype": insutype, }) } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisFailedException) return } } } break } } var initFlag int64 = 0 var initEleFlag int64 = 0 func (c *HisApiController) TestGetBasBaseInit() { DllDef := syscall.MustLoadDLL("SSCard.dll") Iinit := DllDef.MustFindProc("Init") miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId) ret, _, err := Iinit.Call(StrPtr("http://igb.hsa.gdgov.cn/gdyb_api/prd/api/card/initDll"), StrPtr(miConfig.InsuplcAdmdvs)) if ret != 0 { fmt.Println("SSCard的报错原因:", err) fmt.Println("SSCard的运算结果为:", ret) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeReadCardException) return } result := int(ret) fmt.Println("SSCard的运算结果为1:", result) initFlag = 1 return } func (c *HisApiController) HandleJiangXiReadCard() { fmt.Println("~~~~~~") miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId) admin_user_id, _ := c.GetInt64("admin_user_id") id_card_type, _ := c.GetInt64("id_card_type") //certificates, _ := c.GetInt64("certificates") roles, _ := service.GetAdminUserInfoByID(c.GetAdminUserInfo().CurrentOrgId, admin_user_id) if initFlag == 0 { c.TestGetJiangXiBasBaseInit() } basStr := c.GetBasBaseInfo() if len(basStr) == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeReadCardException) return } fmt.Println(basStr) bas := strings.Split(basStr, "|") basNumber := bas[1] fmt.Println(basNumber) card_sn := bas[3] fmt.Println(card_sn) result, _ := service.Jxyb1101(basNumber, miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, id_card_type, card_sn, "1", miConfig.Url, miConfig.AccessKey, "") //result := service.Jxyb1101(basNumber, miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, id_card_type, card_sn, certificates) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) var res ResultTwo if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Infcode == 0 { patient, err := service.GetPatientByNumber(basNumber, c.GetAdminUserInfo().CurrentOrgId) if err == gorm.ErrRecordNotFound { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException) return } else if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) return } else { Iinfos, _ := json.Marshal(res.Output.Iinfo) Idetinfos, _ := json.Marshal(res.Output.Idetinfo) infoStr := string(Iinfos) idetinfoStr := string(Idetinfos) psn := &models.HisPsn{ PsnNo: res.Output.Baseinfo.PsnNo, Age: res.Output.Baseinfo.Age, PatientId: patient.ID, Certno: res.Output.Baseinfo.Certno, Brdy: res.Output.Baseinfo.Brdy, Gend: res.Output.Baseinfo.Gend, Naty: res.Output.Baseinfo.Naty, PsnCertType: res.Output.Baseinfo.PsnCertType, PsnName: res.Output.Baseinfo.PsnName, Idetinfo: idetinfoStr, Insuinfo: infoStr, UserOrgId: c.GetAdminUserInfo().CurrentOrgId, CardInfo: basStr, VerifyNumber: "", } service.CreateHisPsn(psn) c.ServeSuccessJSON(map[string]interface{}{ "patient": patient, "number": basNumber, }) } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisFailedException) return } } func (c *HisApiController) TestGetHnBasBaseInit() { DllDef := syscall.MustLoadDLL("SSCard.dll") Iinit := DllDef.MustFindProc("Init") //miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId) //http://10.77.211.236/CSB/hsa-fsi-1303 ret, _, err := Iinit.Call(StrPtr("http://10.93.32.89:20001/hsa-hgs-adapt/api/card/initDll"), StrPtr("430100|10.93.32.89:20001")) if ret != 0 { fmt.Println("SSCard的报错原因:", err) fmt.Println("SSCard的运算结果为:", ret) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeReadCardException) return } result := int(ret) fmt.Println("SSCard的运算结果为1:", result) initFlag = 1 return } func (c *HisApiController) TestGetJiangXiBasBaseInit() { DllDef := syscall.MustLoadDLL("SSCard.dll") Iinit := DllDef.MustFindProc("Init") //miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId) //http://10.77.211.236/CSB/hsa-fsi-1303 ret, _, err := Iinit.Call(StrPtr("http://10.77.224.18:9001/1.0.0/agent-card-init"), StrPtr("360399")) if ret != 0 { fmt.Println("SSCard的报错原因:", err) fmt.Println("SSCard的运算结果为:", ret) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeReadCardException) return } result := int(ret) fmt.Println("SSCard的运算结果为1:", result) initFlag = 1 return } func (c *HisApiController) GetSFZBaseInfo() string { DllDef := syscall.MustLoadDLL("SSCard.dll") readCard := DllDef.MustFindProc("ReadSFZ") if readCard == nil { fmt.Println("readcard is nil") readCard = DllDef.MustFindProc("ReadSFZ") } str := make([]byte, 8096) str1 := make([]byte, 8096) r, _, _ := readCard.Call((uintptr)(unsafe.Pointer(&str[0])), IntPtr(8096), (uintptr)(unsafe.Pointer(&str1[0])), IntPtr(8096)) fmt.Println(r) return Remove0000(string(str)) } func (c *HisApiController) GetEleBaseInfo() string { DllDef := syscall.MustLoadDLL("SSCard.dll") readCard := DllDef.MustFindProc("GetQRBase") fmt.Println(readCard) if readCard == nil { fmt.Println("readcard is nil") readCard = DllDef.MustFindProc("GetQRBase") } str := make([]byte, 1024) str1 := make([]byte, 1024) ret2, _, _ := readCard.Call(uintptr(180), (uintptr)(unsafe.Pointer(&str[0])), uintptr(1024), (uintptr)(unsafe.Pointer(&str1[0])), uintptr(1024)) fmt.Println(ret2) fmt.Println(string(str1)) fmt.Println(string(str)) fmt.Println(":", ConvertToString(string(str1), "gbk", "utf-8")) fmt.Println(":", ConvertToString(string(str), "gbk", "utf-8")) if ret2 != 0 { return "" } return string(str) } func GetJxEleBaseInfo(org_id int64) string { DllDef := syscall.MustLoadDLL("SSCard.dll") readCard := DllDef.MustFindProc("NationEcTrans") miConfig, _ := service.FindMedicalInsuranceInfo(org_id) if readCard == nil { fmt.Println("readcard is nil") readCard = DllDef.MustFindProc("NationEcTrans") } str1 := make([]byte, 1024) data := make(map[string]interface{}) inputData := make(map[string]interface{}) inputData["orgId"] = miConfig.Code inputData["businessType"] = "01101" inputData["operatorId"] = "test001" inputData["operatorName"] = "cn" inputData["officeId"] = "32760" inputData["officeName"] = "waike" inputData["deviceType"] = "" data["data"] = inputData data["transType"] = "ec.query" data["extra "] = "" data["orgId"] = miConfig.Code bytesData, _ := json.Marshal(data) //bytesData, _ := json.Marshal(data) //bytesData = []byte(ConvertToString(string(bytesData), "utf-8", "gbk")) ret2, _, _ := readCard.Call(StrPtr("http://10.77.224.18:9001/1.0.0/localQrCodeQuery"), (uintptr)(unsafe.Pointer(&bytesData[0])), (uintptr)(unsafe.Pointer(&str1[0]))) fmt.Println(ret2) fmt.Println(string(str1)) fmt.Println(":", ConvertToString(string(str1), "gbk", "utf-8")) if ret2 != 0 { return "" } return Remove0000(ConvertToString(string(str1), "gbk", "utf-8")) } func GetJxEleBaseInitInfo(org_id int64) string { DllDef := syscall.MustLoadDLL("SSCard.dll") readCard := DllDef.MustFindProc("NationEcTrans") miConfig, _ := service.FindMedicalInsuranceInfo(org_id) if readCard == nil { fmt.Println("readcard is nil") readCard = DllDef.MustFindProc("NationEcTrans") } str1 := make([]byte, 2048) data := make(map[string]interface{}) inputData := make(map[string]interface{}) inputData["orgId"] = miConfig.Code inputData["businessType"] = "01101" inputData["operatorId"] = "1" inputData["operatorName"] = "huangchuang" inputData["officeId"] = "101" inputData["officeName"] = "xuetou" inputData["deviceType"] = "" data["data"] = inputData data["transType"] = "ec.query" data["orgId"] = miConfig.Code bytesData, _ := json.Marshal(data) bytesData = []byte(ConvertToString(string(bytesData), "utf-8", "gbk")) ret2, _, _ := readCard.Call(StrPtr("http://10.77.224.18:9001/1.0.0/getEncDynamicKey"), (uintptr)(unsafe.Pointer(&bytesData[0])), (uintptr)(unsafe.Pointer(&str1[0]))) fmt.Println("http://10.77.224.18:9001/1.0.0/getEncDynamicKey") fmt.Println(ret2) fmt.Println(string(str1)) fmt.Println(":", ConvertToString(string(str1), "gbk", "utf-8")) if ret2 != 0 { return "" } if len(Remove0000(ConvertToString(string(str1), "gbk", "utf-8"))) > 0 { initEleFlag = 1 } return Remove0000(ConvertToString(string(str1), "gbk", "utf-8")) } func (c *HisApiController) GetBasBaseInfo() string { DllDef := syscall.MustLoadDLL("SSCard.dll") readCard := DllDef.MustFindProc("ReadCardBas") if readCard == nil { fmt.Println("readcard is nil") readCard = DllDef.MustFindProc("ReadCardBas") } str := make([]byte, 1024) str1 := make([]byte, 1024) ret2, _, _ := readCard.Call((uintptr)(unsafe.Pointer(&str[0])), uintptr(1024), (uintptr)(unsafe.Pointer(&str1[0])), uintptr(1024)) fmt.Println(string(str1)) fmt.Println(string(str)) fmt.Println(":", ConvertToString(string(str1), "gbk", "utf-8")) fmt.Println(":", ConvertToString(string(str), "gbk", "utf-8")) if ret2 != 0 { return "" } return string(str) } func (c *HisApiController) GetFjBasBaseInfo() (string, string, string, string, string) { DllDef := syscall.MustLoadDLL("chs_fjs_standard.dll") readCard := DllDef.MustFindProc("read_cardinfo") if readCard == nil { fmt.Println("readcard is nil") readCard = DllDef.MustFindProc("read_cardinfo") } str := make([]byte, 1024) //卡号 str1 := make([]byte, 1024) //卡识别码 str2 := make([]byte, 1024) //身份证号 str3 := make([]byte, 1024) //姓名 str4 := make([]byte, 1024) //错误信息 ret2, _, _ := readCard.Call((uintptr)(unsafe.Pointer(&str[0])), (uintptr)(unsafe.Pointer(&str1[0])), (uintptr)(unsafe.Pointer(&str2[0])), (uintptr)(unsafe.Pointer(&str3[0])), (uintptr)(unsafe.Pointer(&str4[0]))) fmt.Println(string(str1)) fmt.Println(string(str)) fmt.Println(string(str2)) fmt.Println(string(str3)) fmt.Println(string(str4)) fmt.Println(":", ConvertToString(string(str1), "gbk", "utf-8")) fmt.Println(":", ConvertToString(string(str), "gbk", "utf-8")) fmt.Println(":", ConvertToString(string(str2), "gbk", "utf-8")) fmt.Println(":", ConvertToString(string(str3), "gbk", "utf-8")) fmt.Println(":", ConvertToString(string(str4), "gbk", "utf-8")) if ret2 != 0 { return "", "", "", "", "" } return string(str), string(str1), string(str2), string(str3), string(str4) } type CustomFundPay struct { FundPayType string `json:"fund_pay_type"` FundPayamt float64 `json:"fund_payamt"` } func (c *HisApiController) GetSettleList() { order_id, _ := c.GetInt64("order_id") admin_user_id, _ := c.GetInt64("admin_user_id") order, _ := service.GetHisOrderByIDTwo(order_id) roles, _ := service.GetDoctorListTwo(c.GetAdminUserInfo().CurrentOrgId) his, _ := service.GetHisPatientByNumber(order.MdtrtId) admin, _ := service.GetAdminUserByUserID(roles[0].AdminUserId) curRoles, _ := service.GetAdminUserInfoByID(c.GetAdminUserInfo().CurrentOrgId, admin_user_id) depart, _ := service.GetDepartMentDetail(curRoles.DepartmentId) miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId) if order.ID == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisOrderNoExistParamWrong) return } last_order, _ := service.GetLastHisOrder(c.GetAdminUserInfo().CurrentOrgId) max_order, _ := service.GetLastHisOrderTwo(c.GetAdminUserInfo().CurrentOrgId) count, _ := strconv.ParseInt(max_order.FaPiaoNumber, 10, 64) fmt.Println(count) var zero string number := count + 1 if number >= 1000 { zero = "0000" + strconv.FormatInt(number, 10) } else if number >= 10000 { zero = "000" + strconv.FormatInt(number, 10) } else if number >= 100000 { zero = "00" + strconv.FormatInt(number, 10) } else if number >= 1000000 { zero = "0" + strconv.FormatInt(number, 10) } else { zero = strconv.FormatInt(number, 10) } fmt.Println(zero) struct4101 := service.Struct4101{ PsnNo: order.PsnNo, MdtrtId: order.MdtrtId, SetlId: order.SetlId, PsnName: order.PsnName, Gend: order.Gend, Brdy: his.Brdy, Age: his.Age, Naty: order.Naty, PatnCertType: "01", Certno: order.Certno, Prfs: "90", ConerName: roles[0].UserName, PatnRlts: "99", ConerAddr: miConfig.OrgName, ConerTel: admin.Mobile, HiType: order.Insutype, Insuplc: miConfig.InsuplcAdmdvs, MaindiagFlag: "1", BillCode: order.SetlId, BillNo: order.SetlId, BizSn: order.Number, PsnSelfPay: order.PsnPartAmt, PsnOwnPay: order.PsnPartAmt, AcctPay: order.AcctPay, PsnCashpay: order.PsnCashPay, HiPaymtd: "1", Hsorg: miConfig.InsuplcAdmdvs, HsorgOpter: miConfig.InsuplcAdmdvs, MedinsFillPsn: curRoles.UserName, MedinsFillDept: depart.Name, IptMedType: "2", } struct4101.SetlBegnDate = order.SetlTime struct4101.SetlEndDate = order.SetlTime time_arr := strings.Split(order.SetlTime, " ") struct4101.AdmTime = time_arr[0] struct4101.AdmEndTime = time_arr[0] var rf []CustomFundPay json.Unmarshal([]byte(order.SetlDetail), &rf) var tempFunPays []service.CustomStruct for _, item := range rf { var tempFunPay service.CustomStruct tempFunPay.FundPayamt = item.FundPayamt tempFunPay.FundPayType = item.FundPayType tempFunPays = append(tempFunPays, tempFunPay) } struct4101.CustomStruct = tempFunPays var tempDiaginfos []service.DiaginfoStructTwo var tempOpspdiseinfo2 service.OpspdiseinfoStruct var tempOpspdiseinfos []service.OpspdiseinfoStruct diagnosis_ids := strings.Split(his.Diagnosis, ",") var config []*models.HisXtDiagnoseConfig for _, item := range diagnosis_ids { id, _ := strconv.ParseInt(item, 10, 64) diagnosisConfig, _ := service.FindDiagnoseById(id) config = append(config, &diagnosisConfig) } for index, item := range config { if index == 0 { var tempDiaginfo service.DiaginfoStructTwo tempDiaginfo.DiagCode = item.CountryCode tempDiaginfo.DiagName = item.CountryContentName tempDiaginfo.DiagType = "1" tempDiaginfo.MaindiagFlag = "1" tempDiaginfos = append(tempDiaginfos, tempDiaginfo) } else { var tempDiaginfo service.DiaginfoStructTwo tempDiaginfo.DiagCode = item.CountryCode tempDiaginfo.DiagName = item.CountryContentName tempDiaginfo.DiagType = "2" tempDiaginfo.MaindiagFlag = "0" tempDiaginfos = append(tempDiaginfos, tempDiaginfo) } } struct4101.Diseinfo = tempDiaginfos sickConfigTwo, _ := service.FindSickById(his.SickType) tempOpspdiseinfo2.DiagCode = sickConfigTwo.ContentCode tempOpspdiseinfo2.DiagName = sickConfigTwo.CountryContentName tempOpspdiseinfo2.OprnOprtCode = sickConfigTwo.ContentCode tempOpspdiseinfo2.OprnOprtName = sickConfigTwo.CountryContentName tempOpspdiseinfos = append(tempOpspdiseinfos, tempOpspdiseinfo2) struct4101.OpspdiseinfoStruct = tempOpspdiseinfos var iteminfo service.IteminfoStruct var bedCostTotal float64 = 0 //床位总费 var bedCostSelfTotal float64 = 0 //床位自费 var bedCostPartSelfTotal float64 = 0 //床位部分项目自费 var operationCostTotal float64 = 0 //手术费 var operationCostSelfTotal float64 = 0 //手术费 var operationCostPartSelfTotal float64 = 0 //手术费 var otherCostTotal float64 = 0 //其他费用 var otherCostSelfTotal float64 = 0 //其他费用 var otherCostPartSelfTotal float64 = 0 //其他费用 var materialCostTotal float64 = 0 //材料费 var materialCostSelfTotal float64 = 0 //材料费 var materialCostPartSelfTotal float64 = 0 //材料费 var westernMedicineCostTotal float64 = 0 //西药费 var westernMedicineCostSelfTotal float64 = 0 //西药费 var westernMedicineCostPartSelfTotal float64 = 0 //西药费 var chineseTraditionalMedicineCostTotal float64 = 0 //中成药 var chineseTraditionalMedicineCostSelfTotal float64 = 0 //中成药 var chineseTraditionalMedicineCostPartSelfTotal float64 = 0 //中成药 var checkCostTotal float64 = 0 //检查费 var checkCostSelfTotal float64 = 0 //检查费 var checkCostPartSelfTotal float64 = 0 //检查费 var laboratoryCostTotal float64 = 0 //化验费 var laboratoryCostSelfTotal float64 = 0 //化验费 var laboratoryCostPartSelfTotal float64 = 0 //化验费 var treatCostTotal float64 = 0 //治疗费用 var treatCostSelfTotal float64 = 0 //治疗费用 var treatCostPartSelfTotal float64 = 0 //治疗费用 decimal.DivisionPrecision = 2 var bed_fulamt_ownpay_amt float64 = 0 var operation_fulamt_ownpay_amt float64 = 0 var other_fulamt_ownpay_amt float64 = 0 var westernMedicine_fulamt_ownpay_amt float64 = 0 var chineseTraditional_fulamt_ownpay_amt float64 = 0 var check_fulamt_ownpay_amt float64 = 0 var material_fulamt_ownpay_amt float64 = 0 var laboratory_fulamt_ownpay_amt float64 = 0 var treat_fulamt_ownpay_amt float64 = 0 var bed_claa_sunmfee float64 = 0 var bed_clab_amt float64 = 0 var bed_other_amt float64 = 0 var operation_claa_sunmfee float64 = 0 var operation_clab_amt float64 = 0 var operation_other_amt float64 = 0 var other_claa_sunmfee float64 = 0 var other_clab_amt float64 = 0 var other_other_amt float64 = 0 var westernMedicine_claa_sunmfee float64 = 0 var westernMedicine_clab_amt float64 = 0 var westernMedicine_other_amt float64 = 0 var chineseTraditional_claa_sunmfee float64 = 0 var chineseTraditional_clab_amt float64 = 0 var chineseTraditional_other_amt float64 = 0 var check_claa_sunmfee float64 = 0 var check_clab_amt float64 = 0 var check_other_amt float64 = 0 var material_claa_sunmfee float64 = 0 var material_clab_amt float64 = 0 var material_other_amt float64 = 0 var laboratory_claa_sunmfee float64 = 0 var laboratory_clab_amt float64 = 0 var laboratory_other_amt float64 = 0 var treat_claa_sunmfee float64 = 0 var treat_clab_amt float64 = 0 var treat_other_amt float64 = 0 for _, item := range order.HisOrderInfo { if item.MedChrgitmType == "01" { //床位费 bedCostTotal, _ = decimal.NewFromFloat(bedCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() bedCostSelfTotal, _ = decimal.NewFromFloat(bedCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() bedCostPartSelfTotal, _ = decimal.NewFromFloat(bedCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() bed_fulamt_ownpay_amt, _ = decimal.NewFromFloat(bed_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { bed_claa_sunmfee, _ = decimal.NewFromFloat(bed_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { bed_clab_amt, _ = decimal.NewFromFloat(bed_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { bed_other_amt, _ = decimal.NewFromFloat(bed_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "03" { //检查费 checkCostTotal, _ = decimal.NewFromFloat(checkCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() checkCostSelfTotal, _ = decimal.NewFromFloat(checkCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() checkCostPartSelfTotal, _ = decimal.NewFromFloat(checkCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() check_fulamt_ownpay_amt, _ = decimal.NewFromFloat(check_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { check_claa_sunmfee, _ = decimal.NewFromFloat(check_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { check_clab_amt, _ = decimal.NewFromFloat(check_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { check_other_amt, _ = decimal.NewFromFloat(check_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "04" { //化验费 laboratoryCostTotal, _ = decimal.NewFromFloat(laboratoryCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() laboratoryCostSelfTotal, _ = decimal.NewFromFloat(laboratoryCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() laboratoryCostPartSelfTotal, _ = decimal.NewFromFloat(laboratoryCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() laboratory_fulamt_ownpay_amt, _ = decimal.NewFromFloat(laboratory_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { laboratory_claa_sunmfee, _ = decimal.NewFromFloat(laboratory_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { laboratory_clab_amt, _ = decimal.NewFromFloat(laboratory_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { laboratory_other_amt, _ = decimal.NewFromFloat(laboratory_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "05" { //治疗费 treatCostTotal, _ = decimal.NewFromFloat(treatCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() treatCostSelfTotal, _ = decimal.NewFromFloat(treatCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() treatCostPartSelfTotal, _ = decimal.NewFromFloat(treatCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() treat_fulamt_ownpay_amt, _ = decimal.NewFromFloat(treat_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { treat_claa_sunmfee, _ = decimal.NewFromFloat(treat_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { treat_clab_amt, _ = decimal.NewFromFloat(treat_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { treat_other_amt, _ = decimal.NewFromFloat(treat_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "06" { //手术费 operationCostTotal, _ = decimal.NewFromFloat(operationCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() operationCostSelfTotal, _ = decimal.NewFromFloat(operationCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() operationCostPartSelfTotal, _ = decimal.NewFromFloat(operationCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() operation_fulamt_ownpay_amt, _ = decimal.NewFromFloat(operation_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { operation_claa_sunmfee, _ = decimal.NewFromFloat(operation_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { operation_clab_amt, _ = decimal.NewFromFloat(operation_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { operation_other_amt, _ = decimal.NewFromFloat(operation_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "08" { //材料费 materialCostTotal, _ = decimal.NewFromFloat(materialCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() materialCostSelfTotal, _ = decimal.NewFromFloat(materialCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() materialCostPartSelfTotal, _ = decimal.NewFromFloat(materialCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() material_fulamt_ownpay_amt, _ = decimal.NewFromFloat(material_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { material_claa_sunmfee, _ = decimal.NewFromFloat(material_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { material_clab_amt, _ = decimal.NewFromFloat(material_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { material_other_amt, _ = decimal.NewFromFloat(material_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "09" { //西药费 westernMedicineCostTotal, _ = decimal.NewFromFloat(westernMedicineCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() westernMedicineCostSelfTotal, _ = decimal.NewFromFloat(westernMedicineCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() westernMedicineCostPartSelfTotal, _ = decimal.NewFromFloat(westernMedicineCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() westernMedicine_fulamt_ownpay_amt, _ = decimal.NewFromFloat(westernMedicine_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { westernMedicine_claa_sunmfee, _ = decimal.NewFromFloat(westernMedicine_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { westernMedicine_clab_amt, _ = decimal.NewFromFloat(westernMedicine_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { westernMedicine_other_amt, _ = decimal.NewFromFloat(westernMedicine_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "11" { //中成费 chineseTraditionalMedicineCostTotal, _ = decimal.NewFromFloat(chineseTraditionalMedicineCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() chineseTraditionalMedicineCostSelfTotal, _ = decimal.NewFromFloat(chineseTraditionalMedicineCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() chineseTraditionalMedicineCostPartSelfTotal, _ = decimal.NewFromFloat(chineseTraditionalMedicineCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() chineseTraditional_fulamt_ownpay_amt, _ = decimal.NewFromFloat(chineseTraditional_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { chineseTraditional_claa_sunmfee, _ = decimal.NewFromFloat(chineseTraditional_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { chineseTraditional_clab_amt, _ = decimal.NewFromFloat(chineseTraditional_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { chineseTraditional_other_amt, _ = decimal.NewFromFloat(chineseTraditional_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "14" { //其他费 otherCostTotal, _ = decimal.NewFromFloat(otherCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() otherCostSelfTotal, _ = decimal.NewFromFloat(otherCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() otherCostPartSelfTotal, _ = decimal.NewFromFloat(otherCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() other_fulamt_ownpay_amt, _ = decimal.NewFromFloat(other_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { other_claa_sunmfee, _ = decimal.NewFromFloat(other_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { other_clab_amt, _ = decimal.NewFromFloat(other_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { other_other_amt, _ = decimal.NewFromFloat(other_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } } var iteminfoStructs []service.IteminfoStruct if bedCostTotal != 0 { iteminfo.MedChrgitm = "01" iteminfo.FulamtOwnpayAmt = bed_fulamt_ownpay_amt iteminfo.Amt = bedCostTotal iteminfo.ClaaSumfee = bed_claa_sunmfee iteminfo.ClabAmt = bed_clab_amt iteminfo.OthAmt = bed_other_amt iteminfoStructs = append(iteminfoStructs, iteminfo) } if checkCostTotal != 0 { iteminfo.MedChrgitm = "03" iteminfo.FulamtOwnpayAmt = check_fulamt_ownpay_amt iteminfo.Amt = checkCostTotal iteminfo.ClaaSumfee = check_claa_sunmfee iteminfo.ClabAmt = check_clab_amt iteminfo.OthAmt = check_other_amt iteminfoStructs = append(iteminfoStructs, iteminfo) } if laboratoryCostTotal != 0 { iteminfo.MedChrgitm = "04" iteminfo.FulamtOwnpayAmt = laboratory_fulamt_ownpay_amt iteminfo.Amt = laboratoryCostTotal iteminfo.ClaaSumfee = laboratory_claa_sunmfee iteminfo.ClabAmt = laboratory_clab_amt iteminfo.OthAmt = laboratory_other_amt iteminfoStructs = append(iteminfoStructs, iteminfo) //struct4101.IteminfoStruct = append(struct4101.IteminfoStruct, iteminfo) } if treatCostTotal != 0 { iteminfo.MedChrgitm = "05" iteminfo.FulamtOwnpayAmt = treat_fulamt_ownpay_amt iteminfo.Amt = treatCostTotal iteminfo.ClaaSumfee = treat_claa_sunmfee iteminfo.ClabAmt = treat_clab_amt iteminfo.OthAmt = treat_other_amt iteminfoStructs = append(iteminfoStructs, iteminfo) //(struct4101.IteminfoStruct, iteminfo) //struct4101.IteminfoStruct = append(struct4101.IteminfoStruct, iteminfo) } if operationCostTotal != 0 { iteminfo.MedChrgitm = "06" iteminfo.FulamtOwnpayAmt = bed_fulamt_ownpay_amt iteminfo.Amt = operationCostTotal iteminfo.ClaaSumfee = operation_claa_sunmfee iteminfo.ClabAmt = operation_clab_amt iteminfo.OthAmt = operation_other_amt //struct4101.IteminfoStruct = append(struct4101.IteminfoStruct, iteminfo) iteminfoStructs = append(iteminfoStructs, iteminfo) } if materialCostTotal != 0 { iteminfo.MedChrgitm = "08" iteminfo.FulamtOwnpayAmt = material_fulamt_ownpay_amt iteminfo.Amt = materialCostTotal iteminfo.ClaaSumfee = material_claa_sunmfee iteminfo.ClabAmt = material_clab_amt iteminfo.OthAmt = material_other_amt //struct4101.IteminfoStruct = append(struct4101.IteminfoStruct, iteminfo) iteminfoStructs = append(iteminfoStructs, iteminfo) } if westernMedicineCostTotal != 0 { iteminfo.MedChrgitm = "09" iteminfo.FulamtOwnpayAmt = westernMedicine_fulamt_ownpay_amt iteminfo.Amt = westernMedicineCostTotal iteminfo.ClaaSumfee = westernMedicine_claa_sunmfee iteminfo.ClabAmt = westernMedicine_clab_amt iteminfo.OthAmt = westernMedicine_other_amt //struct4101.IteminfoStruct = append(struct4101.IteminfoStruct, iteminfo) iteminfoStructs = append(iteminfoStructs, iteminfo) } if chineseTraditionalMedicineCostTotal != 0 { iteminfo.MedChrgitm = "11" iteminfo.FulamtOwnpayAmt = westernMedicine_fulamt_ownpay_amt iteminfo.Amt = westernMedicineCostTotal iteminfo.ClaaSumfee = westernMedicine_claa_sunmfee iteminfo.ClabAmt = westernMedicine_clab_amt iteminfo.OthAmt = westernMedicine_other_amt //struct4101.IteminfoStruct = append(struct4101.IteminfoStruct, iteminfo) iteminfoStructs = append(iteminfoStructs, iteminfo) } if otherCostTotal != 0 { iteminfo.MedChrgitm = "14" iteminfo.FulamtOwnpayAmt = other_fulamt_ownpay_amt iteminfo.Amt = otherCostTotal iteminfo.ClaaSumfee = other_claa_sunmfee iteminfo.ClabAmt = other_clab_amt iteminfo.OthAmt = other_other_amt //struct4101.IteminfoStruct = append(struct4101.IteminfoStruct, iteminfo) iteminfoStructs = append(iteminfoStructs, iteminfo) } struct4101.IteminfoStruct = iteminfoStructs struct4101.Ntly = "中国" struct4101.AdmCaty = "A03.06" var res ResultSeventeen if miConfig.MdtrtareaAdmvs == "320921" || miConfig.MdtrtareaAdmvs == "320982" { struct4101.BillCode = order.Number struct4101.BillNo = order.SetlId var resOther ResultSeventeenOther var pp models.PublicParams pp.InsuplcAdmdvs = miConfig.InsuplcAdmdvs pp.MdtrtareaAdmvs = miConfig.MdtrtareaAdmvs pp.FixmedinsName = miConfig.OrgName pp.FixmedinsCode = miConfig.Code pp.RequestUrl = miConfig.Url pp.Cainfo = miConfig.Cainfo pp.SecretKey = miConfig.SecretKey pp.AccessKey = miConfig.AccessKey pp.OpterName = curRoles.UserName client := &http.Client{} var req *http.Request data := make(map[string]interface{}) data["struct4101"] = struct4101 data["pp"] = pp bytesData, _ := json.Marshal(data) if miConfig.MdtrtareaAdmvs == "320921" { req, _ = http.NewRequest("POST", "http://192.168.2.110:9532/"+"jsyb/4101", bytes.NewReader(bytesData)) } else { req, _ = http.NewRequest("POST", "http://192.168.5.251:9532/"+"jsyb/4101", bytes.NewReader(bytesData)) } resp, _ := client.Do(req) defer resp.Body.Close() body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(body), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["request_log"].(map[string]interface{}) userJSONBytes, _ := json.Marshal(respJSON) fmt.Println("log") fmt.Println(string(userJSONBytes)) if err := json.Unmarshal(userJSONBytes, &resOther); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = resOther.InfRefmsgid res.Output = resOther.Output res.ErrMsg = resOther.ErrMsg infocode, _ := strconv.ParseInt(resOther.Infcode, 10, 64) res.Infcode = infocode } else if miConfig.MdtrtareaAdmvs == "360399" { var pp models.PublicParams pp.InsuplcAdmdvs = miConfig.InsuplcAdmdvs pp.MdtrtareaAdmvs = miConfig.MdtrtareaAdmvs pp.FixmedinsName = miConfig.OrgName pp.FixmedinsCode = miConfig.Code pp.RequestUrl = miConfig.Url pp.Cainfo = miConfig.Cainfo pp.SecretKey = miConfig.SecretKey pp.AccessKey = miConfig.AccessKey pp.OpterName = curRoles.UserName result, _ := service.Jxyb4101(struct4101, pp) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "430800" { var pp models.PublicParams pp.InsuplcAdmdvs = miConfig.InsuplcAdmdvs pp.MdtrtareaAdmvs = miConfig.MdtrtareaAdmvs pp.FixmedinsName = miConfig.OrgName pp.FixmedinsCode = miConfig.Code pp.RequestUrl = miConfig.Url pp.Cainfo = miConfig.Cainfo pp.SecretKey = miConfig.SecretKey pp.AccessKey = miConfig.AccessKey pp.OpterName = curRoles.UserName result, _ := service.Hnyb4101(struct4101, pp) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else { result := service.Gdyb4101(struct4101, miConfig.SecretKey, miConfig.OrgName, curRoles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.UserOrgId) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } if res.Infcode != 0 { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.ErrMsg, }) return } else { order.FaPiaoNumber = zero order.FaPiaoCode = last_order.FaPiaoCode service.UpdateOrder(order) hisFundSettleListResult := &models.HisFundSettleListResult{ Number: res.Output.SetlListId, Status: 1, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), UserOrgId: c.GetAdminUserInfo().CurrentOrgId, IsUpload: 1, OrderId: order_id, } service.CreateUploadRecord(hisFundSettleListResult) c.ServeSuccessJSON(map[string]interface{}{ "msg": "上传成功", "result": hisFundSettleListResult, }) return } } func (c *HisApiController) GetSettleListHospital() { order_id, _ := c.GetInt64("order_id") admin_user_id, _ := c.GetInt64("admin_user_id") order, _ := service.GetHisOrderByIDTwo(order_id) roles, _ := service.GetDoctorListTwo(c.GetAdminUserInfo().CurrentOrgId) his, _ := service.GetInHospitalRecordByNumber(order.MdtrtId) admin, _ := service.GetAdminUserByUserID(roles[0].AdminUserId) curRoles, _ := service.GetAdminUserInfoByID(c.GetAdminUserInfo().CurrentOrgId, admin_user_id) depart, _ := service.GetDepartMentDetail(curRoles.DepartmentId) miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId) if order.ID == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisOrderNoExistParamWrong) return } last_order, _ := service.GetLastHisOrder(c.GetAdminUserInfo().CurrentOrgId) max_order, _ := service.GetLastHisOrderTwo(c.GetAdminUserInfo().CurrentOrgId) count, _ := strconv.ParseInt(max_order.FaPiaoNumber, 10, 64) fmt.Println(count) var zero string number := count + 1 if number >= 1000 { zero = "0000" + strconv.FormatInt(number, 10) } else if number >= 10000 { zero = "000" + strconv.FormatInt(number, 10) } else if number >= 100000 { zero = "00" + strconv.FormatInt(number, 10) } else if number >= 1000000 { zero = "0" + strconv.FormatInt(number, 10) } else { zero = strconv.FormatInt(number, 10) } fmt.Println(zero) struct4101 := service.Struct4101{ PsnNo: order.PsnNo, MdtrtId: order.MdtrtId, SetlId: order.SetlId, PsnName: order.PsnName, Gend: order.Gend, Brdy: his.Brdy, Age: int64(order.Age), Naty: order.Naty, PatnCertType: "01", Certno: order.Certno, Prfs: "90", ConerName: roles[0].UserName, PatnRlts: "99", ConerAddr: miConfig.OrgName, ConerTel: admin.Mobile, HiType: order.Insutype, Insuplc: miConfig.InsuplcAdmdvs, MaindiagFlag: "1", BillCode: order.SetlId, BillNo: order.SetlId, BizSn: order.Number, PsnSelfPay: order.PsnPartAmt, PsnOwnPay: order.PsnPartAmt, AcctPay: order.AcctPay, PsnCashpay: order.PsnCashPay, HiPaymtd: "1", Hsorg: miConfig.InsuplcAdmdvs, HsorgOpter: miConfig.InsuplcAdmdvs, MedinsFillPsn: curRoles.UserName, MedinsFillDept: depart.Name, IptMedType: "2", AdmTime: his.InHosptialTime, AdmEndTime: his.OutHosptialTime, } struct4101.SetlBegnDate = order.SetlTime struct4101.SetlEndDate = order.SetlTime var rf []CustomFundPay json.Unmarshal([]byte(order.SetlDetail), &rf) var tempFunPays []service.CustomStruct for _, item := range rf { var tempFunPay service.CustomStruct tempFunPay.FundPayamt = item.FundPayamt tempFunPay.FundPayType = item.FundPayType tempFunPays = append(tempFunPays, tempFunPay) } struct4101.CustomStruct = tempFunPays var tempDiaginfos []service.DiaginfoStructTwo var tempOpspdiseinfo2 service.OpspdiseinfoStruct var tempOpspdiseinfos []service.OpspdiseinfoStruct diagnosis_ids := strings.Split(his.Diagnosis, ",") var config []*models.HisXtDiagnoseConfig for _, item := range diagnosis_ids { id, _ := strconv.ParseInt(item, 10, 64) diagnosisConfig, _ := service.FindDiagnoseById(id) config = append(config, &diagnosisConfig) } for index, item := range config { if index == 0 { var tempDiaginfo service.DiaginfoStructTwo tempDiaginfo.DiagCode = item.CountryCode tempDiaginfo.DiagName = item.CountryContentName tempDiaginfo.DiagType = "1" tempDiaginfo.MaindiagFlag = "1" tempDiaginfos = append(tempDiaginfos, tempDiaginfo) } else { var tempDiaginfo service.DiaginfoStructTwo tempDiaginfo.DiagCode = item.CountryCode tempDiaginfo.DiagName = item.CountryContentName tempDiaginfo.DiagType = "2" tempDiaginfo.MaindiagFlag = "0" tempDiaginfos = append(tempDiaginfos, tempDiaginfo) } } struct4101.Diseinfo = tempDiaginfos sickConfigTwo, _ := service.FindSickById(his.SickType) tempOpspdiseinfo2.DiagCode = sickConfigTwo.ContentCode tempOpspdiseinfo2.DiagName = sickConfigTwo.CountryContentName tempOpspdiseinfo2.OprnOprtCode = "" tempOpspdiseinfo2.OprnOprtName = "" tempOpspdiseinfos = append(tempOpspdiseinfos, tempOpspdiseinfo2) struct4101.OpspdiseinfoStruct = tempOpspdiseinfos var iteminfo service.IteminfoStruct var bedCostTotal float64 = 0 //床位总费 var bedCostSelfTotal float64 = 0 //床位自费 var bedCostPartSelfTotal float64 = 0 //床位部分项目自费 var operationCostTotal float64 = 0 //手术费 var operationCostSelfTotal float64 = 0 //手术费 var operationCostPartSelfTotal float64 = 0 //手术费 var otherCostTotal float64 = 0 //其他费用 var otherCostSelfTotal float64 = 0 //其他费用 var otherCostPartSelfTotal float64 = 0 //其他费用 var materialCostTotal float64 = 0 //材料费 var materialCostSelfTotal float64 = 0 //材料费 var materialCostPartSelfTotal float64 = 0 //材料费 var westernMedicineCostTotal float64 = 0 //西药费 var westernMedicineCostSelfTotal float64 = 0 //西药费 var westernMedicineCostPartSelfTotal float64 = 0 //西药费 var chineseTraditionalMedicineCostTotal float64 = 0 //中成药 var chineseTraditionalMedicineCostSelfTotal float64 = 0 //中成药 var chineseTraditionalMedicineCostPartSelfTotal float64 = 0 //中成药 var checkCostTotal float64 = 0 //检查费 var checkCostSelfTotal float64 = 0 //检查费 var checkCostPartSelfTotal float64 = 0 //检查费 var laboratoryCostTotal float64 = 0 //化验费 var laboratoryCostSelfTotal float64 = 0 //化验费 var laboratoryCostPartSelfTotal float64 = 0 //化验费 var treatCostTotal float64 = 0 //治疗费用 var treatCostSelfTotal float64 = 0 //治疗费用 var treatCostPartSelfTotal float64 = 0 //治疗费用 decimal.DivisionPrecision = 2 var bed_fulamt_ownpay_amt float64 = 0 var operation_fulamt_ownpay_amt float64 = 0 var other_fulamt_ownpay_amt float64 = 0 var westernMedicine_fulamt_ownpay_amt float64 = 0 var chineseTraditional_fulamt_ownpay_amt float64 = 0 var check_fulamt_ownpay_amt float64 = 0 var material_fulamt_ownpay_amt float64 = 0 var laboratory_fulamt_ownpay_amt float64 = 0 var treat_fulamt_ownpay_amt float64 = 0 var bed_claa_sunmfee float64 = 0 var bed_clab_amt float64 = 0 var bed_other_amt float64 = 0 var operation_claa_sunmfee float64 = 0 var operation_clab_amt float64 = 0 var operation_other_amt float64 = 0 var other_claa_sunmfee float64 = 0 var other_clab_amt float64 = 0 var other_other_amt float64 = 0 var westernMedicine_claa_sunmfee float64 = 0 var westernMedicine_clab_amt float64 = 0 var westernMedicine_other_amt float64 = 0 var chineseTraditional_claa_sunmfee float64 = 0 var chineseTraditional_clab_amt float64 = 0 var chineseTraditional_other_amt float64 = 0 var check_claa_sunmfee float64 = 0 var check_clab_amt float64 = 0 var check_other_amt float64 = 0 var material_claa_sunmfee float64 = 0 var material_clab_amt float64 = 0 var material_other_amt float64 = 0 var laboratory_claa_sunmfee float64 = 0 var laboratory_clab_amt float64 = 0 var laboratory_other_amt float64 = 0 var treat_claa_sunmfee float64 = 0 var treat_clab_amt float64 = 0 var treat_other_amt float64 = 0 for _, item := range order.HisOrderInfo { if item.MedChrgitmType == "01" { //床位费 bedCostTotal, _ = decimal.NewFromFloat(bedCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() bedCostSelfTotal, _ = decimal.NewFromFloat(bedCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() bedCostPartSelfTotal, _ = decimal.NewFromFloat(bedCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() bed_fulamt_ownpay_amt, _ = decimal.NewFromFloat(bed_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { bed_claa_sunmfee, _ = decimal.NewFromFloat(bed_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { bed_clab_amt, _ = decimal.NewFromFloat(bed_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { bed_other_amt, _ = decimal.NewFromFloat(bed_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "03" { //检查费 checkCostTotal, _ = decimal.NewFromFloat(checkCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() checkCostSelfTotal, _ = decimal.NewFromFloat(checkCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() checkCostPartSelfTotal, _ = decimal.NewFromFloat(checkCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() check_fulamt_ownpay_amt, _ = decimal.NewFromFloat(check_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { check_claa_sunmfee, _ = decimal.NewFromFloat(check_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { check_clab_amt, _ = decimal.NewFromFloat(check_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { check_other_amt, _ = decimal.NewFromFloat(check_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "04" { //化验费 laboratoryCostTotal, _ = decimal.NewFromFloat(laboratoryCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() laboratoryCostSelfTotal, _ = decimal.NewFromFloat(laboratoryCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() laboratoryCostPartSelfTotal, _ = decimal.NewFromFloat(laboratoryCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() laboratory_fulamt_ownpay_amt, _ = decimal.NewFromFloat(laboratory_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { laboratory_claa_sunmfee, _ = decimal.NewFromFloat(laboratory_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { laboratory_clab_amt, _ = decimal.NewFromFloat(laboratory_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { laboratory_other_amt, _ = decimal.NewFromFloat(laboratory_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "05" { //治疗费 treatCostTotal, _ = decimal.NewFromFloat(treatCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() treatCostSelfTotal, _ = decimal.NewFromFloat(treatCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() treatCostPartSelfTotal, _ = decimal.NewFromFloat(treatCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() treat_fulamt_ownpay_amt, _ = decimal.NewFromFloat(treat_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { treat_claa_sunmfee, _ = decimal.NewFromFloat(treat_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { treat_clab_amt, _ = decimal.NewFromFloat(treat_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { treat_other_amt, _ = decimal.NewFromFloat(treat_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "06" { //手术费 operationCostTotal, _ = decimal.NewFromFloat(operationCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() operationCostSelfTotal, _ = decimal.NewFromFloat(operationCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() operationCostPartSelfTotal, _ = decimal.NewFromFloat(operationCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() operation_fulamt_ownpay_amt, _ = decimal.NewFromFloat(operation_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { operation_claa_sunmfee, _ = decimal.NewFromFloat(operation_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { operation_clab_amt, _ = decimal.NewFromFloat(operation_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { operation_other_amt, _ = decimal.NewFromFloat(operation_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "08" { //材料费 materialCostTotal, _ = decimal.NewFromFloat(materialCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() materialCostSelfTotal, _ = decimal.NewFromFloat(materialCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() materialCostPartSelfTotal, _ = decimal.NewFromFloat(materialCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() material_fulamt_ownpay_amt, _ = decimal.NewFromFloat(material_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { material_claa_sunmfee, _ = decimal.NewFromFloat(material_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { material_clab_amt, _ = decimal.NewFromFloat(material_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { material_other_amt, _ = decimal.NewFromFloat(material_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "09" { //西药费 westernMedicineCostTotal, _ = decimal.NewFromFloat(westernMedicineCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() westernMedicineCostSelfTotal, _ = decimal.NewFromFloat(westernMedicineCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() westernMedicineCostPartSelfTotal, _ = decimal.NewFromFloat(westernMedicineCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() westernMedicine_fulamt_ownpay_amt, _ = decimal.NewFromFloat(westernMedicine_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { westernMedicine_claa_sunmfee, _ = decimal.NewFromFloat(westernMedicine_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { westernMedicine_clab_amt, _ = decimal.NewFromFloat(westernMedicine_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { westernMedicine_other_amt, _ = decimal.NewFromFloat(westernMedicine_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "11" { //中成费 chineseTraditionalMedicineCostTotal, _ = decimal.NewFromFloat(chineseTraditionalMedicineCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() chineseTraditionalMedicineCostSelfTotal, _ = decimal.NewFromFloat(chineseTraditionalMedicineCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() chineseTraditionalMedicineCostPartSelfTotal, _ = decimal.NewFromFloat(chineseTraditionalMedicineCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() chineseTraditional_fulamt_ownpay_amt, _ = decimal.NewFromFloat(chineseTraditional_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { chineseTraditional_claa_sunmfee, _ = decimal.NewFromFloat(chineseTraditional_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { chineseTraditional_clab_amt, _ = decimal.NewFromFloat(chineseTraditional_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { chineseTraditional_other_amt, _ = decimal.NewFromFloat(chineseTraditional_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "14" { //其他费 otherCostTotal, _ = decimal.NewFromFloat(otherCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() otherCostSelfTotal, _ = decimal.NewFromFloat(otherCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() otherCostPartSelfTotal, _ = decimal.NewFromFloat(otherCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() other_fulamt_ownpay_amt, _ = decimal.NewFromFloat(other_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { other_claa_sunmfee, _ = decimal.NewFromFloat(other_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { other_clab_amt, _ = decimal.NewFromFloat(other_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { other_other_amt, _ = decimal.NewFromFloat(other_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } } var iteminfoStructs []service.IteminfoStruct if bedCostTotal != 0 { iteminfo.MedChrgitm = "01" iteminfo.FulamtOwnpayAmt = bed_fulamt_ownpay_amt iteminfo.Amt = bedCostTotal iteminfo.ClaaSumfee = bed_claa_sunmfee iteminfo.ClabAmt = bed_clab_amt iteminfo.OthAmt = bed_other_amt iteminfoStructs = append(iteminfoStructs, iteminfo) } if checkCostTotal != 0 { iteminfo.MedChrgitm = "03" iteminfo.FulamtOwnpayAmt = check_fulamt_ownpay_amt iteminfo.Amt = checkCostTotal iteminfo.ClaaSumfee = check_claa_sunmfee iteminfo.ClabAmt = check_clab_amt iteminfo.OthAmt = check_other_amt iteminfoStructs = append(iteminfoStructs, iteminfo) } if laboratoryCostTotal != 0 { iteminfo.MedChrgitm = "04" iteminfo.FulamtOwnpayAmt = laboratory_fulamt_ownpay_amt iteminfo.Amt = laboratoryCostTotal iteminfo.ClaaSumfee = laboratory_claa_sunmfee iteminfo.ClabAmt = laboratory_clab_amt iteminfo.OthAmt = laboratory_other_amt iteminfoStructs = append(iteminfoStructs, iteminfo) //struct4101.IteminfoStruct = append(struct4101.IteminfoStruct, iteminfo) } if treatCostTotal != 0 { iteminfo.MedChrgitm = "05" iteminfo.FulamtOwnpayAmt = treat_fulamt_ownpay_amt iteminfo.Amt = treatCostTotal iteminfo.ClaaSumfee = treat_claa_sunmfee iteminfo.ClabAmt = treat_clab_amt iteminfo.OthAmt = treat_other_amt iteminfoStructs = append(iteminfoStructs, iteminfo) //(struct4101.IteminfoStruct, iteminfo) //struct4101.IteminfoStruct = append(struct4101.IteminfoStruct, iteminfo) } if operationCostTotal != 0 { iteminfo.MedChrgitm = "06" iteminfo.FulamtOwnpayAmt = bed_fulamt_ownpay_amt iteminfo.Amt = operationCostTotal iteminfo.ClaaSumfee = operation_claa_sunmfee iteminfo.ClabAmt = operation_clab_amt iteminfo.OthAmt = operation_other_amt //struct4101.IteminfoStruct = append(struct4101.IteminfoStruct, iteminfo) iteminfoStructs = append(iteminfoStructs, iteminfo) } if materialCostTotal != 0 { iteminfo.MedChrgitm = "08" iteminfo.FulamtOwnpayAmt = material_fulamt_ownpay_amt iteminfo.Amt = materialCostTotal iteminfo.ClaaSumfee = material_claa_sunmfee iteminfo.ClabAmt = material_clab_amt iteminfo.OthAmt = material_other_amt //struct4101.IteminfoStruct = append(struct4101.IteminfoStruct, iteminfo) iteminfoStructs = append(iteminfoStructs, iteminfo) } if westernMedicineCostTotal != 0 { iteminfo.MedChrgitm = "09" iteminfo.FulamtOwnpayAmt = westernMedicine_fulamt_ownpay_amt iteminfo.Amt = westernMedicineCostTotal iteminfo.ClaaSumfee = westernMedicine_claa_sunmfee iteminfo.ClabAmt = westernMedicine_clab_amt iteminfo.OthAmt = westernMedicine_other_amt //struct4101.IteminfoStruct = append(struct4101.IteminfoStruct, iteminfo) iteminfoStructs = append(iteminfoStructs, iteminfo) } if chineseTraditionalMedicineCostTotal != 0 { iteminfo.MedChrgitm = "11" iteminfo.FulamtOwnpayAmt = westernMedicine_fulamt_ownpay_amt iteminfo.Amt = westernMedicineCostTotal iteminfo.ClaaSumfee = westernMedicine_claa_sunmfee iteminfo.ClabAmt = westernMedicine_clab_amt iteminfo.OthAmt = westernMedicine_other_amt //struct4101.IteminfoStruct = append(struct4101.IteminfoStruct, iteminfo) iteminfoStructs = append(iteminfoStructs, iteminfo) } if otherCostTotal != 0 { iteminfo.MedChrgitm = "14" iteminfo.FulamtOwnpayAmt = other_fulamt_ownpay_amt iteminfo.Amt = otherCostTotal iteminfo.ClaaSumfee = other_claa_sunmfee iteminfo.ClabAmt = other_clab_amt iteminfo.OthAmt = other_other_amt //struct4101.IteminfoStruct = append(struct4101.IteminfoStruct, iteminfo) iteminfoStructs = append(iteminfoStructs, iteminfo) } struct4101.IteminfoStruct = iteminfoStructs struct4101.Ntly = "中国" struct4101.AdmCaty = "A03.06" var resOther ResultSeventeenOther var res ResultSeventeen if miConfig.MdtrtareaAdmvs == "150499" { var pp models.PublicParams pp.InsuplcAdmdvs = miConfig.InsuplcAdmdvs pp.MdtrtareaAdmvs = miConfig.MdtrtareaAdmvs pp.FixmedinsName = miConfig.OrgName pp.FixmedinsCode = miConfig.Code pp.RequestUrl = miConfig.Url pp.Cainfo = miConfig.Cainfo pp.SecretKey = miConfig.SecretKey pp.AccessKey = miConfig.AccessKey pp.OpterName = curRoles.UserName client := &http.Client{} var req *http.Request data := make(map[string]interface{}) data["struct4101"] = struct4101 data["pp"] = pp bytesData, _ := json.Marshal(data) req, _ = http.NewRequest("POST", "http://172.16.13.254:9532/"+"nmyb/4101", bytes.NewReader(bytesData)) resp, _ := client.Do(req) defer resp.Body.Close() body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(body), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) userJSONBytes, _ := json.Marshal(respJSON) if err := json.Unmarshal(userJSONBytes, &resOther); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = resOther.InfRefmsgid res.Output = resOther.Output res.ErrMsg = resOther.ErrMsg infocode, _ := strconv.ParseInt(resOther.Infcode, 10, 64) res.Infcode = infocode } else { result := service.Gdyb4101(struct4101, miConfig.SecretKey, miConfig.OrgName, curRoles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.UserOrgId) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } if res.Infcode != 0 { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.ErrMsg, }) return } else { if miConfig.MdtrtareaAdmvs != "150499" { order.FaPiaoNumber = zero order.FaPiaoCode = last_order.FaPiaoCode service.UpdateOrder(order) } hisFundSettleListResult := &models.HisFundSettleListResult{ Number: res.Output.SetlListId, Status: 1, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), UserOrgId: c.GetAdminUserInfo().CurrentOrgId, IsUpload: 1, OrderId: order_id, } service.CreateUploadRecord(hisFundSettleListResult) c.ServeSuccessJSON(map[string]interface{}{ "msg": "上传成功", "result": hisFundSettleListResult, }) return } } func (c *HisApiController) GetBatchSettleList() { orders, _ := service.GetAllHisOrder(10106) for _, item := range orders { order_id := item.ID order, _ := service.GetHisOrderByIDTwo(order_id) roles, _ := service.GetDoctorListTwo(c.GetAdminUserInfo().CurrentOrgId) his, _ := service.GetHisPatientByNumber(order.MdtrtId) admin, _ := service.GetAdminUserByUserID(roles[0].AdminUserId) curRoles, _ := service.GetAdminUserInfoByID(c.GetAdminUserInfo().CurrentOrgId, 2495) depart, _ := service.GetDepartMentDetail(curRoles.DepartmentId) miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId) pre, _ := service.GetNewHisPrescriptionByNumber(order.Number) doctor, _ := service.GetAdminUserInfoByID(c.GetAdminUserInfo().CurrentOrgId, pre.Creator) if order.ID == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisOrderNoExistParamWrong) return } if his.BalanceAccountsType == 2 { continue } struct4101 := service.Struct4101{ PsnNo: order.PsnNo, MdtrtId: order.MdtrtId, SetlId: order.SetlId, PsnName: order.PsnName, Gend: order.Gend, Brdy: his.Brdy, Age: his.Age, Naty: order.Naty, PatnCertType: "01", Certno: order.Certno, Prfs: "90", ConerName: roles[0].UserName, PatnRlts: "99", ConerAddr: miConfig.OrgName, ConerTel: admin.Mobile, HiType: order.Insutype, Insuplc: his.InsuplcAdmdvs, MaindiagFlag: "1", BillCode: order.SetlId, BillNo: order.SetlId, BizSn: order.Number, PsnSelfPay: order.PsnPartAmt, PsnOwnPay: order.PsnPartAmt, AcctPay: order.AcctPay, PsnCashpay: order.PsnCashPay, HiPaymtd: "1", Hsorg: his.InsuplcAdmdvs, HsorgOpter: his.InsuplcAdmdvs, MedinsFillPsn: curRoles.UserName, MedinsFillDept: depart.Name, IptMedType: "2", } struct4101.SetlBegnDate = order.SetlTime struct4101.SetlEndDate = order.SetlTime //if order.SettleType == 1 { // t := time.Unix(int64(order.SettleAccountsDate), 0) // dateStr := t.Format("2006-01-02") // struct4101.SetlBegnDate = dateStr // struct4101.SetlEndDate = dateStr //} else { // t := time.Unix(int64(order.SettleStartTime), 0) // t2 := time.Unix(int64(order.SettleEndTime), 0) // dateStartStr := t.Format("2006-01-02") // dateEndStr := t2.Format("2006-01-02") // struct4101.SetlBegnDate = dateStartStr // struct4101.SetlEndDate = dateEndStr //} var rf []CustomFundPay json.Unmarshal([]byte(order.SetlDetail), &rf) var tempFunPays []service.CustomStruct var tempFunPay610100 service.CustomStruct for _, item := range rf { if item.FundPayType == "610100" { tempFunPay610100.FundPayamt, _ = decimal.NewFromFloat(tempFunPay610100.FundPayamt).Add(decimal.NewFromFloat(item.FundPayamt)).Float64() tempFunPay610100.FundPayType = item.FundPayType } else { var tempFunPay service.CustomStruct tempFunPay.FundPayamt = item.FundPayamt tempFunPay.FundPayType = item.FundPayType tempFunPays = append(tempFunPays, tempFunPay) } } tempFunPays = append(tempFunPays, tempFunPay610100) struct4101.CustomStruct = tempFunPays var tempDiaginfos []service.DiaginfoStructTwo var tempOpspdiseinfo2 service.OpspdiseinfoStruct var tempOpspdiseinfos []service.OpspdiseinfoStruct diagnosis_ids := strings.Split(his.Diagnosis, ",") var config []*models.HisXtDiagnoseConfig for _, item := range diagnosis_ids { id, _ := strconv.ParseInt(item, 10, 64) diagnosisConfig, _ := service.FindDiagnoseById(id) config = append(config, &diagnosisConfig) } for index, item := range config { if index == 0 { var tempDiaginfo service.DiaginfoStructTwo tempDiaginfo.DiagCode = item.CountryCode tempDiaginfo.DiagName = item.CountryContentName tempDiaginfo.DiagType = "1" tempDiaginfo.MaindiagFlag = "1" tempDiaginfos = append(tempDiaginfos, tempDiaginfo) } else { var tempDiaginfo service.DiaginfoStructTwo tempDiaginfo.DiagCode = item.CountryCode tempDiaginfo.DiagName = item.CountryContentName tempDiaginfo.DiagType = "2" tempDiaginfo.MaindiagFlag = "0" tempDiaginfos = append(tempDiaginfos, tempDiaginfo) } } struct4101.Diseinfo = tempDiaginfos sickConfigTwo, _ := service.FindSickById(his.SickType) tempOpspdiseinfo2.DiagCode = sickConfigTwo.ContentCode tempOpspdiseinfo2.DiagName = sickConfigTwo.CountryContentName tempOpspdiseinfo2.OprnOprtCode = "" tempOpspdiseinfo2.OprnOprtName = "" tempOpspdiseinfos = append(tempOpspdiseinfos, tempOpspdiseinfo2) struct4101.OpspdiseinfoStruct = tempOpspdiseinfos var iteminfo service.IteminfoStruct var bedCostTotal float64 = 0 //床位总费 var bedCostSelfTotal float64 = 0 //床位自费 var bedCostPartSelfTotal float64 = 0 //床位部分项目自费 var examineCostTotal float64 = 0 //诊查总费 var examineCostSelfTotal float64 = 0 //诊查自费 var examineCostPartSelfTotal float64 = 0 //诊查部分项目自费 var nursingCostTotal float64 = 0 //护理总费 var nursingCostSelfTotal float64 = 0 //护理自费 var nursingCostPartSelfTotal float64 = 0 //护理部分项目自费 var chineseMedicineCostTotal float64 = 0 //中成药 var chineseMedicineCostSelfTotal float64 = 0 //中成药 var chineseMedicineCostPartSelfTotal float64 = 0 //中成药 var commonlyTreatmentCostTotal float64 = 0 //一般诊疗费 var commonlyTreatmentCostSelfTotal float64 = 0 //一般诊疗费 var commonlyTreatmentCostPartSelfTotal float64 = 0 //一般诊疗费 var registerCostTotal float64 = 0 //一般诊疗费 var registerCostSelfTotal float64 = 0 //一般诊疗费 var registerPartSelfTotal float64 = 0 //一般诊疗费 var operationCostTotal float64 = 0 //手术费 var operationCostSelfTotal float64 = 0 //手术费 var operationCostPartSelfTotal float64 = 0 //手术费 var otherCostTotal float64 = 0 //其他费用 var otherCostSelfTotal float64 = 0 //其他费用 var otherCostPartSelfTotal float64 = 0 //其他费用 var materialCostTotal float64 = 0 //材料费 var materialCostSelfTotal float64 = 0 //材料费 var materialCostPartSelfTotal float64 = 0 //材料费 var westernMedicineCostTotal float64 = 0 //西药费 var westernMedicineCostSelfTotal float64 = 0 //西药费 var westernMedicineCostPartSelfTotal float64 = 0 //西药费 var chineseTraditionalMedicineCostTotal float64 = 0 //中成药 var chineseTraditionalMedicineCostSelfTotal float64 = 0 //中成药 var chineseTraditionalMedicineCostPartSelfTotal float64 = 0 //中成药 var checkCostTotal float64 = 0 //检查费 var checkCostSelfTotal float64 = 0 //检查费 var checkCostPartSelfTotal float64 = 0 //检查费 var laboratoryCostTotal float64 = 0 //化验费 var laboratoryCostSelfTotal float64 = 0 //化验费 var laboratoryCostPartSelfTotal float64 = 0 //化验费 var treatCostTotal float64 = 0 //治疗费用 var treatCostSelfTotal float64 = 0 //治疗费用 var treatCostPartSelfTotal float64 = 0 //治疗费用 decimal.DivisionPrecision = 2 var bed_fulamt_ownpay_amt float64 = 0 var examine_fulamt_ownpay_amt float64 = 0 var nursing_fulamt_ownpay_amt float64 = 0 var chinese_medicine_fulamt_ownpay_amt float64 = 0 var commonly_treatment_fulamt_ownpay_amt float64 = 0 var register_fulamt_ownpay_amt float64 = 0 var operation_fulamt_ownpay_amt float64 = 0 var other_fulamt_ownpay_amt float64 = 0 var westernMedicine_fulamt_ownpay_amt float64 = 0 var chineseTraditional_fulamt_ownpay_amt float64 = 0 var check_fulamt_ownpay_amt float64 = 0 var material_fulamt_ownpay_amt float64 = 0 var laboratory_fulamt_ownpay_amt float64 = 0 var treat_fulamt_ownpay_amt float64 = 0 var bed_claa_sunmfee float64 = 0 var bed_clab_amt float64 = 0 var bed_other_amt float64 = 0 var examine_claa_sunmfee float64 = 0 var examine_clab_amt float64 = 0 var examine_other_amt float64 = 0 var nursing_claa_sunmfee float64 = 0 var nursing_clab_amt float64 = 0 var nursing_other_amt float64 = 0 var chinese_medicine_claa_sunmfee float64 = 0 var chinese_medicine_clab_amt float64 = 0 var chinese_medicine_other_amt float64 = 0 var commonly_treatment_claa_sunmfee float64 = 0 var commonly_treatment_clab_amt float64 = 0 var commonly_treatment_other_amt float64 = 0 var operation_claa_sunmfee float64 = 0 var operation_clab_amt float64 = 0 var operation_other_amt float64 = 0 var other_claa_sunmfee float64 = 0 var other_clab_amt float64 = 0 var other_other_amt float64 = 0 var westernMedicine_claa_sunmfee float64 = 0 var westernMedicine_clab_amt float64 = 0 var westernMedicine_other_amt float64 = 0 var chineseTraditional_claa_sunmfee float64 = 0 var chineseTraditional_clab_amt float64 = 0 var chineseTraditional_other_amt float64 = 0 var check_claa_sunmfee float64 = 0 var check_clab_amt float64 = 0 var check_other_amt float64 = 0 var material_claa_sunmfee float64 = 0 var material_clab_amt float64 = 0 var material_other_amt float64 = 0 var laboratory_claa_sunmfee float64 = 0 var laboratory_clab_amt float64 = 0 var laboratory_other_amt float64 = 0 var treat_claa_sunmfee float64 = 0 var treat_clab_amt float64 = 0 var treat_other_amt float64 = 0 var register_claa_sunmfee float64 = 0 var register_clab_amt float64 = 0 var register_other_amt float64 = 0 for _, item := range order.HisOrderInfo { if item.MedChrgitmType == "01" { //床位费 bedCostTotal, _ = decimal.NewFromFloat(bedCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() bedCostSelfTotal, _ = decimal.NewFromFloat(bedCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() bedCostPartSelfTotal, _ = decimal.NewFromFloat(bedCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() bed_fulamt_ownpay_amt, _ = decimal.NewFromFloat(bed_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { bed_claa_sunmfee, _ = decimal.NewFromFloat(bed_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { bed_clab_amt, _ = decimal.NewFromFloat(bed_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { bed_other_amt, _ = decimal.NewFromFloat(bed_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "02" { //诊查 examineCostTotal, _ = decimal.NewFromFloat(examineCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() examineCostSelfTotal, _ = decimal.NewFromFloat(examineCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() examineCostPartSelfTotal, _ = decimal.NewFromFloat(examineCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() examine_fulamt_ownpay_amt, _ = decimal.NewFromFloat(examine_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { examine_claa_sunmfee, _ = decimal.NewFromFloat(examine_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { examine_clab_amt, _ = decimal.NewFromFloat(examine_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { examine_other_amt, _ = decimal.NewFromFloat(examine_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "03" { //检查费 checkCostTotal, _ = decimal.NewFromFloat(checkCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() checkCostSelfTotal, _ = decimal.NewFromFloat(checkCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() checkCostPartSelfTotal, _ = decimal.NewFromFloat(checkCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() check_fulamt_ownpay_amt, _ = decimal.NewFromFloat(check_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { check_claa_sunmfee, _ = decimal.NewFromFloat(check_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { check_clab_amt, _ = decimal.NewFromFloat(check_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { check_other_amt, _ = decimal.NewFromFloat(check_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "04" { //化验费 laboratoryCostTotal, _ = decimal.NewFromFloat(laboratoryCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() laboratoryCostSelfTotal, _ = decimal.NewFromFloat(laboratoryCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() laboratoryCostPartSelfTotal, _ = decimal.NewFromFloat(laboratoryCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() laboratory_fulamt_ownpay_amt, _ = decimal.NewFromFloat(laboratory_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { laboratory_claa_sunmfee, _ = decimal.NewFromFloat(laboratory_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { laboratory_clab_amt, _ = decimal.NewFromFloat(laboratory_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { laboratory_other_amt, _ = decimal.NewFromFloat(laboratory_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "05" { //治疗费 treatCostTotal, _ = decimal.NewFromFloat(treatCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() treatCostSelfTotal, _ = decimal.NewFromFloat(treatCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() treatCostPartSelfTotal, _ = decimal.NewFromFloat(treatCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() treat_fulamt_ownpay_amt, _ = decimal.NewFromFloat(treat_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { treat_claa_sunmfee, _ = decimal.NewFromFloat(treat_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { treat_clab_amt, _ = decimal.NewFromFloat(treat_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { treat_other_amt, _ = decimal.NewFromFloat(treat_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "06" { //手术费 operationCostTotal, _ = decimal.NewFromFloat(operationCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() operationCostSelfTotal, _ = decimal.NewFromFloat(operationCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() operationCostPartSelfTotal, _ = decimal.NewFromFloat(operationCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() operation_fulamt_ownpay_amt, _ = decimal.NewFromFloat(operation_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { operation_claa_sunmfee, _ = decimal.NewFromFloat(operation_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { operation_clab_amt, _ = decimal.NewFromFloat(operation_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { operation_other_amt, _ = decimal.NewFromFloat(operation_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "07" { //手术费 nursingCostTotal, _ = decimal.NewFromFloat(nursingCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() nursingCostSelfTotal, _ = decimal.NewFromFloat(nursingCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() nursingCostPartSelfTotal, _ = decimal.NewFromFloat(nursingCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() nursing_fulamt_ownpay_amt, _ = decimal.NewFromFloat(nursing_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { nursing_claa_sunmfee, _ = decimal.NewFromFloat(nursing_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { nursing_clab_amt, _ = decimal.NewFromFloat(nursing_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { nursing_other_amt, _ = decimal.NewFromFloat(nursing_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "08" { //材料费 materialCostTotal, _ = decimal.NewFromFloat(materialCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() materialCostSelfTotal, _ = decimal.NewFromFloat(materialCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() materialCostPartSelfTotal, _ = decimal.NewFromFloat(materialCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() material_fulamt_ownpay_amt, _ = decimal.NewFromFloat(material_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { material_claa_sunmfee, _ = decimal.NewFromFloat(material_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { material_clab_amt, _ = decimal.NewFromFloat(material_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { material_other_amt, _ = decimal.NewFromFloat(material_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "09" { //西药费 westernMedicineCostTotal, _ = decimal.NewFromFloat(westernMedicineCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() westernMedicineCostSelfTotal, _ = decimal.NewFromFloat(westernMedicineCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() westernMedicineCostPartSelfTotal, _ = decimal.NewFromFloat(westernMedicineCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() westernMedicine_fulamt_ownpay_amt, _ = decimal.NewFromFloat(westernMedicine_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { westernMedicine_claa_sunmfee, _ = decimal.NewFromFloat(westernMedicine_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { westernMedicine_clab_amt, _ = decimal.NewFromFloat(westernMedicine_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { westernMedicine_other_amt, _ = decimal.NewFromFloat(westernMedicine_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "10" { //中药饮片 chineseMedicineCostTotal, _ = decimal.NewFromFloat(chineseMedicineCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() chineseMedicineCostSelfTotal, _ = decimal.NewFromFloat(chineseMedicineCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() chineseMedicineCostPartSelfTotal, _ = decimal.NewFromFloat(chineseMedicineCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() chinese_medicine_fulamt_ownpay_amt, _ = decimal.NewFromFloat(chinese_medicine_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { chinese_medicine_claa_sunmfee, _ = decimal.NewFromFloat(chinese_medicine_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { chinese_medicine_clab_amt, _ = decimal.NewFromFloat(chinese_medicine_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { chinese_medicine_other_amt, _ = decimal.NewFromFloat(chinese_medicine_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "11" { //中成费 chineseTraditionalMedicineCostTotal, _ = decimal.NewFromFloat(chineseTraditionalMedicineCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() chineseTraditionalMedicineCostSelfTotal, _ = decimal.NewFromFloat(chineseTraditionalMedicineCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() chineseTraditionalMedicineCostPartSelfTotal, _ = decimal.NewFromFloat(chineseTraditionalMedicineCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() chineseTraditional_fulamt_ownpay_amt, _ = decimal.NewFromFloat(chineseTraditional_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { chineseTraditional_claa_sunmfee, _ = decimal.NewFromFloat(chineseTraditional_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { chineseTraditional_clab_amt, _ = decimal.NewFromFloat(chineseTraditional_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { chineseTraditional_other_amt, _ = decimal.NewFromFloat(chineseTraditional_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "12" { //中成费 commonlyTreatmentCostTotal, _ = decimal.NewFromFloat(commonlyTreatmentCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() commonlyTreatmentCostSelfTotal, _ = decimal.NewFromFloat(commonlyTreatmentCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() commonlyTreatmentCostPartSelfTotal, _ = decimal.NewFromFloat(commonlyTreatmentCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() commonly_treatment_fulamt_ownpay_amt, _ = decimal.NewFromFloat(commonly_treatment_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { commonly_treatment_claa_sunmfee, _ = decimal.NewFromFloat(commonly_treatment_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { commonly_treatment_clab_amt, _ = decimal.NewFromFloat(commonly_treatment_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { commonly_treatment_other_amt, _ = decimal.NewFromFloat(commonly_treatment_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "13" { //中成费 registerCostTotal, _ = decimal.NewFromFloat(registerCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() registerCostSelfTotal, _ = decimal.NewFromFloat(registerCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() registerPartSelfTotal, _ = decimal.NewFromFloat(registerPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() register_fulamt_ownpay_amt, _ = decimal.NewFromFloat(register_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { register_claa_sunmfee, _ = decimal.NewFromFloat(register_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { register_clab_amt, _ = decimal.NewFromFloat(register_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { register_other_amt, _ = decimal.NewFromFloat(register_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } if item.MedChrgitmType == "14" { //其他费 otherCostTotal, _ = decimal.NewFromFloat(otherCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() otherCostSelfTotal, _ = decimal.NewFromFloat(otherCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() otherCostPartSelfTotal, _ = decimal.NewFromFloat(otherCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() other_fulamt_ownpay_amt, _ = decimal.NewFromFloat(other_fulamt_ownpay_amt).Add(decimal.NewFromFloat(item.FulamtOwnpayAmt)).Float64() if item.ChrgitmLv == "1" { other_claa_sunmfee, _ = decimal.NewFromFloat(other_claa_sunmfee).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() } if item.ChrgitmLv == "2" { other_clab_amt, _ = decimal.NewFromFloat(other_clab_amt).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.ChrgitmLv == "3" { other_other_amt, _ = decimal.NewFromFloat(other_other_amt).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() } } } var iteminfoStructs []service.IteminfoStruct if bedCostTotal != 0 { iteminfo.MedChrgitm = "01" iteminfo.FulamtOwnpayAmt = bed_fulamt_ownpay_amt iteminfo.Amt = bedCostTotal iteminfo.ClaaSumfee = bed_claa_sunmfee iteminfo.ClabAmt = bed_clab_amt iteminfo.OthAmt = bed_other_amt iteminfoStructs = append(iteminfoStructs, iteminfo) } if examineCostTotal != 0 { iteminfo.MedChrgitm = "02" iteminfo.FulamtOwnpayAmt = examine_fulamt_ownpay_amt iteminfo.Amt = examineCostTotal iteminfo.ClaaSumfee = examine_claa_sunmfee iteminfo.ClabAmt = examine_clab_amt iteminfo.OthAmt = examine_other_amt //struct4101.IteminfoStruct = append(struct4101.IteminfoStruct, iteminfo) iteminfoStructs = append(iteminfoStructs, iteminfo) } if checkCostTotal != 0 { iteminfo.MedChrgitm = "03" iteminfo.FulamtOwnpayAmt = check_fulamt_ownpay_amt iteminfo.Amt = checkCostTotal iteminfo.ClaaSumfee = check_claa_sunmfee iteminfo.ClabAmt = check_clab_amt iteminfo.OthAmt = check_other_amt iteminfoStructs = append(iteminfoStructs, iteminfo) } if laboratoryCostTotal != 0 { iteminfo.MedChrgitm = "04" iteminfo.FulamtOwnpayAmt = laboratory_fulamt_ownpay_amt iteminfo.Amt = laboratoryCostTotal iteminfo.ClaaSumfee = laboratory_claa_sunmfee iteminfo.ClabAmt = laboratory_clab_amt iteminfo.OthAmt = laboratory_other_amt iteminfoStructs = append(iteminfoStructs, iteminfo) //struct4101.IteminfoStruct = append(struct4101.IteminfoStruct, iteminfo) } if treatCostTotal != 0 { iteminfo.MedChrgitm = "05" iteminfo.FulamtOwnpayAmt = treat_fulamt_ownpay_amt iteminfo.Amt = treatCostTotal iteminfo.ClaaSumfee = treat_claa_sunmfee iteminfo.ClabAmt = treat_clab_amt iteminfo.OthAmt = treat_other_amt iteminfoStructs = append(iteminfoStructs, iteminfo) //(struct4101.IteminfoStruct, iteminfo) //struct4101.IteminfoStruct = append(struct4101.IteminfoStruct, iteminfo) } if operationCostTotal != 0 { iteminfo.MedChrgitm = "06" iteminfo.FulamtOwnpayAmt = bed_fulamt_ownpay_amt iteminfo.Amt = operationCostTotal iteminfo.ClaaSumfee = operation_claa_sunmfee iteminfo.ClabAmt = operation_clab_amt iteminfo.OthAmt = operation_other_amt //struct4101.IteminfoStruct = append(struct4101.IteminfoStruct, iteminfo) iteminfoStructs = append(iteminfoStructs, iteminfo) } if nursingCostTotal != 0 { iteminfo.MedChrgitm = "07" iteminfo.FulamtOwnpayAmt = nursing_fulamt_ownpay_amt iteminfo.Amt = nursingCostTotal iteminfo.ClaaSumfee = nursing_claa_sunmfee iteminfo.ClabAmt = nursing_clab_amt iteminfo.OthAmt = nursing_other_amt iteminfoStructs = append(iteminfoStructs, iteminfo) } if materialCostTotal != 0 { iteminfo.MedChrgitm = "08" iteminfo.FulamtOwnpayAmt = material_fulamt_ownpay_amt iteminfo.Amt = materialCostTotal iteminfo.ClaaSumfee = material_claa_sunmfee iteminfo.ClabAmt = material_clab_amt iteminfo.OthAmt = material_other_amt //struct4101.IteminfoStruct = append(struct4101.IteminfoStruct, iteminfo) iteminfoStructs = append(iteminfoStructs, iteminfo) } if westernMedicineCostTotal != 0 { iteminfo.MedChrgitm = "09" iteminfo.FulamtOwnpayAmt = westernMedicine_fulamt_ownpay_amt iteminfo.Amt = westernMedicineCostTotal iteminfo.ClaaSumfee = westernMedicine_claa_sunmfee iteminfo.ClabAmt = westernMedicine_clab_amt iteminfo.OthAmt = westernMedicine_other_amt //struct4101.IteminfoStruct = append(struct4101.IteminfoStruct, iteminfo) iteminfoStructs = append(iteminfoStructs, iteminfo) } if chineseMedicineCostTotal != 0 { iteminfo.MedChrgitm = "10" iteminfo.FulamtOwnpayAmt = chinese_medicine_fulamt_ownpay_amt iteminfo.Amt = chineseMedicineCostTotal iteminfo.ClaaSumfee = chinese_medicine_claa_sunmfee iteminfo.ClabAmt = chinese_medicine_clab_amt iteminfo.OthAmt = chinese_medicine_other_amt //struct4101.IteminfoStruct = append(struct4101.IteminfoStruct, iteminfo) iteminfoStructs = append(iteminfoStructs, iteminfo) } if chineseTraditionalMedicineCostTotal != 0 { iteminfo.MedChrgitm = "11" iteminfo.FulamtOwnpayAmt = westernMedicine_fulamt_ownpay_amt iteminfo.Amt = westernMedicineCostTotal iteminfo.ClaaSumfee = westernMedicine_claa_sunmfee iteminfo.ClabAmt = westernMedicine_clab_amt iteminfo.OthAmt = westernMedicine_other_amt //struct4101.IteminfoStruct = append(struct4101.IteminfoStruct, iteminfo) iteminfoStructs = append(iteminfoStructs, iteminfo) } if commonlyTreatmentCostTotal != 0 { iteminfo.MedChrgitm = "12" iteminfo.FulamtOwnpayAmt = commonly_treatment_fulamt_ownpay_amt iteminfo.Amt = commonlyTreatmentCostTotal iteminfo.ClaaSumfee = commonly_treatment_claa_sunmfee iteminfo.ClabAmt = commonly_treatment_clab_amt iteminfo.OthAmt = commonly_treatment_other_amt //struct4101.IteminfoStruct = append(struct4101.IteminfoStruct, iteminfo) iteminfoStructs = append(iteminfoStructs, iteminfo) } if registerCostTotal != 0 { iteminfo.MedChrgitm = "13" iteminfo.FulamtOwnpayAmt = register_fulamt_ownpay_amt iteminfo.Amt = registerCostTotal iteminfo.ClaaSumfee = register_claa_sunmfee iteminfo.ClabAmt = register_clab_amt iteminfo.OthAmt = register_other_amt //struct4101.IteminfoStruct = append(struct4101.IteminfoStruct, iteminfo) iteminfoStructs = append(iteminfoStructs, iteminfo) } if otherCostTotal != 0 { iteminfo.MedChrgitm = "14" iteminfo.FulamtOwnpayAmt = other_fulamt_ownpay_amt iteminfo.Amt = otherCostTotal iteminfo.ClaaSumfee = other_claa_sunmfee iteminfo.ClabAmt = other_clab_amt iteminfo.OthAmt = other_other_amt //struct4101.IteminfoStruct = append(struct4101.IteminfoStruct, iteminfo) iteminfoStructs = append(iteminfoStructs, iteminfo) } struct4101.IteminfoStruct = iteminfoStructs time_arr := strings.Split(order.SetlTime, " ") struct4101.AdmTime = time_arr[0] struct4101.AdmEndTime = time_arr[0] struct4101.DoctorName = doctor.UserName struct4101.DoctorCode = doctor.DoctorNumber struct4101.Ntly = "中国" struct4101.AdmCaty = "A03.06" var res ResultSeventeen if miConfig.MdtrtareaAdmvs == "421300" { data := make(map[string]interface{}) data["struct4101"] = struct4101 data["secret_key"] = miConfig.SecretKey data["org_name"] = miConfig.OrgName data["opera"] = curRoles.UserName data["code"] = miConfig.Code data["insuplc_admdvs"] = miConfig.InsuplcAdmdvs data["mdtrtarea_admvs"] = miConfig.MdtrtareaAdmvs client := &http.Client{} bytesData, _ := json.Marshal(data) req, _ := http.NewRequest("POST", "http://192.168.124.4:9532/"+"hbyb/4101", bytes.NewReader(bytesData)) resp, _ := client.Do(req) defer resp.Body.Close() body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(body), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) userJSONBytes, _ := json.Marshal(respJSON) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) //c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) adminUser := c.GetAdminUserInfo() errlog := &models.HisOrderError{ UserOrgId: adminUser.CurrentOrgId, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), ErrMsg: res.ErrMsg + "解析失败", Status: 1, PatientId: order_id, Stage: 10088, } service.CreateErrMsgLog(errlog) continue } } else { result := service.Gdyb4101(struct4101, miConfig.SecretKey, miConfig.OrgName, curRoles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, c.GetAdminUserInfo().CurrentOrgId) fmt.Println(result) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) //c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) adminUser := c.GetAdminUserInfo() errlog := &models.HisOrderError{ UserOrgId: adminUser.CurrentOrgId, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), ErrMsg: res.ErrMsg + "解析失败", Status: 1, PatientId: order_id, Stage: 10106, } service.CreateErrMsgLog(errlog) continue } } if res.Infcode != 0 { adminUser := c.GetAdminUserInfo() errlog := &models.HisOrderError{ UserOrgId: adminUser.CurrentOrgId, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), ErrMsg: res.ErrMsg, Status: 1, PatientId: order_id, Stage: 10106, } service.CreateErrMsgLog(errlog) continue } else { hisFundSettleListResult := &models.HisFundSettleListResult{ Number: res.Output.SetlListId, Status: 1, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), UserOrgId: c.GetAdminUserInfo().CurrentOrgId, IsUpload: 1, OrderId: order_id, } service.CreateUploadRecord(hisFundSettleListResult) continue } } } func (c *HisApiController) GetOrgInfo() { miConfig, _ := service.FindMedicalInsuranceInfo(4) service.Gdyb1201("", miConfig.OrgName, "1122", miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, 1, "") } func (c *HisApiController) GetHisPatientInfo() { medical_insurance_card := c.GetString("medical_insurance_card") id_card_type, _ := c.GetInt64("id_card_type") id_card := c.GetString("id_card") adminInfo := c.GetAdminUserInfo() config, _ := service.GetMedicalInsuranceConfig(adminInfo.CurrentOrgId) miConfig, _ := service.FindMedicalInsuranceInfo(adminInfo.CurrentOrgId) appRole, _ := service.GetAppRole(adminInfo.CurrentOrgId) IdCardNo := "" if id_card_type == 1 { IdCardNo = medical_insurance_card } else if id_card_type == 2 { IdCardNo = id_card } if config.IsOpen == 1 { api := "http://127.0.0.1:9532/" + "gdyb/one?cert_no=" + IdCardNo + "&org_name=" + miConfig.OrgName + "&doctor=" + appRole.UserName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey resp, requestErr := http.Get(api) if requestErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } defer resp.Body.Close() body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } userJSON := respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) userJSONBytes, _ := json.Marshal(userJSON) var res ResultTwo if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } Iinfos, _ := json.Marshal(res.Output.Iinfo) Idetinfos, _ := json.Marshal(res.Output.Idetinfo) infoStr := string(Iinfos) idetinfoStr := string(Idetinfos) if res.Infcode == 0 { his := models.VMHisPatient{ Status: 1, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), PsnNo: res.Output.Baseinfo.PsnNo, PsnCertType: res.Output.Baseinfo.PsnCertType, Certno: res.Output.Baseinfo.Certno, PsnName: res.Output.Baseinfo.PsnName, Gend: res.Output.Baseinfo.Gend, Naty: res.Output.Baseinfo.Naty, Brdy: res.Output.Baseinfo.Brdy, Age: res.Output.Baseinfo.Age, Iinfo: infoStr, Idetinfo: idetinfoStr, UserOrgId: adminInfo.CurrentOrgId, IsReturn: 1, IdCardType: id_card_type, } c.ServeSuccessJSON(map[string]interface{}{ "info": his, }) } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisFailedException) return } } } //func GetBasBaseInfo() (jsonStr string, err error) { // // handle := syscall.NewLazyDLL("SSCard.dll") // add := handle.NewProc("ReadCardBas") // str := make([]byte, 1024) // str1 := make([]byte, 1024) // ret, _, _ := add.Call((uintptr)(unsafe.Pointer(&str[0])), IntPtr(1024), (uintptr)(unsafe.Pointer(&str1[0])), IntPtr(1024)) // fmt.Println(ConvertToString(string(str), "gbk", "utf-8")) // // fmt.Println(ConvertToString(string(str1), "gbk", "utf-8")) // // fmt.Println("> Add(4,5)的结果为:", ret) // handle.Release() // // return "", nil // //} //func GetQRBaseInfo() (jsonStr string, err error) { // handle := syscall.LoadDLL("SSCard.dll") // ReadCardBas := handle.FindProc("GetQRBase") // // str := make([]byte, 256) // str1 := make([]byte, 256) // r, _, _ := ReadCardBas.Call((uintptr)(unsafe.Pointer(&str[0])), IntPtr(1024), (uintptr)(unsafe.Pointer(&str1[0])), IntPtr(1024)) // // fmt.Println(string(str)) // fmt.Println(r) // return string(str), nil //} //func CardInit() int { // DllTestDef := syscall.MustLoadDLL("SSCard.dll") // add := DllTestDef.MustFindProc("Init") // ret, _, err := add.Call(StrPtr("http://igb.hsa.gdgov.cn/gdyb_inf/poc/api/card/initDll"), StrPtr("440200")) // if err != nil { // fmt.Println("SSCard的运算结果为:", ret) // } // result := int(ret) // return result //} //func CardInit() int { // ret, _, err := add.Call(StrPtr("http://igb.hsa.gdgov.cn/gdyb_inf/poc/api/card/initDll"), StrPtr("440200")) // if err != nil { // fmt.Println("SSCard的运算结果为:", ret) // } // fmt.Println(err) // result := int(ret) // return result //} func IntPtr(n int) uintptr { return uintptr(n) } func StrPtr(s string) uintptr { return uintptr(unsafe.Pointer(syscall.StringBytePtr(s))) } type Result2001 struct { Cainfo interface{} `json:"cainfo"` ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode int64 `json:"infcode"` Output struct { Trtinfo struct { PsnNo string `json:"psn_no"` TrtChkType string `json:"trt_chk_type"` FundPayType string `json:"fund_pay_type"` TrtEnjymntFlag string `json:"trt_enjymnt_flag"` Begndate string `json:"begndate"` Enddate string `json:"enddate"` TrtChkRslt string `json:"trt_chk_rslt"` } `json:"trtinfo"` } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype interface{} `json:"signtype"` WarnMsg interface{} `json:"warn_msg"` } type Result2001Org10265 struct { Cainfo interface{} `json:"cainfo"` ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode string `json:"infcode"` Output struct { Trtinfo struct { PsnNo string `json:"psn_no"` TrtChkType string `json:"trt_chk_type"` FundPayType string `json:"fund_pay_type"` TrtEnjymntFlag string `json:"trt_enjymnt_flag"` Begndate string `json:"begndate"` Enddate string `json:"enddate"` TrtChkRslt string `json:"trt_chk_rslt"` } `json:"trtinfo"` } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype interface{} `json:"signtype"` WarnMsg interface{} `json:"warn_msg"` } type ResultTwo struct { ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode int64 `json:"infcode"` Output struct { Baseinfo struct { Age float64 `json:"age"` Brdy string `json:"brdy"` Certno string `json:"certno"` Gend string `json:"gend"` Naty string `json:"naty"` PsnCertType string `json:"psn_cert_type"` PsnName string `json:"psn_name"` PsnNo string `json:"psn_no"` } `json:"baseinfo"` Idetinfo []interface{} `json:"idetinfo"` Iinfo []struct { Balc float64 `json:"balc"` CvlservFlag string `json:"cvlserv_flag"` EmpName string `json:"emp_name"` InsuplcAdmdvs string `json:"insuplc_admdvs"` Insutype string `json:"insutype"` PausInsuDansuplcAdmdvs string `json:"paus_insu_dansuplc_admdvs"` PausInsuDate string `json:"paus_insu_date"` PsnInsuDate string `json:"psn_insu_date"` PsnInsuStas string `json:"psn_insu_stas"` PsnType string `json:"psn_type"` } `json:"insuinfo"` } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype interface{} `json:"signtype"` WarnInfo interface{} `json:"warn_info"` } type ResultTwo10265 struct { ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode string `json:"infcode"` Output struct { Baseinfo struct { Age float64 `json:"age"` Brdy string `json:"brdy"` Certno string `json:"certno"` Gend string `json:"gend"` Naty string `json:"naty"` PsnCertType string `json:"psn_cert_type"` PsnName string `json:"psn_name"` PsnNo string `json:"psn_no"` } `json:"baseinfo"` Idetinfo []interface{} `json:"idetinfo"` Iinfo []struct { Balc float64 `json:"balc"` CvlservFlag string `json:"cvlserv_flag"` EmpName string `json:"emp_name"` InsuplcAdmdvs string `json:"insuplc_admdvs"` Insutype string `json:"insutype"` PausInsuDansuplcAdmdvs string `json:"paus_insu_dansuplc_admdvs"` PausInsuDate string `json:"paus_insu_date"` PsnInsuDate string `json:"psn_insu_date"` PsnInsuStas string `json:"psn_insu_stas"` PsnType string `json:"psn_type"` } `json:"insuinfo"` } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype interface{} `json:"signtype"` WarnInfo interface{} `json:"warn_info"` } type ResultThree struct { Cainfo interface{} `json:"cainfo"` ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode int64 `json:"infcode"` Output struct { Data struct { IptOtpNo string `json:"ipt_otp_no"` MdtrtID string `json:"mdtrt_id"` PsnNo string `json:"psn_no"` } `json:"data"` } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype interface{} `json:"signtype"` WarnMsg interface{} `json:"warn_msg"` } type ResultThree10265 struct { Cainfo interface{} `json:"cainfo"` ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode string `json:"infcode"` Output struct { Data struct { IptOtpNo string `json:"ipt_otp_no"` MdtrtID string `json:"mdtrt_id"` PsnNo string `json:"psn_no"` } `json:"data"` } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype interface{} `json:"signtype"` WarnMsg interface{} `json:"warn_msg"` } type ResultFour struct { Cainfo string `json:"cainfo"` ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode int64 `json:"infcode"` Output struct { Result []struct { BasMednFlag string `json:"bas_medn_flag"` ChldMedcFlag string `json:"chld_medc_flag"` ChrgitmLv string `json:"chrgitm_lv"` Cnt float64 `json:"cnt"` DetItemFeeSumamt float64 `json:"det_item_fee_sumamt"` DrtReimFlag string `json:"drt_reim_flag"` FeedetlSn string `json:"feedetl_sn"` FulamtOwnpayAmt float64 `json:"fulamt_ownpay_amt"` HiNegoDrugFlag string `json:"hi_nego_drug_flag"` InscpScpAmt float64 `json:"inscp_scp_amt"` ListSpItemFlag string `json:"list_sp_item_flag"` LmtUsedFlag string `json:"lmt_used_flag"` MedChrgitmType string `json:"med_chrgitm_type"` Memo string `json:"memo"` OverlmtAmt float64 `json:"overlmt_amt"` PreselfpayAmt float64 `json:"preselfpay_amt"` Pric float64 `json:"pric"` PricUplmtAmt float64 `json:"pric_uplmt_amt"` SelfpayProp float64 `json:"selfpay_prop"` } `json:"result"` } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype string `json:"signtype"` WarnMsg string `json:"warn_msg"` } type ResultFour10265 struct { Cainfo string `json:"cainfo"` ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode string `json:"infcode"` Output struct { Result []struct { BasMednFlag string `json:"bas_medn_flag"` ChldMedcFlag string `json:"chld_medc_flag"` ChrgitmLv string `json:"chrgitm_lv"` Cnt float64 `json:"cnt"` DetItemFeeSumamt float64 `json:"det_item_fee_sumamt"` DrtReimFlag string `json:"drt_reim_flag"` FeedetlSn string `json:"feedetl_sn"` FulamtOwnpayAmt float64 `json:"fulamt_ownpay_amt"` HiNegoDrugFlag string `json:"hi_nego_drug_flag"` InscpScpAmt float64 `json:"inscp_scp_amt"` ListSpItemFlag string `json:"list_sp_item_flag"` LmtUsedFlag string `json:"lmt_used_flag"` MedChrgitmType string `json:"med_chrgitm_type"` Memo string `json:"memo"` OverlmtAmt float64 `json:"overlmt_amt"` PreselfpayAmt float64 `json:"preselfpay_amt"` Pric float64 `json:"pric"` PricUplmtAmt float64 `json:"pric_uplmt_amt"` SelfpayProp float64 `json:"selfpay_prop"` } `json:"result"` } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype string `json:"signtype"` WarnMsg string `json:"warn_msg"` } type ResultMemo struct { InsuAdmdvs string `json:"insuAdmdvs"` } //[{"begntime":"2022-01-01 00:00:00","endtime":"2022-12-31 00:00:00","memo":"{\"matIdetCode\":\"20\",\"insuAdmdvs\":\"350481\"}","psn_idet_type":"23","psn_type_lv":null}] type ResultIDInfo struct { Begntime string `json:"begntime"` Endtime string `json:"endtime"` Memo string `json:"memo"` } type ResultFive struct { Balc float64 `json:"balc"` CvlservFlag string `json:"cvlserv_flag"` EmpName string `json:"emp_name"` InsuplcAdmdvs string `json:"insuplc_admdvs"` Insutype string `json:"insutype"` PausInsuDansuplcAdmdvs string `json:"paus_insu_dansuplc_admdvs"` PausInsuDate string `json:"paus_insu_date"` PsnInsuDate string `json:"psn_insu_date"` PsnInsuStas string `json:"psn_insu_stas"` PsnType string `json:"psn_type"` } type ResultSix struct { Cainfo interface{} `json:"cainfo"` ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode int64 `json:"infcode"` Output struct { } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype interface{} `json:"signtype"` WarnMsg interface{} `json:"warn_msg"` } type ResultSix10265 struct { Cainfo interface{} `json:"cainfo"` ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode string `json:"infcode"` Output struct { } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype interface{} `json:"signtype"` WarnMsg interface{} `json:"warn_msg"` } type ResultSeven struct { Cainfo string `json:"cainfo"` ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode int64 `json:"infcode"` Output struct { Setldetail []interface{} `json:"setldetail"` Setlinfo struct { AcctMulaidPay float64 `json:"acct_mulaid_pay"` AcctPay float64 `json:"acct_pay"` ActPayDedc float64 `json:"act_pay_dedc"` Age float64 `json:"age"` Balc float64 `json:"balc"` Brdy string `json:"brdy"` Certno string `json:"certno"` ClrOptins string `json:"clr_optins"` ClrType string `json:"clr_type"` ClrWay string `json:"clr_way"` CvlservFlag string `json:"cvlserv_flag"` CvlservPay float64 `json:"cvlserv_pay"` FulamtOwnpayAmt float64 `json:"fulamt_ownpay_amt"` FundPaySumamt float64 `json:"fund_pay_sumamt"` Gend string `json:"gend"` HifesPay float64 `json:"hifes_pay"` HifmiPay float64 `json:"hifmi_pay"` HifpPay float64 `json:"hifp_pay"` HospPartAmt float64 `json:"hosp_part_amt"` InscpScpAmt float64 `json:"inscp_scp_amt"` Insutype string `json:"insutype"` MafPay float64 `json:"maf_pay"` MdtrtCertType string `json:"mdtrt_cert_type"` HifobPay float64 `json:"hifob_pay"` MdtrtID string `json:"mdtrt_id"` MedType string `json:"med_type"` MedfeeSumamt float64 `json:"medfee_sumamt"` MedinsSetlID string `json:"medins_setl_id"` Naty string `json:"naty"` OthPay float64 `json:"oth_pay"` OverlmtSelfpay float64 `json:"overlmt_selfpay"` PoolPropSelfpay float64 `json:"pool_prop_selfpay"` PreselfpayAmt float64 `json:"preselfpay_amt"` PsnCashPay float64 `json:"psn_cash_pay"` PsnCertType string `json:"psn_cert_type"` PsnName string `json:"psn_name"` PsnNo string `json:"psn_no"` PsnPartAmt float64 `json:"psn_part_amt"` PsnType string `json:"psn_type"` SetlID string `json:"setl_id"` SetlTime string `json:"setl_time"` } `json:"setlinfo"` } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype interface{} `json:"signtype"` WarnMsg interface{} `json:"warn_msg"` } type ResultSeven10265 struct { Cainfo string `json:"cainfo"` ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode string `json:"infcode"` Output struct { Setldetail []interface{} `json:"setldetail"` Setlinfo struct { AcctMulaidPay float64 `json:"acct_mulaid_pay"` AcctPay float64 `json:"acct_pay"` ActPayDedc float64 `json:"act_pay_dedc"` Age float64 `json:"age"` Balc float64 `json:"balc"` Brdy string `json:"brdy"` Certno string `json:"certno"` ClrOptins string `json:"clr_optins"` ClrType string `json:"clr_type"` ClrWay string `json:"clr_way"` CvlservFlag string `json:"cvlserv_flag"` CvlservPay float64 `json:"cvlserv_pay"` FulamtOwnpayAmt float64 `json:"fulamt_ownpay_amt"` FundPaySumamt float64 `json:"fund_pay_sumamt"` Gend string `json:"gend"` HifesPay float64 `json:"hifes_pay"` HifmiPay float64 `json:"hifmi_pay"` HifpPay float64 `json:"hifp_pay"` HospPartAmt float64 `json:"hosp_part_amt"` InscpScpAmt float64 `json:"inscp_scp_amt"` Insutype string `json:"insutype"` MafPay float64 `json:"maf_pay"` MdtrtCertType string `json:"mdtrt_cert_type"` HifobPay float64 `json:"hifob_pay"` MdtrtID string `json:"mdtrt_id"` MedType string `json:"med_type"` MedfeeSumamt float64 `json:"medfee_sumamt"` MedinsSetlID string `json:"medins_setl_id"` Naty string `json:"naty"` OthPay float64 `json:"oth_pay"` OverlmtSelfpay float64 `json:"overlmt_selfpay"` PoolPropSelfpay float64 `json:"pool_prop_selfpay"` PreselfpayAmt float64 `json:"preselfpay_amt"` PsnCashPay float64 `json:"psn_cash_pay"` PsnCertType string `json:"psn_cert_type"` PsnName string `json:"psn_name"` PsnNo string `json:"psn_no"` PsnPartAmt float64 `json:"psn_part_amt"` PsnType string `json:"psn_type"` SetlID string `json:"setl_id"` SetlTime string `json:"setl_time"` } `json:"setlinfo"` } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype interface{} `json:"signtype"` WarnMsg interface{} `json:"warn_msg"` } type ResultEight struct { Cainfo string `json:"cainfo"` ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode int64 `json:"infcode"` Output struct { Stmtinfo struct { SetlOptins string `json:"setl_optins"` StmtRslt string `json:"stmt_rslt"` StmtRsltDscr string `json:"stmt_rslt_dscr"` } `json:"stmtinfo"` } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype interface{} `json:"signtype"` WarnMsg interface{} `json:"warn_msg"` } type ResultEightFor10188 struct { Cainfo string `json:"cainfo"` ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode string `json:"infcode"` Output struct { Stmtinfo struct { SetlOptins string `json:"setl_optins"` StmtRslt string `json:"stmt_rslt"` StmtRsltDscr string `json:"stmt_rslt_dscr"` } `json:"stmtinfo"` } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype interface{} `json:"signtype"` WarnMsg interface{} `json:"warn_msg"` } type ResultNine struct { Cainfo string `json:"cainfo"` ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode int64 `json:"infcode"` Output struct { FileQuryNo string `json:"file_qury_no"` } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype interface{} `json:"signtype"` WarnMsg interface{} `json:"warn_msg"` } type ResultTen struct { Cainfo string `json:"cainfo"` ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode int64 `json:"infcode"` Output struct { DldEndtime string `json:"dld_endtime"` FileQuryNo string `json:"file_qury_no"` Filename string `json:"filename"` } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype interface{} `json:"signtype"` WarnMsg interface{} `json:"warn_msg"` } //type Autogenerated struct { // Output struct { // Setlinfo struct { // SetlTime string `json:"setl_time"` // CvlservPay float64 `json:"cvlserv_pay"` // Year string `json:"year"` // MedType string `json:"med_type"` // PsnPay float64 `json:"psn_pay"` // OpterID string `json:"opter_id"` // Begndate string `json:"begndate"` // FlxempeFlag string `json:"flxempe_flag"` // HifmiPay float64 `json:"hifmi_pay"` // PsnNo string `json:"psn_no"` // ActPayDedc float64 `json:"act_pay_dedc"` // MedinsSetlID interface{} `json:"medins_setl_id"` // AcctMulaidPay interface{} `json:"acct_mulaid_pay"` // ClrWay string `json:"clr_way"` // OthPay float64 `json:"oth_pay"` // Gend string `json:"gend"` // MdtrtID string `json:"mdtrt_id"` // AcctPay float64 `json:"acct_pay"` // InscpScpAmt float64 `json:"inscp_scp_amt"` // Insutype string `json:"insutype"` // Invono interface{} `json:"invono"` // Enddate string `json:"enddate"` // CashPayamt float64 `json:"cash_payamt"` // PsnType string `json:"psn_type"` // FixmedinsName string `json:"fixmedins_name"` // HifpPay float64 `json:"hifp_pay"` // NewFlag interface{} `json:"new_flag"` // OverlmtSelfpay float64 `json:"overlmt_selfpay"` // PreselfpayAmt float64 `json:"preselfpay_amt"` // PayLoc string `json:"pay_loc"` // ClrType string `json:"clr_type"` // RefdSetlFlag string `json:"refd_setl_flag"` // CvlservFlag string `json:"cvlserv_flag"` // EmpName string `json:"emp_name"` // Brdy string `json:"brdy"` // Naty string `json:"naty"` // Certno string `json:"certno"` // DiseCode string `json:"dise_code"` // FixmedinsCode string `json:"fixmedins_code"` // DedcHospLv string `json:"dedc_hosp_lv"` // OpterName string `json:"opter_name"` // Balc float64 `json:"balc"` // FixmedinsPoolarea string `json:"fixmedins_poolarea"` // PsnCertType string `json:"psn_cert_type"` // HifobPay float64 `json:"hifob_pay"` // MedfeeSumamt float64 `json:"medfee_sumamt"` // HifesPay float64 `json:"hifes_pay"` // FundPaySumamt float64 `json:"fund_pay_sumamt"` // OptTime string `json:"opt_time"` // FulamtOwnpayAmt float64 `json:"fulamt_ownpay_amt"` // SetlID string `json:"setl_id"` // MafPay float64 `json:"maf_pay"` // PsnName string `json:"psn_name"` // InsuOptins interface{} `json:"insu_optins"` // PrefFundPay interface{} `json:"pref_fund_pay"` // ClrOptins string `json:"clr_optins"` // PoolPropSelfpay float64 `json:"pool_prop_selfpay"` // DiseName string `json:"dise_name"` // LmtpricHospLv string `json:"lmtpric_hosp_lv"` // Age float64 `json:"age"` // DtrtCertType string `json:"dtrt_cert_type"` // HospLv string `json:"hosp_lv"` // } `json:"setlinfo"` // Setldetail []struct { // FundPayType string `json:"fund_pay_type"` // FundPayamt float64 `json:"fund_payamt"` // SetlProcInfo interface{} `json:"setl_proc_info"` // CrtPaybLmtAmt interface{} `json:"crt_payb_lmt_amt"` // InscpScpAmt interface{} `json:"inscp_scp_amt"` // FundPayTypeName interface{} `json:"fund_pay_type_name"` // PrefFundPay interface{} `json:"pref_fund_pay"` // } `json:"setldetail"` // } `json:"output"` // Infcode int `json:"infcode"` // WarnMsg interface{} `json:"warn_msg"` // Cainfo interface{} `json:"cainfo"` // ErrMsg interface{} `json:"err_msg"` // RefmsgTime string `json:"refmsg_time"` // Signtype interface{} `json:"signtype"` // RespondTime string `json:"respond_time"` // InfRefmsgid string `json:"inf_refmsgid"` //} type ResultEleven struct { Cainfo string `json:"cainfo"` ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode int64 `json:"infcode"` Output struct { Setlinfo struct { SetlTime string `json:"setl_time"` CvlservPay float64 `json:"cvlserv_pay"` Year string `json:"year"` MedType string `json:"med_type"` PsnPay float64 `json:"psn_pay"` OpterID string `json:"opter_id"` Begndate string `json:"begndate"` FlxempeFlag string `json:"flxempe_flag"` HifmiPay float64 `json:"hifmi_pay"` PsnNo string `json:"psn_no"` ActPayDedc float64 `json:"act_pay_dedc"` MedinsSetlID interface{} `json:"medins_setl_id"` AcctMulaidPay interface{} `json:"acct_mulaid_pay"` ClrWay string `json:"clr_way"` OthPay float64 `json:"oth_pay"` Gend string `json:"gend"` MdtrtID string `json:"mdtrt_id"` AcctPay float64 `json:"acct_pay"` InscpScpAmt float64 `json:"inscp_scp_amt"` Insutype string `json:"insutype"` Invono interface{} `json:"invono"` Enddate string `json:"enddate"` CashPayamt float64 `json:"cash_payamt"` PsnType string `json:"psn_type"` FixmedinsName string `json:"fixmedins_name"` HifpPay float64 `json:"hifp_pay"` NewFlag interface{} `json:"new_flag"` OverlmtSelfpay float64 `json:"overlmt_selfpay"` PreselfpayAmt float64 `json:"preselfpay_amt"` PayLoc string `json:"pay_loc"` ClrType string `json:"clr_type"` RefdSetlFlag string `json:"refd_setl_flag"` CvlservFlag string `json:"cvlserv_flag"` EmpName string `json:"emp_name"` Brdy string `json:"brdy"` Naty string `json:"naty"` Certno string `json:"certno"` DiseCode string `json:"dise_code"` FixmedinsCode string `json:"fixmedins_code"` DedcHospLv string `json:"dedc_hosp_lv"` OpterName string `json:"opter_name"` Balc float64 `json:"balc"` FixmedinsPoolarea string `json:"fixmedins_poolarea"` PsnCertType string `json:"psn_cert_type"` HifobPay float64 `json:"hifob_pay"` MedfeeSumamt float64 `json:"medfee_sumamt"` HifesPay float64 `json:"hifes_pay"` FundPaySumamt float64 `json:"fund_pay_sumamt"` OptTime string `json:"opt_time"` FulamtOwnpayAmt float64 `json:"fulamt_ownpay_amt"` SetlID string `json:"setl_id"` MafPay float64 `json:"maf_pay"` PsnName string `json:"psn_name"` InsuOptins interface{} `json:"insu_optins"` PrefFundPay interface{} `json:"pref_fund_pay"` ClrOptins string `json:"clr_optins"` PoolPropSelfpay float64 `json:"pool_prop_selfpay"` DiseName string `json:"dise_name"` LmtpricHospLv string `json:"lmtpric_hosp_lv"` Age float64 `json:"age"` DtrtCertType string `json:"dtrt_cert_type"` HospLv string `json:"hosp_lv"` PsnCashPay float64 } `json:"setlinfo"` } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype interface{} `json:"signtype"` WarnMsg interface{} `json:"warn_msg"` } type ResultEleven10265 struct { Cainfo string `json:"cainfo"` ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode string `json:"infcode"` Output struct { Setlinfo struct { SetlTime string `json:"setl_time"` CvlservPay float64 `json:"cvlserv_pay"` Year string `json:"year"` MedType string `json:"med_type"` PsnPay float64 `json:"psn_pay"` OpterID string `json:"opter_id"` Begndate string `json:"begndate"` FlxempeFlag string `json:"flxempe_flag"` HifmiPay float64 `json:"hifmi_pay"` PsnNo string `json:"psn_no"` ActPayDedc float64 `json:"act_pay_dedc"` MedinsSetlID interface{} `json:"medins_setl_id"` AcctMulaidPay interface{} `json:"acct_mulaid_pay"` ClrWay string `json:"clr_way"` OthPay float64 `json:"oth_pay"` Gend string `json:"gend"` MdtrtID string `json:"mdtrt_id"` AcctPay float64 `json:"acct_pay"` InscpScpAmt float64 `json:"inscp_scp_amt"` Insutype string `json:"insutype"` Invono interface{} `json:"invono"` Enddate string `json:"enddate"` CashPayamt float64 `json:"cash_payamt"` PsnType string `json:"psn_type"` FixmedinsName string `json:"fixmedins_name"` HifpPay float64 `json:"hifp_pay"` NewFlag interface{} `json:"new_flag"` OverlmtSelfpay float64 `json:"overlmt_selfpay"` PreselfpayAmt float64 `json:"preselfpay_amt"` PayLoc string `json:"pay_loc"` ClrType string `json:"clr_type"` RefdSetlFlag string `json:"refd_setl_flag"` CvlservFlag string `json:"cvlserv_flag"` EmpName string `json:"emp_name"` Brdy string `json:"brdy"` Naty string `json:"naty"` Certno string `json:"certno"` DiseCode string `json:"dise_code"` FixmedinsCode string `json:"fixmedins_code"` DedcHospLv string `json:"dedc_hosp_lv"` OpterName string `json:"opter_name"` Balc float64 `json:"balc"` FixmedinsPoolarea string `json:"fixmedins_poolarea"` PsnCertType string `json:"psn_cert_type"` HifobPay float64 `json:"hifob_pay"` MedfeeSumamt float64 `json:"medfee_sumamt"` HifesPay float64 `json:"hifes_pay"` FundPaySumamt float64 `json:"fund_pay_sumamt"` OptTime string `json:"opt_time"` FulamtOwnpayAmt float64 `json:"fulamt_ownpay_amt"` SetlID string `json:"setl_id"` MafPay float64 `json:"maf_pay"` PsnName string `json:"psn_name"` InsuOptins interface{} `json:"insu_optins"` PrefFundPay interface{} `json:"pref_fund_pay"` ClrOptins string `json:"clr_optins"` PoolPropSelfpay float64 `json:"pool_prop_selfpay"` DiseName string `json:"dise_name"` LmtpricHospLv string `json:"lmtpric_hosp_lv"` Age float64 `json:"age"` DtrtCertType string `json:"dtrt_cert_type"` HospLv string `json:"hosp_lv"` PsnCashPay float64 } `json:"setlinfo"` } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype interface{} `json:"signtype"` WarnMsg interface{} `json:"warn_msg"` } type ResultTwelve struct { Cainfo string `json:"cainfo"` ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode int64 `json:"infcode"` Output struct { MdtrtId string `json:"mdtrt_id"` ChrgBchno string `json:"chrg_bchno"` PsnNo string `json:"psn_no"` } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype interface{} `json:"signtype"` WarnMsg interface{} `json:"warn_msg"` } type ResultThirteen struct { ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode int64 `json:"infcode"` Output struct { Result struct { TrtDclaDetlSn string `json:"trt_dcla_detl_sn"` } `json:"result"` } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype interface{} `json:"signtype"` WarnInfo interface{} `json:"warn_info"` } type ResultThirteen10265 struct { ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode string `json:"infcode"` Output struct { Result struct { TrtDclaDetlSn string `json:"trt_dcla_detl_sn"` } `json:"result"` } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype interface{} `json:"signtype"` WarnInfo interface{} `json:"warn_info"` } type ResultFourteen struct { ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode int64 `json:"infcode"` Output struct { } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype interface{} `json:"signtype"` WarnInfo interface{} `json:"warn_info"` } type ResultFourteen10265 struct { ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode string `json:"infcode"` Output struct { } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype interface{} `json:"signtype"` WarnInfo interface{} `json:"warn_info"` } type ResultSixteen struct { Cainfo string `json:"cainfo"` ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode int64 `json:"infcode"` Output struct { Setldetail []interface{} `json:"setldetail"` Setlinfo struct { MdtrtID string `json:"mdtrt_id"` SetlID string `json:"setl_id"` ClrOptins string `json:"clr_optins"` SetlTime string `json:"setl_time"` MedfeeSumamt float64 `json:"medfee_sumamt"` FulamtOwnpayAmt float64 `json:"fulamt_ownpay_amt"` OverlmtSelfpay float64 `json:"overlmt_selfpay"` PreselfpayAmt float64 `json:"preselfpay_amt"` InscpScpAmt float64 `json:"inscp_scp_amt"` ActPayDedc float64 `json:"act_pay_dedc"` HifpPay float64 `json:"hifp_pay"` PoolPropSe float64 `json:"pool_prop_selfpay"` Lfpay float64 `json:"selfpay"` CvlservPay float64 `json:"cvlserv_pay"` HifesPay float64 `json:"hifes_pay"` HifmiPay float64 `json:"hifmi_pay"` HifobPay float64 `json:"hifob_pay"` MafPay float64 `json:"maf_pay"` OthPay float64 `json:"oth_pay"` FundPaySumamt float64 `json:"fund_pay_sumamt"` PsnPartAmt float64 `json:"psn_part_amt"` AcctPay float64 `json:"acct_pay"` Balc float64 `json:"balc"` AcctMulaidPay float64 `json:"acct_mulaid_pay"` HospPartAmt float64 `json:"hosp_part_amt"` MedinsSetlID string `json:"medins_setl_id"` PdnCashPay string `json:"pdn_cash_pay"` } `json:"setlinfo"` } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype interface{} `json:"signtype"` WarnMsg interface{} `json:"warn_msg"` } type ResultSixteen10265 struct { Cainfo string `json:"cainfo"` ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode string `json:"infcode"` Output struct { Setldetail []interface{} `json:"setldetail"` Setlinfo struct { MdtrtID string `json:"mdtrt_id"` SetlID string `json:"setl_id"` ClrOptins string `json:"clr_optins"` SetlTime string `json:"setl_time"` MedfeeSumamt float64 `json:"medfee_sumamt"` FulamtOwnpayAmt float64 `json:"fulamt_ownpay_amt"` OverlmtSelfpay float64 `json:"overlmt_selfpay"` PreselfpayAmt float64 `json:"preselfpay_amt"` InscpScpAmt float64 `json:"inscp_scp_amt"` ActPayDedc float64 `json:"act_pay_dedc"` HifpPay float64 `json:"hifp_pay"` PoolPropSe float64 `json:"pool_prop_selfpay"` Lfpay float64 `json:"selfpay"` CvlservPay float64 `json:"cvlserv_pay"` HifesPay float64 `json:"hifes_pay"` HifmiPay float64 `json:"hifmi_pay"` HifobPay float64 `json:"hifob_pay"` MafPay float64 `json:"maf_pay"` OthPay float64 `json:"oth_pay"` FundPaySumamt float64 `json:"fund_pay_sumamt"` PsnPartAmt float64 `json:"psn_part_amt"` AcctPay float64 `json:"acct_pay"` Balc float64 `json:"balc"` AcctMulaidPay float64 `json:"acct_mulaid_pay"` HospPartAmt float64 `json:"hosp_part_amt"` MedinsSetlID string `json:"medins_setl_id"` PdnCashPay string `json:"pdn_cash_pay"` } `json:"setlinfo"` } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype interface{} `json:"signtype"` WarnMsg interface{} `json:"warn_msg"` } type ResultSeventeen struct { ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode int64 `json:"infcode"` Output struct { SetlListId string `json:"setl_list_id"` } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype string `json:"signtype"` WarnInfo string `json:"warn_info"` } type ResultSeventeenOther struct { ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode string `json:"infcode"` Output struct { SetlListId string `json:"setl_list_id"` } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype string `json:"signtype"` WarnInfo string `json:"warn_info"` } type Result90991 struct { ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode int64 `json:"infcode"` Output struct { Result struct { PsnNo string `json:"psn_no"` CardStat string `json:"card_stat"` Certno string `json:"certno"` PsnName string `json:"psn_name"` CheckStat string `json:"check_stat"` SscnoCheckStat string `json:"sscno_check_stat"` } `json:"result"` } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype interface{} `json:"signtype"` WarnInfo interface{} `json:"warn_info"` } type Result90100 struct { ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode int64 `json:"infcode"` Output struct { PoolareaNo string `json:"poolarea_no"` PoolareaNoName string `json:"poolarea_no_name"` Insutype string `json:"insutype"` InsutypeName string `json:"insutype_name"` ClctType string `json:"clct_type"` ClctTypeName string `json:"clct_type_name"` ClctFlag string `json:"clct_flag"` ClctFlagName string `json:"clct_flag_name"` AccrymBegn string `json:"accrym_begn"` AccrymEnd string `json:"accrym_end"` ClctTime string `json:"clct_time"` ClctstdCrtfRuleCodg string `json:"clctstd_crtf_rule_codg"` } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype interface{} `json:"signtype"` WarnInfo interface{} `json:"warn_info"` } type Custom struct { DetItemFeeSumamt string Cut string FeedetlSn string Price string MedListCodg string Type int64 AdviceId int64 ProjectId int64 ItemId int64 } type Result5301 struct { ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode int64 `json:"infcode"` Output struct { Result []struct { OpspDiseCode string `json:"opsp_dise_code"` OpspDiseName string `json:"opsp_dise_name"` Begndate string `json:"begndate"` Enddate string `json:"enddate"` } `json:"feedetail"` } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype interface{} `json:"signtype"` WarnInfo interface{} `json:"warn_info"` } type Result5301For10265 struct { ErrMsg string `json:"err_msg"` InfRefmsgid string `json:"inf_refmsgid"` Infcode string `json:"infcode"` Output struct { Result []struct { OpspDiseCode string `json:"opsp_dise_code"` OpspDiseName string `json:"opsp_dise_name"` Begndate string `json:"begndate"` Enddate string `json:"enddate"` } `json:"feedetail"` } `json:"output"` RefmsgTime string `json:"refmsg_time"` RespondTime string `json:"respond_time"` Signtype interface{} `json:"signtype"` WarnInfo interface{} `json:"warn_info"` } //获取个人信息----挂号-----上传就诊信息 func (c *HisApiController) GetRegisterInfo() { id, _ := c.GetInt64("id") record_time := c.GetString("record_time") settlementValue, _ := c.GetInt64("settlement_value") medical_insurance_card := c.GetString("medical_insurance_card") name := c.GetString("name") id_card_type, _ := c.GetInt64("id_card_type") certificates, _ := c.GetInt64("certificates") medical_care, _ := c.GetInt64("medical_care") birthday := c.GetString("birthday") id_card := c.GetString("id_card") register_type, _ := c.GetInt64("register") doctor, _ := c.GetInt64("doctor") department, _ := c.GetInt64("department") gender, _ := c.GetInt64("sex") registration_fee, _ := c.GetFloat("registration_fee") medical_expenses, _ := c.GetFloat("medical_expenses") social_type, _ := c.GetInt64("social_type") med_type := c.GetString("social_type") admin_user_id, _ := c.GetInt64("admin_user_id") insuplc_admdvs := c.GetString("insuplc_admdvs") timeLayout := "2006-01-02" loc, _ := time.LoadLocation("Local") birthdays, _ := time.ParseInLocation(timeLayout+" 15:04:05", birthday+" 00:00:00", loc) birthUnix := birthdays.Unix() theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", record_time+" 00:00:00", loc) if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } recordDateTime := theTime.Unix() adminInfo := c.GetAdminUserInfo() var patient service.Patients if id == 0 { patient, _ = service.GetPatientByIDCard(id_card, adminInfo.CurrentOrgId) } else { patient, _ = service.GetPatientByIDTwo(adminInfo.CurrentOrgId, id) } patientPrescription, _ := service.FindPatientPrescriptionInfo(adminInfo.CurrentOrgId, id, recordDateTime) if patientPrescription.ID == 0 { patientPrescription, _ = service.FindLastPatientPrescriptionInfo(adminInfo.CurrentOrgId, id, recordDateTime) } miConfig, _ := service.FindMedicalInsuranceInfo(adminInfo.CurrentOrgId) if patient.ID == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePatientNoExist) return } if len(patient.IdCardNo) == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeIDCartNo) return } config, _ := service.GetMedicalInsuranceConfig(adminInfo.CurrentOrgId) roles, _ := service.GetAdminUserInfoByID(adminInfo.CurrentOrgId, admin_user_id) doctor_info, _ := service.GetAdminUserInfoByID(adminInfo.CurrentOrgId, doctor) //就诊结算未完成,不能进行二次挂号 his, _ := service.GetHisPatientInfoTwo(adminInfo.CurrentOrgId, patient.ID, recordDateTime) if len(his) >= 1 { order, _ := service.GetNewHisOrderTwo(adminInfo.CurrentOrgId, his[len(his)-1].Number, his[len(his)-1].PatientId, recordDateTime) if len(his) >= 1 && order.ID == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisPatientParamWrong) return } } //var register_log string if config.IsOpen == 1 { var res ResultTwo var res10265 ResultTwo10265 var PsnNo string var PsnCertType string var Certno string var PsnName string var Gend string var Naty string var Brdy string var Age float64 var infoStr string var idetinfoStr string var infocode int64 var verify_number string fmt.Println(verify_number) if miConfig.MdtrtareaAdmvs == "421300" { psn_info, _ := service.GetPsnByPatientId(id) PsnNo = psn_info.PsnNo PsnCertType = psn_info.PsnCertType Certno = psn_info.Certno PsnName = psn_info.PsnName Gend = psn_info.Gend Naty = psn_info.Naty Brdy = psn_info.Brdy Age = psn_info.Age infoStr = psn_info.Insuinfo idetinfoStr = psn_info.Idetinfo infocode = 0 } else if miConfig.MdtrtareaAdmvs == "320921" || miConfig.MdtrtareaAdmvs == "320982" { psn_info, _ := service.GetPsnByPatientId(id) PsnNo = psn_info.PsnNo PsnCertType = psn_info.PsnCertType Certno = psn_info.Certno PsnName = psn_info.PsnName Gend = psn_info.Gend Naty = psn_info.Naty Brdy = psn_info.Brdy Age = psn_info.Age infoStr = psn_info.Insuinfo idetinfoStr = psn_info.Idetinfo infocode = 0 verify_number = psn_info.VerifyNumber } else if miConfig.MdtrtareaAdmvs == "350500" { if id_card_type == 1 { psn_info, _ := service.GetPsnByPatientId(id) PsnNo = psn_info.PsnNo PsnCertType = psn_info.PsnCertType Certno = psn_info.Certno PsnName = psn_info.PsnName Gend = psn_info.Gend Naty = psn_info.Naty Brdy = psn_info.Brdy Age = psn_info.Age infoStr = psn_info.Insuinfo idetinfoStr = psn_info.Idetinfo infocode = 0 verify_number = psn_info.VerifyNumber } else if id_card_type == 2 { result, requestLog, errMsgLog := service.FJyb1101(patient.IdCardNo, miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, id_card_type, patient.IdCardNo, certificates, miConfig.Url, miConfig.Cainfo, miConfig.AppSecret, miConfig.SignKey, miConfig.EncKey) fmt.Println(errMsgLog) saveLog(result, requestLog, "1101", "人员基本信息获取") if err := json.Unmarshal([]byte(result), &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } PsnNo = res.Output.Baseinfo.PsnNo PsnCertType = res.Output.Baseinfo.PsnCertType Certno = res.Output.Baseinfo.Certno PsnName = res.Output.Baseinfo.PsnName Gend = res.Output.Baseinfo.Gend Naty = res.Output.Baseinfo.Naty Brdy = res.Output.Baseinfo.Brdy Age = res.Output.Baseinfo.Age Iinfos, _ := json.Marshal(res.Output.Iinfo) Idetinfos, _ := json.Marshal(res.Output.Idetinfo) infoStr = string(Iinfos) idetinfoStr = string(Idetinfos) infocode = res.Infcode } } else if miConfig.MdtrtareaAdmvs == "360399" { if id_card_type == 1 { psn_info, _ := service.GetPsnByPatientId(id) PsnNo = psn_info.PsnNo PsnCertType = psn_info.PsnCertType Certno = psn_info.Certno PsnName = psn_info.PsnName Gend = psn_info.Gend Naty = psn_info.Naty Brdy = psn_info.Brdy Age = psn_info.Age infoStr = psn_info.Insuinfo idetinfoStr = psn_info.Idetinfo infocode = 0 verify_number = psn_info.VerifyNumber } else if id_card_type == 2 { result, requestLog := service.Jxyb1101(patient.IdCardNo, miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, id_card_type, "", "1", miConfig.Url, miConfig.AccessKey, "") saveLog(result, requestLog, "1101", "人员基本信息获取") if err := json.Unmarshal([]byte(result), &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } PsnNo = res.Output.Baseinfo.PsnNo PsnCertType = res.Output.Baseinfo.PsnCertType Certno = res.Output.Baseinfo.Certno PsnName = res.Output.Baseinfo.PsnName Gend = res.Output.Baseinfo.Gend Naty = res.Output.Baseinfo.Naty Brdy = res.Output.Baseinfo.Brdy Age = res.Output.Baseinfo.Age Iinfos, _ := json.Marshal(res.Output.Iinfo) Idetinfos, _ := json.Marshal(res.Output.Idetinfo) infoStr = string(Iinfos) idetinfoStr = string(Idetinfos) infocode = res.Infcode } } else if miConfig.MdtrtareaAdmvs == "430800" { if id_card_type == 1 { psn_info, _ := service.GetPsnByPatientId(id) PsnNo = psn_info.PsnNo PsnCertType = psn_info.PsnCertType Certno = psn_info.Certno PsnName = psn_info.PsnName Gend = psn_info.Gend Naty = psn_info.Naty Brdy = psn_info.Brdy Age = psn_info.Age infoStr = psn_info.Insuinfo idetinfoStr = psn_info.Idetinfo infocode = 0 verify_number = psn_info.VerifyNumber } else if id_card_type == 2 { result, requestLog := service.Hnyb1101(patient.IdCardNo, miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, id_card_type, "", "1", miConfig.Url, miConfig.AccessKey, "", "", Certno) saveLog(result, requestLog, "1101", "人员基本信息获取") if err := json.Unmarshal([]byte(result), &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } PsnNo = res.Output.Baseinfo.PsnNo PsnCertType = res.Output.Baseinfo.PsnCertType Certno = res.Output.Baseinfo.Certno PsnName = res.Output.Baseinfo.PsnName Gend = res.Output.Baseinfo.Gend Naty = res.Output.Baseinfo.Naty Brdy = res.Output.Baseinfo.Brdy Age = res.Output.Baseinfo.Age Iinfos, _ := json.Marshal(res.Output.Iinfo) Idetinfos, _ := json.Marshal(res.Output.Idetinfo) infoStr = string(Iinfos) idetinfoStr = string(Idetinfos) infocode = res.Infcode } } else if miConfig.MdtrtareaAdmvs == "131023" { var result string var requestLog string result, requestLog = service.HeBeiyb1101(patient.IdCardNo, miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, id_card_type, "", strconv.FormatInt(certificates, 10), "") if id_card_type == 4 { psn_info, _ := service.GetPsnByPatientId(id) PsnNo = psn_info.PsnNo PsnCertType = psn_info.PsnCertType Certno = psn_info.Certno PsnName = psn_info.PsnName Gend = psn_info.Gend Naty = psn_info.Naty Brdy = psn_info.Brdy Age = psn_info.Age infoStr = psn_info.Insuinfo idetinfoStr = psn_info.Idetinfo infocode = 0 verify_number = psn_info.VerifyNumber } else { saveLog(result, requestLog, "1101", "人员基本信息获取") if miConfig.Code == "H15049901371" { if err := json.Unmarshal([]byte(result), &res10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.ErrMsg = res10265.ErrMsg res.Output = res10265.Output res.InfRefmsgid = res10265.InfRefmsgid } else { if err := json.Unmarshal([]byte(result), &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } PsnNo = res.Output.Baseinfo.PsnNo PsnCertType = res.Output.Baseinfo.PsnCertType Certno = res.Output.Baseinfo.Certno PsnName = res.Output.Baseinfo.PsnName Gend = res.Output.Baseinfo.Gend Naty = res.Output.Baseinfo.Naty Brdy = res.Output.Baseinfo.Brdy Age = res.Output.Baseinfo.Age Iinfos, _ := json.Marshal(res.Output.Iinfo) Idetinfos, _ := json.Marshal(res.Output.Idetinfo) infoStr = string(Iinfos) idetinfoStr = string(Idetinfos) if miConfig.Code == "H15049901371" { infocode, _ = strconv.ParseInt(res10265.Infcode, 10, 64) } else { infocode = res.Infcode } } } else { var result string var requestLog string if miConfig.UserOrgId == 10138 { if id_card_type != 4 { //psn_info, _ := service.GetPsnByPatientId(id) //result, requestLog = service.Gdyb1101ForEleCert(miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, psn_info.VerifyNumber) result, requestLog = service.Gdyb1101D(patient.IdCardNo, miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, id_card_type, "", strconv.FormatInt(certificates, 10), name, record_time) } } else { result, requestLog = service.Gdyb1101(patient.IdCardNo, miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, id_card_type, "", strconv.FormatInt(certificates, 10), name) } if id_card_type == 4 { psn_info, _ := service.GetPsnByPatientId(id) PsnNo = psn_info.PsnNo PsnCertType = psn_info.PsnCertType Certno = psn_info.Certno PsnName = psn_info.PsnName Gend = psn_info.Gend Naty = psn_info.Naty Brdy = psn_info.Brdy Age = psn_info.Age infoStr = psn_info.Insuinfo idetinfoStr = psn_info.Idetinfo infocode = 0 verify_number = psn_info.VerifyNumber } else { saveLog(result, requestLog, "1101", "人员基本信息获取") if miConfig.Code == "H15049901371" { if err := json.Unmarshal([]byte(result), &res10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.ErrMsg = res10265.ErrMsg res.Output = res10265.Output res.InfRefmsgid = res10265.InfRefmsgid } else { if err := json.Unmarshal([]byte(result), &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } PsnNo = res.Output.Baseinfo.PsnNo PsnCertType = res.Output.Baseinfo.PsnCertType Certno = res.Output.Baseinfo.Certno PsnName = res.Output.Baseinfo.PsnName Gend = res.Output.Baseinfo.Gend Naty = res.Output.Baseinfo.Naty Brdy = res.Output.Baseinfo.Brdy Age = res.Output.Baseinfo.Age Iinfos, _ := json.Marshal(res.Output.Iinfo) Idetinfos, _ := json.Marshal(res.Output.Idetinfo) infoStr = string(Iinfos) idetinfoStr = string(Idetinfos) if miConfig.Code == "H15049901371" { infocode, _ = strconv.ParseInt(res10265.Infcode, 10, 64) } else { infocode = res.Infcode } } } if infocode == 0 { his := models.VMHisPatient{ Name: name, Gender: gender, Birthday: birthUnix, MedicalTreatmentType: medical_care, IdType: certificates, IdCardNo: id_card, BalanceAccountsType: settlementValue, SocialType: social_type, MedicalInsuranceNumber: medical_insurance_card, RegisterType: register_type, RegisterCost: registration_fee, TreatmentCost: medical_expenses, Status: 1, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), PsnNo: PsnNo, PsnCertType: PsnCertType, Certno: Certno, PsnName: PsnName, Gend: Gend, Naty: Naty, Brdy: Brdy, Age: Age, Iinfo: infoStr, Idetinfo: idetinfoStr, PatientId: patient.ID, RecordDate: theTime.Unix(), UserOrgId: adminInfo.CurrentOrgId, AdminUserId: admin_user_id, IsReturn: 1, IdCardType: id_card_type, Doctor: doctor, Departments: department, } timestamp := time.Now().Unix() tempTime := time.Unix(timestamp, 0) timeFormat := tempTime.Format("20060102150405") chrgBchno := rand.Intn(100000) + 10000 ipt_otp_no := timeFormat + strconv.FormatInt(int64(chrgBchno), 10) + strconv.FormatInt(his.PatientId, 10) his.Number = ipt_otp_no //count, _ := service.FindHisRegisterRecord(theTime.Unix(), patient.ID, adminInfo.CurrentOrgId) department, _ := service.GetDepartMentDetail(department) //doctor_id := strconv.FormatInt(patientPrescription., 10) IdCardNo := "" if id_card_type == 1 { // IdCardNo = medical_insurance_card IdCardNo = patient.IdCardNo } else { IdCardNo = patient.IdCardNo } var rf []*ResultFive json.Unmarshal([]byte(his.Iinfo), &rf) var insutypes []*ResultFive var insutype string var insuplc_admdvs_temp string var is390 int = 0 var is310 int = 0 for _, item := range rf { if (item.Insutype == "390" && item.PsnInsuStas == "1") || (item.Insutype == "310" && item.PsnInsuStas == "1") { insutypes = append(insutypes, item) } } if len(insutypes) == 1 { insutype = insutypes[0].Insutype insuplc_admdvs = insutypes[0].InsuplcAdmdvs } else { for _, i := range insutypes { if i.Insutype == "390" { is390 = 1 } if i.Insutype == "310" { is310 = 1 } } } if is390 == 1 { insutype = "390" } if is310 == 1 { insutype = "310" } if len(insutypes) == 0 { insutype = "310" } if len(insutypes) == 2 { insutype = med_type } if len(med_type) > 0 { insutype = med_type } var infocode int64 var resThree ResultThree var resThree10265 ResultThree10265 if len(insuplc_admdvs) == 0 { insuplc_admdvs_temp = miConfig.InsuplcAdmdvs } else { insuplc_admdvs_temp = insuplc_admdvs } if miConfig.MdtrtareaAdmvs == "350500" { var rf []*ResultIDInfo json.Unmarshal([]byte(idetinfoStr), &rf) if len(rf) > 0 { if len(rf[0].Memo) > 0 { content := rf[0].Memo[1:len(rf[0].Memo)] content2 := content[:len(rf[0].Memo)-1] fmt.Println(content2) var rf2 ResultMemo json.Unmarshal([]byte(content2), &rf2) fmt.Println(rf2) fmt.Println(rf2.InsuAdmdvs) } } } if miConfig.MdtrtareaAdmvs == "421300" { hb_doctor_info, _ := service.GetAdminUserInfoByID(adminInfo.CurrentOrgId, patientPrescription.DoctorId) api := "http://192.168.124.4:9532/" + "hbyb/2201?psn_no=" + PsnNo + "&insutype=" + insutype + "&cert_no=" + Certno + "&ipt_otp_no=" + ipt_otp_no + "&org_name=" + miConfig.OrgName + "&doctor=" + hb_doctor_info.UserName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + insuplc_admdvs_temp + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&id_card_type=" + strconv.FormatInt(id_card_type, 10) + "&dept_code=" + department.Number + "&dept=" + department.Name + "&doctor_id=" + hb_doctor_info.DoctorNumber + "&doctor_name=" + hb_doctor_info.UserName + "&opter=" + roles.UserName resp, requestErr := http.Get(api) if requestErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) result, _ := json.Marshal(respJSON) if err := json.Unmarshal([]byte(result), &resThree); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } infocode = resThree.Infcode } else if miConfig.MdtrtareaAdmvs == "320921" || miConfig.MdtrtareaAdmvs == "320982" { psn_info, _ := service.GetPsnByPatientId(id) his.PsnNo = psn_info.PsnNo psn_info.VerifyNumber = strings.Replace(psn_info.VerifyNumber, "+", "%2B", -1) var cert_no string if id_card_type == 3 { psn_info.VerifyNumber = IdCardNo + "|" + psn_info.VerifyNumber cert_no = IdCardNo } else if id_card_type == 4 { cert_no = IdCardNo psn_info.VerifyNumber = psn_info.VerifyNumber } else { bas := strings.Split(psn_info.CardInfo, "|") cert_no = bas[2] } var hisPrescription []*models.HisPrescription for _, item := range rf { if item.Insutype == insutype { //insuplc_admdvs = item.InsuplcAdmdvs his.InsuplcAdmdvs = insuplc_admdvs } } his.Insutype = insutype res3101 := Check3101ForOne(c, patient.ID, his, admin_user_id, "1", record_time, hisPrescription) fmt.Println(res3101) fmt.Println(res3101.Infcode) if res3101.Infcode == "0" { fmt.Println("33333333") if len(res3101.Output.Result) > 0 { fmt.Println("222222") for _, item := range res3101.Output.Result { if len(res3101.ErrMsg) == 0 { res3101.ErrMsg = item.VolaCont } else { res3101.ErrMsg = res3101.ErrMsg + "\n" + item.VolaCont } } c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res3101.ErrMsg, }) return } else { fmt.Println("11111") var api string if miConfig.MdtrtareaAdmvs == "320921" { api = "http://192.168.2.110:9532/" + "jsyb/2201?psn_no=" + PsnNo + "&insutype=" + insutype + "&cert_no=" + cert_no + "&ipt_otp_no=" + ipt_otp_no + "&org_name=" + miConfig.OrgName + "&doctor=" + roles.UserName + "&doctor_name=" + doctor_info.UserName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + insuplc_admdvs_temp + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&id_card_type=" + strconv.FormatInt(id_card_type, 10) + "&dept_code=" + department.Number + "&dept=" + department.Name + "&doctor_id=" + doctor_info.DoctorNumber + "&url=" + miConfig.Url + "&ak=" + miConfig.AccessKey + "&verify_number=" + psn_info.VerifyNumber + "&cainfo=" + miConfig.Cainfo } else { api = "http://192.168.5.251:9532/" + "jsyb/2201?psn_no=" + PsnNo + "&insutype=" + insutype + "&cert_no=" + cert_no + "&ipt_otp_no=" + ipt_otp_no + "&org_name=" + miConfig.OrgName + "&doctor=" + roles.UserName + "&doctor_name=" + doctor_info.UserName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + insuplc_admdvs_temp + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&id_card_type=" + strconv.FormatInt(id_card_type, 10) + "&dept_code=" + department.Number + "&dept=" + department.Name + "&doctor_id=" + doctor_info.DoctorNumber + "&url=" + miConfig.Url + "&ak=" + miConfig.AccessKey + "&verify_number=" + psn_info.VerifyNumber + "&cainfo=" + miConfig.Cainfo } resp, requestErr := http.Get(api) if requestErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) result, _ := json.Marshal(respJSON) if err := json.Unmarshal([]byte(result), &resThree10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } resThree.ErrMsg = resThree10265.ErrMsg resThree.Output = resThree10265.Output resThree.InfRefmsgid = resThree10265.InfRefmsgid infocode, _ = strconv.ParseInt(resThree10265.Infcode, 10, 64) } } else if res3101.Infcode != "0" { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res3101.ErrMsg, }) return } } else if miConfig.MdtrtareaAdmvs == "350500" { psn_info, _ := service.GetPsnByPatientId(id) var cert_no string if id_card_type == 1 { cert_no = strings.Split(psn_info.CardInfo, "|")[0] } else if id_card_type == 4 { cert_no = psn_info.VerifyNumber } else { cert_no = psn_info.VerifyNumber } result, requestLog, _ := service.FJyb2201(psn_info.PsnNo, insutype, IdCardNo, miConfig.OrgName, doctor_info.UserName, ipt_otp_no, department.Name, miConfig.Code, department.Number, doctor_info.DoctorNumber, insuplc_admdvs_temp, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, id_card_type, roles.UserName, doctor_info.UserName, miConfig.Url, miConfig.Code, miConfig.AppSecret, miConfig.SignKey, miConfig.EncKey, cert_no) saveLog(result, requestLog, "2201", "挂号") if miConfig.Code == "H15049901371" { if err := json.Unmarshal([]byte(result), &resThree10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } resThree.ErrMsg = resThree10265.ErrMsg resThree.Output = resThree10265.Output resThree.InfRefmsgid = resThree10265.InfRefmsgid } else { if err := json.Unmarshal([]byte(result), &resThree); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } infocode, _ = strconv.ParseInt(resThree10265.Infcode, 10, 64) } else if miConfig.MdtrtareaAdmvs == "360399" { //江西萍乡 psn_info, _ := service.GetPsnByPatientId(id) var result string var requestLog string if id_card_type == 1 { bas := strings.Split(psn_info.CardInfo, "|") basNumber := bas[2] card_sn := bas[3] result, requestLog = service.Jxyb2201(PsnNo, insutype, IdCardNo, miConfig.OrgName, roles.UserName, ipt_otp_no, department.Name, miConfig.Code, department.Number, doctor_info.DoctorNumber, miConfig.MdtrtareaAdmvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, id_card_type, doctor_info.UserName, miConfig.Url, miConfig.AccessKey, basNumber, "", card_sn) saveLog(result, requestLog, "2201A", "挂号") } else if id_card_type == 2 { result, requestLog = service.Jxyb2201(PsnNo, insutype, IdCardNo, miConfig.OrgName, roles.UserName, ipt_otp_no, department.Name, miConfig.Code, department.Number, doctor_info.DoctorNumber, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, id_card_type, doctor_info.UserName, miConfig.Url, miConfig.AccessKey, IdCardNo, "", "") saveLog(result, requestLog, "2201A", "挂号") } else { result, requestLog = service.Jxyb2201(PsnNo, insutype, IdCardNo, miConfig.OrgName, roles.UserName, ipt_otp_no, department.Name, miConfig.Code, department.Number, doctor_info.DoctorNumber, insuplc_admdvs_temp, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, id_card_type, doctor_info.UserName, miConfig.Url, miConfig.AccessKey, psn_info.VerifyNumber, "", "") saveLog(result, requestLog, "2201A", "挂号") } if err := json.Unmarshal([]byte(result), &resThree); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } infocode = resThree.Infcode } else if miConfig.MdtrtareaAdmvs == "430800" { //江西萍乡 psn_info, _ := service.GetPsnByPatientId(id) var result string var requestLog string if id_card_type == 1 { bas := strings.Split(psn_info.CardInfo, "|") basNumber := bas[2] card_sn := bas[3] result, requestLog = service.Hnyb2201(PsnNo, insutype, IdCardNo, miConfig.OrgName, roles.UserName, ipt_otp_no, department.Name, miConfig.Code, department.Number, doctor_info.DoctorNumber, miConfig.MdtrtareaAdmvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, id_card_type, doctor_info.UserName, miConfig.Url, miConfig.AccessKey, basNumber, "", card_sn) saveLog(result, requestLog, "2201A", "挂号") } else if id_card_type == 2 { result, requestLog = service.Hnyb2201(PsnNo, insutype, IdCardNo, miConfig.OrgName, roles.UserName, ipt_otp_no, department.Name, miConfig.Code, department.Number, doctor_info.DoctorNumber, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, id_card_type, doctor_info.UserName, miConfig.Url, miConfig.AccessKey, IdCardNo, "", "") saveLog(result, requestLog, "2201A", "挂号") } else { result, requestLog = service.Hnyb2201(PsnNo, insutype, IdCardNo, miConfig.OrgName, roles.UserName, ipt_otp_no, department.Name, miConfig.Code, department.Number, doctor_info.DoctorNumber, insuplc_admdvs_temp, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, id_card_type, doctor_info.UserName, miConfig.Url, miConfig.AccessKey, psn_info.VerifyNumber, "", "") saveLog(result, requestLog, "2201A", "挂号") } if err := json.Unmarshal([]byte(result), &resThree); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } infocode = resThree.Infcode } else if miConfig.MdtrtareaAdmvs == "131023" { psn_info, _ := service.GetPsnByPatientId(id) result, requestLog := service.HeBeiyb2201A(PsnNo, insutype, IdCardNo, miConfig.OrgName, roles.UserName, ipt_otp_no, department.Name, miConfig.Code, department.Number, doctor_info.DoctorNumber, insuplc_admdvs_temp, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, id_card_type, doctor_info.UserName, record_time, psn_info.VerifyNumber) saveLog(result, requestLog, "2201A", "挂号") if miConfig.Code == "H15049901371" { if err := json.Unmarshal([]byte(result), &resThree10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } resThree.ErrMsg = resThree10265.ErrMsg resThree.Output = resThree10265.Output resThree.InfRefmsgid = resThree10265.InfRefmsgid } else { if err := json.Unmarshal([]byte(result), &resThree); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } if miConfig.Code == "H15049901371" { infocode, _ = strconv.ParseInt(resThree10265.Infcode, 10, 64) } else { infocode = resThree.Infcode } } else { psn_info, _ := service.GetPsnByPatientId(id) result, requestLog := service.Gdyb2201A(PsnNo, insutype, IdCardNo, miConfig.OrgName, roles.UserName, ipt_otp_no, department.Name, miConfig.Code, department.Number, doctor_info.DoctorNumber, insuplc_admdvs_temp, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, id_card_type, doctor_info.UserName, record_time, psn_info.VerifyNumber) saveLog(result, requestLog, "2201A", "挂号") if miConfig.Code == "H15049901371" { if err := json.Unmarshal([]byte(result), &resThree10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } resThree.ErrMsg = resThree10265.ErrMsg resThree.Output = resThree10265.Output resThree.InfRefmsgid = resThree10265.InfRefmsgid } else { if err := json.Unmarshal([]byte(result), &resThree); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } if miConfig.Code == "H15049901371" { infocode, _ = strconv.ParseInt(resThree10265.Infcode, 10, 64) } else { infocode = resThree.Infcode } } if infocode != 0 { adminUser := c.GetAdminUserInfo() errlog := &models.HisOrderError{ UserOrgId: adminUser.CurrentOrgId, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), ErrMsg: resThree.ErrMsg, Status: 1, PatientId: id, RecordTime: recordDateTime, Stage: 2, } service.CreateErrMsgLog(errlog) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": resThree.ErrMsg, }) return } his.Number = resThree.Output.Data.MdtrtID his.PsnNo = resThree.Output.Data.PsnNo his.IptOtpNo = resThree.Output.Data.IptOtpNo his.IdCardNo = patient.IdCardNo his.PhoneNumber = patient.Phone his.UserOrgId = adminInfo.CurrentOrgId his.Insutype = insutype his.Ctime = time.Now().Unix() his.Mtime = time.Now().Unix() his.InsuplcAdmdvs = insuplc_admdvs_temp his.Status = 1 service.UpdateHisPatientStatus(&his) service.UpdateHisPrescriptionHisID(his.ID, patient.ID, recordDateTime, adminInfo.CurrentOrgId) c.ServeSuccessJSON(map[string]interface{}{ "his_info": his, }) } else { adminUser := c.GetAdminUserInfo() errlog := &models.HisOrderError{ UserOrgId: adminUser.CurrentOrgId, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), ErrMsg: res.ErrMsg, Status: 1, PatientId: id, RecordTime: recordDateTime, Stage: 1, } service.CreateErrMsgLog(errlog) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.ErrMsg, }) return //c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeGdybOneException) } } } //上传明细----预结算----确认订单 func (c *HisApiController) GetUploadInfo() { id, _ := c.GetInt64("id") record_time := c.GetString("record_time") his_patient_id, _ := c.GetInt64("his_patient_id") order_id, _ := c.GetInt64("order_id") pay_way, _ := c.GetInt64("pay_way") pay_price, _ := c.GetFloat("pay_price") pay_card_no := c.GetString("pay_card_no") discount_price, _ := c.GetFloat("discount_price") preferential_price, _ := c.GetFloat("preferential_price") reality_price, _ := c.GetFloat("reality_price") found_price, _ := c.GetFloat("found_price") medical_insurance_price, _ := c.GetFloat("medical_insurance_price") private_price, _ := c.GetFloat("private_price") settle_accounts_type, _ := c.GetInt64("settle_accounts_type") admin_user_id, _ := c.GetInt64("admin_user_id") fapiao_code := c.GetString("fapiao_code") fapiao_number := c.GetString("fapiao_number") diagnosis_id := c.GetString("diagnosis") sick_type, _ := c.GetInt64("sick_type") reg_type, _ := c.GetInt64("p_type") begin_time := c.GetString("begin_time") id_str := c.GetString("ids") ids_arr := strings.Split(id_str, ",") timeLayout := "2006-01-02" loc, _ := time.LoadLocation("Local") theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", record_time+" 00:00:00", loc) if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } recordDateTime := theTime.Unix() adminUser := c.GetAdminUserInfo() var tempOrder models.HisOrder tempOrder, _ = service.GetHisOrderByID(order_id) var prescriptions []*models.HisPrescription var start_time int64 var end_time int64 //押金模块 dec_way := c.GetString("dec_way") //是否使用押金支付bool类型 tmp_decimal := c.GetString("tmp_decimal") var decimal float64 //本次使用的押金 var errmsg error if dec_way == "true" && tmp_decimal == "0" || dec_way == "true" && tmp_decimal == "" { c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "押金不能为0") return } if len(tmp_decimal) > 0 { if tmp_decimal[0] == 45 { c.ServeFailJsonSend(enums.ErrorCodeParamWrong, "押金不能为负数") return } } tt, errs := strconv.ParseFloat(tmp_decimal, 64) fmt.Println(errs) decimal = tt //if adminUser.CurrentOrgId == 10106{ // if len(fapiao_code) == 0{ // fapiao_code = "144072080589" // } // if len(fapiao_number) == 0{ // order, _ := service.GetLastHisOrder(adminUser.CurrentOrgId) // if order.ID == 0{ // fapiao_number = "00001520" // }else{ // //fapiao_code = "00001520" // fpNumber, _ := strconv.Atoi(order.FaPiaoNumber) // var zero string // if fpNumber >= 1000{ // zero = "0000" + strconv.Itoa(fpNumber) // }else if fpNumber >= 10000{ // zero = "000" + strconv.Itoa(fpNumber) // } else if fpNumber >= 100000{ // zero = "00" + strconv.Itoa(fpNumber) // } else if fpNumber >= 1000000{ // zero = "0" + strconv.Itoa(fpNumber) // }else { // zero = strconv.Itoa(fpNumber) // } // fapiao_number = zero // } // } //} roles, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) his, _ := service.GetNewHisPatientInfo(adminUser.CurrentOrgId, his_patient_id, recordDateTime) var patientPrescription models.HisPrescriptionInfo patientPrescription, _ = service.FindHisPatientPrescriptionInfo(adminUser.CurrentOrgId, his_patient_id, recordDateTime) if patientPrescription.ID == 0 { patientPrescription, _ = service.FindLastPatientPrescriptionInfo(adminUser.CurrentOrgId, id, recordDateTime) } miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) department, _ := service.GetDepartMentDetail(patientPrescription.Departments) doctor_info, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, patientPrescription.DoctorId) diagnosis_ids := strings.Split(diagnosis_id, ",") var config []*models.HisXtDiagnoseConfig for _, item := range diagnosis_ids { id, _ := strconv.ParseInt(item, 10, 64) diagnosisConfig, _ := service.FindDiagnoseById(id) config = append(config, &diagnosisConfig) } sickConfig, _ := service.FindSickById(sick_type) //if tempOrder.ID == 0 { // tempOrder, _ = service.GetTodayHisOrder(adminUser.CurrentOrgId, id, recordDateTime, his.Number) //} if tempOrder.ID == 0 { var result string var requestLog string var res2 ResultSix var ressix10265 ResultSix10265 if miConfig.MdtrtareaAdmvs == "421300" { data := make(map[string]interface{}) client := &http.Client{} data["psn_no"] = his.PsnNo data["mdtrt_id"] = his.Number data["opter"] = roles.UserName data["org_name"] = miConfig.OrgName data["med_type"] = strconv.FormatInt(reg_type, 10) data["doctor_id"] = doctor_info.DoctorNumber data["doctor_name"] = doctor_info.UserName data["department"] = department.Name data["fixmedins_code"] = miConfig.Code data["insuplc_admdvs"] = his.InsuplcAdmdvs data["mdtrtarea_admvs"] = miConfig.MdtrtareaAdmvs data["secret_key"] = miConfig.SecretKey data["sick_code"] = sickConfig.CountryCode data["sick_name"] = sickConfig.ClassName data["dept"] = strconv.FormatInt(department.ID, 10) data["config"] = config data["begin_time"] = begin_time bytesData, _ := json.Marshal(data) req, _ := http.NewRequest("POST", "http://192.168.124.4:9532/"+"hbyb/2203", bytes.NewReader(bytesData)) resp, _ := client.Do(req) defer resp.Body.Close() body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(body), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) userJSONBytes, _ := json.Marshal(respJSON) fmt.Println("log") fmt.Println(string(userJSONBytes)) if err := json.Unmarshal(userJSONBytes, &res2); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "320921" || miConfig.MdtrtareaAdmvs == "320982" { data := make(map[string]interface{}) client := &http.Client{} data["psn_no"] = his.PsnNo data["mdtrt_id"] = his.Number data["doctor"] = roles.UserName data["department"] = department.Name data["org_name"] = miConfig.OrgName data["med_type"] = strconv.FormatInt(reg_type, 10) data["doctor_id"] = doctor_info.DoctorNumber data["new_doctor_name"] = doctor_info.UserName data["fixmedins_code"] = miConfig.Code data["insuplc_admdvs"] = his.InsuplcAdmdvs data["mdtrtarea_admvs"] = miConfig.MdtrtareaAdmvs data["secret_key"] = miConfig.SecretKey data["sick_code"] = sickConfig.CountryCode data["sick_name"] = sickConfig.ClassName data["url"] = miConfig.Url data["ak"] = miConfig.AccessKey data["begin_time"] = begin_time data["cainfo"] = miConfig.Cainfo data["dept"] = strconv.FormatInt(department.ID, 10) data["config"] = config bytesData, _ := json.Marshal(data) var req *http.Request if miConfig.MdtrtareaAdmvs == "320921" { req, _ = http.NewRequest("POST", "http://192.168.2.110:9532/"+"jsyb/2203", bytes.NewReader(bytesData)) //api = "http://192.168.2.110:9532/" + "jsyb/readcard?" + "fixmedins_code=" + miConfig.Code + "&secret_key=" + miConfig.SecretKey + "&ak=" + miConfig.AccessKey + "&org_name=" + miConfig.OrgName + "&doctor=" + roles.UserName + // "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&url=" + miConfig.Url + "&cainfo=" + miConfig.Cainfo } else { req, _ = http.NewRequest("POST", "http://192.168.5.251:9532/"+"jsyb/2203", bytes.NewReader(bytesData)) } resp, _ := client.Do(req) defer resp.Body.Close() body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(body), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) userJSONBytes, _ := json.Marshal(respJSON) fmt.Println("log") fmt.Println(string(userJSONBytes)) if err := json.Unmarshal(userJSONBytes, &ressix10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res2.InfRefmsgid = ressix10265.InfRefmsgid res2.Output = ressix10265.Output res2.ErrMsg = ressix10265.ErrMsg res2.Cainfo = ressix10265.Cainfo res2.WarnMsg = ressix10265.WarnMsg infocode, _ := strconv.ParseInt(ressix10265.Infcode, 10, 64) res2.Infcode = infocode } else if miConfig.MdtrtareaAdmvs == "350500" { result, requestLog, _ = service.FJyb2203(his.PsnNo, his.Number, doctor_info.UserName, department.Name, miConfig.OrgName, strconv.FormatInt(reg_type, 10), doctor_info.DoctorNumber, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, sickConfig.ContentCode, sickConfig.ClassName, roles.UserName, config, begin_time, doctor_info.UserName, roles.UserName, miConfig.Url, miConfig.Code, miConfig.AppSecret, miConfig.SignKey, miConfig.EncKey) saveLog(result, requestLog, "2203", "上传就诊信息") var respJSON2 map[string]interface{} if err := json.Unmarshal([]byte(string(result)), &respJSON2); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } userJSONBytes2, _ := json.Marshal(respJSON2) if err := json.Unmarshal(userJSONBytes2, &res2); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else { if miConfig.MdtrtareaAdmvs == "440781" { // result, requestLog = service.Gdyb2203A(his.PsnNo, his.Number, doctor_info.UserName, department.Name, miConfig.OrgName, strconv.FormatInt(reg_type, 10), doctor_info.DoctorNumber, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, sickConfig.ContentCode, sickConfig.ClassName, roles.UserName, config, begin_time) } else { if miConfig.Code == "H15049901371" { //赤峰地区国家医保医疗类别 //职工透析:医疗类别选特殊情况门诊990502 //居民定额血透门慢: 医疗类别选门诊慢病140104 var med_type string if his.Insutype == "390" { if reg_type == 14 { med_type = "9933" } else if reg_type == 11 { med_type = "11" } } else if his.Insutype == "310" { if reg_type == 14 { med_type = "990502" } else if reg_type == 11 { med_type = "11" } } result, requestLog = service.Gdyb2203A(his.PsnNo, his.Number, doctor_info.UserName, department.Name, miConfig.OrgName, med_type, doctor_info.DoctorNumber, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, sickConfig.ContentCode, sickConfig.ClassName, roles.UserName, config, begin_time) } else { result, requestLog = service.Gdyb2203(his.PsnNo, his.Number, doctor_info.UserName, department.Name, miConfig.OrgName, strconv.FormatInt(reg_type, 10), doctor_info.DoctorNumber, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, sickConfig.ContentCode, sickConfig.ClassName, roles.UserName, config, begin_time) } } saveLog(result, requestLog, "2203", "上传就诊信息") var respJSON2 map[string]interface{} if err := json.Unmarshal([]byte(string(result)), &respJSON2); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } userJSONBytes2, _ := json.Marshal(respJSON2) if miConfig.Code == "H15049901371" { if err := json.Unmarshal(userJSONBytes2, &ressix10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res2.InfRefmsgid = ressix10265.InfRefmsgid res2.Output = ressix10265.Output res2.ErrMsg = ressix10265.ErrMsg res2.Cainfo = ressix10265.Cainfo res2.WarnMsg = ressix10265.WarnMsg infocode, _ := strconv.ParseInt(ressix10265.Infcode, 10, 64) res2.Infcode = infocode } else { if err := json.Unmarshal(userJSONBytes2, &res2); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } } if res2.Infcode != 0 { adminUser := c.GetAdminUserInfo() errlog := &models.HisOrderError{ UserOrgId: adminUser.CurrentOrgId, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), ErrMsg: res2.ErrMsg, Status: 1, PatientId: id, RecordTime: recordDateTime, Stage: 3, } service.CreateErrMsgLog(errlog) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res2.ErrMsg, }) return } else { his.Diagnosis = diagnosis_id his.SickType = sickConfig.ID //var p_type int64 //if reg_type == 1111 || reg_type == 1112 { // p_type = 11 // //} his.PType = fmt.Sprintf("%d", reg_type) service.UpdateHisPatientThree(&his) data := make(map[string]interface{}) if settle_accounts_type == 1 { //日结 if reg_type == 11 || reg_type == 1111 || reg_type == 1112 { prescriptions, _ = service.GetPrescriptionByIds(ids_arr, adminUser.CurrentOrgId) } else { prescriptions, _ = service.GetNewHisPrescription(adminUser.CurrentOrgId, his_patient_id, recordDateTime, strconv.Itoa(int(reg_type))) } //prescriptions, _ = service.GetNewHisPrescriptionTwo(adminUser.CurrentOrgId, his_patient_id, recordDateTime, reg_type) data["pre"] = prescriptions } else { //月结 start_time_str := c.GetString("start_time") end_time_str := c.GetString("end_time") timeLayout := "2006-01-02" loc, _ := time.LoadLocation("Local") theStartTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time_str+" 00:00:00", loc) if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } recordStartTime := theStartTime.Unix() start_time = recordStartTime theEndTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time_str+" 00:00:00", loc) if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } recordEndTime := theEndTime.Unix() end_time = recordEndTime prescriptions, _ = service.GetMonthHisPrescriptionTwo(adminUser.CurrentOrgId, id, recordStartTime, recordEndTime, reg_type) data["pre"] = prescriptions } timestamp := time.Now().Unix() tempTime := time.Unix(timestamp, 0) timeFormat := tempTime.Format("20060102150405") chrgBchno := rand.Intn(100000) + 10000 chrg_bchno := timeFormat + strconv.FormatInt(int64(chrgBchno), 10) + strconv.FormatInt(his.PatientId, 10) strconv.FormatInt(his.PatientId, 10) client := &http.Client{} data["psn_no"] = his.PsnNo data["mdtrt_id"] = his.Number data["chrg_bchno"] = chrg_bchno data["org_name"] = miConfig.OrgName data["doctor"] = doctor_info.UserName data["doctor_id"] = doctor_info.DoctorNumber data["dept"] = strconv.FormatInt(patientPrescription.Departments, 10) data["fixmedins_code"] = miConfig.Code data["opter"] = roles.UserName data["dept_code"] = department.Number data["insuplc_admdvs"] = his.InsuplcAdmdvs data["mdtrtarea_admvs"] = miConfig.MdtrtareaAdmvs data["secret_key"] = miConfig.SecretKey data["balance_accounts_type"] = strconv.FormatInt(his.BalanceAccountsType, 10) data["url"] = miConfig.Url data["ak"] = miConfig.AccessKey data["new_doctor_name"] = patientPrescription.Doctor data["diag_code"] = sickConfig.CountryCode data["cainfo"] = miConfig.Cainfo data["opter"] = roles.UserName var ids []int64 for _, item := range prescriptions { ids = append(ids, item.ID) } config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId) if config.IsOpen == 1 { //对接了医保,走医保流程 var res ResultFour var resFour10265 ResultFour10265 if miConfig.MdtrtareaAdmvs == "421300" { bytesData, _ := json.Marshal(data) req, _ := http.NewRequest("POST", "http://192.168.124.4:9532/"+"hbyb/2204", bytes.NewReader(bytesData)) resp, _ := client.Do(req) defer resp.Body.Close() body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(body), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) userJSONBytes, _ := json.Marshal(respJSON) fmt.Println("log") fmt.Println(string(userJSONBytes)) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "320921" || miConfig.MdtrtareaAdmvs == "320982" { result3101 := Check3101(c, id, his_patient_id, admin_user_id, "2", record_time, prescriptions) if result3101.Infcode == "0" { if len(result3101.Output.Result) > 0 { var errMsgs []string for _, item := range result3101.Output.Result { errMsgs = append(errMsgs, item.VolaCont) } c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": errMsgs, }) return } } if miConfig.MdtrtareaAdmvs == "320921" { data["doctor_id"] = "D320923012139" } else { data["doctor_id"] = "D371621008686" } bytesData, _ := json.Marshal(data) var req *http.Request if miConfig.MdtrtareaAdmvs == "320921" { req, _ = http.NewRequest("POST", "http://192.168.2.110:9532/"+"jsyb/2204", bytes.NewReader(bytesData)) } else { req, _ = http.NewRequest("POST", "http://192.168.5.251:9532/"+"jsyb/2204", bytes.NewReader(bytesData)) } resp, _ := client.Do(req) defer resp.Body.Close() body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(body), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) userJSONBytes, _ := json.Marshal(respJSON) fmt.Println("log") fmt.Println(string(userJSONBytes)) if err := json.Unmarshal(userJSONBytes, &resFour10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = resFour10265.InfRefmsgid res.Output = resFour10265.Output res.ErrMsg = resFour10265.ErrMsg res.Cainfo = resFour10265.Cainfo res.WarnMsg = resFour10265.WarnMsg infocode, _ := strconv.ParseInt(resFour10265.Infcode, 10, 64) res.Infcode = infocode } else if miConfig.MdtrtareaAdmvs == "350500" { result, request_log, _ := service.FJyb2204(his.PsnNo, his.Number, prescriptions, chrg_bchno, miConfig.OrgName, roles.UserName, strconv.FormatInt(patientPrescription.Departments, 10), miConfig.Code, department.Number, doctor_info.DoctorNumber, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, strconv.FormatInt(his.BalanceAccountsType, 10), roles.UserName, miConfig.Url, miConfig.Code, miConfig.AppSecret, miConfig.SignKey, miConfig.EncKey, sickConfig.CountryCode, doctor_info.DoctorNumber) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result, request_log, "2204", "上传费用明细") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &resFour10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = resFour10265.InfRefmsgid res.Output = resFour10265.Output res.ErrMsg = resFour10265.ErrMsg res.Cainfo = resFour10265.Cainfo res.WarnMsg = resFour10265.WarnMsg infocode, _ := strconv.ParseInt(resFour10265.Infcode, 10, 64) res.Infcode = infocode } else { if miConfig.Code == "H15049901371" { result, request_log := service.Gdyb2204(his.PsnNo, his.Number, prescriptions, chrg_bchno, miConfig.OrgName, roles.UserName, strconv.FormatInt(patientPrescription.Departments, 10), miConfig.Code, department.Number, strconv.FormatInt(roles.AdminUserId, 10), his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, strconv.FormatInt(his.BalanceAccountsType, 10), patientPrescription.DoctorId, sickConfig.CountryCode) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result, request_log, "2204", "上传费用明细") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &resFour10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = resFour10265.InfRefmsgid res.Output = resFour10265.Output res.ErrMsg = resFour10265.ErrMsg res.Cainfo = resFour10265.Cainfo res.WarnMsg = resFour10265.WarnMsg infocode, _ := strconv.ParseInt(resFour10265.Infcode, 10, 64) res.Infcode = infocode } else { result, request_log := service.Gdyb2204(his.PsnNo, his.Number, prescriptions, chrg_bchno, miConfig.OrgName, roles.UserName, strconv.FormatInt(patientPrescription.Departments, 10), miConfig.Code, department.Number, strconv.FormatInt(roles.AdminUserId, 10), his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, strconv.FormatInt(his.BalanceAccountsType, 10), patientPrescription.DoctorId, sickConfig.CountryCode) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result, request_log, "2204", "上传费用明细") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } } if res.Infcode == 0 { order := &models.HisOrder{ UserOrgId: adminUser.CurrentOrgId, HisPatientId: his.ID, PatientId: his.PatientId, SettleAccountsDate: recordDateTime, MdtrtId: his.Number, PsnNo: his.PsnNo, MedType: strconv.FormatInt(reg_type, 10), Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, Number: chrg_bchno, Infcode: res.Infcode, WarnMsg: res.WarnMsg, Cainfo: res.Cainfo, ErrMsg: res.ErrMsg, RespondTime: res.RefmsgTime, InfRefmsgid: res.InfRefmsgid, OrderStatus: 1, PayWay: pay_way, PayPrice: pay_price, PayCardNo: pay_card_no, DiscountPrice: discount_price, PreferentialPrice: preferential_price, RealityPrice: reality_price, FoundPrice: found_price, MedicalInsurancePrice: medical_insurance_price, PrivatePrice: private_price, IsMedicineInsurance: 1, SettleType: settle_accounts_type, SettleStartTime: start_time, SettleEndTime: end_time, Creator: roles.AdminUserId, Modify: roles.AdminUserId, FaPiaoNumber: fapiao_number, FaPiaoCode: fapiao_code, PType: 2, Diagnosis: diagnosis_id, } err = service.CreateOrder(order) if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeCreatePreOrderException) return } for _, item := range res.Output.Result { temp := strings.Split(item.FeedetlSn, "-") var advice_id int64 = 0 var project_id int64 = 0 var types int64 = 0 id, _ := strconv.ParseInt(temp[2], 10, 64) types, _ = strconv.ParseInt(temp[1], 10, 64) if temp[1] == "1" { advice_id = id project_id = 0 } else if temp[1] == "2" { advice_id = 0 project_id = id } if item.MedChrgitmType == "9" { item.MedChrgitmType = "09" } info := &models.HisOrderInfo{ OrderNumber: order.Number, FeedetlSn: item.FeedetlSn, UploadDate: time.Now().Unix(), AdviceId: advice_id, DetItemFeeSumamt: item.DetItemFeeSumamt, Cnt: item.Cnt, Pric: float64(item.Pric), PatientId: his.PatientId, PricUplmtAmt: item.PricUplmtAmt, SelfpayProp: item.SelfpayProp, FulamtOwnpayAmt: item.FulamtOwnpayAmt, OverlmtAmt: item.OverlmtAmt, PreselfpayAmt: item.PreselfpayAmt, BasMednFlag: item.BasMednFlag, MedChrgitmType: item.MedChrgitmType, HiNegoDrugFlag: item.HiNegoDrugFlag, Status: 1, Memo: item.Memo, Mtime: time.Now().Unix(), InscpScpAmt: item.InscpScpAmt, DrtReimFlag: item.DrtReimFlag, Ctime: time.Now().Unix(), ListSpItemFlag: item.ListSpItemFlag, ChldMedcFlag: item.ChldMedcFlag, LmtUsedFlag: item.LmtUsedFlag, ChrgitmLv: item.ChrgitmLv, UserOrgId: adminUser.CurrentOrgId, HisPatientId: his.ID, OrderId: order.ID, ProjectId: project_id, Type: types, } service.CreateOrderInfo(info) } service.UpDatePrescriptionNumber(adminUser.CurrentOrgId, ids, chrg_bchno) service.UpDateHisPrescriptionInfoNumber(adminUser.CurrentOrgId, his_patient_id, chrg_bchno, recordDateTime) var total float64 for _, item := range prescriptions { if item.Type == 1 { //药品 for _, subItem := range item.HisDoctorAdviceInfo { total = total + (subItem.Price * subItem.PrescribingNumber) } } if item.Type == 2 { //项目 for _, subItem := range item.HisPrescriptionProject { cnt, _ := strconv.ParseFloat(subItem.Count, 64) total = total + (subItem.Price * cnt) } } } for _, item := range prescriptions { for _, subItem := range item.HisAdditionalCharge { total = total + (subItem.Price * float64(subItem.Count)) } } var allTotal string if adminUser.CurrentOrgId == 9919 { allTotal = fmt.Sprintf("%.4f", total) } else { allTotal = fmt.Sprintf("%.4f", total) } if res.Infcode == 0 { var rf []*ResultFive json.Unmarshal([]byte(his.Iinfo), &rf) chrg_bchno := chrg_bchno cert_no := his.Certno var insutypes []string var insutype string var is390 int = 0 var is310 int = 0 for _, item := range rf { if (item.Insutype == "390" && item.PsnInsuStas == "1") || (item.Insutype == "310" && item.PsnInsuStas == "1") { insutypes = append(insutypes, item.Insutype) } } if len(insutypes) == 1 { insutype = insutypes[0] } else { for _, i := range insutypes { if i == "390" { is390 = 1 } if i == "310" { is310 = 1 } } } if is390 == 1 { insutype = "390" } if is310 == 1 { insutype = "310" } if len(insutypes) == 0 { insutype = "310" } if len(insutypes) == 2 { insutype = strconv.FormatInt(his.SocialType, 10) } insutype = strconv.FormatInt(his.SocialType, 10) //insutype = "390" if his.IdCardType == 1 { // cert_no = his.MedicalInsuranceNumber cert_no = his.Certno } else { cert_no = his.Certno } var res ResultSeven var resSeven10265 ResultSeven10265 var src_resquest string var result2 string var acct_used_flag string fmt.Println("pay_way") fmt.Println(pay_way) fmt.Println("pay_way") if pay_way == 4 { acct_used_flag = "1" } else { acct_used_flag = "0" } if miConfig.MdtrtareaAdmvs == "421300" { api := "http://192.168.124.4:9532/" + "hbyb/2207?psn_no=" + his.PsnNo + "&mdtrt_id=" + his.Number + "&chrg_bchno=" + chrg_bchno + "&org_name=" + miConfig.OrgName + "&doctor=" + roles.UserName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + his.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&id_card_type=" + strconv.FormatInt(his.IdCardType, 10) + "&certificates=" + strconv.FormatInt(his.IdType, 10) + "&cert_no=" + cert_no + "&insutype=" + insutype + "&total=" + allTotal + "&med_type=" + strconv.FormatInt(reg_type, 10) + "&acct_used_flag=" + acct_used_flag resp, requestErr := http.Get(api) if requestErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) result, _ := json.Marshal(respJSON) if miConfig.Code == "H15049901371" { if err := json.Unmarshal([]byte(result), &resSeven10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = resSeven10265.InfRefmsgid res.Output = resSeven10265.Output res.ErrMsg = resSeven10265.ErrMsg res.Cainfo = resSeven10265.Cainfo res.WarnMsg = resSeven10265.WarnMsg infocode, _ := strconv.ParseInt(resSeven10265.Infcode, 10, 64) res.Infcode = infocode } else { if err := json.Unmarshal([]byte(result), &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } } else if miConfig.MdtrtareaAdmvs == "320921" || miConfig.MdtrtareaAdmvs == "320982" { result3101 := Check3102(c, id, his_patient_id, admin_user_id, "7", order.ID) if result3101.Infcode == "0" { if len(result3101.Output.Result) > 0 { var errMsgs []string for _, item := range result3101.Output.Result { errMsgs = append(errMsgs, item.VolaCont) } c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": errMsgs, }) return } else { psn_info, _ := service.GetPsnByPatientId(his.PatientId) psn_info.VerifyNumber = strings.Replace(psn_info.VerifyNumber, "+", "%2B", -1) bas := strings.Split(psn_info.CardInfo, "|") if his.IdCardType == 1 { cert_no = bas[2] } else if his.IdCardType == 3 { cert_no = his.Certno psn_info.VerifyNumber = his.Certno + "|" + psn_info.VerifyNumber } else if his.IdCardType == 4 { cert_no = his.Certno psn_info.VerifyNumber = psn_info.VerifyNumber } var api string if miConfig.MdtrtareaAdmvs == "320921" { api = "http://192.168.2.110:9532/" + "jsyb/2207?psn_no=" + his.PsnNo + "&mdtrt_id=" + his.Number + "&chrg_bchno=" + chrg_bchno + "&org_name=" + miConfig.OrgName + "&doctor=" + roles.UserName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + his.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&id_card_type=" + strconv.FormatInt(his.IdCardType, 10) + "&certificates=" + strconv.FormatInt(his.IdType, 10) + "&cert_no=" + cert_no + "&insutype=" + insutype + "&total=" + allTotal + "&med_type=" + strconv.FormatInt(reg_type, 10) + "&acct_used_flag=" + acct_used_flag + "&url=" + miConfig.Url + "&ak=" + miConfig.AccessKey + "&verify_number=" + psn_info.VerifyNumber + "&cainfo=" + miConfig.Cainfo } else { api = "http://192.168.5.251:9532/" + "jsyb/2207?psn_no=" + his.PsnNo + "&mdtrt_id=" + his.Number + "&chrg_bchno=" + chrg_bchno + "&org_name=" + miConfig.OrgName + "&doctor=" + roles.UserName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + his.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&id_card_type=" + strconv.FormatInt(his.IdCardType, 10) + "&certificates=" + strconv.FormatInt(his.IdType, 10) + "&cert_no=" + cert_no + "&insutype=" + insutype + "&total=" + allTotal + "&med_type=" + strconv.FormatInt(reg_type, 10) + "&acct_used_flag=" + acct_used_flag + "&url=" + miConfig.Url + "&ak=" + miConfig.AccessKey + "&verify_number=" + psn_info.VerifyNumber + "&cainfo=" + miConfig.Cainfo } resp, requestErr := http.Get(api) if requestErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) result, _ := json.Marshal(respJSON) if err := json.Unmarshal([]byte(result), &resSeven10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = resSeven10265.InfRefmsgid res.Output = resSeven10265.Output res.ErrMsg = resSeven10265.ErrMsg res.Cainfo = resSeven10265.Cainfo res.WarnMsg = resSeven10265.WarnMsg infocode, _ := strconv.ParseInt(resSeven10265.Infcode, 10, 64) res.Infcode = infocode } } } else if miConfig.MdtrtareaAdmvs == "350500" { var cert_no string if his.IdCardType == 4 { psn_info, _ := service.GetPsnByPatientId(his.PatientId) cert_no = psn_info.VerifyNumber result2, src_resquest, _ = service.FJyb2207ForToken(his.PsnNo, his.Number, chrg_bchno, cert_no, insutype, allTotal, miConfig.OrgName, roles.UserName, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, strconv.FormatInt(reg_type, 10), his.IdCardType, tempOrder.FulamtOwnpayAmt, tempOrder.OverlmtSelfPay, tempOrder.PreselfpayAmt, tempOrder.InscpScpAmt, his.IdType, acct_used_flag, miConfig.Url, miConfig.Code, miConfig.AppSecret, miConfig.SignKey, miConfig.EncKey) } else if his.IdCardType == 1 { psn_info, _ := service.GetPsnByPatientId(his.PatientId) cert_no = strings.Split(psn_info.CardInfo, "|")[0] result2, src_resquest, _ = service.FJyb2207(his.PsnNo, his.Number, chrg_bchno, cert_no, insutype, allTotal, miConfig.OrgName, roles.UserName, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, strconv.FormatInt(reg_type, 10), his.IdCardType, tempOrder.FulamtOwnpayAmt, tempOrder.OverlmtSelfPay, tempOrder.PreselfpayAmt, tempOrder.InscpScpAmt, his.IdType, acct_used_flag, miConfig.Url, miConfig.Code, miConfig.AppSecret, miConfig.SignKey, miConfig.EncKey) } //result2, src_resquest = service.Gdyb2207(his.PsnNo, his.Number, chrg_bchno, cert_no, insutype, allTotal, miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, strconv.FormatInt(reg_type, 10), his.IdCardType, 0, 0, 0, 0, his.IdType, acct_used_flag) var dat map[string]interface{} if err := json.Unmarshal([]byte(result2), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result2, src_resquest, "2207", "结算") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &resSeven10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = resSeven10265.InfRefmsgid res.Output = resSeven10265.Output res.ErrMsg = resSeven10265.ErrMsg res.Cainfo = resSeven10265.Cainfo res.WarnMsg = resSeven10265.WarnMsg infocode, _ := strconv.ParseInt(resSeven10265.Infcode, 10, 64) res.Infcode = infocode } else { if miConfig.Code == "H15049901371" { //赤峰地区国家医保医疗类别 //职工透析:医疗类别选特殊情况门诊990502 //居民定额血透门慢: 医疗类别选门诊慢病140104 var med_type string if his.Insutype == "390" { if reg_type == 14 { med_type = "9933" } else if reg_type == 11 { med_type = "11" } } else if his.Insutype == "310" { if reg_type == 14 { med_type = "990502" } else if reg_type == 11 { med_type = "11" } } result2, src_resquest = service.Gdyb2207(his.PsnNo, his.Number, chrg_bchno, cert_no, insutype, allTotal, miConfig.OrgName, roles.UserName, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, med_type, his.IdCardType, tempOrder.FulamtOwnpayAmt, tempOrder.OverlmtSelfPay, tempOrder.PreselfpayAmt, tempOrder.InscpScpAmt, his.IdType, acct_used_flag, "") } else { if his.IdCardType == 4 { psn_info, _ := service.GetPsnByPatientId(his.PatientId) var token string token = psn_info.VerifyNumber result2, src_resquest = service.Gdyb2207(his.PsnNo, his.Number, chrg_bchno, cert_no, insutype, allTotal, miConfig.OrgName, roles.UserName, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, strconv.FormatInt(reg_type, 10), his.IdCardType, tempOrder.FulamtOwnpayAmt, tempOrder.OverlmtSelfPay, tempOrder.PreselfpayAmt, tempOrder.InscpScpAmt, his.IdType, acct_used_flag, token) } else { result2, src_resquest = service.Gdyb2207(his.PsnNo, his.Number, chrg_bchno, cert_no, insutype, allTotal, miConfig.OrgName, roles.UserName, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, strconv.FormatInt(reg_type, 10), his.IdCardType, tempOrder.FulamtOwnpayAmt, tempOrder.OverlmtSelfPay, tempOrder.PreselfpayAmt, tempOrder.InscpScpAmt, his.IdType, acct_used_flag, "") } } //result2, src_resquest = service.Gdyb2207(his.PsnNo, his.Number, chrg_bchno, cert_no, insutype, allTotal, miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, strconv.FormatInt(reg_type, 10), his.IdCardType, 0, 0, 0, 0, his.IdType, acct_used_flag) var dat map[string]interface{} if err := json.Unmarshal([]byte(result2), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result2, src_resquest, "2207", "结算") userJSONBytes, _ := json.Marshal(dat) if miConfig.Code == "H15049901371" { if err := json.Unmarshal(userJSONBytes, &resSeven10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = resSeven10265.InfRefmsgid res.Output = resSeven10265.Output res.ErrMsg = resSeven10265.ErrMsg res.Cainfo = resSeven10265.Cainfo res.WarnMsg = resSeven10265.WarnMsg infocode, _ := strconv.ParseInt(resSeven10265.Infcode, 10, 64) res.Infcode = infocode } else { if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } } if res.Infcode != 0 { errlog := &models.HisOrderError{ UserOrgId: adminUser.CurrentOrgId, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Number: chrg_bchno, ErrMsg: res.ErrMsg, Status: 1, PatientId: id, RecordTime: recordDateTime, Stage: 6, } service.CreateErrMsgLog(errlog) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.ErrMsg, }) return } else { order, _ := service.GetHisOrderTwo(adminUser.CurrentOrgId, chrg_bchno, id) order.OrderStatus = 2 order.Status = 1 order.MdtrtId = res.Output.Setlinfo.MdtrtID order.SetlId = res.Output.Setlinfo.SetlID order.PsnNo = res.Output.Setlinfo.PsnNo order.PsnName = res.Output.Setlinfo.PsnName order.PsnCertType = res.Output.Setlinfo.PsnCertType order.Certno = res.Output.Setlinfo.Certno order.Gend = res.Output.Setlinfo.Gend order.Naty = res.Output.Setlinfo.Naty order.Age = res.Output.Setlinfo.Age order.Insutype = res.Output.Setlinfo.Insutype order.PsnType = res.Output.Setlinfo.PsnType order.CvlservFlag = res.Output.Setlinfo.CvlservFlag order.SetlTime = res.Output.Setlinfo.SetlTime order.MdtrtCertType = res.Output.Setlinfo.MdtrtCertType if res.Output.Setlinfo.MedType == "140101" { order.MedType = "14" } else { order.MedType = res.Output.Setlinfo.MedType } if reg_type == 1112 { order.MedType = "1112" } if reg_type == 1111 { order.MedType = "1111" } order.MedfeeSumamt = res.Output.Setlinfo.MedfeeSumamt order.FulamtOwnpayAmt = res.Output.Setlinfo.FulamtOwnpayAmt order.OverlmtSelfPay = res.Output.Setlinfo.OverlmtSelfpay order.PreselfpayAmt = res.Output.Setlinfo.PreselfpayAmt order.InscpScpAmt = res.Output.Setlinfo.InscpScpAmt order.ActPayDedc = res.Output.Setlinfo.ActPayDedc order.HifpPay = res.Output.Setlinfo.HifpPay order.CvlservPay = res.Output.Setlinfo.CvlservPay order.PoolPropSelfpay = res.Output.Setlinfo.PoolPropSelfpay order.HifesPay = res.Output.Setlinfo.HifesPay order.HifobPay = res.Output.Setlinfo.HifobPay order.MafPay = res.Output.Setlinfo.MafPay order.HifmiPay = res.Output.Setlinfo.HifmiPay order.OthPay = res.Output.Setlinfo.OthPay order.FundPaySumamt = res.Output.Setlinfo.FundPaySumamt order.PsnPartAmt = res.Output.Setlinfo.PsnPartAmt order.AcctPay = res.Output.Setlinfo.AcctPay order.PsnCashPay = res.Output.Setlinfo.PsnCashPay order.HospPartAmt = res.Output.Setlinfo.HospPartAmt order.Balc = res.Output.Setlinfo.Balc order.AcctMulaidPay = res.Output.Setlinfo.AcctMulaidPay order.MedinsSetlId = res.Output.Setlinfo.MedinsSetlID order.ClrOptins = res.Output.Setlinfo.ClrOptins order.ClrType = res.Output.Setlinfo.ClrType order.ClrWay = res.Output.Setlinfo.ClrWay order.Creator = order.Creator order.Modify = roles.AdminUserId order.RequestLog = src_resquest setlDetail, _ := json.Marshal(res.Output.Setldetail) detailStr := string(setlDetail) order.SetlDetail = detailStr err := service.UpdataOrderStatusTwo(chrg_bchno, adminUser.CurrentOrgId) err = service.UpDateOrder(order) if err == nil { //判断是否使用了押金 if dec_way == "true" { tmpstring := strconv.FormatInt(order.ID, 10) order.Decimal = decimal service.UpDateOrder(order) //扣押金 errmsg = service.SpendDeposit(c.GetAdminUserInfo().CurrentOrgId, id, c.GetAdminUserInfo().AdminUser.Id, tmpstring, decimal) if errmsg != nil { c.ServeFailJsonSend(enums.ErrorCodeParamWrong, errmsg.Error()) return } } c.ServeSuccessJSON(map[string]interface{}{ "msg": "结算成功", }) } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeAmountAccountException) return } } } else { adminUser := c.GetAdminUserInfo() errlog := &models.HisOrderError{ UserOrgId: adminUser.CurrentOrgId, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), ErrMsg: res.ErrMsg, Status: 1, PatientId: id, RecordTime: recordDateTime, Stage: 4, } service.CreateErrMsgLog(errlog) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeRegisterRepeatException) return } } else { adminUser := c.GetAdminUserInfo() errlog := &models.HisOrderError{ UserOrgId: adminUser.CurrentOrgId, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), ErrMsg: res.ErrMsg, Status: 1, PatientId: id, RecordTime: recordDateTime, Stage: 4, } service.CreateErrMsgLog(errlog) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.ErrMsg, }) return //c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeCalOrderException) //return } } } } else if tempOrder.ID > 0 { if tempOrder.IsPre == 1 { allTotal := fmt.Sprintf("%.4f", tempOrder.MedfeeSumamt) var rf []*ResultFive json.Unmarshal([]byte(his.Iinfo), &rf) chrg_bchno := tempOrder.Number cert_no := his.Certno var insutypes []string var insutype string var is390 int = 0 var is310 int = 0 for _, item := range rf { if (item.Insutype == "390" && item.PsnInsuStas == "1") || (item.Insutype == "310" && item.PsnInsuStas == "1") { insutypes = append(insutypes, item.Insutype) } } if len(insutypes) == 1 { insutype = insutypes[0] } else { for _, i := range insutypes { if i == "390" { is390 = 1 } if i == "310" { is310 = 1 } } } if is390 == 1 { insutype = "390" } if is310 == 1 { insutype = "310" } if len(insutypes) == 0 { insutype = "310" } if len(insutypes) == 2 { insutype = strconv.FormatInt(his.SocialType, 64) } //insutype = "390" if his.IdCardType == 1 { // cert_no = his.MedicalInsuranceNumber cert_no = his.Certno } else { cert_no = his.Certno } var res ResultSeven var resSeven10265 ResultSeven10265 var src_resquest string var result2 string var acct_used_flag string fmt.Println("pay_way") fmt.Println(pay_way) fmt.Println("pay_way") if pay_way == 4 { acct_used_flag = "1" } else { acct_used_flag = "0" } if miConfig.MdtrtareaAdmvs == "421300" { api := "http://192.168.124.4:9532/" + "hbyb/2207?psn_no=" + his.PsnNo + "&mdtrt_id=" + his.Number + "&chrg_bchno=" + chrg_bchno + "&org_name=" + miConfig.OrgName + "&doctor=" + roles.UserName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + his.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&id_card_type=" + strconv.FormatInt(his.IdCardType, 10) + "&certificates=" + strconv.FormatInt(his.IdType, 10) + "&cert_no=" + cert_no + "&insutype=" + insutype + "&total=" + allTotal + "&med_type=" + strconv.FormatInt(reg_type, 10) + "&acct_used_flag=" + acct_used_flag resp, requestErr := http.Get(api) if requestErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) result, _ := json.Marshal(respJSON) fmt.Println("log") fmt.Println(string(result)) if err := json.Unmarshal([]byte(result), &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "320921" || miConfig.MdtrtareaAdmvs == "320982" { result3101 := Check3102(c, id, his_patient_id, admin_user_id, "7", tempOrder.ID) if result3101.Infcode == "0" { if len(result3101.Output.Result) > 0 { var errMsgs []string for _, item := range result3101.Output.Result { errMsgs = append(errMsgs, item.VolaCont) } c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": errMsgs, }) return } else { psn_info, _ := service.GetPsnByPatientId(his.PatientId) psn_info.VerifyNumber = strings.Replace(psn_info.VerifyNumber, "+", "%2B", -1) bas := strings.Split(psn_info.CardInfo, "|") if his.IdCardType == 1 { cert_no = bas[2] } else if his.IdCardType == 3 { cert_no = his.Certno psn_info.VerifyNumber = his.Certno + "|" + psn_info.VerifyNumber } else if his.IdCardType == 4 { cert_no = his.Certno psn_info.VerifyNumber = psn_info.VerifyNumber } //江苏地区国家医保医疗类别 //职工透析:医疗类别选特殊情况门诊9933 //居民血透门慢: 医疗类别选门诊慢病1402 //var med_type string //if his.Insutype == "310" { // if reg_type == 14 { // med_type = "9933" // } else if reg_type == 11 { // med_type = "11" // // } //} else if his.Insutype == "390" { // if reg_type == 14 { // med_type = "1402" // } else if reg_type == 11 { // med_type = "11" // } //} var api string if miConfig.MdtrtareaAdmvs == "320921" { api = "http://192.168.2.110:9532/" + "jsyb/2207?psn_no=" + his.PsnNo + "&mdtrt_id=" + his.Number + "&chrg_bchno=" + chrg_bchno + "&org_name=" + miConfig.OrgName + "&doctor=" + roles.UserName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + his.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&id_card_type=" + strconv.FormatInt(his.IdCardType, 10) + "&certificates=" + strconv.FormatInt(his.IdType, 10) + "&cert_no=" + cert_no + "&insutype=" + insutype + "&total=" + allTotal + "&med_type=" + tempOrder.MedType + "&acct_used_flag=" + acct_used_flag + "&url=" + miConfig.Url + "&ak=" + miConfig.AccessKey + "&verify_number=" + psn_info.VerifyNumber + "&cainfo=" + miConfig.Cainfo //req, _ = http.NewRequest("POST", "http://192.168.2.110:9532/"+"jsyb/2204", bytes.NewReader(bytesData)) } else { //req, _ = http.NewRequest("POST", "http://192.168.5.251:9532/"+"jsyb/2204", bytes.NewReader(bytesData)) api = "http://192.168.5.251:9532/" + "jsyb/2207?psn_no=" + his.PsnNo + "&mdtrt_id=" + his.Number + "&chrg_bchno=" + chrg_bchno + "&org_name=" + miConfig.OrgName + "&doctor=" + roles.UserName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + his.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&id_card_type=" + strconv.FormatInt(his.IdCardType, 10) + "&certificates=" + strconv.FormatInt(his.IdType, 10) + "&cert_no=" + cert_no + "&insutype=" + insutype + "&total=" + allTotal + "&med_type=" + tempOrder.MedType + "&acct_used_flag=" + acct_used_flag + "&url=" + miConfig.Url + "&ak=" + miConfig.AccessKey + "&verify_number=" + psn_info.VerifyNumber + "&cainfo=" + miConfig.Cainfo } resp, requestErr := http.Get(api) if requestErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) result, _ := json.Marshal(respJSON) fmt.Println("log") fmt.Println(string(result)) if err := json.Unmarshal([]byte(result), &resSeven10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = resSeven10265.InfRefmsgid res.Output = resSeven10265.Output res.ErrMsg = resSeven10265.ErrMsg res.Cainfo = resSeven10265.Cainfo res.WarnMsg = resSeven10265.WarnMsg infocode, _ := strconv.ParseInt(resSeven10265.Infcode, 10, 64) res.Infcode = infocode } } } else if miConfig.MdtrtareaAdmvs == "350500" { psn_info, _ := service.GetPsnByPatientId(his.PatientId) var cert_no string if his.IdCardType == 1 { cert_no = strings.Split(psn_info.CardInfo, "|")[0] } else { cert_no = psn_info.VerifyNumber } result2, src_resquest, _ = service.FJyb2207(his.PsnNo, his.Number, chrg_bchno, cert_no, insutype, allTotal, miConfig.OrgName, roles.UserName, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, strconv.FormatInt(reg_type, 10), his.IdCardType, tempOrder.FulamtOwnpayAmt, tempOrder.OverlmtSelfPay, tempOrder.PreselfpayAmt, tempOrder.InscpScpAmt, his.IdType, acct_used_flag, miConfig.Url, miConfig.Code, miConfig.AppSecret, miConfig.SignKey, miConfig.EncKey) var dat map[string]interface{} if err := json.Unmarshal([]byte(result2), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result2, src_resquest, "2207", "结算") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "360399" { psn_info, _ := service.GetPsnByPatientId(his.PatientId) var cert_no string if his.IdCardType == 1 { cert_no = strings.Split(psn_info.CardInfo, "|")[0] } else if his.IdCardType == 2 { cert_no = his.IdCardNo } else { cert_no = psn_info.VerifyNumber } result2, src_resquest := service.Jxyb2207(his.PsnNo, his.Number, chrg_bchno, cert_no, insutype, allTotal, miConfig.OrgName, roles.UserName, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, strconv.FormatInt(reg_type, 10), his.IdCardType, tempOrder.FulamtOwnpayAmt, tempOrder.OverlmtSelfPay, tempOrder.PreselfpayAmt, tempOrder.InscpScpAmt, his.IdCardType, acct_used_flag, miConfig.Url, miConfig.AccessKey, cert_no, "") var dat map[string]interface{} if err := json.Unmarshal([]byte(result2), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result2, src_resquest, "2207", "结算") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "430800" { psn_info, _ := service.GetPsnByPatientId(his.PatientId) var cert_no string if his.IdCardType == 1 { cert_no = strings.Split(psn_info.CardInfo, "|")[0] } else if his.IdCardType == 2 { cert_no = his.IdCardNo } else { cert_no = psn_info.VerifyNumber } result2, src_resquest := service.Hnyb2207(his.PsnNo, his.Number, chrg_bchno, cert_no, insutype, allTotal, miConfig.OrgName, roles.UserName, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, strconv.FormatInt(reg_type, 10), his.IdCardType, tempOrder.FulamtOwnpayAmt, tempOrder.OverlmtSelfPay, tempOrder.PreselfpayAmt, tempOrder.InscpScpAmt, his.IdCardType, acct_used_flag, miConfig.Url, miConfig.AccessKey, cert_no, "") var dat map[string]interface{} if err := json.Unmarshal([]byte(result2), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result2, src_resquest, "2207", "结算") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else { var src_resquest string if miConfig.Code == "H15049901371" { //赤峰地区国家医保医疗类别 //职工透析:医疗类别选特殊情况门诊990502 //居民定额血透门慢: 医疗类别选门诊慢病140104 var med_type string if his.Insutype == "390" { if reg_type == 14 { med_type = "9933" } else if reg_type == 11 { med_type = "11" } } else if his.Insutype == "310" { if reg_type == 14 { med_type = "990502" } else if reg_type == 11 { med_type = "11" } } result2, src_resquest = service.Gdyb2207(his.PsnNo, his.Number, chrg_bchno, cert_no, insutype, allTotal, miConfig.OrgName, roles.UserName, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, med_type, his.IdCardType, tempOrder.FulamtOwnpayAmt, tempOrder.OverlmtSelfPay, tempOrder.PreselfpayAmt, tempOrder.InscpScpAmt, his.IdType, acct_used_flag, "") } else { if his.IdCardType == 4 { psn_info, _ := service.GetPsnByPatientId(his.PatientId) token := psn_info.VerifyNumber result2, src_resquest = service.Gdyb2207(his.PsnNo, his.Number, chrg_bchno, cert_no, insutype, allTotal, miConfig.OrgName, roles.UserName, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, strconv.FormatInt(reg_type, 10), his.IdCardType, tempOrder.FulamtOwnpayAmt, tempOrder.OverlmtSelfPay, tempOrder.PreselfpayAmt, tempOrder.InscpScpAmt, his.IdType, acct_used_flag, token) } else { result2, src_resquest = service.Gdyb2207(his.PsnNo, his.Number, chrg_bchno, cert_no, insutype, allTotal, miConfig.OrgName, roles.UserName, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, strconv.FormatInt(reg_type, 10), his.IdCardType, tempOrder.FulamtOwnpayAmt, tempOrder.OverlmtSelfPay, tempOrder.PreselfpayAmt, tempOrder.InscpScpAmt, his.IdType, acct_used_flag, "") } } var dat map[string]interface{} if err := json.Unmarshal([]byte(result2), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result2, src_resquest, "2207", "结算") userJSONBytes, _ := json.Marshal(dat) if miConfig.Code == "H15049901371" { if err := json.Unmarshal(userJSONBytes, &resSeven10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = resSeven10265.InfRefmsgid res.Output = resSeven10265.Output res.ErrMsg = resSeven10265.ErrMsg res.Cainfo = resSeven10265.Cainfo res.WarnMsg = resSeven10265.WarnMsg infocode, _ := strconv.ParseInt(resSeven10265.Infcode, 10, 64) res.Infcode = infocode } else { if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } } if res.Infcode != 0 { errlog := &models.HisOrderError{ UserOrgId: adminUser.CurrentOrgId, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Number: chrg_bchno, ErrMsg: res.ErrMsg, Status: 1, PatientId: id, RecordTime: recordDateTime, Stage: 6, } service.CreateErrMsgLog(errlog) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.ErrMsg, }) return } else { order, _ := service.GetHisOrderTwo(adminUser.CurrentOrgId, chrg_bchno, id) order.OrderStatus = 2 order.MdtrtId = res.Output.Setlinfo.MdtrtID order.SetlId = res.Output.Setlinfo.SetlID order.PsnNo = res.Output.Setlinfo.PsnNo order.PsnName = res.Output.Setlinfo.PsnName order.PsnCertType = res.Output.Setlinfo.PsnCertType order.Certno = res.Output.Setlinfo.Certno order.Gend = res.Output.Setlinfo.Gend order.Naty = res.Output.Setlinfo.Naty order.Age = res.Output.Setlinfo.Age order.Insutype = res.Output.Setlinfo.Insutype order.PsnType = res.Output.Setlinfo.PsnType order.CvlservFlag = res.Output.Setlinfo.CvlservFlag order.SetlTime = res.Output.Setlinfo.SetlTime order.MdtrtCertType = res.Output.Setlinfo.MdtrtCertType //order.MedType = res.Output.Setlinfo.MedType if reg_type == 1112 { order.MedType = "1112" } if reg_type == 1111 { order.MedType = "1111" } order.MedfeeSumamt = res.Output.Setlinfo.MedfeeSumamt order.FulamtOwnpayAmt = res.Output.Setlinfo.FulamtOwnpayAmt order.OverlmtSelfPay = res.Output.Setlinfo.OverlmtSelfpay order.PreselfpayAmt = res.Output.Setlinfo.PreselfpayAmt order.InscpScpAmt = res.Output.Setlinfo.InscpScpAmt order.ActPayDedc = res.Output.Setlinfo.ActPayDedc order.HifpPay = res.Output.Setlinfo.HifpPay order.CvlservPay = res.Output.Setlinfo.CvlservPay order.PoolPropSelfpay = res.Output.Setlinfo.PoolPropSelfpay order.HifesPay = res.Output.Setlinfo.HifesPay order.HifobPay = res.Output.Setlinfo.HifobPay order.MafPay = res.Output.Setlinfo.MafPay order.HifmiPay = res.Output.Setlinfo.HifmiPay order.OthPay = res.Output.Setlinfo.OthPay order.FundPaySumamt = res.Output.Setlinfo.FundPaySumamt order.PsnPartAmt = res.Output.Setlinfo.PsnPartAmt order.AcctPay = res.Output.Setlinfo.AcctPay order.PsnCashPay = res.Output.Setlinfo.PsnCashPay order.HospPartAmt = res.Output.Setlinfo.HospPartAmt order.Balc = res.Output.Setlinfo.Balc order.AcctMulaidPay = res.Output.Setlinfo.AcctMulaidPay order.MedinsSetlId = res.Output.Setlinfo.MedinsSetlID order.ClrOptins = res.Output.Setlinfo.ClrOptins order.ClrWay = res.Output.Setlinfo.ClrWay order.Creator = order.Creator order.Modify = roles.AdminUserId order.RequestLog = src_resquest order.Diagnosis = diagnosis_id setlDetail, _ := json.Marshal(res.Output.Setldetail) detailStr := string(setlDetail) order.SetlDetail = detailStr err := service.UpdataOrderStatusTwo(chrg_bchno, adminUser.CurrentOrgId) err = service.UpDateOrder(order) if err == nil { //判断是否使用了押金 if dec_way == "true" { tmpstring := strconv.FormatInt(order.ID, 10) //扣押金 order.Decimal = decimal service.UpDateOrder(order) errmsg = service.SpendDeposit(c.GetAdminUserInfo().CurrentOrgId, id, c.GetAdminUserInfo().AdminUser.Id, tmpstring, decimal) if errmsg != nil { c.ServeFailJsonSend(enums.ErrorCodeParamWrong, errmsg.Error()) return } } c.ServeSuccessJSON(map[string]interface{}{ "msg": "结算成功", }) } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeAmountAccountException) return } } } } } //func (c *HisApiController) GetPreUploadInfo() { // id, _ := c.GetInt64("id") // record_time := c.GetString("record_time") // settle_accounts_type, _ := c.GetInt64("settle_accounts_type") // admin_user_id, _ := c.GetInt64("admin_user_id") // // timeLayout := "2006-01-02" // loc, _ := time.LoadLocation("Local") // theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", record_time+" 00:00:00", loc) // if err != nil { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) // return // } // recordDateTime := theTime.Unix() // adminUser := c.GetAdminUserInfo() // // var prescriptions []*models.HisPrescription // // var start_time int64 // var end_time int64 // // data := make(map[string]interface{}) // if settle_accounts_type == 1 { //日结 // prescriptions, _ = service.GetHisPrescription(adminUser.CurrentOrgId, id, recordDateTime) // data["pre"] = prescriptions // // } else { //月结 // start_time_str := c.GetString("start_time") // end_time_str := c.GetString("end_time") // timeLayout := "2006-01-02" // loc, _ := time.LoadLocation("Local") // theStartTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time_str+" 00:00:00", loc) // if err != nil { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) // return // } // recordStartTime := theStartTime.Unix() // start_time = recordStartTime // theEndTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time_str+" 00:00:00", loc) // if err != nil { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) // return // } // recordEndTime := theEndTime.Unix() // end_time = recordEndTime // prescriptions, _ = service.GetMonthHisPrescription(adminUser.CurrentOrgId, id, recordStartTime, recordEndTime) // data["pre"] = prescriptions // // } // // roles, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) // // his, _ := service.GetVMHisPatientInfo(adminUser.CurrentOrgId, id, recordDateTime) // timestamp := time.Now().Unix() // tempTime := time.Unix(timestamp, 0) // timeFormat := tempTime.Format("20060102150405") // chrgBchno := rand.Intn(100000) + 10000 // chrg_bchno := timeFormat + strconv.FormatInt(int64(chrgBchno), 10) + strconv.FormatInt(his.PatientId, 10) // miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) // patientPrescription, _ := service.FindPatientPrescriptionInfo(adminUser.CurrentOrgId, id, recordDateTime) // department, _ := service.GetDepartMentDetail(patientPrescription.Departments) // strconv.FormatInt(his.PatientId, 10) // client := &http.Client{} // data["psn_no"] = his.PsnNo // data["mdtrt_id"] = his.Number // data["chrg_bchno"] = chrg_bchno // data["org_name"] = miConfig.OrgName // data["doctor"] = roles.UserName // data["doctor_id"] = strconv.FormatInt(roles.AdminUserId, 10) // data["dept"] = strconv.FormatInt(patientPrescription.Departments, 10) // data["fixmedins_code"] = miConfig.Code // data["dept_code"] = department.Number // data["insuplc_admdvs"] = miConfig.InsuplcAdmdvs // data["mdtrtarea_admvs"] = miConfig.MdtrtareaAdmvs // data["secret_key"] = miConfig.SecretKey // var ids []int64 // // for _, item := range prescriptions { // ids = append(ids, item.ID) // } // config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId) // if config.IsOpen == 1 { //对接了医保,走医保流程 // bytesData, _ := json.Marshal(data) // req, _ := http.NewRequest("POST", "http://127.0.0.1:9532/"+"gdyb/five", bytes.NewReader(bytesData)) // resp, _ := client.Do(req) // defer resp.Body.Close() // body, ioErr := ioutil.ReadAll(resp.Body) // if ioErr != nil { // utils.ErrorLog("接口返回数据读取失败: %v", ioErr) // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } // var respJSON map[string]interface{} // if err := json.Unmarshal([]byte(body), &respJSON); err != nil { // utils.ErrorLog("接口返回数据解析JSON失败: %v", err) // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } // // respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) // userJSONBytes, _ := json.Marshal(respJSON) // var res ResultFour // if err := json.Unmarshal(userJSONBytes, &res); err != nil { // utils.ErrorLog("解析失败:%v", err) // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } // // if res.Infcode == 0 { // order := &models.HisOrder{ // UserOrgId: adminUser.CurrentOrgId, // HisPatientId: his.ID, // PatientId: his.PatientId, // SettleAccountsDate: recordDateTime, // Ctime: time.Now().Unix(), // Mtime: time.Now().Unix(), // Status: 1, // Number: chrg_bchno, // Infcode: res.Infcode, // WarnMsg: res.WarnMsg, // Cainfo: res.Cainfo, // ErrMsg: res.ErrMsg, // RespondTime: res.RefmsgTime, // InfRefmsgid: res.InfRefmsgid, // OrderStatus: 1, // IsMedicineInsurance: 1, // SettleType: settle_accounts_type, // SettleStartTime: start_time, // SettleEndTime: end_time, // Creator: roles.ID, // Modify: roles.ID, // PType: 2, // } // err = service.CreateOrder(order) // if err != nil { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeCreatePreOrderException) // return // } // // for _, item := range res.Output.Result { // temp := strings.Split(item.FeedetlSn, "-") // var advice_id int64 = 0 // var project_id int64 = 0 // var types int64 = 0 // // id, _ := strconv.ParseInt(temp[2], 10, 64) // types, _ = strconv.ParseInt(temp[1], 10, 64) // // if temp[1] == "1" { // advice_id = id // project_id = 0 // } else if temp[1] == "2" { // advice_id = 0 // project_id = id // } // // info := &models.HisOrderInfo{ // OrderNumber: order.Number, // FeedetlSn: item.FeedetlSn, // UploadDate: time.Now().Unix(), // AdviceId: advice_id, // DetItemFeeSumamt: item.DetItemFeeSumamt, // Cnt: item.Cnt, // Pric: float64(item.Pric), // PatientId: his.PatientId, // PricUplmtAmt: item.PricUplmtAmt, // SelfpayProp: item.SelfpayProp, // FulamtOwnpayAmt: item.FulamtOwnpayAmt, // OverlmtAmt: item.OverlmtAmt, // PreselfpayAmt: item.PreselfpayAmt, // BasMednFlag: item.BasMednFlag, // MedChrgitmType: item.MedChrgitmType, // HiNegoDrugFlag: item.HiNegoDrugFlag, // Status: 1, // Memo: item.Memo, // Mtime: time.Now().Unix(), // InscpScpAmt: item.InscpScpAmt, // DrtReimFlag: item.DrtReimFlag, // Ctime: time.Now().Unix(), // ListSpItemFlag: item.ListSpItemFlag, // ChldMedcFlag: item.ChldMedcFlag, // LmtUsedFlag: item.LmtUsedFlag, // ChrgitmLv: item.ChrgitmLv, // UserOrgId: adminUser.CurrentOrgId, // HisPatientId: his.ID, // OrderId: order.ID, // ProjectId: project_id, // Type: types, // } // service.CreateOrderInfo(info) // // } // service.UpDatePrescriptionNumber(adminUser.CurrentOrgId, ids, chrg_bchno) // service.UpDatePrescriptionInfoNumber(adminUser.CurrentOrgId, patientPrescription.PatientId, chrg_bchno, recordDateTime) // // var total float64 // for _, item := range prescriptions { // if item.Type == 1 { //药品 // for _, subItem := range item.HisDoctorAdviceInfo { // total = total + (subItem.Price * subItem.PrescribingNumber) // } // } // if item.Type == 2 { //项目 // for _, subItem := range item.HisPrescriptionProject { // total = total + (subItem.Price * float64(subItem.Count)) // } // } // } // // for _, item := range prescriptions { // for _, subItem := range item.HisAdditionalCharge { // total = total + (subItem.Price * float64(subItem.Count)) // } // } // // allTotal := fmt.Sprintf("%.2f", total) // if res.Infcode == 0 { // var rf []*ResultFive // json.Unmarshal([]byte(his.Iinfo), &rf) // psn_no := his.PsnNo // mdtrt_id := his.Number // chrg_bchno := chrg_bchno // cert_no := his.Certno // insutype := rf[0].Insutype // // if his.IdCardType == 1 { // cert_no = his.MedicalInsuranceNumber // // } else { // // cert_no = his.Certno // // } // // api := "http://127.0.0.1:9532/" + "gdyb/seven?cert_no=" + cert_no + "&insutype=" + // insutype + "&psn_no=" + psn_no + "&chrg_bchno=" + chrg_bchno + "&mdtrt_id=" + mdtrt_id + // "&total=" + allTotal + "&org_name=" + miConfig.OrgName + "&doctor=" + roles.UserName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + // miConfig.SecretKey + "&med_type=" + strconv.FormatInt(patientPrescription.RegisterType, 10) + "&id_card_type=" + strconv.FormatInt(int64(his.IdCardType), 10) // resp, requestErr := http.Get(api) // if requestErr != nil { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } // defer resp.Body.Close() // body, ioErr := ioutil.ReadAll(resp.Body) // if ioErr != nil { // utils.ErrorLog("接口返回数据读取失败: %v", ioErr) // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } // var respJSON map[string]interface{} // if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { // utils.ErrorLog("接口返回数据解析JSON失败: %v", err) // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } // fmt.Println(respJSON) // respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) // userJSONBytes, _ := json.Marshal(respJSON) // var res ResultSeven // if err := json.Unmarshal(userJSONBytes, &res); err != nil { // utils.ErrorLog("解析失败:%v", err) // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } // if res.Infcode != 0 { // errlog := &models.HisOrderError{ // UserOrgId: adminUser.CurrentOrgId, // Ctime: time.Now().Unix(), // Mtime: time.Now().Unix(), // Number: chrg_bchno, // ErrMsg: res.ErrMsg, // Status: 1, // PatientId: id, // RecordTime: recordDateTime, // Stage: 7, // } // service.CreateErrMsgLog(errlog) // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeRegisterRepeatException) // return // } else { // order, _ := service.GetHisOrderTwo(adminUser.CurrentOrgId, chrg_bchno, id) // order.OrderStatus = 1 // order.MdtrtId = res.Output.Setlinfo.MdtrtID // order.SetlId = res.Output.Setlinfo.SetlID // order.PsnNo = res.Output.Setlinfo.PsnNo // order.PsnName = res.Output.Setlinfo.PsnName // order.PsnCertType = res.Output.Setlinfo.PsnCertType // order.Certno = res.Output.Setlinfo.Certno // order.Gend = res.Output.Setlinfo.Gend // order.Naty = res.Output.Setlinfo.Naty // order.Age = res.Output.Setlinfo.Age // order.Insutype = res.Output.Setlinfo.Insutype // order.PsnType = res.Output.Setlinfo.PsnType // order.CvlservFlag = res.Output.Setlinfo.CvlservFlag // order.SetlTime = res.Output.Setlinfo.SetlTime // order.MdtrtCertType = res.Output.Setlinfo.MdtrtCertType // order.MedType = res.Output.Setlinfo.MedType // order.MedfeeSumamt = res.Output.Setlinfo.MedfeeSumamt // order.FulamtOwnpayAmt = res.Output.Setlinfo.FulamtOwnpayAmt // order.OverlmtSelfPay = res.Output.Setlinfo.OverlmtSelfpay // order.PreselfpayAmt = res.Output.Setlinfo.PreselfpayAmt // order.InscpScpAmt = res.Output.Setlinfo.InscpScpAmt // order.ActPayDedc = res.Output.Setlinfo.ActPayDedc // order.HifpPay = res.Output.Setlinfo.HifpPay // order.CvlservPay = res.Output.Setlinfo.CvlservPay // order.PoolPropSelfpay = res.Output.Setlinfo.PoolPropSelfpay // order.HifesPay = res.Output.Setlinfo.HifesPay // order.HifobPay = res.Output.Setlinfo.HifobPay // order.MafPay = res.Output.Setlinfo.MafPay // order.OthPay = res.Output.Setlinfo.OthPay // order.FundPaySumamt = res.Output.Setlinfo.FundPaySumamt // order.PsnPartAmt = res.Output.Setlinfo.PsnPartAmt // order.AcctPay = res.Output.Setlinfo.AcctPay // order.PsnCashPay = res.Output.Setlinfo.PsnCashPay // order.HospPartAmt = res.Output.Setlinfo.HospPartAmt // order.Balc = res.Output.Setlinfo.Balc // order.AcctMulaidPay = res.Output.Setlinfo.AcctMulaidPay // order.MedinsSetlId = res.Output.Setlinfo.MedinsSetlID // order.ClrOptins = res.Output.Setlinfo.ClrOptins // order.ClrWay = res.Output.Setlinfo.ClrWay // order.Creator = order.Creator // order.Modify = roles.ID // setlDetail, _ := json.Marshal(res.Output.Setldetail) // detailStr := string(setlDetail) // order.SetlDetail = detailStr // //err := service.UpdataOrderStatusTwo(chrg_bchno, adminUser.CurrentOrgId) // err = service.UpDateOrder(order) // if err == nil { // c.ServeSuccessJSON(map[string]interface{}{ // "msg": "预结算成功", // }) // } else { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeAmountAccountException) // return // } // } // } else { // adminUser := c.GetAdminUserInfo() // errlog := &models.HisOrderError{ // UserOrgId: adminUser.CurrentOrgId, // Ctime: time.Now().Unix(), // Mtime: time.Now().Unix(), // ErrMsg: res.ErrMsg, // Status: 1, // PatientId: id, // RecordTime: recordDateTime, // Stage: 4, // } // service.CreateErrMsgLog(errlog) // // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeRegisterRepeatException) // return // } // } else { // adminUser := c.GetAdminUserInfo() // errlog := &models.HisOrderError{ // UserOrgId: adminUser.CurrentOrgId, // Ctime: time.Now().Unix(), // Mtime: time.Now().Unix(), // ErrMsg: res.ErrMsg, // Status: 1, // PatientId: id, // RecordTime: recordDateTime, // Stage: 4, // } // service.CreateErrMsgLog(errlog) // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeCalOrderException) // return // } // // } else { // var total float64 // for _, item := range prescriptions { // if item.Type == 1 { //药品 // for _, subItem := range item.HisDoctorAdviceInfo { // total = total + (subItem.Price * subItem.PrescribingNumber) // } // } // if item.Type == 2 { //项目 // for _, subItem := range item.HisPrescriptionProject { // total = total + (subItem.Price * float64(subItem.Count)) // } // } // // for _, subItem := range item.HisAdditionalCharge { // total = total + (subItem.Price * float64(subItem.Count)) // } // } // // allTotal := fmt.Sprintf("%.2f", total) // totals, _ := strconv.ParseFloat(allTotal, 64) // order := &models.HisOrder{ // UserOrgId: adminUser.CurrentOrgId, // HisPatientId: his.ID, // PatientId: id, // SettleAccountsDate: recordDateTime, // Ctime: time.Now().Unix(), // Mtime: time.Now().Unix(), // Status: 1, // OrderStatus: 2, // Number: chrg_bchno, // MedfeeSumamt: totals, // } // err = service.CreateOrder(order) // if err != nil { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeCreatePreOrderException) // return // } // // var customs []*Custom // for _, item := range prescriptions { // // if item.Type == 1 { //药品 // for _, subItem := range item.HisDoctorAdviceInfo { // cus := &Custom{ // AdviceId: subItem.ID, // ProjectId: 0, // DetItemFeeSumamt: fmt.Sprintf("%.2f", subItem.Price*subItem.PrescribingNumber), // Cut: fmt.Sprintf("%.2f", subItem.PrescribingNumber), // FeedetlSn: subItem.FeedetlSn, // Price: fmt.Sprintf("%.2f", subItem.Price), // MedListCodg: subItem.MedListCodg, // Type: 1, // } // customs = append(customs, cus) // } // } // // if item.Type == 2 { //项目 // for _, subItem := range item.HisPrescriptionProject { // // cus := &Custom{ // AdviceId: 0, // ProjectId: subItem.ID, // DetItemFeeSumamt: fmt.Sprintf("%.2f", subItem.Price*float64(subItem.Count)), // Cut: fmt.Sprintf("%.2f", float64(subItem.Count)), // FeedetlSn: subItem.FeedetlSn, // Price: fmt.Sprintf("%.2f", float64(subItem.Price)), // MedListCodg: subItem.MedListCodg, // Type: 2, // } // // customs = append(customs, cus) // } // } // // for _, item := range item.HisAdditionalCharge { // cus := &Custom{ // ItemId: item.ID, // AdviceId: 0, // ProjectId: 0, // DetItemFeeSumamt: fmt.Sprintf("%.2f", item.Price), // Cut: fmt.Sprintf("%.2f", float64(item.Count)), // FeedetlSn: item.FeedetlSn, // Price: fmt.Sprintf("%.2f", float64(item.Price)), // MedListCodg: item.XtHisAddtionConfig.Code, // Type: 3, // } // // customs = append(customs, cus) // } // // } // // for _, item := range customs { // var advice_id int64 = 0 // var project_id int64 = 0 // var item_id int64 = 0 // // var types int64 = 0 // // if item.Type == 1 { // advice_id = item.AdviceId // project_id = 0 // item_id = 0 // } else if item.Type == 2 { // advice_id = 0 // item_id = 0 // // project_id = item.ProjectId // } else if item.Type == 3 { // advice_id = 0 // item_id = item.ItemId // project_id = 0 // } // // detItemFeeSumamt, _ := strconv.ParseFloat(item.DetItemFeeSumamt, 32) // cut, _ := strconv.ParseFloat(item.Cut, 32) // pric, _ := strconv.ParseFloat(item.Price, 32) // // info := &models.HisOrderInfo{ // OrderNumber: order.Number, // UploadDate: time.Now().Unix(), // AdviceId: advice_id, // DetItemFeeSumamt: detItemFeeSumamt, // Cnt: cut, // Pric: pric, // PatientId: id, // Status: 1, // Mtime: time.Now().Unix(), // Ctime: time.Now().Unix(), // UserOrgId: adminUser.CurrentOrgId, // HisPatientId: his.ID, // OrderId: order.ID, // ProjectId: project_id, // Type: types, // ItemId: item_id, // } // service.CreateOrderInfo(info) // } // //err := service.UpDateAddtionNumber(adminUser.CurrentOrgId, ids, chrg_bchno) // err = service.UpDatePrescriptionNumber(adminUser.CurrentOrgId, ids, chrg_bchno) // err = service.UpDatePrescriptionInfoNumber(adminUser.CurrentOrgId, id, chrg_bchno, recordDateTime) // err = service.UpdataOrderStatusTwo(chrg_bchno, adminUser.CurrentOrgId) // if err == nil { // c.ServeSuccessJSON(map[string]interface{}{ // "msg": "结算成功", // }) // } else { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeAmountAccountException) // return // } // } //} //上传明细-预结算- func (c *HisApiController) GetPreUploadInfo() { id, _ := c.GetInt64("id") record_time := c.GetString("record_time") his_patient_id, _ := c.GetInt64("his_patient_id") settle_accounts_type, _ := c.GetInt64("settle_accounts_type") admin_user_id, _ := c.GetInt64("admin_user_id") diagnosis_id := c.GetString("diagnosis") sick_type, _ := c.GetInt64("sick_type") reg_type, _ := c.GetInt64("p_type") begin_time := c.GetString("begin_time") id_str := c.GetString("ids") ids_arr := strings.Split(id_str, ",") timeLayout := "2006-01-02" loc, _ := time.LoadLocation("Local") theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", record_time+" 00:00:00", loc) if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } recordDateTime := theTime.Unix() adminUser := c.GetAdminUserInfo() diagnosis_ids := strings.Split(diagnosis_id, ",") var config []*models.HisXtDiagnoseConfig for _, item := range diagnosis_ids { id, _ := strconv.ParseInt(item, 10, 64) diagnosisConfig, _ := service.FindDiagnoseById(id) config = append(config, &diagnosisConfig) } //diagnosisConfig, _ := service.FindDiagnoseById(diagnosis_id) sickConfig, _ := service.FindSickById(sick_type) var prescriptions []*models.HisPrescription var start_time int64 var end_time int64 roles, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) fmt.Println(his_patient_id) his, _ := service.GetNewHisPatientInfo(adminUser.CurrentOrgId, his_patient_id, recordDateTime) timestamp := time.Now().Unix() tempTime := time.Unix(timestamp, 0) timeFormat := tempTime.Format("20060102150405") chrgBchno := rand.Intn(100000) + 10000 chrg_bchno := timeFormat + strconv.FormatInt(int64(chrgBchno), 10) + strconv.FormatInt(his.PatientId, 10) miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) var patientPrescription models.HisPrescriptionInfo patientPrescription, _ = service.FindHisPatientPrescriptionInfo(adminUser.CurrentOrgId, his_patient_id, recordDateTime) if patientPrescription.ID == 0 { patientPrescription, _ = service.FindLastPatientPrescriptionInfo(adminUser.CurrentOrgId, id, recordDateTime) } //miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) department, _ := service.GetDepartMentDetail(patientPrescription.Departments) doctor_info, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, patientPrescription.DoctorId) strconv.FormatInt(his.PatientId, 10) var res2 ResultSix var resSix10265 ResultSix10265 //var time_stamp string if miConfig.MdtrtareaAdmvs == "421300" { data := make(map[string]interface{}) client := &http.Client{} data["psn_no"] = his.PsnNo data["mdtrt_id"] = his.Number data["department"] = department.Name data["org_name"] = miConfig.OrgName data["med_type"] = strconv.FormatInt(reg_type, 10) data["doctor_id"] = doctor_info.DoctorNumber data["doctor_name"] = roles.UserName data["fixmedins_code"] = miConfig.Code data["insuplc_admdvs"] = miConfig.InsuplcAdmdvs data["mdtrtarea_admvs"] = miConfig.MdtrtareaAdmvs data["secret_key"] = miConfig.SecretKey data["sick_code"] = sickConfig.CountryCode data["sick_name"] = sickConfig.ClassName data["begin_time"] = begin_time data["dept"] = strconv.FormatInt(department.ID, 10) data["config"] = config data["opter"] = roles.UserName fmt.Println(data) bytesData, _ := json.Marshal(data) req, _ := http.NewRequest("POST", "http://192.168.124.4:9532/"+"hbyb/2203", bytes.NewReader(bytesData)) resp, _ := client.Do(req) defer resp.Body.Close() body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(body), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) userJSONBytes, _ := json.Marshal(respJSON) fmt.Println("log") fmt.Println(string(userJSONBytes)) if err := json.Unmarshal(userJSONBytes, &res2); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "320921" || miConfig.MdtrtareaAdmvs == "320982" { data := make(map[string]interface{}) client := &http.Client{} data["psn_no"] = his.PsnNo data["mdtrt_id"] = his.Number data["doctor"] = roles.UserName data["department"] = department.Name data["org_name"] = miConfig.OrgName data["med_type"] = strconv.FormatInt(reg_type, 10) data["doctor_id"] = strconv.FormatInt(doctor_info.AdminUserId, 10) data["fixmedins_code"] = miConfig.Code data["insuplc_admdvs"] = his.InsuplcAdmdvs data["mdtrtarea_admvs"] = miConfig.MdtrtareaAdmvs data["secret_key"] = miConfig.SecretKey data["sick_code"] = sickConfig.CountryCode data["sick_name"] = sickConfig.ClassName data["begin_time"] = begin_time data["dept"] = strconv.FormatInt(department.ID, 10) data["config"] = config data["url"] = miConfig.Url data["ak"] = miConfig.AccessKey data["cainfo"] = miConfig.Cainfo bytesData, _ := json.Marshal(data) var req *http.Request if miConfig.MdtrtareaAdmvs == "320921" { req, _ = http.NewRequest("POST", "http://192.168.2.110:9532/"+"jsyb/2203", bytes.NewReader(bytesData)) } else { req, _ = http.NewRequest("POST", "http://192.168.5.251:9532/"+"jsyb/2203", bytes.NewReader(bytesData)) } resp, _ := client.Do(req) defer resp.Body.Close() body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(body), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } //time_stamp := strconv.FormatInt(int64(respJSON["data"].(map[string]interface{})["time_stamp"].(float64)), 10) //fmt.Println(respJSON["data"].(map[string]interface{})["time_stamp"].(string)) //time_stamp = respJSON["data"].(map[string]interface{})["time_stamp"].(string) respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) userJSONBytes, _ := json.Marshal(respJSON) fmt.Println("log") fmt.Println(string(userJSONBytes)) if err := json.Unmarshal(userJSONBytes, &resSix10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res2.InfRefmsgid = resSix10265.InfRefmsgid res2.Output = resSix10265.Output res2.ErrMsg = resSix10265.ErrMsg res2.Cainfo = resSix10265.Cainfo res2.WarnMsg = resSix10265.WarnMsg infocode, _ := strconv.ParseInt(resSix10265.Infcode, 10, 64) res2.Infcode = infocode } else if miConfig.MdtrtareaAdmvs == "350500" { result, requestLog, _ := service.FJyb2203(his.PsnNo, his.Number, doctor_info.UserName, department.Name, miConfig.OrgName, strconv.FormatInt(reg_type, 10), doctor_info.DoctorNumber, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, sickConfig.ContentCode, sickConfig.ClassName, roles.UserName, config, begin_time, doctor_info.UserName, roles.UserName, miConfig.Url, miConfig.Code, miConfig.AppSecret, miConfig.SignKey, miConfig.EncKey) saveLog(result, requestLog, "2203", "上传就诊信息") var respJSON2 map[string]interface{} if err := json.Unmarshal([]byte(string(result)), &respJSON2); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } userJSONBytes2, _ := json.Marshal(respJSON2) if err := json.Unmarshal(userJSONBytes2, &res2); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "360399" { var result string var requestLog string result, requestLog = service.Jxyb2203A(his.PsnNo, his.Number, doctor_info.UserName, department.Name, miConfig.OrgName, strconv.FormatInt(reg_type, 10), doctor_info.DoctorNumber, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, sickConfig.ContentCode, sickConfig.ClassName, roles.UserName, config, miConfig.Url, miConfig.AccessKey, "") saveLog(result, requestLog, "2203", "上传就诊信息") var respJSON2 map[string]interface{} if err := json.Unmarshal([]byte(string(result)), &respJSON2); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } userJSONBytes2, _ := json.Marshal(respJSON2) if err := json.Unmarshal(userJSONBytes2, &res2); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "430800" { var result string var requestLog string result, requestLog = service.Hnyb2203A(his.PsnNo, his.Number, doctor_info.UserName, department.Name, miConfig.OrgName, strconv.FormatInt(reg_type, 10), doctor_info.DoctorNumber, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, sickConfig.ContentCode, sickConfig.ClassName, roles.UserName, config, miConfig.Url, miConfig.AccessKey, "") saveLog(result, requestLog, "2203", "上传就诊信息") var respJSON2 map[string]interface{} if err := json.Unmarshal([]byte(string(result)), &respJSON2); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } userJSONBytes2, _ := json.Marshal(respJSON2) if err := json.Unmarshal(userJSONBytes2, &res2); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else { var result string var requestLog string if miConfig.MdtrtareaAdmvs == "440781" { // result, requestLog = service.Gdyb2203A(his.PsnNo, his.Number, doctor_info.UserName, department.Name, miConfig.OrgName, strconv.FormatInt(reg_type, 10), doctor_info.DoctorNumber, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, sickConfig.ContentCode, sickConfig.ClassName, roles.UserName, config, begin_time) } else { if miConfig.Code == "H15049901371" { //赤峰地区国家医保医疗类别 //职工透析:医疗类别选特殊情况门诊990502 //居民定额血透门慢: 医疗类别选门诊慢病140104 var med_type string if his.Insutype == "390" { if reg_type == 14 { med_type = "9933" } else if reg_type == 11 { med_type = "11" } } else if his.Insutype == "310" { if reg_type == 14 { med_type = "990502" } else if reg_type == 11 { med_type = "11" } } result, requestLog = service.Gdyb2203A(his.PsnNo, his.Number, doctor_info.UserName, department.Name, miConfig.OrgName, med_type, doctor_info.DoctorNumber, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, sickConfig.ContentCode, sickConfig.ClassName, roles.UserName, config, begin_time) } else { result, requestLog = service.Gdyb2203(his.PsnNo, his.Number, doctor_info.UserName, department.Name, miConfig.OrgName, strconv.FormatInt(reg_type, 10), doctor_info.DoctorNumber, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, sickConfig.ContentCode, sickConfig.ClassName, roles.UserName, config, begin_time) } saveLog(result, requestLog, "2203", "上传就诊信息") var respJSON2 map[string]interface{} if err := json.Unmarshal([]byte(string(result)), &respJSON2); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } userJSONBytes2, _ := json.Marshal(respJSON2) if miConfig.Code == "H15049901371" { if err := json.Unmarshal(userJSONBytes2, &resSix10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res2.InfRefmsgid = resSix10265.InfRefmsgid res2.Output = resSix10265.Output res2.ErrMsg = resSix10265.ErrMsg res2.Cainfo = resSix10265.Cainfo res2.WarnMsg = resSix10265.WarnMsg infocode, _ := strconv.ParseInt(resSix10265.Infcode, 10, 64) res2.Infcode = infocode } else { if err := json.Unmarshal(userJSONBytes2, &res2); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } } } if res2.Infcode != 0 { adminUser := c.GetAdminUserInfo() errlog := &models.HisOrderError{ UserOrgId: adminUser.CurrentOrgId, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), ErrMsg: res2.ErrMsg, Status: 1, PatientId: id, RecordTime: recordDateTime, Stage: 3, } service.CreateErrMsgLog(errlog) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res2.ErrMsg, }) return } else { his.Diagnosis = diagnosis_id his.SickType = sickConfig.ID his.PType = fmt.Sprintf("%d", reg_type) service.UpdateHisPatientThree(&his) data := make(map[string]interface{}) if settle_accounts_type == 1 { //日结 if reg_type == 11 || reg_type == 1111 || reg_type == 1112 { prescriptions, _ = service.GetPrescriptionByIds(ids_arr, adminUser.CurrentOrgId) } else { prescriptions, _ = service.GetNewHisPrescription(adminUser.CurrentOrgId, his_patient_id, recordDateTime, strconv.Itoa(int(reg_type))) } data["pre"] = prescriptions } else { //月结 start_time_str := c.GetString("start_time") end_time_str := c.GetString("end_time") timeLayout := "2006-01-02" loc, _ := time.LoadLocation("Local") theStartTime, err := time.ParseInLocation(timeLayout+" 15:04:05", start_time_str+" 00:00:00", loc) if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } recordStartTime := theStartTime.Unix() start_time = recordStartTime theEndTime, err := time.ParseInLocation(timeLayout+" 15:04:05", end_time_str+" 00:00:00", loc) if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } recordEndTime := theEndTime.Unix() end_time = recordEndTime prescriptions, _ = service.GetMonthHisPrescriptionTwo(adminUser.CurrentOrgId, id, recordStartTime, recordEndTime, reg_type) data["pre"] = prescriptions } client := &http.Client{} data["psn_no"] = his.PsnNo data["mdtrt_id"] = his.Number data["chrg_bchno"] = chrg_bchno data["org_name"] = miConfig.OrgName data["doctor"] = doctor_info.UserName data["doctor_id"] = doctor_info.DoctorNumber data["dept"] = department.Name data["fixmedins_code"] = miConfig.Code data["opter"] = roles.UserName data["dept_code"] = department.Number data["insuplc_admdvs"] = his.InsuplcAdmdvs data["mdtrtarea_admvs"] = miConfig.MdtrtareaAdmvs data["secret_key"] = miConfig.SecretKey data["balance_accounts_type"] = strconv.FormatInt(his.BalanceAccountsType, 10) data["url"] = miConfig.Url data["ak"] = miConfig.AccessKey data["new_doctor_name"] = patientPrescription.Doctor data["diag_code"] = sickConfig.CountryCode data["cainfo"] = miConfig.Cainfo data["opter"] = roles.UserName var ids []int64 for _, item := range prescriptions { ids = append(ids, item.ID) } config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId) if config.IsOpen == 1 { //对接了医保,走医保流程 var res ResultFour var resFour10265 ResultFour10265 if miConfig.MdtrtareaAdmvs == "421300" { bytesData, _ := json.Marshal(data) req, _ := http.NewRequest("POST", "http://192.168.124.4:9532/"+"hbyb/2204", bytes.NewReader(bytesData)) resp, _ := client.Do(req) defer resp.Body.Close() body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(body), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) userJSONBytes, _ := json.Marshal(respJSON) fmt.Println("log") fmt.Println(string(userJSONBytes)) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "320921" || miConfig.MdtrtareaAdmvs == "320982" { result3101 := Check3101(c, id, his_patient_id, admin_user_id, "2", record_time, prescriptions) if result3101.Infcode == "0" { if len(result3101.Output.Result) > 0 { var errMsgs []string for _, item := range result3101.Output.Result { errMsgs = append(errMsgs, item.VolaCont) } c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": errMsgs, }) return } else { if miConfig.MdtrtareaAdmvs == "320921" { data["doctor_id"] = "D320923012139" } else { data["doctor_id"] = "D371621008686" } bytesData, _ := json.Marshal(data) var req *http.Request if miConfig.MdtrtareaAdmvs == "320921" { req, _ = http.NewRequest("POST", "http://192.168.2.110:9532/"+"jsyb/2204", bytes.NewReader(bytesData)) } else { req, _ = http.NewRequest("POST", "http://192.168.5.251:9532/"+"jsyb/2204", bytes.NewReader(bytesData)) } resp, _ := client.Do(req) defer resp.Body.Close() body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(body), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) userJSONBytes, _ := json.Marshal(respJSON) fmt.Println("log") fmt.Println(string(userJSONBytes)) if err := json.Unmarshal(userJSONBytes, &resFour10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = resFour10265.InfRefmsgid res.Output = resFour10265.Output res.ErrMsg = resFour10265.ErrMsg res.Cainfo = resFour10265.Cainfo res.WarnMsg = resFour10265.WarnMsg infocode, _ := strconv.ParseInt(resFour10265.Infcode, 10, 64) res.Infcode = infocode } } } else if miConfig.MdtrtareaAdmvs == "350500" { result, request_log, _ := service.FJyb2204(his.PsnNo, his.Number, prescriptions, chrg_bchno, miConfig.OrgName, roles.UserName, strconv.FormatInt(patientPrescription.Departments, 10), miConfig.Code, department.Number, strconv.FormatInt(roles.AdminUserId, 10), his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, strconv.FormatInt(his.BalanceAccountsType, 10), roles.UserName, miConfig.Url, miConfig.Code, miConfig.AppSecret, miConfig.SignKey, miConfig.EncKey, sickConfig.CountryCode, doctor_info.DoctorNumber) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result, request_log, "2204", "上传费用明细") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "360399" { result, request_log := service.Jxyb2204(his.PsnNo, his.Number, prescriptions, chrg_bchno, miConfig.OrgName, roles.UserName, data["dept"].(string), data["fixmedins_code"].(string), data["dept_code"].(string), data["doctor_id"].(string), his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, data["balance_accounts_type"].(string), sickConfig.CountryCode, miConfig.Url, miConfig.AccessKey, doctor_info.UserName, "", "") var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result, request_log, "2204", "上传费用明细") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "430800" { result, request_log := service.Hnyb2204(his.PsnNo, his.Number, prescriptions, chrg_bchno, miConfig.OrgName, roles.UserName, data["dept"].(string), data["fixmedins_code"].(string), data["dept_code"].(string), data["doctor_id"].(string), his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, data["balance_accounts_type"].(string), sickConfig.CountryCode, miConfig.Url, miConfig.AccessKey, doctor_info.UserName, "", "") var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result, request_log, "2204", "上传费用明细") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else { if miConfig.Code == "H15049901371" { result, request_log := service.Gdyb2204(his.PsnNo, his.Number, prescriptions, chrg_bchno, miConfig.OrgName, roles.UserName, data["dept"].(string), data["fixmedins_code"].(string), data["dept_code"].(string), data["doctor_id"].(string), his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, data["balance_accounts_type"].(string), patientPrescription.DoctorId, sickConfig.CountryCode) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result, request_log, "2204", "上传费用明细") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &resFour10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = resFour10265.InfRefmsgid res.Output = resFour10265.Output res.ErrMsg = resFour10265.ErrMsg res.Cainfo = resFour10265.Cainfo res.WarnMsg = resFour10265.WarnMsg infocode, _ := strconv.ParseInt(resFour10265.Infcode, 10, 64) res.Infcode = infocode } else { result, request_log := service.Gdyb2204(his.PsnNo, his.Number, prescriptions, chrg_bchno, miConfig.OrgName, roles.UserName, data["dept"].(string), data["fixmedins_code"].(string), data["dept_code"].(string), data["doctor_id"].(string), miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, data["balance_accounts_type"].(string), patientPrescription.DoctorId, sickConfig.CountryCode) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result, request_log, "2204", "上传费用明细") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } } if res.Infcode == 0 { order := &models.HisOrder{ UserOrgId: adminUser.CurrentOrgId, HisPatientId: his.ID, PatientId: his.PatientId, SettleAccountsDate: recordDateTime, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), MdtrtId: his.Number, PsnNo: his.PsnNo, MedType: strconv.FormatInt(reg_type, 10), Status: 1, Number: chrg_bchno, Infcode: res.Infcode, WarnMsg: res.WarnMsg, Cainfo: res.Cainfo, ErrMsg: res.ErrMsg, RespondTime: res.RefmsgTime, InfRefmsgid: res.InfRefmsgid, OrderStatus: 1, IsMedicineInsurance: 1, SettleType: settle_accounts_type, SettleStartTime: start_time, SettleEndTime: end_time, Creator: roles.AdminUserId, Modify: roles.AdminUserId, PType: 2, Diagnosis: diagnosis_id, } err = service.CreateOrder(order) if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeCreatePreOrderException) return } for _, item := range res.Output.Result { temp := strings.Split(item.FeedetlSn, "-") var advice_id int64 = 0 var project_id int64 = 0 var types int64 = 0 id, _ := strconv.ParseInt(temp[2], 10, 64) types, _ = strconv.ParseInt(temp[1], 10, 64) if temp[1] == "1" { advice_id = id project_id = 0 } else if temp[1] == "2" { advice_id = 0 project_id = id } info := &models.HisOrderInfo{ OrderNumber: order.Number, FeedetlSn: item.FeedetlSn, UploadDate: time.Now().Unix(), AdviceId: advice_id, DetItemFeeSumamt: item.DetItemFeeSumamt, Cnt: item.Cnt, Pric: float64(item.Pric), PatientId: his.PatientId, PricUplmtAmt: item.PricUplmtAmt, SelfpayProp: item.SelfpayProp, FulamtOwnpayAmt: item.FulamtOwnpayAmt, OverlmtAmt: item.OverlmtAmt, PreselfpayAmt: item.PreselfpayAmt, BasMednFlag: item.BasMednFlag, MedChrgitmType: item.MedChrgitmType, HiNegoDrugFlag: item.HiNegoDrugFlag, Status: 1, Memo: item.Memo, Mtime: time.Now().Unix(), InscpScpAmt: item.InscpScpAmt, DrtReimFlag: item.DrtReimFlag, Ctime: time.Now().Unix(), ListSpItemFlag: item.ListSpItemFlag, ChldMedcFlag: item.ChldMedcFlag, LmtUsedFlag: item.LmtUsedFlag, ChrgitmLv: item.ChrgitmLv, UserOrgId: adminUser.CurrentOrgId, HisPatientId: his.ID, OrderId: order.ID, ProjectId: project_id, Type: types, } service.CreateOrderInfo(info) } service.UpDatePrescriptionNumber(adminUser.CurrentOrgId, ids, chrg_bchno) service.UpDateHisPrescriptionInfoNumber(adminUser.CurrentOrgId, his_patient_id, chrg_bchno, recordDateTime) var total float64 for _, item := range prescriptions { if item.Type == 1 { //药品 for _, subItem := range item.HisDoctorAdviceInfo { total = total + (subItem.Price * subItem.PrescribingNumber) } } if item.Type == 2 { //项目 for _, subItem := range item.HisPrescriptionProject { cnt, _ := strconv.ParseFloat(subItem.Count, 64) total = total + (subItem.Price * cnt) } } } for _, item := range prescriptions { for _, subItem := range item.HisAdditionalCharge { total = total + (subItem.Price * float64(subItem.Count)) } } allTotal := fmt.Sprintf("%.4f", total) if res.Infcode == 0 { var rf []*ResultFive json.Unmarshal([]byte(his.Iinfo), &rf) chrg_bchno := chrg_bchno cert_no := his.Certno var insutypes []string var insutype string var is390 int = 0 var is310 int = 0 for _, item := range rf { if (item.Insutype == "390" && item.PsnInsuStas == "1") || (item.Insutype == "310" && item.PsnInsuStas == "1") { insutypes = append(insutypes, item.Insutype) } } if len(insutypes) == 1 { insutype = insutypes[0] } else { for _, i := range insutypes { if i == "390" { is390 = 1 } if i == "310" { is310 = 1 } } } if is390 == 1 { insutype = "390" } if is310 == 1 { insutype = "310" } if len(insutypes) == 0 { insutype = "310" } if len(insutypes) == 2 { insutype = strconv.FormatInt(his.SocialType, 64) } //insutype = "390" if his.IdCardType == 1 { cert_no = his.MedicalInsuranceNumber } else { cert_no = his.Certno } var res ResultSeven var resSeven10265 ResultSeven10265 if miConfig.MdtrtareaAdmvs == "421300" { api := "http://192.168.124.4:9532/" + "hbyb/2206?psn_no=" + his.PsnNo + "&mdtrt_id=" + his.Number + "&chrg_bchno=" + chrg_bchno + "&org_name=" + miConfig.OrgName + "&doctor=" + roles.UserName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + his.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&id_card_type=" + strconv.FormatInt(his.IdCardType, 10) + "&certificates=" + strconv.FormatInt(his.IdType, 10) + "&cert_no=" + cert_no + "&insutype=" + insutype + "&total=" + allTotal + "&med_type=" + strconv.FormatInt(reg_type, 10) resp, requestErr := http.Get(api) if requestErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) result, _ := json.Marshal(respJSON) fmt.Println("log") fmt.Println(string(result)) if err := json.Unmarshal([]byte(result), &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "320921" || miConfig.MdtrtareaAdmvs == "320982" { result3101 := Check3102(c, id, his_patient_id, admin_user_id, "6", order.ID) if result3101.Infcode == "0" { if len(result3101.Output.Result) > 0 { var errMsgs []string for _, item := range result3101.Output.Result { errMsgs = append(errMsgs, item.VolaCont) } c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": errMsgs, }) return } else { psn_info, _ := service.GetPsnByPatientId(his.PatientId) if his.IdCardType != 4 { psn_info.VerifyNumber = strings.Replace(psn_info.VerifyNumber, "+", "%2B", -1) bas := strings.Split(psn_info.CardInfo, "|") if his.IdCardType == 1 { cert_no = bas[2] } else { cert_no = bas[1] } } else { cert_no = his.Certno } //江苏地区国家医保医疗类别 //职工透析:医疗类别选特殊情况门诊9933 //居民血透门慢: 医疗类别选门诊慢病1402 //var med_type string //if his.Insutype == "310" { // if reg_type == 14 { // med_type = "9933" // } else if reg_type == 11 { // med_type = "11" // // } //} else if his.Insutype == "390" { // if reg_type == 14 { // med_type = "1402" // } else if reg_type == 11 { // med_type = "11" // } //} var api string if miConfig.MdtrtareaAdmvs == "320921" { api = "http://192.168.2.110:9532/" + "jsyb/2206?psn_no=" + his.PsnNo + "&mdtrt_id=" + his.Number + "&chrg_bchno=" + chrg_bchno + "&org_name=" + miConfig.OrgName + "&doctor=" + roles.UserName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + his.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&id_card_type=" + strconv.FormatInt(his.IdCardType, 10) + "&certificates=" + strconv.FormatInt(his.IdType, 10) + "&cert_no=" + cert_no + "&insutype=" + insutype + "&total=" + allTotal + "&med_type=" + strconv.FormatInt(reg_type, 10) + "&verify_number=" + psn_info.VerifyNumber + "&url=" + miConfig.Url + "&ak=" + miConfig.AccessKey + "&cainfo=" + miConfig.Cainfo //req, _ = http.NewRequest("POST", "http://192.168.2.110:9532/"+"jsyb/2204", bytes.NewReader(bytesData)) } else { //req, _ = http.NewRequest("POST", "http://192.168.5.251:9532/"+"jsyb/2204", bytes.NewReader(bytesData)) api = "http://192.168.5.251:9532/" + "jsyb/2206?psn_no=" + his.PsnNo + "&mdtrt_id=" + his.Number + "&chrg_bchno=" + chrg_bchno + "&org_name=" + miConfig.OrgName + "&doctor=" + roles.UserName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + his.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&id_card_type=" + strconv.FormatInt(his.IdCardType, 10) + "&certificates=" + strconv.FormatInt(his.IdType, 10) + "&cert_no=" + cert_no + "&insutype=" + insutype + "&total=" + allTotal + "&med_type=" + strconv.FormatInt(reg_type, 10) + "&verify_number=" + psn_info.VerifyNumber + "&url=" + miConfig.Url + "&ak=" + miConfig.AccessKey + "&cainfo=" + miConfig.Cainfo } resp, requestErr := http.Get(api) if requestErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) result, _ := json.Marshal(respJSON) fmt.Println("log") fmt.Println(string(result)) if err := json.Unmarshal([]byte(result), &resSeven10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = resSeven10265.InfRefmsgid res.Output = resSeven10265.Output res.ErrMsg = resSeven10265.ErrMsg res.Cainfo = resSeven10265.Cainfo res.WarnMsg = resSeven10265.WarnMsg infocode, _ := strconv.ParseInt(resSeven10265.Infcode, 10, 64) res.Infcode = infocode } } } else if miConfig.MdtrtareaAdmvs == "350500" { psn_info, _ := service.GetPsnByPatientIdTwo(his.PatientId, recordDateTime) var result string var request_log string if his.IdCardType == 4 && len(psn_info.VerifyNumber) > 0 { result, request_log, _ = service.FJyb2206ForToken(his.PsnNo, his.Number, chrg_bchno, psn_info.VerifyNumber, insutype, allTotal, miConfig.OrgName, roles.UserName, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, strconv.FormatInt(reg_type, 10), his.IdCardType, 0, 0, 0, 0, his.IdType, miConfig.Url, miConfig.Code, miConfig.AppSecret, miConfig.SignKey, miConfig.EncKey) } else { result, request_log, _ = service.FJyb2206(his.PsnNo, his.Number, chrg_bchno, cert_no, insutype, allTotal, miConfig.OrgName, roles.UserName, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, strconv.FormatInt(reg_type, 10), his.IdCardType, 0, 0, 0, 0, his.IdType, miConfig.Url, miConfig.Code, miConfig.AppSecret, miConfig.SignKey, miConfig.EncKey) } var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result, request_log, "2206", "预结算") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "360399" { var result string var request_log string if his.IdCardType == 2 { result, request_log = service.Jxyb2206(his.PsnNo, his.Number, chrg_bchno, his.IdCardNo, insutype, allTotal, miConfig.OrgName, roles.UserName, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, strconv.FormatInt(reg_type, 10), his.IdCardType, 0, 0, 0, 0, his.IdType, miConfig.Url, miConfig.AccessKey, his.IdCardNo, "") } else if his.IdCardType == 1 { psn_info, _ := service.GetPsnByPatientId(his.PatientId) bas := strings.Split(psn_info.CardInfo, "|") basNumber := bas[2] card_sn := bas[3] result, request_log = service.Jxyb2206Two(his.PsnNo, his.Number, chrg_bchno, psn_info.VerifyNumber, insutype, allTotal, miConfig.OrgName, roles.UserName, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, strconv.FormatInt(reg_type, 10), his.IdCardType, 0, 0, 0, 0, his.IdType, miConfig.Url, miConfig.AccessKey, basNumber, "", card_sn) } else { psn_info, _ := service.GetPsnByPatientId(his.PatientId) result, request_log = service.Jxyb2206(his.PsnNo, his.Number, chrg_bchno, psn_info.VerifyNumber, insutype, allTotal, miConfig.OrgName, roles.UserName, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, strconv.FormatInt(reg_type, 10), his.IdCardType, 0, 0, 0, 0, his.IdType, miConfig.Url, miConfig.AccessKey, psn_info.VerifyNumber, "") } var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result, request_log, "2206", "预结算") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "430800" { var result string var request_log string if his.IdCardType == 2 { result, request_log = service.Hnyb2206(his.PsnNo, his.Number, chrg_bchno, his.IdCardNo, insutype, allTotal, miConfig.OrgName, roles.UserName, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, strconv.FormatInt(reg_type, 10), his.IdCardType, 0, 0, 0, 0, his.IdType, miConfig.Url, miConfig.AccessKey, his.IdCardNo, "") } else if his.IdCardType == 1 { psn_info, _ := service.GetPsnByPatientId(his.PatientId) bas := strings.Split(psn_info.CardInfo, "|") basNumber := bas[2] card_sn := bas[3] result, request_log = service.Hnyb2206Two(his.PsnNo, his.Number, chrg_bchno, psn_info.VerifyNumber, insutype, allTotal, miConfig.OrgName, roles.UserName, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, strconv.FormatInt(reg_type, 10), his.IdCardType, 0, 0, 0, 0, his.IdType, miConfig.Url, miConfig.AccessKey, basNumber, "", card_sn) } else { psn_info, _ := service.GetPsnByPatientId(his.PatientId) result, request_log = service.Hnyb2206(his.PsnNo, his.Number, chrg_bchno, psn_info.VerifyNumber, insutype, allTotal, miConfig.OrgName, roles.UserName, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, strconv.FormatInt(reg_type, 10), his.IdCardType, 0, 0, 0, 0, his.IdType, miConfig.Url, miConfig.AccessKey, psn_info.VerifyNumber, "") } var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result, request_log, "2206", "预结算") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else { var result string var request_log string if miConfig.Code == "H15049901371" { //赤峰地区国家医保医疗类别 //职工透析:医疗类别选特殊情况门诊990502 //居民定额血透门慢: 医疗类别选门诊慢病140104 var med_type string if his.Insutype == "390" { if reg_type == 14 { med_type = "9933" } else if reg_type == 11 { med_type = "11" } } else if his.Insutype == "310" { if reg_type == 14 { med_type = "990502" } else if reg_type == 11 { med_type = "11" } } result, request_log = service.Gdyb2206(his.PsnNo, his.Number, chrg_bchno, cert_no, insutype, allTotal, miConfig.OrgName, roles.UserName, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, med_type, his.IdCardType, 0, 0, 0, 0, his.IdType) } else { psn_info, _ := service.GetPsnByPatientId(his.PatientId) if his.IdCardType == 4 { result, request_log = service.Gdyb2206(his.PsnNo, his.Number, chrg_bchno, psn_info.VerifyNumber, insutype, allTotal, miConfig.OrgName, roles.UserName, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, strconv.FormatInt(reg_type, 10), his.IdCardType, 0, 0, 0, 0, his.IdType) } else { result, request_log = service.Gdyb2206(his.PsnNo, his.Number, chrg_bchno, cert_no, insutype, allTotal, miConfig.OrgName, roles.UserName, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, strconv.FormatInt(reg_type, 10), his.IdCardType, 0, 0, 0, 0, his.IdType) } } var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result, request_log, "2206", "预结算") //userJSONBytes, _ := json.Marshal(dat) // //if err := json.Unmarshal(userJSONBytes, &res); err != nil { // utils.ErrorLog("解析失败:%v", err) // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return //} userJSONBytes, _ := json.Marshal(dat) if miConfig.Code == "H15049901371" { if err := json.Unmarshal(userJSONBytes, &resSeven10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = resSeven10265.InfRefmsgid res.Output = resSeven10265.Output res.ErrMsg = resSeven10265.ErrMsg res.Cainfo = resSeven10265.Cainfo res.WarnMsg = resSeven10265.WarnMsg infocode, _ := strconv.ParseInt(resSeven10265.Infcode, 10, 64) res.Infcode = infocode } else { if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } } if res.Infcode != 0 { errlog := &models.HisOrderError{ UserOrgId: adminUser.CurrentOrgId, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Number: chrg_bchno, ErrMsg: res.ErrMsg, Status: 1, PatientId: id, RecordTime: recordDateTime, Stage: 20, } service.CreateErrMsgLog(errlog) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.ErrMsg, }) return } else { order, _ := service.GetHisOrderTwo(adminUser.CurrentOrgId, chrg_bchno, id) order.OrderStatus = 1 order.IsPre = 1 order.Status = 1 order.MdtrtId = res.Output.Setlinfo.MdtrtID order.SetlId = res.Output.Setlinfo.SetlID order.PsnNo = res.Output.Setlinfo.PsnNo order.PsnName = res.Output.Setlinfo.PsnName order.PsnCertType = res.Output.Setlinfo.PsnCertType order.Certno = res.Output.Setlinfo.Certno order.Gend = res.Output.Setlinfo.Gend order.Naty = res.Output.Setlinfo.Naty order.Age = res.Output.Setlinfo.Age order.Insutype = res.Output.Setlinfo.Insutype order.PsnType = res.Output.Setlinfo.PsnType order.CvlservFlag = res.Output.Setlinfo.CvlservFlag order.SetlTime = res.Output.Setlinfo.SetlTime order.MdtrtCertType = res.Output.Setlinfo.MdtrtCertType if res.Output.Setlinfo.MedType == "140101" { order.MedType = "14" } else { order.MedType = res.Output.Setlinfo.MedType } if reg_type == 1112 { order.MedType = "1112" } if reg_type == 1111 { order.MedType = "1111" } order.MedfeeSumamt = res.Output.Setlinfo.MedfeeSumamt order.FulamtOwnpayAmt = res.Output.Setlinfo.FulamtOwnpayAmt order.OverlmtSelfPay = res.Output.Setlinfo.OverlmtSelfpay order.PreselfpayAmt = res.Output.Setlinfo.PreselfpayAmt order.InscpScpAmt = res.Output.Setlinfo.InscpScpAmt order.ActPayDedc = res.Output.Setlinfo.ActPayDedc order.HifpPay = res.Output.Setlinfo.HifpPay order.CvlservPay = res.Output.Setlinfo.CvlservPay order.PoolPropSelfpay = res.Output.Setlinfo.PoolPropSelfpay order.HifesPay = res.Output.Setlinfo.HifesPay order.HifobPay = res.Output.Setlinfo.HifobPay order.MafPay = res.Output.Setlinfo.MafPay order.HifmiPay = res.Output.Setlinfo.HifmiPay order.OthPay = res.Output.Setlinfo.OthPay order.FundPaySumamt = res.Output.Setlinfo.FundPaySumamt order.PsnPartAmt = res.Output.Setlinfo.PsnPartAmt order.AcctPay = res.Output.Setlinfo.AcctPay order.PsnCashPay = res.Output.Setlinfo.PsnCashPay order.HospPartAmt = res.Output.Setlinfo.HospPartAmt order.Balc = res.Output.Setlinfo.Balc order.AcctMulaidPay = res.Output.Setlinfo.AcctMulaidPay order.MedinsSetlId = res.Output.Setlinfo.MedinsSetlID order.ClrOptins = res.Output.Setlinfo.ClrOptins order.ClrWay = res.Output.Setlinfo.ClrWay order.Creator = order.Creator order.Modify = roles.AdminUserId setlDetail, _ := json.Marshal(res.Output.Setldetail) detailStr := string(setlDetail) order.SetlDetail = detailStr //err := service.UpdataOrderStatusTwo(chrg_bchno, adminUser.CurrentOrgId) err = service.UpDateOrder(order) if err == nil { c.ServeSuccessJSON(map[string]interface{}{ "msg": "预结算成功", }) } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeAmountAccountException) return } } } else { adminUser := c.GetAdminUserInfo() errlog := &models.HisOrderError{ UserOrgId: adminUser.CurrentOrgId, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), ErrMsg: res.ErrMsg, Status: 1, PatientId: id, RecordTime: recordDateTime, Stage: 4, } service.CreateErrMsgLog(errlog) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeRegisterRepeatException) return } } else { adminUser := c.GetAdminUserInfo() errlog := &models.HisOrderError{ UserOrgId: adminUser.CurrentOrgId, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), ErrMsg: res.ErrMsg, Status: 1, PatientId: id, RecordTime: recordDateTime, Stage: 4, } service.CreateErrMsgLog(errlog) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.ErrMsg, }) return } } } } //退款 func (c *HisApiController) Refund() { order_id, _ := c.GetInt64("order_id") admin_user_id, _ := c.GetInt64("admin_user_id") adminUser := c.GetAdminUserInfo() var order models.HisOrder order, _ = service.GetHisOrderByID(order_id) roles, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) if order.ID == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } his, _ := service.GetHisPatientByNumber(order.MdtrtId) miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId) if config.IsOpen == 1 { //对接了医保,走医保流程 var res ResultSixteen var resSixteen10265 ResultSixteen10265 var src_resquest string var result string if miConfig.MdtrtareaAdmvs == "421300" { api3 := "http://192.168.124.4:9532/" + "hbyb/2208?psn_no=" + order.PsnNo + "&mdtrt_id=" + order.MdtrtId + "&setl_id=" + order.SetlId + "&doctor=" + roles.UserName + "&org_name=" + miConfig.OrgName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey resp3, requestErr3 := http.Get(api3) if requestErr3 != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body3, ioErr3 := ioutil.ReadAll(resp3.Body) if ioErr3 != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr3) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON3 map[string]interface{} if err := json.Unmarshal([]byte(string(body3)), &respJSON3); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON3 = respJSON3["data"].(map[string]interface{})["pre"].(map[string]interface{}) userJSONBytes3, _ := json.Marshal(respJSON3) fmt.Println("log") fmt.Println(string(userJSONBytes3)) if err := json.Unmarshal(userJSONBytes3, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "320921" || miConfig.MdtrtareaAdmvs == "320982" { var api3 string if miConfig.MdtrtareaAdmvs == "320921" { api3 = "http://192.168.2.110:9532/" + "jsyb/2208?psn_no=" + order.PsnNo + "&mdtrt_id=" + order.MdtrtId + "&setl_id=" + order.SetlId + "&doctor=" + roles.UserName + "&org_name=" + miConfig.OrgName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&url=" + miConfig.Url + "&ak=" + miConfig.AccessKey + "&cainfo=" + miConfig.Cainfo //req, _ = http.NewRequest("POST", "http://192.168.2.110:9532/"+"jsyb/2204", bytes.NewReader(bytesData)) } else { //req, _ = http.NewRequest("POST", "http://192.168.5.251:9532/"+"jsyb/2204", bytes.NewReader(bytesData)) api3 = "http://192.168.5.251:9532/" + "jsyb/2208?psn_no=" + order.PsnNo + "&mdtrt_id=" + order.MdtrtId + "&setl_id=" + order.SetlId + "&doctor=" + roles.UserName + "&org_name=" + miConfig.OrgName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&url=" + miConfig.Url + "&ak=" + miConfig.AccessKey + "&cainfo=" + miConfig.Cainfo } resp3, requestErr3 := http.Get(api3) if requestErr3 != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body3, ioErr3 := ioutil.ReadAll(resp3.Body) if ioErr3 != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr3) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON3 map[string]interface{} if err := json.Unmarshal([]byte(string(body3)), &respJSON3); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON3 = respJSON3["data"].(map[string]interface{})["pre"].(map[string]interface{}) userJSONBytes3, _ := json.Marshal(respJSON3) if err := json.Unmarshal(userJSONBytes3, &resSixteen10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = resSixteen10265.InfRefmsgid res.Output = resSixteen10265.Output res.ErrMsg = resSixteen10265.ErrMsg res.Cainfo = resSixteen10265.Cainfo res.WarnMsg = resSixteen10265.WarnMsg infocode, _ := strconv.ParseInt(resSixteen10265.Infcode, 10, 64) res.Infcode = infocode } else if miConfig.MdtrtareaAdmvs == "350500" { result, src_resquest, _ = service.FJyb2208(order.PsnNo, order.MdtrtId, order.SetlId, miConfig.OrgName, roles.UserName, miConfig.SecretKey, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.Url, miConfig.Code, miConfig.AppSecret, miConfig.SignKey, miConfig.EncKey) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result, src_resquest, "2208", "退费") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "360399" { result, src_resquest = service.Jxyb2208(order.PsnNo, order.MdtrtId, order.SetlId, miConfig.OrgName, roles.UserName, miConfig.SecretKey, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.Url, miConfig.AccessKey, "") var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result, src_resquest, "2208", "退费") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "430800" { result, src_resquest = service.Hnyb2208(order.PsnNo, order.MdtrtId, order.SetlId, miConfig.OrgName, roles.UserName, miConfig.SecretKey, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.Url, miConfig.AccessKey, "") var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result, src_resquest, "2208", "退费") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else { if miConfig.Code == "H15049901371" { result, src_resquest = service.Gdyb2208(order.PsnNo, order.MdtrtId, order.SetlId, miConfig.OrgName, roles.UserName, miConfig.SecretKey, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result, src_resquest, "2208", "退费") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &resSixteen10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = resSixteen10265.InfRefmsgid res.Output = resSixteen10265.Output res.ErrMsg = resSixteen10265.ErrMsg res.Cainfo = resSixteen10265.Cainfo res.WarnMsg = resSixteen10265.WarnMsg infocode, _ := strconv.ParseInt(resSixteen10265.Infcode, 10, 64) res.Infcode = infocode } else { result, src_resquest = service.Gdyb2208(order.PsnNo, order.MdtrtId, order.SetlId, miConfig.OrgName, roles.UserName, miConfig.SecretKey, miConfig.Code, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result, src_resquest, "2208", "退费") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } } if res.Infcode == 0 { var res2 ResultSix var resSix10265 ResultSix10265 if miConfig.MdtrtareaAdmvs == "421300" { api3 := "http://192.168.124.4:9532/" + "hbyb/2205?psn_no=" + order.PsnNo + "&mdtrt_id=" + order.MdtrtId + "&chrg_bchno=" + order.Number + "&doctor=" + roles.UserName + "&org_name=" + miConfig.OrgName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + his.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey resp3, requestErr3 := http.Get(api3) if requestErr3 != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body3, ioErr3 := ioutil.ReadAll(resp3.Body) if ioErr3 != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr3) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON3 map[string]interface{} if err := json.Unmarshal([]byte(string(body3)), &respJSON3); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON3 = respJSON3["data"].(map[string]interface{})["pre"].(map[string]interface{}) userJSONBytes3, _ := json.Marshal(respJSON3) fmt.Println("log") fmt.Println(string(userJSONBytes3)) if err := json.Unmarshal(userJSONBytes3, &res2); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "320921" || miConfig.MdtrtareaAdmvs == "320982" { var api3 string if miConfig.MdtrtareaAdmvs == "320921" { api3 = "http://192.168.2.110:9532/" + "jsyb/2205?psn_no=" + order.PsnNo + "&mdtrt_id=" + order.MdtrtId + "&chrg_bchno=" + order.Number + "&doctor=" + roles.UserName + "&org_name=" + miConfig.OrgName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + his.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&url=" + miConfig.Url + "&ak=" + miConfig.AccessKey + "&cainfo=" + miConfig.Cainfo //req, _ = http.NewRequest("POST", "http://192.168.2.110:9532/"+"jsyb/2204", bytes.NewReader(bytesData)) } else { //req, _ = http.NewRequest("POST", "http://192.168.5.251:9532/"+"jsyb/2204", bytes.NewReader(bytesData)) api3 = "http://192.168.5.251:9532/" + "jsyb/2205?psn_no=" + order.PsnNo + "&mdtrt_id=" + order.MdtrtId + "&chrg_bchno=" + order.Number + "&doctor=" + roles.UserName + "&org_name=" + miConfig.OrgName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + his.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&url=" + miConfig.Url + "&ak=" + miConfig.AccessKey + "&cainfo=" + miConfig.Cainfo } resp3, requestErr3 := http.Get(api3) if requestErr3 != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body3, ioErr3 := ioutil.ReadAll(resp3.Body) if ioErr3 != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr3) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON3 map[string]interface{} if err := json.Unmarshal([]byte(string(body3)), &respJSON3); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON3 = respJSON3["data"].(map[string]interface{})["pre"].(map[string]interface{}) userJSONBytes3, _ := json.Marshal(respJSON3) fmt.Println("log") fmt.Println(string(userJSONBytes3)) if err := json.Unmarshal(userJSONBytes3, &resSix10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res2.InfRefmsgid = resSix10265.InfRefmsgid res2.Output = resSix10265.Output res2.ErrMsg = resSix10265.ErrMsg res2.Cainfo = resSix10265.Cainfo res2.WarnMsg = resSix10265.WarnMsg infocode, _ := strconv.ParseInt(resSix10265.Infcode, 10, 64) res2.Infcode = infocode } else if miConfig.MdtrtareaAdmvs == "350500" { result2, src_request, _ := service.FJyb2205(order.PsnNo, order.MdtrtId, order.Number, miConfig.OrgName, roles.UserName, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, miConfig.Code, miConfig.Url, miConfig.Code, miConfig.AppSecret, miConfig.SignKey, miConfig.EncKey) var dat map[string]interface{} if err := json.Unmarshal([]byte(result2), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result2, src_request, "2205", "撤销明细") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res2); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "360399" { result2, src_request := service.Jxyb2205(order.PsnNo, order.MdtrtId, order.Number, miConfig.OrgName, roles.UserName, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, miConfig.Code, miConfig.Url, miConfig.AccessKey, "") var dat map[string]interface{} if err := json.Unmarshal([]byte(result2), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result2, src_request, "2205", "撤销明细") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res2); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "430800" { result2, src_request := service.Hnyb2205(order.PsnNo, order.MdtrtId, order.Number, miConfig.OrgName, roles.UserName, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, miConfig.Code, miConfig.Url, miConfig.AccessKey, "") var dat map[string]interface{} if err := json.Unmarshal([]byte(result2), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result2, src_request, "2205", "撤销明细") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res2); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else { if miConfig.Code == "H15049901371" { result2, src_request := service.Gdyb2205(order.PsnNo, order.MdtrtId, order.Number, miConfig.OrgName, roles.UserName, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, miConfig.Code) var dat map[string]interface{} if err := json.Unmarshal([]byte(result2), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result2, src_request, "2205", "撤销明细") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &resSix10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res2.InfRefmsgid = resSix10265.InfRefmsgid res2.Output = resSix10265.Output res2.ErrMsg = resSix10265.ErrMsg res2.Cainfo = resSix10265.Cainfo res2.WarnMsg = resSix10265.WarnMsg infocode, _ := strconv.ParseInt(resSix10265.Infcode, 10, 64) res2.Infcode = infocode } else { result2, src_request := service.Gdyb2205(order.PsnNo, order.MdtrtId, order.Number, miConfig.OrgName, roles.UserName, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, miConfig.Code) var dat map[string]interface{} if err := json.Unmarshal([]byte(result2), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result2, src_request, "2205", "撤销明细") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res2); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } } if res2.Infcode == 0 { err := service.UpdataOrderStatus(order_id, order.Number, adminUser.CurrentOrgId, src_resquest, result) if err == nil { //当押金不为零时产生退费记录 if order.Decimal != 0 { tmp := strconv.FormatInt(order.ID, 10) err = service.MoneyIncrease(adminUser.CurrentOrgId, order.PatientId, tmp, order.Decimal) if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } c.ServeSuccessJSON(map[string]interface{}{ "msg": "退费成功", }) } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else { c.ServeSuccessJSON(map[string]interface{}{ "code": -10, "msg": res2.ErrMsg, }) } } else { c.ServeSuccessJSON(map[string]interface{}{ "code": -10, "msg": res.ErrMsg, }) } } } func (c *HisApiController) RefundNumber() { record_time := c.GetString("record_time") //patient_id, _ := c.GetInt64("patient_id") admin_user_id, _ := c.GetInt64("admin_user_id") his_patient_id, _ := c.GetInt64("id") timeLayout := "2006-01-02" loc, _ := time.LoadLocation("Local") adminUser := c.GetAdminUserInfo() theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", record_time+" 00:00:00", loc) fmt.Println(err) if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } recordDateTime := theTime.Unix() //his, _ := service.GetVMHisPatientInfo(adminUser.CurrentOrgId, patient_id, recordDateTime) his, _ := service.GetHisPatientRecord(adminUser.CurrentOrgId, his_patient_id) //patientPrescription, _ := service.FindPatientPrescriptionInfo(adminUser.CurrentOrgId, patient_id, recordDateTime) //order, _ := service.GetHisOrderByID(order_id) miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId) roles, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) count, _ := service.GetOrderCountByNumber(adminUser.CurrentOrgId, his.PatientId, recordDateTime, his.Number) if count > 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeOrderParamWrong) return } if config.IsOpen == 1 { //对接了医保,走医保流程 var res2 ResultSix var resSix10265 ResultSix10265 if miConfig.MdtrtareaAdmvs == "421300" { api3 := "http://192.168.124.4:9532/" + "hbyb/2202?psn_no=" + his.PsnNo + "&mdtrt_id=" + his.Number + "&ipt_otp_no=" + his.IptOtpNo + "&doctor=" + roles.UserName + "&org_name=" + miConfig.OrgName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + his.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey resp3, requestErr3 := http.Get(api3) if requestErr3 != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body3, ioErr3 := ioutil.ReadAll(resp3.Body) if ioErr3 != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr3) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON3 map[string]interface{} if err := json.Unmarshal([]byte(string(body3)), &respJSON3); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON3 = respJSON3["data"].(map[string]interface{})["pre"].(map[string]interface{}) userJSONBytes3, _ := json.Marshal(respJSON3) fmt.Println("log") fmt.Println(string(userJSONBytes3)) if err := json.Unmarshal(userJSONBytes3, &res2); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "320921" || miConfig.MdtrtareaAdmvs == "320982" { var api3 string if miConfig.MdtrtareaAdmvs == "320921" { api3 = "http://192.168.2.110:9532/" + "jsyb/2202?psn_no=" + his.PsnNo + "&mdtrt_id=" + his.Number + "&ipt_otp_no=" + his.IptOtpNo + "&doctor=" + roles.UserName + "&org_name=" + miConfig.OrgName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + his.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&url=" + miConfig.Url + "&ak=" + miConfig.AccessKey + "&cainfo=" + miConfig.Cainfo //req, _ = http.NewRequest("POST", "http://192.168.2.110:9532/"+"jsyb/2204", bytes.NewReader(bytesData)) } else { //req, _ = http.NewRequest("POST", "http://192.168.5.251:9532/"+"jsyb/2204", bytes.NewReader(bytesData)) api3 = "http://192.168.5.251:9532/" + "jsyb/2202?psn_no=" + his.PsnNo + "&mdtrt_id=" + his.Number + "&ipt_otp_no=" + his.IptOtpNo + "&doctor=" + roles.UserName + "&org_name=" + miConfig.OrgName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + his.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&url=" + miConfig.Url + "&ak=" + miConfig.AccessKey + "&cainfo=" + miConfig.Cainfo } resp3, requestErr3 := http.Get(api3) if requestErr3 != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body3, ioErr3 := ioutil.ReadAll(resp3.Body) if ioErr3 != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr3) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON3 map[string]interface{} if err := json.Unmarshal([]byte(string(body3)), &respJSON3); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON3 = respJSON3["data"].(map[string]interface{})["pre"].(map[string]interface{}) userJSONBytes3, _ := json.Marshal(respJSON3) if err := json.Unmarshal(userJSONBytes3, &resSix10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res2.InfRefmsgid = resSix10265.InfRefmsgid res2.Output = resSix10265.Output res2.ErrMsg = resSix10265.ErrMsg res2.Cainfo = resSix10265.Cainfo res2.WarnMsg = resSix10265.WarnMsg infocode, _ := strconv.ParseInt(resSix10265.Infcode, 10, 64) res2.Infcode = infocode } else if miConfig.MdtrtareaAdmvs == "350500" { result, request, _ := service.FJyb2202(his.PsnNo, his.Number, his.IptOtpNo, miConfig.OrgName, roles.UserName, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, miConfig.Code, miConfig.Url, miConfig.Code, miConfig.AppSecret, miConfig.SignKey, miConfig.EncKey) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result, request, "2202", "退号") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res2); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "360399" { result, request := service.Jxyb2202(his.PsnNo, his.Number, his.IptOtpNo, miConfig.OrgName, roles.UserName, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, miConfig.Code, miConfig.Url, miConfig.AccessKey, "") var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result, request, "2202", "退号") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res2); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "430800" { result, request := service.Hnyb2202(his.PsnNo, his.Number, his.IptOtpNo, miConfig.OrgName, roles.UserName, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, miConfig.Code, miConfig.Url, miConfig.AccessKey, "") var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result, request, "2202", "退号") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res2); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else { var api3 string if miConfig.Code == "H15049901371" { api3 = "http://127.0.0.1:9532/" + "gdyb/three?psn_no=" + his.PsnNo + "&mdtrt_id=" + his.Number + "&ipt_otp_no=" + his.IptOtpNo + "&doctor=" + roles.UserName + "&org_name=" + miConfig.OrgName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + his.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey } else { api3 = "http://127.0.0.1:9532/" + "gdyb/three?psn_no=" + his.PsnNo + "&mdtrt_id=" + his.Number + "&ipt_otp_no=" + his.IptOtpNo + "&doctor=" + roles.UserName + "&org_name=" + miConfig.OrgName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + his.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey } resp3, requestErr3 := http.Get(api3) if requestErr3 != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body3, ioErr3 := ioutil.ReadAll(resp3.Body) if ioErr3 != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr3) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON3 map[string]interface{} if err := json.Unmarshal([]byte(string(body3)), &respJSON3); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON3 = respJSON3["data"].(map[string]interface{})["pre"].(map[string]interface{}) userJSONBytes3, _ := json.Marshal(respJSON3) if miConfig.Code == "H15049901371" { if err := json.Unmarshal(userJSONBytes3, &resSix10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res2.InfRefmsgid = resSix10265.InfRefmsgid res2.Output = resSix10265.Output res2.ErrMsg = resSix10265.ErrMsg res2.Cainfo = resSix10265.Cainfo res2.WarnMsg = resSix10265.WarnMsg infocode, _ := strconv.ParseInt(resSix10265.Infcode, 10, 64) res2.Infcode = infocode } else { if err := json.Unmarshal(userJSONBytes3, &res2); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } } if res2.Infcode == 0 { if err == nil { c.ServeSuccessJSON(map[string]interface{}{ "msg": "退号成功", }) service.UpdataRegStatusTwo(his_patient_id, recordDateTime, adminUser.CurrentOrgId) } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else { c.ServeSuccessJSON(map[string]interface{}{ "code": -10, "msg": res2.ErrMsg, }) } } else { //err := service.UpdataOrderStatus(order_id, number, adminUser.CurrentOrgId) //if err == nil { // c.ServeSuccessJSON(map[string]interface{}{ // "msg": "退费成功", // }) //} else { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return //} } } func (c *HisApiController) RefundDetail() { order_id, _ := c.GetInt64("order_id") admin_user_id, _ := c.GetInt64("admin_user_id") //his_patient_id, _ := c.GetInt64("his_patient_id") number := c.GetString("number") record_time := c.GetString("record_time") patient_id, _ := c.GetInt64("patient_id") //med_type, _ := c.GetInt64("med_type") timeLayout := "2006-01-02" loc, _ := time.LoadLocation("Local") adminUser := c.GetAdminUserInfo() roles, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", record_time+" 00:00:00", loc) fmt.Println(err) if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } recordDateTime := theTime.Unix() //his, _ := service.GetNewVMHisPatientInfo(adminUser.CurrentOrgId, his_patient_id, recordDateTime) patientPrescription, _ := service.FindPatientPrescriptionInfo(adminUser.CurrentOrgId, patient_id, recordDateTime) miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId) var order models.HisOrder order, _ = service.GetHisOrderByID(order_id) his, _ := service.GetHisPatientByNumber(order.MdtrtId) if config.IsOpen == 1 { //对接了医保,走医保流程 var res2 ResultSix if miConfig.MdtrtareaAdmvs == "421300" { api3 := "http://192.168.124.4:9532/" + "hbyb/2205?psn_no=" + order.PsnNo + "&mdtrt_id=" + order.MdtrtId + "&chrg_bchno=" + order.Number + "&doctor=" + patientPrescription.Doctor + "&org_name=" + miConfig.OrgName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + his.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey resp3, requestErr3 := http.Get(api3) if requestErr3 != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body3, ioErr3 := ioutil.ReadAll(resp3.Body) if ioErr3 != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr3) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON3 map[string]interface{} if err := json.Unmarshal([]byte(string(body3)), &respJSON3); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON3 = respJSON3["data"].(map[string]interface{})["pre"].(map[string]interface{}) userJSONBytes3, _ := json.Marshal(respJSON3) fmt.Println("log") fmt.Println(string(userJSONBytes3)) if err := json.Unmarshal(userJSONBytes3, &res2); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } err := service.UpdataOrderStatus(order_id, number, adminUser.CurrentOrgId, "", "") if err == nil { c.ServeSuccessJSON(map[string]interface{}{ "msg": "撤销明细成功", }) return } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "320921" || miConfig.MdtrtareaAdmvs == "320982" { var resSix10265 ResultSix10265 var api3 string if miConfig.MdtrtareaAdmvs == "320921" { api3 = "http://192.168.2.110:9532/" + "jsyb/2205?psn_no=" + order.PsnNo + "&mdtrt_id=" + order.MdtrtId + "&chrg_bchno=" + order.Number + "&doctor=" + patientPrescription.Doctor + "&org_name=" + miConfig.OrgName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + his.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&url=" + miConfig.Url + "&ak=" + miConfig.AccessKey + "&cainfo=" + miConfig.Cainfo //req, _ = http.NewRequest("POST", "http://192.168.2.110:9532/"+"jsyb/2204", bytes.NewReader(bytesData)) } else { //req, _ = http.NewRequest("POST", "http://192.168.5.251:9532/"+"jsyb/2204", bytes.NewReader(bytesData)) api3 = "http://192.168.5.251:9532/" + "jsyb/2205?psn_no=" + order.PsnNo + "&mdtrt_id=" + order.MdtrtId + "&chrg_bchno=" + order.Number + "&doctor=" + patientPrescription.Doctor + "&org_name=" + miConfig.OrgName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + his.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&url=" + miConfig.Url + "&ak=" + miConfig.AccessKey + "&cainfo=" + miConfig.Cainfo } resp3, requestErr3 := http.Get(api3) if requestErr3 != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body3, ioErr3 := ioutil.ReadAll(resp3.Body) if ioErr3 != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr3) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON3 map[string]interface{} if err := json.Unmarshal([]byte(string(body3)), &respJSON3); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON3 = respJSON3["data"].(map[string]interface{})["pre"].(map[string]interface{}) userJSONBytes3, _ := json.Marshal(respJSON3) fmt.Println("log") fmt.Println(string(userJSONBytes3)) if err := json.Unmarshal(userJSONBytes3, &resSix10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res2.InfRefmsgid = resSix10265.InfRefmsgid res2.Output = resSix10265.Output res2.ErrMsg = resSix10265.ErrMsg res2.Cainfo = resSix10265.Cainfo res2.WarnMsg = resSix10265.WarnMsg infocode, _ := strconv.ParseInt(resSix10265.Infcode, 10, 64) res2.Infcode = infocode err := service.UpdataOrderStatus(order_id, number, adminUser.CurrentOrgId, "", "") if err == nil { c.ServeSuccessJSON(map[string]interface{}{ "msg": "撤销明细成功", }) return } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "350500" { result2, src_request, _ := service.FJyb2205(his.PsnNo, his.Number, order.Number, miConfig.OrgName, roles.UserName, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, miConfig.Code, miConfig.Url, miConfig.Code, miConfig.AppSecret, miConfig.SignKey, miConfig.EncKey) var dat map[string]interface{} if err := json.Unmarshal([]byte(result2), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result2, src_request, "2205", "撤销明细") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res2); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res2.Infcode == 0 { err := service.UpdataOrderStatus(order_id, number, adminUser.CurrentOrgId, "", "") if err == nil { c.ServeSuccessJSON(map[string]interface{}{ "msg": "撤销明细成功", }) return } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else { c.ServeSuccessJSON(map[string]interface{}{ "code": -10, "msg": res2.ErrMsg, }) } } else if miConfig.MdtrtareaAdmvs == "360399" { result2, src_request := service.Jxyb2205(his.PsnNo, his.Number, order.Number, miConfig.OrgName, roles.UserName, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, miConfig.Code, miConfig.Url, miConfig.AccessKey, "") var dat map[string]interface{} if err := json.Unmarshal([]byte(result2), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result2, src_request, "2205", "撤销明细") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res2); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res2.Infcode == 0 { err := service.UpdataOrderStatus(order_id, number, adminUser.CurrentOrgId, "", "") if err == nil { c.ServeSuccessJSON(map[string]interface{}{ "msg": "撤销明细成功", }) return } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else { c.ServeSuccessJSON(map[string]interface{}{ "code": -10, "msg": res2.ErrMsg, }) } } else if miConfig.MdtrtareaAdmvs == "430800" { result2, src_request := service.Hnyb2205(his.PsnNo, his.Number, order.Number, miConfig.OrgName, roles.UserName, his.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, miConfig.Code, miConfig.Url, miConfig.AccessKey, "") var dat map[string]interface{} if err := json.Unmarshal([]byte(result2), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } saveLog(result2, src_request, "2205", "撤销明细") userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res2); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res2.Infcode == 0 { err := service.UpdataOrderStatus(order_id, number, adminUser.CurrentOrgId, "", "") if err == nil { c.ServeSuccessJSON(map[string]interface{}{ "msg": "撤销明细成功", }) return } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else { c.ServeSuccessJSON(map[string]interface{}{ "code": -10, "msg": res2.ErrMsg, }) } } else { api2 := "http://127.0.0.1:9532/" + "gdyb/six?psn_no=" + his.PsnNo + "&mdtrt_id=" + his.Number + "&chrg_bchno=" + order.Number + "&doctor=" + roles.UserName + "&org_name=" + miConfig.OrgName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + his.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey resp2, requestErr2 := http.Get(api2) if requestErr2 != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body2, ioErr2 := ioutil.ReadAll(resp2.Body) if ioErr2 != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr2) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON2 map[string]interface{} if err := json.Unmarshal([]byte(string(body2)), &respJSON2); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } err := service.UpdataOrderStatus(order_id, number, adminUser.CurrentOrgId, "", "") if err == nil { c.ServeSuccessJSON(map[string]interface{}{ "msg": "撤销明细成功", }) return } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } } else { err := service.UpdataOrderStatus(order_id, number, adminUser.CurrentOrgId, "", "") if err == nil { c.ServeSuccessJSON(map[string]interface{}{ "msg": "退费成功", }) } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } } //对账 func (c *HisApiController) GetCheckAccount() { start_time := c.GetString("start_time") end_time := c.GetString("end_time") insutype := c.GetString("insutype") clr_type := c.GetString("clr_type") clr_org := c.GetString("clr_optins") admin_user_id, _ := c.GetInt64("admin_user_id") adminUser := c.GetAdminUserInfo() miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId) if len(clr_org) == 0 { clr_org = miConfig.MdtrtareaAdmvs } timeLayout := "2006-01-02" loc, _ := time.LoadLocation("Local") startime, _ := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc) endtime, _ := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc) orders, _ := service.GetOrderByTime(startime.Unix(), endtime.Unix(), adminUser.CurrentOrgId, insutype, "", clr_type) orders_two, _ := service.GetOrderByTimeFive(startime.Unix(), endtime.Unix(), adminUser.CurrentOrgId, insutype, "", clr_type) fixmedins_setl_cnt := int64(len(orders)) var medfee_sumamt float64 var acct_pay float64 var fund_pay_sumamt float64 for _, item := range orders { medfee_sumamt = medfee_sumamt + item.MedfeeSumamt acct_pay = acct_pay + item.AcctPay fund_pay_sumamt = fund_pay_sumamt + item.FundPaySumamt } var user_name string role, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) if role.ID == 0 { user_name = "xxx" } else { user_name = role.UserName } var res ResultEight var res10188 ResultEightFor10188 if config.IsOpen == 1 { if miConfig.MdtrtareaAdmvs == "320921" || miConfig.MdtrtareaAdmvs == "320982" { api := "http://192.168.2.110:9532/" + "jsyb/3201?" + "insutype=" + insutype + "&clr_type=" + clr_type + "&setl_optins=" + clr_org + "&stmt_begndate=" + start_time + "&stm_enddate=" + end_time + "&medfee_sumamt=" + fmt.Sprintf("%.4f", medfee_sumamt) + "&fund_pay_sumamt=" + fmt.Sprintf("%.4f", fund_pay_sumamt) + "&acct_pay=" + fmt.Sprintf("%.4f", acct_pay) + "&fixmedins_setl_cnt=" + strconv.FormatInt(fixmedins_setl_cnt+int64(len(orders_two)*2), 10) + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&org_name=" + miConfig.OrgName + "&doctor=" + user_name + "&url=" + miConfig.Url + "&ak=" + miConfig.AccessKey + "&cainfo=" + miConfig.Cainfo fmt.Println(api) resp, requestErr := http.Get(api) if requestErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body, ioErr := ioutil.ReadAll(resp.Body) fmt.Println(body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) userJSONBytes, _ := json.Marshal(respJSON) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = res10188.InfRefmsgid res.Output = res10188.Output res.ErrMsg = res10188.ErrMsg res.Cainfo = res10188.Cainfo res.WarnMsg = res10188.WarnMsg infocode, _ := strconv.ParseInt(res10188.Infcode, 10, 64) res.Infcode = infocode } else if miConfig.MdtrtareaAdmvs == "150499" { api := "http://172.16.13.254:9532/" + "nmyb/3201?" + "insutype=" + insutype + "&clr_type=" + "21" + "&setl_optins=" + clr_org + "&stmt_begndate=" + start_time + "&stm_enddate=" + end_time + "&medfee_sumamt=" + fmt.Sprintf("%.4f", medfee_sumamt) + "&fund_pay_sumamt=" + fmt.Sprintf("%.4f", fund_pay_sumamt) + "&acct_pay=" + fmt.Sprintf("%.4f", acct_pay) + "&fixmedins_setl_cnt=" + strconv.FormatInt(fixmedins_setl_cnt+int64(len(orders_two)*2), 10) + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&org_name=" + miConfig.OrgName + "&doctor=" + user_name resp, requestErr := http.Get(api) if requestErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) result, _ := json.Marshal(respJSON) fmt.Println("log") fmt.Println(string(result)) if err := json.Unmarshal([]byte(result), &res10188); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = res10188.InfRefmsgid res.Output = res10188.Output res.ErrMsg = res10188.ErrMsg res.Cainfo = res10188.Cainfo res.WarnMsg = res10188.WarnMsg infocode, _ := strconv.ParseInt(res10188.Infcode, 10, 64) res.Infcode = infocode } else if miConfig.MdtrtareaAdmvs == "350500" { var baseParams models.BaseParams baseParams.InsuplcAdmdvs = miConfig.InsuplcAdmdvs baseParams.MdtrtareaAdmvs = miConfig.MdtrtareaAdmvs baseParams.SecretKey = miConfig.SecretKey baseParams.OrgName = miConfig.OrgName baseParams.FixmedinsCode = miConfig.Code baseParams.EncKey = miConfig.EncKey baseParams.AppSecret = miConfig.AppSecret baseParams.SignKey = miConfig.SignKey baseParams.AppID = miConfig.Code baseParams.Doctor = role.UserName baseParams.RequestUrl = miConfig.Url businessParams := models.BusinessParams{ Insutype: insutype, ClrType: clr_type, SetlOptins: clr_org, StmtBegndate: start_time, StmtEnddate: end_time, MedfeeSumamt: medfee_sumamt, FundPaySumamt: fund_pay_sumamt, AcctPay: acct_pay, FixmedinsSetlCnt: fixmedins_setl_cnt, } result, requestLog, err_msg := service.FJyb3201(baseParams, businessParams, fmt.Sprintf("%.4f", medfee_sumamt), fmt.Sprintf("%.4f", fund_pay_sumamt)) fmt.Println(requestLog) fmt.Println(result) fmt.Println(err_msg) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "430800" { var baseParams models.BaseParams baseParams.InsuplcAdmdvs = miConfig.InsuplcAdmdvs baseParams.MdtrtareaAdmvs = miConfig.MdtrtareaAdmvs baseParams.SecretKey = miConfig.SecretKey baseParams.OrgName = miConfig.OrgName baseParams.FixmedinsCode = miConfig.Code baseParams.EncKey = miConfig.EncKey baseParams.AppSecret = miConfig.AppSecret baseParams.SignKey = miConfig.SignKey baseParams.AppID = miConfig.Code baseParams.Doctor = role.UserName baseParams.RequestUrl = miConfig.Url baseParams.AccessKey = miConfig.AccessKey businessParams := models.BusinessParams{ Insutype: insutype, ClrType: clr_type, SetlOptins: "430822", StmtBegndate: start_time, StmtEnddate: end_time, MedfeeSumamt: medfee_sumamt, FundPaySumamt: fund_pay_sumamt, AcctPay: acct_pay, FixmedinsSetlCnt: fixmedins_setl_cnt, } result, requestLog := service.Hnyb3201(businessParams.FixmedinsSetlCnt, businessParams.AcctPay, businessParams.FundPaySumamt, businessParams.MedfeeSumamt, businessParams.StmtBegndate, businessParams.StmtEnddate, businessParams.SetlOptins, businessParams.ClrType, businessParams.Insutype, baseParams.OrgName, baseParams.Doctor, baseParams.FixmedinsCode, baseParams.InsuplcAdmdvs, baseParams.MdtrtareaAdmvs, baseParams.RequestUrl, baseParams.AccessKey, baseParams.SecretKey, baseParams.Cainfo) fmt.Println(requestLog) fmt.Println(result) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "" { var baseParams models.BaseParams baseParams.InsuplcAdmdvs = miConfig.InsuplcAdmdvs baseParams.MdtrtareaAdmvs = miConfig.MdtrtareaAdmvs baseParams.SecretKey = miConfig.SecretKey baseParams.OrgName = miConfig.OrgName baseParams.FixmedinsCode = miConfig.Code baseParams.EncKey = miConfig.EncKey baseParams.AppSecret = miConfig.AppSecret baseParams.SignKey = miConfig.SignKey baseParams.AppID = miConfig.Code baseParams.Doctor = role.UserName baseParams.RequestUrl = miConfig.Url businessParams := models.BusinessParams{ Insutype: insutype, ClrType: clr_type, SetlOptins: clr_org, StmtBegndate: start_time, StmtEnddate: end_time, MedfeeSumamt: medfee_sumamt, FundPaySumamt: fund_pay_sumamt, AcctPay: acct_pay, FixmedinsSetlCnt: fixmedins_setl_cnt, } result, requestLog, err_msg := service.FJyb3201(baseParams, businessParams, fmt.Sprintf("%.4f", medfee_sumamt), fmt.Sprintf("%.4f", fund_pay_sumamt)) fmt.Println(requestLog) fmt.Println(result) fmt.Println(err_msg) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else { if len(clr_type) == 0 { clr_type = "11" } api := "http://127.0.0.1:9532/" + "gdyb/ten?" + "insutype=" + insutype + "&clr_type=" + clr_type + "&setl_optins=" + clr_org + "&stmt_begndate=" + start_time + "&stm_enddate=" + end_time + "&medfee_sumamt=" + fmt.Sprintf("%.4f", medfee_sumamt) + "&fund_pay_sumamt=" + fmt.Sprintf("%.4f", fund_pay_sumamt) + "&acct_pay=" + fmt.Sprintf("%.4f", acct_pay) + "&fixmedins_setl_cnt=" + strconv.FormatInt(fixmedins_setl_cnt, 10) + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&org_name=" + miConfig.OrgName + "&doctor=" + user_name fmt.Println(api) resp, requestErr := http.Get(api) if requestErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body, ioErr := ioutil.ReadAll(resp.Body) fmt.Println(body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) userJSONBytes, _ := json.Marshal(respJSON) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } if res.Infcode == 0 { if res.Output.Stmtinfo.StmtRslt == "0" { micc := &models.MedicalInsuranceCostCompare{ StartTime: startime.Unix(), EndTime: endtime.Unix(), Insutype: insutype, CheckType: 1, Num: fixmedins_setl_cnt, Mtime: time.Now().Unix(), Status: 1, UserOrgId: adminUser.CurrentOrgId, CostTotal: medfee_sumamt, FuncTotal: fund_pay_sumamt, PsnPay: acct_pay, Creator: admin_user_id, Ctime: time.Now().Unix(), ClrType: clr_type, } err := service.CreateMedicalInsuranceCostCompareRecord(micc) if err == nil { c.ServeSuccessJSON(map[string]interface{}{ "stmt_rslt": res.Output.Stmtinfo.StmtRslt, "stmt_rslt_dscr": res.Output.Stmtinfo.StmtRsltDscr, }) } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) } } else { c.ServeSuccessJSON(map[string]interface{}{ "stmt_rslt": res.Output.Stmtinfo.StmtRslt, "stmt_rslt_dscr": res.Output.Stmtinfo.StmtRsltDscr, }) } } else { c.ServeSuccessJSON(map[string]interface{}{ "code": -10, "msg": res.ErrMsg, }) } } } func (c *HisApiController) Check310() { adminUser := c.GetAdminUserInfo() miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) var user_name string user_name = "高慧裕" api := "http://127.0.0.1:9532/" + "gdyb/ten?" + "insutype=" + "310" + "&clr_type=" + "" + "&setl_optins=" + "441202" + "&stmt_begndate=" + "2022-03-01" + "&stm_enddate=" + "2022-03-31" + "&medfee_sumamt=" + "194930.12" + "&fund_pay_sumamt=" + "188741.46" + "&acct_pay=" + "0" + "&fixmedins_setl_cnt=" + "452" + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&org_name=" + miConfig.OrgName + "&doctor=" + user_name fmt.Println(api) resp, requestErr := http.Get(api) if requestErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body, ioErr := ioutil.ReadAll(resp.Body) fmt.Println(body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) userJSONBytes, _ := json.Marshal(respJSON) var res ResultEight if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } func (c *HisApiController) Check390() { adminUser := c.GetAdminUserInfo() miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) var user_name string user_name = "高慧裕" api := "http://127.0.0.1:9532/" + "gdyb/ten?" + "insutype=" + "390" + "&clr_type=" + "" + "&setl_optins=" + "441202" + "&stmt_begndate=" + "2022-03-01" + "&stm_enddate=" + "2022-03-31" + "&medfee_sumamt=" + "1068448.89" + "&fund_pay_sumamt=" + "1014677.62" + "&acct_pay=" + "0" + "&fixmedins_setl_cnt=" + "1950" + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&org_name=" + miConfig.OrgName + "&doctor=" + user_name fmt.Println(api) resp, requestErr := http.Get(api) if requestErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body, ioErr := ioutil.ReadAll(resp.Body) fmt.Println(body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) userJSONBytes, _ := json.Marshal(respJSON) var res ResultEight if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } //对账明细 func (c *HisApiController) GetCheckDetailAccount() { start_time := c.GetString("start_time") end_time := c.GetString("end_time") admin_user_id, _ := c.GetInt64("admin_user_id") adminUser := c.GetAdminUserInfo() miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId) timeLayout := "2006-01-02" loc, _ := time.LoadLocation("Local") startime, _ := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc) endtime, _ := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc) orders, _ := service.GetOrderByTimeTwo(startime.Unix(), endtime.Unix(), adminUser.CurrentOrgId) rand.Seed(time.Now().UnixNano()) num := rand.Intn(30000) Mkdir(miConfig.OrgName) file := strconv.FormatInt(int64(num), 10) file_name := file + ".txt" zip_name := file + ".zip" zip_path := miConfig.OrgName + "/" + zip_name file_path := miConfig.OrgName + "/" + file_name decimal.DivisionPrecision = 2 var medfee_sumamt float64 var psn_cash_pay float64 var fund_pay_sumamt float64 fixmedins_setl_cnt := int64(len(orders)) for _, item := range orders { medfee_sumamt = medfee_sumamt + item.MedfeeSumamt psn_cash_pay = psn_cash_pay + item.PsnCashPay fund_pay_sumamt = fund_pay_sumamt + item.FundPaySumamt } f, err := os.Create(miConfig.OrgName + "/" + file_name) defer f.Close() if err != nil { fmt.Println(err.Error()) } else { for _, item := range orders { var refd_setl_flag string if item.OrderStatus == 2 { refd_setl_flag = "0" var str string str = item.SetlId + " " + item.MdtrtId + " " + item.PsnNo + " " + fmt.Sprintf("%.4f", item.MedfeeSumamt) + " " + fmt.Sprintf("%.4f", item.FundPaySumamt) + " " + fmt.Sprintf("%.4f", item.AcctPay) + " " + refd_setl_flag + "\r\n" _, err = f.Write([]byte(str)) } if item.OrderStatus == 3 { var str string str = item.SetlId + " " + item.MdtrtId + " " + item.PsnNo + " " + fmt.Sprintf("%.4f", item.MedfeeSumamt) + " " + fmt.Sprintf("%.4f", item.FundPaySumamt) + " " + fmt.Sprintf("%.4f", item.AcctPay) + " " + "1" + "\r\n" _, err = f.Write([]byte(str)) var str2 string str2 = item.SetlId + " " + item.MdtrtId + " " + item.PsnNo + " " + fmt.Sprintf("%.4f", 0-item.MedfeeSumamt) + " " + fmt.Sprintf("%.4f", 0-item.FundPaySumamt) + " " + fmt.Sprintf("%.4f", 0-item.AcctPay) + " " + "1" + "\r\n" _, err = f.Write([]byte(str2)) } } } Zip(file_path, zip_path) fmt.Println(ReadFile(zip_path)) fmt.Println(string(ReadFile(zip_path))) if config.IsOpen == 1 { var user_name string role, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) if role.ID == 0 { user_name = "管理员" } else { user_name = role.UserName } baseParams := models.BaseParams{ SecretKey: miConfig.SecretKey, FixmedinsCode: miConfig.Code, InsuplcAdmdvs: miConfig.InsuplcAdmdvs, MdtrtareaAdmvs: miConfig.MdtrtareaAdmvs, OrgName: miConfig.OrgName, Doctor: user_name, } result := service.Gdyb9101(baseParams, file_name, ReadFile(file_path)) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) var res ResultNine if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Infcode == 0 { fileNo := res.Output.FileQuryNo api := "http://127.0.0.1:9532/" + "gdyb/twelve?" + "file_qury_no=" + fileNo + "&setl_optins=" + "定点医保中心" + "&stmt_begndate=" + start_time + "&stm_enddate=" + end_time + "&medfee_sumamt=" + fmt.Sprintf("%.4f", medfee_sumamt) + "&fund_pay_sumamt=" + fmt.Sprintf("%.4f", fund_pay_sumamt) + "&cash_payamt=" + fmt.Sprintf("%.4f", psn_cash_pay) + "&fixmedins_setl_cnt=" + strconv.FormatInt(fixmedins_setl_cnt, 10) + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&org_name=" + miConfig.OrgName + "&doctor=" + user_name resp, requestErr := http.Get(api) if requestErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) userJSONBytes, _ := json.Marshal(respJSON) var res ResultTen if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Infcode == 0 { service.Gdyb9102(baseParams, zip_name, fileNo) micc := &models.MedicalInsuranceCostCompare{ StartTime: startime.Unix(), EndTime: endtime.Unix(), Insutype: "0", CheckType: 2, Num: fixmedins_setl_cnt, Mtime: time.Now().Unix(), Status: 1, UserOrgId: adminUser.CurrentOrgId, CostTotal: medfee_sumamt, FuncTotal: fund_pay_sumamt, PsnPay: psn_cash_pay, Creator: admin_user_id, Ctime: time.Now().Unix(), } service.CreateMedicalInsuranceCostCompareRecord(micc) c.ServeSuccessJSON(map[string]interface{}{ "msg": "明细对账成功", }) } } else { } } } type CustomOrderInfo struct { Name string Spec string Unit string Count float64 Price float64 Total float64 } func (c *HisApiController) GetSettleAccounts() { //id, _ := c.GetInt64("id") //record_time := c.GetString("record_time") order_id, _ := c.GetInt64("order_id") admin_user_id, _ := c.GetInt64("admin_user_id") //timeLayout := "2006-01-02" //loc, _ := time.LoadLocation("Local") // //theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", record_time+" 00:00:00", loc) //if err != nil { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) // return //} //recordDateTime := theTime.Unix() adminUser := c.GetAdminUserInfo() order, _ := service.GetHisOrderByID(order_id) his, _ := service.GetHisPatientByNumber(order.MdtrtId) orderInfos, _ := service.GetHisOrderInfoByNumber(order.Number) orderInfos_two, _ := service.GetHisOrderInfoByNumberTwo(order.Number) orderInfos = append(orderInfos, orderInfos_two...) his_hospital, _ := service.GetInHospitalRecordByNumber(order.MdtrtId) //diagnosisConfig, _ := service.FindDiagnoseById(his.Diagnosis) var diagnosis_ids []string if his.ID > 0 { diagnosis_ids = strings.Split(his.Diagnosis, ",") } else { diagnosis_ids = strings.Split(his_hospital.Diagnosis, ",") } patient, _ := service.GetPatientByIDTwo(adminUser.CurrentOrgId, order.PatientId) var dia_config []*models.HisXtDiagnoseConfig var name string for _, item := range diagnosis_ids { id, _ := strconv.ParseInt(item, 10, 64) diagnosisConfig, _ := service.FindDiagnoseById(id) dia_config = append(dia_config, &diagnosisConfig) if len(name) == 0 { name = diagnosisConfig.ClassName } else { name = name + "," + diagnosisConfig.ClassName } } var bedCostTotal float64 = 0 //床位总费 var bedCostSelfTotal float64 = 0 //床位自费 var bedCostPartSelfTotal float64 = 0 //床位部分项目自费 var operationCostTotal float64 = 0 //手术费 var operationCostSelfTotal float64 = 0 //手术费 var operationCostPartSelfTotal float64 = 0 //手术费 var otherCostTotal float64 = 0 //其他费用 var otherCostSelfTotal float64 = 0 //其他费用 var otherCostPartSelfTotal float64 = 0 //其他费用 var materialCostTotal float64 = 0 //材料费 var materialCostSelfTotal float64 = 0 //材料费 var materialCostPartSelfTotal float64 = 0 //材料费 var westernMedicineCostTotal float64 = 0 //西药费 var westernMedicineCostSelfTotal float64 = 0 //西药费 var westernMedicineCostPartSelfTotal float64 = 0 //西药费 var chineseTraditionalMedicineCostTotal float64 = 0 //中成药 var chineseTraditionalMedicineCostSelfTotal float64 = 0 //中成药 var chineseTraditionalMedicineCostPartSelfTotal float64 = 0 //中成药 var checkCostTotal float64 = 0 //检查费 var checkCostSelfTotal float64 = 0 //检查费 var checkCostPartSelfTotal float64 = 0 //检查费 var laboratoryCostTotal float64 = 0 //化验费 var laboratoryCostSelfTotal float64 = 0 //化验费 var laboratoryCostPartSelfTotal float64 = 0 //化验费 var treatCostTotal float64 = 0 //治疗费用 var treatCostSelfTotal float64 = 0 //治疗费用 var treatCostPartSelfTotal float64 = 0 //治疗费用 decimal.DivisionPrecision = 2 for _, item := range orderInfos { if item.MedChrgitmType == "01" { //床位费 bedCostTotal, _ = decimal.NewFromFloat(bedCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() bedCostSelfTotal, _ = decimal.NewFromFloat(bedCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() bedCostPartSelfTotal, _ = decimal.NewFromFloat(bedCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if c.GetAdminUserInfo().CurrentOrgId == 10188 || c.GetAdminUserInfo().CurrentOrgId == 10217 { if item.MedChrgitmType == "03" { //检查费 laboratoryCostTotal, _ = decimal.NewFromFloat(laboratoryCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() laboratoryCostSelfTotal, _ = decimal.NewFromFloat(laboratoryCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() laboratoryCostPartSelfTotal, _ = decimal.NewFromFloat(laboratoryCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } } else { if item.MedChrgitmType == "03" { //检查费 checkCostTotal, _ = decimal.NewFromFloat(checkCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() checkCostSelfTotal, _ = decimal.NewFromFloat(checkCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() checkCostPartSelfTotal, _ = decimal.NewFromFloat(checkCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } } if item.MedChrgitmType == "04" { //化验费 laboratoryCostTotal, _ = decimal.NewFromFloat(laboratoryCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() laboratoryCostSelfTotal, _ = decimal.NewFromFloat(laboratoryCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() laboratoryCostPartSelfTotal, _ = decimal.NewFromFloat(laboratoryCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.MedChrgitmType == "05" || item.MedChrgitmType == "1402" || item.MedChrgitmType == "1403" { //治疗费 treatCostTotal, _ = decimal.NewFromFloat(treatCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() treatCostSelfTotal, _ = decimal.NewFromFloat(treatCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() treatCostPartSelfTotal, _ = decimal.NewFromFloat(treatCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.MedChrgitmType == "06" { //手术费 operationCostTotal, _ = decimal.NewFromFloat(operationCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() operationCostSelfTotal, _ = decimal.NewFromFloat(operationCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() operationCostPartSelfTotal, _ = decimal.NewFromFloat(operationCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.MedChrgitmType == "08" { //材料费 materialCostTotal, _ = decimal.NewFromFloat(materialCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() materialCostSelfTotal, _ = decimal.NewFromFloat(materialCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() materialCostPartSelfTotal, _ = decimal.NewFromFloat(materialCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.MedChrgitmType == "09" { //西药费 westernMedicineCostTotal, _ = decimal.NewFromFloat(westernMedicineCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() westernMedicineCostSelfTotal, _ = decimal.NewFromFloat(westernMedicineCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() westernMedicineCostPartSelfTotal, _ = decimal.NewFromFloat(westernMedicineCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.MedChrgitmType == "11" { //中成费 chineseTraditionalMedicineCostTotal, _ = decimal.NewFromFloat(chineseTraditionalMedicineCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() chineseTraditionalMedicineCostSelfTotal, _ = decimal.NewFromFloat(chineseTraditionalMedicineCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() chineseTraditionalMedicineCostPartSelfTotal, _ = decimal.NewFromFloat(chineseTraditionalMedicineCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } if item.MedChrgitmType == "14" || item.MedChrgitmType == "0" || item.MedChrgitmType == "12" || item.MedChrgitmType == "02" { //其他费 otherCostTotal, _ = decimal.NewFromFloat(otherCostTotal).Add(decimal.NewFromFloat(item.DetItemFeeSumamt)).Float64() otherCostSelfTotal, _ = decimal.NewFromFloat(otherCostSelfTotal).Add(decimal.NewFromFloat(item.OverlmtAmt)).Float64() otherCostPartSelfTotal, _ = decimal.NewFromFloat(otherCostPartSelfTotal).Add(decimal.NewFromFloat(item.PreselfpayAmt)).Float64() } } miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId) var user_name string role, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) if role.ID == 0 { user_name = "管理员" } else { user_name = role.UserName } baseParams := models.BaseParams{ SecretKey: miConfig.SecretKey, FixmedinsCode: miConfig.Code, InsuplcAdmdvs: miConfig.InsuplcAdmdvs, MdtrtareaAdmvs: miConfig.MdtrtareaAdmvs, OrgName: miConfig.OrgName, Doctor: user_name, RequestUrl: miConfig.Url, AccessKey: miConfig.AccessKey, } businessParams := models.BusinessParams{ PsnNo: order.PsnNo, MdtrtId: order.MdtrtId, SetlId: order.SetlId, } var res ResultEleven var resEleven10265 ResultEleven10265 if config.IsOpen == 1 { if miConfig.MdtrtareaAdmvs == "421300" { api := "http://192.168.124.4:9532/" + "hbyb/5203?psn_no=" + businessParams.PsnNo + "&mdtrt_id=" + businessParams.MdtrtId + "&setl_id=" + businessParams.SetlId + "&org_name=" + miConfig.OrgName + "&doctor=" + baseParams.Doctor + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey resp, requestErr := http.Get(api) if requestErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) result, _ := json.Marshal(respJSON) fmt.Println("log") fmt.Println(string(result)) if err := json.Unmarshal([]byte(result), &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "320921" || miConfig.MdtrtareaAdmvs == "320982" { var api string if miConfig.MdtrtareaAdmvs == "320921" { api = "http://192.168.2.110:9532/" + "jsyb/5203?psn_no=" + businessParams.PsnNo + "&mdtrt_id=" + businessParams.MdtrtId + "&setl_id=" + businessParams.SetlId + "&org_name=" + miConfig.OrgName + "&doctor=" + baseParams.Doctor + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&url=" + miConfig.Url + "&ak=" + miConfig.AccessKey + "&cainfo=" + miConfig.Cainfo //req, _ = http.NewRequest("POST", "http://192.168.2.110:9532/"+"jsyb/2204", bytes.NewReader(bytesData)) } else { //req, _ = http.NewRequest("POST", "http://192.168.5.251:9532/"+"jsyb/2204", bytes.NewReader(bytesData)) api = "http://192.168.5.251:9532/" + "jsyb/5203?psn_no=" + businessParams.PsnNo + "&mdtrt_id=" + businessParams.MdtrtId + "&setl_id=" + businessParams.SetlId + "&org_name=" + miConfig.OrgName + "&doctor=" + baseParams.Doctor + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&url=" + miConfig.Url + "&ak=" + miConfig.AccessKey + "&cainfo=" + miConfig.Cainfo } resp, requestErr := http.Get(api) if requestErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) result, _ := json.Marshal(respJSON) fmt.Println("log") fmt.Println(string(result)) if err := json.Unmarshal([]byte(result), &resEleven10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = resEleven10265.InfRefmsgid res.Output = resEleven10265.Output res.ErrMsg = resEleven10265.ErrMsg res.Cainfo = resEleven10265.Cainfo res.WarnMsg = resEleven10265.WarnMsg infocode, _ := strconv.ParseInt(resEleven10265.Infcode, 10, 64) res.Infcode = infocode } else if miConfig.MdtrtareaAdmvs == "350500" { result, requestLog, _ := service.FJyb5203(baseParams, businessParams, miConfig.Url, miConfig.Code, miConfig.AppSecret, miConfig.SignKey, miConfig.EncKey) saveLog(result, requestLog, "5203", "结算单") var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "360399" { result, requestLog := service.Jxyb5203(baseParams, businessParams) saveLog(result, requestLog, "5203", "结算单") var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "430800" { result, requestLog := service.Hnyb5203(baseParams, businessParams) saveLog(result, requestLog, "5203", "结算单") var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } else if miConfig.MdtrtareaAdmvs == "150499" { api := "http://172.16.13.254:9532/" + "nmyb/5203?psn_no=" + businessParams.PsnNo + "&mdtrt_id=" + businessParams.MdtrtId + "&setl_id=" + businessParams.SetlId + "&org_name=" + miConfig.OrgName + "&doctor=" + baseParams.Doctor + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey resp, requestErr := http.Get(api) if requestErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) result, _ := json.Marshal(respJSON) fmt.Println("log") fmt.Println(string(result)) if err := json.Unmarshal([]byte(result), &resEleven10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = resEleven10265.InfRefmsgid res.Output = resEleven10265.Output res.ErrMsg = resEleven10265.ErrMsg res.Cainfo = resEleven10265.Cainfo res.WarnMsg = resEleven10265.WarnMsg infocode, _ := strconv.ParseInt(resEleven10265.Infcode, 10, 64) res.Infcode = infocode } else { result := service.Gdyb5203(baseParams, businessParams) //service.Gdyb5204(baseParams, businessParams) //service.Gdyb5302(businessParams.PsnNo, baseParams.OrgName, baseParams.Doctor, baseParams.FixmedinsCode, baseParams.InsuplcAdmdvs, baseParams.MdtrtareaAdmvs, baseParams.SecretKey) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) if miConfig.Code == "H15049901371" { if err := json.Unmarshal(userJSONBytes, &resEleven10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = resEleven10265.InfRefmsgid res.Output = resEleven10265.Output res.ErrMsg = resEleven10265.ErrMsg res.Cainfo = resEleven10265.Cainfo res.WarnMsg = resEleven10265.WarnMsg infocode, _ := strconv.ParseInt(resEleven10265.Infcode, 10, 64) res.Infcode = infocode } else { if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } } printor_admin, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) charge_admin, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, order.Creator) patientPrescription, _ := service.FindPatientPrescriptionInfo(adminUser.CurrentOrgId, order.PatientId, order.SettleAccountsDate) adminRole_two, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, patientPrescription.DoctorId) doctor_info, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, his_hospital.Doctor) roles, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) var doctor_name string if roles.ID == 0 { doctor_name = "管理员" } else { doctor_name = roles.UserName } yiliao_leibie := "" switch order.MedType { case "11": yiliao_leibie = "普通门诊" break case "12": yiliao_leibie = "门诊挂号" break case "13": yiliao_leibie = "急诊" break case "14": yiliao_leibie = "门诊特殊病" break case "15": yiliao_leibie = "门诊统筹" break case "16": yiliao_leibie = "门诊慢性病" break case "21": yiliao_leibie = "普通住院" break } departments, _ := service.GetDepartMentDetail(patientPrescription.Departments) res.Output.Setlinfo.PsnCashPay = res.Output.Setlinfo.CashPayamt if res.Infcode == 0 { c.ServeSuccessJSON(map[string]interface{}{ "diagnosis": name, "order_infos": orderInfos, "number": order.MdtrtId, "date": order.SettleAccountsDate, "charge_admin": charge_admin, "printor_admin": printor_admin, "info": res.Output.Setlinfo, "order": order, "bedCostTotal": bedCostTotal, "bedCostSelfTotal": bedCostSelfTotal, "bedCostPartSelfTotal": bedCostPartSelfTotal, "operationCostTotal": operationCostTotal, "operationCostSelfTotal": operationCostSelfTotal, "operationCostPartSelfTotal": operationCostPartSelfTotal, "otherCostTotal": otherCostTotal, "otherCostSelfTotal": otherCostSelfTotal, "otherCostPartSelfTotal": otherCostPartSelfTotal, "materialCostTotal": materialCostTotal, "materialCostSelfTotal": materialCostSelfTotal, "materialCostPartSelfTotal": materialCostPartSelfTotal, "westernMedicineCostTotal": westernMedicineCostTotal, "westernMedicineCostSelfTotal": westernMedicineCostSelfTotal, "westernMedicineCostPartSelfTotal": westernMedicineCostPartSelfTotal, "chineseTraditionalMedicineCostTotal": chineseTraditionalMedicineCostTotal, "chineseTraditionalMedicineCostSelfTotal": chineseTraditionalMedicineCostSelfTotal, "chineseTraditionalMedicineCostPartSelfTotal": chineseTraditionalMedicineCostPartSelfTotal, "checkCostTotal": checkCostTotal, "checkCostSelfTotal": checkCostSelfTotal, "checkCostPartSelfTotal": checkCostPartSelfTotal, "laboratoryCostTotal": laboratoryCostTotal, "laboratoryCostSelfTotal": laboratoryCostSelfTotal, "laboratoryCostPartSelfTotal": laboratoryCostPartSelfTotal, "treatCostTotal": treatCostTotal, "treatCostSelfTotal": treatCostSelfTotal, "treatCostPartSelfTotal": treatCostPartSelfTotal, "doctor_info": doctor_info, "doctor_code": adminRole_two.DoctorCode, "doctor_name": doctor_name, "health_card_no": order.PsnNo, "department": departments.Name, "yiliao_leibie": yiliao_leibie, "after_money": order.AccountPrice, "patient": patient, "org_name": miConfig.OrgName, "org_code": miConfig.Code, "order_number": order.Number, "his_hospital": his_hospital, "his": his, "dia_config": dia_config, //"check_order_info": cus_slice, }) } } } func (c *HisApiController) CheckTreatment() { patient_id, _ := c.GetInt64("patient_id") id_card_no := c.GetString("id_card_no") insutype := c.GetString("insutype") med_type := c.GetString("med_type") admin_user_id, _ := c.GetInt64("admin_user_id") adminUser := c.GetAdminUserInfo() patient, _ := service.GetPatientByID(adminUser.CurrentOrgId, patient_id) miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId) roles, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) if miConfig.MdtrtareaAdmvs == "421300" { var res ResultTwo api := "http://192.168.124.4:9532/" + "hbyb/1101?cert_no=" + "" + "&org_name=" + miConfig.OrgName + "&doctor=" + roles.UserName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&id_card_type=" + strconv.FormatInt(2, 10) + "&card_sn=" + "" + "&certificates=" + strconv.FormatInt(2, 10) resp, requestErr := http.Get(api) if requestErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) result, _ := json.Marshal(respJSON) if err := json.Unmarshal([]byte(result), &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Infcode == 0 { api := "http://192.168.124.4:9532/" + "hbyb/2001?cert_no=" + "" + "&org_name=" + miConfig.OrgName + "&doctor=" + roles.UserName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&psn_no=" + res.Output.Baseinfo.PsnNo + "&insutype=" + insutype + "&med_type=" + med_type resp, requestErr := http.Get(api) if requestErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var res Result2001 respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) result2, _ := json.Marshal(respJSON) if err := json.Unmarshal([]byte(result2), &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Infcode == 0 { c.ServeSuccessJSON(map[string]interface{}{ "msg": res.Output.Trtinfo, }) } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisFailedException) return } } else { result := service.Gdyb1101A(id_card_no, miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, patient.Name) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) var res ResultTwo var res10265 ResultTwo10265 if miConfig.Code == "H15049901371" { if err := json.Unmarshal(userJSONBytes, &res10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.ErrMsg = res10265.ErrMsg infocode, _ := strconv.ParseInt(res10265.Infcode, 10, 64) res.Infcode = infocode res.Output = res10265.Output res.InfRefmsgid = res10265.InfRefmsgid } else { if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } var user_name string role, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, adminUser.AdminUser.Id) if role.ID == 0 { user_name = "xxx" } else { user_name = role.UserName } baseParams := models.BaseParams{ SecretKey: miConfig.SecretKey, FixmedinsCode: miConfig.Code, InsuplcAdmdvs: miConfig.InsuplcAdmdvs, MdtrtareaAdmvs: miConfig.MdtrtareaAdmvs, OrgName: miConfig.OrgName, Doctor: user_name, } if config.IsOpen == 1 { if miConfig.Code == "H15049901371" { if med_type == "14" { if insutype == "390" { med_type = "9933" } else if insutype == "310" { med_type = "990502" } } else if med_type == "11" { med_type = "11" } } result := service.Gdyb2001(baseParams, res.Output.Baseinfo.PsnNo, insutype, med_type) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } var res Result2001 var res10265 Result2001Org10265 if miConfig.Code == "H15049901371" { if err := json.Unmarshal([]byte(result), &res10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.ErrMsg = res10265.ErrMsg res.Output = res10265.Output res.InfRefmsgid = res10265.InfRefmsgid infocode, _ := strconv.ParseInt(res10265.Infcode, 10, 64) res.Infcode = infocode } else { if err := json.Unmarshal([]byte(result), &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } if res.Infcode == 0 { c.ServeSuccessJSON(map[string]interface{}{ "msg": res.Output.Trtinfo, }) } } } } //func (c *HisApiController) PutRecord() { // id, _ := c.GetInt64("id") // record_time := c.GetString("record_time") // timeLayout := "2006-01-02" // loc, _ := time.LoadLocation("Local") // theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", record_time+" 00:00:00", loc) // if err != nil { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) // return // } // recordDateTime := theTime.Unix() // // adminInfo := c.GetAdminUserInfo() // patient, _ := service.GetPatientByID(adminInfo.CurrentOrgId, id) // patientPrescription, _ := service.FindPatientPrescriptionInfo(adminInfo.CurrentOrgId, id, recordDateTime) // // miConfig, _ := service.FindMedicalInsuranceInfo(adminInfo.CurrentOrgId) // // fmt.Println(miConfig.SecretKey) // // if patient == nil { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePatientNoExist) // return // } // if len(patient.IdCardNo) == 0 { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeIDCartNo) // return // } // config, _ := service.GetMedicalInsuranceConfig(adminInfo.CurrentOrgId) // if config.IsOpen == 1 { // api := "http://127.0.0.1:9532/" + "gdyb/one?cert_no=" + patient.IdCardNo + "&org_name=" + miConfig.OrgName + "&doctor=" + patientPrescription.Doctor + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey // resp, requestErr := http.Get(api) // if requestErr != nil { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } // defer resp.Body.Close() // body, ioErr := ioutil.ReadAll(resp.Body) // if ioErr != nil { // utils.ErrorLog("接口返回数据读取失败: %v", ioErr) // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } // var respJSON map[string]interface{} // // if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { // utils.ErrorLog("接口返回数据解析JSON失败: %v", err) // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } // // userJSON := respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) // userJSONBytes, _ := json.Marshal(userJSON) // var res ResultTwo // if err := json.Unmarshal(userJSONBytes, &res); err != nil { // utils.ErrorLog("解析失败:%v", err) // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } // Iinfos, _ := json.Marshal(res.Output.Iinfo) // Idetinfos, _ := json.Marshal(res.Output.Idetinfo) // infoStr := string(Iinfos) // idetinfoStr := string(Idetinfos) // // if res.Infcode == 0 { // his := models.VMHisPatient{ // Status: 1, // Ctime: time.Now().Unix(), // Mtime: time.Now().Unix(), // PsnNo: res.Output.Baseinfo.PsnNo, // PsnCertType: res.Output.Baseinfo.PsnCertType, // Certno: res.Output.Baseinfo.Certno, // PsnName: res.Output.Baseinfo.PsnName, // Gend: res.Output.Baseinfo.Gend, // Naty: res.Output.Baseinfo.Naty, // Brdy: res.Output.Baseinfo.Brdy, // Age: res.Output.Baseinfo.Age, // Iinfo: infoStr, // Idetinfo: idetinfoStr, // PatientId: patient.ID, // RecordDate: theTime.Unix(), // UserOrgId: adminInfo.CurrentOrgId, // AdminUserId: adminInfo.AdminUser.Id, // IsReturn: 1, // } // // //doctor_id := strconv.FormatInt(patientPrescription.DoctorId, 10) // //result := service.Gdyb2503(his.PsnNo, res.Output.Iinfo[0].Insutype, miConfig.OrgName, patientPrescription.Doctor, miConfig.Code, doctor_id, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, "重症尿毒症透析(血透)", "M07801") // //result2 := service.Gdyb5301(his.PsnNo, res.Output.Iinfo[0].Insutype, miConfig.OrgName, patientPrescription.Doctor, miConfig.Code, doctor_id, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, "重症尿毒症透析(血透)", "M07801") // // //var dat map[string]interface{} // //if err := json.Unmarshal([]byte(result), &dat); err == nil { // // fmt.Println(dat) // //} else { // // fmt.Println(err) // //} // // var dat2 map[string]interface{} // if err := json.Unmarshal([]byte(result2), &dat2); err == nil { // fmt.Println(dat2) // } else { // fmt.Println(err) // } // // } else { // adminUser := c.GetAdminUserInfo() // errlog := &models.HisOrderError{ // UserOrgId: adminUser.CurrentOrgId, // Ctime: time.Now().Unix(), // Mtime: time.Now().Unix(), // ErrMsg: res.ErrMsg, // Status: 1, // PatientId: id, // RecordTime: recordDateTime, // Stage: 1, // } // service.CreateErrMsgLog(errlog) // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeGdybOneException) // return // } // } // //} //func (c *HisApiController) GetUploadDiag() { // id, _ := c.GetInt64("id") // record_time := c.GetString("record_time") // // diagnosis_id, _ := c.GetInt64("diagnosis") // sick_type, _ := c.GetInt64("sick_type") // reg_type, _ := c.GetInt64("reg_type") // // timeLayout := "2006-01-02" // loc, _ := time.LoadLocation("Local") // theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", record_time+" 00:00:00", loc) // if err != nil { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) // return // } // // var patientPrescription models.HisPrescriptionInfo // recordDateTime := theTime.Unix() // adminInfo := c.GetAdminUserInfo() // patientPrescription, _ = service.FindPatientPrescriptionInfo(adminInfo.CurrentOrgId, id, recordDateTime) // // if patientPrescription.ID == 0 { // patientPrescription, _ = service.FindLastPatientPrescriptionInfo(adminInfo.CurrentOrgId, id, recordDateTime) // } // // miConfig, _ := service.FindMedicalInsuranceInfo(adminInfo.CurrentOrgId) // diagnosisConfig, _ := service.FindDiagnoseById(diagnosis_id) // his, _ := service.GetVMHisPatientInfo(adminInfo.CurrentOrgId, id, recordDateTime) // sickConfig, _ := service.FindSickById(sick_type) // department, _ := service.GetDepartMentDetail(patientPrescription.Departments) // // api2 := "http://127.0.0.1:9532/" + "gdyb/four?psn_no=" + his.PsnNo + // "&mdtrt_id=" + his.Number + "&doctor=" + patientPrescription.Doctor + "&department=" + department.Name + // "&diag=" + diagnosisConfig.ClassName + "&org_name=" + miConfig.OrgName + "&med_type=" + strconv.FormatInt(reg_type, 10) + "&doctor_id=" + strconv.FormatInt(patientPrescription.DoctorId, 10) + "&fixmedins_code=" + miConfig.Code + "&diag_code=" + diagnosisConfig.CountryCode + // "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&sick_code=" + sickConfig.ContentCode + "&sick_name=" + sickConfig.ClassName // resp2, requestErr2 := http.Get(api2) // if requestErr2 != nil { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } // body2, ioErr2 := ioutil.ReadAll(resp2.Body) // if ioErr2 != nil { // utils.ErrorLog("接口返回数据读取失败: %v", ioErr2) // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } // var respJSON2 map[string]interface{} // if err := json.Unmarshal([]byte(string(body2)), &respJSON2); err != nil { // utils.ErrorLog("接口返回数据解析JSON失败: %v", err) // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } // respJSON2 = respJSON2["data"].(map[string]interface{})["pre"].(map[string]interface{}) // userJSONBytes2, _ := json.Marshal(respJSON2) // // var res2 ResultSix // if err := json.Unmarshal(userJSONBytes2, &res2); err != nil { // utils.ErrorLog("解析失败:%v", err) // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } // if res2.Infcode != 0 { // adminUser := c.GetAdminUserInfo() // errlog := &models.HisOrderError{ // UserOrgId: adminUser.CurrentOrgId, // Ctime: time.Now().Unix(), // Mtime: time.Now().Unix(), // ErrMsg: res2.ErrMsg, // Status: 1, // PatientId: id, // RecordTime: recordDateTime, // Stage: 3, // } // service.CreateErrMsgLog(errlog) // // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeRegisterThreeException) // return // } // // c.ServeSuccessJSON(map[string]interface{}{ // "msg": "上传成功", // }) // //} type QueryResult struct { ID int64 Name string Code string List_type_code string } func (c *HisApiController) GetCheckCode() { ids_str := c.GetString("ids") record_type, _ := c.GetInt64("record_type") //1.药品 2.耗材 3.项目 ids_arr := strings.Split(ids_str, ",") var queryResult []QueryResult ids := make([]int64, 0) for _, item := range ids_arr { id, _ := strconv.ParseInt(item, 10, 64) ids = append(ids, id) } if record_type == 1 { drugs, _ := service.GetBatchDrugList(ids) for _, item := range drugs { result := QueryResult{ ID: item.ID, Name: item.DrugName, Code: item.MedicalInsuranceNumber, List_type_code: "101", } queryResult = append(queryResult, result) } } else if record_type == 2 { goods, _ := service.GetBatchGoodInformationList(ids) for _, item := range goods { result := QueryResult{ ID: item.ID, Name: item.GoodName, Code: item.MedicalInsuranceNumber, List_type_code: "301", } queryResult = append(queryResult, result) } } else if record_type == 3 { projects, _ := service.GetBathchMyPorjecgList(ids) for _, item := range projects { result := QueryResult{ ID: item.ID, Name: item.ProjectName, Code: item.MedicalCode, List_type_code: "201", } queryResult = append(queryResult, result) } } admin_user_id, _ := c.GetInt64("admin_user_id") adminUser := c.GetAdminUserInfo() miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId) var user_name string role, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) if role.ID == 0 { user_name = "xxx" } else { user_name = role.UserName } baseParams := &models.BaseParams{ SecretKey: miConfig.SecretKey, FixmedinsCode: miConfig.Code, InsuplcAdmdvs: miConfig.InsuplcAdmdvs, MdtrtareaAdmvs: miConfig.MdtrtareaAdmvs, OrgName: miConfig.OrgName, Doctor: user_name, } if config.IsOpen == 1 { for _, item := range queryResult { var result string if record_type == 1 { result = service.Gdyb3301(baseParams, item.Name, item.Code, item.List_type_code, "2021-04-26", "", item.List_type_code) } else if record_type == 2 { result = service.Gdyb3301(baseParams, item.Name, item.Code, item.List_type_code, "2021-04-26", "", item.List_type_code) } else if record_type == 3 { result = service.Gdyb3301(baseParams, item.Name, item.Code, item.List_type_code, "2021-04-26", "", item.List_type_code) } var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) var res ResultSix if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Infcode == 0 { if record_type == 1 { service.UpdateBaseDrugById(item.ID) } else if record_type == 2 { service.UpdateGoodInformaitonByDetail(item.ID) } else if record_type == 3 { service.UpdateProjectById(item.ID) } c.ServeSuccessJSON(map[string]interface{}{ "failed_code": 0, "msg": "目录对照成功", }) } else { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.ErrMsg, }) } } } } func (c *HisApiController) UnCheckCode() { ids_str := c.GetString("ids") record_type, _ := c.GetInt64("record_type") //1.药品 2.耗材 3.项目 admin_user_id, _ := c.GetInt64("admin_user_id") ids_arr := strings.Split(ids_str, ",") var queryResult []QueryResult ids := make([]int64, 0) for _, item := range ids_arr { id, _ := strconv.ParseInt(item, 10, 64) ids = append(ids, id) } if record_type == 1 { drugs, _ := service.GetBatchDrugList(ids) for _, item := range drugs { result := QueryResult{ ID: item.ID, Name: item.DrugName, Code: item.MedicalInsuranceNumber, List_type_code: "101", } queryResult = append(queryResult, result) } } else if record_type == 2 { goods, _ := service.GetBatchGoodInformationList(ids) for _, item := range goods { result := QueryResult{ ID: item.ID, Name: item.GoodName, Code: item.MedicalInsuranceNumber, List_type_code: "301", } queryResult = append(queryResult, result) } } else if record_type == 3 { projects, _ := service.GetBathchMyPorjecgList(ids) for _, item := range projects { result := QueryResult{ ID: item.ID, Name: item.ProjectName, Code: item.MedicalCode, List_type_code: "201", } queryResult = append(queryResult, result) } } adminUser := c.GetAdminUserInfo() miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId) var user_name string role, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) if role.ID == 0 { user_name = "xxx" } else { user_name = role.UserName } baseParams := &models.BaseParams{ SecretKey: miConfig.SecretKey, FixmedinsCode: miConfig.Code, InsuplcAdmdvs: miConfig.InsuplcAdmdvs, MdtrtareaAdmvs: miConfig.MdtrtareaAdmvs, OrgName: miConfig.OrgName, Doctor: user_name, } if config.IsOpen == 1 { for _, item := range queryResult { var result string if record_type == 1 { result = service.Gdyb3302(baseParams, item.Name, item.Code, item.List_type_code) } else if record_type == 2 { result = service.Gdyb3302(baseParams, item.Name, item.Code, item.List_type_code) } else if record_type == 3 { result = service.Gdyb3302(baseParams, item.Name, item.Code, item.List_type_code) } var dat2 map[string]interface{} if err := json.Unmarshal([]byte(result), &dat2); err == nil { fmt.Println(dat2) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat2) var res ResultSix if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Infcode == 0 { if record_type == 1 { service.UpdateDrugByIdDetail(item.ID) } else if record_type == 2 { service.UpdateGoodInfoById(item.ID) } else if record_type == 3 { service.UpdateMyProjectById(item.ID) } c.ServeSuccessJSON(map[string]interface{}{ "failed_code": 0, "msg": "撤销目录对照成功", }) } else { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.ErrMsg, }) } } } } func (c *HisApiController) GetPatientInfo() { id_card_no := c.GetString("id_card_no") admin_user_id, _ := c.GetInt64("admin_user_id") patient, _ := service.GetPatientByIDCard(id_card_no, c.GetAdminUserInfo().CurrentOrgId) if patient.ID == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePatientNoExist) return } role, _ := service.GetAdminUserInfoByID(c.GetAdminUserInfo().CurrentOrgId, admin_user_id) miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId) config, _ := service.GetMedicalInsuranceConfig(c.GetAdminUserInfo().CurrentOrgId) if config.IsOpen == 1 { result := service.Gdyb1101A(id_card_no, miConfig.OrgName, role.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, patient.Name) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) var res ResultTwo var res10265 ResultTwo10265 if miConfig.Code == "H15049901371" { if err := json.Unmarshal(userJSONBytes, &res10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.ErrMsg = res10265.ErrMsg infocode, _ := strconv.ParseInt(res10265.Infcode, 10, 64) res.Infcode = infocode res.Output = res10265.Output res.InfRefmsgid = res10265.InfRefmsgid } else { if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } //if err := json.Unmarshal(userJSONBytes, &res); err != nil { // utils.ErrorLog("解析失败:%v", err) // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return //} if res.Infcode != 0 { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.ErrMsg, }) } else { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": 0, "info": res, }) } } } func (c *HisApiController) PsnPutOnRecord() { record_type, _ := c.GetInt64("type") patient_id, _ := c.GetInt64("patient_id") admin_user_id, _ := c.GetInt64("admin_user_id") start_time := c.GetString("start_time") end_time := c.GetString("end_time") adminUser := c.GetAdminUserInfo() miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId) var patients []*models.Patients if record_type == 1 { //全部备案 patient, _ := service.GetAllPatient(adminUser.CurrentOrgId) patients = append(patients, patient...) } else { //单个备案 patient, _ := service.GetPatientByID(adminUser.CurrentOrgId, patient_id) patients = append(patients, patient) } var user_name string role, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) if role.ID == 0 { user_name = "xxx" } else { user_name = role.UserName } if config.IsOpen == 1 { for _, item := range patients { api := "http://127.0.0.1:9532/" + "gdyb/one?cert_no=" + item.IdCardNo + "&org_name=" + miConfig.OrgName + "&doctor=" + user_name + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey resp, requestErr := http.Get(api) if requestErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } defer resp.Body.Close() body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } userJSON := respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) userJSONBytes, _ := json.Marshal(userJSON) var res ResultTwo if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Infcode == 0 { result := service.Gdyb2505(res.Output.Baseinfo.PsnNo, user_name, miConfig.OrgName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, start_time, end_time) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) var res2 ResultThirteen if err := json.Unmarshal(userJSONBytes, &res2); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res2.Infcode == 0 { psnResult := &models.GdybPsnRecord{ UserOrgId: adminUser.CurrentOrgId, PatientId: item.ID, PsnNo: res.Output.Baseinfo.PsnNo, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, IsCancel: 1, TrtDclaDetlSn: res2.Output.Result.TrtDclaDetlSn, } service.CreatePsnRecord(psnResult) } else { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res2.ErrMsg, }) return } } } } } func (c *HisApiController) PsnUnPutOnRecord() { id, _ := c.GetInt64("id") //record_type, _ := c.GetInt64("type") admin_user_id, _ := c.GetInt64("admin_user_id") adminUser := c.GetAdminUserInfo() miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId) var user_name string role, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) if role.ID == 0 { user_name = "xxx" } else { user_name = role.UserName } psn_record, _ := service.GetPsnRecordById(id) if psn_record.ID == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorPsnRecordNoExistWrong) return } if config.IsOpen == 1 { result := service.Gdyb2506(psn_record.PsnNo, user_name, miConfig.OrgName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, psn_record.TrtDclaDetlSn) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) var res ResultFourteen if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Infcode == 0 { psn_record.IsCancel = 2 service.CreatePsnRecord(&psn_record) } else { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.ErrMsg, }) return } } } func (c *HisApiController) PsnPutNCDSOnRecord() { patient_id, _ := c.GetInt64("patient_id") insutype_two := c.GetString("insutype") psn_no := c.GetString("psn_no") doctor_id, _ := c.GetInt64("doctor_id") sick_id, _ := c.GetInt64("sick_id") department_id, _ := c.GetInt64("department_id") start_time := c.GetString("start_time") end_time := c.GetString("end_time") check_time := c.GetString("check_time") adminUser := c.GetAdminUserInfo() patient, _ := service.GetPatientByID(adminUser.CurrentOrgId, patient_id) miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId) sick, _ := service.FindSickById(sick_id) doctor, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, doctor_id) role, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, doctor_id) var res ResultTwo var res10265 ResultTwo10265 if miConfig.MdtrtareaAdmvs == "320921" || miConfig.MdtrtareaAdmvs == "320982" { psn_info, _ := service.GetPsnByPatientId(patient.ID) api := "http://192.168.2.110:9532/" + "hbyb/1101?cert_no=" + "" + "&org_name=" + miConfig.OrgName + "&doctor=" + role.UserName + "&fixmedins_code=" + miConfig.Code + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&id_card_type=" + strconv.FormatInt(3, 10) + "&card_sn=" + "" + "&certificates=" + strconv.FormatInt(1, 10) + "&url=" + miConfig.Url + "&ak=" + miConfig.AccessKey + "&verify_number=" + psn_info.VerifyNumber + "&cainfo=" + miConfig.Cainfo resp, requestErr := http.Get(api) if requestErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) result, _ := json.Marshal(respJSON) fmt.Println("log") fmt.Println(string(result)) if err := json.Unmarshal([]byte(result), &res10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.ErrMsg = res10265.ErrMsg infocode, _ := strconv.ParseInt(res10265.Infcode, 10, 64) res.Infcode = infocode res.Output = res10265.Output res.InfRefmsgid = res10265.InfRefmsgid } else { result, _ := service.Gdyb1101(patient.IdCardNo, miConfig.OrgName, role.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, 2, "", "0", patient.Name) if miConfig.Code == "H15049901371" { if err := json.Unmarshal([]byte(result), &res10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.ErrMsg = res10265.ErrMsg infocode, _ := strconv.ParseInt(res10265.Infcode, 10, 64) res.Infcode = infocode res.Output = res10265.Output res.InfRefmsgid = res10265.InfRefmsgid } else { if err := json.Unmarshal([]byte(result), &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } } Iinfos, _ := json.Marshal(res.Output.Iinfo) infoStr := string(Iinfos) var rf []*ResultFive json.Unmarshal([]byte(infoStr), &rf) var insuplc_admdvs string var insutype string var is390 int = 0 var is310 int = 0 var insutypes []*ResultFive for _, item := range rf { if (item.Insutype == "390" && item.PsnInsuStas == "1") || (item.Insutype == "310" && item.PsnInsuStas == "1") { insutypes = append(insutypes, item) } } if len(insutypes) == 1 { insutype = insutypes[0].Insutype //insuplc_admdvs = insutypes[0].InsuplcAdmdvs } else { for _, i := range insutypes { if i.Insutype == "390" { is390 = 1 } if i.Insutype == "310" { is310 = 1 } } } if is390 == 1 { insutype = "390" } if is310 == 1 { insutype = "310" } if len(insutypes) == 2 { insutype = insutype_two } if len(insutypes) == 0 { insutype = "310" } insutype = insutype_two fmt.Println(insutype) for _, item := range rf { fmt.Println(item.Insutype) fmt.Println(insutype) if item.Insutype == insutype { fmt.Println(item.Insutype) fmt.Println(insutype) insuplc_admdvs = item.InsuplcAdmdvs } } fmt.Println(insuplc_admdvs) var res2 ResultThirteen var res10265_2 ResultThirteen10265 if config.IsOpen == 1 { if miConfig.MdtrtareaAdmvs == "320921" || miConfig.MdtrtareaAdmvs == "320982" { } else { result := service.Gdyb2503(psn_no, insutype, miConfig.OrgName, doctor.UserName, miConfig.Code, strconv.FormatInt(doctor.ID, 10), insuplc_admdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, sick.ClassName, sick.ContentCode, start_time, end_time, check_time) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) if miConfig.Code == "H15049901371" { if err := json.Unmarshal(userJSONBytes, &res10265_2); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res2.ErrMsg = res10265_2.ErrMsg infocode, _ := strconv.ParseInt(res10265_2.Infcode, 10, 64) res2.Infcode = infocode res2.Output = res10265_2.Output res2.InfRefmsgid = res10265_2.InfRefmsgid } else { if err := json.Unmarshal(userJSONBytes, &res2); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } } if res2.Infcode == 0 { psnResult := &models.GdybPsnNcdsRecord{ UserOrgId: adminUser.CurrentOrgId, PatientId: patient.ID, PsnNo: psn_no, DoctorId: doctor.AdminUserId, DepartmentId: department_id, SickType: sick_id, Insutype: insutype, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, IsCancel: 1, TrtDclaDetlSn: res2.Output.Result.TrtDclaDetlSn, } service.CreatePsnNCDSRecord(psnResult) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": 0, "msg": "备案成功", "result": psnResult, }) } else { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res2.ErrMsg, }) return } } } func (c *HisApiController) PsnPutUnNCDSOnRecord() { id, _ := c.GetInt64("id") admin_user_id, _ := c.GetInt64("admin_user_id") adminUser := c.GetAdminUserInfo() miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId) //config, _ := service.Ge(adminUser.CurrentOrgId) patient, _ := service.GetPatientByID(c.GetAdminUserInfo().CurrentOrgId, id) //role, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) //var user_name string role, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) //if role.ID == 0 { // user_name = "xxx" //} else { // user_name = role.UserName //} psn_record, _ := service.GetPsnNCDSRecordById(id) if psn_record.ID == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorPsnRecordNoExistWrong) return } result, _ := service.Gdyb1101(patient.IdCardNo, miConfig.OrgName, role.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, 2, "", "0", patient.Name) var res ResultTwo var res10265 ResultTwo10265 if miConfig.Code == "H15049901371" { if err := json.Unmarshal([]byte(result), &res10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.ErrMsg = res10265.ErrMsg infocode, _ := strconv.ParseInt(res10265.Infcode, 10, 64) res.Infcode = infocode res.Output = res10265.Output res.InfRefmsgid = res10265.InfRefmsgid } else { if err := json.Unmarshal([]byte(result), &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } Iinfos, _ := json.Marshal(res.Output.Iinfo) infoStr := string(Iinfos) var rf []*ResultFive json.Unmarshal([]byte(infoStr), &rf) var insuplc_admdvs string var insutype string var is390 int = 0 var is310 int = 0 var insutypes []*ResultFive for _, item := range rf { if (item.Insutype == "390" && item.PsnInsuStas == "1") || (item.Insutype == "310" && item.PsnInsuStas == "1") { insutypes = append(insutypes, item) } } if len(insutypes) == 1 { insutype = insutypes[0].Insutype //insuplc_admdvs = insutypes[0].InsuplcAdmdvs } else { for _, i := range insutypes { if i.Insutype == "390" { is390 = 1 } if i.Insutype == "310" { is310 = 1 } } } if is390 == 1 { insutype = "390" } if is310 == 1 { insutype = "310" } if len(insutypes) == 0 { insutype = "310" } insutype = psn_record.Insutype for _, item := range rf { if item.Insutype == insutype { insuplc_admdvs = item.InsuplcAdmdvs } } if config.IsOpen == 1 { result := service.Gdyb2504(psn_record.PsnNo, miConfig.OrgName, role.UserName, miConfig.Code, insuplc_admdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, psn_record.TrtDclaDetlSn) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) var res ResultFourteen var res10265 ResultFourteen10265 if miConfig.Code == "H15049901371" { if err := json.Unmarshal(userJSONBytes, &res10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.ErrMsg = res10265.ErrMsg infocode, _ := strconv.ParseInt(res10265.Infcode, 10, 64) res.Infcode = infocode res.Output = res10265.Output res.InfRefmsgid = res10265.InfRefmsgid } else { if err := json.Unmarshal([]byte(result), &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } //if err := json.Unmarshal(userJSONBytes, &res); err != nil { // utils.ErrorLog("解析失败:%v", err) // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return //} if res.Infcode == 0 { psn_record.IsCancel = 2 service.CreatePsnNCDSRecord(&psn_record) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": 0, "msg": "撤销备案成功", }) } else { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.ErrMsg, }) return } } } func (c *HisApiController) TestTest() { patient, _ := service.GetHisPatientInfo(4, 456, 1619712000) fmt.Println(patient.Iinfo) } type CustomData struct { MsgId string PsnNo string Info string } func (c *HisApiController) ReversalData() { var customData []*CustomData custom := &CustomData{ MsgId: "H44022900158202103301714472004", PsnNo: "44020000001101329945", Info: "2207", } customData = append(customData, custom) custom1 := &CustomData{ MsgId: "H4402290015820210330172057803", PsnNo: "44020000001101161813", Info: "2207", } customData = append(customData, custom1) custom2 := &CustomData{ MsgId: "H44022900158202103301705198813", PsnNo: "44190000133097375417", Info: "2207", } customData = append(customData, custom2) custom3 := &CustomData{ MsgId: "H44022900158202103301715524756", PsnNo: "44020000001100187221", Info: "2207", } customData = append(customData, custom3) custom4 := &CustomData{ MsgId: "H44022900158202103301730376224", PsnNo: "44020000001101959155", Info: "2207", } customData = append(customData, custom4) custom5 := &CustomData{ MsgId: "H44022900158202103301748008725", PsnNo: "44020000001104246641", Info: "2207", } customData = append(customData, custom5) custom6 := &CustomData{ MsgId: "H44022900158202103301718096755", PsnNo: "44020000001102211860", Info: "2207", } customData = append(customData, custom6) custom7 := &CustomData{ MsgId: "H44022900158202103301736551640", PsnNo: "44020000001102687718", Info: "2207", } customData = append(customData, custom7) custom8 := &CustomData{ MsgId: "H44022900158202103301743097676", PsnNo: "44020000001102127785", Info: "2207", } customData = append(customData, custom8) custom9 := &CustomData{ MsgId: "H44022900158202103301712304203", PsnNo: "44020000001101518097", Info: "2207", } customData = append(customData, custom9) custom10 := &CustomData{ MsgId: "H44022900158202103301738448785", PsnNo: "44020000001100500813", Info: "2207", } customData = append(customData, custom10) custom11 := &CustomData{ MsgId: "H44022900158202103301732455843", PsnNo: "44020000001102690557", Info: "2207", } customData = append(customData, custom11) custom12 := &CustomData{ MsgId: "H44022900158202103301745421708", PsnNo: "44020000001102211928", Info: "2207", } customData = append(customData, custom12) custom1212 := &CustomData{ MsgId: "H440229001582021033017351627", PsnNo: "44020000001102481733", Info: "2207", } customData = append(customData, custom1212) custom13 := &CustomData{ MsgId: "H44022900158202103301740327951", PsnNo: "44020000001103174866", Info: "2207", } customData = append(customData, custom13) custom14 := &CustomData{ MsgId: "H4402290015820210330174922668", PsnNo: "44020000001102927272", Info: "2207", } customData = append(customData, custom14) custom15 := &CustomData{ MsgId: "H44022900158202103301752362273", PsnNo: "44020000001102942890", Info: "2207", } customData = append(customData, custom15) custom16 := &CustomData{ MsgId: "H44022900158202103301751082917", PsnNo: "44020000001101662162", Info: "2207", } customData = append(customData, custom16) custom17 := &CustomData{ MsgId: "H44022900158202103301754147728", PsnNo: "44020000000229014511", Info: "2207", } customData = append(customData, custom17) adminUser := c.GetAdminUserInfo() miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) for _, item := range customData { result := service.Gdyb2601(item.PsnNo, item.MsgId, item.Info, miConfig.OrgName, "张俊杰", miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey) fmt.Println(result) } } //func (c *HisApiController) GetAllopatry() { // year := c.GetString("year") // month := c.GetString("month") // admin_user_id, _ := c.GetInt64("admin_user_id") // adminUser := c.GetAdminUserInfo() // miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) // roles, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) // result, _ := service.Gdyb9001(miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, 1669) // // var dat map[string]interface{} // if err := json.Unmarshal([]byte(result), &dat); err == nil { // fmt.Println(dat) // } else { // fmt.Println(err) // } // userJSONBytes, _ := json.Marshal(dat) // var res models.Result9001 // if err := json.Unmarshal(userJSONBytes, &res); err != nil { // utils.ErrorLog("解析失败:%v", err) // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } // // result2, _ := service.Gdyb3260(miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, year, month, res.Output.Signinoutb.SignNo) // var dat2 map[string]interface{} // if err := json.Unmarshal([]byte(result2), &dat2); err == nil { // fmt.Println(dat) // } else { // fmt.Println(err) // } // userJSONBytes2, _ := json.Marshal(dat2) // var res2 models.Result3260 // if err := json.Unmarshal(userJSONBytes2, &res2); err != nil { // utils.ErrorLog("解析失败:%v", err) // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } // if res2.Infcode == 0 { // c.ServeSuccessJSON(map[string]interface{}{ // "list": res2.Output.Data, // }) // return // } else { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } // //} //func (c *HisApiController) ComfirmAllopatry() { // year := c.GetString("year") // month := c.GetString("month") // admin_user_id, _ := c.GetInt64("admin_user_id") // adminUser := c.GetAdminUserInfo() // miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) // roles, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) // result, _ := service.Gdyb9001(miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, 1669) // var dat map[string]interface{} // if err := json.Unmarshal([]byte(result), &dat); err == nil { // fmt.Println(dat) // } else { // fmt.Println(err) // } // userJSONBytes, _ := json.Marshal(dat) // var res models.Result9001 // if err := json.Unmarshal(userJSONBytes, &res); err != nil { // utils.ErrorLog("解析失败:%v", err) // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } // // result2, _ := service.Gdyb3260(miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, year, month, res.Output.Signinoutb.SignNo) // var dat2 map[string]interface{} // if err := json.Unmarshal([]byte(result2), &dat2); err == nil { // fmt.Println(dat) // } else { // fmt.Println(err) // } // userJSONBytes2, _ := json.Marshal(dat2) // var res2 models.Result3260 // if err := json.Unmarshal(userJSONBytes2, &res2); err != nil { // utils.ErrorLog("解析失败:%v", err) // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } // // if res2.Infcode == 0 { // result, _, msgId := service.Gdyb3261(miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, year, month, res2) // var dat map[string]interface{} // if err := json.Unmarshal([]byte(result), &dat); err == nil { // fmt.Println(dat) // } else { // fmt.Println(err) // } // userJSONBytes, _ := json.Marshal(dat) // var res3 models.Result3261 // if err := json.Unmarshal(userJSONBytes, &res3); err != nil { // utils.ErrorLog("解析失败:%v", err) // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } // // if res3.Infcode == 0 { // record := &models.HisYidiClearRecord{ // UserOrgId: c.GetAdminUserInfo().CurrentOrgId, // Ctime: time.Now().Unix(), // Mtime: time.Now().Unix(), // Status: 1, // MsgId: msgId, // } // service.SaveClearRecord(record) // c.ServeSuccessJSON(map[string]interface{}{ // "msg": "提取成功", // }) // } // } //} func (c *HisApiController) RefundAllopatry() { year := c.GetString("year") month := c.GetString("month") id, _ := c.GetInt64("id") admin_user_id, _ := c.GetInt64("admin_user_id") adminUser := c.GetAdminUserInfo() miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) roles, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) record, _ := service.GetClearRecordById(id) result, _ := service.Gdyb3262(miConfig.OrgName, roles.UserName, miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey, year, month, record.MsgId) var dat map[string]interface{} if err := json.Unmarshal([]byte(result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) var empty ResultFourteen if err := json.Unmarshal(userJSONBytes, &empty); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if empty.Infcode == 0 { c.ServeSuccessJSON(map[string]interface{}{ "msg": "撤销成功", }) return } } func (c *HisApiController) ReversalOtherData() { var customData []*CustomData custom := &CustomData{ MsgId: "H44022900158202103301714472004", PsnNo: "44020000001101329945", Info: "2208", } customData = append(customData, custom) custom1 := &CustomData{ MsgId: "H4402290015820210330172057803", PsnNo: "44020000001101161813", Info: "2208", } customData = append(customData, custom1) custom2 := &CustomData{ MsgId: "H44022900158202103301705198813", PsnNo: "44190000133097375417", Info: "2208", } customData = append(customData, custom2) custom3 := &CustomData{ MsgId: "H44022900158202103301715524756", PsnNo: "44020000001100187221", Info: "2208", } customData = append(customData, custom3) custom4 := &CustomData{ MsgId: "H44022900158202103301730376224", PsnNo: "44020000001101959155", Info: "2208", } customData = append(customData, custom4) custom5 := &CustomData{ MsgId: "H44022900158202103301748008725", PsnNo: "44020000001104246641", Info: "2208", } customData = append(customData, custom5) custom6 := &CustomData{ MsgId: "H44022900158202103301718096755", PsnNo: "44020000001102211860", Info: "2208", } customData = append(customData, custom6) custom7 := &CustomData{ MsgId: "H44022900158202103301736551640", PsnNo: "44020000001102687718", Info: "2208", } customData = append(customData, custom7) custom8 := &CustomData{ MsgId: "H44022900158202103301743097676", PsnNo: "44020000001102127785", Info: "2208", } customData = append(customData, custom8) custom9 := &CustomData{ MsgId: "H44022900158202103301712304203", PsnNo: "44020000001101518097", Info: "2208", } customData = append(customData, custom9) custom10 := &CustomData{ MsgId: "H44022900158202103301738448785", PsnNo: "44020000001100500813", Info: "2208", } customData = append(customData, custom10) custom11 := &CustomData{ MsgId: "H44022900158202103301732455843", PsnNo: "44020000001102690557", Info: "2208", } customData = append(customData, custom11) custom12 := &CustomData{ MsgId: "H44022900158202103301745421708", PsnNo: "44020000001102211928", Info: "2208", } customData = append(customData, custom12) custom1212 := &CustomData{ MsgId: "H440229001582021033017351627", PsnNo: "44020000001102481733", Info: "2208", } customData = append(customData, custom1212) custom13 := &CustomData{ MsgId: "H44022900158202103301740327951", PsnNo: "44020000001103174866", Info: "2208", } customData = append(customData, custom13) custom14 := &CustomData{ MsgId: "H4402290015820210330174922668", PsnNo: "44020000001102927272", Info: "2208", } customData = append(customData, custom14) custom15 := &CustomData{ MsgId: "H44022900158202103301752362273", PsnNo: "44020000001102942890", Info: "2208", } customData = append(customData, custom15) custom16 := &CustomData{ MsgId: "H44022900158202103301751082917", PsnNo: "44020000001101662162", Info: "2208", } customData = append(customData, custom16) custom17 := &CustomData{ MsgId: "H44022900158202103301754147728", PsnNo: "44020000000229014511", Info: "2208", } customData = append(customData, custom17) adminUser := c.GetAdminUserInfo() miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) for _, item := range customData { result := service.Gdyb2601(item.PsnNo, item.MsgId, item.Info, miConfig.OrgName, "张俊杰", miConfig.Code, miConfig.InsuplcAdmdvs, miConfig.MdtrtareaAdmvs, miConfig.SecretKey) fmt.Println(result) } } func PathExists(path string) (bool, error) { _, err := os.Stat(path) if err == nil { return true, nil } if os.IsNotExist(err) { return false, nil } return false, err } //创建文件夹 func Mkdir(dir string) { // 创建文件夹 exist, err := PathExists(dir) if err != nil { fmt.Println(err.Error()) } else { if exist { fmt.Println(dir + "文件夹已存在!") } else { // 文件夹名称,权限 err := os.Mkdir(dir, os.ModePerm) if err != nil { fmt.Println(dir+"文件夹创建失败:", err.Error()) } else { fmt.Println(dir + "文件夹创建成功!") } } } } //压缩文件 func Zip(srcFile string, destZip string) error { zipfile, err := os.Create(destZip) if err != nil { return err } defer zipfile.Close() archive := zip.NewWriter(zipfile) defer archive.Close() filepath.Walk(srcFile, func(path string, info os.FileInfo, err error) error { if err != nil { return err } header, err := zip.FileInfoHeader(info) if err != nil { return err } header.Name = strings.TrimPrefix(path, filepath.Dir(srcFile)+"/") // header.Name = path if info.IsDir() { header.Name += "/" } else { header.Method = zip.Deflate } writer, err := archive.CreateHeader(header) if err != nil { return err } if !info.IsDir() { file, err := os.Open(path) if err != nil { return err } defer file.Close() _, err = io.Copy(writer, file) } return err }) return err } func ReadFile(filePath string) []byte { f, err := os.Open(filePath) if err != nil { fmt.Println("read file fail", err) return nil } defer f.Close() fd, err := ioutil.ReadAll(f) if err != nil { fmt.Println("read to fd fail", err) return nil } return fd } func saveLog(result string, request string, infno string, desc string) { org_id, _ := beego.AppConfig.Int64("org_id") miConfig, _ := service.FindMedicalInsuranceInfo(org_id) dir := miConfig.OrgName + "日志" utils.Mkdir(dir) month := time.Unix(1557042972, 0).Format("1") year := time.Now().Format("2006") month = time.Now().Format("01") day := time.Now().Format("02") hour := time.Now().Format("15") min := time.Now().Format("04") sec := time.Now().Format("05") result_time := year + "-" + month + "-" + day + " " + hour + ":" + min + ":" + sec file := strconv.FormatInt(org_id, 10) + "_" + year + month + day + "_log" file_name := file + ".txt" file_path := miConfig.OrgName + "日志" + "/" + file_name exist, _ := utils.PathExists(file_path) if exist { //存在 fmt.Println("存在") f, err := os.OpenFile(file_path, os.O_WRONLY, 0644) if err != nil { fmt.Println("read fail") } content := "\r\n" + "\r\n" + "\r\n" + result_time + " " + "【 " + desc + infno + "入参" + " 】:" + "\r\n" + request + "\r\n" + result_time + " " + "【 " + desc + infno + "出参" + " 】:" + "\r\n" + result n, _ := f.Seek(0, 2) _, err = f.WriteAt([]byte(content), n) } else { //不存在 fmt.Println("文件不存在,创建文件") f, err := os.Create(miConfig.OrgName + "日志" + "/" + file_name) defer f.Close() if err != nil { } else { _, err = f.Write([]byte("记录日志")) } } } type Charset string const ( UTF8 = Charset("UTF-8") GB18030 = Charset("GB18030") ) func ConvertToString(src string, srcCode string, tagCode string) string { srcCoder := mahonia.NewDecoder(srcCode) srcResult := srcCoder.ConvertString(src) tagCoder := mahonia.NewDecoder(tagCode) _, cdata, _ := tagCoder.Translate([]byte(srcResult), true) result := string(cdata) return result } func ReadEleCard(admin_user_id int64, org_id int64, c *HisApiController) string { roles, _ := service.GetAdminUserInfoByID(org_id, admin_user_id) miConfig, _ := service.FindMedicalInsuranceInfo(org_id) var token string if miConfig.MdtrtareaAdmvs == "320921" || miConfig.MdtrtareaAdmvs == "320982" { var api string if miConfig.MdtrtareaAdmvs == "320921" { api = "http://192.168.2.110:9532/" + "jsyb/readcard?" + "fixmedins_code=" + miConfig.Code + "&secret_key=" + miConfig.SecretKey + "&ak=" + miConfig.AccessKey + "&org_name=" + miConfig.OrgName + "&doctor=" + roles.UserName + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&url=" + miConfig.Url + "&cainfo=" + miConfig.Cainfo + "&id_card_type=" + strconv.FormatInt(4, 10) + "&operator_id=" + strconv.FormatInt(admin_user_id, 10) + "&operator=" + roles.UserName fmt.Println(api) } else { api = "http://192.168.5.251:9532/" + "jsyb/readcard?" + "fixmedins_code=" + miConfig.Code + "&secret_key=" + miConfig.SecretKey + "&ak=" + miConfig.AccessKey + "&org_name=" + miConfig.OrgName + "&doctor=" + roles.UserName + "&insuplc_admdvs=" + miConfig.InsuplcAdmdvs + "&mdtrtarea_admvs=" + miConfig.MdtrtareaAdmvs + "&secret_key=" + miConfig.SecretKey + "&url=" + miConfig.Url + "&cainfo=" + miConfig.Cainfo + "&id_card_type=" + strconv.FormatInt(4, 10) + "&operator_id=" + strconv.FormatInt(admin_user_id, 10) + "&operator=" + roles.UserName } resp, requestErr := http.Get(api) if requestErr != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return "" } body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return "" } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(string(body)), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return "" } var status string status = respJSON["data"].(map[string]interface{})["status"].(string) //card_type := respJSON["data"].(map[string]interface{})["type"].(string) var res ResultTwo //1101结果 var res10265 ResultTwo10265 //1101结果 if status == "0" { //读卡成功 var card_info string //卡信息 var busi_card_info string token = respJSON["data"].(map[string]interface{})["token"].(string) busi_card_info = respJSON["data"].(map[string]interface{})["busi_card_info"].(string) card_info = respJSON["data"].(map[string]interface{})["card_info"].(string) fmt.Println(card_info) fmt.Println(busi_card_info) respJSON = respJSON["data"].(map[string]interface{})["result"].(map[string]interface{}) result, _ := json.Marshal(respJSON) if err := json.Unmarshal([]byte(result), &res10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return "" } res.ErrMsg = res10265.ErrMsg infocode, _ := strconv.ParseInt(res10265.Infcode, 10, 64) res.Infcode = infocode res.Output = res10265.Output res.InfRefmsgid = res10265.InfRefmsgid if res.Infcode == 0 { patient, err := service.GetPatientByIDCard(res.Output.Baseinfo.Certno, c.GetAdminUserInfo().CurrentOrgId) if err == gorm.ErrRecordNotFound { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException) return "" } else if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) return "" } else { Iinfos, _ := json.Marshal(res.Output.Iinfo) Idetinfos, _ := json.Marshal(res.Output.Idetinfo) infoStr := string(Iinfos) idetinfoStr := string(Idetinfos) psn := &models.HisPsn{ PsnNo: res.Output.Baseinfo.PsnNo, Age: res.Output.Baseinfo.Age, PatientId: patient.ID, Certno: res.Output.Baseinfo.Certno, Brdy: res.Output.Baseinfo.Brdy, Gend: res.Output.Baseinfo.Gend, Naty: res.Output.Baseinfo.Naty, PsnCertType: res.Output.Baseinfo.PsnCertType, PsnName: res.Output.Baseinfo.PsnName, Idetinfo: idetinfoStr, Insuinfo: infoStr, UserOrgId: c.GetAdminUserInfo().CurrentOrgId, CardInfo: card_info, VerifyNumber: token, } service.CreateHisPsn(psn) return token } } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisFailedException) return "" } } else { //读卡失败 c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisFailedException) return "" } return token } func DeleteExtraSpaceTwo(s string) string { //删除字符串中的多余空格,有多个空格时,仅保留一个空格 s1 := strings.Replace(s, " ", " ", -1) //替换tab为空格 regstr := "\\s{2,}" //两个及两个以上空格的正则表达式 reg, _ := regexp.Compile(regstr) //编译正则表达式 s2 := make([]byte, len(s1)) //定义字符数组切片 copy(s2, s1) //将字符串复制到切片 spc_index := reg.FindStringIndex(string(s2)) //在字符串中搜索 for len(spc_index) > 0 { //找到适配项 s2 = append(s2[:spc_index[0]+1], s2[spc_index[1]:]...) //删除多余空格 spc_index = reg.FindStringIndex(string(s2)) //继续在字符串中搜索 } return string(s2) } func Remove0000(s string) string { str := make([]rune, 0, len(s)) for _, v := range []rune(s) { if v == 0 { continue } str = append(str, v) } return string(str) } func (c *HisApiController) GetELeCertInfo(code string, operator_id string, operator_name string) (string, string) { DllDef := syscall.MustLoadDLL("HeaSecReadInfo.dll") readCard := DllDef.MustFindProc("EcQuery") pCardInfo := make([]byte, 8192) pBusiCardInfo := make([]byte, 8192) data := make(map[string]interface{}) //pData := make(map[string]interface{}) inputData := make(map[string]interface{}) inputData["orgId"] = code inputData["businessType"] = "01101" inputData["operatorId"] = operator_id inputData["operatorName"] = operator_name inputData["officeId"] = "001" inputData["officeName"] = "血透室" // data["data"] = inputData data["transType"] = "ec.query" data["orgId"] = code bytesData, _ := json.Marshal(data) pCardInfo = bytesData ret2, _, _ := readCard.Call((uintptr)(unsafe.Pointer(&pCardInfo[0])), (uintptr)(unsafe.Pointer(&pBusiCardInfo[0]))) fmt.Println(ret2) //fmt.Println(DeleteExtraSpace(string(bytesData))) //fmt.Println(DeleteExtraSpace(string(pBusiCardInfo))) fmt.Println(":", ConvertToString(DeleteExtraSpace(string(bytesData)), "gbk", "utf-8")) fmt.Println(":", ConvertToString(DeleteExtraSpace(string(pBusiCardInfo)), "gbk", "utf-8")) if ret2 != 0 { return "", "" } return DeleteExtraSpace(string(bytesData)), DeleteExtraSpace(string(pBusiCardInfo)) } func DeleteExtraSpace(s string) string { //删除字符串中的多余空格,有多个空格时,仅保留一个空格 s1 := strings.Replace(s, " ", " ", -1) //替换tab为空格 regstr := "\\s{2,}" //两个及两个以上空格的正则表达式 reg, _ := regexp.Compile(regstr) //编译正则表达式 s2 := make([]byte, len(s1)) //定义字符数组切片 copy(s2, s1) //将字符串复制到切片 spc_index := reg.FindStringIndex(string(s2)) //在字符串中搜索 for len(spc_index) > 0 { //找到适配项 s2 = append(s2[:spc_index[0]+1], s2[spc_index[1]:]...) //删除多余空格 spc_index = reg.FindStringIndex(string(s2)) //继续在字符串中搜索 } return string(s2) } //对账 func (c *HisApiController) Post3202() { start_time := c.GetString("start_time") end_time := c.GetString("end_time") //insutype := c.GetString("insutype") clr_type := c.GetString("clr_type") clr_org := c.GetString("clr_optins") admin_user_id, _ := c.GetInt64("admin_user_id") adminUser := c.GetAdminUserInfo() miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId) if len(clr_org) == 0 { clr_org = miConfig.MdtrtareaAdmvs } timeLayout := "2006-01-02" loc, _ := time.LoadLocation("Local") startime, _ := time.ParseInLocation(timeLayout+" 15:04:05", start_time+" 00:00:00", loc) endtime, _ := time.ParseInLocation(timeLayout+" 15:04:05", end_time+" 23:59:59", loc) orders, _ := service.GetOrderByTimeFour(startime.Unix(), endtime.Unix(), adminUser.CurrentOrgId) //orders_two, _ := service.GetOrderByTimeFour(startime.Unix(), endtime.Unix(), adminUser.CurrentOrgId, "310", "", clr_type) //fixmedins_setl_cnt := int64(len(orders)) var medfee_sumamt float64 var acct_pay float64 var fund_pay_sumamt float64 for _, item := range orders { medfee_sumamt = medfee_sumamt + item.MedfeeSumamt acct_pay = acct_pay + item.AcctPay fund_pay_sumamt = fund_pay_sumamt + item.FundPaySumamt } //var medfee_sumamt_two float64 //var acct_pay_two float64 //var fund_pay_sumamt_two float64 //for _, item := range orders_two { // medfee_sumamt_two = medfee_sumamt_two + item.MedfeeSumamt // acct_pay_two = acct_pay_two + item.AcctPay // fund_pay_sumamt_two = fund_pay_sumamt_two + item.FundPaySumamt //} //var user_name string role, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) //if role.ID == 0 { // user_name = "xxx" //} else { // user_name = role.UserName //} var res ResultSix if config.IsOpen == 1 { var bps []*models.BusinessParamsTwo var bp models.BusinessParamsTwo medfee_sumamt_str := fmt.Sprintf("%.2f", medfee_sumamt) acct_pay_str := fmt.Sprintf("%.2f", acct_pay) fund_pay_sumamt_str := fmt.Sprintf("%.2f", fund_pay_sumamt) bp.MedfeeSumamt = medfee_sumamt_str bp.AcctPay = acct_pay_str bp.FundPaySumamt = fund_pay_sumamt_str bp.Insutype = "390" bp.StmtBegndate = start_time bp.ClrType = clr_type bp.SetlOptins = clr_org bp.StmtEnddate = end_time bps = append(bps, &bp) data := make(map[string]interface{}) data["bps"] = bps data["org_name"] = miConfig.OrgName data["doctor"] = role.UserName data["fixmedins_code"] = miConfig.Code data["insuplc_admdvs"] = miConfig.InsuplcAdmdvs data["mdtrtarea_admvs"] = miConfig.MdtrtareaAdmvs if miConfig.MdtrtareaAdmvs == "421300" { client := &http.Client{} bytesData, _ := json.Marshal(data) req, _ := http.NewRequest("POST", "http://192.168.124.4:9532/"+"hbyb/3202", bytes.NewReader(bytesData)) resp, _ := client.Do(req) defer resp.Body.Close() body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(body), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } respJSON = respJSON["data"].(map[string]interface{})["pre"].(map[string]interface{}) userJSONBytes, _ := json.Marshal(respJSON) if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } } if res.Infcode == 0 { c.ServeSuccessJSON(map[string]interface{}{ "msg": "发起成功", }) } else { c.ServeSuccessJSON(map[string]interface{}{ "code": -10, "msg": res.ErrMsg, }) } } } func (c *HisApiController) Post3501() { miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId) data := make(map[string]interface{}) var struct3501s []models.Struct3501 var struct3501 models.Struct3501 struct3501.OrgName = miConfig.OrgName struct3501.AccessKey = miConfig.AccessKey struct3501.RequestUrl = miConfig.Url struct3501.SecretKey = miConfig.SecretKey struct3501.ManuDate = "2022-08-17" struct3501.FixmedinsBchno = "" struct3501.ManuLotnum = "" struct3501.RxFlag = "0" struct3501.ExpyEnd = "2022-08-17" struct3501.Invdate = "2022-08-17" struct3501.InvCnt = "20.25" struct3501.Memo = "" struct3501.MedListCodg = "XB01ABD056B002020200517" struct3501.FixmedinsHilistId = miConfig.Code struct3501.FixmedinsHilistName = miConfig.OrgName struct3501s = append(struct3501s, struct3501) data["struct_3501s"] = struct3501s client := &http.Client{} bytesData, _ := json.Marshal(data) var req *http.Request if miConfig.MdtrtareaAdmvs == "320921" { req, _ = http.NewRequest("POST", "http://192.168.2.110:9532/"+"jsyb/3501", bytes.NewReader(bytesData)) } else { req, _ = http.NewRequest("POST", "http://192.168.5.251:9532/"+"jsyb/3501", bytes.NewReader(bytesData)) } resp, _ := client.Do(req) defer resp.Body.Close() body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(body), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var res ResultSix var resSix10265 ResultSix10265 //1101结果 respJSON = respJSON["data"].(map[string]interface{})["request_log"].(map[string]interface{}) result, _ := json.Marshal(respJSON) if err := json.Unmarshal([]byte(result), &resSix10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = resSix10265.InfRefmsgid res.Output = resSix10265.Output res.ErrMsg = resSix10265.ErrMsg res.Cainfo = resSix10265.Cainfo res.WarnMsg = resSix10265.WarnMsg infocode, _ := strconv.ParseInt(resSix10265.Infcode, 10, 64) res.Infcode = infocode if infocode == 0 { c.ServeSuccessJSON(map[string]interface{}{ "msg": "上传成功", }) return } else { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.ErrMsg, }) return } } func (c *HisApiController) Post3502() { miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId) data := make(map[string]interface{}) var struct3502s []models.Struct3502 var struct3502 models.Struct3502 struct3502.OrgName = miConfig.OrgName struct3502.AccessKey = miConfig.AccessKey struct3502.RequestUrl = miConfig.Url struct3502.SecretKey = miConfig.SecretKey struct3502.ManuDate = "2022-08-15" struct3502.FixmedinsBchno = "" struct3502.ManuLotnum = "" struct3502.RxFlag = "0" struct3502.ExpyEnd = "2022-08-15" struct3502.Invdate = "2022-08-15" struct3502.InvCnt = "20.25" struct3502.Memo = "" struct3502.MedListCodg = "XB01ABD056B002020200517" struct3502.FixmedinsHilistId = miConfig.Code struct3502.FixmedinsHilistName = miConfig.OrgName struct3502s = append(struct3502s, struct3502) data["struct_3502s"] = struct3502s client := &http.Client{} bytesData, _ := json.Marshal(data) var req *http.Request if miConfig.MdtrtareaAdmvs == "320921" { req, _ = http.NewRequest("POST", "http://192.168.2.110:9532/"+"jsyb/3501", bytes.NewReader(bytesData)) } else { req, _ = http.NewRequest("POST", "http://192.168.5.251:9532/"+"jsyb/3501", bytes.NewReader(bytesData)) } resp, _ := client.Do(req) defer resp.Body.Close() body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(body), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var res ResultSix var resSix10265 ResultSix10265 //1101结果 respJSON = respJSON["data"].(map[string]interface{})["request_log"].(map[string]interface{}) result, _ := json.Marshal(respJSON) if err := json.Unmarshal([]byte(result), &resSix10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = resSix10265.InfRefmsgid res.Output = resSix10265.Output res.ErrMsg = resSix10265.ErrMsg res.Cainfo = resSix10265.Cainfo res.WarnMsg = resSix10265.WarnMsg infocode, _ := strconv.ParseInt(resSix10265.Infcode, 10, 64) res.Infcode = infocode if infocode == 0 { c.ServeSuccessJSON(map[string]interface{}{ "msg": "上传成功", }) return } else { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.ErrMsg, }) return } } func (c *HisApiController) Post3503() { miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId) data := make(map[string]interface{}) var struct3501s []models.Struct3501 var struct3501 models.Struct3501 struct3501.OrgName = miConfig.OrgName struct3501.AccessKey = miConfig.AccessKey struct3501.RequestUrl = miConfig.Url struct3501.SecretKey = miConfig.SecretKey struct3501.ManuDate = "2022-08-15" struct3501.FixmedinsBchno = "" struct3501.ManuLotnum = "" struct3501.RxFlag = "0" struct3501.ExpyEnd = "2022-08-15" struct3501.Invdate = "2022-08-15" struct3501.InvCnt = "20.25" struct3501.Memo = "" struct3501.MedListCodg = "XB01ABD056B002020200517" struct3501.FixmedinsHilistId = miConfig.Code struct3501.FixmedinsHilistName = miConfig.OrgName struct3501s = append(struct3501s, struct3501) data["struct_3501s"] = struct3501s client := &http.Client{} bytesData, _ := json.Marshal(data) var req *http.Request if miConfig.MdtrtareaAdmvs == "320921" { req, _ = http.NewRequest("POST", "http://192.168.2.110:9532/"+"jsyb/3501", bytes.NewReader(bytesData)) } else { req, _ = http.NewRequest("POST", "http://192.168.5.251:9532/"+"jsyb/3501", bytes.NewReader(bytesData)) } resp, _ := client.Do(req) defer resp.Body.Close() body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(body), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var res ResultSix var resSix10265 ResultSix10265 //1101结果 respJSON = respJSON["data"].(map[string]interface{})["request_log"].(map[string]interface{}) result, _ := json.Marshal(respJSON) if err := json.Unmarshal([]byte(result), &resSix10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = resSix10265.InfRefmsgid res.Output = resSix10265.Output res.ErrMsg = resSix10265.ErrMsg res.Cainfo = resSix10265.Cainfo res.WarnMsg = resSix10265.WarnMsg infocode, _ := strconv.ParseInt(resSix10265.Infcode, 10, 64) res.Infcode = infocode if infocode == 0 { c.ServeSuccessJSON(map[string]interface{}{ "msg": "上传成功", }) return } else { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.ErrMsg, }) return } } func (c *HisApiController) Post3504() { miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId) data := make(map[string]interface{}) var struct3501s []models.Struct3501 var struct3501 models.Struct3501 struct3501.OrgName = miConfig.OrgName struct3501.AccessKey = miConfig.AccessKey struct3501.RequestUrl = miConfig.Url struct3501.SecretKey = miConfig.SecretKey struct3501.ManuDate = "2022-08-15" struct3501.FixmedinsBchno = "" struct3501.ManuLotnum = "" struct3501.RxFlag = "0" struct3501.ExpyEnd = "2022-08-15" struct3501.Invdate = "2022-08-15" struct3501.InvCnt = "20.25" struct3501.Memo = "" struct3501.MedListCodg = "XB01ABD056B002020200517" struct3501.FixmedinsHilistId = miConfig.Code struct3501.FixmedinsHilistName = miConfig.OrgName struct3501s = append(struct3501s, struct3501) data["struct_3501s"] = struct3501s client := &http.Client{} bytesData, _ := json.Marshal(data) var req *http.Request if miConfig.MdtrtareaAdmvs == "320921" { req, _ = http.NewRequest("POST", "http://192.168.2.110:9532/"+"jsyb/3501", bytes.NewReader(bytesData)) } else { req, _ = http.NewRequest("POST", "http://192.168.5.251:9532/"+"jsyb/3501", bytes.NewReader(bytesData)) } resp, _ := client.Do(req) defer resp.Body.Close() body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(body), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var res ResultSix var resSix10265 ResultSix10265 //1101结果 respJSON = respJSON["data"].(map[string]interface{})["request_log"].(map[string]interface{}) result, _ := json.Marshal(respJSON) if err := json.Unmarshal([]byte(result), &resSix10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = resSix10265.InfRefmsgid res.Output = resSix10265.Output res.ErrMsg = resSix10265.ErrMsg res.Cainfo = resSix10265.Cainfo res.WarnMsg = resSix10265.WarnMsg infocode, _ := strconv.ParseInt(resSix10265.Infcode, 10, 64) res.Infcode = infocode if infocode == 0 { c.ServeSuccessJSON(map[string]interface{}{ "msg": "上传成功", }) return } else { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.ErrMsg, }) return } } func (c *HisApiController) Post3505() { miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId) data := make(map[string]interface{}) var struct3501s []models.Struct3501 var struct3501 models.Struct3501 struct3501.OrgName = miConfig.OrgName struct3501.AccessKey = miConfig.AccessKey struct3501.RequestUrl = miConfig.Url struct3501.SecretKey = miConfig.SecretKey struct3501.ManuDate = "2022-08-15" struct3501.FixmedinsBchno = "" struct3501.ManuLotnum = "" struct3501.RxFlag = "0" struct3501.ExpyEnd = "2022-08-15" struct3501.Invdate = "2022-08-15" struct3501.InvCnt = "20.25" struct3501.Memo = "" struct3501.MedListCodg = "XB01ABD056B002020200517" struct3501.FixmedinsHilistId = miConfig.Code struct3501.FixmedinsHilistName = miConfig.OrgName struct3501s = append(struct3501s, struct3501) data["struct_3501s"] = struct3501s client := &http.Client{} bytesData, _ := json.Marshal(data) var req *http.Request if miConfig.MdtrtareaAdmvs == "320921" { req, _ = http.NewRequest("POST", "http://192.168.2.110:9532/"+"jsyb/3501", bytes.NewReader(bytesData)) } else { req, _ = http.NewRequest("POST", "http://192.168.5.251:9532/"+"jsyb/3501", bytes.NewReader(bytesData)) } resp, _ := client.Do(req) defer resp.Body.Close() body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(body), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var res ResultSix var resSix10265 ResultSix10265 //1101结果 respJSON = respJSON["data"].(map[string]interface{})["request_log"].(map[string]interface{}) result, _ := json.Marshal(respJSON) if err := json.Unmarshal([]byte(result), &resSix10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = resSix10265.InfRefmsgid res.Output = resSix10265.Output res.ErrMsg = resSix10265.ErrMsg res.Cainfo = resSix10265.Cainfo res.WarnMsg = resSix10265.WarnMsg infocode, _ := strconv.ParseInt(resSix10265.Infcode, 10, 64) res.Infcode = infocode if infocode == 0 { c.ServeSuccessJSON(map[string]interface{}{ "msg": "上传成功", }) return } else { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.ErrMsg, }) return } } func (c *HisApiController) Post3506() { miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId) data := make(map[string]interface{}) var struct3501s []models.Struct3501 var struct3501 models.Struct3501 struct3501.OrgName = miConfig.OrgName struct3501.AccessKey = miConfig.AccessKey struct3501.RequestUrl = miConfig.Url struct3501.SecretKey = miConfig.SecretKey struct3501.ManuDate = "2022-08-15" struct3501.FixmedinsBchno = "" struct3501.ManuLotnum = "" struct3501.RxFlag = "0" struct3501.ExpyEnd = "2022-08-15" struct3501.Invdate = "2022-08-15" struct3501.InvCnt = "20.25" struct3501.Memo = "" struct3501.MedListCodg = "XB01ABD056B002020200517" struct3501.FixmedinsHilistId = miConfig.Code struct3501.FixmedinsHilistName = miConfig.OrgName struct3501s = append(struct3501s, struct3501) data["struct_3501s"] = struct3501s client := &http.Client{} bytesData, _ := json.Marshal(data) var req *http.Request if miConfig.MdtrtareaAdmvs == "320921" { req, _ = http.NewRequest("POST", "http://192.168.2.110:9532/"+"jsyb/3501", bytes.NewReader(bytesData)) } else { req, _ = http.NewRequest("POST", "http://192.168.5.251:9532/"+"jsyb/3501", bytes.NewReader(bytesData)) } resp, _ := client.Do(req) defer resp.Body.Close() body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(body), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var res ResultSix var resSix10265 ResultSix10265 //1101结果 respJSON = respJSON["data"].(map[string]interface{})["request_log"].(map[string]interface{}) result, _ := json.Marshal(respJSON) if err := json.Unmarshal([]byte(result), &resSix10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = resSix10265.InfRefmsgid res.Output = resSix10265.Output res.ErrMsg = resSix10265.ErrMsg res.Cainfo = resSix10265.Cainfo res.WarnMsg = resSix10265.WarnMsg infocode, _ := strconv.ParseInt(resSix10265.Infcode, 10, 64) res.Infcode = infocode if infocode == 0 { c.ServeSuccessJSON(map[string]interface{}{ "msg": "上传成功", }) return } else { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.ErrMsg, }) return } } func (c *HisApiController) Post3507() { miConfig, _ := service.FindMedicalInsuranceInfo(c.GetAdminUserInfo().CurrentOrgId) data := make(map[string]interface{}) var struct3501s []models.Struct3501 var struct3501 models.Struct3501 struct3501.OrgName = miConfig.OrgName struct3501.AccessKey = miConfig.AccessKey struct3501.RequestUrl = miConfig.Url struct3501.SecretKey = miConfig.SecretKey struct3501.ManuDate = "2022-08-15" struct3501.FixmedinsBchno = "" struct3501.ManuLotnum = "" struct3501.RxFlag = "0" struct3501.ExpyEnd = "2022-08-15" struct3501.Invdate = "2022-08-15" struct3501.InvCnt = "20.25" struct3501.Memo = "" struct3501.MedListCodg = "XB01ABD056B002020200517" struct3501.FixmedinsHilistId = miConfig.Code struct3501.FixmedinsHilistName = miConfig.OrgName struct3501s = append(struct3501s, struct3501) data["struct_3501s"] = struct3501s client := &http.Client{} bytesData, _ := json.Marshal(data) var req *http.Request if miConfig.MdtrtareaAdmvs == "320921" { req, _ = http.NewRequest("POST", "http://192.168.2.110:9532/"+"jsyb/3501", bytes.NewReader(bytesData)) } else { req, _ = http.NewRequest("POST", "http://192.168.5.251:9532/"+"jsyb/3501", bytes.NewReader(bytesData)) } resp, _ := client.Do(req) defer resp.Body.Close() body, ioErr := ioutil.ReadAll(resp.Body) if ioErr != nil { utils.ErrorLog("接口返回数据读取失败: %v", ioErr) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var respJSON map[string]interface{} if err := json.Unmarshal([]byte(body), &respJSON); err != nil { utils.ErrorLog("接口返回数据解析JSON失败: %v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } var res ResultSix var resSix10265 ResultSix10265 //1101结果 respJSON = respJSON["data"].(map[string]interface{})["request_log"].(map[string]interface{}) result, _ := json.Marshal(respJSON) if err := json.Unmarshal([]byte(result), &resSix10265); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } res.InfRefmsgid = resSix10265.InfRefmsgid res.Output = resSix10265.Output res.ErrMsg = resSix10265.ErrMsg res.Cainfo = resSix10265.Cainfo res.WarnMsg = resSix10265.WarnMsg infocode, _ := strconv.ParseInt(resSix10265.Infcode, 10, 64) res.Infcode = infocode if infocode == 0 { c.ServeSuccessJSON(map[string]interface{}{ "msg": "上传成功", }) return } else { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.ErrMsg, }) return } }