UNPKG

medical

Version:
142 lines (131 loc) 5.93 kB
const path = require('path') const dllinvoke = require('./dllinvoke') const encodingConvert = require('encoding'); const validator = require('validator'); const ref = require('ref-napi') const dayjs = require("dayjs") const hisLogger = require("../../../src/hisLogger"); const settings = require("electron-settings") let MedInterface let cradInfo, ywzqh function result(ret, input, output, cradinfo) { let obj = { "ret": ret, "input": input, "output": output, "cradinfo": cradinfo } return obj } function patientProcess(resultObj){ //人员信息结构转换 return resultObj } async function init(paths) {; let dllDirectory; try { /****台州中心端实时审核接口*****/ dllDirectory = path.join(settings.getSync('xianju.dllRoot')) let calls = {} let inita = await dllinvoke.invoke(dllDirectory, 'IWebapply.dll', { 'EWebApply': ['string', ['string', 'string', 'string', 'string', 'string', 'string']] }); hisLogger.hisLogger({DLLName: 'WebApply', DLLPath: dllDirectory}, "获取接口函数成功!"); for (let fname in inita) { calls[fname] = inita[fname]; } let inits = await dllinvoke.invoke(dllDirectory, 'BargaingApplyV3_01032.dll', { 'f_UserBargaingInit': ['int', ['string', 'string', 'string']], 'f_UserBargaingApply': ['int', ['int', 'double', 'string', 'string', 'string']], 'f_UserBargaingClose': ['int', ['string', 'string', 'string']] }); hisLogger.hisLogger({DLLName: 'BargaingApplyV3_01032', DLLPath: dllDirectory}, "获取接口函数成功!"); for (let fname in inits) { calls[fname] = inits[fname]; } return calls } catch (e) { hisLogger.hisLogger("仙居医保: " + e.toString()) return undefined; } } async function medicalXianJu({func, code, HospCode,data1,data2,retMsg,type}) { let resultObj = result(-1, '', '', cradInfo) data2=" " HospCode="3301002" try{ retMsg = Buffer.allocUnsafe(819200); if (typeof(MedInterface) != "object"){ MedInterface=await init() resultObj.ret = await MedInterface['f_UserBargaingInit'](data1,retMsg,HospCode) resultObj.output = ref.readCString(encodingConvert.convert(retMsg, "UTF8", "GBK"), 0) } console.log(typeof(MedInterface[func])) if (func.indexOf("f_UserBargaingInit") >= 0 || func.indexOf("f_UserBargaingClose") >= 0) { if (resultObj.ret != 0){ resultObj.ret = await MedInterface[func](data1,HospCode,retMsg) resultObj.output = ref.readCString(encodingConvert.convert(retMsg, "UTF8", "GBK"), 0) } } else if (func.indexOf("f_UserBargaingApply") >= 0) { let input = encodingConvert.convert(data1, "GBK", "UTF8") hisLogger.hisLogger("input: ",input) var applyRet = await MedInterface[func](code, 0,input,retMsg,HospCode) var applyInput = ref.readCString(encodingConvert.convert(input, "UTF8", "GBK"),0) var applyOutput = ref.readCString(encodingConvert.convert(retMsg, "UTF8", "GBK"), 0) resultObj.ret = applyRet resultObj.input = applyInput resultObj.output = applyOutput } else if (func.indexOf("WebApply") >= 0) { let input = encodingConvert.convert(data1, "GBK", "UTF8") let out = await MedInterface['EWebApply'](HospCode,code,input,'','','') const buf = iconv.encode(out, 'GB18030'); const str = iconv.decode(buf, 'GB18030'); var vv = iconv.decode(out,'UTF8') let JSONObj={} let sMsg = ref.readCString(encodingConvert.convert(out,"GBK", "UTF8"),0); if (!validator.isJSON(sMsg)){ sMsg = sMsg.replace("\"{","{") sMsg = sMsg.replace("}\"","}"); if (!validator.isJSON(sMsg)){ resultObj.ret = -1 resultObj.input = data1 resultObj.output = sMsg+",医保中心返回字符串格式不符合JSON语法!"; return resultObj; } } JSONObj = JSON.parse(sMsg) if(ret < 0){ resultObj.input = ref.readCString(encodingConvert.convert(data1, "UTF8", "GBK"),0) resultObj.output = "加载动态库失败,请重新尝试!" return resultObj; } resultObj.ret = parseInt(JSONObj.mcode) - 1 resultObj.emdetail = JSONObj.emdetail resultObj.input = data1 if (code=='TY01'){ if (resultObj.ret==0){ resultObj.output = JSONObj.rdata.response }else { resultObj.output = JSONObj.emdetail } }else{ if (resultObj.ret==0){ resultObj.output = JSONObj.rdata }else { resultObj.output = JSONObj.emdetail } } } else if (func.indexOf("Audit4HospitalPortal") >= 0) { let input = data1 resultObj.ret = await MedInterface[func](input,retMsg) resultObj.input = ref.readCString(encodingConvert.convert(input, "UTF8", "GBK"),0) resultObj.output = ref.readCString(encodingConvert.convert(retMsg, "UTF8", "GBK"), 0) hisLogger.hisLogger(resultObj.output) } }catch (e) { resultObj.input = ref.readCString(data1, 0) resultObj.output = ref.readCString(e.toString(), 0) } return resultObj; } module.exports = {init, medicalXianJu};