2023-09-15 17:09:19 +08:00

115 lines
4.2 KiB
Go

package service
import (
"errors"
"fmt"
"hospital-admin-api/api/dao"
"hospital-admin-api/api/responses/orderInquiryCaseResponse"
"hospital-admin-api/utils"
"strconv"
"strings"
)
// CaseService 病例
type CaseService struct {
}
// GetOrderInquiryCaseByInquiryCaseId 获取病例-问诊订单
func (r *CaseService) GetOrderInquiryCaseByInquiryCaseId(inquiryCaseId int64) (u *orderInquiryCaseResponse.OrderInquiryCase, err error) {
orderInquiryCaseDao := dao.OrderInquiryCaseDao{}
orderInquiryCase, err := orderInquiryCaseDao.GetOrderInquiryCaseById(inquiryCaseId)
if orderInquiryCase == nil {
return nil, errors.New("数据错误,无问诊病例")
}
// 获取患者家庭成员信息-健康情况
patientFamilyHealthDao := dao.PatientFamilyHealthDao{}
patientFamilyHealth, err := patientFamilyHealthDao.GetPatientFamilyHealthByFamilyId(orderInquiryCase.FamilyId)
// 获取患者家庭成员信息表-个人情况
patientFamilyPersonalDao := dao.PatientFamilyPersonalDao{}
patientFamilyPersonal, err := patientFamilyPersonalDao.GetPatientFamilyPersonalByFamilyId(orderInquiryCase.FamilyId)
// 获取用药意向
inquiryCaseProductDao := dao.InquiryCaseProductDao{}
inquiryCaseProducts, err := inquiryCaseProductDao.GetInquiryCaseProductListByInquiryCaseId(orderInquiryCase.InquiryCaseId)
// 处理返回数据
u = &orderInquiryCaseResponse.OrderInquiryCase{
InquiryCaseId: strconv.FormatInt(orderInquiryCase.InquiryCaseId, 10),
UserId: strconv.FormatInt(orderInquiryCase.UserId, 10),
PatientId: strconv.FormatInt(orderInquiryCase.PatientId, 10),
OrderInquiryId: strconv.FormatInt(orderInquiryCase.OrderInquiryId, 10),
FamilyId: strconv.FormatInt(orderInquiryCase.FamilyId, 10),
Relation: orderInquiryCase.Relation,
Status: orderInquiryCase.Status,
Name: orderInquiryCase.Name,
Sex: orderInquiryCase.Sex,
Age: orderInquiryCase.Age,
Height: orderInquiryCase.Height,
Weight: orderInquiryCase.Weight,
DiseaseClassId: strconv.FormatInt(orderInquiryCase.DiseaseClassId, 10),
DiseaseClassName: orderInquiryCase.DiseaseClassName,
DiagnosisDate: orderInquiryCase.DiagnosisDate,
DiseaseDesc: orderInquiryCase.DiseaseDesc,
IsAllergyHistory: orderInquiryCase.IsAllergyHistory,
AllergyHistory: orderInquiryCase.AllergyHistory,
IsFamilyHistory: orderInquiryCase.IsFamilyHistory,
FamilyHistory: orderInquiryCase.FamilyHistory,
IsPregnant: orderInquiryCase.IsPregnant,
Pregnant: orderInquiryCase.Pregnant,
IsTaboo: orderInquiryCase.IsTaboo,
CreatedAt: orderInquiryCase.CreatedAt,
UpdatedAt: orderInquiryCase.UpdatedAt,
}
if patientFamilyHealth != nil {
u.DiagnosisHospital = patientFamilyHealth.DiagnosisHospital
u.IsTakeMedicine = patientFamilyHealth.IsTakeMedicine
u.DrugsName = patientFamilyHealth.DrugsName
}
if patientFamilyPersonal != nil {
u.DrinkWineStatus = patientFamilyPersonal.DrinkWineStatus
u.SmokeStatus = patientFamilyPersonal.SmokeStatus
u.ChemicalCompoundStatus = patientFamilyPersonal.ChemicalCompoundStatus
u.ChemicalCompoundDescribe = patientFamilyPersonal.ChemicalCompoundDescribe
u.IsOperation = patientFamilyPersonal.IsOperation
u.Operation = patientFamilyPersonal.Operation
}
// 处理复诊凭证
var diagnoseImages []*string
if orderInquiryCase.DiagnoseImages != "" {
diagnoseImages := strings.Split(orderInquiryCase.DiagnoseImages, ",")
for i, image := range diagnoseImages {
diagnoseImages[i] = utils.AddOssDomain(image)
}
}
u.DiagnoseImages = diagnoseImages
// 处理用药意向
var product []*string
if inquiryCaseProducts != nil {
for i, inquiryCaseProduct := range inquiryCaseProducts {
// 获取商品数据
productDao := dao.ProductDao{}
productData, err := productDao.GetProductById(inquiryCaseProduct.ProductId)
if err != nil {
return nil, errors.New("数据错误")
}
caseProductNum := fmt.Sprintf("%d", inquiryCaseProduct.CaseProductNum)
productName := productData.ProductName + productData.ProductSpec + "(" + caseProductNum + productData.PackagingUnit + ")"
product[i] = &productName
}
}
u.Product = product
return u, nil
}