medical
Version:
142 lines (131 loc) • 5.93 kB
JavaScript
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};