115 lines
4.2 KiB
Go
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 _, 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 = append(product, &productName)
|
|
}
|
|
}
|
|
|
|
u.Product = product
|
|
|
|
return u, nil
|
|
}
|