// 基础初始化(使用默认配置)
var initResult = JiangSuWorkInjuryBusiness.Initialize();
// 或者使用自定义配置
var config = new JiangSuWorkInjuryBusiness.WorkInjuryConfig
{
FixmedinsCode = "SQ201348",
FixmedinsName = "沭阳铭和医院",
DefaultOperator = "001",
DefaultOperatorName = "系统管理员"
};
var initResult = JiangSuWorkInjuryBusiness.Initialize(config);
Console.WriteLine($"初始化结果: {initResult["success"]}, 消息: {initResult["message"]}");
// 方式1:使用交易名称(支持中文)
var result1 = JiangSuWorkInjuryBusiness.ProcessWorkInjuryTransaction("签到");
var result2 = JiangSuWorkInjuryBusiness.ProcessWorkInjuryTransaction("读卡");
// 方式2:使用交易编号
var result3 = JiangSuWorkInjuryBusiness.ProcessWorkInjuryTransaction("9001"); // 签到
var result4 = JiangSuWorkInjuryBusiness.ProcessWorkInjuryTransaction("1101"); // 读卡
// 方式3:使用英文名称
var result5 = JiangSuWorkInjuryBusiness.ProcessWorkInjuryTransaction("SignIn");
var result6 = JiangSuWorkInjuryBusiness.ProcessWorkInjuryTransaction("ReadCard");
// 患者信息
var patientInfo = new
{
visit_type = "1", // 门诊
dept_code = "001",
dept_name = "骨科",
doctor_code = "DOC001",
doctor_name = "张主任"
};
// 费用明细
var feeDetails = new object[]
{
new
{
fee_ocur_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
med_list_codg = "001",
med_list_name = "拍片费",
fee_amt = 120.00,
cnt = 1
},
new
{
fee_ocur_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
med_list_codg = "002",
med_list_name = "诊疗费",
fee_amt = 15.00,
cnt = 1
}
};
// 执行完整流程(自动完成读卡->登记->预结算->结算)
var processResult = JiangSuWorkInjuryBusiness.CompleteWorkInjuryProcess(patientInfo, feeDetails);
Console.WriteLine($"完整流程结果: {processResult["success"]}");
foreach (var step in processResult["processSteps"])
{
Console.WriteLine($"步骤{step["step"]}: {step["name"]} - {step["success"]}");
}
// 第1步:读卡
var readCardResult = JiangSuWorkInjuryBusiness.ProcessWorkInjuryTransaction("ReadCard");
if (!(bool)readCardResult["success"])
{
Console.WriteLine($"读卡失败: {readCardResult["message"]}");
return;
}
// 第2步:患者登记
var registerParams = new
{
psn_no = readCardResult["data"]["psn_no"], // 从读卡结果获取人员编号
visit_type = "1",
dept_code = "001",
dept_name = "骨科"
};
var registerResult = JiangSuWorkInjuryBusiness.ProcessWorkInjuryTransaction("RegisterPatient", registerParams);
// 第3步:费用预结算
var preSettleParams = new
{
visit_no = registerResult["data"]["visit_no"], // 从登记结果获取就诊号
fee_details = feeDetails
};
var preSettleResult = JiangSuWorkInjuryBusiness.ProcessWorkInjuryTransaction("PreSettle", preSettleParams);
// 第4步:正式结算
var settleParams = new
{
visit_no = registerResult["data"]["visit_no"],
pre_settle_id = preSettleResult["data"]["pre_settle_id"]
};
var settleResult = JiangSuWorkInjuryBusiness.ProcessWorkInjuryTransaction("Settle", settleParams);
// 大批量处方明细
var prescriptions = new object[120]; // 假设有120条处方
for (int i = 0; i < 120; i++)
{
prescriptions[i] = new
{
med_list_codg = $"MED{i:D3}",
med_list_name = $"药品{i}",
cnt = 1,
pric = 25.50
};
}
// 自动分批上传(每批50条)
var batchResult = JiangSuWorkInjuryBusiness.BatchUploadPrescriptions(prescriptions, "P123456", "V20241201001");
Console.WriteLine($"批量上传结果: 成功{batchResult["data"]["successCount"]}批,失败{batchResult["data"]["failureCount"]}批");
// 对于可能因网络等原因失败的交易,使用智能重试
var retryResult = JiangSuWorkInjuryBusiness.SmartRetryTransaction(
"PreSettle",
preSettleParams,
maxRetries: 3,
baseDelayMs: 1000
);
if ((bool)retryResult["success"])
{
Console.WriteLine($"重试成功,共尝试{retryResult["retryInfo"]["totalAttempts"]}次");
}
else
{
Console.WriteLine($"重试{retryResult["retryInfo"]["totalAttempts"]}次后仍然失败");
}
// 获取需要冲正的交易记录ID(从之前的交易结果中获取)
string originalMessageId = settleResult["infRefMsgId"]?.ToString();
// 执行冲正操作
var reverseResult = JiangSuWorkInjuryBusiness.ReverseTransactionByRecord(originalMessageId);
Console.WriteLine($"冲正结果: {reverseResult["success"]}, 消息: {reverseResult["message"]}");
// 系统健康检查
var healthResult = JiangSuWorkInjuryBusiness.HealthCheck();
var healthData = healthResult["data"];
Console.WriteLine($"系统健康状态: {healthData["overallHealth"]}");
Console.WriteLine($"DLL状态: {healthData["checks"]["dllStatus"]["success"]}");
Console.WriteLine($"初始化状态: {healthData["checks"]["initStatus"]["initialized"]}");
Console.WriteLine($"签到状态: {healthData["checks"]["signInStatus"]["signedIn"]}");
// 获取系统运行统计
var statsResult = JiangSuWorkInjuryBusiness.GetTransactionStatistics();
var stats = statsResult["data"];
Console.WriteLine($"系统初始化: {stats["systemStatus"]["initialized"]}");
Console.WriteLine($"当前签到状态: {stats["systemStatus"]["signedIn"]}");
Console.WriteLine($"交易记录总数: {stats["transactionRecords"]["totalCount"]}");
// 检查当前签到状态
var signInStatus = JiangSuWorkInjuryBusiness.GetSignInStatus();
var statusData = signInStatus["data"];
if ((bool)statusData["signedIn"])
{
Console.WriteLine($"已签到,流水号: {statusData["signNo"]}");
Console.WriteLine($"签到时间: {statusData["signInTime"]}");
Console.WriteLine($"会话时长: {statusData["sessionDuration"]}");
}
else
{
Console.WriteLine("未签到,需要先执行签到操作");
var signInResult = JiangSuWorkInjuryBusiness.ProcessWorkInjuryTransaction("SignIn");
}
// 手动签退
var signOutResult = JiangSuWorkInjuryBusiness.ProcessWorkInjuryTransaction("SignOut");
try
{
var result = JiangSuWorkInjuryBusiness.ProcessWorkInjuryTransaction("ReadCard");
if ((bool)result["success"])
{
// 成功处理
var cardData = result["data"];
Console.WriteLine($"读卡成功,患者: {cardData["psn_name"]}");
}
else
{
// 错误处理
int errorCode = (int)result["code"];
string errorMessage = result["message"]?.ToString();
if (errorCode >= 2000 && errorCode < 3000)
{
// DLL层面错误
Console.WriteLine($"DLL调用失败: {errorMessage}");
}
else if (errorCode >= 3000)
{
// 业务层面错误
Console.WriteLine($"业务处理失败: {errorMessage}");
Console.WriteLine($"业务错误码: {result["businessErrorCode"]}");
}
else
{
// 系统层面错误
Console.WriteLine($"系统错误: {errorMessage}");
}
}
}
catch (Exception ex)
{
Console.WriteLine($"系统异常: {ex.Message}");
}
public class WorkInjuryService
{
// 初始化工伤联网接口
public bool InitializeWorkInjury()
{
var config = new JiangSuWorkInjuryBusiness.WorkInjuryConfig
{
FixmedinsCode = ConfigurationManager.AppSettings["WorkInjury.FixmedinsCode"],
FixmedinsName = ConfigurationManager.AppSettings["WorkInjury.FixmedinsName"],
DefaultOperator = GetCurrentOperatorId(),
DefaultOperatorName = GetCurrentOperatorName()
};
var result = JiangSuWorkInjuryBusiness.Initialize(config);
return (bool)result["success"];
}
// 工伤患者读卡
public WorkInjuryPatient ReadWorkInjuryCard()
{
var result = JiangSuWorkInjuryBusiness.ProcessWorkInjuryTransaction("ReadCard");
if (!(bool)result["success"])
{
throw new BusinessException($"工伤读卡失败: {result["message"]}");
}
var cardData = result["data"];
return new WorkInjuryPatient
{
PersonNo = cardData["psn_no"]?.ToString(),
PersonName = cardData["psn_name"]?.ToString(),
IdCard = cardData["psn_cert_no"]?.ToString(),
// ... 其他字段映射
};
}
// 工伤结算
public WorkInjurySettleResult ProcessWorkInjurySettle(string visitNo, List<FeeDetail> feeDetails)
{
// 转换费用明细格式
var fees = feeDetails.Select(f => new
{
fee_ocur_time = f.FeeTime.ToString("yyyy-MM-dd HH:mm:ss"),
med_list_codg = f.MedCode,
med_list_name = f.MedName,
fee_amt = f.Amount,
cnt = f.Count
}).ToArray();
// 预结算
var preSettleParams = new { visit_no = visitNo, fee_details = fees };
var preResult = JiangSuWorkInjuryBusiness.ProcessWorkInjuryTransaction("PreSettle", preSettleParams);
if (!(bool)preResult["success"])
{
throw new BusinessException($"工伤预结算失败: {preResult["message"]}");
}
// 正式结算
var settleParams = new
{
visit_no = visitNo,
pre_settle_id = preResult["data"]["pre_settle_id"]
};
var settleResult = JiangSuWorkInjuryBusiness.ProcessWorkInjuryTransaction("Settle", settleParams);
if (!(bool)settleResult["success"])
{
throw new BusinessException($"工伤结算失败: {settleResult["message"]}");
}
// 返回结算结果
var settleData = settleResult["data"];
return new WorkInjurySettleResult
{
SettleId = settleData["settle_id"]?.ToString(),
TotalAmount = decimal.Parse(settleData["total_amt"]?.ToString() ?? "0"),
FundAmount = decimal.Parse(settleData["fund_amt"]?.ToString() ?? "0"),
SelfAmount = decimal.Parse(settleData["self_amt"]?.ToString() ?? "0")
};
}
}
江苏工伤联网结算接口提供了:
Initialize()
和 ProcessWorkInjuryTransaction()
所有交易都通过统一的 ProcessWorkInjuryTransaction()
函数处理,大大简化了集成复杂度。