diff --git a/src/main/java/com/emr/controller/FontController.java b/src/main/java/com/emr/controller/FontController.java index f4771814..fb48905d 100644 --- a/src/main/java/com/emr/controller/FontController.java +++ b/src/main/java/com/emr/controller/FontController.java @@ -6,6 +6,7 @@ import com.emr.entity.*; import com.emr.service.Archive_DetailService; import com.emr.service.Archive_MasterService; import com.emr.service.Zd_AssortService; +import com.emr.service.ipml.TBasicBrowseHistoryService; import com.emr.util.ExceptionPrintUtil; import com.emr.util.Msg; import org.apache.commons.lang3.StringUtils; @@ -13,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; @@ -47,13 +49,15 @@ public class FontController { private Emr_DictionaryMapper dictionaryMapper; @Autowired private Zd_AssortService assortService; + @Autowired + private TBasicBrowseHistoryService tBasicBrowseHistoryService; /***************************提供第三方按多个分段id和记账号查询病历pdf***********************************/ /** * 提供第三方按多个分段id和记账号查询病历pdf * */ @RequestMapping("showRecordByPatientId") - public String showRecordByPatientId( HttpServletResponse response, String assortIds, String patientId, String visitId, Model model){ + public String showRecordByPatientId( HttpServletResponse response, String assortIds, String patientId, String visitId,Integer isArchive,String userName,Model model){ response.setCharacterEncoding("utf-8"); //System.out.println(System.getProperty("file.encoding"));//当前文件的编码方式 if(StringUtils.isBlank(assortIds)){ @@ -65,6 +69,13 @@ public class FontController { if(StringUtils.isBlank(visitId)){ return retrunErrorPage(model,"住院次数不能为空!"); } + if(null != isArchive && isArchive == 1){ + //判断是否归档 + List archiveMasters = archiveMasterService.selectByObject(patientId, visitId); + if(CollectionUtils.isEmpty(archiveMasters) || !"已归档".equals(archiveMasters.get(0).getArchivestate())){ + return retrunErrorPage(model, "病案不存在或未归档"); + } + } List list = new ArrayList<>(); //判断工号是否存在 try { @@ -91,6 +102,8 @@ public class FontController { model.addAttribute("patientId",list.get(0).getId()); model.addAttribute("accountNumber",list.get(0).getPatientId()); model.addAttribute("assortIds",assortIds); + model.addAttribute("visitId",visitId); + model.addAttribute("userName",userName); return "font/showRecordIframe"; } @@ -202,7 +215,7 @@ public class FontController { */ @ResponseBody @RequestMapping(value = "/getRecordTypeTree") - public String getRecordTypeTree(HttpServletResponse response,String patientId,String assortIds){ + public String getRecordTypeTree(HttpServletResponse response,HttpServletRequest request,String patientId,String visitId,String assortIds,String userName){ response.setCharacterEncoding("utf-8"); // System.out.println(System.getProperty("file.encoding"));//当前文件的编码方式 List treeList = new ArrayList<>(); @@ -230,6 +243,7 @@ public class FontController { } if(null != list && !list.isEmpty()){ Set assortList = new LinkedHashSet<>(); + Set assortIdList = new LinkedHashSet<>(); //抽取首次病程记录 String strTemp = "首次病程"; String assortId = "11"; @@ -241,6 +255,7 @@ public class FontController { //分类去重 for(Archive_Detail detail : list){ assortList.add(detail.getSubassort()); + assortIdList.add(detail.getAssortid()); //获取title String title = detail.getTitle(); if(StringUtils.isNotBlank(title) && detail.getTitle().contains(strTemp)){ @@ -330,6 +345,13 @@ public class FontController { tree1.setChecked("true"); treeList.add(tree1); } + TBasicBrowseHistory tBasicBrowseHistory = new TBasicBrowseHistory(); + tBasicBrowseHistory.setPatientId(patientId); + tBasicBrowseHistory.setVisitId(visitId); + tBasicBrowseHistory.setClassify(StringUtils.join(assortIdList, ",")); + tBasicBrowseHistory.setClassifyName(StringUtils.join(assortList,",")); + tBasicBrowseHistory.setCreater(userName); + tBasicBrowseHistoryService.insert(request,tBasicBrowseHistory); } } return JSON.toJSONString(treeList); diff --git a/src/main/java/com/emr/dao/TBasicBrowseHistoryMapper.java b/src/main/java/com/emr/dao/TBasicBrowseHistoryMapper.java new file mode 100644 index 00000000..7eafc6de --- /dev/null +++ b/src/main/java/com/emr/dao/TBasicBrowseHistoryMapper.java @@ -0,0 +1,17 @@ +package com.emr.dao; + +import com.emr.entity.TBasicBrowseHistory; + +public interface TBasicBrowseHistoryMapper { + int deleteByPrimaryKey(Long id); + + int insert(TBasicBrowseHistory record); + + int insertSelective(TBasicBrowseHistory record); + + TBasicBrowseHistory selectByPrimaryKey(Long id); + + int updateByPrimaryKeySelective(TBasicBrowseHistory record); + + int updateByPrimaryKey(TBasicBrowseHistory record); +} \ No newline at end of file diff --git a/src/main/java/com/emr/entity/TBasicBrowseHistory.java b/src/main/java/com/emr/entity/TBasicBrowseHistory.java new file mode 100644 index 00000000..8860fd4c --- /dev/null +++ b/src/main/java/com/emr/entity/TBasicBrowseHistory.java @@ -0,0 +1,117 @@ +package com.emr.entity; + +import java.io.Serializable; +import java.util.Date; + +public class TBasicBrowseHistory implements Serializable { + private Long id; + + private String patientId; + + private String visitId; + + private String classify; + + private String classifyName; + + private String ip; + + private String creater; + + private String createrName; + + private Date createTime; + + private static final long serialVersionUID = 1L; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getPatientId() { + return patientId; + } + + public void setPatientId(String patientId) { + this.patientId = patientId == null ? null : patientId.trim(); + } + + public String getVisitId() { + return visitId; + } + + public void setVisitId(String visitId) { + this.visitId = visitId == null ? null : visitId.trim(); + } + + public String getClassify() { + return classify; + } + + public void setClassify(String classify) { + this.classify = classify == null ? null : classify.trim(); + } + + public String getClassifyName() { + return classifyName; + } + + public void setClassifyName(String classifyName) { + this.classifyName = classifyName == null ? null : classifyName.trim(); + } + + public String getIp() { + return ip; + } + + public void setIp(String ip) { + this.ip = ip == null ? null : ip.trim(); + } + + public String getCreater() { + return creater; + } + + public void setCreater(String creater) { + this.creater = creater == null ? null : creater.trim(); + } + + public String getCreaterName() { + return createrName; + } + + public void setCreaterName(String createrName) { + this.createrName = createrName == null ? null : createrName.trim(); + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(getClass().getSimpleName()); + sb.append(" ["); + sb.append("Hash = ").append(hashCode()); + sb.append(", id=").append(id); + sb.append(", patientId=").append(patientId); + sb.append(", visitId=").append(visitId); + sb.append(", classify=").append(classify); + sb.append(", classifyName=").append(classifyName); + sb.append(", ip=").append(ip); + sb.append(", creater=").append(creater); + sb.append(", createrName=").append(createrName); + sb.append(", createTime=").append(createTime); + sb.append("]"); + return sb.toString(); + } +} \ No newline at end of file diff --git a/src/main/java/com/emr/service/ipml/TBasicBrowseHistoryService.java b/src/main/java/com/emr/service/ipml/TBasicBrowseHistoryService.java new file mode 100644 index 00000000..5c607012 --- /dev/null +++ b/src/main/java/com/emr/service/ipml/TBasicBrowseHistoryService.java @@ -0,0 +1,79 @@ +package com.emr.service.ipml; + +import com.emr.dao.TBasicBrowseHistoryMapper; +import com.emr.entity.Power_User; +import com.emr.entity.TBasicBrowseHistory; +import com.emr.util.IDHelper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.servlet.http.HttpServletRequest; +import java.net.InetAddress; +import java.net.UnknownHostException; +import java.util.Date; + +/** + * @ProjectName: + * @Description: + * @Param 传输参数 + * @Return + * @Author: 曾文和 + * @CreateDate: 2022/2/10 22:30 + * @UpdateUser: 曾文和 + * @UpdateDate: 2022/2/10 22:30 + * @UpdateRemark: 更新说明 + * @Version: 1.0 + */ +@Service +@Transactional +public class TBasicBrowseHistoryService { + @Autowired + private TBasicBrowseHistoryMapper tBasicBrowseHistoryMapper; + + public void insert(HttpServletRequest request,TBasicBrowseHistory tBasicBrowseHistory){ + try { + long id = IDHelper.NewID(); + tBasicBrowseHistory.setId(id); + tBasicBrowseHistory.setCreateTime(new Date()); + tBasicBrowseHistory.setIp(getIpAddr(request)); + tBasicBrowseHistoryMapper.insert(tBasicBrowseHistory); + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static String getIpAddr(HttpServletRequest request) { + String ipAddress = request.getHeader("x-forwarded-for"); + if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getHeader("Proxy-Client-IP"); + } + if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getHeader("WL-Proxy-Client-IP"); + } + if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getRemoteAddr(); + String localIp = "127.0.0.1"; + String localIpv6 = "0:0:0:0:0:0:0:1"; + if (ipAddress.equals(localIp) || ipAddress.equals(localIpv6)) { + // 根据网卡取本机配置的IP + InetAddress inet = null; + try { + inet = InetAddress.getLocalHost(); + ipAddress = inet.getHostAddress(); + } catch (UnknownHostException e) { + e.printStackTrace(); + } + } + } + // 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割 + String ipSeparate = ","; + int ipLength = 15; + if (ipAddress != null && ipAddress.length() > ipLength) { + if (ipAddress.indexOf(ipSeparate) > 0) { + ipAddress = ipAddress.substring(0, ipAddress.indexOf(ipSeparate)); + } + } + return ipAddress; + } +} diff --git a/src/main/resources/mapper/TBasicBrowseHistoryMapper.xml b/src/main/resources/mapper/TBasicBrowseHistoryMapper.xml new file mode 100644 index 00000000..7bf1d4ce --- /dev/null +++ b/src/main/resources/mapper/TBasicBrowseHistoryMapper.xml @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + id, patient_id, visit_id, classify, classify_name, ip, creater, creater_name, create_time + + + + delete from t_basic_browse_history + where id = #{id,jdbcType=BIGINT} + + + insert into t_basic_browse_history (id, patient_id, visit_id, + classify, classify_name, ip, + creater, creater_name, create_time + ) + values (#{id,jdbcType=BIGINT}, #{patientId,jdbcType=NVARCHAR}, #{visitId,jdbcType=VARCHAR}, + #{classify,jdbcType=NVARCHAR}, #{classifyName,jdbcType=NVARCHAR}, #{ip,jdbcType=NVARCHAR}, + #{creater,jdbcType=NVARCHAR}, #{createrName,jdbcType=NVARCHAR}, #{createTime,jdbcType=TIMESTAMP} + ) + + + insert into t_basic_browse_history + + + id, + + + patient_id, + + + visit_id, + + + classify, + + + classify_name, + + + ip, + + + creater, + + + creater_name, + + + create_time, + + + + + #{id,jdbcType=BIGINT}, + + + #{patientId,jdbcType=NVARCHAR}, + + + #{visitId,jdbcType=VARCHAR}, + + + #{classify,jdbcType=NVARCHAR}, + + + #{classifyName,jdbcType=NVARCHAR}, + + + #{ip,jdbcType=NVARCHAR}, + + + #{creater,jdbcType=NVARCHAR}, + + + #{createrName,jdbcType=NVARCHAR}, + + + #{createTime,jdbcType=TIMESTAMP}, + + + + + update t_basic_browse_history + + + patient_id = #{patientId,jdbcType=NVARCHAR}, + + + visit_id = #{visitId,jdbcType=VARCHAR}, + + + classify = #{classify,jdbcType=NVARCHAR}, + + + classify_name = #{classifyName,jdbcType=NVARCHAR}, + + + ip = #{ip,jdbcType=NVARCHAR}, + + + creater = #{creater,jdbcType=NVARCHAR}, + + + creater_name = #{createrName,jdbcType=NVARCHAR}, + + + create_time = #{createTime,jdbcType=TIMESTAMP}, + + + where id = #{id,jdbcType=BIGINT} + + + update t_basic_browse_history + set patient_id = #{patientId,jdbcType=NVARCHAR}, + visit_id = #{visitId,jdbcType=VARCHAR}, + classify = #{classify,jdbcType=NVARCHAR}, + classify_name = #{classifyName,jdbcType=NVARCHAR}, + ip = #{ip,jdbcType=NVARCHAR}, + creater = #{creater,jdbcType=NVARCHAR}, + creater_name = #{createrName,jdbcType=NVARCHAR}, + create_time = #{createTime,jdbcType=TIMESTAMP} + where id = #{id,jdbcType=BIGINT} + + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/views/font/showRecordIframe.jsp b/src/main/webapp/WEB-INF/views/font/showRecordIframe.jsp index 2ae435d7..0eeba0a0 100644 --- a/src/main/webapp/WEB-INF/views/font/showRecordIframe.jsp +++ b/src/main/webapp/WEB-INF/views/font/showRecordIframe.jsp @@ -194,6 +194,7 @@ +
正在采集,请稍等
@@ -462,7 +463,7 @@ var params = ''; //获取业务识别编码 url = path+"/font/getRecordTypeTree"; - params = {patientId:$("#patientId").val(),assortIds:$("#assortIds").val()}; + params = {patientId:$("#patientId").val(),assortIds:$("#assortIds").val(),visitId:$("#visitId").val(),userName:$("#userName").val()}; $.ajax({ type: "post", url: url,