123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547 |
- package controllers
-
- import (
- "XT_New/enums"
- "XT_New/models"
- "XT_New/service"
- "XT_New/utils"
- "encoding/json"
- "github.com/astaxie/beego"
- "reflect"
- "strconv"
- "strings"
- "time"
- )
-
- type HisApiController struct {
- BaseAuthAPIController
- }
-
- func HisManagerApiRegistRouters() {
-
- beego.Router("/api/hispatient/list", &HisApiController{}, "get:GetHisPatientList")
- beego.Router("/api/hispatient/get", &HisApiController{}, "get:GetHisPatientInfo")
- beego.Router("/api/hisprescription/config", &HisApiController{}, "get:GetHisPrescriptionConfig")
-
- beego.Router("/api/hisprescription/create", &HisApiController{}, "post:CreateHisPrescription")
- beego.Router("/api/hisdoctoradvice/create", &HisApiController{}, "post:CreateHisDoctorAdvice")
- //beego.Router("/api/hisproject/create", &HisApiController{}, "post:CreateHisProject")
- //beego.Router("/api/hisorder/create", &HisApiController{}, "post:CreateHisOrder")
- //beego.Router("/api/hisadditional/create", &HisApiController{}, "post:CreateHisAdditionalCharge")
-
- beego.Router("/api/doctorworkstation/casehistory/list", &HisApiController{}, "get:GetHisPatientCaseHistoryList")
- beego.Router("/api/doctorworkstation/casehistory/get", &HisApiController{}, "get:GetHisPatientCaseHistory")
- beego.Router("/api/doctorworkstation/casehistory/create", &HisApiController{}, "post:CreateHisPatientCaseHistory")
- beego.Router("/api/doctorworkstation/casehistorytemplate/create", &HisApiController{}, "post:CreateCaseHistoryTemplate")
- beego.Router("/api/doctorworkstation/casehistorytemplate/get", &HisApiController{}, "get:GetCaseHistoryTemplate")
- beego.Router("/api/doctorworkstation/printcasehistory/get", &HisApiController{}, "get:GetPrintHisPatientCaseHistory")
-
- }
-
- func (c *HisApiController) GetHisPatientList() {
- types, _ := c.GetInt64("type", 0)
- record_date := c.GetString("record_date")
- timeLayout := "2006-01-02"
- loc, _ := time.LoadLocation("Local")
- theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", record_date+" 00:00:00", loc)
- if err != nil {
- c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
- return
- }
- recordDateTime := theTime.Unix()
- adminInfo := c.GetAdminUserInfo()
- patients, _ := service.GetHisPatientList(adminInfo.CurrentOrgId, "", recordDateTime)
- if types == 0 {
- c.ServeSuccessJSON(map[string]interface{}{
- "list": patients,
- })
-
- } else if types == 1 { //未就诊
- var patientsOne []*service.Schedule
- for _, item := range patients {
- if item.HisPrescription == nil || len(item.HisPrescription) <= 0 {
- patientsOne = append(patientsOne, item)
- }
- }
- c.ServeSuccessJSON(map[string]interface{}{
- "list": patientsOne,
- })
-
- } else if types == 2 { //已就诊
- var patientsTwo []*service.Schedule
- for _, item := range patients {
- if item.HisPrescription != nil && len(item.HisPrescription) > 0 {
- patientsTwo = append(patientsTwo, item)
- }
- }
- c.ServeSuccessJSON(map[string]interface{}{
- "list": patientsTwo,
- })
- }
-
- }
- func (c *HisApiController) GetHisPatientInfo() {
- patient_id, _ := c.GetInt64("patient_id")
- record_date := c.GetString("record_date")
- timeLayout := "2006-01-02"
- loc, _ := time.LoadLocation("Local")
- theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", record_date+" 00:00:00", loc)
- if err != nil {
- c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
- return
- }
- recordDateTime := theTime.Unix()
-
- admin := c.GetAdminUserInfo()
- his_patient_info, _ := service.GetHisPatientInfo(admin.CurrentOrgId, patient_id, recordDateTime)
- xt_patient_info, _ := service.GetXTPatientInfo(admin.CurrentOrgId, patient_id)
-
- prescriptions, _ := service.GetHisPrescription(admin.CurrentOrgId, patient_id, recordDateTime)
-
- //prescriptions, _ := service.GetHisPrescription(admin.CurrentOrgId, patient_id, recordDateTime)
- case_history, _ := service.GetHisPatientCaseHistoryInfo(admin.CurrentOrgId, patient_id, recordDateTime)
-
- c.ServeSuccessJSON(map[string]interface{}{
- "his_info": his_patient_info,
- "xt_info": xt_patient_info,
- "prescription": prescriptions,
- "case_history": case_history,
- })
- return
-
- }
- func (c *HisApiController) GetHisPrescriptionConfig() {
- adminInfo := c.GetAdminUserInfo()
- //获取医嘱模版
- advices, _ := service.FindAllHisAdviceTemplate(adminInfo.CurrentOrgId)
- //获取所有基础药
- drugs, _ := service.GetAllDrugLibList(adminInfo.CurrentOrgId)
-
- //drugs, _ := service.GetAllDrugLibList(adminInfo.CurrentOrgId)
- //drugs, _ := service.GetAllDrugLibList(adminInfo.CurrentOrgId)
- drugways, _, _ := service.GetDrugWayDics(adminInfo.CurrentOrgId)
- efs, _, _ := service.GetExecutionFrequencyDics(adminInfo.CurrentOrgId)
- //获取所有项目
- projects, _ := service.GetAllProjectList(adminInfo.CurrentOrgId)
- //获取所有项目组套
-
- c.ServeSuccessJSON(map[string]interface{}{
- "drugs": drugs,
- "advices_template": advices,
- "projects": projects,
- "drugways": drugways,
- "efs": efs,
- })
- }
- func (c *HisApiController) CreateHisPrescription() {
- record_date := c.GetString("record_date")
- patient_id, _ := c.GetInt64("patient_id")
- doctor, _ := c.GetInt64("doctor")
-
- diagnose := c.GetString("diagnose")
- special_sick_history := c.GetString("special_sick_history")
-
- 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
- }
-
- timeLayout := "2006-01-02"
- loc, _ := time.LoadLocation("Local")
- theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", record_date+" 00:00:00", loc)
- if err != nil {
- c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
- return
- }
- adminInfo := c.GetAdminUserInfo()
- recordDateTime := theTime.Unix()
-
- //types, _ := c.GetInt64("type")
- var prescriptions []*models.HisPrescription
-
- if dataBody["prescription"] != nil && reflect.TypeOf(dataBody["prescription"]).String() == "[]interface {}" {
- prescriptions, _ := dataBody["prescription"].([]interface{})
- if len(prescriptions) > 0 {
- for _, item := range prescriptions {
- items := item.(map[string]interface{})
-
- if items["type"] == nil || reflect.TypeOf(items["type"]).String() != "float64" {
- utils.ErrorLog("type")
- c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
- return
- }
- types := int64(items["type"].(float64))
-
- ctime := time.Now().Unix()
- prescription := &models.HisPrescription{
- PatientId: patient_id,
- UserOrgId: adminInfo.CurrentOrgId,
- RecordDate: recordDateTime,
- Ctime: ctime,
- Mtime: ctime,
- Type: types,
- Modifier: adminInfo.AdminUser.Id,
- Creator: adminInfo.AdminUser.Id,
- Status: 1,
- Doctor: doctor,
- }
- //prescriptions = append(prescriptions, prescription)
- service.SaveHisPrescription(prescription)
-
- if items["advices"] != nil && reflect.TypeOf(items["advices"]).String() == "[]interface {}" {
- advices := items["advices"].([]interface{})
- if len(advices) > 0 {
- for _, advice := range advices {
- var s models.HisDoctorAdviceInfo
-
- errcode := c.setAdviceWithJSON(&s, advice.(map[string]interface{}))
- if errcode > 0 {
- c.ServeFailJSONWithSGJErrorCode(errcode)
- return
- }
- advice.Children = append(advice.Children, &s)
- }
- }
- }
-
- }
- }
- }
-
- if err == nil {
- c.ServeSuccessJSON(map[string]interface{}{
- "msg": "保存成功",
- })
- return
-
- } else {
- c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
- return
- }
- }
-
- func (c *HisApiController) CreateHisAdditionalCharge() {
- his_patient_id, _ := c.GetInt64("his_patient_id")
- patient_id, _ := c.GetInt64("patient_id")
- record_date := c.GetString("record_date")
- timeLayout := "2006-01-02"
- loc, _ := time.LoadLocation("Local")
- theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", record_date+" 00:00:00", loc)
- if err != nil {
- c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
- return
- }
- adminInfo := c.GetAdminUserInfo()
- recordDateTime := theTime.Unix()
- 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
- }
-
- var additions []*models.HisAdditionalCharge
- if dataBody["addition"] != nil && reflect.TypeOf(dataBody["addition"]).String() == "[]interface {}" {
- additions, _ := dataBody["addition"].([]interface{})
- if len(additions) > 0 {
- for _, item := range additions {
- items := item.(map[string]interface{})
-
- if items["item_id"] == nil || reflect.TypeOf(items["item_id"]).String() != "float64" {
- utils.ErrorLog("item_id")
- c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
- return
- }
- item_id := int64(items["item_id"].(float64))
-
- if items["item_name"] == nil || reflect.TypeOf(items["item_name"]).String() != "string" {
- utils.ErrorLog("item_name")
- c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
- return
- }
- item_name := items["item_name"].(string)
-
- if items["price"] == nil || reflect.TypeOf(items["price"]).String() != "string" {
- utils.ErrorLog("price")
- c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
- return
- }
- price, _ := strconv.ParseFloat(items["price"].(string), 64)
-
- ctime := time.Now().Unix()
- additional := &models.HisAdditionalCharge{
- PatientId: patient_id,
- HisPatientId: his_patient_id,
- UserOrgId: adminInfo.CurrentOrgId,
- RecordDate: recordDateTime,
- CreatedTime: ctime,
- UpdatedTime: ctime,
- Modifier: adminInfo.AdminUser.Id,
- Creator: adminInfo.AdminUser.Id,
- Price: price,
- ItemName: item_name,
- ItemId: item_id,
- Status: 1,
- }
- additions = append(additions, additional)
- }
- }
- }
- for _, item := range additions {
- service.CreateAddtionalCharge(item)
- }
- c.ServeSuccessJSON(map[string]interface{}{
- "msg": "创建成功",
- })
- }
-
- func (c *HisApiController) CreateHisPatientCaseHistory() {
- diagnostic := c.GetString("diagnostic")
- temperature, _ := c.GetFloat("temperature")
- blood_sugar, _ := c.GetFloat("blood_sugar")
- pulse, _ := c.GetFloat("pulse")
- sbp, _ := c.GetFloat("sbp")
- dbp, _ := c.GetFloat("dbp")
- blood_fat, _ := c.GetFloat("blood_fat")
- height, _ := c.GetFloat("height")
- sick_type, _ := c.GetInt64("sick_type")
- symptom := c.GetString("symptom")
- sick_date := c.GetString("sick_date")
- is_infect, _ := c.GetInt64("is_infect")
- chief_conplaint := c.GetString("chief_conplaint")
- history_of_present_illness := c.GetString("history_of_present_illness")
- past_history := c.GetString("past_history")
- personal_history := c.GetString("personal_history")
- family_history := c.GetString("family_history")
- record_date := c.GetString("record_date")
- patient_id, _ := c.GetInt64("patient_id")
- timeLayout := "2006-01-02"
- loc, _ := time.LoadLocation("Local")
- theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", record_date+" 00:00:00", loc)
- if err != nil {
- c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
- return
- }
- recordDateTime := theTime.Unix()
- sickTime, err := time.ParseInLocation(timeLayout+" 15:04:05", sick_date+" 00:00:00", loc)
- if err != nil {
- c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
- return
- }
- sickTimes := sickTime.Unix()
- ctime := time.Now().Unix()
- caseHistory := models.HisPatientCaseHistory{
- HisPatientId: patient_id,
- Temperature: temperature,
- BloodSugar: blood_sugar,
- Pulse: pulse,
- Sbp: sbp,
- Dbp: dbp,
- Height: height,
- BloodFat: blood_fat,
- SickType: sick_type,
- Symptom: symptom,
- SickDate: sickTimes,
- IsInfect: is_infect,
- HistoryOfPresentIllness: history_of_present_illness,
- PastHistory: past_history,
- Doctor: c.GetAdminUserInfo().AdminUser.Id,
- ChiefConplaint: chief_conplaint,
- PersonalHistory: personal_history,
- FamilyHistory: family_history,
- Diagnostic: diagnostic,
- UserOrgId: c.GetAdminUserInfo().CurrentOrgId,
- Status: 1,
- Ctime: ctime,
- Mtime: ctime,
- RecordDate: recordDateTime,
- }
- err = service.SaveHisPatientCaseHistory(caseHistory)
- if err != nil {
- c.ServeSuccessJSON(map[string]interface{}{
- "msg": "保存成功",
- })
- }
- }
- func (c *HisApiController) GetHisPatientCaseHistoryList() {
- patient_id, _ := c.GetInt64("patient_id", 0)
- adminUser := c.GetAdminUserInfo()
- caseHistorys, _ := service.GetHisPatientCaseHistoryList(adminUser.CurrentOrgId, patient_id)
- c.ServeSuccessJSON(map[string]interface{}{
- "list": caseHistorys,
- })
-
- }
- func (c *HisApiController) GetHisPatientCaseHistory() {
- record_date, _ := c.GetInt64("record_date", 0)
- patient_id, _ := c.GetInt64("patient_id", 0)
- admin := c.GetAdminUserInfo()
- info, _ := service.GetHisPatientInfo(admin.CurrentOrgId, patient_id, record_date)
- case_history, _ := service.GetHisPatientCaseHistoryInfo(admin.CurrentOrgId, patient_id, record_date)
- c.ServeSuccessJSON(map[string]interface{}{
- "info": info,
- "case_history": case_history,
- })
-
- }
- func (c *HisApiController) CreateCaseHistoryTemplate() {
- template_name := c.GetString("template_name")
- template_remark := c.GetString("template_remark")
- doctor := c.GetAdminUserInfo().AdminUser.Id
- diagnostic := c.GetString("diagnostic")
- chief_conplaint := c.GetString("chief_conplaint")
- history_of_present_illness := c.GetString("history_of_present_illness")
- past_history := c.GetString("past_history")
- personal_history := c.GetString("personal_history")
- family_history := c.GetString("family_history")
- record_date := c.GetString("record_date")
-
- timeLayout := "2006-01-02"
- loc, _ := time.LoadLocation("Local")
-
- theTime, err := time.ParseInLocation(timeLayout+" 15:04:05", record_date+" 00:00:00", loc)
- if err != nil {
- c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeParamWrong)
- return
- }
- recordDateTime := theTime.Unix()
-
- ctime := time.Now().Unix()
-
- template := models.HisCaseHistoryTemplate{
- HistoryOfPresentIllness: history_of_present_illness,
- PastHistory: past_history,
- ChiefConplaint: chief_conplaint,
- PersonalHistory: personal_history,
- FamilyHistory: family_history,
- Diagnostic: diagnostic,
- UserOrgId: c.GetAdminUserInfo().CurrentOrgId,
- Status: 1,
- Ctime: ctime,
- Mtime: ctime,
- RecordDate: recordDateTime,
- TemplateName: template_name,
- TemplateRemark: template_remark,
- Creator: doctor,
- Modifier: doctor,
- }
-
- err = service.SaveHisPatientCaseHistoryTemplate(template)
-
- if err == nil {
- c.ServeSuccessJSON(map[string]interface{}{
- "msg": "保存成功",
- })
-
- } else {
- c.ServeFailJSONWithSGJErrorCode(enums.ErrorCodeSystemError)
- return
- }
-
- }
- func (c *HisApiController) GetCaseHistoryTemplate() {
- admin := c.GetAdminUserInfo()
- template, _ := service.GetHisPatientCaseHistoryTemplate(admin.CurrentOrgId)
- c.ServeSuccessJSON(map[string]interface{}{
- "template": template,
- })
-
- }
- func (c *HisApiController) GetPrintHisPatientCaseHistory() {
-
- }
- func (c *HisApiController) setAdviceWithJSON(advice *models.HisDoctorAdviceInfo, json map[string]interface{}) int {
-
- if json["advice_name"] == nil || reflect.TypeOf(json["advice_name"]).String() != "string" {
- utils.ErrorLog("advice_name")
- return enums.ErrorCodeParamWrong
- }
- adviceName, _ := json["advice_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["way"] == nil {
- advice.Way = 0
-
- } else {
- if json["way"] != nil || reflect.TypeOf(json["way"]).String() == "float64" {
- way := int64(json["way"].(float64))
- advice.Way = way
- }
-
- }
-
- if json["drug_id"] == nil {
- advice.DrugId = 0
- } else {
- if json["drug_id"] != nil || reflect.TypeOf(json["drug_id"]).String() == "float64" {
- drug_id := int64(json["drug_id"].(float64))
- advice.DrugId = drug_id
- }
- }
-
- if json["drug_name_id"] == nil {
- advice.DrugNameId = 0
- } else {
- if json["drug_name_id"] != nil || reflect.TypeOf(json["drug_name_id"]).String() == "float64" {
- drug_name_id := int64(json["drug_name_id"].(float64))
- advice.DrugNameId = drug_name_id
- }
- }
-
- if json["drug_spec_unit"] != nil && reflect.TypeOf(json["drug_spec_unit"]).String() == "string" {
- drugSpecUnit, _ := json["drug_spec_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
- }
- return 0
- }
|