diff --git a/src/main/java/com/emr/controller/storageController.java b/src/main/java/com/emr/controller/storageController.java index cff43ea2..f3b5838d 100644 --- a/src/main/java/com/emr/controller/storageController.java +++ b/src/main/java/com/emr/controller/storageController.java @@ -10,6 +10,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.emr.annotation.OptionalLog; +import com.emr.dto.PushStorageDto; import com.emr.entity.*; import com.emr.service.*; import com.emr.util.ThreadExcelUtils; @@ -17,16 +18,20 @@ import com.google.common.collect.Lists; import org.apache.commons.lang3.StringUtils; import org.apache.http.HttpRequest; import org.apache.http.NameValuePair; +import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; +import org.apache.http.util.EntityUtils; import org.apache.shiro.SecurityUtils; import org.apache.shiro.session.Session; import org.apache.shiro.subject.Subject; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.PropertySource; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; @@ -38,6 +43,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.UnsupportedEncodingException; +import java.net.URI; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; @@ -69,6 +75,10 @@ public class storageController { return "medicalRecordStorageDir/MedicalRecordStorage"; } + @Value("${MedicalRecordSealingUrl}") + private String MedicalRecordUrl; + + @ResponseBody @RequestMapping(value = "/StorageList") public OffsetLimitPage recallList(HttpServletRequest request, HttpServletResponse response, Archive_Master_Vo archiveMasterVo, Integer offset, Integer limit) { @@ -122,6 +132,7 @@ public class storageController { request.setCharacterEncoding("utf-8"); int bol = 0; String result = ""; + PushStorageDto pushStorageDto = new PushStorageDto(); //判断是否已经封存 if (StringUtils.isNotBlank(emrFaultDetail.getArchiveDetailId())) { //判断病案是否已经封存 @@ -136,7 +147,6 @@ public class storageController { followingLastInfo.setMasterId(emrFaultDetail.getArchiveDetailId()); List followingLastList = archiveMasterFollowingService.selLastByType(followingLastInfo); if (followingLastList == null || followingLastList.size() <= 0) { - Subject currentUser = SecurityUtils.getSubject(); Power_User user = (Power_User) request.getSession().getAttribute("CURRENT_USER"); String handleName = user.getUserPosition();//姓名 String username = user.getUserName();//获取前面登录的用户名 @@ -165,6 +175,17 @@ public class storageController { archiveMasterFollowing.setSafekeepingName(emrFaultDetail.getSafekeepingName()); archiveMasterFollowing.setRemark(emrFaultDetail.getRecallReason()); bol = archiveMasterFollowingService.insertSelective(archiveMasterFollowing); + //向电子病历发送封存消息 + pushStorageDto.setPATIENT_STATUS(1); + pushStorageDto.setINP_NO(emrFaultDetail.getInpNo()); + pushStorageDto.setPATIENT_ID(emrFaultDetail.getPatientId()); + pushStorageDto.setVISIT_ID(Integer.parseInt(emrFaultDetail.getVisitId())); + pushStorageDto.setPATIENT_NAME(emrFaultDetail.getName()); + pushStorageDto.setOPERATOR(handleName); + pushStorageDto.setOPERATOR_ID(username); + pushStorageDto.setSEQUESTRATION_RESION(nowTime); + pushStorageDto.setSEQUESTRATION_RESION(emrFaultDetail.getRecallReason()); + pushStorage(pushStorageDto); } else if (archiveMaster.getArchivestate().equals("已归档")) {// if (archiveMaster.getArchivestate().equals("已归档")) archiveMasterFollowing.setMasterId(emrFaultDetail.getArchiveDetailId()); archiveMasterFollowing.setFollowingContent("病案取消封存"); @@ -174,6 +195,17 @@ public class storageController { archiveMasterFollowing.setHandleName(handleName); archiveMasterFollowing.setRemark(emrFaultDetail.getRecallReason()); bol = archiveMasterFollowingService.insertSelective(archiveMasterFollowing); + //向电子病历发送取消封存消息 + pushStorageDto.setPATIENT_STATUS(2); + pushStorageDto.setINP_NO(emrFaultDetail.getInpNo()); + pushStorageDto.setPATIENT_ID(emrFaultDetail.getPatientId()); + pushStorageDto.setVISIT_ID(Integer.parseInt(emrFaultDetail.getVisitId())); + pushStorageDto.setPATIENT_NAME(emrFaultDetail.getName()); + pushStorageDto.setOPERATOR(handleName); + pushStorageDto.setOPERATOR_ID(username); + pushStorageDto.setSEQUESTRATION_RESION(nowTime); + pushStorageDto.setSEQUESTRATION_RESION(emrFaultDetail.getRecallReason()); + pushStorage(pushStorageDto); } } if (archiveMaster.getArchivestate().equals("再次封存")) { @@ -198,6 +230,34 @@ public class storageController { return bol + ""; } + //向电子病历推送封存消息 + private void pushStorage(PushStorageDto pushStorageDto) { + //组织xml参数 + String xmlContent = "" + + "" + + "" + pushStorageDto.getPATIENT_STATUS() + "" + + "" + pushStorageDto.getINP_NO() + "" + + "" + pushStorageDto.getPATIENT_ID() + "" + + "< VISIT_ID >" + pushStorageDto.getVISIT_ID() + " "+ + "" + pushStorageDto.getPATIENT_NAME() + ""+ + "" + pushStorageDto.getOPERATOR() + ""+ + "" + pushStorageDto.getOPERATOR_ID() + ""+ + "" + pushStorageDto.getOperationTime() + ""+ + "" + pushStorageDto.getSEQUESTRATION_RESION() + ""+ + ""; + try (CloseableHttpClient httpClient = HttpClients.createDefault()) { + HttpPost httpPost = new HttpPost(MedicalRecordUrl); + httpPost.setHeader("Content-Type", "application/xml"); + StringEntity entity = new StringEntity(xmlContent); + httpPost.setEntity(entity); + try (CloseableHttpResponse response = httpClient.execute(httpPost)) { + EntityUtils.consume(response.getEntity()); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + /* * 封存日志 @@ -216,6 +276,7 @@ public class storageController { OffsetLimitPage result = archiveMasterService.selectByFollowinglog(archiveMasterVo, offset, limit); return result; } + /** * @description: 获取封存类型下拉框 * @author linjj @@ -223,7 +284,7 @@ public class storageController { */ @ResponseBody @RequestMapping(value = "getSafekeeping") - public List getSafekeeping(){ + public List getSafekeeping() { Emr_Dictionary dic = new Emr_Dictionary(); dic.setEffective(1); dic.setTypecode("safekeeping"); diff --git a/src/main/java/com/emr/dto/PushStorageDto.java b/src/main/java/com/emr/dto/PushStorageDto.java new file mode 100644 index 00000000..8df14166 --- /dev/null +++ b/src/main/java/com/emr/dto/PushStorageDto.java @@ -0,0 +1,33 @@ +package com.emr.dto; + +import lombok.Data; + +/** + * @ClassName pushStorageDto + * @Description 电子病历封存 + * @Author linjj + * @Date 2024/5/29 10:03 + * @Version 1.0 + */ +@Data +public class PushStorageDto { + //封存状态 封存:1 解除封存:0 + private int PATIENT_STATUS; + //住院号 + private String INP_NO; + //患者id + private String PATIENT_ID; + //住院次数 + private int VISIT_ID; + //患者信息 + private String PATIENT_NAME; + //封存人姓名 + private String OPERATOR; + //封存人工号 + private String OPERATOR_ID; + //操作时间 + private String OperationTime; + //封存原因 + private String SEQUESTRATION_RESION; + +} diff --git a/src/main/java/com/emr/entity/Emr_Fault_Detail.java b/src/main/java/com/emr/entity/Emr_Fault_Detail.java index 01f01606..94436eb4 100644 --- a/src/main/java/com/emr/entity/Emr_Fault_Detail.java +++ b/src/main/java/com/emr/entity/Emr_Fault_Detail.java @@ -8,7 +8,19 @@ public class Emr_Fault_Detail { private String ArchiveStateFlag; private Integer idPage; + private String name; + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + private String inpNo; + + private String patientId; private String StateFlag; public String getSafekeepingName() { @@ -25,6 +37,22 @@ public class Emr_Fault_Detail { return StateFlag; } + public String getInpNo() { + return inpNo; + } + + public void setInpNo(String inpNo) { + this.inpNo = inpNo; + } + + public String getPatientId() { + return patientId; + } + + public void setPatientId(String patientId) { + this.patientId = patientId; + } + public void setStateFlag(String stateFlag) { StateFlag = stateFlag; } diff --git a/src/main/resources/config/jdbc.properties b/src/main/resources/config/jdbc.properties index 305253da..b0e31d7f 100644 --- a/src/main/resources/config/jdbc.properties +++ b/src/main/resources/config/jdbc.properties @@ -86,4 +86,6 @@ PdfIsError = C:\\Users\\Administrator\\Desktop\\test\\test070802 waterTifToJpgPath = D:/jiashi/tifToJpgLoad/ #\u5bfc\u51fa\u4fe1\u606f\u683c\u5f0f\u9700\u8981\u4e3aunicode\u683c\u5f0f\u4e0d\u7136\u4f1a\u4e71\u7801 -export_pdf_hospital_info = \u5e7f\u4e1c\u7701_\u5e7f\u4e1c\u533b\u79d1\u5927\u5b66\u9644\u5c5e\u533b\u9662 \ No newline at end of file +export_pdf_hospital_info = \u5e7f\u4e1c\u7701_\u5e7f\u4e1c\u533b\u79d1\u5927\u5b66\u9644\u5c5e\u533b\u9662 + +MedicalRecordSealingUrl=http://10.6.0.151:8099/JHNewIEService/JHNewIEService/JHEmrSynchroPatPage \ No newline at end of file diff --git a/src/main/resources/mapper/Archive_MasterMapper.xml b/src/main/resources/mapper/Archive_MasterMapper.xml index 841551d2..a89ee4f8 100644 --- a/src/main/resources/mapper/Archive_MasterMapper.xml +++ b/src/main/resources/mapper/Archive_MasterMapper.xml @@ -1889,7 +1889,7 @@ --%> - <%----%> - <%--<%––%>--%> - <%--<%––%>--%> - <%--<%––%>--%> - <%--<%––%>--%> - <%--<%––%>--%> - <%--<%––%>--%> - <%----%>
- + <%-- --%> <%----%> @@ -137,35 +132,20 @@
-
- -
- - - - -
-
- - <%--
--%> - <%-- --%> - <%-- --%> - <%--
--%>
-
+
@@ -191,10 +171,14 @@
+ + + + 取消封存概述: + maxlength="255" + id="recallReason2">
@@ -219,15 +203,20 @@
+ + + + 确认封存概述: + maxlength="255" + id="recallReason">
@@ -242,8 +231,6 @@
- - <%--确认框--确认/取消封存--%>