package dto import ( "fmt" "hospital-admin-api/api/dao" "hospital-admin-api/api/model" "hospital-admin-api/utils" "strings" ) type OrderInquiryCaseDto struct { InquiryCaseId string `json:"inquiry_case_id"` // 主键id UserId string `json:"user_id"` // 用户id PatientId string `json:"patient_id"` // 患者id OrderInquiryId string `json:"order_inquiry_id"` // 订单-问诊id;NOT NULL FamilyId string `json:"family_id"` // 家庭成员id Relation *int `json:"relation"` // 与患者关系(1:本人 2:父母 3:爱人 4:子女 5:亲戚 6:其他) Status *int `json:"status"` // 状态(1:正常 2:删除) Name string `json:"name"` // 患者名称 Sex *int `json:"sex"` // 患者性别(0:未知 1:男 2:女) Age *int `json:"age"` // 患者年龄 Height string `json:"height"` // 身高(cm) Weight string `json:"weight"` // 体重(kg) DiseaseClassId string `json:"disease_class_id"` // 疾病分类id-系统 DiseaseClassName string `json:"disease_class_name"` // 疾病名称-系统 DiagnosisDate model.LocalTime `json:"diagnosis_date"` // 确诊日期 DiseaseDesc string `json:"disease_desc"` // 病情描述(主诉) DiagnoseImages []*string `json:"diagnose_images"` // 复诊凭证(多个使用逗号分隔) IsAllergyHistory *int `json:"is_allergy_history"` // 是否存在过敏史(0:否 1:是) AllergyHistory string `json:"allergy_history"` // 过敏史描述 IsFamilyHistory *int `json:"is_family_history"` // 是否存在家族病史(0:否 1:是) FamilyHistory string `json:"family_history"` // 家族病史描述 IsPregnant *int `json:"is_pregnant"` // 是否备孕、妊娠、哺乳期(0:否 1:是) Pregnant string `json:"pregnant"` // 备孕、妊娠、哺乳期描述 IsTaboo *int `json:"is_taboo"` // 是否服用过禁忌药物,且无相关禁忌(0:否 1:是)问诊购药时存在 DiagnosisHospital string `json:"diagnosis_hospital"` // 确诊医院 IsTakeMedicine *int `json:"is_take_medicine"` // 正在服药(0:否 1:是) DrugsName string `json:"drugs_name"` // 正在服药名称 DrinkWineStatus *int `json:"drink_wine_status"` // 饮酒状态(1:从不 2:偶尔 3:经常 4:每天 5:已戒酒) SmokeStatus *int `json:"smoke_status"` // 吸烟状态(1:从不 2:偶尔 3:经常 4:每天 5:已戒烟) ChemicalCompoundStatus *int `json:"chemical_compound_status"` // 化合物状态(1:从不 2:偶尔 3:经常 4:每天) ChemicalCompoundDescribe string `json:"chemical_compound_describe"` // 化合物描述 IsOperation *int `json:"is_operation"` // 是否存在手术(0:否 1:是) Operation string `json:"operation"` // 手术描述 Product []*string `json:"product"` // 用药意向 CreatedAt model.LocalTime `json:"created_at"` // 创建时间 UpdatedAt model.LocalTime `json:"updated_at"` // 修改时间 } func GetOrderInquiryCaseDto(m *model.OrderInquiryCase) *OrderInquiryCaseDto { // 复诊凭证 var diagnoseImages []*string if m.DiagnoseImages != "" { diagnoseImages := strings.Split(m.DiagnoseImages, ",") for i, image := range diagnoseImages { diagnoseImages[i] = utils.AddOssDomain(image) } } return &OrderInquiryCaseDto{ InquiryCaseId: fmt.Sprintf("%d", m.InquiryCaseId), UserId: fmt.Sprintf("%d", m.InquiryCaseId), PatientId: fmt.Sprintf("%d", m.InquiryCaseId), OrderInquiryId: fmt.Sprintf("%d", m.InquiryCaseId), FamilyId: fmt.Sprintf("%d", m.InquiryCaseId), Relation: m.Relation, Status: m.Status, Name: m.Name, Sex: m.Sex, Age: m.Age, Height: m.Height, Weight: m.Weight, DiseaseClassId: fmt.Sprintf("%d", m.InquiryCaseId), DiseaseClassName: m.DiseaseClassName, DiagnosisDate: m.DiagnosisDate, DiseaseDesc: m.DiseaseDesc, DiagnoseImages: diagnoseImages, IsAllergyHistory: m.IsAllergyHistory, AllergyHistory: m.AllergyHistory, IsFamilyHistory: m.IsFamilyHistory, FamilyHistory: m.FamilyHistory, IsPregnant: m.IsPregnant, Pregnant: m.Pregnant, IsTaboo: m.IsTaboo, CreatedAt: m.CreatedAt, UpdatedAt: m.UpdatedAt, } } func GetMaskOrderInquiryCaseDto(m *model.OrderInquiryCase) *OrderInquiryCaseDto { return &OrderInquiryCaseDto{ InquiryCaseId: fmt.Sprintf("%d", m.InquiryCaseId), UserId: fmt.Sprintf("%d", m.InquiryCaseId), PatientId: fmt.Sprintf("%d", m.InquiryCaseId), OrderInquiryId: fmt.Sprintf("%d", m.InquiryCaseId), FamilyId: fmt.Sprintf("%d", m.InquiryCaseId), Relation: m.Relation, Status: m.Status, Name: utils.MaskNameStr(m.Name, 0), Sex: m.Sex, Age: m.Age, DiseaseClassId: fmt.Sprintf("%d", m.InquiryCaseId), DiseaseClassName: m.DiseaseClassName, DiagnosisDate: m.DiagnosisDate, DiseaseDesc: m.DiseaseDesc, CreatedAt: m.CreatedAt, UpdatedAt: m.UpdatedAt, } } func GetOrderInquiryCaseListDto(m []*model.OrderInquiryCase) []OrderInquiryCaseDto { // 处理返回值 responses := make([]OrderInquiryCaseDto, len(m)) if len(m) > 0 { for i, v := range m { response := OrderInquiryCaseDto{ InquiryCaseId: fmt.Sprintf("%d", v.InquiryCaseId), UserId: fmt.Sprintf("%d", v.UserId), PatientId: fmt.Sprintf("%d", v.PatientId), OrderInquiryId: fmt.Sprintf("%d", v.OrderInquiryId), FamilyId: fmt.Sprintf("%d", v.FamilyId), Name: v.Name, Sex: v.Sex, Age: v.Age, DiseaseClassName: v.DiseaseClassName, DiseaseDesc: v.DiseaseDesc, } // 将转换后的结构体添加到新切片中 responses[i] = response } } return responses } // LoadPatientFamilyHealthAttr 加载健康属性 func (r *OrderInquiryCaseDto) LoadPatientFamilyHealthAttr(m *model.PatientFamilyHealth) *OrderInquiryCaseDto { if m != nil { r.DiagnosisHospital = m.DiagnosisHospital r.IsTakeMedicine = m.IsTakeMedicine r.DrugsName = m.DrugsName } return r } // LoadPatientFamilyPersonalAttr 加载个人情况属性 func (r *OrderInquiryCaseDto) LoadPatientFamilyPersonalAttr(m *model.PatientFamilyPersonal) *OrderInquiryCaseDto { if m != nil { r.DrinkWineStatus = m.DrinkWineStatus r.SmokeStatus = m.SmokeStatus r.ChemicalCompoundStatus = m.ChemicalCompoundStatus r.ChemicalCompoundDescribe = m.ChemicalCompoundDescribe r.IsOperation = m.IsOperation r.Operation = m.Operation } return r } // LoadInquiryCaseProduct 加载用药意向 func (r *OrderInquiryCaseDto) LoadInquiryCaseProduct(m []*model.InquiryCaseProduct) *OrderInquiryCaseDto { if len(m) > 0 { var product []*string for _, inquiryCaseProduct := range m { // 获取商品数据 productDao := dao.ProductDao{} productData, err := productDao.GetProductById(inquiryCaseProduct.ProductId) if err != nil { return r } caseProductNum := fmt.Sprintf("%d", inquiryCaseProduct.CaseProductNum) productName := productData.ProductName + productData.ProductSpec + "(" + caseProductNum + productData.PackagingUnit + ")" product = append(product, &productName) } r.Product = product } return r }