| | |
| | | package com.ltkj.web.controller.dongfanghis; |
| | | |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import cn.hutool.json.JSON; |
| | | import cn.hutool.json.JSONObject; |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.ltkj.common.core.domain.AjaxResult; |
| | | import com.ltkj.hosp.dfDto.CheXiaoMzFyDto; |
| | | import com.ltkj.hosp.dfDto.CreateMenZhenFyDto; |
| | |
| | | |
| | | import java.io.FileInputStream; |
| | | import java.io.IOException; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Properties; |
| | | import java.time.Instant; |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | /** |
| | | * ClassName: DfHisApiMethodService <br/> |
| | |
| | | |
| | | @Autowired |
| | | private ISysConfigService configService; |
| | | // @Autowired |
| | | private RedisTemplate<String ,Object> redisTemplate; |
| | | |
| | | private static String HIS_URL = ""; |
| | | private static String HIS_URL = "http://oapi.pbkwyy.com/OAPI"; |
| | | |
| | | private static String CONFIG_PATH; |
| | | |
| | | private static String GRANT_TYPE = ""; |
| | | private static String CLIENT_ID = ""; |
| | | private static String CLIENT_SECRET = ""; |
| | | private static String SCOP = ""; |
| | | private static String GRANT_TYPE = "client_credentials"; |
| | | private static String CLIENT_ID = "XFZZQEfXTZ7exhhi"; |
| | | private static String CLIENT_SECRET = "05a192176c21edfcc9cf5fa26fc5a9e0c5b131ad"; |
| | | // private static String SCOP = ""; |
| | | |
| | | // @Autowired |
| | | // private RedisTemplate<String,Object> redisTemplate; |
| | | // http://oapi.pbkwyy.com/OAPI/oauth/token |
| | | // grant_type:client_credentials |
| | | // client_id:XFZZQEfXTZ7exhhi |
| | | // client_secret:05a192176c21edfcc9cf5fa26fc5a9e0c5b131ad |
| | | |
| | | @Value("${config.properties}") |
| | | public void setConfigPath(String configPath) { |
| | |
| | | GRANT_TYPE = props.getProperty("grant_type"); |
| | | CLIENT_ID= props.getProperty("client_id"); |
| | | CLIENT_SECRET = props.getProperty("client_secret"); |
| | | SCOP = props.getProperty("scope"); |
| | | // SCOP = props.getProperty("scope"); |
| | | HIS_URL=url+":"+port+"/OAPI/"; |
| | | } catch (IOException throwables) { |
| | | throwables.printStackTrace(); |
| | |
| | | |
| | | |
| | | //获取token |
| | | public AjaxResult getToken () { |
| | | private JSONObject getToken () { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("grant_type",GRANT_TYPE); |
| | | map.put("client_id",CLIENT_ID); |
| | | map.put("client_secret",CLIENT_SECRET); |
| | | map.put("scope",SCOP); |
| | | String post = HttpClientUtils.sendPost (HIS_URL+"/oauth/token", map); |
| | | return AjaxResult.success ().put ("data", post); |
| | | // map.put("scope",SCOP); |
| | | String post = sendPost (HIS_URL+"/oauth/token", map); |
| | | if (StrUtil.isBlank(post)) return null; |
| | | JSONObject parseObj = JSONUtil.parseObj(post); |
| | | // Integer expiresIn = parseObj.getInt("expires_in"); |
| | | // if (expiresIn != null){ |
| | | // parseObj.putOpt("time",Instant.now().getEpochSecond()); |
| | | // redisTemplate.opsForHash().putAll("token:his:df",parseObj); |
| | | // redisTemplate.expire("token:his:df",expiresIn - 10, TimeUnit.SECONDS); |
| | | // } |
| | | return parseObj; |
| | | } |
| | | |
| | | //建档 |
| | | public AjaxResult jianDang (TjCustomer customer) { |
| | | public JSON jianDang (TjCustomer customer) { |
| | | String czy = configService.selectConfigByKey("dfhisczybm"); |
| | | |
| | | Map<String, Object> map = new HashMap<> (); |
| | |
| | | map.put ("minZuDm",""); |
| | | map.put ("minZuMc",""); |
| | | //职业编码 |
| | | String post = HttpClientUtils.sendPost (HIS_URL+"/menZhenJz/jianDang", map); |
| | | return AjaxResult.success ().put ("data", post); |
| | | String post = sendPost (HIS_URL+"/menZhenJz/jianDang", map); |
| | | return JSONUtil.parseObj(post); |
| | | } |
| | | |
| | | //验证身份证是否建过档 |
| | | public AjaxResult getBingRenXxByShengFenZheng (TjCustomer customer) { |
| | | public JSON getBingRenXxByShengFenZheng (TjCustomer customer) { |
| | | String czy = configService.selectConfigByKey("dfhisczybm"); |
| | | Map<String, Object> map = new HashMap<> (); |
| | | map.put ("caoZuoYuan",czy); |
| | | map.put ("shenFenZh", customer.getCusIdcard ()); |
| | | map.put ("danWeiBh",""); |
| | | //职业编码 |
| | | String post = HttpClientUtils.sendPost (HIS_URL+"/menZhenJz/getBingRenXxByShengFenZheng", map); |
| | | return AjaxResult.success ().put ("data", post); |
| | | String post = sendPost (HIS_URL+"/menZhenJz/getBingRenXxByShengFenZheng", map); |
| | | return JSONUtil.parseObj(post); |
| | | } |
| | | |
| | | //病人基本信息变更 |
| | | public AjaxResult saveBingRenXx (TjCustomer customer) { |
| | | public JSON saveBingRenXx (TjCustomer customer) { |
| | | String czy = configService.selectConfigByKey("dfhisczybm"); |
| | | Map<String, Object> map = new HashMap<> (); |
| | | map.put ("jiuZhenKh", customer.getPationId ()); |
| | |
| | | map.put ("jiLuLy","3"); |
| | | map.put ("caoZuoYuan",czy); |
| | | //职业编码 |
| | | String post = HttpClientUtils.sendPost (HIS_URL+"/menZhenJz/saveBingRenXx", map); |
| | | return AjaxResult.success ().put ("data", post); |
| | | String post = sendPost (HIS_URL+"/menZhenJz/saveBingRenXx", map); |
| | | return JSONUtil.parseObj(post); |
| | | } |
| | | |
| | | //待收费费用查询 |
| | | public AjaxResult getListDaiShouFei (String bingRenId,String jiuZhenKh,String yuanQuId) { |
| | | public JSON getListDaiShouFei (String bingRenId,String jiuZhenKh,String yuanQuId) { |
| | | Map<String, Object> map = new HashMap<> (); |
| | | map.put ("bingRenId",bingRenId); |
| | | map.put ("jiuZhenKh",jiuZhenKh); |
| | | map.put ("yuanQuId",yuanQuId); |
| | | //职业编码 |
| | | String post = HttpClientUtils.sendPost (HIS_URL+"/shouFei/getListDaiShouFei", map); |
| | | return AjaxResult.success ().put ("data", post); |
| | | String post = sendPost (HIS_URL+"/shouFei/getListDaiShouFei", map); |
| | | return JSONUtil.parseObj(post); |
| | | } |
| | | |
| | | |
| | | //待收费费用查询 |
| | | public AjaxResult createMenZhenFy (CreateMenZhenFyDto dto) { |
| | | //生成待收费/待退费 费用 |
| | | public JSON createMenZhenFy (CreateMenZhenFyDto dto) { |
| | | String czy = configService.selectConfigByKey("dfhisczybm"); |
| | | Map<String, Object> map = new HashMap<> (); |
| | | map.put ("bingRenId",dto.getBingRenId()); |
| | |
| | | map.put ("shouTuiBz",dto.getShouTuiBz()); |
| | | map.put ("feiYongMxList",dto.getFeiYongMxList()); |
| | | //职业编码 |
| | | String post = HttpClientUtils.sendPost (HIS_URL+"/shouFei/createMenZhenFy", map); |
| | | return AjaxResult.success ().put ("data", post); |
| | | String post = sendPost (HIS_URL+"/shouFei/createMenZhenFy", map); |
| | | return JSONUtil.parseObj(post); |
| | | } |
| | | |
| | | |
| | | //门诊未收费费用撤销 |
| | | public AjaxResult cheXiaoMzFy (CheXiaoMzFyDto dto) { |
| | | public JSON cheXiaoMzFy (CheXiaoMzFyDto dto) { |
| | | Map<String, Object> map = new HashMap<> (); |
| | | map.put ("bingRenId",dto.getBingRenId()); |
| | | map.put ("jiuZhenKh",dto.getJiuZhenKh()); |
| | | map.put ("feiYongIdList",dto.getFeiYongIdList()); |
| | | //职业编码 |
| | | String post = HttpClientUtils.sendPost (HIS_URL+"/shouFei/cheXiaoMzFy", map); |
| | | return AjaxResult.success ().put ("data", post); |
| | | String post = sendPost (HIS_URL+"/shouFei/cheXiaoMzFy", map); |
| | | return JSONUtil.parseObj(post); |
| | | } |
| | | |
| | | |
| | | //收费/退费完成通知第三方 |
| | | public AjaxResult pushZhiFuMsg (String feiYongId,int yeWuLx ) { |
| | | public JSON pushZhiFuMsg (String feiYongId,int yeWuLx ) { |
| | | Map<String, Object> map = new HashMap<> (); |
| | | map.put ("feiYongId",feiYongId); |
| | | map.put ("yeWuLx",yeWuLx); |
| | | //职业编码 |
| | | String post = HttpClientUtils.sendPost (HIS_URL+"/shouFei/pushZhiFuMsg", map); |
| | | return AjaxResult.success ().put ("data", post); |
| | | String post = sendPost (HIS_URL+"/shouFei/pushZhiFuMsg", map); |
| | | return JSONUtil.parseObj(post); |
| | | } |
| | | |
| | | |
| | | //科室信息查询 |
| | | public AjaxResult getKeShi (String yuanQuId,String keShiMc,int pageIndex,int pageSize ) { |
| | | public JSON getKeShi (String yuanQuId,String keShiMc,int pageIndex,int pageSize ) { |
| | | Map<String, Object> map = new HashMap<> (); |
| | | map.put ("yuanQuId",yuanQuId); |
| | | map.put ("keShiMc",keShiMc); |
| | | map.put ("pageIndex",pageIndex); |
| | | map.put ("pageSize",pageSize); |
| | | //职业编码 |
| | | String post = HttpClientUtils.sendPost (HIS_URL+"/zhuShuJu/getKeShi", map); |
| | | return AjaxResult.success ().put ("data", post); |
| | | String post = sendPost (HIS_URL+"/zhuShuJu/getKeShi", map); |
| | | return JSONUtil.parseObj(post); |
| | | } |
| | | |
| | | //医生信息查询 |
| | | public AjaxResult getListYiShengZd (String yuanQuId,String keShiMc,int pageIndex,int pageSize ) { |
| | | public JSON getListYiShengZd (String yuanQuId,String keShiMc,int pageIndex,int pageSize ) { |
| | | Map<String, Object> map = new HashMap<> (); |
| | | map.put ("yuanQuId",yuanQuId); |
| | | map.put ("keShiMc",keShiMc); |
| | |
| | | map.put ("pageIndex",pageIndex); |
| | | map.put ("pageSize",pageSize); |
| | | //职业编码 |
| | | String post = HttpClientUtils.sendPost (HIS_URL+"/zhuShuJu/getListYiShengZd", map); |
| | | return AjaxResult.success ().put ("data", post); |
| | | String post = sendPost (HIS_URL+"/zhuShuJu/getListYiShengZd", map); |
| | | return JSONUtil.parseObj(post); |
| | | } |
| | | |
| | | |
| | | //获取收费项目分页 |
| | | public AjaxResult getShouFeiXm (String queryString,String bianGengSj,int pageIndex,int pageSize ) { |
| | | public JSON getShouFeiXm (String queryString,String bianGengSj,int pageIndex,int pageSize ) { |
| | | Map<String, Object> map = new HashMap<> (); |
| | | map.put ("queryString",queryString); |
| | | map.put ("bianGengSj",bianGengSj); |
| | | map.put ("pageIndex",pageIndex); |
| | | map.put ("pageSize",pageSize); |
| | | //职业编码 |
| | | String post = HttpClientUtils.sendPost (HIS_URL+"/zhuShuJu/getShouFeiXm", map); |
| | | return AjaxResult.success ().put ("data", post); |
| | | String post = sendPost (HIS_URL+"/zhuShuJu/getShouFeiXm", map); |
| | | return JSONUtil.parseObj(post); |
| | | } |
| | | |
| | | |
| | |
| | | * @param ifPlus 是否查询plus属性 |
| | | * @return |
| | | */ |
| | | public AjaxResult getKeShiByConditions (int xingZhiSx, String queryString, int zuoFeiBz, String yuanQuId, List<String>keShiIds,int ifPlus) { |
| | | public JSON getKeShiByConditions (int xingZhiSx, String queryString, int zuoFeiBz, String yuanQuId, List<String>keShiIds,int ifPlus) { |
| | | Map<String, Object> map = new HashMap<> (); |
| | | map.put ("xingZhiSx",xingZhiSx); |
| | | map.put ("queryString",queryString); |
| | |
| | | map.put ("keShiIds",keShiIds); |
| | | map.put ("ifPlus",ifPlus); |
| | | //职业编码 |
| | | String post = HttpClientUtils.sendPost (HIS_URL+"/zhuShuJu/getKeShiByConditions", map); |
| | | return AjaxResult.success ().put ("data", post); |
| | | String post = sendPost (HIS_URL+"/zhuShuJu/getKeShiByConditions", map); |
| | | return JSONUtil.parseObj(post); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * //取样本字典 |
| | | * 取样本字典 |
| | | * @param queryString 样本类型名称(样本名称/样本类型id) |
| | | * @param pageIndex |
| | | * @param pageSize 每⻚条数(最⼤不能超过100) |
| | | * @return |
| | | */ |
| | | public AjaxResult getYangBen (String queryString,int pageIndex,int pageSize ) { |
| | | public JSON getYangBen (String queryString,int pageIndex,int pageSize ) { |
| | | Map<String, Object> map = new HashMap<> (); |
| | | map.put ("queryString",queryString); |
| | | map.put ("pageIndex",pageIndex); |
| | | map.put ("pageSize",pageSize); |
| | | //职业编码 |
| | | String post = HttpClientUtils.sendPost (HIS_URL+"/zhuShuJu/getYangBen", map); |
| | | return AjaxResult.success ().put ("data", post); |
| | | String post = sendPost (HIS_URL+"/zhuShuJu/getYangBen", map); |
| | | return JSONUtil.parseObj(post); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * //病区信息推送 |
| | | * 病区信息推送 |
| | | * @param yuanQuId 院区Id |
| | | * @param keShiId 科室Id |
| | | * @param pageIndex 当前⻚ |
| | | * @param pageSize 每⻚条数(最⼤不能超过100) |
| | | * @return |
| | | */ |
| | | public AjaxResult getListBingQuZd (String yuanQuId,String keShiId,int pageIndex,int pageSize ) { |
| | | public JSON getListBingQuZd (String yuanQuId,String keShiId,int pageIndex,int pageSize ) { |
| | | Map<String, Object> map = new HashMap<> (); |
| | | map.put ("yuanQuId",yuanQuId); |
| | | map.put ("keShiId",keShiId); |
| | | map.put ("pageIndex",pageIndex); |
| | | map.put ("pageSize",pageSize); |
| | | //职业编码 |
| | | String post = HttpClientUtils.sendPost (HIS_URL+"/zhuShuJu/getListBingQuZd", map); |
| | | return AjaxResult.success ().put ("data", post); |
| | | String post = sendPost (HIS_URL+"/zhuShuJu/getListBingQuZd", map); |
| | | return JSONUtil.parseObj(post); |
| | | } |
| | | |
| | | /** |
| | |
| | | * @param pageSize 每⻚条数(最⼤不能超过100) |
| | | * @return |
| | | */ |
| | | public AjaxResult getZhiGongPage (String bianGengSj,int pageIndex,int pageSize ) { |
| | | public JSON getZhiGongPage (String bianGengSj,int pageIndex,int pageSize ) { |
| | | Map<String, Object> map = new HashMap<> (); |
| | | map.put ("bianGengSj",bianGengSj); |
| | | map.put ("pageIndex",pageIndex); |
| | | map.put ("pageSize",pageSize); |
| | | //职业编码 |
| | | String post = HttpClientUtils.sendPost (HIS_URL+"/zhuShuJu/getZhiGongPage", map); |
| | | return AjaxResult.success ().put ("data", post); |
| | | String post = sendPost (HIS_URL+"/zhuShuJu/getZhiGongPage", map); |
| | | return JSONUtil.parseObj(post); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * |
| | | * 检查项目 |
| | | * @param queryString |
| | | * @param bianGengSj |
| | | * @param pageIndex |
| | | * @param pageSize |
| | | * @return |
| | | */ |
| | | public AjaxResult getJianChaXm (String queryString,String bianGengSj,int pageIndex,int pageSize ) { |
| | | public JSON getJianChaXm (String queryString,String bianGengSj,int pageIndex,int pageSize ) { |
| | | Map<String, Object> map = new HashMap<> (); |
| | | map.put ("queryString",queryString); |
| | | map.put ("bianGengSj",bianGengSj); |
| | | map.put ("pageIndex",pageIndex); |
| | | map.put ("pageSize",pageSize); |
| | | //职业编码 |
| | | String post = HttpClientUtils.sendPost (HIS_URL+"/zhuShuJu/getJianChaXm", map); |
| | | return AjaxResult.success ().put ("data", post); |
| | | String post = sendPost (HIS_URL+"/zhuShuJu/getJianChaXm", map); |
| | | return JSONUtil.parseObj(post); |
| | | } |
| | | |
| | | /** |
| | | * 检验项⽬推送 |
| | | * @param queryCode 查询码(项⽬编码/拼⾳码 |
| | | * @param page 当前⻚ |
| | | * @param size 每⻚条数(最⼤不能超过100 |
| | | * @return |
| | | */ |
| | | public JSON getJianYanXm(String queryCode,Integer page,Integer size){ |
| | | HashMap<String, Object> hashMap = new HashMap<>(); |
| | | hashMap.put("queryCode",queryCode); |
| | | hashMap.put("page",page); |
| | | hashMap.put("size",size); |
| | | String post = sendPost (HIS_URL+"/zhuShuJu/getJianYanXm", hashMap); |
| | | return JSONUtil.parse(post); |
| | | } |
| | | |
| | | /** |
| | | * 检验项⽬收费推送 |
| | | * @param shouFeiXmId 收费项⽬id |
| | | * @param jiaGeTx 价格体系 |
| | | * @return |
| | | */ |
| | | public JSON getShouFeiXmJg(String shouFeiXmId,String jiaGeTx){ |
| | | HashMap<String, Object> hashMap = new HashMap<>(); |
| | | hashMap.put("shouFeiXmId",shouFeiXmId); |
| | | hashMap.put("jiaGeTx",jiaGeTx); |
| | | String post = sendPost (HIS_URL+"/zhuShuJu/getShouFeiXmJg", hashMap); |
| | | return JSONUtil.parse(post); |
| | | } |
| | | |
| | | /** |
| | | * 检验容器 |
| | | * @param queryString 容器名称(容器名称/输⼊码1) |
| | | * @param pageIndex 当前⻚ |
| | | * @param pageSize 每⻚条数(最⼤不能超过100) |
| | | * @return |
| | | */ |
| | | public JSON getRongQi(String queryString,Integer pageIndex,Integer pageSize){ |
| | | HashMap<String, Object> hashMap = new HashMap<>(); |
| | | hashMap.put("queryString",queryString); |
| | | hashMap.put("pageIndex",pageIndex); |
| | | hashMap.put("pageSize",pageSize); |
| | | String post = sendPost (HIS_URL+"/zhuShuJu/getRongQi", hashMap); |
| | | return JSONUtil.parse(post); |
| | | } |
| | | |
| | | /** |
| | | * 检验样本 |
| | | * @param queryString 样本类型名称(样本名称/样本类型id) |
| | | * @param pageIndex 当前⻚ |
| | | * @param pageSize 每⻚条数(最⼤不能超过100) |
| | | * @return |
| | | */ |
| | | public JSON getYangBen(String queryString,Integer pageIndex,Integer pageSize){ |
| | | HashMap<String, Object> hashMap = new HashMap<>(); |
| | | hashMap.put("queryString",queryString); |
| | | hashMap.put("pageIndex",pageIndex); |
| | | hashMap.put("pageSize",pageSize); |
| | | String post = sendPost (HIS_URL+"/zhuShuJu/getYangBen", hashMap); |
| | | return JSONUtil.parse(post); |
| | | } |
| | | |
| | | private String sendPost(String url,Map<String, Object> hashMap){ |
| | | Map<Object, Object> entries = redisTemplate.opsForHash().entries("token:his:df"); |
| | | if (entries != null && !entries.isEmpty()) { |
| | | String timeStr = entries.get("time").toString(); |
| | | String expiresInStr = entries.get("expires_in").toString(); |
| | | long time = Long.parseLong(timeStr); |
| | | long expiresIn = Long.parseLong(expiresInStr); |
| | | Instant tokenExpirationTime = Instant.ofEpochSecond(time).plusSeconds(expiresIn); |
| | | Instant now = Instant.now(); |
| | | if (now.isAfter(tokenExpirationTime)){ |
| | | return refreshToken(url,hashMap); |
| | | }else { |
| | | String accessToken = entries.get("access_token").toString(); |
| | | String tokenType = entries.get("token_type").toString(); |
| | | String string = HttpClientUtils.sendPostToken(url, hashMap, tokenType + " " + accessToken); |
| | | return StrUtil.isNotBlank(string) ? string : JSONUtil.createObj().toString(); |
| | | } |
| | | }else { |
| | | return refreshToken(url, hashMap); |
| | | } |
| | | } |
| | | |
| | | private String refreshToken(String url, Map<String, Object> hashMap) { |
| | | JSONObject parseObj = getToken(); |
| | | if (parseObj != null) { |
| | | Integer expiresIn = parseObj.getInt("expires_in"); |
| | | if (expiresIn != null) { |
| | | parseObj.putOpt("time", Instant.now().getEpochSecond()); |
| | | redisTemplate.opsForHash().putAll("token:his:df", parseObj); |
| | | redisTemplate.expire("token:his:df", expiresIn - 10, TimeUnit.SECONDS); |
| | | |
| | | String accessToken = parseObj.getStr("access_token"); |
| | | String tokenType = parseObj.getStr("token_type"); |
| | | String string = HttpClientUtils.sendPostToken(url, hashMap, tokenType + " " + accessToken); |
| | | return StrUtil.isNotBlank(string) ? string : JSONUtil.createObj().toString(); |
| | | } |
| | | } |
| | | return JSONUtil.createObj().toString(); |
| | | } |
| | | |
| | | |