package sz import ( "encoding/json" "fmt" "gdyb/controllers" "gdyb/enums" "gdyb/models" "gdyb/service" "gdyb/utils" "github.com/astaxie/beego" "github.com/axgle/mahonia" "math/rand" //"github.com/axgle/mahonia" "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 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 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 int `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"` Outputlist1 []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"` Ala026 string `json:"ala026"` Aka070 string `json:"aka070"` Aka074 string `json:"aka074"` Akc226 float64 `json:"akc226"` Akc225 float64 `json:"akc225"` Akc264 float64 `json:"akc264"` Aka067 string `json:"aka067"` Akc271 int `json:"akc271"` Bkc320 string `json:"bkc320"` Cke400 string `json:"cke400"` Ckc618 string `json:"ckc618"` Bka069 int64 `json:"bka069"` Aka018 string `json:"aka018"` Aka030 string `json:"aka030"` Aka065 string `json:"aka065"` Cka319 float64 `json:"cka319"` Akc268 float64 `json:"akc268"` } `json:"outputlist1"` 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 ResultMZ001 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 { Aaz515 string `json:"aaz515"` Aaz500 string `json:"aaz500"` Aac001 float64 `json:"aac001"` Aac999 string `json:"aac999"` Aac002 string `json:"aac002"` Aac058 string `json:"aac058"` Aac147 string `json:"aac147"` Aac003 string `json:"aac003"` Aac004 string `json:"aac004"` Aac006 float64 `json:"aac006"` Bae093 float64 `json:"bae093"` Cac215 string `json:"cac215"` Aac066 string `json:"aac066"` Aac008 string `json:"aac008"` Bke404 string `json:"bke404"` Aae240 float64 `json:"aae240"` Bkc346 string `json:"bkc346"` Ckc601 string `json:"ckc601"` Caz574 string `json:"caz574"` Caz654 string `json:"caz654"` Ckc403 string `json:"ckc403"` Ckc362 string `json:"ckc362"` Ckc363 string `json:"ckc363"` Outputlist1 []struct { Aab001 float64 `json:"aab001"` Aab999 string `json:"aab999"` Aab004 string `json:"aab004"` Aab019 string `json:"aab019"` Aae140 string `json:"aae140"` Aae030 float64 `json:"aae030"` Aae031 string `json:"aae031"` Bcc334 string `json:"bcc334"` Aac031 string `json:"aac031"` } `json:"outputlist1"` } `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/settle/get", &SZHisApiController{}, "get:GetSettleInfo") //预结算 beego.Router("/sz/api/presettle/get", &SZHisApiController{}, "get:GetPreSettleInfo") //退费 beego.Router("/sz/api/refund/get", &SZHisApiController{}, "get:Refund") beego.Router("/sz/api/readcard", &SZHisApiController{}, "get:ReadCard") beego.Router("sz/api/refundnumber/get", &SZHisApiController{}, "get:RefundNumber") beego.Router("/sz/api/monthrefund/get", &SZHisApiController{}, "get:MonthRefund") //查询交易 beego.Router("/sz/api/settle/query", &SZHisApiController{}, "get:GetSettleAccounts") //beego.Router("/sz/api/detail/upload", &SZHisApiController{}, "get:GetUploadDetail") 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") ////协议机构材料目录备案 // beego.Router("/sz/api/goods/get", &SZHisApiController{}, "get:GetGoodsList") } 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) ReadCard() { id_card_type, _ := c.GetInt64("id_card_type") adminInfo := c.GetAdminUserInfo() if id_card_type != 1 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorNoReadCardException) return } month := time.Unix(1557042972, 0).Format("1") year := time.Now().Format("2006") month = time.Now().Format("01") day := time.Now().Format("02") miConfig, _ := service.FindMedicalInsuranceInfo(adminInfo.CurrentOrgId) number := miConfig.Code + year + month + day + fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) // 定点协议机构编码(5位)+日期(8位)+流水号(7位) id_card_number, health_card_no, _, ret4 := ReadBasCard("MZ002" + "|" + number + "|" + miConfig.Code + "|") if ret4 == 0 { patient, _ := service.GetPatientByNumber(id_card_number, adminInfo.CurrentOrgId) if patient.ID == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException) return } else { c.ServeSuccessJSON(map[string]interface{}{ "patient": patient, "health_card_no": health_card_no, }) } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeReadCardException) return } } //获取读卡信息 -- 门诊挂号 //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 = 10 // break // case 3: // custom_code = "110200002-2" // custom_project_name = "主任医师" // allPrice = 10 // // break // case 2: // custom_code = "110200002-3" // custom_project_name = "副主任医师" // allPrice = 10 // // break // case 4: // custom_code = "0" // custom_project_name = "免受诊金" // allPrice = 0 // break // case 5: // custom_code = "110200002-1" // custom_project_name = "专家" // allPrice = 10 // // break // } // // if his.ID == 0 { // // var doctor_name string // var doctor_code string // if adminRole.ID == 0 { // // doctor_name = "" // doctor_code = "1001" // doctor_name = "" // doctor_code = "" // // } 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)) // //1.判断读卡类型 // //2.读卡 获取交易验证码,医疗证号,发卡地区行政区划代码 // yiliao_number, id_card_number, verifyCode, version_code, _, ret4 := ReadBasCardGetNumber("MZ002" + "|" + number + "|" + miConfig.Code + "|") // fmt.Println(yiliao_number) // fmt.Println(id_card_number) // fmt.Println(verifyCode) // fmt.Println(version_code) // fmt.Println(ret4) // // dept_code := "0305" // is_yidi = 1 // tempPatient, _ := service.GetPatientByNumber(id_card_number, adminInfo.CurrentOrgId) // //根据业务的人员信息跟设备读社保卡获取的信息进行匹配,判断是否为同一个人,相同则进行挂号操作,不同则报错 // if tempPatient.ID == patient_id { // if ret4 == 0 { //本地卡流程 // if is_yidi == 1 { // //本地就医流程 // //挂号 // 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,medical_care) // 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.ErrorCodeNoPateintException) // return // } // } else { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeRegisterRepeatException) // return // } //} 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 } //doctorInfo, _ := service.GetAdminUserInfoByID(adminInfo.CurrentOrgId, doctor) doctorDepartment, _ := service.GetDepartMentDetail(department) adminRole, _ := service.GetAdminUserInfoByID(adminInfo.CurrentOrgId, admin_user_id) //his, _ := service.GetHisPatientInfo(adminInfo.CurrentOrgId, patient_id, theTime.Unix()) his, _ := service.GetHisPatientInfoTwo(adminInfo.CurrentOrgId, patient.ID, theTime.Unix()) if len(his) >= 1 { order, _ := service.GetNewHisOrderTwo(adminInfo.CurrentOrgId, his[len(his)-1].Number, his[len(his)-1].PatientId, theTime.Unix()) if len(his) >= 1 && order.ID == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisPatientParamWrong) return } } var custom_code string var custom_project_name string var allPrice float64 switch register_type { case 1: custom_code = "110100002" custom_project_name = "普通门诊" allPrice = 10 break case 3: custom_code = "110200002-2" custom_project_name = "主任医师" allPrice = 10 break case 2: custom_code = "110200002-3" custom_project_name = "副主任医师" allPrice = 10 break case 4: custom_code = "0" custom_project_name = "免受诊金" allPrice = 0 break case 5: custom_code = "110200002-1" custom_project_name = "专家" allPrice = 10 break } var opera_name string var opera_code string if adminRole.ID == 0 { opera_name = "管理员" opera_code = "01" } else { opera_name = adminRole.UserName opera_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 := miConfig.Code + year + month + day + fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) //1.判断读卡类型 //2.读卡 获取交易验证码,医疗证号,发卡地区行政区划代码 yiliao_number, id_card_number, verifyCode, version_code, health_card_no, _, ret4 := ReadBasCardGetNumber("MZ002" + "|" + number + "|" + miConfig.Code + "|") dept_code := doctorDepartment.Number is_yidi = 1 tempPatient, _ := service.GetPatientByNumber(id_card_number, adminInfo.CurrentOrgId) //根据业务的人员信息跟设备读社保卡获取的信息进行匹配,判断是否为同一个人,相同则进行挂号操作,不同则报错 fmt.Println(tempPatient.ID) fmt.Println(patient_id) if tempPatient.ID == patient_id { temp_mz_number := miConfig.Code + year + month + day + fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) tempVerifyCode, tempVersionCode := ReadCardGetCode("XX001" + "|" + temp_mz_number + "|" + miConfig.Code) //yiliao_number, id_card_number, verifyCode, version_code, health_card_no, _, ret4 := ReadBasCardGetNumber("MZ002" + "|" + number + "|" + miConfig.Code + "|") //yiliao_number = "%GALMAFXJGKUKZNKWAIUH?;07857319025346309758?" result001 := service.SzybXX001(opera_name, opera_code, miConfig.Code, yiliao_number, tempVerifyCode, temp_mz_number, tempVersionCode) if ret4 == 0 { //本地卡流程 if is_yidi == 1 { //var dat2 map[string]interface{} //if err := json.Unmarshal([]byte(result001), &dat2); err == nil { // fmt.Println(dat2) //} else { // fmt.Println(err) //} //userJSONBytes2, _ := json.Marshal(dat2) //var res2 ResultMZ001 //if err := json.Unmarshal(userJSONBytes2, &res2); err != nil { // utils.ErrorLog("解析失败:%v", err) //} //本地就医流程 //挂号 resp_result := service.SzybMZ002(opera_name, opera_code, miConfig.Code, dept_code, yiliao_number, verifyCode, number, mz_number, version_code, custom_code, custom_project_name, allPrice, medical_care) 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, PsnNo: health_card_no, PatientInfo: result001, } service.CreateHisPatientTwo(&his) lists, _ := service.GetHisPatientInfoList(adminInfo.CurrentOrgId, patient.ID, theTime.Unix()) if len(lists) == 1 { service.UpdateHisPrescriptionHisID(his.ID, patient.ID, theTime.Unix(), adminInfo.CurrentOrgId) } 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(opera_name, opera_code, miConfig.Code, "0305", yiliao_number, verifyCode, number, mz_number, version_code, custom_code, custom_project_name, allPrice, medical_care) 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, PsnNo: health_card_no, PatientInfo: result001, } service.CreateHisPatientTwo(&his) lists, _ := service.GetHisPatientInfoList(adminInfo.CurrentOrgId, patient.ID, theTime.Unix()) if len(lists) == 1 { service.UpdateHisPrescriptionHisID(his.ID, patient.ID, theTime.Unix(), adminInfo.CurrentOrgId) } 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(opera_name, opera_code, miConfig.Code, "0305", yiliao_number, verifyCode, number, mz_number, version_code, custom_code, custom_project_name, allPrice, medical_care) 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, PsnNo: health_card_no, PatientInfo: result001, } service.CreateHisPatientTwo(&his) lists, _ := service.GetHisPatientInfoList(adminInfo.CurrentOrgId, patient.ID, theTime.Unix()) if len(lists) == 1 { service.UpdateHisPrescriptionHisID(his.ID, patient.ID, theTime.Unix(), adminInfo.CurrentOrgId) } 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(opera_name, opera_code, miConfig.Code, "0305", yiliao_number, verifyCode, number, mz_number, version_code, custom_code, custom_project_name, allPrice, medical_care) 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, PsnNo: health_card_no, PatientInfo: result001, } service.CreateHisPatientTwo(&his) lists, _ := service.GetHisPatientInfoList(adminInfo.CurrentOrgId, patient.ID, theTime.Unix()) if len(lists) == 1 { service.UpdateHisPrescriptionHisID(his.ID, patient.ID, theTime.Unix(), adminInfo.CurrentOrgId) } c.ServeSuccessJSON(map[string]interface{}{ "msg": "挂号成功", }) } else { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } } } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException) return } } //func (c *SZHisApiController) GetInfo() { //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 = 10 // break // case 3: // custom_code = "110200002-2" // custom_project_name = "主任医师" // allPrice = 10 // // break // case 2: // custom_code = "110200002-3" // custom_project_name = "副主任医师" // allPrice = 10 // // break // case 4: // custom_code = "0" // custom_project_name = "免受诊金" // allPrice = 0 // break // case 5: // custom_code = "110200002-1" // custom_project_name = "专家" // allPrice = 10 // // break // } // // if his.ID == 0 { // // var doctor_name string // var doctor_code string // if adminRole.ID == 0 { // // doctor_name = "" // doctor_code = "1001" // doctor_name = "" // doctor_code = "" // // } 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)) // //1.判断读卡类型 // //2.读卡 获取交易验证码,医疗证号,发卡地区行政区划代码 // yiliao_number, id_card_number, verifyCode, version_code, _, ret4 := ReadBasCardGetNumber("MZ002" + "|" + number + "|" + miConfig.Code + "|") // fmt.Println(yiliao_number) // fmt.Println(id_card_number) // fmt.Println(verifyCode) // fmt.Println(version_code) // fmt.Println(ret4) // // dept_code := "0305" // is_yidi = 1 // tempPatient, _ := service.GetPatientByNumber(id_card_number, adminInfo.CurrentOrgId) // //根据业务的人员信息跟设备读社保卡获取的信息进行匹配,判断是否为同一个人,相同则进行挂号操作,不同则报错 // if tempPatient.ID == patient_id { // if ret4 == 0 { //本地卡流程 // if is_yidi == 1 { // //本地就医流程 // //挂号 // 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, medical_care) // 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.ErrorCodeNoPateintException) // return // } // } else { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeRegisterRepeatException) // return // } //} //func (c *SZHisApiController) GetRegisterInfo() { // adminInfo := c.GetAdminUserInfo() // miConfig, _ := service.FindMedicalInsuranceInfo(adminInfo.CurrentOrgId) // 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位) // //1.判断读卡类型 // //2.读卡 获取交易验证码,医疗证号,发卡地区行政区划代码 // yiliao_number, _, verifyCode, version_code, _, _, _ := ReadBasCardGetNumber("XX001" + "|" + number + "|" + miConfig.Code + "|") // fmt.Println(result) // //} func (c *SZHisApiController) RefundNumber() { record_time := c.GetString("record_time") //patient_id, _ := c.GetInt64("patient_id") his_patient_id, _ := c.GetInt64("his_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) his, _ := service.GetNewHisPatientInfo(adminUser.CurrentOrgId, his_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 = "01" } 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) config, _ := service.GetMedicalInsuranceConfig(adminUser.CurrentOrgId) if config.IsOpen == 1 { //对接了医保,走医保流程 result := service.SzybJY002(doctor_name, doctor_code, miConfig.Code, his.MzNumber, his.Number, verifyCode, number, version_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 ResultThree if err := json.Unmarshal(userJSONBytes, &res); err != nil { utils.ErrorLog("解析失败:%v", err) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeDataException) return } if res.Transreturncode == "00000000" { service.UpdataHisStatusSZ(adminUser.CurrentOrgId, his.MzNumber, his.Number, result, his_patient_id) c.ServeSuccessJSON(map[string]interface{}{ "msg": "退号成功", }) } else { c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) } } } //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 = 10 // break // case 3: // custom_code = "110200002-2" // custom_project_name = "主任医师" // allPrice = 10 // // break // case 2: // custom_code = "110200002-3" // custom_project_name = "副主任医师" // allPrice = 10 // // break // case 4: // custom_code = "0" // custom_project_name = "免受诊金" // allPrice = 0 // break // case 5: // custom_code = "110200002-1" // custom_project_name = "专家" // allPrice = 10 // // break // } // // if his.ID == 0 { // // var doctor_name string // var doctor_code string // if adminRole.ID == 0 { // // doctor_name = "管理员" // doctor_code = "01" // // } 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 := miConfig.Code + year + month + day + // fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) // //1.判断读卡类型 // //2.读卡 获取交易验证码,医疗证号,发卡地区行政区划代码 // yiliao_number, id_card_number, verifyCode, version_code, _, ret4 := ReadBasCardGetNumber("MZ002" + "|" + number + "|" + miConfig.Code + "|") // fmt.Println(yiliao_number) // fmt.Println(id_card_number) // fmt.Println(verifyCode) // fmt.Println(version_code) // fmt.Println(ret4) // // dept_code := "0306" // is_yidi = 1 // tempPatient, _ := service.GetPatientByNumber(id_card_number, adminInfo.CurrentOrgId) // //根据业务的人员信息跟设备读社保卡获取的信息进行匹配,判断是否为同一个人,相同则进行挂号操作,不同则报错 // fmt.Println(tempPatient.ID) // fmt.Println(patient_id) // // if tempPatient.ID == patient_id { // if ret4 == 0 { //本地卡流程 // if is_yidi == 1 { // //本地就医流程 // //挂号 // 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, medical_care) // 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, medical_care) // 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, medical_care) // 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, medical_care) // 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.ErrorCodeNoPateintException) // return // } // } else { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeRegisterRepeatException) // return // } //}q //上传明细----结算----确认订单 func (c *SZHisApiController) GetSettleInfo() { 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") patient_id, _ := c.GetInt64("id") record_time := c.GetString("record_time") admin_user_id, _ := c.GetInt64("admin_user_id") his_patient_id, _ := c.GetInt64("his_patient_id") id_str := c.GetString("ids") ids_arr := strings.Split(id_str, ",") order_id, _ := c.GetInt64("order_id") sick_type, _ := c.GetInt64("sick_type") reg_type, _ := c.GetInt64("p_type") 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() his, err := service.GetNewHisPatientInfo(adminUser.CurrentOrgId, his_patient_id, recordDateTime) //tempOrder, _ := service.GetNewHisOrderThree(or) tempOrder, _ := service.GetHisOrderByID(order_id) if tempOrder.ID == 0 { var prescriptions []*models.HisPrescription var start_time int64 var end_time int64 if settle_accounts_type == 1 { //日结 if reg_type == 11 { prescriptions, _ = service.GetPrescriptionByIds(ids_arr, adminUser.CurrentOrgId) } else { prescriptions, _ = service.GetNewHisPrescription(adminUser.CurrentOrgId, his_patient_id, recordDateTime, strconv.Itoa(int(reg_type))) } } 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, patient_id, recordStartTime, recordEndTime, his.MedicalTreatmentType) } var ids []int64 for _, item := range prescriptions { ids = append(ids, item.ID) } patientPrescription, _ := service.FindHisPatientPrescriptionInfo(adminUser.CurrentOrgId, his_patient_id, recordDateTime) sick, _ := service.FindSickById(sick_type) if sick.ID == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamSickTypeWrong) return } adminRole_two, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, patientPrescription.DoctorId) adminRole, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) 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位) 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 = "01" } 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 { if item.Type == 1 { //药品 for _, subItem := range item.HisDoctorAdviceInfo { fmt.Println(subItem.BaseDrugLib.MedicalInsuranceNumber) if len(subItem.BaseDrugLib.MedicalInsuranceNumber) > 0 { _, 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) temp := strings.Split(subItem.FeedetlSn, "-") newFl := fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) + "-" + temp[1] + "-" + temp[2] fmt.Println(111111111) fmt.Println(subItem.BaseDrugLib.Code) fmt.Println(222222222) cus := &models.CustomDetail{ PrescriptionNumber: chrg_bchno, OrderType: "1", ChargeSerialNumber: newFl, Code: subItem.BaseDrugLib.MedicalInsuranceNumber, CodeName: subItem.BaseDrugLib.DrugName, BwCode: subItem.BaseDrugLib.Code, Flag: "1", Price: price, Count: subItem.PrescribingNumber, ChargeOrderDate: year + month + day, DoctorCode: doctor_code, Total: detItemFeeSumamt, DoseCode: dose_code, Spec: strconv.Itoa(int(subItem.BaseDrugLib.MinNumber)) + subItem.BaseDrugLib.MinUnit + ":" + fmt.Sprintf("%.2f", subItem.BaseDrugLib.Dose) + subItem.BaseDrugLib.DoseUnit, Unit: subItem.PrescribingNumberUnit, } 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) count, _ := strconv.ParseFloat(strconv.FormatInt(subItem.Count, 10), 64) temp := strings.Split(subItem.FeedetlSn, "-") newFl := fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) + "-" + temp[1] + "-" + temp[2] if subItem.Type == 2 { cus := &models.CustomDetail{ PrescriptionNumber: chrg_bchno, OrderType: "1", ChargeSerialNumber: newFl, Code: subItem.HisProject.MedicalCode, BwCode: 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: "次", Unit: "次", } customs = append(customs, cus) } } if len(subItem.GoodInfo.MedicalInsuranceNumber) > 0 { detItemFeeSumamt, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", subItem.Price*float64(subItem.Count)), 64) //count, _ := strconv.ParseFloat(fmt.Sprintf("%f", subItem.Count), 64) count, _ := strconv.ParseFloat(strconv.FormatInt(subItem.Count, 10), 64) temp := strings.Split(subItem.FeedetlSn, "-") newFl := fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) + "-" + temp[1] + "-" + temp[2] if subItem.Type == 3 { cus := &models.CustomDetail{ PrescriptionNumber: chrg_bchno, OrderType: "1", ChargeSerialNumber: newFl, Code: subItem.GoodInfo.MedicalInsuranceNumber, CodeName: subItem.GoodInfo.GoodName, BwCode: subItem.GoodInfo.MedicalInsuranceNumber, Flag: "1", Price: subItem.Price, Count: count, ChargeOrderDate: year + month + day, DoctorCode: doctor_code, Total: detItemFeeSumamt, DoseCode: "", Spec: "支", Unit: "支", } 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: 4, } service.CreateErrMsgLog(errlog) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) 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: 0, 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, MdtrtId: mz_number, PType: 2, } 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.Bkf500, 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.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 { total = total + (subItem.Price * float64(subItem.Count)) } } } for _, item := range prescriptions { for _, subItem := range item.HisAdditionalCharge { total = total + (subItem.Price * float64(subItem.Count)) } } total, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", total), 64) new_number := miConfig.Code + year + month + day + fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) // 定点协议机构编码(5位)+日期(8位)+流水号(7位) yiliao_number, id_card_number, verifyCode, version_code, health_card_no, _, ret4 := ReadBasCardGetNumber("FY005" + "|" + new_number + "|" + miConfig.Code + "|") if ret4 == 0 { //根据业务的人员信息跟设备读社保卡获取的信息进行匹配,判断是否为同一个人,相同则进行挂号操作,不同则报错 tempPatient, _ := service.GetPatientByNumber(id_card_number, adminUser.CurrentOrgId) if tempPatient.ID == patient_id { result_three := service.SzybFY005(doctor_name, doctor_code, miConfig.Code, total, yiliao_number, verifyCode, number, mz_number, version_code, drug_doctor_code, drug_doctor_name, reg_type, sick.CountryCode, new_number) 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.OrderStatus = 2 order.Status = 1 order.PayWay = pay_way order.PayPrice = pay_price order.PayCardNo = pay_card_no order.PsnNo = health_card_no order.DiscountPrice = discount_price order.PreferentialPrice = preferential_price order.RealityPrice = reality_price order.FoundPrice = found_price order.MedicalInsurancePrice = medical_insurance_price order.PrivatePrice = private_price order.Modify = admin_user_id order.MedfeeSumamt = res.Transbody.Akc264 order.SetlId = res.Transbody.Ckc618 order.FundPaySumamt = res.Transbody.Akb068 order.AcctPay = res.Transbody.Akb066 order.PsnCashPay = res.Transbody.Akb067 order.PsnPartAmt = res.Transbody.Akb067 order.AccountPrice = res.Transbody.Aae240 order.MedType = strconv.Itoa(int(reg_type)) order.MzNumber = mz_number order.MdtrtId = mz_number order.YiliaoNumber = yiliao_number setlDetailOne, _ := json.Marshal(res.Transbody.Outputlist1) detailStrOne := string(setlDetailOne) order.SzChargeInfo = detailStrOne setlDetailTwo, _ := json.Marshal(res.Transbody.Outputlist2) detailStrTwo := string(setlDetailTwo) order.SzProjectInfo = detailStrTwo setlDetailThree, _ := json.Marshal(res.Transbody.Outputlist3) detailStrThree := string(setlDetailThree) order.SzMedicineInsuranceInfo = detailStrThree order.Cainfo = result_three err = service.UpdataOrderStatusTwo(order.Number, adminUser.CurrentOrgId) err = service.UpDateOrderTwo(order) c.ServeSuccessJSON(map[string]interface{}{ "msg": "结算成功", }) } else { //结算报错 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: 6, } service.CreateErrMsgLog(errlog) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException) return } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeReadCardException) return } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePreSettleFaildParamWrong) return } } else { if tempOrder.OrderStatus == 1 && tempOrder.IsPre == 1 { 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") patient_id, _ := c.GetInt64("id") record_time := c.GetString("record_time") admin_user_id, _ := c.GetInt64("admin_user_id") order_id, _ := c.GetInt64("order_id") his_patient_id, _ := c.GetInt64("his_patient_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() patientPrescription, _ := service.FindHisPatientPrescriptionInfo(adminUser.CurrentOrgId, his_patient_id, recordDateTime) sick, _ := service.FindSickById(patientPrescription.SickType) if sick.ID == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamSickTypeWrong) return } adminRole_two, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, patientPrescription.DoctorId) adminRole, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) his, err := service.GetNewHisPatientInfo(adminUser.CurrentOrgId, his_patient_id, recordDateTime) 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位) 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 = "01" } else { doctor_name = adminRole.UserName doctor_code = strconv.FormatInt(admin_user_id, 10) } order, _ := service.GetHisOrderByID(order_id) if order.ID == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisOrderNoExistParamWrong) return } yiliao_number, id_card_number, verifyCode, version_code, health_card_no, _, ret4 := ReadBasCardGetNumber("FY005" + "|" + number + "|" + miConfig.Code + "|") if ret4 == 0 { //根据业务的人员信息跟设备读社保卡获取的信息进行匹配,判断是否为同一个人,相同则进行挂号操作,不同则报错 tempPatient, _ := service.GetPatientByNumber(id_card_number, adminUser.CurrentOrgId) if tempPatient.ID == patient_id { result_three := service.SzybFY005(doctor_name, doctor_code, miConfig.Code, order.MedfeeSumamt, yiliao_number, verifyCode, order.OrgSetlNumber, mz_number, version_code, drug_doctor_code, drug_doctor_name, reg_type, sick.CountryCode, number) 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.OrderStatus = 2 order.Status = 1 order.PayWay = pay_way order.PayPrice = pay_price order.PayCardNo = pay_card_no order.PsnNo = health_card_no order.DiscountPrice = discount_price order.PreferentialPrice = preferential_price order.RealityPrice = reality_price order.FoundPrice = found_price order.MedicalInsurancePrice = medical_insurance_price order.PrivatePrice = private_price order.Modify = admin_user_id order.MedfeeSumamt = res.Transbody.Akc264 order.SetlId = res.Transbody.Ckc618 order.FundPaySumamt = res.Transbody.Akb068 order.AcctPay = res.Transbody.Akb066 order.PsnCashPay = res.Transbody.Akb067 order.PsnPartAmt = res.Transbody.Akb067 order.AccountPrice = res.Transbody.Aae240 order.MzNumber = mz_number order.YiliaoNumber = yiliao_number setlDetailOne, _ := json.Marshal(res.Transbody.Outputlist1) detailStrOne := string(setlDetailOne) order.SzChargeInfo = detailStrOne setlDetailTwo, _ := json.Marshal(res.Transbody.Outputlist2) detailStrTwo := string(setlDetailTwo) order.SzProjectInfo = detailStrTwo setlDetailThree, _ := json.Marshal(res.Transbody.Outputlist3) detailStrThree := string(setlDetailThree) order.SzMedicineInsuranceInfo = detailStrThree order.Cainfo = result_three err = service.UpdataOrderStatusTwo(order.Number, adminUser.CurrentOrgId) err = service.UpDateOrderTwo(&order) c.ServeSuccessJSON(map[string]interface{}{ "msg": "结算成功", }) } else { //结算报错 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: 6, } service.CreateErrMsgLog(errlog) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException) return } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeReadCardException) return } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisOrderNoExistParamWrong) return } } } //结算 //func (c *SZHisApiController) GetSettleInfo() { // 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") // patient_id, _ := c.GetInt64("id") // record_time := c.GetString("record_time") // admin_user_id, _ := c.GetInt64("admin_user_id") // order_id, _ := c.GetInt64("order_id") // his_patient_id, _ := c.GetInt64("his_patient_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() // // patientPrescription, _ := service.FindHisPatientPrescriptionInfo(adminUser.CurrentOrgId, his_patient_id, recordDateTime) // // sick, _ := service.FindSickById(patientPrescription.SickType) // // if sick.ID == 0 { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamSickTypeWrong) // return // } // // adminRole_two, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, patientPrescription.DoctorId) // // adminRole, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) // his, err := service.GetNewHisPatientInfo(adminUser.CurrentOrgId, his_patient_id, recordDateTime) // 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位) // 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 = "01" // } else { // doctor_name = adminRole.UserName // doctor_code = strconv.FormatInt(admin_user_id, 10) // } // // order, _ := service.GetHisOrderByID(order_id) // if order.ID == 0 { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisOrderNoExistParamWrong) // return // } // // yiliao_number, id_card_number, verifyCode, version_code, health_card_no, _, ret4 := ReadBasCardGetNumber("FY005" + "|" + number + "|" + miConfig.Code + "|") // if ret4 == 0 { // //根据业务的人员信息跟设备读社保卡获取的信息进行匹配,判断是否为同一个人,相同则进行挂号操作,不同则报错 // tempPatient, _ := service.GetPatientByNumber(id_card_number, adminUser.CurrentOrgId) // if tempPatient.ID == patient_id { // result_three := service.SzybFY005(doctor_name, doctor_code, miConfig.Code, order.MedfeeSumamt, yiliao_number, verifyCode, number, mz_number, version_code, drug_doctor_code, drug_doctor_name, his.MedicalTreatmentType, sick.CountryCode) // 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.OrderStatus = 2 // order.Status = 1 // order.PayWay = pay_way // order.PayPrice = pay_price // order.PayCardNo = pay_card_no // order.PsnNo = health_card_no // order.DiscountPrice = discount_price // order.PreferentialPrice = preferential_price // order.RealityPrice = reality_price // order.FoundPrice = found_price // order.MedicalInsurancePrice = medical_insurance_price // order.PrivatePrice = private_price // order.Modify = admin_user_id // order.MedfeeSumamt = res.Transbody.Akc264 // order.SetlId = res.Transbody.Ckc618 // order.FundPaySumamt = res.Transbody.Akb068 // order.AcctPay = res.Transbody.Akb066 // order.PsnCashPay = res.Transbody.Akb067 // order.PsnPartAmt = res.Transbody.Akb067 // order.AccountPrice = res.Transbody.Aae240 // order.MzNumber = mz_number // order.YiliaoNumber = yiliao_number // setlDetailOne, _ := json.Marshal(res.Transbody.Outputlist1) // detailStrOne := string(setlDetailOne) // order.SzChargeInfo = detailStrOne // setlDetailTwo, _ := json.Marshal(res.Transbody.Outputlist2) // detailStrTwo := string(setlDetailTwo) // order.SzProjectInfo = detailStrTwo // setlDetailThree, _ := json.Marshal(res.Transbody.Outputlist3) // detailStrThree := string(setlDetailThree) // order.SzMedicineInsuranceInfo = detailStrThree // order.Cainfo = result_three // err = service.UpdataOrderStatusTwo(order.Number, adminUser.CurrentOrgId) // err = service.UpDateOrderTwo(&order) // c.ServeSuccessJSON(map[string]interface{}{ // "msg": "结算成功", // }) // } else { // //结算报错 // 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: 6, // } // service.CreateErrMsgLog(errlog) // c.ServeSuccessJSON(map[string]interface{}{ // "failed_code": -10, // "msg": res.Transreturnmessage, // }) // } // } else { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException) // return // } // } else { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeReadCardException) // return // } //} //上传明细----预结算 func (c *SZHisApiController) GetPreSettleInfo() { settle_accounts_type, _ := c.GetInt64("settle_accounts_type") patient_id, _ := c.GetInt64("id") record_time := c.GetString("record_time") admin_user_id, _ := c.GetInt64("admin_user_id") his_patient_id, _ := c.GetInt64("his_patient_id") reg_type, _ := c.GetInt64("p_type") sick_type, _ := c.GetInt64("sick_type") id_str := c.GetString("ids") ids_arr := strings.Split(id_str, ",") 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 reg_type == 1111 || reg_type == 1112 { reg_type = 11 } 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))) } } 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, strconv.Itoa(int(reg_type))) } var ids []int64 for _, item := range prescriptions { ids = append(ids, item.ID) } patientPrescription, _ := service.FindHisPatientPrescriptionInfo(adminUser.CurrentOrgId, his_patient_id, recordDateTime) sick, _ := service.FindSickById(sick_type) if sick.ID == 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamSickTypeWrong) return } adminRole_two, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, patientPrescription.DoctorId) adminRole, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, admin_user_id) his, err := service.GetNewHisPatientInfo(adminUser.CurrentOrgId, his_patient_id, recordDateTime) 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位) 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 = "01" } else { doctor_name = adminRole.UserName doctor_code = strconv.FormatInt(admin_user_id, 10) } verifyCode, version_code := ReadCardGetCode("FY001" + "|" + number + "|" + miConfig.Code) var customs []*models.CustomDetail for _, item := range prescriptions { if item.Type == 1 { //药品 for _, subItem := range item.HisDoctorAdviceInfo { fmt.Println(subItem.BaseDrugLib.MedicalInsuranceNumber) if len(subItem.BaseDrugLib.MedicalInsuranceNumber) > 0 { _, 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) temp := strings.Split(subItem.FeedetlSn, "-") newFl := fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) + "-" + temp[1] + "-" + temp[2] cus := &models.CustomDetail{ PrescriptionNumber: chrg_bchno, OrderType: "1", ChargeSerialNumber: newFl, Code: subItem.BaseDrugLib.MedicalInsuranceNumber, BwCode: subItem.BaseDrugLib.Code, CodeName: subItem.BaseDrugLib.DrugName, Flag: "1", Price: price, Count: subItem.PrescribingNumber, ChargeOrderDate: year + month + day, DoctorCode: doctor_code, Total: detItemFeeSumamt, DoseCode: dose_code, Spec: strconv.Itoa(int(subItem.BaseDrugLib.MinNumber)) + subItem.BaseDrugLib.MinUnit + ":" + fmt.Sprintf("%.2f", subItem.BaseDrugLib.Dose) + subItem.BaseDrugLib.DoseUnit, Unit: subItem.PrescribingNumberUnit, } 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) count, _ := strconv.ParseFloat(strconv.FormatInt(subItem.Count, 10), 64) temp := strings.Split(subItem.FeedetlSn, "-") newFl := fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) + "-" + temp[1] + "-" + temp[2] if subItem.Type == 2 { cus := &models.CustomDetail{ PrescriptionNumber: chrg_bchno, OrderType: "1", ChargeSerialNumber: newFl, Code: subItem.HisProject.MedicalCode, CodeName: subItem.HisProject.ProjectName, BwCode: subItem.HisProject.MedicalCode, Flag: "1", Price: subItem.Price, Count: count, ChargeOrderDate: year + month + day, DoctorCode: doctor_code, Total: detItemFeeSumamt, DoseCode: "", Spec: "次", Unit: "次", } customs = append(customs, cus) } } if len(subItem.GoodInfo.MedicalInsuranceNumber) > 0 { detItemFeeSumamt, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", subItem.Price*float64(subItem.Count)), 64) //count, _ := strconv.ParseFloat(fmt.Sprintf("%f", subItem.Count), 64) count, _ := strconv.ParseFloat(strconv.FormatInt(subItem.Count, 10), 64) temp := strings.Split(subItem.FeedetlSn, "-") newFl := fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) + "-" + temp[1] + "-" + temp[2] if subItem.Type == 3 { cus := &models.CustomDetail{ PrescriptionNumber: chrg_bchno, OrderType: "1", ChargeSerialNumber: newFl, Code: subItem.GoodInfo.MedicalInsuranceNumber, BwCode: subItem.GoodInfo.MedicalInsuranceNumber, CodeName: subItem.GoodInfo.GoodName, Flag: "1", Price: subItem.Price, Count: count, ChargeOrderDate: year + month + day, DoctorCode: doctor_code, Total: detItemFeeSumamt, DoseCode: "", Spec: "支", Unit: "支", } 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: 4, } service.CreateErrMsgLog(errlog) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) 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: 0, Number: chrg_bchno, Infcode: 0, WarnMsg: "", Cainfo: "", ErrMsg: "", RespondTime: "", InfRefmsgid: "", OrderStatus: 1, IsMedicineInsurance: 1, MedType: strconv.Itoa(int(reg_type)), SettleType: settle_accounts_type, SettleStartTime: start_time, SettleEndTime: end_time, Creator: admin_user_id, Modify: admin_user_id, OrgSetlNumber: number, MdtrtId: mz_number, PType: 2, } 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.Bkf500, 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.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 { total = total + (subItem.Price * float64(subItem.Count)) } } } for _, item := range prescriptions { for _, subItem := range item.HisAdditionalCharge { total = total + (subItem.Price * float64(subItem.Count)) } } total, _ = strconv.ParseFloat(fmt.Sprintf("%.2f", total), 64) new_number := miConfig.Code + year + month + day + fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) // 定点协议机构编码(5位)+日期(8位)+流水号(7位) yiliao_number, id_card_number, verifyCode, version_code, health_card_no, _, ret4 := ReadBasCardGetNumber("FY004" + "|" + new_number + "|" + miConfig.Code + "|") if ret4 == 0 { //根据业务的人员信息跟设备读社保卡获取的信息进行匹配,判断是否为同一个人,相同则进行挂号操作,不同则报错 tempPatient, _ := service.GetPatientByNumber(id_card_number, adminUser.CurrentOrgId) if tempPatient.ID == patient_id { result_three := service.SzybFY004(doctor_name, doctor_code, miConfig.Code, total, yiliao_number, verifyCode, number, mz_number, version_code, drug_doctor_code, drug_doctor_name, reg_type, sick.CountryCode, new_number) 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.OrderStatus = 1 order.Status = 1 order.PsnNo = health_card_no order.Modify = admin_user_id order.MedfeeSumamt = res.Transbody.Akc264 order.FundPaySumamt = res.Transbody.Akb068 order.AcctPay = res.Transbody.Akb066 order.PsnCashPay = res.Transbody.Akb067 order.PsnPartAmt = res.Transbody.Akb067 order.AccountPrice = res.Transbody.Aae240 order.MzNumber = mz_number order.YiliaoNumber = yiliao_number setlDetailOne, _ := json.Marshal(res.Transbody.Outputlist1) detailStrOne := string(setlDetailOne) order.SzChargeInfo = detailStrOne setlDetailTwo, _ := json.Marshal(res.Transbody.Outputlist2) detailStrTwo := string(setlDetailTwo) order.SzProjectInfo = detailStrTwo setlDetailThree, _ := json.Marshal(res.Transbody.Outputlist3) detailStrThree := string(setlDetailThree) order.SzMedicineInsuranceInfo = detailStrThree order.Cainfo = result_three order.IsPre = 1 //err = service.UpdataOrderStatusTwo(order.Number, adminUser.CurrentOrgId) err = service.UpDateOrderTwo(order) c.ServeSuccessJSON(map[string]interface{}{ "msg": "预结算成功", }) } else { //预结算报错 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: 20, } service.CreateErrMsgLog(errlog) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException) return } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeReadCardException) return } } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodePreSettleFaildParamWrong) return } } //func (c *SZHisApiController) GetSettleInfo() { // 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") // patient_id, _ := c.GetInt64("id") // record_time := c.GetString("record_time") // 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) // 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位) // 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 { // if item.Type == 1 { //药品 // for _, subItem := range item.HisDoctorAdviceInfo { // fmt.Println(subItem.BaseDrugLib.MedicalInsuranceNumber) // // if len(subItem.BaseDrugLib.MedicalInsuranceNumber) > 0 { // _, 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) // temp := strings.Split(subItem.FeedetlSn, "-") // newFl := fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) + "-" + temp[1] + "-" + temp[2] // // cus := &models.CustomDetail{ // PrescriptionNumber: chrg_bchno, // OrderType: "1", // ChargeSerialNumber: newFl, // 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) // temp := strings.Split(subItem.FeedetlSn, "-") // newFl := fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) + "-" + temp[1] + "-" + temp[2] // // cus := &models.CustomDetail{ // PrescriptionNumber: chrg_bchno, // OrderType: "1", // ChargeSerialNumber: newFl, // 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: 4, // } // service.CreateErrMsgLog(errlog) // c.ServeSuccessJSON(map[string]interface{}{ // "failed_code": -10, // "msg": res.Transreturnmessage, // }) // 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.Bkf500, // 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)) // } // } // // yiliao_number, id_card_number, verifyCode, version_code, _, ret4 := ReadBasCardGetNumber("FY005" + "|" + number + "|" + miConfig.Code + "|") // if ret4 == 0 { // //根据业务的人员信息跟设备读社保卡获取的信息进行匹配,判断是否为同一个人,相同则进行挂号操作,不同则报错 // tempPatient, _ := service.GetPatientByNumber(id_card_number, adminUser.CurrentOrgId) // if tempPatient.ID == patient_id { // // result_three := service.SzybFY005(doctor_name, doctor_code, miConfig.Code, total, yiliao_number, verifyCode, number, mz_number, version_code, drug_doctor_code, drug_doctor_name, his.MedicalTreatmentType) // 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.OrderStatus = 2 // order.PayWay = pay_way // order.PayPrice = pay_price // order.PayCardNo = pay_card_no // order.DiscountPrice = discount_price // order.PreferentialPrice = preferential_price // order.RealityPrice = reality_price // order.FoundPrice = found_price // order.MedicalInsurancePrice = medical_insurance_price // order.PrivatePrice = private_price // order.Modify = admin_user_id // order.MedfeeSumamt = res.Transbody.Akc264 // order.SetlId = res.Transbody.Ckc618 // order.FundPaySumamt = res.Transbody.Akb068 // order.AcctPay = res.Transbody.Akb066 // order.PsnCashPay = res.Transbody.Akb067 // order.PsnPartAmt = res.Transbody.Akb067 // order.AccountPrice = res.Transbody.Aae240 // order.MzNumber = mz_number // order.YiliaoNumber = yiliao_number // setlDetailOne, _ := json.Marshal(res.Transbody.Outputlist1) // detailStrOne := string(setlDetailOne) // order.SzChargeInfo = detailStrOne // setlDetailTwo, _ := json.Marshal(res.Transbody.Outputlist2) // detailStrTwo := string(setlDetailTwo) // order.SzProjectInfo = detailStrTwo // setlDetailThree, _ := json.Marshal(res.Transbody.Outputlist3) // detailStrThree := string(setlDetailThree) // order.SzMedicineInsuranceInfo = detailStrThree // order.Cainfo = result_three // err = service.UpdataOrderStatusTwo(order.Number, adminUser.CurrentOrgId) // err = service.UpDateOrderTwo(order) // c.ServeSuccessJSON(map[string]interface{}{ // "msg": "结算成功", // }) // } else { // //结算报错 // 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: 6, // } // service.CreateErrMsgLog(errlog) // c.ServeSuccessJSON(map[string]interface{}{ // "failed_code": -10, // "msg": res.Transreturnmessage, // }) // } // } else { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeNoPateintException) // return // } // } else { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeReadCardException) // 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) // // if order_src.ID == 0 { // c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisOrderNoExistParamWrong) // return // } // // 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, version_code, 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") //his_patient_id, _ := c.GetInt64("his_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.GetNewHisPatientInfo(adminUser.CurrentOrgId, his_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 = "01" } 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) order_infos, _ := service.GetHisOrderInfoByNumber(order.Number) var customs []*models.CustomDetail for _, item := range order_infos { cus := &models.CustomDetail{ PrescriptionNumber: item.OrderNumber, ChargeSerialNumber: item.FeedetlSn, } customs = append(customs, cus) } 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) service.UpdataOrderInfoStatus(order.ID, order.Number, adminUser.CurrentOrgId) 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 = "01" } 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() fmt.Println(recordDateTime) var order models.HisOrder order, _ = service.GetHisOrderByID(order_id) patient, _ := service.GetPatientByIDTwo(adminUser.CurrentOrgId, patient_id) patientPrescription, _ := service.FindPatientPrescriptionInfo(adminUser.CurrentOrgId, patient_id, order.SettleAccountsDate) adminRole_two, _ := service.GetAdminUserInfoByID(adminUser.CurrentOrgId, patientPrescription.DoctorId) his, _ := service.GetHisPatientInfo(adminUser.CurrentOrgId, patient_id, order.SettleAccountsDate) 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 "17": yiliao_leibie = "健康体检" break case "18": yiliao_leibie = "预防接种" break case "19": yiliao_leibie = "门诊输血" break case "91": yiliao_leibie = "新冠肺炎门诊" break } //departments, _ := service.Get(patientPrescription.Departments) departments, _ := service.GetDepartMentDetail(patientPrescription.Departments) if order.ID == 0 { //order, _ = service.GetHisOrderThree(recordDateTime, patient_id, adminUser.CurrentOrgId) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeHisOrderNoExistParamWrong) return } 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 = "01" } 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 { //对接了医保,走医保流程 //temp_mz_number := miConfig.Code + year + month + day + // fmt.Sprintf("%07v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(10000000)) //tempVerifyCode, tempVersionCode := ReadCardGetCode("XX001" + "|" + temp_mz_number + "|" + miConfig.Code) //yiliao_number, id_card_number, verifyCode, version_code, health_card_no, _, ret4 := ReadBasCardGetNumber("MZ002" + "|" + number + "|" + miConfig.Code + "|") //yiliao_number = "%GALMAFXJGKUKZNKWAIUH?;07857319025346309758?" //result001 := service.SzybXX001(opera_name, opera_code, miConfig.Code, yiliao_number, tempVerifyCode, temp_mz_number, tempVersionCode) 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" { var dat2 map[string]interface{} if err := json.Unmarshal([]byte(his.PatientInfo), &dat2); err == nil { fmt.Println(dat2) } else { fmt.Println(err) } userJSONBytes2, _ := json.Marshal(dat2) var res2 ResultMZ001 if err := json.Unmarshal(userJSONBytes2, &res2); err != nil { utils.ErrorLog("解析失败:%v", err) } c.ServeSuccessJSON(map[string]interface{}{ "result": res, "org_name": miConfig.OrgName, "org_code": miConfig.Code, "patient_name": patient.Name, "doctor_code": adminRole_two.DoctorCode, "doctor_name": doctor_name, "health_card_no": order.PsnNo, "health_card_no_two": res2.Transbody.Aaz500, "order_number": order.Number, "department": departments.Name, "yiliao_leibie": yiliao_leibie, "before_money": res2.Transbody.Aae240, "after_money": order.AccountPrice, "dialysis_no": patient.DialysisNo, "patient_info": res2, }) } 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) // } // his, _ := service.GetHisPatientInfo(adminUser.CurrentOrgId, patient_id, recordDateTime) // // 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, his.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 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 { // service.UpdataOrderInfoStatus(order.ID, order.Number, adminUser.CurrentOrgId) // c.ServeSuccessJSON(map[string]interface{}{ // "msg": "撤销成功", // }) // } //} func (c *SZHisApiController) CancelOrderDetail() { order_id, _ := c.GetInt64("order_id") record_time := c.GetString("record_time") patient_id, _ := c.GetInt64("patient_id") his_patient_id, _ := c.GetInt64("his_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) } his, _ := service.GetNewHisPatientInfo(adminUser.CurrentOrgId, his_patient_id, recordDateTime) 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, his.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 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 { service.UpdataOrderInfoStatus(order.ID, order.Number, adminUser.CurrentOrgId) 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(":", ConvertToString(string(str3), "gbk", "utf-8")) 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, string, error, int64) { DllDef2 := syscall.MustLoadDLL("SSCardDriver_SZ.dll") readCards := DllDef2.MustFindProc("iReadCardBas") str := request str3 := make([]byte, 1024) fmt.Println(":", request) fmt.Println(":", StrPtr(str)) ret4, _, err := readCards.Call(IntPtr(1), StrPtr(str), (uintptr)(unsafe.Pointer(&str3[0]))) fmt.Println(":", string(str3)) fmt.Println(":", ConvertToString(string(str3), "gbk", "utf-8")) 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] health_card_no := result_arr[2] return yiliao_number, id_card_number, verifyCode, versionCode, health_card_no, err, 0 } return "", "", "", "", "", err, -10 } //读卡 func ReadBasCard(request string) (string, string, error, int64) { DllDef2 := syscall.MustLoadDLL("SSCardDriver_SZ.dll") readCards := DllDef2.MustFindProc("iReadCardBas") str := request str3 := make([]byte, 1024) ret4, _, err := readCards.Call(IntPtr(1), StrPtr(str), (uintptr)(unsafe.Pointer(&str3[0]))) fmt.Println(":", string(str3)) fmt.Println(":", ConvertToString(string(str3), "gbk", "utf-8")) if ret4 == 0 { result := string(str3) result_arr := strings.Split(result, "|") //根据业务的人员信息跟设备读社保卡获取的信息进行匹配,判断是否为同一个人,相同则进行挂号操作,不同则报错 id_card_number := result_arr[1] health_card_no := result_arr[2] return id_card_number, health_card_no, err, 0 } return "", "", err, -10 } // ////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() { adminUserInfo := c.GetAdminUserInfo() orgId := adminUserInfo.CurrentOrgId admin_user_id, _ := c.GetInt64("admin_user_id") roles, _ := service.GetAdminUserInfoByID(orgId, admin_user_id) ids := c.GetString("ids") stringarr := strings.Split(ids, ",") idss := make([]int64, 0) for _, item := range stringarr { itemsss, _ := strconv.ParseInt(item, 10, 64) id := int64(itemsss) idss = append(idss, id) } //批量获取 list, _ := service.GetBatchDrugList(idss) //获取药品剂型 drugs, _ := service.GetDrugDosageForm(orgId) miConfig, _ := service.FindMedicalInsuranceInfo(orgId) var doctor_name string var doctor_code string doctor_name = roles.UserName doctor_code = "1001" var isSuccess bool = true timeLayout := "20060102" //这里就可以查看开始和结束了 for _, item := range list { recordDate := time.Unix(item.RecordDate, 0).Format(timeLayout) 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, PrescriptionMark: strconv.FormatInt(item.PrescriptionMark, 10), RecordDate: recordDate, } for _, it := range drugs { if item.DrugDosageForm == it.Value { detail.DrugDosageName = it.Code } } result := service.SzybML008(doctor_name, doctor_code, miConfig.Code, detail) 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) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } if res.Transreturncode == "00000000" { //更新备案状态 _, err := service.UpdateBaseDrugById(item.ID) fmt.Println("err", err) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } fmt.Println(isSuccess) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } } func (c *SZHisApiController) GetTreatmentProject() { adminUserInfo := c.GetAdminUserInfo() orgId := adminUserInfo.CurrentOrgId ids := c.GetString("ids") stringarr := strings.Split(ids, ",") idss := make([]int64, 0) admin_user_id, _ := c.GetInt64("admin_user_id") roles, _ := service.GetAdminUserInfoByID(orgId, admin_user_id) for _, item := range stringarr { itemsss, _ := strconv.ParseInt(item, 10, 64) id := int64(itemsss) idss = append(idss, id) } //获取项目库数据 list, _ := service.GetBathchMyPorjecgList(idss) miConfig, _ := service.FindMedicalInsuranceInfo(orgId) var doctor_name string var doctor_code string doctor_name = roles.UserName doctor_code = "1001" var isSuccess bool = true for _, item := range list { detail := &models.MyHisProject{ MedicalCode: item.MedicalCode, //社保目录 ProjectName: item.ProjectName, Price: item.Price, Category: item.Category, Remark: item.Remark, SocialSecurityDirectoryCode: item.SocialSecurityDirectoryCode, SpecailProject: item.SpecailProject, RecordDate: item.RecordDate, } result := service.SzybML009(doctor_name, doctor_code, miConfig.Code, detail) 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.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } if res.Transreturncode == "00000000" { //备案成功返回状态值 _, err := service.UpdateProjectById(item.ID) fmt.Println("err", err) } else { isSuccess = false //失败 c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } fmt.Println(isSuccess) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } } func (c *SZHisApiController) GetRevocation() { adminUserInfo := c.GetAdminUserInfo() orgId := adminUserInfo.CurrentOrgId id, _ := c.GetInt64("id") admin_user_id, _ := c.GetInt64("admin_user_id") roles, _ := service.GetAdminUserInfoByID(orgId, admin_user_id) //用来区分是药品的撤销还是耗材的撤销 1.药品 2.诊疗项目 3.材料 5.辅助器具项目 is_mark, _ := c.GetInt64("is_mark") type_id, _ := c.GetInt64("type_id") if type_id == 1 { //撤销 if is_mark == 1 { //获取药品库数据 list, _ := service.GetDrugListByDetail(orgId, id) miConfig, _ := service.FindMedicalInsuranceInfo(orgId) var doctor_name string var doctor_code string doctor_name = roles.UserName 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))) 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{ SocialSecurityDirectoryCode: item.MedicalInsuranceNumber, //社保目录 Code: item.Code, //协议机构内部目录编码 DrugName: item.DrugName, //协议机构内部目录名称 DrugSpec: item.DrugSpec, ManufacturerName: item.ManufacturerName, MinUnit: item.MinUnit, RetailPrice: item.RetailPrice, //协议机构内部项目收费价格 LimitRemark: item.LimitRemark, MedicalInsuranceNumber: item.MedicalInsuranceNumber, //社保目录 } customs = append(customs, detail) } result := service.SzybML010(doctor_name, doctor_code, miConfig.Code, customs, type_id) 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.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } if res.Transreturncode == "00000000" { //撤销成功 _, err := service.UpdateDrugByIdDetail(id) fmt.Println("err", err) } else { isSuccess = false //失败 c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } fmt.Println(isSuccess) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } } // 备案 if is_mark == 0 { adminUserInfo := c.GetAdminUserInfo() orgId := adminUserInfo.CurrentOrgId //获取药品库数据 list, _ := service.GetDrugListByDetail(orgId, id) //获取药品剂型 drugs, _ := service.GetDrugDosageForm(orgId) miConfig, _ := service.FindMedicalInsuranceInfo(orgId) var doctor_name string var doctor_code string doctor_name = roles.UserName doctor_code = "1001" var isSuccess bool = true //这里就可以查看开始和结束了 for _, item := range list { detail := &models.DrugDetail{ MedicalInsuranceNumber: item.MedicalInsuranceNumber, SocialSecurityDirectoryCode: 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, } for _, it := range drugs { if item.DrugDosageForm == it.Value { detail.DrugDosageName = it.Code } } result := service.SzybML008(doctor_name, doctor_code, miConfig.Code, detail) 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.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } if res.Transreturncode == "00000000" { //更新备案状态 _, err := service.UpdateBaseDrugById(item.ID) fmt.Println("err", err) } fmt.Println(isSuccess) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } } } if type_id == 2 { //撤销 if is_mark == 1 { //获取药品库数据 list, _ := service.GetMyPorjecgListDetail(orgId, id) miConfig, _ := service.FindMedicalInsuranceInfo(orgId) var doctor_name string var doctor_code string doctor_name = roles.UserName 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))) 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{ SocialSecurityDirectoryCode: item.MedicalCode, } customs = append(customs, detail) } result := service.SzybML010(doctor_name, doctor_code, miConfig.Code, customs, type_id) 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.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } if res.Transreturncode == "00000000" { //核销成功返回状态码 _, err := service.UpdateMyProjectById(id) fmt.Println("err", err) } else { isSuccess = false //失败 c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } fmt.Println(isSuccess) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } } //备案 if is_mark == 0 { adminUserInfo := c.GetAdminUserInfo() orgId := adminUserInfo.CurrentOrgId //获取药品库数据 list, _ := service.GetMyPorjecgListDetail(orgId, id) miConfig, _ := service.FindMedicalInsuranceInfo(orgId) var doctor_name string var doctor_code string doctor_name = roles.UserName doctor_code = "1001" var isSuccess bool = true for _, item := range list { detail := &models.MyHisProject{ MedicalCode: item.MedicalCode, //社保目录 ProjectName: item.ProjectName, Price: item.Price, Category: item.Category, Remark: item.Remark, } result := service.SzybML009(doctor_name, doctor_code, miConfig.Code, detail) 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.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } if res.Transreturncode == "00000000" { //备案成功返回状态值 _, err := service.UpdateProjectById(item.ID) fmt.Println("err", err) } else { isSuccess = false //失败 c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } fmt.Println(isSuccess) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } } } if type_id == 3 { //撤销 if is_mark == 1 { //获取药品库数据 list, _ := service.GetGoodListByDetail(orgId, id) miConfig, _ := service.FindMedicalInsuranceInfo(orgId) var doctor_name string var doctor_code string doctor_name = roles.UserName 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))) 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.SocialSecurityDirectoryCode) detail := &models.DrugDetail{ SocialSecurityDirectoryCode: item.SocialSecurityDirectoryCode, ManufacturerName: item.ManufacturerName, } customs = append(customs, detail) } result := service.SzybML010(doctor_name, doctor_code, miConfig.Code, customs, type_id) 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" { //撤销成功后改变状态 _, err := service.UpdateGoodInfoById(id) fmt.Println("err", err) } else { isSuccess = false //失败 c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } fmt.Println(isSuccess) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } } //备案 if is_mark == 0 { adminUserInfo := c.GetAdminUserInfo() orgId := adminUserInfo.CurrentOrgId //获取所有耗材信息 list, _ := service.GetGoodListByDetail(orgId, id) //获取单位 miConfig, _ := service.FindMedicalInsuranceInfo(orgId) var doctor_name string var doctor_code string doctor_name = roles.UserName doctor_code = "1001" var isSuccess bool = true for _, item := range list { detail := &models.XtGoodInformation{ GoodName: item.GoodName, SocialSecurityDirectoryCode: item.SocialSecurityDirectoryCode, ManufacturerName: item.ManufacturerName, ProductionType: item.ProductionType, SpecialMedical: item.SpecialMedical, BuyPrice: item.BuyPrice, SellPrice: item.SellPrice, Remark: item.Remark, SpecificationName: item.SpecificationName, } result := service.SzybYML007(doctor_name, doctor_code, miConfig.Code, detail) 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.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } if res.Transreturncode == "00000000" { //备案成功返回状态 _, err := service.UpdateGoodInformaitonByDetail(item.ID) fmt.Println("err", err) } else { isSuccess = false //失败 c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } fmt.Println(isSuccess) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } } } } func (c *SZHisApiController) GetDoctorList() { adminUserInfo := c.GetAdminUserInfo() orgid := adminUserInfo.CurrentOrgId ids := c.GetString("ids") admin_user_id, _ := c.GetInt64("admin_user_id") roles, _ := service.GetAdminUserInfoByID(orgid, admin_user_id) stringarr := strings.Split(ids, ",") idss := make([]int64, 0) for _, item := range stringarr { itemsss, _ := strconv.ParseInt(item, 10, 64) id := int64(itemsss) idss = append(idss, id) } //获取所有医生护士信息 //list, _ := service.GetDoctorList(orgid) //批量查询 list, _ := service.GetBatchDoctorList(idss) //获取所有角色名称 roleList, _ := service.GetRoleList(orgid) miConfig, _ := service.FindMedicalInsuranceInfo(orgid) 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 = roles.UserName doctor_code = "1001" var isSuccess bool = true for _, item := range list { depart, _ := service.GetDepartMentDetail(item.DepartmentId) detail := &models.DocDetail{ UserName: item.UserName, //医护姓名 RoleId: item.Name, //医护人员类别 Sex: strconv.FormatInt(item.Sex, 10), //性别 CardType: strconv.FormatInt(item.CardType, 10), //证件类型 IdCard: item.IdCard, //证件号码 Phone: item.Mobile, //联系电话 WorkMajorName: item.WorkMajorName, // 现从事专业名称 Nation: "1", //民族 BirthDay: 20201022, // 出生日期 WorkTime: 20201022, //参加工作日期 Education: strconv.FormatInt(item.Education, 10), //学历 StudyMajorName: item.StudyMajorName, //所学的专业名称 CertificateCode: item.MedicalCode, //医(药)师执业证书编码 MedicalCode: item.DoctorCode, //医(药)师资格证编码 MedicalRangeCode: strconv.FormatInt(item.DoctorRangeCode, 10), //医师执业范围代码 MedicalLevel: strconv.FormatInt(item.DoctorLevel, 10), //医生执业资格证中的医师级别 TypeJob: strconv.FormatInt(item.DoctorTypeJob, 10), //医生执业资格证中的执业类别 DoctorNumber: item.DoctorNumber, //医保医师编号 Licensing: strconv.FormatInt(item.Licensing, 10), //多点执业标志 DoctorServiceStatus: "", //医师医保服务资格状态 MonitoringLevel: "", //监控等级 DrugPsychotropicSubstances: "", //毒麻精神药品资格 HealthCareCode: "", // 母婴保健技术考核合格证书编号 PlanningTechnicalServiceCode: "", //计划生育技术服务人员合格证编号 PharmacistType: "", //药师类别 PharmacistPracticeCategory: "", //药师执业类别 PharmacistsLicensing: "", //药师执业范围 PharmacistRegistrationNumber: "", //执业药师注册证编号 OfficeCode: depart.Number, //科室编码 JobNumber: item.JobNumber, //工号 PostName: "", //职位名称 TechnicalJobLevelCode: "", //专业技术职务级别编码 IsActive: strconv.FormatInt(item.IsActive, 10), //在职与否 PrescriptionQualificationIdentification: strconv.FormatInt(item.PrescriptionQualificationIdentification, 10), //处方资格标识 IdentificationOutpatients: strconv.FormatInt(item.IdentificationOutpatients, 10), //门诊大病医师标识 OutpatientIllnessCategory: item.OutpatientIllnessCategory, //门诊大病类别 StartTime: 20201010, //开始日期 StaffCode: "", //医护人员编码 EndTime: 0, // 结束日期 } result := service.SzybYS001(doctor_name, doctor_code, miConfig.Code, detail) 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.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } if res.Transreturncode == "00000000" { //批量插入数据 _, err := service.UpdateAdminUserRoleById(item.AdminUserId, orgid) fmt.Println("err", err) } else { isSuccess = false //失败 c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } fmt.Println(isSuccess) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } } func (c *SZHisApiController) GetMedicalList() { adminUserInfo := c.GetAdminUserInfo() orgId := adminUserInfo.CurrentOrgId id, _ := c.GetInt64("id") is_mark, _ := c.GetInt64("is_mark") admin_user_id, _ := c.GetInt64("admin_user_id") roles, _ := service.GetAdminUserInfoByID(orgId, admin_user_id) //去登记 if is_mark == 0 { list, _ := service.GetDoctorListByDetail(orgId, id) //获取所有角色名称 roleList, _ := service.GetRoleList(orgId) miConfig, _ := service.FindMedicalInsuranceInfo(orgId) 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 = roles.UserName doctor_code = "1001" var isSuccess bool = true for _, item := range list { detail := &models.DocDetail{ UserName: item.UserName, //医护姓名 RoleId: item.Name, //医护人员类别 Sex: strconv.FormatInt(item.Sex, 10), //性别 CardType: strconv.FormatInt(item.CardType, 10), //证件类型 IdCard: item.IdCard, //证件号码 Phone: item.Mobile, //联系电话 WorkMajorName: item.WorkMajorName, // 现从事专业名称 Nation: item.Nation, //民族 BirthDay: 20201022, // 出生日期 WorkTime: 20201022, //参加工作日期 Education: strconv.FormatInt(item.Education, 10), //学历 StudyMajorName: item.StudyMajorName, //所学的专业名称 CertificateCode: item.MedicalCode, //医(药)师执业证书编码 MedicalCode: item.DoctorCode, //医(药)师资格证编码 MedicalRangeCode: strconv.FormatInt(item.DoctorRangeCode, 10), //医师执业范围代码 MedicalLevel: strconv.FormatInt(item.DoctorLevel, 10), //医生执业资格证中的医师级别 TypeJob: strconv.FormatInt(item.DoctorTypeJob, 10), //医生执业资格证中的执业类别 DoctorNumber: item.DoctorNumber, //医保医师编号 Licensing: strconv.FormatInt(item.Licensing, 10), //多点执业标志 DoctorServiceStatus: "", //医师医保服务资格状态 MonitoringLevel: "", //监控等级 DrugPsychotropicSubstances: "", //毒麻精神药品资格 HealthCareCode: "", // 母婴保健技术考核合格证书编号 PlanningTechnicalServiceCode: "", //计划生育技术服务人员合格证编号 PharmacistType: "", //药师类别 PharmacistPracticeCategory: "", //药师执业类别 PharmacistsLicensing: "", //药师执业范围 PharmacistRegistrationNumber: "", //执业药师注册证编号 OfficeCode: "", //科室编码 JobNumber: item.JobNumber, //工号 PostName: "", //职位名称 TechnicalJobLevelCode: "", //专业技术职务级别编码 IsActive: strconv.FormatInt(item.IsActive, 10), //在职与否 PrescriptionQualificationIdentification: strconv.FormatInt(item.PrescriptionQualificationIdentification, 10), //处方资格标识 IdentificationOutpatients: strconv.FormatInt(item.IdentificationOutpatients, 10), //门诊大病医师标识 OutpatientIllnessCategory: item.OutpatientIllnessCategory, //门诊大病类别 StartTime: 20201010, //开始日期 StaffCode: "", //医护人员编码 EndTime: 0, // 结束日期 } result := service.SzybYS001(doctor_name, doctor_code, miConfig.Code, detail) 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.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } if res.Transreturncode == "00000000" { //登记成功 service.UpdateAdminUserRoleById(item.ID, orgId) } else { isSuccess = false //失败 c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } fmt.Println(isSuccess) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } } //去撤销 if is_mark == 1 { //获取所有医生护士信息 list, _ := service.GetDoctorListByDetail(orgId, id) //获取所有角色名称 roleList, _ := service.GetRoleList(orgId) miConfig, _ := service.FindMedicalInsuranceInfo(orgId) 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 isSuccess bool = true for _, item := range list { detail := &models.DocDetail{ UserName: item.UserName, //医护姓名 RoleId: item.Name, //医护人员类别 Sex: strconv.FormatInt(item.Sex, 10), //性别 CardType: strconv.FormatInt(item.CardType, 10), //证件类型 IdCard: item.IdCard, //证件号码 Phone: item.Mobile, //联系电话 WorkMajorName: item.WorkMajorName, // 现从事专业名称 Nation: item.Nation, //民族 BirthDay: 20201022, // 出生日期 WorkTime: 20201022, //参加工作日期 Education: strconv.FormatInt(item.Education, 10), //学历 StudyMajorName: item.StudyMajorName, //所学的专业名称 CertificateCode: item.MedicalCode, //医(药)师执业证书编码 MedicalCode: item.DoctorCode, //医(药)师资格证编码 MedicalRangeCode: strconv.FormatInt(item.DoctorRangeCode, 10), //医师执业范围代码 MedicalLevel: strconv.FormatInt(item.DoctorLevel, 10), //医生执业资格证中的医师级别 TypeJob: strconv.FormatInt(item.DoctorTypeJob, 10), //医生执业资格证中的执业类别 DoctorNumber: item.DoctorNumber, //医保医师编号 Licensing: strconv.FormatInt(item.Licensing, 10), //多点执业标志 DoctorServiceStatus: "", //医师医保服务资格状态 MonitoringLevel: "", //监控等级 DrugPsychotropicSubstances: "", //毒麻精神药品资格 HealthCareCode: "", // 母婴保健技术考核合格证书编号 PlanningTechnicalServiceCode: "", //计划生育技术服务人员合格证编号 PharmacistType: "", //药师类别 PharmacistPracticeCategory: "", //药师执业类别 PharmacistsLicensing: "", //药师执业范围 PharmacistRegistrationNumber: "", //执业药师注册证编号 OfficeCode: "", //科室编码 JobNumber: item.JobNumber, //工号 PostName: "", //职位名称 TechnicalJobLevelCode: "", //专业技术职务级别编码 IsActive: strconv.FormatInt(item.IsActive, 10), //在职与否 PrescriptionQualificationIdentification: strconv.FormatInt(item.PrescriptionQualificationIdentification, 10), //处方资格标识 IdentificationOutpatients: strconv.FormatInt(item.IdentificationOutpatients, 10), //门诊大病医师标识 OutpatientIllnessCategory: item.OutpatientIllnessCategory, //门诊大病类别 StartTime: 20201010, //开始日期 StaffCode: "", //医护人员编码 EndTime: 0, // 结束日期 } result := service.SzybYS002(doctor_name, doctor_code, miConfig.Code, detail) 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.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } if res.Transreturncode == "00000000" { //去撤销 service.UpdateAdminUserRoleById(item.ID, orgId) } else { isSuccess = false //失败 c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } fmt.Println(isSuccess) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } } } func (c *SZHisApiController) GetUpdateMedicalList() { adminUserInfo := c.GetAdminUserInfo() orgId := adminUserInfo.CurrentOrgId //获取所有医生护士信息 list, _ := service.GetDoctorList(orgId) //获取所有角色名称 roleList, _ := service.GetRoleList(orgId) miConfig, _ := service.FindMedicalInsuranceInfo(orgId) 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 { detail := &models.DocDetail{ StaffCode: "", //医护人员编码 UserName: item.UserName, //医护人员姓名 RoleId: item.Name, //医护人员类别 Sex: "", //性别 CardType: "", //证件类型 IdCard: "", //证件号码 Phone: "", //联系电话 WorkMajorName: "", //现从事专业名称 Nation: "", //民族 BirthDay: 20201022, //出生日期 WorkTime: 20201022, //参加工作日期 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: 20201022, //开始日期 EndTime: 20201022, } customs = append(customs, detail) } result := service.SzybYS003(doctor_name, doctor_code, miConfig.Code, customs) 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.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } if res.Transreturncode == "00000000" { ress = append(ress, &res) } else { isSuccess = false //失败 c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } fmt.Println(isSuccess) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } } func (c *SZHisApiController) GetGoodsList() { adminUserInfo := c.GetAdminUserInfo() orgId := adminUserInfo.CurrentOrgId ids := c.GetString("ids") admin_user_id, _ := c.GetInt64("admin_user_id") roles, _ := service.GetAdminUserInfoByID(orgId, admin_user_id) stringarr := strings.Split(ids, ",") idss := make([]int64, 0) for _, item := range stringarr { itemsss, _ := strconv.ParseInt(item, 10, 64) id := int64(itemsss) idss = append(idss, id) } //批量获取所有耗材信息 list, _ := service.GetBatchGoodInformationList(idss) //获取单位 miConfig, _ := service.FindMedicalInsuranceInfo(orgId) var doctor_name string var doctor_code string doctor_name = roles.UserName doctor_code = "1001" var isSuccess bool = true for _, item := range list { detail := &models.XtGoodInformation{ GoodName: item.GoodName, SocialSecurityDirectoryCode: item.SocialSecurityDirectoryCode, ManufacturerName: item.ManufacturerName, ProductionType: item.ProductionType, SpecialMedical: item.SpecialMedical, BuyPrice: item.BuyPrice, SellPrice: item.SellPrice, Remark: item.Remark, SpecificationName: item.SpecificationName, } result := service.SzybYML007(doctor_name, doctor_code, miConfig.Code, detail) 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" { //备案成功返回状态 _, err := service.UpdateGoodInformaitonByDetail(item.ID) fmt.Println("err", err) } else { isSuccess = false //失败 c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } fmt.Println(isSuccess) c.ServeSuccessJSON(map[string]interface{}{ "failed_code": -10, "msg": res.Transreturnmessage, }) return } } 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 }