This commit is contained in:
LiJianZhao 2025-05-06 14:56:57 +08:00
parent c64bed4efa
commit 3a0d786691
14 changed files with 118 additions and 27 deletions

View File

@ -8,6 +8,9 @@ import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombi
public class PinYinUtil { public class PinYinUtil {
/**
* 获取全文拼音
*/
public static String getPinyinFull(String inputString) { public static String getPinyinFull(String inputString) {
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat(); HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
format.setCaseType(HanyuPinyinCaseType.LOWERCASE); // 小写 format.setCaseType(HanyuPinyinCaseType.LOWERCASE); // 小写

View File

@ -6,6 +6,7 @@ import com.syjiaer.clinic.server.controller.BaseController;
import com.syjiaer.clinic.server.entity.diagnosis.dto.ChargeQueueQuery; import com.syjiaer.clinic.server.entity.diagnosis.dto.ChargeQueueQuery;
import com.syjiaer.clinic.server.entity.diagnosis.dto.MedicalRecordSaveDto; import com.syjiaer.clinic.server.entity.diagnosis.dto.MedicalRecordSaveDto;
import com.syjiaer.clinic.server.entity.diagnosis.vo.ChargeQueueVo; import com.syjiaer.clinic.server.entity.diagnosis.vo.ChargeQueueVo;
import com.syjiaer.clinic.server.entity.diagnosis.vo.MedicalHistoryVo;
import com.syjiaer.clinic.server.entity.diagnosis.vo.MedicalRecordVo; import com.syjiaer.clinic.server.entity.diagnosis.vo.MedicalRecordVo;
import com.syjiaer.clinic.server.entity.patient.vo.SeeDoctorInfoVo; import com.syjiaer.clinic.server.entity.patient.vo.SeeDoctorInfoVo;
import com.syjiaer.clinic.server.service.diagnosis.MedicalRecordService; import com.syjiaer.clinic.server.service.diagnosis.MedicalRecordService;
@ -38,7 +39,7 @@ public class MedicalRecordController extends BaseController {
* @return * @return
*/ */
@RequestMapping("/listByPatient") @RequestMapping("/listByPatient")
public Result<List<MedicalRecordVo>> listByPatient() { public Result<List<MedicalHistoryVo>> listByPatient() {
Integer patientId = parmsUtil.getInteger("patientId", "患者不能为空"); Integer patientId = parmsUtil.getInteger("patientId", "患者不能为空");
return success( medicalRecordService.listByPatientId(patientId)); return success( medicalRecordService.listByPatientId(patientId));
} }

View File

@ -0,0 +1,44 @@
package com.syjiaer.clinic.server.entity.diagnosis.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.syjiaer.clinic.server.entity.charge.vo.ChargeGoodsListVo;
import com.syjiaer.clinic.server.entity.charge.vo.ChargeItemListVo;
import com.syjiaer.clinic.server.entity.diagnosis.DiagnosisMedicalRecord;
import com.syjiaer.clinic.server.entity.patient.PatientInfo;
import com.syjiaer.clinic.server.entity.patient.PatientRegistration;
import com.syjiaer.clinic.server.entity.patient.vo.PatientAndRegistrationInfoVo;
import com.syjiaer.clinic.server.entity.patient.vo.PatientRegistrationVo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class MedicalHistoryVo {
@ApiModelProperty("自增id")
private Integer id;
@ApiModelProperty("患者id")
private Integer patientId;
@ApiModelProperty("诊断code")
private String code;
@ApiModelProperty("挂单id")
private Integer registrationId;
@ApiModelProperty("状态")
private Integer status;
@ApiModelProperty("接诊时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime createTime;
@ApiModelProperty("挂单信息")
private PatientAndRegistrationInfoVo registrationInfoVo;
@ApiModelProperty("患者信息")
private PatientInfo patientInfo;
@ApiModelProperty("病例信息")
private DiagnosisMedicalRecord diagnosisMedicalRecord;
@ApiModelProperty("诊疗服务")
private List<ChargeItemListVo> itemDetail;
@ApiModelProperty("药品耗材")
private List<ChargeGoodsListVo> goodsDetail;
}

View File

@ -2,6 +2,7 @@ package com.syjiaer.clinic.server.entity.diagnosis.vo;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.syjiaer.clinic.server.entity.charge.vo.ChargeGoodsListVo; import com.syjiaer.clinic.server.entity.charge.vo.ChargeGoodsListVo;
import com.syjiaer.clinic.server.entity.charge.vo.ChargeItemListVo; import com.syjiaer.clinic.server.entity.charge.vo.ChargeItemListVo;
import com.syjiaer.clinic.server.entity.diagnosis.DiagnosisMedicalGoodsList; import com.syjiaer.clinic.server.entity.diagnosis.DiagnosisMedicalGoodsList;
@ -13,6 +14,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;
@Getter @Getter
@Setter @Setter
@ -31,6 +33,9 @@ public class MedicalRecordVo {
private Integer registrationId; private Integer registrationId;
@ApiModelProperty("状态") @ApiModelProperty("状态")
private Integer status; private Integer status;
@ApiModelProperty("接诊时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime createTime;
@ApiModelProperty("挂单信息") @ApiModelProperty("挂单信息")
private PatientRegistration patientRegistration; private PatientRegistration patientRegistration;
@ApiModelProperty("患者信息") @ApiModelProperty("患者信息")

View File

@ -32,9 +32,9 @@ public class PatientAndRegistrationInfoVo {
@ApiModelProperty("上次就诊时间") @ApiModelProperty("上次就诊时间")
private LocalDateTime lastVisitTime; private LocalDateTime lastVisitTime;
@ApiModelProperty("挂号医生姓名") @ApiModelProperty("挂号医生姓名")
private String dockerName; private String doctorName;
@ApiModelProperty("挂号医生科室") @ApiModelProperty("挂号医生科室")
private String dockerSection; private String doctorSection;

View File

@ -17,7 +17,7 @@ import lombok.experimental.Accessors;
* </p> * </p>
* *
* @author NiuZiYuan * @author NiuZiYuan
* @since 2025-04-23 * @since 2025-05-06
*/ */
@Getter @Getter
@Setter @Setter
@ -52,4 +52,10 @@ public class SocialDiagnose implements Serializable {
@ApiModelProperty("版本名称") @ApiModelProperty("版本名称")
private String versionName; private String versionName;
@ApiModelProperty("全拼")
private String pinyinFull;
@ApiModelProperty("拼音首字母")
private String pinyinFirst;
} }

View File

@ -16,6 +16,7 @@ import com.syjiaer.clinic.server.entity.diagnosis.Diagnosis;
import com.syjiaer.clinic.server.entity.diagnosis.dto.ChargeQueueQuery; import com.syjiaer.clinic.server.entity.diagnosis.dto.ChargeQueueQuery;
import com.syjiaer.clinic.server.entity.diagnosis.dto.ItemRetailDto; import com.syjiaer.clinic.server.entity.diagnosis.dto.ItemRetailDto;
import com.syjiaer.clinic.server.entity.diagnosis.vo.ChargeQueueVo; import com.syjiaer.clinic.server.entity.diagnosis.vo.ChargeQueueVo;
import com.syjiaer.clinic.server.entity.diagnosis.vo.MedicalHistoryVo;
import com.syjiaer.clinic.server.entity.goods.Goods; import com.syjiaer.clinic.server.entity.goods.Goods;
import com.syjiaer.clinic.server.entity.item.Item; import com.syjiaer.clinic.server.entity.item.Item;
import com.syjiaer.clinic.server.entity.manager.ManagerUser; import com.syjiaer.clinic.server.entity.manager.ManagerUser;
@ -29,7 +30,9 @@ import com.syjiaer.clinic.server.entity.organization.OrganizationMember;
import com.syjiaer.clinic.server.entity.organization.OrganizationSection; import com.syjiaer.clinic.server.entity.organization.OrganizationSection;
import com.syjiaer.clinic.server.entity.patient.PatientInfo; import com.syjiaer.clinic.server.entity.patient.PatientInfo;
import com.syjiaer.clinic.server.entity.patient.PatientRegistration; import com.syjiaer.clinic.server.entity.patient.PatientRegistration;
import com.syjiaer.clinic.server.entity.patient.vo.PatientAndRegistrationInfoVo;
import com.syjiaer.clinic.server.entity.patient.vo.SeeDoctorInfoVo; import com.syjiaer.clinic.server.entity.patient.vo.SeeDoctorInfoVo;
import com.syjiaer.clinic.server.entity.social.SocialDiagnose;
import com.syjiaer.clinic.server.mapper.diagnosis.DiagnosisMapper; import com.syjiaer.clinic.server.mapper.diagnosis.DiagnosisMapper;
import com.syjiaer.clinic.server.mapper.goods.GoodsMapper; import com.syjiaer.clinic.server.mapper.goods.GoodsMapper;
import com.syjiaer.clinic.server.mapper.item.ItemMapper; import com.syjiaer.clinic.server.mapper.item.ItemMapper;
@ -42,6 +45,7 @@ import com.syjiaer.clinic.server.mapper.patient.PatientInfoMapper;
import com.syjiaer.clinic.server.mapper.patient.PatientRegistrationMapper; import com.syjiaer.clinic.server.mapper.patient.PatientRegistrationMapper;
import com.syjiaer.clinic.server.service.BaseService; import com.syjiaer.clinic.server.service.BaseService;
import com.syjiaer.clinic.server.service.charge.ChargeService; import com.syjiaer.clinic.server.service.charge.ChargeService;
import com.syjiaer.clinic.server.service.social.SocialDiagnoseService;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -80,6 +84,8 @@ public class MedicalRecordService extends BaseService {
private DiagnosisMapper diagnosisMapper; private DiagnosisMapper diagnosisMapper;
@Autowired @Autowired
private PatientInfoMapper patientInfoMapper; private PatientInfoMapper patientInfoMapper;
@Autowired
private SocialDiagnoseService socialDiagnoseService;
/* /*
* 保存 * 保存
@ -172,6 +178,9 @@ public class MedicalRecordService extends BaseService {
diagnosisMedicalGoodsListMapper.insert(goodsLists); diagnosisMedicalGoodsListMapper.insert(goodsLists);
System.out.println(saveDto.getDiagnosisMedicalRecord().getDiagnosisDetail());
List<SocialDiagnose> diagnoseList = JSONArray.parseArray(saveDto.getDiagnosisMedicalRecord().getDiagnosisDetail(),SocialDiagnose.class);
socialDiagnoseService.updateNumAddOne(diagnoseList);
} }
/** /**
@ -181,18 +190,25 @@ public class MedicalRecordService extends BaseService {
* @return * @return
*/ */
public List<MedicalRecordVo> listByPatientId(Integer patientId) { public List<MedicalHistoryVo> listByPatientId(Integer patientId) {
QueryWrapper<Diagnosis> query = new QueryWrapper<>(); QueryWrapper<Diagnosis> query = new QueryWrapper<>();
query.eq("patient_id", patientId); query.eq("patient_id", patientId);
query.orderByDesc("create_time"); query.orderByDesc("create_time");
query.last("limit 10"); query.last("limit 10");
List<Diagnosis> diaList = diagnosisMapper.selectList(query); List<Diagnosis> diaList = diagnosisMapper.selectList(query);
List<MedicalRecordVo> mrvList = new ArrayList<>(); List<MedicalHistoryVo> mrvList = new ArrayList<>();
for (Diagnosis diaItem : diaList) { for (Diagnosis diaItem : diaList) {
MedicalRecordVo vo = new MedicalRecordVo(); MedicalHistoryVo vo = new MedicalHistoryVo();
BeanUtils.copyProperties(diaItem, vo); BeanUtils.copyProperties(diaItem, vo);
PatientAndRegistrationInfoVo pRVo = new PatientAndRegistrationInfoVo();
PatientRegistration registration = patientRegistrationMapper.selectById(diaItem.getRegistrationId());
BeanUtils.copyProperties(registration, pRVo);
OrganizationMember docker = organizationMemberMapper.selectById(registration.getOrganizationDoctorId());
pRVo.setDoctorName(docker.getName());
OrganizationSection section = organizationSectionMapper.selectById(docker.getSectionId());
pRVo.setDoctorSection(section.getName());
vo.setRegistrationInfoVo(pRVo);
DiagnosisMedicalRecord diagnosisMedicalRecord = diagnosisMedicalRecordMapper.selectByDiagnosisCode(diaItem.getCode()); DiagnosisMedicalRecord diagnosisMedicalRecord = diagnosisMedicalRecordMapper.selectByDiagnosisCode(diaItem.getCode());
vo.setDiagnosisMedicalRecord(diagnosisMedicalRecord); vo.setDiagnosisMedicalRecord(diagnosisMedicalRecord);

View File

@ -278,9 +278,9 @@ public class PatientRegistrationService extends BaseService {
} }
OrganizationMember docker = organizationMemberMapper.selectById(registration.getOrganizationDoctorId()); OrganizationMember docker = organizationMemberMapper.selectById(registration.getOrganizationDoctorId());
vo.setDockerName(docker.getName()); vo.setDoctorName(docker.getName());
OrganizationSection section = organizationSectionMapper.selectById(docker.getSectionId()); OrganizationSection section = organizationSectionMapper.selectById(docker.getSectionId());
vo.setDockerSection(section.getName()); vo.setDoctorSection(section.getName());
QueryWrapper<PatientRegistration> queryWrapper = new QueryWrapper<>(); QueryWrapper<PatientRegistration> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("patient_info_id",registration.getPatientInfoId()); queryWrapper.eq("patient_info_id",registration.getPatientInfoId());

View File

@ -1,15 +1,14 @@
package com.syjiaer.clinic.server.service.social; package com.syjiaer.clinic.server.service.social;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.syjiaer.clinic.server.common.util.DateUtil; import com.syjiaer.clinic.server.common.util.DateUtil;
import com.syjiaer.clinic.server.common.util.HttpUtil; import com.syjiaer.clinic.server.common.util.HttpUtil;
import com.syjiaer.clinic.server.common.util.PinYinUtil;
import com.syjiaer.clinic.server.common.vo.Page; import com.syjiaer.clinic.server.common.vo.Page;
import com.syjiaer.clinic.server.entity.social.SocialDiagnose; import com.syjiaer.clinic.server.entity.social.SocialDiagnose;
import com.syjiaer.clinic.server.entity.social.SocialItem;
import com.syjiaer.clinic.server.entity.social.vo.SocialDirectoryView;
import com.syjiaer.clinic.server.mapper.social.SocialDiagnoseMapper; import com.syjiaer.clinic.server.mapper.social.SocialDiagnoseMapper;
import com.syjiaer.clinic.server.service.BaseService; import com.syjiaer.clinic.server.service.BaseService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -17,7 +16,6 @@ import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
@Service @Service
public class SocialDiagnoseService extends BaseService { public class SocialDiagnoseService extends BaseService {
@ -58,6 +56,8 @@ public class SocialDiagnoseService extends BaseService {
socialDiagnose.setVersionName(line_array[22]); socialDiagnose.setVersionName(line_array[22]);
socialDiagnose.setCreateDatetime(LocalDateTime.parse(line_array[20], dateTimeFormatter)); socialDiagnose.setCreateDatetime(LocalDateTime.parse(line_array[20], dateTimeFormatter));
socialDiagnose.setUpdateDatetime(LocalDateTime.parse(line_array[21], dateTimeFormatter)); socialDiagnose.setUpdateDatetime(LocalDateTime.parse(line_array[21], dateTimeFormatter));
socialDiagnose.setPinyinFull(PinYinUtil.getPinyinFull(socialDiagnose.getName()).toUpperCase());
socialDiagnose.setPinyinFirst(PinYinUtil.getPinyinFirstLetters(socialDiagnose.getName()).toUpperCase());
list.add(socialDiagnose); list.add(socialDiagnose);
codeList.add(code); codeList.add(code);
} }
@ -84,9 +84,15 @@ public class SocialDiagnoseService extends BaseService {
*/ */
public List<SocialDiagnose> getDiagnosis(String keyword) { public List<SocialDiagnose> getDiagnosis(String keyword) {
QueryWrapper<SocialDiagnose> queryWrapper = new QueryWrapper<>(); QueryWrapper<SocialDiagnose> queryWrapper = new QueryWrapper<>();
if (keyword != null && !keyword.isEmpty()) { if (keyword != null && !keyword.isEmpty()) {
queryWrapper.and(wrapper -> wrapper.like("name", keyword).or().like("code", keyword)); String key = keyword.trim().toUpperCase();
queryWrapper.and(wrapper -> wrapper.like("name", key)
.or().like("code", key)
.or().like("pinyin_full", key)
.or().like("pinyin_first", key));
} }
queryWrapper.orderByDesc("use_num","id");
queryWrapper.last("limit 20"); queryWrapper.last("limit 20");
return socialDiagnoseMapper.selectList(queryWrapper); return socialDiagnoseMapper.selectList(queryWrapper);
} }
@ -104,4 +110,14 @@ public class SocialDiagnoseService extends BaseService {
Page<SocialDiagnose> resultPage = pageHelper(page, size, codeqw, socialDiagnoseMapper, "create_datetime", false); Page<SocialDiagnose> resultPage = pageHelper(page, size, codeqw, socialDiagnoseMapper, "create_datetime", false);
return resultPage; return resultPage;
} }
public void updateNumAddOne(List<SocialDiagnose> list) {
for (SocialDiagnose socialDiagnose : list){
UpdateWrapper<SocialDiagnose> updateWrapper = new UpdateWrapper<>();
updateWrapper.setSql("use_num = use_num+1");
updateWrapper.eq("id",socialDiagnose.getId());
socialDiagnoseMapper.update(null,updateWrapper);
}
}
} }

View File

@ -24,7 +24,7 @@
"3": { "3": {
"en": "json.unique_code", "en": "json.unique_code",
"zh": "医疗器械唯一标识码", "zh": "医疗器械唯一标识码",
"column_width": 200 "column_width": 0
} }
}, },
{ {
@ -38,7 +38,7 @@
"7": { "7": {
"en": "json.specification_code", "en": "json.specification_code",
"zh": "规格代码", "zh": "规格代码",
"column_width": 200 "column_width": 0
} }
}, },
{ {
@ -59,35 +59,35 @@
"10": { "10": {
"en": "json.model", "en": "json.model",
"zh": "规格型号", "zh": "规格型号",
"column_width": 100 "column_width": 0
} }
}, },
{ {
"13": { "13": {
"en": "json.packaging_specification", "en": "json.packaging_specification",
"zh": "包装规格", "zh": "包装规格",
"column_width": 100 "column_width": 0
} }
}, },
{ {
"14": { "14": {
"en": "json.packaging_number", "en": "json.packaging_number",
"zh": "包装数量", "zh": "包装数量",
"column_width": 100 "column_width": 0
} }
}, },
{ {
"16": { "16": {
"en": "json.packaging_unit", "en": "json.packaging_unit",
"zh": "包装单位", "zh": "包装单位",
"column_width": 100 "column_width": 0
} }
}, },
{ {
"24": { "24": {
"en": "json.applicable_scope", "en": "json.applicable_scope",
"zh": "适用范围", "zh": "适用范围",
"column_width": 300 "column_width": 0
} }
}, },
{ {

View File

@ -17,7 +17,7 @@
"3": { "3": {
"en": "json.type", "en": "json.type",
"zh": "慢特病种细分类名称", "zh": "慢特病种细分类名称",
"column_width": 200 "column_width": 0
} }
}, },
{ {
@ -38,7 +38,7 @@
"5": { "5": {
"en": "json.remarks", "en": "json.remarks",
"zh": "备注", "zh": "备注",
"column_width": 200 "column_width": 0
} }
}, },
{ {

View File

@ -17,7 +17,7 @@
"8": { "8": {
"en": "json.remark", "en": "json.remark",
"zh": "备注", "zh": "备注",
"column_width": 200 "column_width": 0
} }
}, },
{ {

View File

@ -17,7 +17,7 @@
"8": { "8": {
"en": "json.remark", "en": "json.remark",
"zh": "备注", "zh": "备注",
"column_width": 200 "column_width": 0
} }
}, },
{ {

View File

@ -108,7 +108,7 @@
"41": { "41": {
"en": "json.remark", "en": "json.remark",
"zh": "备注", "zh": "备注",
"column_width": 200 "column_width": 0
} }
}, },
{ {