## 医保业务DLL库使用说明：
  该项目遵循以下原则：

 #### 1.Master为空项目，仅保留说明文件，便于其他新分支的建立

 #### 2.按市+医保类型建立代码分支，如“安徽基线版”，分支名为:AnHui_Base，医保类型包括：Base(基线版)、工伤(Injury)、异地（Offsite)、其它（Other），如果没有可适当增加

 #### 3.每个分支下存放每个省的业务逻辑代码项目，项目名应遵循与分支名保持一致，如AnHui_Base

 #### 4.每个分支的根目录应保留本Readme.md文档，同时应将各个分支的特殊业务场景或版本更新日志放到此文档

 #### 5.使用手册见文档：https://dqqslxaq2y.feishu.cn/docx/VxZhdSrFDonnwTxxTPZctr7onSb?from=from_copylink
 


## 业务分支说明（分支特性，请做相应调整）
### 名称：乌鲁木齐市医保
- **接口开发**：银海
- **上线范围**：结算（社保、身份证、电子医保卡）、进销存、事前事中、Lis项目、清单上传


### 版本特性:
## [1.0.0.2] - 2024-4-20
### 新增
 - 门诊结算信息查询接口:新增3688交易
   ```
            输入人员编号或证件号、查询类型、开始时间（可选），查询对应类型的最近10次或时间段内（最多180天）的结算费用明细信息。
            查询类型：门诊统筹类、门诊慢病类、特药购药类。
            门诊统筹类包含：普通门诊、儿科门诊、中医特色门诊、急诊（死亡）、门诊单病种、村卫门诊、急诊1级濒危、急诊2级危重、急诊3级急症、4级非急症
            门诊慢病类包含：门诊慢特病、药店购慢特病药
            特药购药类包含：特药购药、特药门诊交易编号3688## [1.0.0.2] - 2024-4-20
   ``` 
## [1.0.0.3] - 2024-4-22
### 优化
 *  住院登记，如果读卡人跟前端不一致，DLL 未进行拦截。已修正。

## [1.0.0.4] - 2024-4-24
### 优化
3688交易进一步优化，医保云平台--中心查询业务（后期其他查询业务也放在这里）

## [1.0.0.4] - 2024-5-17
### 新增
住院登记时，如果时日间手术，则需要判断床位是否为空

#### 版本 1.0.0.6
- **时间**：2026年03月26日
- **改进点**：医生站事前事中调用调试。
  - **功能优化**：
    - 新增 public int queryRegisterInfo(List<int> type,out string outParam) 方法，type支持传数组。
    - medins_type 固定传A512  joInpar.Add("medins_type", "A512");  //医疗服务机构类型
    - medins_lv 医院级别上传有误，可取医保医院信息的医院级别3  joInpar.Add("medins_lv", Global.inf.hospitalLevel);  //医疗机构等级
    - 初始化时增加hospitalLevel的取值
    - hilist_type 目录类别 1 药品 2 诊疗项目 3 服务设施 4 医用材料  GetFsi__order_dtos中增加如下代码：jarry[m]["hilist_type"] = jarry[m]["hilist_type"].ToString().Substring(0,1);
    - hilist_lv  文档要求 1 2 3上传  GetFsi__order_dtos中增加如下代码：jarry[m]["hilist_lv"] = jarry[m]["hilist_lv"].ToString().Substring(1, 1);
    #### 版本 1.0.0.7
- **时间**：2026年04月8日
- **改进点**：按照最新文档改写银海控件。新增ChooseCard2026，sta.ReadCard2026，InvokeComCenter2026

#### 版本 1.0.0.8
- **时间**：2026年04月20日
- **改进点**：ChooseCardNew 窗体优化、字典绑定方法、新增支付密码校验
- **功能优化**：

- DictionaryHelper 新增 SetComboxDatasource 方法，支持将 ComboBox 的 DataSource 设置为指定字典的 DataTable
  ```
  public void SetComboxDatasource(object comboBox, string dicName, bool insertEmptyOption = false)
  支持 System.Windows.Forms.ComboBox 和 Sunny.UI.UIComboBox
  ```

- CardReader 新增 VerifyPin 方法（1002 费用结算支付密码校验接口）
  ```
  public int VerifyPin(string password, out string errMsg)
  使用 Global.pat 获取参数，InvokeComCenter2026 调用，SM4 加密
  ```


- ChooseCardNew 窗体控件优化：
  - txtCertType (TextBox) → cbCertType (UIComboBox)，使用 "psn_cert_type" 字典
  - cbBusinessType 改用 DataSource 绑定 "biz_type" 字典
  - lblNoCardTag → cbxNoCardTag，新增复选框状态变更事件

- 无卡结算控件联动：
  - cbxNoCardTag 未选中时：txtCertNo 和 cbCertType 不可操作
  - cbxNoCardTag 选中时：txtCertNo 和 cbCertType 可操作

#### 版本 1.0.0.9
- **时间**：2026年04月22日
- **改进点**：1.预结算界面增加密码输入窗口。2.点击确定先调用1002校验，如果密码有误直接提示患者

#### 版本 1.0.0.10
- **时间**：2026年04月29日
- **改进点**：    医保钱包支付(WalletPay)全链路集成改造
- **背景**：适配乌鲁木齐市医保中心钱包消费接口，结算、对账、清算全流程需传递医保钱包支付金额
- **数据源**：`BS_MedInsuSettlement.WalletPay`（IRIS数据库表字段，SqlColumnNumber=74）
- **功能改动**：

##### 一、结算结果返回格式改造 (`IrisServices.sumInsuRtnSettlInfo` + 四个结算接口调用处)

