增加了影像分检刷新功能
Some checks are pending
Java CI with Maven / build (11) (push) Waiting to run
Java CI with Maven / build (17) (push) Waiting to run
Java CI with Maven / build (8) (push) Waiting to run
yudao-ui-admin CI / build (14.x) (push) Waiting to run
yudao-ui-admin CI / build (16.x) (push) Waiting to run

This commit is contained in:
lxd 2024-08-16 23:30:59 +08:00
parent 35e745af59
commit 4962c79588
11 changed files with 169 additions and 10 deletions

View File

@ -126,6 +126,12 @@
<version>2.1.0-jdk8-snapshot</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-module-tblist-biz</artifactId>
<version>2.1.0-jdk8-snapshot</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

View File

@ -8,10 +8,14 @@ import cn.iocoder.yudao.module.applyregistration.service.applyform.device.Device
import cn.iocoder.yudao.module.system.controller.admin.dicomworklist.vo.DicomWorklistVO;
import cn.iocoder.yudao.module.system.dal.dataobject.apiconfig.ApiconfigDO;
import cn.iocoder.yudao.module.system.dal.dataobject.dicomworklist.DicomworklistDO;
import cn.iocoder.yudao.module.system.dal.dataobject.org.OrgUnitDO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import cn.iocoder.yudao.module.system.service.apiconfig.ApiconfigService;
import cn.iocoder.yudao.module.system.service.dicomworklist.DicomworklistService;
import cn.iocoder.yudao.module.system.service.org.OrgUnitService;
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
import cn.iocoder.yudao.module.tblist.dal.dataobject.patientexamlist.PatientexamlistDO;
import cn.iocoder.yudao.module.tblist.service.patientexamlist.PatientexamlistService;
import com.mzt.logapi.starter.annotation.LogRecord;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
@ -25,6 +29,7 @@ import io.swagger.v3.oas.annotations.Operation;
import java.sql.SQLException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
@ -72,6 +77,11 @@ public class ApplyformController {
private AdminUserService userService;
@Resource
private DicomworklistService dicomworklistService;
@Resource
private PatientexamlistService patientexamlistService;
@Resource
private OrgUnitService Service;
@PostMapping("/create")
@Operation(summary = "创建申请登记记录")
@ -176,6 +186,9 @@ public class ApplyformController {
} else {
List<DicomworklistDO> worklightDOS = getDicomworklistDOS(deviceVO, user);
dicomworklistService.insertbatch(worklightDOS);
List<PatientexamlistDO> patientexamlistDOList = getPatientexamlistDOS(deviceVO, user);
patientexamlistService.insertbatch(patientexamlistDOList);
}
@ -189,7 +202,7 @@ public class ApplyformController {
}
//处理数据
private static @NotNull List<DicomworklistDO> getDicomworklistDOS(deviceupVO deviceVO, AdminUserDO user) {
private @NotNull List<DicomworklistDO> getDicomworklistDOS(deviceupVO deviceVO, AdminUserDO user) {
List<DicomworklistDO> dicomworklistDOS = new ArrayList<>();
for (DicomWorklistVO item : deviceVO.getWorklist()) {
// 处理每个元素
@ -211,6 +224,36 @@ public class ApplyformController {
return dicomworklistDOS;
}
//处理数据
private @NotNull List<PatientexamlistDO> getPatientexamlistDOS(deviceupVO deviceVO, AdminUserDO user) {
List<PatientexamlistDO> patientexamlistDOList = new ArrayList<>();
OrgUnitDO aDo = Service.get(user.getOrgId());
for (DicomWorklistVO item : deviceVO.getWorklist()) {
// 处理每个元素
LocalDateTime dateTime = LocalDateTime.parse(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
LocalDate PatientBir = LocalDate.parse(item.getPatientBir(), DateTimeFormatter.ofPattern("yyyyMMdd"));
UUID guid = UUID.randomUUID();
PatientexamlistDO patientexamlistDO = new PatientexamlistDO();
patientexamlistDO.setId(guid.toString());
patientexamlistDO.setExamId(item.getStudyInsta());
patientexamlistDO.setPName(item.getPatientNam());
patientexamlistDO.setGender(Objects.equals(item.getPatientSex(), "F") ?"":"");
patientexamlistDO.setBirthday(PatientBir.atStartOfDay());
patientexamlistDO.setDeviceType(item.getModality());
patientexamlistDO.setExamItemName(item.getExamItemName());
patientexamlistDO.setExamItemCode(item.getExamItemCode());
patientexamlistDO.setReportstatus("已分检");
patientexamlistDO.setApplicationDate(dateTime);
patientexamlistDO.setOrgId(user.getOrgId());
patientexamlistDO.setOrgName(aDo.getOrgName());
patientexamlistDO.setRegId(item.getPatientID());
patientexamlistDO.setBillDoctorDepartment("影像科");
patientexamlistDO.setDeviceName(item.getDevname());
patientexamlistDOList.add(patientexamlistDO);
}
return patientexamlistDOList;
}
@DeleteMapping("/cancel")
@Operation(summary = "申请单作废")
@ -246,8 +289,11 @@ public class ApplyformController {
//最终提交的数据
List<ApplyformDO> doList = new ArrayList<>();
List<DicomworklistDO> dicomworklistDOS = new ArrayList<>();
List<PatientexamlistDO> patientexamlistDOList = new ArrayList<>();
//获取当前登陆用户
AdminUserDO user = userService.getUser(getLoginUserId());
OrgUnitDO aDo = Service.get(user.getOrgId());
//当前时间
LocalDateTime dateTime = LocalDateTime.parse(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
//循环传递进来的参数 赋值
@ -278,11 +324,34 @@ public class ApplyformController {
dicomworklistDO.setOrgId(user.getOrgId());
dicomworklistDO.setRegistrant(user.getUsername());
dicomworklistDOS.add(dicomworklistDO);
// 处理每个元素
LocalDate PatientBir = LocalDate.parse(item.getPatientBir(), DateTimeFormatter.ofPattern("yyyyMMdd"));
UUID guid = UUID.randomUUID();
PatientexamlistDO patientexamlistDO = new PatientexamlistDO();
patientexamlistDO.setId(guid.toString());
patientexamlistDO.setExamId(item.getStudyInsta());
patientexamlistDO.setPName(item.getPatientNam());
patientexamlistDO.setGender(Objects.equals(item.getPatientSex(), "F") ?"":"");
patientexamlistDO.setBirthday(PatientBir.atStartOfDay());
patientexamlistDO.setDeviceType(item.getModality());
patientexamlistDO.setExamItemName(item.getExamItemName());
patientexamlistDO.setExamItemCode(item.getExamItemCode());
patientexamlistDO.setReportstatus("已分检");
patientexamlistDO.setApplicationDate(dateTime);
patientexamlistDO.setOrgId(user.getOrgId());
patientexamlistDO.setOrgName(aDo.getOrgName());
patientexamlistDO.setRegId(item.getPatientID());
patientexamlistDO.setBillDoctorDepartment("影像科");
patientexamlistDO.setDeviceName(item.getDevname());
patientexamlistDOList.add(patientexamlistDO);
}
}
if (!doList.isEmpty() && !dicomworklistDOS.isEmpty()) {
if (!doList.isEmpty() && !dicomworklistDOS.isEmpty() && !patientexamlistDOList.isEmpty()) {
boolean bol = applyformService.updateBatchById(doList);
dicomworklistService.insertbatch(dicomworklistDOS);
patientexamlistService.insertbatch(patientexamlistDOList);
return success(bol);
} else {
return success(false);

View File

@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.applyregistration.controller.admin.applyform.vo.*
import cn.iocoder.yudao.module.applyregistration.dal.dataobject.applyform.ApplyformDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.module.tblist.dal.dataobject.patientexamlist.PatientexamlistDO;
import com.baomidou.mybatisplus.extension.service.IService;
import javax.validation.Valid;
@ -67,5 +68,5 @@ public interface ApplyformService extends IService<ApplyformDO> {
*/
PageResult<ApplyformDO> getApplyformPage(ApplyformPageReqVO pageReqVO);
boolean insertbatch(List<ApplyformDO> doList);
}

View File

@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.exception.ErrorCode;
import cn.iocoder.yudao.module.applyregistration.controller.admin.applyform.devicevo.deviceupVO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
import cn.iocoder.yudao.module.tblist.dal.dataobject.patientexamlist.PatientexamlistDO;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -132,5 +133,12 @@ public class ApplyformServiceImpl extends ServiceImpl<ApplyformMapper, Applyform
public PageResult<ApplyformDO> getApplyformPage(ApplyformPageReqVO pageReqVO) {
return applyformMapper.selectPage(pageReqVO);
}
@Override
public boolean insertbatch(List<ApplyformDO> doList) {
boolean bol=false;
bol= applyformMapper.insertBatch(doList);
return bol;
}
}

View File

@ -47,4 +47,13 @@ public class DicomWorklistVO {
@Schema(description = "登记医生")
private String registrant;
@Schema(description = "检查项目")
private String examItemName;
@Schema(description = "检查项目ID")
private String examItemCode;
@Schema(description = "检查设备名称")
private String devname;
}

View File

@ -60,6 +60,8 @@ public interface DicomworklistMapper extends BaseMapperX<DicomworklistDO> {
// 根据ID查询DicomStudies表对应的数据
List<DicomstudiesDO> GetDicomStudiesData(@Param("patientId") String patientId, @Param("orgId") String orgId);
// 根据ID查询DicomStudies表对应的数据
List<DicomstudiesDO> GetInstaDicomStudiesData(@Param("patientId") String patientId,@Param("StudyInsta") String StudyInsta, @Param("orgId") String orgId);
// 根据Studies的StudyInsta查询DicomSeries表对应的数据
List<DicomSeriesDO> GetDicomSeriesData(@Param("StudyInsta") String StudyInsta, @Param("orgId") String orgId);
@ -91,4 +93,6 @@ public interface DicomworklistMapper extends BaseMapperX<DicomworklistDO> {
@Update(" UPDATE dicompatients t1 SET t1.dataSync='1' WHERE t1.PatientID=#{patientID} ")
int UpdateDataSyncOfDicompatientsByPatientID(@Param("patientID") String patientID);
}

View File

@ -19,6 +19,11 @@
resultType="cn.iocoder.yudao.module.system.dal.dataobject.dicomworklist.DicomstudiesDO">
select * from dicomstudies where PatientID=#{patientId} and orgId=#{orgId}
</select>
<select id="GetInstaDicomStudiesData"
resultType="cn.iocoder.yudao.module.system.dal.dataobject.dicomworklist.DicomstudiesDO">
select * from dicomstudies where PatientID=#{patientId} and orgId=#{orgId} and StudyInsta=#{StudyInsta}
</select>
<select id="GetDicomSeriesData"
resultType="cn.iocoder.yudao.module.system.dal.dataobject.dicomworklist.DicomSeriesDO">
select * from dicomseries where StudyInsta=#{StudyInsta} and orgId=#{orgId} and BodyPartEx is not null and BodyPartEx!='' ORDER BY SeriesNumb

View File

@ -150,6 +150,15 @@ public class PatientexamlistController {
patientexamlistService.dicomDataSync();
return success(true);
}
@GetMapping("/dicomDataRefresh")
@Operation(summary = "dicomj检查后数据刷新")
@PreAuthorize("@ss.hasPermission('tblist:patientexamlist:query')")
public CommonResult<Boolean> dicomDataRefresh() {
//获取当前登陆用户
AdminUserDO user = userService.getUser(getLoginUserId());
patientexamlistService.dicomDataRefresh(user.getOrgId());
return success(true);
}
@GetMapping("/export-excel")
@Operation(summary = "导出PACS检查列表 Excel")

View File

@ -8,6 +8,8 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.tblist.dal.dataobject.patientexamlist.PatientexamlistDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.tblist.controller.admin.patientexamlist.vo.*;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
/**
* PACS检查列表 Mapper
@ -71,5 +73,7 @@ public interface PatientexamlistMapper extends BaseMapperX<PatientexamlistDO> {
.orderByDesc(PatientexamlistDO::getId));
}
// 查询需要刷新的数据
@Select("select * from tb_patientexamlist where reportstatus='已分检' and examDate is null and orgId=#{orgId}")
List<PatientexamlistDO> GetSortingDataList(@Param("orgId") String orgId);
}

View File

@ -5,7 +5,7 @@ import java.util.*;
import cn.iocoder.yudao.module.tblist.controller.admin.patientexamlist.vo.*;
import cn.iocoder.yudao.module.tblist.dal.dataobject.patientexamlist.PatientexamlistDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import com.baomidou.mybatisplus.extension.service.IService;
import javax.validation.Valid;
@ -14,7 +14,7 @@ import javax.validation.Valid;
*
* @author 李晓东
*/
public interface PatientexamlistService {
public interface PatientexamlistService extends IService<PatientexamlistDO> {
/**
* 创建PACS检查列表
@ -77,5 +77,10 @@ public interface PatientexamlistService {
* @return
*/
void dicomDataSync();
/**
* 刷新dicom分检数据至tb_patientexamlist
*
*/
boolean dicomDataRefresh(String orgId);
boolean insertbatch(List<PatientexamlistDO> doList);
}

View File

@ -5,10 +5,10 @@ import cn.iocoder.yudao.module.system.dal.dataobject.dicomworklist.*;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import cn.iocoder.yudao.module.system.dal.mysql.dicomworklist.DicomworklistMapper;
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
@ -18,7 +18,6 @@ import java.util.*;
import cn.iocoder.yudao.module.tblist.controller.admin.patientexamlist.vo.*;
import cn.iocoder.yudao.module.tblist.dal.dataobject.patientexamlist.PatientexamlistDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.tblist.dal.mysql.patientexamlist.PatientexamlistMapper;
@ -36,7 +35,7 @@ import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUti
*/
@Service
@Validated
public class PatientexamlistServiceImpl implements PatientexamlistService {
public class PatientexamlistServiceImpl extends ServiceImpl<PatientexamlistMapper, PatientexamlistDO> implements PatientexamlistService {
@Resource
private PatientexamlistMapper patientexamlistMapper;
@ -164,6 +163,37 @@ public class PatientexamlistServiceImpl implements PatientexamlistService {
}
}
@Override
public boolean dicomDataRefresh(String orgId) {
//先查询所有的状态是分检的数据并且是检查时间为空的数据
List<PatientexamlistDO> doList= patientexamlistMapper.GetSortingDataList(orgId);
boolean bol=false;
if(!doList.isEmpty())
{ //更新数据集合
List<PatientexamlistDO> aDo = new ArrayList<>();
for (PatientexamlistDO patientexamlistDO:doList)
{
List<DicomstudiesDO> dicomstudiesDOS= dicomworklistMapper.GetInstaDicomStudiesData(patientexamlistDO.getRegId(),patientexamlistDO.getExamId(),orgId);
if(!dicomstudiesDOS.isEmpty())
{
String seim= dicomworklistMapper.GetSeDcByPatientIDAndStudyInsta(dicomstudiesDOS.get(0).getPatientID(),dicomstudiesDOS.get(0).getStudyInsta());
PatientexamlistDO examdo=new PatientexamlistDO();
examdo.setId(patientexamlistDO.getId());
examdo.setExamDate(formatLocalDateTime2(String.valueOf(dicomstudiesDOS.get(0).getAccessTime())));
examdo.setSeDc(seim);
examdo.setReportstatus("待分析");
aDo.add(examdo);
}
}
if(!aDo.isEmpty())
{
bol= updateBatchById(aDo);
}
}
return bol;
}
//其它方法
private String formatSex1(String sex) {
String _out = "";
@ -196,4 +226,13 @@ public class PatientexamlistServiceImpl implements PatientexamlistService {
}
return _out;
}
@Override
public boolean insertbatch(List<PatientexamlistDO> doList) {
boolean bol=false;
bol= patientexamlistMapper.insertBatch(doList);
return bol;
}
}