package com.ltkj.web.controller.dongfanghis;
import cn.hutool.core.date.DateUtil;
import com.ltkj.common.core.domain.AjaxResult;
import com.ltkj.hosp.dfDto.CheXiaoMzFyDto;
import com.ltkj.hosp.dfDto.CreateMenZhenFyDto;
import com.ltkj.hosp.domain.TjCustomer;
import com.ltkj.system.service.ISysConfigService;
import com.ltkj.web.wxUtils.HttpClientUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
/**
* ClassName: DfHisApiMethodService
* Description:
* date: 2024/12/10 09:24
*
* @author zjh
*/
@Component
@Slf4j
public class DfHisApiMethodService {
@Autowired
private ISysConfigService configService;
private static String HIS_URL = "";
private static String CONFIG_PATH;
private static String GRANT_TYPE = "";
private static String CLIENT_ID = "";
private static String CLIENT_SECRET = "";
private static String SCOP = "";
// @Autowired
// private RedisTemplate redisTemplate;
@Value("${config.properties}")
public void setConfigPath(String configPath) {
CONFIG_PATH = configPath;
try {
FileInputStream inputStream = new FileInputStream(CONFIG_PATH);
Properties props = new Properties();
props.load(inputStream);
String url = props.getProperty("df_his_api_url");
String port = props.getProperty("df_his_api_port");
GRANT_TYPE = props.getProperty("grant_type");
CLIENT_ID= props.getProperty("client_id");
CLIENT_SECRET = props.getProperty("client_secret");
SCOP = props.getProperty("scope");
HIS_URL=url+":"+port+"/OAPI/";
} catch (IOException throwables) {
throwables.printStackTrace();
}
}
//获取token
public AjaxResult getToken () {
Map 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);
}
//建档
public AjaxResult jianDang (TjCustomer customer) {
String czy = configService.selectConfigByKey("dfhisczybm");
Map map = new HashMap<> ();
map.put ("jiuZhenKh", customer.getPationId ());
map.put ("kaiLeiXing","4");
map.put ("xingMing", customer.getCusName ());
Long cusSex = customer.getCusSex();
if(cusSex==0L){
map.put ("xingBie","男");
}else if(cusSex==1L){
map.put ("xingBie","女");
}else {
map.put ("xingBie","未知");
}
map.put ("shenFenZh", customer.getCusIdcard ());
map.put ("danWeiBh","");
map.put ("chuShengRq", DateUtil.format(customer.getCusBrithday(),"yyyy-MM-dd"));
map.put ("lianXiDz", customer.getCusAddr());
map.put ("lianXiDh", customer.getCusPhone ());
map.put ("feiYongLb","");
map.put ("feiYongXz","");
map.put ("jiLuLy","3");
map.put ("caoZuoYuan",czy);
map.put ("chongZhiJe","");
map.put ("yiBaoKh","");
map.put ("geRenBh","");
map.put ("yiBaoBrXx","");
map.put ("gongZuoDw",customer.getCompName());
map.put ("canBaoXzMc","");
map.put ("muLuBlLb","");
map.put ("kunNanJzDj","");
map.put ("yiLiaoLb","");
map.put ("minZuDm","");
map.put ("minZuMc","");
//职业编码
String post = HttpClientUtils.sendPost (HIS_URL+"/menZhenJz/jianDang", map);
return AjaxResult.success ().put ("data", post);
}
//验证身份证是否建过档
public AjaxResult getBingRenXxByShengFenZheng (TjCustomer customer) {
String czy = configService.selectConfigByKey("dfhisczybm");
Map 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);
}
//病人基本信息变更
public AjaxResult saveBingRenXx (TjCustomer customer) {
String czy = configService.selectConfigByKey("dfhisczybm");
Map map = new HashMap<> ();
map.put ("jiuZhenKh", customer.getPationId ());
map.put ("kaiLeiXing","4");
map.put ("xingMing", customer.getCusName ());
Long cusSex = customer.getCusSex();
if(cusSex==0L){
map.put ("xingBie","男");
}else if(cusSex==1L){
map.put ("xingBie","女");
}else {
map.put ("xingBie","未知");
}
map.put ("shenFenZh", customer.getCusIdcard ());
map.put ("danWeiBh","");
map.put ("chuShengRq", DateUtil.format(customer.getCusBrithday(),"yyyy-MM-dd"));
map.put ("lianXiDz", customer.getCusAddr());
map.put ("lianXiDh", customer.getCusPhone ());
map.put ("feiYongLb","");
map.put ("feiYongXz","");
map.put ("jiLuLy","3");
map.put ("caoZuoYuan",czy);
//职业编码
String post = HttpClientUtils.sendPost (HIS_URL+"/menZhenJz/saveBingRenXx", map);
return AjaxResult.success ().put ("data", post);
}
//待收费费用查询
public AjaxResult getListDaiShouFei (String bingRenId,String jiuZhenKh,String yuanQuId) {
Map 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);
}
//待收费费用查询
public AjaxResult createMenZhenFy (CreateMenZhenFyDto dto) {
String czy = configService.selectConfigByKey("dfhisczybm");
Map map = new HashMap<> ();
map.put ("bingRenId",dto.getBingRenId());
map.put ("jiuZhenKh",dto.getJiuZhenKh());
map.put ("caoZuoYuan",czy);
map.put ("yuanQuId",dto.getYuanQuId());
map.put ("yingYongId",dto.getYingYongId());
map.put ("kaiDanKs",dto.getKaiDanKs());
map.put ("dengJiLsh",dto.getDengJiLsh());
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);
}
//门诊未收费费用撤销
public AjaxResult cheXiaoMzFy (CheXiaoMzFyDto dto) {
Map 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);
}
//收费/退费完成通知第三方
public AjaxResult pushZhiFuMsg (String feiYongId,int yeWuLx ) {
Map 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);
}
//科室信息查询
public AjaxResult getKeShi (String yuanQuId,String keShiMc,int pageIndex,int pageSize ) {
Map 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);
}
//医生信息查询
public AjaxResult getListYiShengZd (String yuanQuId,String keShiMc,int pageIndex,int pageSize ) {
Map map = new HashMap<> ();
map.put ("yuanQuId",yuanQuId);
map.put ("keShiMc",keShiMc);
map.put ("bianGengSj","");
map.put ("pageIndex",pageIndex);
map.put ("pageSize",pageSize);
//职业编码
String post = HttpClientUtils.sendPost (HIS_URL+"/zhuShuJu/getListYiShengZd", map);
return AjaxResult.success ().put ("data", post);
}
//获取收费项目分页
public AjaxResult getShouFeiXm (String queryString,String bianGengSj,int pageIndex,int pageSize ) {
Map 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);
}
/**
*科室信息推送
* @param xingZhiSx 组织属性 第一位1 表示 挂号
* 第二位 1表示临床
* 第三位 1表示检查
* 第四位 1 表示手术
* 第五位 1 表示治疗
* 第六位 1 表示护理
* @param queryString 模糊匹配输⼊码1、科室名称
* @param zuoFeiBz 作废标志:0 正常;1 作废
* @param yuanQuId 院区id
* @param keShiIds 科室ID集合
* @param ifPlus 是否查询plus属性
* @return
*/
public AjaxResult getKeShiByConditions (int xingZhiSx, String queryString, int zuoFeiBz, String yuanQuId, ListkeShiIds,int ifPlus) {
Map map = new HashMap<> ();
map.put ("xingZhiSx",xingZhiSx);
map.put ("queryString",queryString);
map.put ("zuoFeiBz",zuoFeiBz);
map.put ("yuanQuId",yuanQuId);
map.put ("keShiIds",keShiIds);
map.put ("ifPlus",ifPlus);
//职业编码
String post = HttpClientUtils.sendPost (HIS_URL+"/zhuShuJu/getKeShiByConditions", map);
return AjaxResult.success ().put ("data", post);
}
/**
* //取样本字典
* @param queryString 样本类型名称(样本名称/样本类型id)
* @param pageIndex
* @param pageSize 每⻚条数(最⼤不能超过100)
* @return
*/
public AjaxResult getYangBen (String queryString,int pageIndex,int pageSize ) {
Map 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);
}
/**
* //病区信息推送
* @param yuanQuId 院区Id
* @param keShiId 科室Id
* @param pageIndex 当前⻚
* @param pageSize 每⻚条数(最⼤不能超过100)
* @return
*/
public AjaxResult getListBingQuZd (String yuanQuId,String keShiId,int pageIndex,int pageSize ) {
Map 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);
}
/**
* 职⼯信息
* @param bianGengSj 变更时间
* @param pageIndex 当前⻚
* @param pageSize 每⻚条数(最⼤不能超过100)
* @return
*/
public AjaxResult getZhiGongPage (String bianGengSj,int pageIndex,int pageSize ) {
Map 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);
}
/**
*
* @param queryString
* @param bianGengSj
* @param pageIndex
* @param pageSize
* @return
*/
public AjaxResult getJianChaXm (String queryString,String bianGengSj,int pageIndex,int pageSize ) {
Map 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);
}
}