diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/check/appservice/IRadiologyImageAppService.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/check/appservice/IRadiologyImageAppService.java new file mode 100644 index 000000000..7a02f2d27 --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/check/appservice/IRadiologyImageAppService.java @@ -0,0 +1,29 @@ +package com.healthlink.his.web.check.appservice; + +import com.core.common.core.domain.R; +import com.healthlink.his.check.domain.DicomPrintRecord; +import com.healthlink.his.check.domain.RadiologyImage; +import com.healthlink.his.check.domain.RadiologyImageReport; + +import java.util.List; + +public interface IRadiologyImageAppService { + + R saveImage(RadiologyImage image); + + R getImagesByApplyId(Long applyId); + + R getImagesByExamId(Long examId); + + R saveReport(RadiologyImageReport report); + + R getReportPage(String status, String patientName, Integer pageNo, Integer pageSize); + + R submitReport(Long id); + + R verifyReport(Long id, String doctor); + + R savePrintRecord(DicomPrintRecord record); + + R getPrintPage(Integer pageNo, Integer pageSize); +} diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/check/appservice/impl/RadiologyImageAppServiceImpl.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/check/appservice/impl/RadiologyImageAppServiceImpl.java new file mode 100644 index 000000000..bd0037c26 --- /dev/null +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/check/appservice/impl/RadiologyImageAppServiceImpl.java @@ -0,0 +1,119 @@ +package com.healthlink.his.web.check.appservice.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.core.common.core.domain.R; +import com.healthlink.his.check.domain.DicomPrintRecord; +import com.healthlink.his.check.domain.RadiologyImage; +import com.healthlink.his.check.domain.RadiologyImageReport; +import com.healthlink.his.check.service.IDicomPrintRecordService; +import com.healthlink.his.check.service.IRadiologyImageReportService; +import com.healthlink.his.check.service.IRadiologyImageService; +import com.healthlink.his.web.check.appservice.IRadiologyImageAppService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; + +import java.util.Date; + +@Service +@Slf4j +@AllArgsConstructor +public class RadiologyImageAppServiceImpl implements IRadiologyImageAppService { + + private final IRadiologyImageService imageService; + private final IRadiologyImageReportService reportService; + private final IDicomPrintRecordService printService; + + @Override + @Transactional(rollbackFor = Exception.class) + public R saveImage(RadiologyImage image) { + image.setCreateTime(new Date()); + imageService.save(image); + return R.ok(image); + } + + @Override + public R getImagesByApplyId(Long applyId) { + LambdaQueryWrapper w = new LambdaQueryWrapper<>(); + w.eq(RadiologyImage::getApplyId, applyId) + .orderByAsc(RadiologyImage::getInstanceNumber); + return R.ok(imageService.list(w)); + } + + @Override + public R getImagesByExamId(Long examId) { + LambdaQueryWrapper w = new LambdaQueryWrapper<>(); + w.eq(RadiologyImage::getApplyId, examId) + .orderByAsc(RadiologyImage::getInstanceNumber); + return R.ok(imageService.list(w)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public R saveReport(RadiologyImageReport report) { + if (report.getId() == null) { + report.setStatus("DRAFT"); + report.setCreateTime(new Date()); + reportService.save(report); + } else { + report.setUpdateTime(new Date()); + reportService.updateById(report); + } + return R.ok(report); + } + + @Override + public R getReportPage(String status, String patientName, Integer pageNo, Integer pageSize) { + LambdaQueryWrapper w = new LambdaQueryWrapper<>(); + w.eq(StringUtils.hasText(status), RadiologyImageReport::getStatus, status) + .like(StringUtils.hasText(patientName), RadiologyImageReport::getPatientName, patientName) + .orderByDesc(RadiologyImageReport::getCreateTime); + return R.ok(reportService.page(new Page<>(pageNo, pageSize), w)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public R submitReport(Long id) { + RadiologyImageReport r = reportService.getById(id); + if (r == null) { + return R.fail("报告不存在"); + } + r.setStatus("REPORTED"); + r.setReportTime(new Date()); + reportService.updateById(r); + return R.ok(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public R verifyReport(Long id, String doctor) { + RadiologyImageReport r = reportService.getById(id); + if (r == null) { + return R.fail("报告不存在"); + } + r.setStatus("VERIFIED"); + r.setVerifyDoctor(doctor); + r.setVerifyTime(new Date()); + reportService.updateById(r); + return R.ok(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public R savePrintRecord(DicomPrintRecord record) { + record.setPrintTime(new Date()); + record.setCreateTime(new Date()); + printService.save(record); + return R.ok(record); + } + + @Override + public R getPrintPage(Integer pageNo, Integer pageSize) { + LambdaQueryWrapper w = new LambdaQueryWrapper<>(); + w.orderByDesc(DicomPrintRecord::getPrintTime); + return R.ok(printService.page(new Page<>(pageNo, pageSize), w)); + } +} diff --git a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/check/controller/RadiologyImageController.java b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/check/controller/RadiologyImageController.java index b5940bb6a..3a2d66a84 100644 --- a/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/check/controller/RadiologyImageController.java +++ b/healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/check/controller/RadiologyImageController.java @@ -1,132 +1,81 @@ package com.healthlink.his.web.check.controller; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.core.common.core.domain.R; -import com.healthlink.his.check.domain.*; -import com.healthlink.his.check.service.*; +import com.healthlink.his.check.domain.DicomPrintRecord; +import com.healthlink.his.check.domain.RadiologyImage; +import com.healthlink.his.check.domain.RadiologyImageReport; +import com.healthlink.his.web.check.appservice.IRadiologyImageAppService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; -import java.util.Date; - @RestController -@RequestMapping("/radiology-image") +@RequestMapping("/check") @Slf4j @AllArgsConstructor public class RadiologyImageController { - private final IRadiologyImageService imageService; - private final IRadiologyImageReportService reportService; - private final IDicomPrintRecordService printService; + private final IRadiologyImageAppService radiologyImageAppService; // ==================== 图像管理 ==================== - /** 图像列表 */ - @GetMapping("/list") - @PreAuthorize("@ss.hasPermi('check:radiologyImage:list')") - public R getImageList(@RequestParam("applyId") Long applyId) { - LambdaQueryWrapper w = new LambdaQueryWrapper<>(); - w.eq(RadiologyImage::getApplyId, applyId) - .orderByAsc(RadiologyImage::getInstanceNumber); - return R.ok(imageService.list(w)); + @PostMapping("/image/save") + @PreAuthorize("@ss.hasPermi('infection:check:edit')") + public R saveImage(@RequestBody RadiologyImage image) { + return radiologyImageAppService.saveImage(image); } - /** 上传影像图像 */ - @PostMapping("/upload") - @PreAuthorize("@ss.hasPermi('check:radiologyImage:add')") - @Transactional(rollbackFor = Exception.class) - public R uploadImage(@RequestBody RadiologyImage img) { - img.setCreateTime(new Date()); - imageService.save(img); - return R.ok(img); + @GetMapping("/image/list/{examId}") + @PreAuthorize("@ss.hasPermi('infection:check:list')") + public R getImageList(@PathVariable Long examId) { + return radiologyImageAppService.getImagesByExamId(examId); } - // ==================== 图文报告 ==================== + // ==================== 结构化报告 ==================== + + @PostMapping("/report/save") + @PreAuthorize("@ss.hasPermi('infection:check:edit')") + public R saveReport(@RequestBody RadiologyImageReport report) { + return radiologyImageAppService.saveReport(report); + } - /** 报告分页查询 */ @GetMapping("/report/page") - @PreAuthorize("@ss.hasPermi('check:radiologyImage:report:list')") + @PreAuthorize("@ss.hasPermi('infection:check:list')") public R getReportPage( @RequestParam(value = "status", required = false) String status, @RequestParam(value = "patientName", required = false) String patientName, @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) { - LambdaQueryWrapper w = new LambdaQueryWrapper<>(); - w.eq(StringUtils.hasText(status), RadiologyImageReport::getStatus, status) - .like(StringUtils.hasText(patientName), RadiologyImageReport::getPatientName, patientName) - .orderByDesc(RadiologyImageReport::getCreateTime); - return R.ok(reportService.page(new Page<>(pageNo, pageSize), w)); + return radiologyImageAppService.getReportPage(status, patientName, pageNo, pageSize); } - /** 新建报告(草稿) */ - @PostMapping("/report/add") - @PreAuthorize("@ss.hasPermi('check:radiologyImage:report:add')") - @Transactional(rollbackFor = Exception.class) - public R addReport(@RequestBody RadiologyImageReport r) { - r.setStatus("DRAFT"); - r.setCreateTime(new Date()); - reportService.save(r); - return R.ok(r); - } - - /** 提交报告 */ @PutMapping("/report/submit/{id}") - @PreAuthorize("@ss.hasPermi('check:radiologyImage:report:edit')") - @Transactional(rollbackFor = Exception.class) + @PreAuthorize("@ss.hasPermi('infection:check:edit')") public R submitReport(@PathVariable Long id) { - RadiologyImageReport r = reportService.getById(id); - if (r == null) { - return R.fail("报告不存在"); - } - r.setStatus("REPORTED"); - r.setReportTime(new Date()); - reportService.updateById(r); - return R.ok(); + return radiologyImageAppService.submitReport(id); } - /** 审核报告 */ @PutMapping("/report/verify/{id}") - @PreAuthorize("@ss.hasPermi('check:radiologyImage:report:edit')") - @Transactional(rollbackFor = Exception.class) + @PreAuthorize("@ss.hasPermi('infection:check:edit')") public R verifyReport(@PathVariable Long id, @RequestParam("doctor") String doctor) { - RadiologyImageReport r = reportService.getById(id); - if (r == null) { - return R.fail("报告不存在"); - } - r.setStatus("VERIFIED"); - r.setVerifyDoctor(doctor); - r.setVerifyTime(new Date()); - reportService.updateById(r); - return R.ok(); + return radiologyImageAppService.verifyReport(id, doctor); } // ==================== DICOM打印 ==================== - /** DICOM打印记录 */ @PostMapping("/print") - @PreAuthorize("@ss.hasPermi('check:radiologyImage:print:add')") - @Transactional(rollbackFor = Exception.class) + @PreAuthorize("@ss.hasPermi('infection:check:edit')") public R printDicom(@RequestBody DicomPrintRecord p) { - p.setPrintTime(new Date()); - p.setCreateTime(new Date()); - printService.save(p); - return R.ok(p); + return radiologyImageAppService.savePrintRecord(p); } - /** 打印记录分页 */ @GetMapping("/print/page") - @PreAuthorize("@ss.hasPermi('check:radiologyImage:print:list')") + @PreAuthorize("@ss.hasPermi('infection:check:list')") public R getPrintPage( @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, @RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) { - LambdaQueryWrapper w = new LambdaQueryWrapper<>(); - w.orderByDesc(DicomPrintRecord::getPrintTime); - return R.ok(printService.page(new Page<>(pageNo, pageSize), w)); + return radiologyImageAppService.getPrintPage(pageNo, pageSize); } } diff --git a/healthlink-his-ui/src/views/labenhanced/radiologyreport/api.js b/healthlink-his-ui/src/views/labenhanced/radiologyreport/api.js index b4bae8016..c276a05ff 100644 --- a/healthlink-his-ui/src/views/labenhanced/radiologyreport/api.js +++ b/healthlink-his-ui/src/views/labenhanced/radiologyreport/api.js @@ -1,7 +1,7 @@ import request from '@/utils/request' -export function getReportPage(p){return request({url:'/radiology-image/report/page',method:'get',params:p})} -export function addReport(d){return request({url:'/radiology-image/report/add',method:'post',data:d})} -export function submitReport(id){return request({url:'/radiology-image/report/submit/'+id,method:'put'})} -export function verifyReport(id,doctor){return request({url:'/radiology-image/report/verify/'+id,method:'put',params:{doctor}})} -export function getImageList(p){return request({url:'/radiology-image/list',method:'get',params:p})} -export function printDicom(d){return request({url:'/radiology-image/print',method:'post',data:d})} +export function getReportPage(p){return request({url:'/check/report/page',method:'get',params:p})} +export function addReport(d){return request({url:'/check/report/save',method:'post',data:d})} +export function submitReport(id){return request({url:'/check/report/submit/'+id,method:'put'})} +export function verifyReport(id,doctor){return request({url:'/check/report/verify/'+id,method:'put',params:{doctor}})} +export function getImageList(examId){return request({url:'/check/image/list/'+examId,method:'get'})} +export function printDicom(d){return request({url:'/check/print',method:'post',data:d})}