- `sumInsuRtnSettlInfo()` 方法输出新增 `detailObj` 字段（JSON格式），包含：
  - `fund_pay_sumamt_ex` — 基金支付金额（原 fund_pay_sumamt 重命名）
  - `wltpay_amt` — 医保钱包支付金额（WalletPay 拆分独立字段）
- 四个结算接口调用处传入 detailObj：
  - `05110020` 住院预结算（`queryPreSettleInfo`）
  - `05110017` 住院结算（`querySettleInfo`）
  - `05110019` 门诊预结算（`MZqueryPreSettleInfo`）
  - `05110018` 门诊结算（`MZquerySettleInfo`）

##### 二、费用总对账 3201 适配 (`Forms/Clearing.Btn_Query_Click`)
- 对账 SQL 中 `fund_pay_sumamt` 计算公式改为：
  ```
  fund_pay_sumamt = SUM(FundPaySumamt) + SUM(WalletPay)
  ```

##### 三、费用明细对账 3202 适配 (`Forms/Clearing`)
- **HISDetailDataExport**：TXT 导出从 7列扩展为 8列，末尾追加 `WalletPay` 字段
- **tsmImport_Click** / **importToDgvCenterSetlRec**：导入 DataTable 新增 `wltpay_amt` 列
  - 兼容旧格式：当 TXT 列数不足时默认取 `"0"`

##### 四、清算申请 3203/S3203 适配 (`Forms/Clearing.btnQueryClrSum`)
- 清算汇总 SQL 改动：
  ```
  med_sumfee    = SUM(FundPaySumamt + AccountPaySumamt + PersonCashPay + WalletPay)
  fund_appy_sum = SUM(FundPaySumamt + AccountPaySumamt + WalletPay)
  ```
- 异地清算 `OthPlcClearing_Single` 的 `optins_pay_sumamt` 通过 `fund_appy_sum` 间接包含钱包金额

##### 五、涉及文件清单
| 文件 | 改动方法 |
|------|---------|
| `Business/IrisServices.cs` | `sumInsuRtnSettlInfo()` 输出格式 |
| `Business/IrisServices.cs` | `queryPreSettleInfo`, `querySettleInfo`, `MZqueryPreSettleInfo`, `MZquerySettleInfo` |
| `Forms/Clearing.cs` | `Btn_Query_Click`(3201 SQL), `HISDetailDataExport`(3202导出) |
| `Forms/Clearing.cs` | `btnQueryClrSum`(清算SQL), `tsmImport_Click`, `importToDgvCenterSetlRec`(3202导入) |

#### 版本 1.0.0.11
- **时间**：2026年05月4日
- **改进点**：修复BUG.门诊退费参保地取值错误.
```
    修改前：
    Global.pat.insuplc_admdvs = JsonHelper.getDestValue(joSettlInfo, "result.data[0].SpecialType");
    修改后：
    Global.pat.insuplc_admdvs = JsonHelper.getDestValue(joSettlInfo, "result.data[0].insuplc_admdvs");
```

#### 版本 1.0.0.12
- **时间**：2026年05月7日
- **改进点**：新增个人医保云（影像云）数据采集全量接口封装（双系统29个交易）
- **背景**：对接乌鲁木齐市医保中心"个人医保云（影像云）"平台，包含数据采集系统和医疗机构前置两套子系统
- **功能改动**：

##### 一、新建 CloudImageService.cs 云影像服务封装类 (`Business/CloudImageService.cs`)
- **双系统架构**：自动路由到对应目标系统，HIS端只需传 infno + input
  - **数据采集系统**（18个接口, 11xxx系列）：患者信息/费用/病案/病历等临床文档采集
    - 服务器地址可配置（`CollectServerUrl`），默认 `http://10.188.1.44:8091`
    - 所有接口统一路径 `/collect/elecmedrcd`
    - 范围：11101~11110(上传), 11201~11202(删除), 11301~11502(特殊信息)
  - **医疗机构前置**（11个接口, 12xxx系列）：检查检验报告/结算/预约挂号/影像调阅
    - 服务器地址可配置（`MedPreServerUrl`），默认 `http://172.25.6.33:5002`
    - 各接口独立API路径
    - 范围：12101~12105(检验检查), 12201~12202(结算), 12301~12302(预约挂号), 12401~12402(影像预留)

##### 二、InsuBusiness.AgentFun 新增入口 (`InsuBusiness.cs`)
- 新增 `case "CloudImageUpload"` 入口，作为所有云影像交易的统一调用通道
- HIS入参格式：`{ infno: "11101", input: {...} }` + `businessType: "CloudImageUpload"`
- 自动组装报文头（msgid/infver/inf_time/fixmedins_code/key/rcd_num），HIS只需传input

##### 三、涉及文件清单
| 文件 | 改动说明 |
|------|---------|
| `Business/CloudImageService.cs` | **新增** - 云影像全量接口封装类 V2.0 |
| `InsuBusiness.cs` | AgentFun switch 新增 CloudImageUpload case |

#### 版本 1.0.0.13
- **时间**：2026年06月1日
- **改进点**：新版事前事中

#### 版本 1.0.0.14
- **时间**：2026年06月11日
- **改进点**：修复mIS.saveSettlement，医保平台未正确存储医保钱包金额

#### 版本 1.0.0.15
- **时间**：2026年06月23日
- **改进点**：一码付改造。1.增加OneCodePayInfo结构体，通过CenterURL2取值。2.删除原OneCodePay变量。(继承自BranchBusinessInfo)