package controllers import ( "Xcx_New/enums" "Xcx_New/models" "Xcx_New/service" "Xcx_New/utils" "encoding/json" "github.com/astaxie/beego" "reflect" "strconv" "time" ) type HisConfigApiController struct { BaseAuthAPIController } func HisConfigApiRegistRouters() { beego.Router("/api/his/patient/list", &HisConfigApiController{}, "get:GetAllHisPatientsList") beego.Router("/api/his/prescriptiontemplate/list", &HisConfigApiController{}, "get:GetPrescriptionTemplateList") beego.Router("/api/his/prescriptiontemplate/info", &HisConfigApiController{}, "get:GetPrescriptionTemplateInfo") beego.Router("/api/his/prescriptiontemplate/create", &HisConfigApiController{}, "post:CreatePrescriptionTemplate") beego.Router("/api/his/prescriptiontemplate/delete", &HisConfigApiController{}, "post:DeletePrescriptionTemplate") beego.Router("/api/his/prescriptioninfotemplate/delete", &HisConfigApiController{}, "post:DeletePrescriptionInfoTemplate") beego.Router("/api/his/advicetemplate/delete", &HisConfigApiController{}, "post:DeleteAdviceTemplate") beego.Router("/api/his/projecttemplate/delete", &HisConfigApiController{}, "post:DeleteProjectTemplate") } func (c *HisConfigApiController) GetAllHisPatientsList() { patients, _, _ := service.GetAllPatientList(c.GetAdminUserInfo().CurrentOrgId) c.ServeSuccessJSON(map[string]interface{}{ "list": patients, }) } func (c *HisConfigApiController) GetPrescriptionTemplateList() { patient_id, _ := c.GetInt64("patient_id", 0) page, _ := c.GetInt64("page", 0) limit, _ := c.GetInt64("limit", 0) if page <= 0 { page = 1 } if limit <= 0 { limit = 10 } if patient_id <= 0 { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } templates, total, _ := service.GetHisPrescriptionTemplatesList(patient_id, c.GetAdminUserInfo().CurrentOrgId, page, limit) c.ServeSuccessJSON(map[string]interface{}{ "list": templates, "total": total, }) } func (c *HisConfigApiController) GetPrescriptionTemplateInfo() { id, _ := c.GetInt64("id", 0) template, _ := service.GetHisPrescriptionTemplateByID(id) prescriptions, _ := service.GetHisPrescriptionTemplate(template.ID, c.GetAdminUserInfo().CurrentOrgId) c.ServeSuccessJSON(map[string]interface{}{ "template": template, "prescriptions": prescriptions, }) } func (c *HisConfigApiController) CreatePrescriptionTemplate() { id, _ := c.GetInt64("id") name := c.GetString("name") mode_id, _ := c.GetInt64("mode_id", 0) types, _ := c.GetInt64("type", 0) patient_id, _ := c.GetInt64("patient_id", 0) types = 1 adminInfo := c.GetAdminUserInfo() src_template, _ := service.GetHisPrescriptionTemplateByID(id) if src_template.ID == 0 { template := models.HisPrescriptionTemplate{ UserOrgId: c.GetAdminUserInfo().CurrentOrgId, PatientId: patient_id, Type: types, Status: 1, Ctime: time.Now().Unix(), Mtime: time.Now().Unix(), Name: name, Mode: mode_id, } src_template = template service.CreateHisPrescriptionTemplate(&src_template) } else { src_template.Name = name src_template.Mode = mode_id service.SaveHisPrescriptionTemplate(&src_template) } dataBody := make(map[string]interface{}, 0) err := json.Unmarshal(c.Ctx.Input.RequestBody, &dataBody) if err != nil { utils.ErrorLog(err.Error()) c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } if dataBody["prescriptions"] != nil && reflect.TypeOf(dataBody["prescriptions"]).String() == "[]interface {}" { prescriptions, _ := dataBody["prescriptions"].([]interface{}) if len(prescriptions) > 0 { for _, item := range prescriptions { items := item.(map[string]interface{}) if items["id"] == nil || reflect.TypeOf(items["id"]).String() != "float64" { utils.ErrorLog("id") c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } id := int64(items["id"].(float64)) if items["type"] == nil || reflect.TypeOf(items["type"]).String() != "float64" { utils.ErrorLog("type") c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } types := int64(items["type"].(float64)) if items["med_type"] == nil || reflect.TypeOf(items["med_type"]).String() != "float64" { utils.ErrorLog("med_type") c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong) return } med_type := strconv.Itoa(int(items["med_type"].(float64))) ctime := time.Now().Unix() prescription := &models.HisPrescriptionInfoTemplate{ ID: id, PatientId: patient_id, UserOrgId: adminInfo.CurrentOrgId, Ctime: ctime, Mtime: ctime, Type: types, Modifier: adminInfo.AdminUser.Id, Creator: adminInfo.AdminUser.Id, Status: 1, PTemplateId: src_template.ID, MedType: med_type, } service.CreateHisPrescriptionInfoTemplate(prescription) if items["advices"] != nil && reflect.TypeOf(items["advices"]).String() == "[]interface {}" { advices := items["advices"].([]interface{}) //group := service.GetMaxAdviceGroupID(adminInfo.CurrentOrgId) groupNo := int64(0) ctime := time.Now().Unix() mtime := ctime if len(advices) > 0 { for _, advice := range advices { var s models.HisPrescriptionAdviceTemplate s.PrescriptionId = prescription.ID s.AdviceType = 2 s.StopState = 2 s.ExecutionState = 2 s.Status = 1 s.UserOrgId = adminInfo.CurrentOrgId s.Groupno = groupNo s.CreatedTime = ctime s.UpdatedTime = mtime s.PatientId = patient_id errcode := c.setAdviceTemplateWithJSON(&s, advice.(map[string]interface{})) if errcode > 0 { c.ServeFailJSONWithSGJErrorCode(errcode) return } service.CreateHisPrescriptionAdviceTemplate(&s) } } } if items["project"] != nil && reflect.TypeOf(items["project"]).String() == "[]interface {}" { projects := items["project"].([]interface{}) if len(projects) > 0 { for _, project := range projects { var p models.HisPrescriptionProjectTemplate p.PrescriptionId = prescription.ID p.Ctime = time.Now().Unix() p.Mtime = time.Now().Unix() p.PatientId = patient_id p.UserOrgId = adminInfo.CurrentOrgId p.Status = 1 errcode := c.setProjectTemplateWithJSON(&p, project.(map[string]interface{})) if errcode > 0 { c.ServeFailJSONWithSGJErrorCode(errcode) return } service.CreateHisPrescriptionProjectTemplate(&p) } } } } c.ServeSuccessJSON(map[string]interface{}{ "msg": "创建成功", }) } } } func (c *HisConfigApiController) DeletePrescriptionTemplate() { id, _ := c.GetInt64("id") err := service.DelelteHisPrescriptionTemplate(id, c.GetAdminUserInfo().CurrentOrgId) if err == nil { c.ServeSuccessJSON(map[string]interface{}{ "msg": "删除成功", }) return } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) return } } func (c *HisConfigApiController) DeletePrescriptionInfoTemplate() { prescription_id, _ := c.GetInt64("id") err := service.DelelteHisPrescriptionInfoTemplate(prescription_id, c.GetAdminUserInfo().CurrentOrgId) if err == nil { c.ServeSuccessJSON(map[string]interface{}{ "msg": "删除成功", }) return } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) return } } func (c *HisConfigApiController) DeleteAdviceTemplate() { id, _ := c.GetInt64("id") err := service.DelelteHisPrescriptionAdviceTemplate(id, c.GetAdminUserInfo().CurrentOrgId) if err == nil { c.ServeSuccessJSON(map[string]interface{}{ "msg": "删除成功", }) return } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) return } } func (c *HisConfigApiController) DeleteProjectTemplate() { id, _ := c.GetInt64("id") err := service.DelelteHisPrescriptionProjectTemplate(id, c.GetAdminUserInfo().CurrentOrgId) if err == nil { c.ServeSuccessJSON(map[string]interface{}{ "msg": "删除成功", }) return } else { c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError) return } } func (c *HisConfigApiController) setAdviceTemplateWithJSON(advice *models.HisPrescriptionAdviceTemplate, json map[string]interface{}) int { if json["advice_id"] != nil || reflect.TypeOf(json["advice_id"]).String() == "float64" { advice_id := int64(json["advice_id"].(float64)) advice.ID = advice_id } if json["drug_name"] == nil || reflect.TypeOf(json["drug_name"]).String() != "string" { utils.ErrorLog("drug_name") return enums.ErrorCodeParamWrong } adviceName, _ := json["drug_name"].(string) if len(adviceName) == 0 { utils.ErrorLog("len(advice_name) == 0") return enums.ErrorCodeParamWrong } advice.AdviceName = adviceName adviceDesc, _ := json["advice_desc"].(string) advice.AdviceDesc = adviceDesc if json["drug_spec"] != nil && reflect.TypeOf(json["drug_spec"]).String() == "string" { drugSpec, _ := strconv.ParseFloat(json["drug_spec"].(string), 64) advice.DrugSpec = drugSpec } if json["remark"] != nil && reflect.TypeOf(json["remark"]).String() == "string" { remark, _ := json["remark"].(string) advice.Remark = remark } if json["id"] == nil { advice.DrugId = 0 } else { if json["id"] != nil || reflect.TypeOf(json["id"]).String() == "float64" { drug_id := int64(json["id"].(float64)) advice.DrugId = drug_id } } if json["min_unit"] != nil && reflect.TypeOf(json["min_unit"]).String() == "string" { drugSpecUnit, _ := json["min_unit"].(string) advice.DrugSpecUnit = drugSpecUnit } if json["single_dose"] != nil && reflect.TypeOf(json["single_dose"]).String() == "string" { singleDose, _ := strconv.ParseFloat(json["single_dose"].(string), 64) advice.SingleDose = singleDose } if json["single_dose_unit"] != nil && reflect.TypeOf(json["single_dose_unit"]).String() == "string" { singleDoseUnit, _ := json["single_dose_unit"].(string) advice.SingleDoseUnit = singleDoseUnit } if json["prescribing_number"] != nil && reflect.TypeOf(json["prescribing_number"]).String() == "string" { prescribingNumber, _ := strconv.ParseFloat(json["prescribing_number"].(string), 64) advice.PrescribingNumber = prescribingNumber } if json["prescribing_number_unit"] != nil && reflect.TypeOf(json["prescribing_number_unit"]).String() == "string" { prescribingNumberUnit, _ := json["prescribing_number_unit"].(string) advice.PrescribingNumberUnit = prescribingNumberUnit } if json["delivery_way"] != nil && reflect.TypeOf(json["delivery_way"]).String() == "string" { deliveryWay, _ := json["delivery_way"].(string) advice.DeliveryWay = deliveryWay } if json["execution_frequency"] != nil && reflect.TypeOf(json["execution_frequency"]).String() == "string" { executionFrequency, _ := json["execution_frequency"].(string) advice.ExecutionFrequency = executionFrequency } if json["retail_price"] != nil || reflect.TypeOf(json["retail_price"]).String() == "string" { price, _ := strconv.ParseFloat(json["retail_price"].(string), 64) advice.Price = price } if json["medical_insurance_number"] != nil || reflect.TypeOf(json["medical_insurance_number"]).String() == "string" { med_list_codg, _ := json["medical_insurance_number"].(string) advice.MedListCodg = med_list_codg } if json["day"] != nil || reflect.TypeOf(json["day"]).String() == "float64" { day := int64(json["day"].(float64)) advice.Day = day } return 0 } func (c *HisConfigApiController) setProjectTemplateWithJSON(project *models.HisPrescriptionProjectTemplate, json map[string]interface{}) int { if json["id"] != nil || reflect.TypeOf(json["id"]).String() == "float64" { id := int64(json["id"].(float64)) project.ID = id } if json["type"] != nil || reflect.TypeOf(json["type"]).String() == "float64" { types := int64(json["type"].(float64)) project.Type = types } if json["project_id"] != nil || reflect.TypeOf(json["project_id"]).String() == "float64" { project_id := int64(json["project_id"].(float64)) project.ProjectId = project_id } if json["price"] != nil || reflect.TypeOf(json["price"]).String() == "string" { price, _ := strconv.ParseFloat(json["price"].(string), 64) project.Price = price } if json["total"] != nil && reflect.TypeOf(json["total"]).String() == "string" { total, _ := json["total"].(string) totals, _ := strconv.ParseInt(total, 10, 64) project.Count = totals } if json["medical_code"] != nil && reflect.TypeOf(json["medical_code"]).String() == "string" { medical_code, _ := json["medical_code"].(string) project.MedListCodg = medical_code } if json["single_dose"] != nil && reflect.TypeOf(json["single_dose"]).String() == "string" { single_dose, _ := json["single_dose"].(string) project.SingleDose = single_dose } if json["delivery_way"] != nil && reflect.TypeOf(json["delivery_way"]).String() == "string" { delivery_way, _ := json["delivery_way"].(string) project.DeliveryWay = delivery_way } if json["execution_frequency"] != nil && reflect.TypeOf(json["execution_frequency"]).String() == "string" { execution_frequency, _ := json["execution_frequency"].(string) project.ExecutionFrequency = execution_frequency } if json["remark"] != nil && reflect.TypeOf(json["remark"]).String() == "string" { remark, _ := json["remark"].(string) project.Remark = remark } if json["number_days"] != nil && reflect.TypeOf(json["number_days"]).String() == "string" { day, _ := json["number_days"].(string) project.Day = day } if json["unit"] != nil && reflect.TypeOf(json["unit"]).String() == "string" { unit, _ := json["unit"].(string) project.Unit = unit } return 0 }