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 static String getPinyinFull(String inputString) {
HanyuPinyinOutputFormat format = new HanyuPinyinOutputFormat();
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.MedicalRecordSaveDto;
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.patient.vo.SeeDoctorInfoVo;
import com.syjiaer.clinic.server.service.diagnosis.MedicalRecordService;
@ -38,7 +39,7 @@ public class MedicalRecordController extends BaseController {
* @return
*/
@RequestMapping("/listByPatient")
public Result<List<MedicalRecordVo>> listByPatient() {
public Result<List<MedicalHistoryVo>> listByPatient() {
Integer patientId = parmsUtil.getInteger("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.TableId;
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.DiagnosisMedicalGoodsList;
@ -13,6 +14,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.time.LocalDateTime;
import java.util.List;
@Getter
@Setter
@ -31,6 +33,9 @@ public class MedicalRecordVo {
private Integer registrationId;
@ApiModelProperty("状态")
private Integer status;
@ApiModelProperty("接诊时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime createTime;
@ApiModelProperty("挂单信息")
private PatientRegistration patientRegistration;
@ApiModelProperty("患者信息")

View File

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

View File

@ -17,7 +17,7 @@ import lombok.experimental.Accessors;
* </p>
*
* @author NiuZiYuan
* @since 2025-04-23
* @since 2025-05-06
*/
@Getter
@Setter
@ -52,4 +52,10 @@ public class SocialDiagnose implements Serializable {
@ApiModelProperty("版本名称")
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.ItemRetailDto;
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.item.Item;
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.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.SeeDoctorInfoVo;
import com.syjiaer.clinic.server.entity.social.SocialDiagnose;
import com.syjiaer.clinic.server.mapper.diagnosis.DiagnosisMapper;
import com.syjiaer.clinic.server.mapper.goods.GoodsMapper;
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.service.BaseService;
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.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -80,6 +84,8 @@ public class MedicalRecordService extends BaseService {
private DiagnosisMapper diagnosisMapper;
@Autowired
private PatientInfoMapper patientInfoMapper;
@Autowired
private SocialDiagnoseService socialDiagnoseService;
/*
* 保存
@ -172,6 +178,9 @@ public class MedicalRecordService extends BaseService {
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
*/
public List<MedicalRecordVo> listByPatientId(Integer patientId) {
public List<MedicalHistoryVo> listByPatientId(Integer patientId) {
QueryWrapper<Diagnosis> query = new QueryWrapper<>();
query.eq("patient_id", patientId);
query.orderByDesc("create_time");
query.last("limit 10");
List<Diagnosis> diaList = diagnosisMapper.selectList(query);
List<MedicalRecordVo> mrvList = new ArrayList<>();
List<MedicalHistoryVo> mrvList = new ArrayList<>();
for (Diagnosis diaItem : diaList) {
MedicalRecordVo vo = new MedicalRecordVo();
MedicalHistoryVo vo = new MedicalHistoryVo();
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());
vo.setDiagnosisMedicalRecord(diagnosisMedicalRecord);

View File

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

View File

@ -1,15 +1,14 @@
package com.syjiaer.clinic.server.service.social;
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.HttpUtil;
import com.syjiaer.clinic.server.common.util.PinYinUtil;
import com.syjiaer.clinic.server.common.vo.Page;
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.service.BaseService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -17,7 +16,6 @@ import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Service
public class SocialDiagnoseService extends BaseService {
@ -58,6 +56,8 @@ public class SocialDiagnoseService extends BaseService {
socialDiagnose.setVersionName(line_array[22]);
socialDiagnose.setCreateDatetime(LocalDateTime.parse(line_array[20], 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);
codeList.add(code);
}
@ -84,9 +84,15 @@ public class SocialDiagnoseService extends BaseService {
*/
public List<SocialDiagnose> getDiagnosis(String keyword) {
QueryWrapper<SocialDiagnose> queryWrapper = new QueryWrapper<>();
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");
return socialDiagnoseMapper.selectList(queryWrapper);
}
@ -104,4 +110,14 @@ public class SocialDiagnoseService extends BaseService {
Page<SocialDiagnose> resultPage = pageHelper(page, size, codeqw, socialDiagnoseMapper, "create_datetime", false);
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": {
"en": "json.unique_code",
"zh": "医疗器械唯一标识码",
"column_width": 200
"column_width": 0
}
},
{
@ -38,7 +38,7 @@
"7": {
"en": "json.specification_code",
"zh": "规格代码",
"column_width": 200
"column_width": 0
}
},
{
@ -59,35 +59,35 @@
"10": {
"en": "json.model",
"zh": "规格型号",
"column_width": 100
"column_width": 0
}
},
{
"13": {
"en": "json.packaging_specification",
"zh": "包装规格",
"column_width": 100
"column_width": 0
}
},
{
"14": {
"en": "json.packaging_number",
"zh": "包装数量",
"column_width": 100
"column_width": 0
}
},
{
"16": {
"en": "json.packaging_unit",
"zh": "包装单位",
"column_width": 100
"column_width": 0
}
},
{
"24": {
"en": "json.applicable_scope",
"zh": "适用范围",
"column_width": 300
"column_width": 0
}
},
{

View File

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

View File

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

View File

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

View File

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