173 lines
8.1 KiB
Go
173 lines
8.1 KiB
Go
package dto
|
||
|
||
import (
|
||
"fmt"
|
||
"hospital-admin-api/api/dao"
|
||
"hospital-admin-api/api/model"
|
||
"hospital-admin-api/utils"
|
||
)
|
||
|
||
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 {
|
||
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: m.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,
|
||
DiagnoseImages: m.DiagnoseImages,
|
||
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
|
||
}
|