Procházet zdrojové kódy

feat: 医生确认处方

xdd před 3 týdny
rodič
revize
7d4e289366

+ 202 - 0
fs-doctor-app/src/main/java/com/fs/app/controller/FsPrescribeController.java

@@ -0,0 +1,202 @@
+package com.fs.app.controller;
+
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.fs.common.annotation.Log;
+import com.fs.common.core.controller.BaseController;
+import com.fs.common.core.domain.AjaxResult;
+import com.fs.common.core.domain.R;
+import com.fs.common.core.page.TableDataInfo;
+import com.fs.common.enums.BusinessType;
+import com.fs.common.utils.SecurityUtils;
+import com.fs.his.domain.FsExportTask;
+import com.fs.his.domain.FsPatient;
+import com.fs.his.domain.FsPrescribe;
+import com.fs.his.mapper.FsPatientMapper;
+import com.fs.his.param.FsPrescribeParam;
+import com.fs.his.service.IFsExportTaskService;
+import com.fs.his.service.IFsPrescribeService;
+import com.fs.his.vo.FsPrescribeListVO;
+import com.fs.his.vo.FsPrescribeVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 处方Controller
+ *
+ * @author fs
+ * @date 2023-06-13
+ */
+@RestController
+@RequestMapping("/his/prescribe")
+public class FsPrescribeController extends BaseController
+{
+    @Autowired
+    private IFsPrescribeService fsPrescribeService;
+
+    @Autowired
+    private IFsExportTaskService exportTaskService;
+    @Autowired
+    private FsPatientMapper fsPatientMapper;
+    /**
+     * 查询处方列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo list(FsPrescribeParam fsPrescribe)
+    {
+
+        startPage();
+        List<FsPrescribeListVO> list = fsPrescribeService.selectFsPrescribeListVOWithConfirm(fsPrescribe);
+        for (FsPrescribeListVO vo : list){
+            if (vo.getPatientTel()!=null){
+                vo.setPatientTel(vo.getPatientTel().replaceAll("(\\d{3})\\d*(\\d{4})", "$1****$2"));
+            }
+        }
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出处方列表
+     */
+    @PreAuthorize("@ss.hasPermi('his:prescribe:export')")
+    @Log(title = "处方", businessType = BusinessType.EXPORT)
+    @GetMapping("/export")
+    public AjaxResult export(FsPrescribeParam fsPrescribe)
+    {
+        Integer exportType1 = exportTaskService.isExportType1(SecurityUtils.getUserId());
+        if (exportType1>0){
+            return AjaxResult.error("你已经有正在导出的任务");
+        }
+        if (fsPrescribeService.isEntityNull(fsPrescribe)){
+            return AjaxResult.error("请筛选数据导出");
+        }
+        logger.info("tc>\n【导出处方】:{}", SecurityUtils.getUserId());
+        Long count = fsPrescribeService.selectFsPrescribeExcelListVOCount(fsPrescribe);
+        if (count>30000){
+            return AjaxResult.error("导出数据不可超过3w条");
+        }
+        FsExportTask task=new FsExportTask();
+        task.setTaskType(5);
+        task.setStatus(0);
+        task.setStartTime(new Date());
+        task.setRemark("处方单导出");
+        task.setSysType(1);
+        task.setUserId(SecurityUtils.getUserId());
+        exportTaskService.insertFsExportTask(task);
+        fsPrescribe.setTaskId(task.getTaskId());
+        fsPrescribeService.exportData(fsPrescribe);
+        return new AjaxResult(200,"后台正在导出,请等待...任务ID:"+task.getTaskId(),task.getTaskId());
+
+    }
+
+    /**
+     * 导出医疗信息反馈单
+     */
+    @PreAuthorize("@ss.hasPermi('his:prescribe:messageFeedbackExport')")
+    @Log(title = "医疗信息反馈单", businessType = BusinessType.EXPORT)
+    @GetMapping("/messageFeedbackExport")
+    public AjaxResult messageFeedbackExport(FsPrescribeParam fsPrescribe)
+    {
+        logger.info("tc>\n【导出医疗信息反馈单】:{}", SecurityUtils.getUserId());
+        if (fsPrescribeService.isEntityNull(fsPrescribe)){
+            return AjaxResult.error("请筛选数据导出");
+        }
+        Integer exportType1 = exportTaskService.isExportType1(SecurityUtils.getUserId());
+        if (exportType1>0){
+            return AjaxResult.error("你已经有正在导出的任务");
+        }
+
+        FsExportTask task=new FsExportTask();
+        task.setTaskType(6);
+        task.setStatus(0);
+        task.setStartTime(new Date());
+        task.setRemark("处方医疗反馈清单导出");
+        task.setSysType(1);
+        task.setUserId(SecurityUtils.getUserId());
+        exportTaskService.insertFsExportTask(task);
+        fsPrescribe.setTaskId(task.getTaskId());
+        fsPrescribeService.exportMessageFeedback(fsPrescribe);
+        return new AjaxResult(200,"后台正在导出,请等待...任务ID:"+task.getTaskId(),task.getTaskId());
+    }
+
+    /**
+     * 获取处方详细信息
+     */
+    @Transactional(rollbackFor = Exception.class)
+    @GetMapping(value = "/{prescribeId}")
+    public AjaxResult getInfo(@PathVariable("prescribeId") Long prescribeId)
+    {
+
+        FsPrescribeVO fsPrescribe = fsPrescribeService.selectFsPrescribeByPrescribeIdVO(prescribeId);
+        if (fsPrescribe.getPatientTel()!=null){
+            fsPrescribe.setPatientTel(fsPrescribe.getPatientTel().replaceAll("(\\d{3})\\d*(\\d{4})", "$1****$2"));
+        }
+        FsPatient fsPatient = fsPatientMapper.selectFsPatientByPatientId(fsPrescribe.getPatientId());
+        if (fsPatient!=null&&fsPatient.getIdCard()!=null){
+            fsPrescribe.setIdCard(fsPatient.getIdCard().replaceAll("(\\d{4})\\d{10}(\\w{4})", "$1**********$2"));
+        }
+        return AjaxResult.success(fsPrescribe);
+    }
+
+    @GetMapping(value = "/queryIdCard/{orderId}")
+    @Log(title = "查看身份证", businessType = BusinessType.GRANT)
+    @PreAuthorize("@ss.hasPermi('his:prescribe:queryIdCard')")
+    public R getPhone(@PathVariable("orderId") Long orderId)
+    {
+        FsPatient fsPatient = fsPatientMapper.selectFsPatientByPatientId(orderId);
+        String idCard = fsPatient.getIdCard();
+        return R.ok().put("data",idCard);
+    }
+
+
+    /**
+     * 获取处方详细信息
+     */
+
+    @GetMapping("/Drug/{prescribeId}")
+    public AjaxResult getDrugInfo(@PathVariable("prescribeId") Long prescribeId)
+    {
+        return AjaxResult.success(fsPrescribeService.selectFsPrescribeDrugByPrescribeIdVO(prescribeId));
+    }
+
+    /**
+     * 新增处方
+     */
+    @PreAuthorize("@ss.hasPermi('his:prescribe:add')")
+    @Log(title = "处方", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody FsPrescribe fsPrescribe)
+    {
+        return toAjax(fsPrescribeService.insertFsPrescribe(fsPrescribe));
+    }
+
+    /**
+     * 修改处方
+     */
+    @PreAuthorize("@ss.hasPermi('his:prescribe:edit')")
+    @Log(title = "处方", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody FsPrescribe fsPrescribe)
+    {
+        return toAjax(fsPrescribeService.updateFsPrescribe(fsPrescribe));
+    }
+
+    /**
+     * 删除处方
+     */
+    @PreAuthorize("@ss.hasPermi('his:prescribe:remove')")
+    @Log(title = "处方", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{prescribeIds}")
+    public AjaxResult remove(@PathVariable Long[] prescribeIds)
+    {
+        return toAjax(fsPrescribeService.deleteFsPrescribeByPrescribeIds(prescribeIds));
+    }
+
+
+
+
+}

+ 59 - 0
fs-doctor-app/src/main/java/com/fs/app/controller/FsPrescribeDrugController.java

@@ -0,0 +1,59 @@
+package com.fs.app.controller;
+
+import com.fs.common.core.controller.BaseController;
+import com.fs.common.core.domain.AjaxResult;
+import com.fs.common.core.page.TableDataInfo;
+import com.fs.his.domain.FsPrescribeDrug;
+import com.fs.his.param.FsPrescribeParam;
+import com.fs.his.service.IFsPrescribeDrugService;
+import com.fs.his.vo.FsPrescribeListVO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@Slf4j
+@RestController
+@RequestMapping("/his/prescribeDrug")
+public class FsPrescribeDrugController extends BaseController {
+    @Autowired
+    private IFsPrescribeDrugService fsPrescribeDrugService;
+    /**
+     * 查询处方列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo list(FsPrescribeDrug fsPrescribeDrug)
+    {
+        log.info("开始查询处方列表,查询条件:{}", fsPrescribeDrug);
+
+        startPage();
+        List<FsPrescribeDrug> list = fsPrescribeDrugService.selectFsPrescribeDrugList(fsPrescribeDrug);
+
+        return getDataTable(list);
+    }
+
+    @PostMapping("/add")
+    public AjaxResult add(@RequestBody FsPrescribeDrug fsPrescribeDrug) {
+        log.info("开始添加处方药物,处方信息:{}", fsPrescribeDrug);
+
+        fsPrescribeDrugService.insertFsPrescribeDrug(fsPrescribeDrug);
+        return AjaxResult.success();
+    }
+
+    @PostMapping("/update")
+    public AjaxResult update(@RequestBody FsPrescribeDrug fsPrescribeDrug) {
+        log.info("开始更新处方药物,药物ID:{},更新信息:{}", fsPrescribeDrug.getDrugId(), fsPrescribeDrug);
+
+        fsPrescribeDrugService.updateFsPrescribeDrug(fsPrescribeDrug);
+        return AjaxResult.success();
+    }
+
+    @PostMapping("/delete")
+    public AjaxResult delete(FsPrescribeDrug fsPrescribeDrug) {
+        log.info("开始删除处方药物,药物ID:{}", fsPrescribeDrug.getDrugId());
+
+        fsPrescribeDrugService.deleteFsPrescribeDrugByDrugId(fsPrescribeDrug.getDrugId());
+        return AjaxResult.success();
+    }
+}

+ 1 - 0
fs-service/src/main/java/com/fs/his/mapper/FsPrescribeMapper.java

@@ -280,4 +280,5 @@ public interface FsPrescribeMapper
     @Select("select p.prescribe_id from fs_store_order o LEFT JOIN fs_prescribe p on p.store_order_id =o.order_id where o.status=2 and  o.order_type=2 and p.prescribe_img_store_url is null ")
     List<Long> selectFsPrescribeByPrescribeIdByOrderType();
 
+    List<FsPrescribeListVO> selectFsPrescribeListVOWithConfirm(FsPrescribeParam fsPrescribe);
 }

+ 2 - 1
fs-service/src/main/java/com/fs/his/param/FsPrescribeParam.java

@@ -137,5 +137,6 @@ public class FsPrescribeParam {
     private boolean isImOpen;
 
 
-
+    // 医生是否确认 0未确认 1已确认 -1其他模块
+    private Integer doctorConfirm;
 }

+ 1 - 0
fs-service/src/main/java/com/fs/his/service/IFsPrescribeService.java

@@ -66,6 +66,7 @@ public interface IFsPrescribeService
     public int deleteFsPrescribeByPrescribeId(Long prescribeId);
 
     List<FsPrescribeListVO> selectFsPrescribeListVO(FsPrescribeParam fsPrescribe);
+    List<FsPrescribeListVO> selectFsPrescribeListVOWithConfirm(FsPrescribeParam fsPrescribe);
 
     List<FsPrescribeListDVO> selectFsPrescribeListDVO(FsPrescribeListDParam param);
 

+ 5 - 1
fs-service/src/main/java/com/fs/his/service/impl/FsPrescribeServiceImpl.java

@@ -158,6 +158,11 @@ public class FsPrescribeServiceImpl implements IFsPrescribeService
         return  fsPrescribeMapper.selectFsPrescribeListVO(fsPrescribe);
     }
 
+    @Override
+    public List<FsPrescribeListVO> selectFsPrescribeListVOWithConfirm(FsPrescribeParam fsPrescribe) {
+        return  fsPrescribeMapper.selectFsPrescribeListVOWithConfirm(fsPrescribe);
+    }
+
     @Override
     public List<FsPrescribeListDVO> selectFsPrescribeListDVO(FsPrescribeListDParam param) {
         List<FsPrescribeListDVO> list=fsPrescribeMapper.selectFsPrescribeListDVO(param);
@@ -168,7 +173,6 @@ public class FsPrescribeServiceImpl implements IFsPrescribeService
         }
         return list;
 
-
     }
 
     @Override

+ 35 - 0
fs-service/src/main/resources/mapper/his/FsPrescribeMapper.xml

@@ -270,4 +270,39 @@
         <if test="orderStatus != null "> and fso.`status` = #{orderStatus}</if>
         <if test="storeId != null "> and so.store_id = #{storeId}</if>
     </select>
+    <select id="selectFsPrescribeListVOWithConfirm" resultType="com.fs.his.vo.FsPrescribeListVO">
+        select so.*,us.nick_name,dc.doctor_name,
+               dp.doctor_name doctor_drug_name,
+               fso.order_code,fso.`status` order_status,
+               fse.store_name FROM fs_prescribe so
+                   LEFT JOIN fs_user us ON us.user_id=so.user_id
+                   LEFT JOIN fs_doctor dc ON dc.doctor_id = so.doctor_id
+                   LEFT JOIN fs_doctor dp ON dp.doctor_id =so.drug_doctor_id
+                   LEFT JOIN fs_store_order fso ON fso.order_id = so.store_order_id
+                   LEFT JOIN fs_store fse ON fse.store_id = so.store_id
+        <where>
+            doctor_confirm !=  -1
+            <if test="companyId != null "> and fso.company_id = #{companyId}</if>
+            <if test="companyUserId != null "> and fso.company_user_id = #{companyUserId}</if>
+            <if test="prescribeType != null "> and so.prescribe_type = #{prescribeType}</if>
+            <if test="inquiryOrderId != null "> and so.inquiry_order_id = #{inquiryOrderId}</if>
+            <if test="storeOrderId != null "> and so.store_order_id = #{storeOrderId}</if>
+            <if test="userId != null "> and so.user_id = #{userId}</if>
+            <if test="prescribeCode != null  and prescribeCode != ''"> and so.prescribe_code = #{prescribeCode}</if>
+            <if test="patientName != null  and patientName != ''"> and so.patient_name like concat('%', #{patientName}, '%')</if>
+            <if test="doctorName != null  and doctorName != ''"> and dc.doctor_name like concat('%', #{doctorName}, '%')</if>
+            <if test="patientTel != null  and patientTel != ''"> and so.patient_tel = #{patientTel}</if>
+            <if test="doctorId != null  and doctorId != ''"> and so.doctor_id = #{doctorId}</if>
+            <if test="status != null "> and so.status = #{status}</if>
+            <if test="sTime != null ">  and DATE(so.create_time) &gt;= DATE(#{sTime})</if>
+            <if test="eTime != null ">  and DATE(so.create_time) &lt;= DATE(#{eTime})</if>
+            <if test="auditSTime != null ">  and DATE(so.audit_time) &gt;= DATE(#{auditSTime})</if>
+            <if test="auditETime != null ">  and DATE(so.audit_time) &lt;= DATE(#{auditETime})</if>
+            <if test="auditTime != null "> and so.audit_time = #{auditTime}</if>
+            <if test="orderCode != null "> and fso.order_code = #{orderCode}</if>
+            <if test="orderStatus != null "> and fso.`status` = #{orderStatus}</if>
+            <if test="storeId != null "> and so.store_id = #{storeId}</if>
+        </where>
+        order by prescribe_id desc
+    </select>
 </mapper>