UNPKG

medical

Version:
209 lines (198 loc) 7.93 kB
const path = require('path') const dayjs = require("dayjs") const HZVObj=require("./js/HZV") const Provice=require("./js/Provice") const xianju=require('./js/XianJu') const voiceQuoterObj = require('./js/voiceQuoter') const sykt=require('./js/sykt') const dllinvoke = require("./js/dllinvoke") const fs = require("fs") const encodingConvert = require('encoding'); const ref = require('ref-napi') const redis = require("redis") const {promisify} = require('util'); const os = require("os") const hisLogger = require("../../src/hisLogger"); const settings = require("electron-settings") hisLogger.hisLogger(settings.file()) let client = redis.createClient(settings.getSync("redis.port"), settings.getSync("redis.host")); client.auth(settings.getSync("redis.password")) client.on("error", function (err) { hisLogger.hisLogger("redis client连接失败",err); }); client.on('ready', function (res) { hisLogger.hisLogger('client ready'); }); const hgetAsync = promisify(client.hget).bind(client); const hexistsAsync = promisify(client.hexists).bind(client); const isDownload = settings.getSync('hangzhou.download') /**自动判断医保类型***/ async function redisPatient(IdentificationCode){ let res=undefined if (await hexistsAsync("IdentificationPatient",IdentificationCode)){ res = await hgetAsync('IdentificationPatient',IdentificationCode); } return res } /**自动判断医保类型***/ async function medicalType(IdentificationCode){ if (client.hexists("IdentificationCode",IdentificationCode)){ return new Promise(async (resolve) => { client.hget('IdentificationCode',IdentificationCode, (error, result)=>{ if (error) { hisLogger.hisLogger('error:',error); } else { if (result==null){ result=9 } resolve(result) } }); }) } return 9 } function UUID(){ let sffAccount = enumerate.sffAccount==null?"":enumerate.sffAccount return dayjs().format("YYYY-MM-DD-HHmmss-SSS")+"-"+sffAccount } async function ReadFile(paths){ let sPath=path.join(paths) let data = fs.readFileSync(sPath); if(data.length>0){ return ref.readCString(encodingConvert.convert(data, "UTF8", "GBK"), 0) } return "" } let enumerate = { "HZVYWZQH": "", "ZJSYWZQH": "", "YKTYWZQH": "", "XJYWZQH": "", "HZVHospCode": "", "ZJSHospCode": "", "YKTHospCode": "", "XJYHospCode": "", "sffAccount":"", "sffName":"" } let cardInfo /** * 医保接口封装 * @param paramObj feeID 医保类型 1自费 2市医保 3省医保 4省一卡通 5仙居医保 * func 医保函数参考各医保技术文档接口说明 * firstParam 第一参数 * secondParam 第二参数 * thridParam 第三参数 * fourthParam 第四参数 * fifthParam 第五参数 * @return resultObj ret 接口调用结果标识 0成功 <0失败 >0警告 * input 医保入参 * output 医保返回出参 * cradinfo 患者卡信息 * value 预留字段 * */ async function voiceQuoter(type,msg){ let func="dsbdll" let isVoice = settings.get('address.isVoice') if (isVoice){ await voiceQuoterObj.voiceQuoterInterface({func,type,msg}) } } async function medical({feeID,func,code, HospCode,data1,data2,retMsg,type }) { hisLogger.hisLogger({output:'输入:',feeId: feeID,func:func,code:code, HospCode:HospCode,data1:data1,data2:data2,type:type}); let obj={} if (feeID==2){ obj = await HZVObj.medicalHZSiInterface({func,type,data1,retMsg,HospCode}) } if (feeID==3){ obj = await Provice.medicalProvice({func,code, HospCode,data1,data2,retMsg,type}) } if (feeID==4){ obj = await sykt.medicalProvice({func,code, HospCode,data1,data2,retMsg,type}) } if(feeID==5){ let ybdj = settings.get('xianju.ybdj') if(type == "1" && func == "f_UserBargaingApply"){ func="WebApply" switch (code) { case 29: // 29 门诊(挂号)预结算 - - - - 仅返回结果供显示使用 break; case 30: // 30 门诊(挂号)结算 - 31 可 是 break; case 31: // 31 门诊挂号/收费退费 - / 可 - 交易30的反交易, 实时执行 break; case 43: // 43 指定交易结果查询 - - - - 范围: 30,31,32,36,37,38 break; case 49: // 49 交易确认 - - - - 确认医院交易是否成功 break; case 22: data1=JSON.stringify({"JYH":code,"JYHNR":data1}) code="TY01" break; case 51: data1=JSON.stringify({"JYH":code,"JYHNR":data1}) code="TY01" break; case 52: data1=JSON.stringify({"JYH":code,"JYHNR":data1}) code="TY01" break; case 53: data1=JSON.stringify({"JYH":code,"JYHNR":data1}) code="TY01" break; case 54: data1=JSON.stringify({"JYH":code,"JYHNR":data1}) code="TY01" break; case 55: data1=JSON.stringify({"JYH":code,"JYHNR":data1}) code="TY01" break; case 56: data1=JSON.stringify({"JYH":code,"JYHNR":data1}) code="TY01" break; case 58: data1=JSON.stringify({"JYH":code,"JYHNR":data1}) code="TY01" break; case 64: data1=JSON.stringify({"JYH":code,"JYHNR":data1}) code="TY01" break; case 65: data1=JSON.stringify({"JYH":code,"JYHNR":data1}) code="TY01" break; case 75: data1=JSON.stringify({"JYH":code,"JYHNR":data1}) code="TY01" break; case 76: data1=JSON.stringify({"JYH":code,"JYHNR":data1}) code="TY01" break; case 77: data1=JSON.stringify({"JYH":code,"JYHNR":data1}) code="TY01" break; case 79: // 51 医保接口数据日结算 - - - - 供医疗机构日结算对帐使用 data1=JSON.stringify({"JYH":code,"JYHNR":data1}) code="TY01" break; } } obj = await xianju.medicalXianJu({func,code, HospCode,data1,data2,retMsg,type}) } retMsg=obj.output let logObj={feeId: feeID,func:func,code:code, HospCode:HospCode,data1:data1,data2:data2,retMsg:retMsg,type:type}; hisLogger.hisLogger({output:'输出:',feeId: feeID,func:func,code:code, HospCode:HospCode,'retMsg':obj.output,type:type}); return obj; } async function setImm32(en_zh){ await dllinvoke.setImm32(en_zh) } module.exports ={medical,UUID,enumerate,cardInfo,ReadFile,medicalType,redisPatient,isDownload,voiceQuoter,setImm32};