package sz import ( "encoding/json" "fmt" "gdyb/controllers" "gdyb/enums" "gdyb/models" "gdyb/service" "gdyb/utils" "github.com/astaxie/beego" "math" "math/rand" "strconv" "strings" //"strings" "syscall" "time" "unsafe" ) type Result struct { Transtime string `json:"transTime"` Transtype string `json:"transType"` Transreturncode string `json:"transReturnCode"` Transreturnmessage string `json:"transReturnMessage"` Transversion string `json:"transVersion"` Serialnumber string `json:"serialNumber"` Cardarea string `json:"cardArea"` Hospitalcode string `json:"hospitalCode"` Operatorcode string `json:"operatorCode"` Operatorname string `json:"operatorName"` Operatorpass string `json:"operatorPass"` Transbody struct { Akc190 string `json:"akc190"` Listsize int `json:"listsize"` Outputlist []struct { Aae072 string `json:"aae072"` Bkc369 string `json:"bkc369"` Bkf500 string `json:"bkf500"` Aka111 string `json:"aka111"` Ake001 string `json:"ake001"` Ake002 string `json:"ake002"` Bkm017 string `json:"bkm017"` Ake005 string `json:"ake005"` Ake006 string `json:"ake006"` Akc225 float64 `json:"akc225"` Akc226 float64 `json:"akc226"` Akc264 float64 `json:"akc264"` Aka065 string `json:"aka065"` Cka319 float64 `json:"cka319"` Akc268 float64 `json:"akc268"` } `json:"outputlist"` } `json:"transBody"` Verifycode string `json:"verifyCode"` Extenddeviceid string `json:"extendDeviceId"` Transchannel string `json:"transChannel"` Extenduserid string `json:"extendUserId"` Extendserialnumber string `json:"extendSerialNumber"` Caz055 string `json:"caz055"` Aae501 string `json:"aae501"` } type ResultOne struct { Transtime string `json:"transTime"` Transtype string `json:"transType"` Transreturncode string `json:"transReturnCode"` Transreturnmessage string `json:"transReturnMessage"` Transversion string `json:"transVersion"` Serialnumber string `json:"serialNumber"` Cardarea string `json:"cardArea"` Hospitalcode string `json:"hospitalCode"` Operatorcode string `json:"operatorCode"` Operatorname string `json:"operatorName"` Operatorpass string `json:"operatorPass"` Transbody struct { Ckc618 string `json:"ckc618"` Akc264 float64 `json:"akc264"` Akb068 int `json:"akb068"` Akb066 float64 `json:"akb066"` Akb067 int `json:"akb067"` Aae240 float64 `json:"aae240"` Outputlist []struct { Aaa036 string `json:"aaa036"` Aae019 float64 `json:"aae019"` } `json:"outputlist"` Outputlist2 []interface{} `json:"outputlist2"` } `json:"transBody"` Verifycode string `json:"verifyCode"` Extenddeviceid string `json:"extendDeviceId"` Transchannel string `json:"transChannel"` Extenduserid string `json:"extendUserId"` Extendserialnumber string `json:"extendSerialNumber"` Caz055 string `json:"caz055"` Aae501 string `json:"aae501"` } type ResultTwo struct { Transtime string `json:"transTime"` Transtype string `json:"transType"` Transreturncode string `json:"transReturnCode"` Transreturnmessage string `json:"transReturnMessage"` Transversion string `json:"transVersion"` Serialnumber string `json:"serialNumber"` Cardarea string `json:"cardArea"` Hospitalcode string `json:"hospitalCode"` Operatorcode string `json:"operatorCode"` Operatorname string `json:"operatorName"` Operatorpass string `json:"operatorPass"` Transbody struct { Ckc618 string `json:"ckc618"` Akc264 float64 `json:"akc264"` Akb068 float64 `json:"akb068"` Akb066 float64 `json:"akb066"` Akb067 float64 `json:"akb067"` Aae240 float64 `json:"aae240"` Outputlist1 []struct { Aka111 string `json:"aka111"` Bka058 float64 `json:"bka058"` } `json:"outputlist1"` Outputlist2 []struct { Aaa036 string `json:"aaa036"` Aae019 float64 `json:"aae019"` } `json:"outputlist2"` Outputlist3 []interface{} `json:"outputlist3"` } `json:"transBody"` Verifycode string `json:"verifyCode"` Extenddeviceid string `json:"extendDeviceId"` Transchannel string `json:"transChannel"` Extenduserid string `json:"extendUserId"` Extendserialnumber string `json:"extendSerialNumber"` Caz055 string `json:"caz055"` Aae501 string `json:"aae501"` } type ResultThree struct { Transtime string `json:"transTime"` Transtype string `json:"transType"` Transreturncode string `json:"transReturnCode"` Transreturnmessage string `json:"transReturnMessage"` Transversion string `json:"transVersion"` Serialnumber string `json:"serialNumber"` Cardarea string `json:"cardArea"` Hospitalcode string `json:"hospitalCode"` Operatorcode string `json:"operatorCode"` Operatorname string `json:"operatorName"` Operatorpass string `json:"operatorPass"` Transbody struct { Baz700 string `json:"baz700"` Ckc618 string `json:"ckc618"` } `json:"transBody"` Verifycode string `json:"verifyCode"` Extenddeviceid string `json:"extendDeviceId"` Transchannel string `json:"transChannel"` Extenduserid string `json:"extendUserId"` Extendserialnumber string `json:"extendSerialNumber"` Caz055 string `json:"caz055"` Aae501 string `json:"aae501"` } type ResultFour struct { Transtime string `json:"transTime"` Transtype string `json:"transType"` Transreturncode string `json:"transReturnCode"` Transreturnmessage string `json:"transReturnMessage"` Transversion string `json:"transVersion"` Serialnumber string `json:"serialNumber"` Cardarea string `json:"cardArea"` Hospitalcode string `json:"hospitalCode"` Operatorcode string `json:"operatorCode"` Operatorname string `json:"operatorName"` Operatorpass string `json:"operatorPass"` Transbody struct { Akc190 string `json:"akc190"` Akc194 float64 `json:"akc194"` Bae917 int64 `json:"bae917"` Aka018 string `json:"aka018"` Aka030 string `json:"aka030"` Ckc618 string `json:"ckc618"` Akc264 float64 `json:"akc264"` Akb068 float64 `json:"akb068"` Akb066 float64 `json:"akb066"` Akb067 float64 `json:"akb067"` Cke298 float64 `json:"cke298"` Aae240 float64 `json:"aae240"` Outputlist2 []struct { Aka111 string `json:"aka111"` Bka058 float64 `json:"bka058"` } `json:"outputlist2"` Outputlist3 []struct { Aaa036 string `json:"aaa036"` Aae019 float64 `json:"aae019"` } `json:"outputlist3"` } `json:"transBody"` Verifycode string `json:"verifyCode"` Extenddeviceid string `json:"extendDeviceId"` Transchannel string `json:"transChannel"` Extenduserid string `json:"extendUserId"` Extendserialnumber string `json:"extendSerialNumber"` Caz055 string `json:"caz055"` Aae501 string `json:"aae501"` } type ResultFive struct { Transtime string `json:"transTime"` Transtype string `json:"transType"` Transreturncode string `json:"transReturnCode"` Transreturnmessage string `json:"transReturnMessage"` Transversion string `json:"transVersion"` Serialnumber string `json:"serialNumber"` Cardarea string `json:"cardArea"` Hospitalcode string `json:"hospitalCode"` Operatorcode string `json:"operatorCode"` Operatorname string `json:"operatorName"` Operatorpass string `json:"operatorPass"` Transbody struct { Akc190 string `json:"akc190"` Listsize int `json:"listsize"` Outputlist []struct { Aae072 string `json:"aae072"` Bkf500 string `json:"bkf500"` Baz700 string `json:"baz700"` Bce574 string `json:"bce574"` } `json:"outputlist"` } `json:"transBody"` Verifycode string `json:"verifyCode"` Extenddeviceid string `json:"extendDeviceId"` Transchannel string `json:"transChannel"` Extenduserid string `json:"extendUserId"` Extendserialnumber string `json:"extendSerialNumber"` Caz055 string `json:"caz055"` Aae501 string `json:"aae501"` } type SZHisApiController struct { controllers.BaseAuthAPIController } func SZHisManagerApiRegistRouters() { //挂号 beego.Router("/sz/api/register/get", &SZHisApiController{}, "get:GetRegisterInfo") //上传明细,预结算 beego.Router("/sz/api/upload/get", &SZHisApiController{}, "get:GetUploadInfo") //结算 beego.Router("/sz/api/settle/get", &SZHisApiController{}, "get:GetSettleInfo") //退费 beego.Router("/sz/api/refund/get", &SZHisApiController{}, "get:Refund") beego.Router("/sz/api/monthrefund/get", &SZHisApiController{}, "get:MonthRefund") //查询交易 beego.Router("/sz/api/settle/query", &SZHisApiController{}, "get:GetSettleAccounts") //撤销明细 beego.Router("/sz/api/detail/cancel", &SZHisApiController{}, "get:CancelOrderDetail") //机构药品目录备案 beego.Router("/sz/api/drug/get", &SZHisApiController{}, "get:GetDrugList") //协议机构诊疗项目 beego.Router("/sz/api/treatment/get", &SZHisApiController{}, "get:GetTreatmentProject") //协议机构目录 beego.Router("/sz/api/revocation/get", &SZHisApiController{}, "get:GetRevocation") //定点机构约定信息查询 //beego.Router("/sz/api/information/query/get",&SZHisApiController{},"get:GetInformationQuery") //-医药师信息登记 beego.Router("/sz/api/doctor/get", &SZHisApiController{}, "get:GetDoctorList") //医药师执业状态变更 beego.Router("/sz/api/medical/get", &SZHisApiController{}, "get:GetMedicalList") //医药师信息更新 beego.Router("/sz/api/update/medical/get", &SZHisApiController{}, "get:GetUpdateMedicalList") } func IntPtr(n int) uintptr { return uintptr(n) } func StrPtr(s string) uintptr { return uintptr(unsafe.Pointer(syscall.StringBytePtr(s))) } type Custom struct { DetItemFeeSumamt string Cut string FeedetlSn string Price string MedListCodg string Type int64 AdviceId int64 ProjectId int64 ItemId int64 } //获取读卡信息 -- 门诊挂号 func (c *SZHisApiController) GetRegisterInfo() { adminInfo := c.GetAdminUserInfo() admin_user_id, _ := c.GetInt64("admin_user_id") patient_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") is_yidi, _ := c.GetInt64("is_yidi") 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 } var patient service.Patients if patient_id == 0 { patient, _ = service.GetPatientByIDCard(id_card, adminInfo.CurrentOrgId) } else { patient, _ = service.GetPatientByIDTwo(adminInfo.CurrentOrgId, patient_id) } miConfig, _ := service.FindMedicalInsuranceInfo(adminInfo.CurrentOrgId) if patient.ID == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePatientNoExist) return } if len(patient.IdCardNo) == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeIDCartNo) return } adminRole, _ := service.GetAdminUserInfoByID(adminInfo.CurrentOrgId, admin_user_id) his, _ := service.GetHisPatientInfo(adminInfo.CurrentOrgId, patient_id, theTime.Unix()) var custom_code string var custom_project_name string var allPrice float64 switch register_type { case 1: custom_code = "110100002" custom_project_name = "普通门诊" allPrice = registration_fee + medical_expenses break case 3: custom_code = "110200002-2" custom_project_name = "主任医师" allPrice = registration_fee + medical_expenses break case 2: custom_code = "110200002-3" custom_project_name = "副主任医师" allPrice = registration_fee + medical_expenses break case 4: custom_code = "0" custom_project_name = "免受诊金" allPrice = 0 break case 5: custom_code = "110200002-1" custom_project_name = "专家" allPrice = registration_fee + medical_expenses break } if his.ID == 0 { var doctor_name string var doctor_code string if adminRole.ID == 0 { doctor_name = "黄亦轩" doctor_code = "1001" } else { doctor_name = adminRole.UserName doctor_code = strconv.FormatInt(admin_user_id, 10) } month := time.Unix(1557042972, 0).Format("1") year := time.Now().Format("2006") month = time.Now().Format("01") day := time.Now().Format("02") //流水号 // number := miConfig.Code + year + month + day + fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) // 定点协议机构编码(5位)+日期(8位)+流水号(7位) mz_number := year + month + day + strconv.FormatInt(patient_id, 10) + fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) //number := miConfig.Code + year + month + day + "1590000" verifyCode, version_code := ReadCardGetCode("MZ002" + "|" + number + "|" + miConfig.Code) //verifyCode := "000000|4c871a545d1006754246a50a85c3a353" //version_code := "V0.3" //1.判断读卡类型 //2.读卡 获取交易验证码,医疗证号,发卡地区行政区划代码 //yiliao_number, id_card_number,verifyCode, err, ret4 := ReadBasCardGetNumber(number) yiliao_number := "%GAAFSAKSXSUKKWDKHDAD?;07734724145330238292?" //id_card_number := "142729195704031523" dept_code := "0305" ret4 := 0 is_yidi = 1 if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException) return } if ret4 == 0 { //本地卡流程 if is_yidi == 1 { //本地就医流程 //根据业务的人员信息跟设备读社保卡获取的信息进行匹配,判断是否为同一个人,相同则进行挂号操作,不同则报错 //tempPatient, _ := service.GetPatientByNumber(id_card_number, adminInfo.CurrentOrgId) //if tempPatient.ID == patient_id { //挂号 resp_result := service.SzybMZ002(doctor_name, doctor_code, miConfig.Code, dept_code, yiliao_number, verifyCode, number, mz_number, version_code, custom_code, custom_project_name, allPrice) var dat map[string]interface{} if err := json.Unmarshal([]byte(resp_result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) var res ResultOne if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Transreturncode == "00000000" { 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(), Iinfo: resp_result, PatientId: patient.ID, RecordDate: theTime.Unix(), UserOrgId: adminInfo.CurrentOrgId, AdminUserId: admin_user_id, IsReturn: 1, IdCardType: id_card_type, Doctor: doctor, Departments: department, YiliaoNumber: yiliao_number, MzNumber: number, Number: mz_number, } service.CreateHisPatientTwo(&his) c.ServeSuccessJSON(map[string]interface{}{ "msg": "挂号成功", }) } else { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } } else { //异地就医流程 //异地走鉴权流程 //authResult := CardAuth(number) //fmt.Println(authResult) //tempPatient, _ := service.GetPatientByNumber(id_card_number, adminInfo.CurrentOrgId) //if tempPatient.ID == patient_id { resp_result := service.SzybMZ002(doctor_name, doctor_code, miConfig.Code, "0305", yiliao_number, verifyCode, number, mz_number, version_code, custom_code, custom_project_name, allPrice) var dat map[string]interface{} if err := json.Unmarshal([]byte(resp_result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) var res ResultOne if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Transreturncode == "00000000" { 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(), Iinfo: resp_result, PatientId: patient.ID, RecordDate: theTime.Unix(), UserOrgId: adminInfo.CurrentOrgId, AdminUserId: admin_user_id, IsReturn: 1, IdCardType: id_card_type, Doctor: doctor, Departments: department, YiliaoNumber: yiliao_number, MzNumber: number, Number: mz_number, } service.CreateHisPatientTwo(&his) c.ServeSuccessJSON(map[string]interface{}{ "msg": "挂号成功", }) } else { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } //} } } else { //异地卡流程 //readCardBasResult := ReadCardBasHSM(number) //fmt.Println(readCardBasResult) //是否异地就医,是的话走鉴权流程,不是的话走门诊挂号 if is_yidi == 1 { //1本地就医 resp_result := service.SzybMZ002(doctor_name, doctor_code, miConfig.Code, "0305", yiliao_number, verifyCode, number, mz_number, version_code, custom_code, custom_project_name, allPrice) var dat map[string]interface{} if err := json.Unmarshal([]byte(resp_result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) var res ResultOne if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Transreturncode == "00000000" { 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(), Iinfo: resp_result, PatientId: patient.ID, RecordDate: theTime.Unix(), UserOrgId: adminInfo.CurrentOrgId, AdminUserId: admin_user_id, IsReturn: 1, IdCardType: id_card_type, Doctor: doctor, Departments: department, YiliaoNumber: yiliao_number, MzNumber: number, Number: mz_number, } service.CreateHisPatientTwo(&his) c.ServeSuccessJSON(map[string]interface{}{ "msg": "挂号成功", }) } else { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } } else { //异地就医需要走鉴权流程 //authResult := CardAuth(number) //fmt.Println(authResult) resp_result := service.SzybMZ002(doctor_name, doctor_code, miConfig.Code, "0305", yiliao_number, verifyCode, number, mz_number, version_code, custom_code, custom_project_name, allPrice) var dat map[string]interface{} if err := json.Unmarshal([]byte(resp_result), &dat); err == nil { fmt.Println(dat) } else { fmt.Println(err) } userJSONBytes, _ := json.Marshal(dat) var res ResultOne if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Transreturncode == "00000000" { 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(), Iinfo: resp_result, PatientId: patient.ID, RecordDate: theTime.Unix(), UserOrgId: adminInfo.CurrentOrgId, AdminUserId: admin_user_id, IsReturn: 1, IdCardType: id_card_type, Doctor: doctor, Departments: department, YiliaoNumber: yiliao_number, MzNumber: number, Number: mz_number, } service.CreateHisPatientTwo(&his) c.ServeSuccessJSON(map[string]interface{}{ "msg": "挂号成功", }) } else { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } } } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeRegisterRepeatException) return } } //上传明细----预结算----确认订单 func (c *SZHisApiController) GetUploadInfo() { patient_id, _ := c.GetInt64("patient_id") record_time := c.GetString("record_time") settle_accounts_type, _ := c.GetInt64("settle_accounts_type") admin_user_id, _ := c.GetInt64("admin_user_id") timestamp := time.Now().Unix() tempTime := time.Unix(timestamp, 0) timeFormat := tempTime.Format("20060102150405") chrgBchno := rand.Intn(10000) + 1000 chrg_bchno := timeFormat + strconv.FormatInt(int64(chrgBchno), 10) + strconv.FormatInt(1, 10) adminUser := c.GetAdminUserInfo() miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) month := time.Unix(1557042972, 0).Format("1") year := time.Now().Format("2006") month = time.Now().Format("01") day := time.Now().Format("02") timeLayout := "2006-01-02" loc, _ := time.LoadLocation("Local") 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() var prescriptions []*models.HisPrescription var start_time int64 var end_time int64 if settle_accounts_type == 1 { //日结 prescriptions, _ = service.GetHisPrescription(adminUser.CurrentOrgId, patient_id, recordDateTime) } 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, patient_id, recordStartTime, recordEndTime) } var ids []int64 for _, item := range prescriptions { ids = append(ids, item.ID) } patientPrescription, _ := service.FindPatientPrescriptionInfo(adminUser.CurrentOrgId, patient_id, recordDateTime) adminRole_two, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, patientPrescription.DoctorId) adminRole, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) his, err := service.GetHisPatientInfo(adminUser.CurrentOrgId, patient_id, recordDateTime) //number := his.MzNumber mz_number := his.Number number := miConfig.Code + year + month + day + fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) // 定点协议机构编码(5位)+日期(8位)+流水号(7位) //number := miConfig.Code + year + month + day + "1590003" var doctor_name string var doctor_code string var drug_doctor_code string drug_doctor_code = adminRole_two.DoctorCode drug_doctor_name := adminRole_two.UserName if adminRole.ID == 0 { doctor_name = "黄亦轩" doctor_code = "1" } else { doctor_name = adminRole.UserName doctor_code = strconv.FormatInt(admin_user_id, 10) } verifyCode, version_code := ReadCardGetCode("FY001" + "|" + number + "|" + miConfig.Code) //verifyCode := "000000|bf885fa312a7f92861d6b61542a637fa" //version_code := "V0.3" var customs []*models.CustomDetail for _, item := range prescriptions { fmt.Println("111111") if item.Type == 1 { //药品 fmt.Println("222222") for _, subItem := range item.HisDoctorAdviceInfo { fmt.Println(subItem.BaseDrugLib.MedicalInsuranceNumber) if len(subItem.BaseDrugLib.MedicalInsuranceNumber) > 0 { fmt.Println("3333333") _, dose_code := service.GetDoseCode(subItem.BaseDrugLib.DrugDosageForm, adminUser.CurrentOrgId) detItemFeeSumamt, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", subItem.Price*subItem.PrescribingNumber), 64) price, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", subItem.Price), 64) cus := &models.CustomDetail{ PrescriptionNumber: chrg_bchno, OrderType: "1", ChargeSerialNumber: subItem.FeedetlSn, Code: subItem.BaseDrugLib.MedicalInsuranceNumber, CodeName: subItem.BaseDrugLib.DrugName, Flag: "1", Price: price, Count: subItem.PrescribingNumber, ChargeOrderDate: year + month + day, DoctorCode: doctor_code, Total: detItemFeeSumamt, DoseCode: dose_code, Spec: subItem.BaseDrugLib.DrugSpec, } customs = append(customs, cus) } } } if item.Type == 2 { //项目 for _, subItem := range item.HisPrescriptionProject { if len(subItem.HisProject.MedicalCode) > 0 { detItemFeeSumamt, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", subItem.Price*float64(subItem.Count)), 64) count, _ := strconv.ParseFloat(fmt.Sprintf("%f", subItem.Count), 64) cus := &models.CustomDetail{ PrescriptionNumber: chrg_bchno, OrderType: "1", ChargeSerialNumber: subItem.FeedetlSn, Code: subItem.HisProject.MedicalCode, CodeName: subItem.HisProject.ProjectName, Flag: "1", Price: subItem.Price, Count: count, ChargeOrderDate: year + month + day, DoctorCode: doctor_code, Total: detItemFeeSumamt, DoseCode: "", Spec: "", } customs = append(customs, cus) } } } // //for _, subItem := range item.HisAdditionalCharge { // if len(subItem.XtHisAddtionConfig.Code) > 0 { // detItemFeeSumamt, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", subItem.Price*float64(subItem.Count)), 64) // // count, _ := strconv.ParseFloat(fmt.Sprintf("%f", subItem.Count), 64) // cus := &models.CustomDetail{ // PrescriptionNumber: chrg_bchno, // OrderType: "1", // ChargeSerialNumber: subItem.FeedetlSn, // Code: subItem.XtHisAddtionConfig.Code, // CodeName: subItem.XtHisAddtionConfig.Name, // Flag: "1", // Price: subItem.Price, // Count: count, // ChargeOrderDate: year + month + day, // DoctorCode: doctor_code, // Total: detItemFeeSumamt, // DoseCode: "", // Spec: subItem.XtHisAddtionConfig., // } // customs = append(customs, cus) // } //} } var pagesize int = 50 var start int = 1 var stop int var pagecount int var curpage int var isSuccess bool = true //总页数,向上取整,注意除之前要先转换类型为float64 pagecount = int(math.Ceil(float64(len(customs)) / float64(pagesize))) var ress []*Result for curpage = 1; curpage <= pagecount; curpage++ { if curpage == 1 { start = 1 } else { start = (curpage-1)*pagesize + 1 } stop = curpage * pagesize if stop > len(customs) { stop = len(customs) } result := service.SzybFY001(doctor_name, doctor_code, miConfig.Code, customs[start-1:stop], verifyCode, number, mz_number, version_code, drug_doctor_code) 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) var res Result if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Transreturncode == "00000000" { ress = append(ress, &res) } else { isSuccess = false //预结算报错 errlog := &models.HisOrderError{ UserOrgId: adminUser.CurrentOrgId, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Number: chrg_bchno, ErrMsg: res.Transreturnmessage, Status: 1, PatientId: patient_id, RecordTime: recordDateTime, Stage: 10, } service.CreateErrMsgLog(errlog) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) //c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePreSettleFaildParamWrong) return } //设置变量,根据变量的值来判断上传是否成功 } if isSuccess == true { order := &models.HisOrder{ UserOrgId: adminUser.CurrentOrgId, HisPatientId: 0, PatientId: patient_id, SettleAccountsDate: recordDateTime, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Status: 1, Number: chrg_bchno, Infcode: 0, WarnMsg: "", Cainfo: "", ErrMsg: "", RespondTime: "", InfRefmsgid: "", OrderStatus: 1, IsMedicineInsurance: 1, SettleType: settle_accounts_type, SettleStartTime: start_time, SettleEndTime: end_time, Creator: admin_user_id, Modify: admin_user_id, OrgSetlNumber: number, } data, _ := json.Marshal(ress) order.DetailLog = string(data) err = service.CreateOrder(order) if err != nil { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeCreatePreOrderException) return } for _, subItem := range ress { for _, item := range subItem.Transbody.Outputlist { temp := strings.Split(item.Bkf500, "-") 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.Aae072, UploadDate: time.Now().Unix(), AdviceId: advice_id, DetItemFeeSumamt: item.Akc264, Cnt: item.Akc226, Pric: float64(item.Akc225), PatientId: patient_id, Status: 1, ChrgitmLv: item.Aka065, Mtime: time.Now().Unix(), Ctime: time.Now().Unix(), UserOrgId: adminUser.CurrentOrgId, OrderId: order.ID, ProjectId: project_id, Type: types, OverPricPsnPay: item.Akc268, AllowReimburse: item.Cka319, } service.CreateOrderInfo(info) } } service.UpDatePrescriptionNumber(adminUser.CurrentOrgId, ids, chrg_bchno) service.UpDatePrescriptionInfoNumber(adminUser.CurrentOrgId, 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 { total = total + (subItem.Price * float64(subItem.Count)) } } } for _, item := range prescriptions { for _, subItem := range item.HisAdditionalCharge { total = total + (subItem.Price * float64(subItem.Count)) } } verifyCode, version_code := ReadCardGetCode("FY004" + "|" + number + "|" + miConfig.Code) //verifyCode := "000000|08728e77da60a4857803af17aba9caae" //version_code := "V0.3" result_two := service.SzybFY004(doctor_name, doctor_code, miConfig.Code, total, verifyCode, number, mz_number, version_code, drug_doctor_code, drug_doctor_name) var dat map[string]interface{} if err := json.Unmarshal([]byte(result_two), &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.Transreturncode == "00000000" { c.ServeSuccessJSON(map[string]interface{}{ "msg": "预结算成功", }) } else { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) //c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePreSettleFaildParamWrong) return } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePreSettleFaildParamWrong) return } } //结算 func (c *SZHisApiController) GetSettleInfo() { patient_id, _ := c.GetInt64("id") order_id, _ := c.GetInt64("order_id") record_time := c.GetString("record_time") 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") 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 data := make(map[string]interface{}) if settle_accounts_type == 1 { //日结 prescriptions, _ = service.GetHisPrescription(adminUser.CurrentOrgId, patient_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() 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() prescriptions, _ = service.GetMonthHisPrescription(adminUser.CurrentOrgId, patient_id, recordStartTime, recordEndTime) data["pre"] = prescriptions } roles, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) his, _ := service.GetVMHisPatientInfo(adminUser.CurrentOrgId, patient_id, recordDateTime) miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) strconv.FormatInt(his.PatientId, 10) order_src, _ := service.GetHisOrderByID(order_id) config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId) if config.IsOpen == 1 { //对接了医保,走医保流程 if order_src.OrderStatus != 2 { 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)) } } patientPrescription, _ := service.FindPatientPrescriptionInfo(adminUser.CurrentOrgId, patient_id, recordDateTime) adminRole_two, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, patientPrescription.DoctorId) var drug_doctor string drug_doctor = adminRole_two.DoctorCode drug_doctor_name := adminRole_two.UserName //结算流程 var doctor_name string var doctor_code string if roles.ID == 0 { doctor_name = "黄亦轩" doctor_code = "1010" } else { doctor_name = roles.UserName doctor_code = strconv.FormatInt(admin_user_id, 10) } number := order_src.OrgSetlNumber mz_number := his.Number verifyCode, version_code := ReadCardGetCode("FY005" + "|" + number + "|" + miConfig.Code) //verifyCode := "000000|707c35a62c2f0609d7b0a811649f3913" //version_code := "V0.3" //yiliao_number, id_card_number,verifyCode,versionCode, err, ret4 := ReadBasCardGetNumber("FY005" + "|" + number + "|" + miConfig.Code) yiliao_number := his.YiliaoNumber result_three := service.SzybFY005(doctor_name, doctor_code, miConfig.Code, total, yiliao_number, verifyCode, number, mz_number, version_code, drug_doctor, drug_doctor_name) var dat map[string]interface{} if err := json.Unmarshal([]byte(result_three), &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.Transreturncode == "00000000" { order_src.OrderStatus = 2 order_src.PayWay = pay_way order_src.PayPrice = pay_price order_src.PayCardNo = pay_card_no order_src.DiscountPrice = discount_price order_src.PreferentialPrice = preferential_price order_src.RealityPrice = reality_price order_src.FoundPrice = found_price order_src.MedicalInsurancePrice = medical_insurance_price order_src.PrivatePrice = private_price order_src.Creator = order_src.Creator order_src.Modify = roles.ID order_src.MedfeeSumamt = res.Transbody.Akc264 order_src.SetlId = res.Transbody.Ckc618 order_src.FundPaySumamt = res.Transbody.Akb068 order_src.AcctPay = res.Transbody.Akb066 order_src.PsnCashPay = res.Transbody.Akb067 order_src.PsnPartAmt = res.Transbody.Akb067 order_src.AccountPrice = res.Transbody.Aae240 order_src.MzNumber = mz_number order_src.YiliaoNumber = yiliao_number setlDetailOne, _ := json.Marshal(res.Transbody.Outputlist1) detailStrOne := string(setlDetailOne) order_src.SzChargeInfo = detailStrOne setlDetailTwo, _ := json.Marshal(res.Transbody.Outputlist2) detailStrTwo := string(setlDetailTwo) order_src.SzProjectInfo = detailStrTwo setlDetailThree, _ := json.Marshal(res.Transbody.Outputlist3) detailStrThree := string(setlDetailThree) order_src.SzMedicineInsuranceInfo = detailStrThree order_src.Cainfo = result_three err = service.UpdataOrderStatusTwo(order_src.Number, adminUser.CurrentOrgId) err = service.UpDateOrder(order_src) c.ServeSuccessJSON(map[string]interface{}{ "msg": "结算成功", }) } else { //version_code := "0.03" c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) } } else { //错误提示 } } else { //错误提示 } } //当月退费 func (c *SZHisApiController) Refund() { order_id, _ := c.GetInt64("order_id") record_time := c.GetString("record_time") patient_id, _ := c.GetInt64("patient_id") admin_user_id, _ := c.GetInt64("admin_user_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() fmt.Println(recordDateTime) var order models.HisOrder order, _ = service.GetHisOrderByID(order_id) if order.ID == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisOrderNoExistParamWrong) return } his, _ := service.GetHisPatientInfo(adminUser.CurrentOrgId, patient_id, theTime.Unix()) roles, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) //结算流程 var doctor_name string var doctor_code string if roles.ID == 0 { doctor_name = "黄亦轩" doctor_code = "1001" } else { doctor_name = roles.UserName doctor_code = strconv.FormatInt(admin_user_id, 10) } month := time.Unix(1557042972, 0).Format("1") year := time.Now().Format("2006") month = time.Now().Format("01") day := time.Now().Format("02") //number := miConfig.Code + year + month + day + "1367866" number := miConfig.Code + year + month + day + fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) // 定点协议机构编码(5位)+日期(8位)+流水号(7位) //number := miConfig.Code + year + month + day + "1590003" //流水号 //number_two := miConfig.Code + "-" + year + month + day + "-" + strconv.FormatInt(patient_id, 10) verifyCode, version_code := ReadCardGetCode("JY002" + "|" + number + "|" + miConfig.Code) //version_code := "V0.3" // //verifyCode := "000000|9972fca7ba9471c7dbe08324b2e31f70" config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId) if config.IsOpen == 1 { //对接了医保,走医保流程 result := service.SzybJY002(doctor_name, doctor_code, miConfig.Code, order.OrgSetlNumber, order.MzNumber, verifyCode, number, version_code) 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) var res ResultThree if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Transreturncode == "00000000" { service.UpdataOrderlog(order_id, adminUser.CurrentOrgId, result) service.UpdataOrderStatusSZ(order_id, order.Number, adminUser.CurrentOrgId, his.MzNumber, his.Number) c.ServeSuccessJSON(map[string]interface{}{ "msg": "退费成功", }) } else { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) } } } //跨月退费 func (c *SZHisApiController) MonthRefund() { order_id, _ := c.GetInt64("order_id") record_time := c.GetString("record_time") patient_id, _ := c.GetInt64("patient_id") admin_user_id, _ := c.GetInt64("admin_user_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() var order models.HisOrder order, _ = service.GetHisOrderByID(order_id) if order.ID == 0 { order, _ = service.GetHisOrderThree(recordDateTime, patient_id, adminUser.CurrentOrgId) } roles, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) //结算流程 var doctor_name string var doctor_code string if roles.ID == 0 { doctor_name = "黄亦轩" doctor_code = "1001" } else { doctor_name = roles.UserName doctor_code = strconv.FormatInt(admin_user_id, 10) } month := time.Unix(1557042972, 0).Format("1") year := time.Now().Format("2006") month = time.Now().Format("01") day := time.Now().Format("02") //流水号 number_two := miConfig.Code + "-" + year + month + day + "-" + strconv.FormatInt(patient_id, 10) //verifyCode,version_code := ReadCardGetCode("JY002" + "|" + number_two + "|" + miConfig.Code) version_code := "0.03" fmt.Println(number_two) verifyCode := "000000|0872038667cc34efdc35ce4668589a5f" config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId) if config.IsOpen == 1 { //对接了医保,走医保流程 result := service.SzybJY003(doctor_name, doctor_code, miConfig.Code, order.OrgSetlNumber, order.MzNumber, verifyCode, version_code) 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) var res ResultThree if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Transreturncode == "00000000" { c.ServeSuccessJSON(map[string]interface{}{ "msg": "退费成功", }) } else { } } } //查询 func (c *SZHisApiController) GetSettleAccounts() { order_id, _ := c.GetInt64("order_id") record_time := c.GetString("record_time") patient_id, _ := c.GetInt64("patient_id") admin_user_id, _ := c.GetInt64("admin_user_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() var order models.HisOrder order, _ = service.GetHisOrderByID(order_id) if order.ID == 0 { order, _ = service.GetHisOrderThree(recordDateTime, patient_id, adminUser.CurrentOrgId) } roles, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) //结算流程 var doctor_name string var doctor_code string if roles.ID == 0 { doctor_name = "黄亦轩" doctor_code = "1001" } else { doctor_name = roles.UserName doctor_code = strconv.FormatInt(admin_user_id, 10) } //month := time.Unix(1557042972, 0).Format("1") //year := time.Now().Format("2006") //month = time.Now().Format("01") //day := time.Now().Format("02") //流水号 //number_two := miConfig.Code + "-" + year + month + day + "-" + strconv.FormatInt(patient_id, 10) //fmt.Println(number_two) verifyCode, version_code := ReadCardGetCode("JY001" + "|" + order.OrgSetlNumber + "|" + miConfig.Code) //version_code := "V0.3" //verifyCode := "000000|2c9854287e7c3cbc34439ab8e5157816" config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId) if config.IsOpen == 1 { //对接了医保,走医保流程 result := service.SzybJY001(doctor_name, doctor_code, miConfig.Code, order.OrgSetlNumber, order.MzNumber, verifyCode, version_code) 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) var res ResultFour if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Transreturncode == "00000000" { c.ServeSuccessJSON(map[string]interface{}{}) } else { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) } } } //费用录入取消 func (c *SZHisApiController) CancelOrderDetail() { order_id, _ := c.GetInt64("order_id") record_time := c.GetString("record_time") patient_id, _ := c.GetInt64("patient_id") admin_user_id, _ := c.GetInt64("admin_user_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() var order models.HisOrder order, _ = service.GetHisOrderByID(order_id) if order.ID == 0 { order, _ = service.GetHisOrderThree(recordDateTime, patient_id, adminUser.CurrentOrgId) } order_infos, _ := service.GetHisOrderInfoByNumber(order.Number) roles, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) miConfig, _ := service.FindMedicalInsuranceInfo(adminUser.CurrentOrgId) //结算流程 var doctor_name string var doctor_code string if roles.ID == 0 { doctor_name = "黄亦轩" doctor_code = "1001" } else { doctor_name = roles.UserName doctor_code = strconv.FormatInt(admin_user_id, 10) } var customs []*models.CustomDetail for _, item := range order_infos { cus := &models.CustomDetail{ PrescriptionNumber: item.OrderNumber, ChargeSerialNumber: item.FeedetlSn, } customs = append(customs, cus) } verifyCode, version_code := ReadCardGetCode("FY002" + "|" + order.OrgSetlNumber + "|" + miConfig.Code) var pagesize int = 50 var start int = 1 var stop int var pagecount int var curpage int var isSuccess bool = true var ress []*ResultFive //总页数,向上取整,注意除之前要先转换类型为float64 pagecount = int(math.Ceil(float64(len(customs)) / float64(pagesize))) for curpage = 1; curpage <= pagecount; curpage++ { if curpage == 1 { start = 1 } else { start = (curpage-1)*pagesize + 1 } stop = curpage * pagesize if stop > len(customs) { stop = len(customs) } result := service.SzybFY002(doctor_name, doctor_code, miConfig.Code, customs[start-1:stop], verifyCode, order.OrgSetlNumber, order.MzNumber, version_code) 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) var res ResultFive if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Transreturncode == "00000000" { ress = append(ress, &res) } else { isSuccess = false //预结算报错 errlog := &models.HisOrderError{ UserOrgId: adminUser.CurrentOrgId, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), ErrMsg: res.Transreturnmessage, Status: 1, PatientId: patient_id, RecordTime: recordDateTime, Stage: 11, } service.CreateErrMsgLog(errlog) c.ServeSuccessJSON(map[string]interface{}{ "faild_code": -10, "msg": res.Transreturnmessage, }) return } } if isSuccess == true { c.ServeSuccessJSON(map[string]interface{}{ "msg": "撤销成功", }) } } //获取verifyCode func ReadCardGetCode(request string) (string, string) { request = request + "|" DllDef2 := syscall.MustLoadDLL("SSCardDriver_SZ.dll") readCards := DllDef2.MustFindProc("iVerifyCode") str := request str3 := make([]byte, 256) ret4, _, _ := readCards.Call(StrPtr(str), (uintptr)(unsafe.Pointer(&str3[0]))) fmt.Println(":", string(str3)) //fmt.Println(":",ConvertByte2String(str3,GB18030) ) if ret4 == 0 { result := string(str3) fmt.Println(result) result_arr := strings.Split(result, "|") verifyCode := result_arr[0] + "|" + result_arr[1] versionCode := result_arr[2] return verifyCode, versionCode } return "", "" } // ////读卡 //func ReadBasCardGetNumber(request string) (string, string, string, string, error, int64) { // DllDef2 := syscall.MustLoadDLL("SSSE32.dll") // readCards := DllDef2.MustFindProc("iReadCardBas") // str := request // // str3 := make([]byte, 256) // ret4, _, err := readCards.Call(IntPtr(3), StrPtr(str), (uintptr)(unsafe.Pointer(&str3[0]))) // fmt.Println(":", string(str3)) // // if ret4 == 0 { // result := string(str3) // fmt.Println(result) // result_arr := strings.Split(result, "|") // //医疗证号 // yiliao_number := result_arr[12] // // //根据业务的人员信息跟设备读社保卡获取的信息进行匹配,判断是否为同一个人,相同则进行挂号操作,不同则报错 // id_card_number := result_arr[1] // // verifyCode := result_arr[11] + result_arr[13] // // versionCode := result_arr[14] // return yiliao_number, id_card_number, verifyCode, versionCode, err, 1 // // } // return "", "", "", "", err, 0 //} // ////iReadCardBas_HSM_Step1 ---- 1903 iCardInnerAuthentication --- iReadCardBas_HSM_Step2 //func ReadCardBasHSM(number string) string { // DllDef2 := syscall.MustLoadDLL("SSSE32.dll") // readCards := DllDef2.MustFindProc("iReadCardBas_HSM_Step1") // str := make([]byte, 256) // ret, _, _ := readCards.Call(IntPtr(3), (uintptr)(unsafe.Pointer(&str[0]))) // fmt.Println(":", string(str)) // // result_arr := strings.Split(string(str), "|") // // if ret == 0 { // readCards := DllDef2.MustFindProc("iCardInnerAuthentication") // str2 := make([]byte, 256) // str3 := "" + "|" + "" + "|" + "440300" + "|" + "" + "|" + "" + "|" + result_arr[1] + "|" + result_arr[2] + "|" + result_arr[3] + "|" + result_arr[4] + "|" + result_arr[5] + "|" + "" + "|" + "" + "|" // ret2, _, _ := readCards.Call(StrPtr(str3), (uintptr)(unsafe.Pointer(&str2[0]))) // fmt.Println(":", string(str2)) // // if ret2 == 0 { // result_arr := strings.Split(string(str2), "|") // // if result_arr[2] == "0" { // readCards := DllDef2.MustFindProc("iReadCardBas_HSM_Step2") // str4 := result_arr[4] + "|" + result_arr[5] // str5 := make([]byte, 256) // ret3, _, _ := readCards.Call(StrPtr(str4), StrPtr(number), (uintptr)(unsafe.Pointer(&str5[0]))) // // if ret3 == 0 { // return string(str5) // // } else { // return "" // } // } else { // return "" // } // } // return "" // } // return "" // //} // ////1904卡鉴权 //func CardAuth(request string) string { // DllDef2 := syscall.MustLoadDLL("SSSE32.dll") // readCards := DllDef2.MustFindProc("iCardAuthentication") // str := request // str3 := make([]byte, 256) // ret4, _, _ := readCards.Call(StrPtr(str), (uintptr)(unsafe.Pointer(&str3[0]))) // fmt.Println(":", string(str3)) // // if ret4 == 0 { // return string(str3) // } // return "" //} func (c *SZHisApiController) GetDrugList() { //获取药品库数据 list, _ := service.GetDrugList(10028) //获取药品剂型 drugs, _ := service.GetDrugDosageForm(10028) for _, item := range list { fmt.Println(item.DrugDosageForm) for _, it := range drugs { fmt.Println("2222", it.Value, it.Name) if item.DrugDosageForm == it.Value { item.DrugDosageName = it.Name } } } fmt.Print("list22222222", list) miConfig, _ := service.FindMedicalInsuranceInfo(10028) var doctor_name string var doctor_code string doctor_name = "黄亦轩" doctor_code = "1001" var pagesize int = 50 var start int = 1 var stop int var pagecount int var curpage int var isSuccess bool = true //总页数,向上取整,注意除之前要先转换类型为float64 pagecount = int(math.Ceil(float64(len(list)) / float64(pagesize))) var ress []*Result for curpage = 1; curpage <= pagecount; curpage++ { if curpage == 1 { start = 1 } else { start = (curpage-1)*pagesize + 1 } stop = curpage * pagesize if stop > len(list) { stop = len(list) } //这里就可以查看开始和结束了 fmt.Println(list[start-1 : stop]) var customs []*models.DrugDetail for _, item := range list { detail := &models.DrugDetail{ MedicalInsuranceNumber: item.MedicalInsuranceNumber, Code: item.Code, DrugName: item.DrugName, DrugSpec: item.DrugSpec, DrugDosageName: item.DrugDosageName, ManufacturerName: item.ManufacturerName, MinUnit: item.MinUnit, RetailPrice: item.RetailPrice, LastPrice: item.LastPrice, LimitRemark: item.LimitRemark, } customs = append(customs, detail) } result := service.SzybML008(doctor_name, doctor_code, miConfig.Code, customs) fmt.Println("reuslt", 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) var res Result if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Transreturncode == "00000000" { ress = append(ress, &res) } else { isSuccess = false //失败 c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePreSettleFaildParamWrong) return } fmt.Println(isSuccess) } } func (c *SZHisApiController) GetTreatmentProject() { //获取药品库数据 list, _ := service.GetDrugList(10028) miConfig, _ := service.FindMedicalInsuranceInfo(10028) var doctor_name string var doctor_code string doctor_name = "黄亦轩" doctor_code = "1001" var pagesize int = 50 var start int = 1 var stop int var pagecount int var curpage int var isSuccess bool = true //总页数,向上取整,注意除之前要先转换类型为float64 pagecount = int(math.Ceil(float64(len(list)) / float64(pagesize))) var ress []*Result for curpage = 1; curpage <= pagecount; curpage++ { if curpage == 1 { start = 1 } else { start = (curpage-1)*pagesize + 1 } stop = curpage * pagesize if stop > len(list) { stop = len(list) } //这里就可以查看开始和结束了 fmt.Println(list[start-1 : stop]) var customs []*models.DrugDetail for _, item := range list { fmt.Println("医疗机构编码", item.MedicalInsuranceNumber) detail := &models.DrugDetail{ MedicalInsuranceNumber: item.MedicalInsuranceNumber, //社保目录 Code: item.Code, //协议机构内部目录编码 DrugName: item.DrugName, //协议机构内部目录名称 DrugSpec: item.DrugSpec, ManufacturerName: item.ManufacturerName, MinUnit: item.MinUnit, RetailPrice: item.RetailPrice, //协议机构内部项目收费价格 LimitRemark: item.LimitRemark, } customs = append(customs, detail) } result := service.SzybML009(doctor_name, doctor_code, miConfig.Code, customs) fmt.Println("reuslt9999999999999999", 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) var res Result if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Transreturncode == "00000000" { ress = append(ress, &res) } else { isSuccess = false //失败 c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePreSettleFaildParamWrong) return } fmt.Println(isSuccess) } } func (c *SZHisApiController) GetRevocation() { //获取药品库数据 list, _ := service.GetDrugList(10028) miConfig, _ := service.FindMedicalInsuranceInfo(10028) var doctor_name string var doctor_code string doctor_name = "黄亦轩" doctor_code = "1001" var pagesize int = 50 var start int = 1 var stop int var pagecount int var curpage int var isSuccess bool = true //总页数,向上取整,注意除之前要先转换类型为float64 pagecount = int(math.Ceil(float64(len(list)) / float64(pagesize))) var ress []*Result for curpage = 1; curpage <= pagecount; curpage++ { if curpage == 1 { start = 1 } else { start = (curpage-1)*pagesize + 1 } stop = curpage * pagesize if stop > len(list) { stop = len(list) } //这里就可以查看开始和结束了 fmt.Println(list[start-1 : stop]) var customs []*models.DrugDetail for _, item := range list { fmt.Println("医疗机构编码", item.MedicalInsuranceNumber) detail := &models.DrugDetail{ MedicalInsuranceNumber: item.MedicalInsuranceNumber, //社保目录 Code: item.Code, //协议机构内部目录编码 DrugName: item.DrugName, //协议机构内部目录名称 DrugSpec: item.DrugSpec, ManufacturerName: item.ManufacturerName, MinUnit: item.MinUnit, RetailPrice: item.RetailPrice, //协议机构内部项目收费价格 LimitRemark: item.LimitRemark, } customs = append(customs, detail) } result := service.SzybML010(doctor_name, doctor_code, miConfig.Code, customs) fmt.Println("reuslt9999999999999999", 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) var res Result if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Transreturncode == "00000000" { ress = append(ress, &res) } else { isSuccess = false //失败 c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePreSettleFaildParamWrong) return } fmt.Println(isSuccess) } } //func (c *SZHisApiController) GetInformationQuery() { // // var doctor_name string // var doctor_code string // // doctor_name = "黄亦轩" // doctor_code = "1001" // miConfig, _ := service.FindMedicalInsuranceInfo(10028) // result := service.SzybML010(doctor_name, doctor_code, miConfig.Code, customs) // fmt.Println("reuslt9999999999999999", 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) // // var res Result // if err := json.Unmarshal(userJSONBytes, &res); err != nil { // utils.ErrorLog("解析失败:%v", err) // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) // return // } // if res.Transreturncode == "00000000" { // ress = append(ress, &res) // } else { // isSuccess = false // //失败 // // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePreSettleFaildParamWrong) // return // } // fmt.Println(isSuccess) // //} func (c *SZHisApiController) GetDoctorList() { //获取所有医生护士信息 list, _ := service.GetDoctorList(10028) //获取所有角色名称 roleList, _ := service.GetRoleList(10028) miConfig, _ := service.FindMedicalInsuranceInfo(10028) for _, item := range list { for _, it := range roleList { if item.RoleId == it.ID { item.Name = it.RoleName } } } var doctor_name string var doctor_code string doctor_name = "黄亦轩" doctor_code = "1001" var pagesize int = 50 var start int = 1 var stop int var pagecount int var curpage int var isSuccess bool = true //总页数,向上取整,注意除之前要先转换类型为float64 pagecount = int(math.Ceil(float64(len(list)) / float64(pagesize))) var ress []*Result for curpage = 1; curpage <= pagecount; curpage++ { if curpage == 1 { start = 1 } else { start = (curpage-1)*pagesize + 1 } stop = curpage * pagesize if stop > len(list) { stop = len(list) } //这里就可以查看开始和结束了 fmt.Println(list[start-1 : stop]) var customs []*models.DocDetail for _, item := range list { fmt.Println("医护类别", item.Name) detail := &models.DocDetail{ UserName: item.UserName, RoleId: item.Name, Sex: "", CardType: "", IdCard: "", Phone: "", WorkMajorName: "", Nation: "", BirthDay: 20201022, WorkTime: 12, Education: "", StudyMajorName: "", CertificateCode: "", //证书编码 MedicalCode: "", //医师资格编码 MedicalRangeCode: "", //医师执业范围代码 MedicalLevel: "", //医生级别 TypeJob: "", //职业类别 DoctorNumber: "", //医师编号 Licensing: "", //职业标志 DoctorServiceStatus: "", //医师医保服务资格状态 MonitoringLevel: "", //监控等级 DrugPsychotropicSubstances: "", //毒麻精神药品资格 HealthCareCode: "", // 母婴保健技术考核合格证书编号 PlanningTechnicalServiceCode: "", //计划生育技术服务人员合格证编号 PharmacistType: "", //药师类别 PharmacistPracticeCategory: "", //药师执业类别 PharmacistsLicensing: "", //药师执业范围 PharmacistRegistrationNumber: "", //执业药师注册证编号 OfficeCode: "", //科室编码 JobNumber: "", //工号 PostName: "", //职位名称 TechnicalJobLevelCode: "", //专业技术职务级别编码 IsActive: "", //在职与否 PrescriptionQualificationIdentification: "", //处方资格标识 IdentificationOutpatients: "", //门诊大病医师标识 OutpatientIllnessCategory: "", //门诊大病类别 StartTime: 1233, //开始日期 } customs = append(customs, detail) } result := service.SzybYS001(doctor_name, doctor_code, miConfig.Code, customs) fmt.Println("reuslt9999999999999999", 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) var res Result if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Transreturncode == "00000000" { ress = append(ress, &res) } else { isSuccess = false //失败 c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePreSettleFaildParamWrong) return } fmt.Println(isSuccess) } } func (c *SZHisApiController) GetMedicalList() { //获取所有医生护士信息 list, _ := service.GetDoctorList(10028) //获取所有角色名称 roleList, _ := service.GetRoleList(10028) miConfig, _ := service.FindMedicalInsuranceInfo(10028) for _, item := range list { for _, it := range roleList { if item.RoleId == it.ID { item.Name = it.RoleName } } } var doctor_name string var doctor_code string doctor_name = "黄亦轩" doctor_code = "1001" var pagesize int = 50 var start int = 1 var stop int var pagecount int var curpage int var isSuccess bool = true //总页数,向上取整,注意除之前要先转换类型为float64 pagecount = int(math.Ceil(float64(len(list)) / float64(pagesize))) var ress []*Result for curpage = 1; curpage <= pagecount; curpage++ { if curpage == 1 { start = 1 } else { start = (curpage-1)*pagesize + 1 } stop = curpage * pagesize if stop > len(list) { stop = len(list) } //这里就可以查看开始和结束了 fmt.Println(list[start-1 : stop]) var customs []*models.DocDetail for _, item := range list { fmt.Println("医护类别", item.Name) detail := &models.DocDetail{ UserName: item.UserName, RoleId: item.Name, Sex: "", CardType: "", IdCard: "", Phone: "", WorkMajorName: "", Nation: "", BirthDay: 20201022, WorkTime: 12, Education: "", StudyMajorName: "", CertificateCode: "", //证书编码 MedicalCode: "", //医师资格编码 MedicalRangeCode: "", //医师执业范围代码 MedicalLevel: "", //医生级别 TypeJob: "", //职业类别 DoctorNumber: "", //医师编号 Licensing: "", //职业标志 DoctorServiceStatus: "", //医师医保服务资格状态 MonitoringLevel: "", //监控等级 DrugPsychotropicSubstances: "", //毒麻精神药品资格 HealthCareCode: "", // 母婴保健技术考核合格证书编号 PlanningTechnicalServiceCode: "", //计划生育技术服务人员合格证编号 PharmacistType: "", //药师类别 PharmacistPracticeCategory: "", //药师执业类别 PharmacistsLicensing: "", //药师执业范围 PharmacistRegistrationNumber: "", //执业药师注册证编号 OfficeCode: "", //科室编码 JobNumber: "", //工号 PostName: "", //职位名称 TechnicalJobLevelCode: "", //专业技术职务级别编码 IsActive: "", //在职与否 PrescriptionQualificationIdentification: "", //处方资格标识 IdentificationOutpatients: "", //门诊大病医师标识 OutpatientIllnessCategory: "", //门诊大病类别 StartTime: 1233, //开始日期 } customs = append(customs, detail) } result := service.SzybYS002(doctor_name, doctor_code, miConfig.Code, customs) fmt.Println("reuslt9999999999999999", 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) var res Result if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Transreturncode == "00000000" { ress = append(ress, &res) } else { isSuccess = false //失败 c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePreSettleFaildParamWrong) return } fmt.Println(isSuccess) } } func (c *SZHisApiController) GetUpdateMedicalList() { //获取所有医生护士信息 list, _ := service.GetDoctorList(10028) //获取所有角色名称 roleList, _ := service.GetRoleList(10028) miConfig, _ := service.FindMedicalInsuranceInfo(10028) for _, item := range list { for _, it := range roleList { if item.RoleId == it.ID { item.Name = it.RoleName } } } var doctor_name string var doctor_code string doctor_name = "黄亦轩" doctor_code = "1001" var pagesize int = 50 var start int = 1 var stop int var pagecount int var curpage int var isSuccess bool = true //总页数,向上取整,注意除之前要先转换类型为float64 pagecount = int(math.Ceil(float64(len(list)) / float64(pagesize))) var ress []*Result for curpage = 1; curpage <= pagecount; curpage++ { if curpage == 1 { start = 1 } else { start = (curpage-1)*pagesize + 1 } stop = curpage * pagesize if stop > len(list) { stop = len(list) } //这里就可以查看开始和结束了 fmt.Println(list[start-1 : stop]) var customs []*models.DocDetail for _, item := range list { fmt.Println("医护类别", item.Name) detail := &models.DocDetail{ StaffCode: "", //医护人员编码 UserName: item.UserName, //医护人员姓名 RoleId: item.Name, //医护人员类别 Sex: "", //性别 CardType: "", //证件类型 IdCard: "", //证件号码 Phone: "", //联系电话 WorkMajorName: "", //现从事专业名称 Nation: "", //民族 BirthDay: 20201022, //出生日期 WorkTime: 12, //参加工作日期 Education: "", //学历 StudyMajorName: "", //所学的专业名称 CertificateCode: "", //证书编码 MedicalCode: "", //医师资格编码 MedicalRangeCode: "", //医师执业范围代码 MedicalLevel: "", //医生级别 TypeJob: "", //职业类别 DoctorNumber: "", //医师编号 Licensing: "", //职业标志 DoctorServiceStatus: "", //医师医保服务资格状态 MonitoringLevel: "", //监控等级 DrugPsychotropicSubstances: "", //毒麻精神药品资格 HealthCareCode: "", // 母婴保健技术考核合格证书编号 PlanningTechnicalServiceCode: "", //计划生育技术服务人员合格证编号 PharmacistType: "", //药师类别 PharmacistPracticeCategory: "", //药师执业类别 PharmacistsLicensing: "", //药师执业范围 PharmacistRegistrationNumber: "", //执业药师注册证编号 OfficeCode: "", //科室编码 JobNumber: "", //工号 PostName: "", //职位名称 TechnicalJobLevelCode: "", //专业技术职务级别编码 IsActive: "", //在职与否 PrescriptionQualificationIdentification: "", //处方资格标识 IdentificationOutpatients: "", //门诊大病医师标识 OutpatientIllnessCategory: "", //门诊大病类别 StartTime: 1233, //开始日期 EndTime: 123333, } customs = append(customs, detail) } result := service.SzybYS003(doctor_name, doctor_code, miConfig.Code, customs) fmt.Println("reuslt9999999999999999", 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) var res Result if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Transreturncode == "00000000" { ress = append(ress, &res) } else { isSuccess = false //失败 c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePreSettleFaildParamWrong) return } fmt.Println(isSuccess) } } //type Charset string //const ( // UTF8 = Charset("UTF-8") // GB18030 = Charset("GB18030") //) //func ConvertByte2String(byte []byte, charset Charset) string { // // var str string // switch charset { // case GB18030: // decodeBytes, _ := simplifiedchinese.GB18030.NewDecoder().Bytes(byte) // str = string(decodeBytes) // case UTF8: // fallthrough // default: // str = string(byte) // } // // return str //}