|
@ -313,7 +313,7 @@ public class MedOrderService {
|
|
|
settleTmp.put("needCharge",true);//是否需要医保结算
|
|
|
settleTmp.put("needHisCharge",true);//是否需要医保结算
|
|
|
settleTmp.put("medicalState",ylzMedicalRelationDO.getMedicalState());//结算方式
|
|
|
settleTmp.put("RECIPE_NO",ylzMedicalRelationDO.getLogNo());
|
|
|
settleTmp.put("RECIPE_NO",null==ylzMedicalRelationDO.getLogNo()?"":ylzMedicalRelationDO.getLogNo());//用挂号号关联,非处方号
|
|
|
if (1==ylzMedicalRelationDO.getMedicalState()&&0.0==Double.valueOf(ylzMedicalRelationDO.getTotalAmount())){
|
|
|
//费用为0的医保结算也需要当作自费处理
|
|
|
settleTmp.put("medicalState",0);//结算方式
|
|
@ -427,7 +427,7 @@ public class MedOrderService {
|
|
|
}
|
|
|
inputDetail.put("mdtrt_cert_type",mdtrt_cert_type);
|
|
|
|
|
|
inputDetail.put("ipt_otp_no",ylzMedicalRelationDO.getRelationCode());
|
|
|
inputDetail.put("ipt_otp_no",ylzMedicalRelationDO.getLogNo());
|
|
|
inputDetail.put("atddr_no",ylzMedicalRelationDO.getAtddrNo());
|
|
|
inputDetail.put("dr_name",ylzMedicalRelationDO.getDrName());
|
|
|
inputDetail.put("dept_code",ylzMedicalRelationDO.getDeptCode());
|
|
@ -436,6 +436,7 @@ public class MedOrderService {
|
|
|
input.put("data",inputDetail);
|
|
|
dataDetail.put("input",input);
|
|
|
netData.put("msgid",ylzMedicalRelationDO.getVisitMsgid());//挂号发送方报文id
|
|
|
netData.put("insuplc_admdvs","");//参保地医保区划 前端替换
|
|
|
dataDetail.put("net_data",netData);
|
|
|
strinObj.put("func","fsi.terminal.register");
|
|
|
strinObj.put("data",dataDetail);
|
|
@ -580,6 +581,7 @@ public class MedOrderService {
|
|
|
JSONObject netData = new JSONObject();
|
|
|
netData.put("opter",ylzMedicalRelationDO.getOrgCode());
|
|
|
netData.put("msgid",ylzMedicalMxDOSTmp.get(0).getSetlMsgid());//发送方结算报文id
|
|
|
netData.put("insuplc_admdvs",ylzMedicalRelationDO.getRegionCode());//参保地医保区划
|
|
|
netData.put("opmsgidter","123123");
|
|
|
netData.put("fixmedins_code",strinObj.getString("outBizNo"));
|
|
|
netData.put("opter_name","自助机");
|
|
@ -833,269 +835,277 @@ public class MedOrderService {
|
|
|
JSONArray jsonArray = array.getJSONArray(0);
|
|
|
if (jsonArray != null && jsonArray.size() != 0) {
|
|
|
for (int waitPayIndex=0;waitPayIndex<jsonArray.size();waitPayIndex++){
|
|
|
YlzMedicalRelationDO ylzMedicalRelationDO = null;
|
|
|
List<YlzMedicalIcdDO> icdDOList = new ArrayList<>();
|
|
|
List<YlzMedicalMxDO> mxDOList = new ArrayList<>();
|
|
|
JSONObject waitForPay = jsonArray.getJSONObject(waitPayIndex);
|
|
|
if (waitForPay!=null){
|
|
|
JSONArray visitDetails = waitForPay.getJSONArray("VISIT_DETAIL");
|
|
|
String prescription_code = "";//处方编码 费用明细中只有药品有处方编码,诊查费无
|
|
|
String INSUR_VISIT_NO = "";//医保挂号流水号
|
|
|
String deptCode = "";
|
|
|
String deptName = "";
|
|
|
String hisDeptCode = "";
|
|
|
String hisDeptName = "";
|
|
|
String collector = "";//收费人
|
|
|
String presItemCount="";
|
|
|
String APPLY_TIME="";//开单时间
|
|
|
Date visitDate = null;
|
|
|
String USER_NAME = "";
|
|
|
BigDecimal totalAmount = new BigDecimal(0.00);
|
|
|
BigDecimal ownPay = new BigDecimal(0.00);
|
|
|
DecimalFormat amountDf = new DecimalFormat("0.00");
|
|
|
String RATE_TYPE = "";//续方费用类别 1自费 2医保
|
|
|
String SUM_COST =amountDf.format(Double.valueOf(waitForPay.getString("SUM_COST")));//医保支付下,sumCost=0 当作自费号处理
|
|
|
String SUM_CHARGE =amountDf.format(Double.valueOf(waitForPay.getString("SUM_COST")));//待结算自付总费用
|
|
|
BigDecimal INSUR_ITEM_PRICE = new BigDecimal(0);
|
|
|
String visit_msgid = ""; //发送方报文ID【用于基线门诊挂号接口,自助机fsi.terminal.register接口】
|
|
|
String visit_rush_msgid = ""; //发送方报文ID【用于基线门诊挂号撤销接口,自助机fsi.terminal.register.cancel接口】
|
|
|
String VISIT_NO = ""; //门诊号【对应基线接口:ipt_otp_no】
|
|
|
String med_type = "";//医疗类别
|
|
|
String beginTime = "";//开始时间【挂号时间yyyy-MM-dd HH:mm:ss】
|
|
|
String caty = "";//科别【挂号科别】
|
|
|
String atddr_no = "";//就诊医生国家医保编码【对应基线接口:atddr_no】
|
|
|
String dr_name = "";//科别【挂号科别】
|
|
|
|
|
|
boolean newYlzRelation = false;//新的记录
|
|
|
//所有订单总金额 用于二重验证
|
|
|
BigDecimal hisAllTotalAmount = new BigDecimal(waitForPay.getString("SUM_COST"));
|
|
|
BigDecimal allTotalAmount = new BigDecimal("0.00");
|
|
|
|
|
|
if (visitDetails != null && visitDetails.size() != 0) {
|
|
|
JSONObject visitDetail = visitDetails.getJSONObject(0);
|
|
|
RATE_TYPE = visitDetail.getString("RATE_TYPE");//续方费用类别 1自费 2医保
|
|
|
// 费别是医保时,医保挂号流水号空则需发起门诊挂号
|
|
|
if (visitDetail.get("INSUR_VISIT_NO")==null&&"2".equals(RATE_TYPE)){//医保挂号流水号:
|
|
|
for (int visitDetailIndex=0;visitDetailIndex<visitDetails.size();visitDetailIndex++){
|
|
|
JSONObject visitDetail = visitDetails.getJSONObject(visitDetailIndex);
|
|
|
YlzMedicalRelationDO ylzMedicalRelationDO = null;
|
|
|
List<YlzMedicalIcdDO> icdDOList = new ArrayList<>();
|
|
|
List<YlzMedicalMxDO> mxDOList = new ArrayList<>();
|
|
|
|
|
|
|
|
|
String prescription_code = "";//处方编码 费用明细中只有药品有处方编码,诊查费无
|
|
|
String INSUR_VISIT_NO = "";//医保挂号流水号
|
|
|
String deptCode = "";
|
|
|
String deptName = "";
|
|
|
String hisDeptCode = "";
|
|
|
String hisDeptName = "";
|
|
|
String collector = "";//收费人
|
|
|
String presItemCount="";
|
|
|
String APPLY_TIME="";//开单时间
|
|
|
Date visitDate = null;
|
|
|
String USER_NAME = "";
|
|
|
BigDecimal totalAmount = new BigDecimal(0.00);
|
|
|
BigDecimal ownPay = new BigDecimal(0.00);
|
|
|
|
|
|
String RATE_TYPE = "";//续方费用类别 1自费 2医保
|
|
|
//医保支付下,sumCost=0 当作自费号处理
|
|
|
//待结算自付总费用
|
|
|
|
|
|
BigDecimal INSUR_ITEM_PRICE = new BigDecimal(0);
|
|
|
String visit_msgid = ""; //发送方报文ID【用于基线门诊挂号接口,自助机fsi.terminal.register接口】
|
|
|
String visit_rush_msgid = ""; //发送方报文ID【用于基线门诊挂号撤销接口,自助机fsi.terminal.register.cancel接口】
|
|
|
String VISIT_NO = ""; //门诊号【对应基线接口:ipt_otp_no】
|
|
|
String med_type = "";//医疗类别
|
|
|
String beginTime = "";//开始时间【挂号时间yyyy-MM-dd HH:mm:ss】
|
|
|
String caty = "";//科别【挂号科别】
|
|
|
String atddr_no = "";//就诊医生国家医保编码【对应基线接口:atddr_no】
|
|
|
String dr_name = "";//科别【挂号科别】
|
|
|
boolean newYlzRelation = false;//新的记录
|
|
|
RATE_TYPE = visitDetail.getString("RATE_TYPE");//续方费用类别 1自费 2医保
|
|
|
// 费别是医保时,医保挂号流水号空则需发起门诊挂号
|
|
|
if (visitDetail.get("INSUR_VISIT_NO")==null&&"2".equals(RATE_TYPE)){//医保挂号流水号:
|
|
|
|
|
|
}
|
|
|
if (visitDetail.get("INSUR_VISIT_NO")!=null){
|
|
|
INSUR_VISIT_NO = visitDetail.getString("INSUR_VISIT_NO");
|
|
|
}
|
|
|
visitDate = visitDetail.getDate("begntime");
|
|
|
USER_NAME = visitDetail.getString("USER_NAME");
|
|
|
visit_msgid = visitDetail.getString("visit_msgid");
|
|
|
VISIT_NO = visitDetail.getString("VISIT_NO");
|
|
|
med_type = visitDetail.getString("med_type");
|
|
|
caty = visitDetail.getString("caty");
|
|
|
atddr_no = visitDetail.getString("VISIT_IDENTITY_CARD_NO");
|
|
|
dr_name = visitDetail.getString("VISIT_OPERATOR_NAME");
|
|
|
deptCode = visitDetail.getString("VISIT_DEPT");
|
|
|
deptName = visitDetail.getString("VISIT_DEPT_NAME");
|
|
|
|
|
|
//收费明细
|
|
|
JSONArray SETTLE_DETAILS = visitDetail.getJSONArray("SETTLE_DETAIL");
|
|
|
if (SETTLE_DETAILS!=null&&SETTLE_DETAILS.size()>0) {
|
|
|
presItemCount = SETTLE_DETAILS.size()+"";
|
|
|
|
|
|
JSONObject SETTLE_DETAIL_OBJ = SETTLE_DETAILS.getJSONObject(0);
|
|
|
String RECIPE_NO = SETTLE_DETAIL_OBJ.getString("RECIPE_NO");
|
|
|
if (StringUtils.isBlank(prescription_code)){
|
|
|
prescription_code = RECIPE_NO;
|
|
|
}
|
|
|
|
|
|
ylzMedicalRelationDO = ylzMedicailRelationDao.findByLog_no(prescription_code);
|
|
|
//新的记录
|
|
|
if (null==ylzMedicalRelationDO){
|
|
|
newYlzRelation = true;
|
|
|
ylzMedicalRelationDO = new YlzMedicalRelationDO();
|
|
|
ylzMedicalRelationDO.setDel(1);
|
|
|
ylzMedicalRelationDO.setStatus(0);
|
|
|
ylzMedicalRelationDO.setState(0);
|
|
|
ylzMedicalRelationDO = ylzMedicailRelationDao.save(ylzMedicalRelationDO);
|
|
|
|
|
|
for (int j = 0; j < SETTLE_DETAILS.size(); j++) {
|
|
|
SETTLE_DETAIL_OBJ = SETTLE_DETAILS.getJSONObject(j);
|
|
|
YlzMedicalMxDO ylzMedicalMxDO = new YlzMedicalMxDO();
|
|
|
ylzMedicalMxDO.setMedicalId(ylzMedicalRelationDO.getId());//医保关联表id
|
|
|
ylzMedicalMxDO.setPrescriptionCode(prescription_code);//处方code
|
|
|
ylzMedicalMxDO.setHisDetailSn(SETTLE_DETAIL_OBJ.getString("feedetl_sn"));//his处方明细流水号
|
|
|
ylzMedicalMxDO.setItemCode(SETTLE_DETAIL_OBJ.getString("INSUR_ITEM_CODE"));//医保项目编码
|
|
|
ylzMedicalMxDO.setItemName(SETTLE_DETAIL_OBJ.getString("INSUR_ITEM_NAME"));//医保项目名称
|
|
|
ylzMedicalMxDO.setInvoiceType(SETTLE_DETAIL_OBJ.getString("INSUR_INVOICE_TYPE_CODE"));//发票项目类别
|
|
|
ylzMedicalMxDO.setSpecificationType(SETTLE_DETAIL_OBJ.getString("ITEM_SPEC"));//规格型号
|
|
|
ylzMedicalMxDO.setDosageForm(SETTLE_DETAIL_OBJ.getString("PHYSIC_FORM"));//剂型
|
|
|
ylzMedicalMxDO.setChargeUnit(SETTLE_DETAIL_OBJ.getString("ITEM_UNIT"));//单位
|
|
|
ylzMedicalMxDO.setChargeUnitName(SETTLE_DETAIL_OBJ.getString("ITEM_UNIT_NAME"));//单位名称
|
|
|
ylzMedicalMxDO.setPrice(null==SETTLE_DETAIL_OBJ.get("INSUR_ITEM_PRICE")?"0.0":SETTLE_DETAIL_OBJ.getString("INSUR_ITEM_PRICE"));//单价
|
|
|
ylzMedicalMxDO.setAmount(SETTLE_DETAIL_OBJ.getString("ITEM_QUANTITY"));//数量
|
|
|
|
|
|
ylzMedicalMxDO.setTotalMoney(amountDf.format(Double.valueOf(SETTLE_DETAIL_OBJ.getString("COST"))));//金额
|
|
|
totalAmount = totalAmount.add(new BigDecimal(SETTLE_DETAIL_OBJ.getString("COST")));
|
|
|
ownPay = ownPay.add(new BigDecimal(SETTLE_DETAIL_OBJ.getString("CHARGE")));
|
|
|
if (null!=SETTLE_DETAIL_OBJ.get("INSUR_ITEM_PRICE")){
|
|
|
INSUR_ITEM_PRICE = INSUR_ITEM_PRICE.add(new BigDecimal(SETTLE_DETAIL_OBJ.getString("INSUR_ITEM_PRICE")));
|
|
|
}
|
|
|
ylzMedicalMxDO.setSingleDose(SETTLE_DETAIL_OBJ.getString("PHYSIC_DOSE"));//每次用量
|
|
|
ylzMedicalMxDO.setUseFrequency(SETTLE_DETAIL_OBJ.getString("FREQUENCY"));//使用频率
|
|
|
ylzMedicalMxDO.setMedicalWay(SETTLE_DETAIL_OBJ.getString("PHYSIC_USAGE"));//给药途径
|
|
|
ylzMedicalMxDO.setPrescriptionDate(SETTLE_DETAIL_OBJ.getDate("prescription_date"));//处方日期
|
|
|
ylzMedicalMxDO.setMedicationDays(SETTLE_DETAIL_OBJ.getString("DAY_COUNT"));//执行天数
|
|
|
ylzMedicalMxDO.setDeptCode(SETTLE_DETAIL_OBJ.getString("APPLY_DEPT"));//科室编码
|
|
|
ylzMedicalMxDO.setDeptName(SETTLE_DETAIL_OBJ.getString("APPLY_DEPT_NAME"));//科室名称
|
|
|
ylzMedicalMxDO.setHisDeptCode(SETTLE_DETAIL_OBJ.getString("APPLY_DEPT"));//his内部科室编码
|
|
|
ylzMedicalMxDO.setHisDeptName(SETTLE_DETAIL_OBJ.getString("APPLY_DEPT_NAME"));//his内部科室名称
|
|
|
if (StringUtils.isBlank(hisDeptCode)){
|
|
|
hisDeptCode = SETTLE_DETAIL_OBJ.getString("APPLY_DEPT");
|
|
|
}
|
|
|
if (StringUtils.isBlank(APPLY_TIME)){
|
|
|
APPLY_TIME = SETTLE_DETAIL_OBJ.getString("APPLY_TIME");
|
|
|
}
|
|
|
if (StringUtils.isBlank(hisDeptName)){
|
|
|
hisDeptName = SETTLE_DETAIL_OBJ.getString("APPLY_DEPT_NAME");
|
|
|
if (visitDetail.get("INSUR_VISIT_NO")!=null){
|
|
|
INSUR_VISIT_NO = visitDetail.getString("INSUR_VISIT_NO");
|
|
|
}
|
|
|
visitDate = visitDetail.getDate("begntime");
|
|
|
USER_NAME = visitDetail.getString("USER_NAME");
|
|
|
visit_msgid = visitDetail.getString("visit_msgid");
|
|
|
VISIT_NO = visitDetail.getString("VISIT_NO");
|
|
|
med_type = visitDetail.getString("med_type");
|
|
|
caty = visitDetail.getString("caty");
|
|
|
atddr_no = visitDetail.getString("VISIT_IDENTITY_CARD_NO");
|
|
|
dr_name = visitDetail.getString("VISIT_OPERATOR_NAME");
|
|
|
deptCode = visitDetail.getString("VISIT_DEPT");
|
|
|
deptName = visitDetail.getString("VISIT_DEPT_NAME");
|
|
|
|
|
|
//收费明细
|
|
|
JSONArray SETTLE_DETAILS = visitDetail.getJSONArray("SETTLE_DETAIL");
|
|
|
if (SETTLE_DETAILS!=null&&SETTLE_DETAILS.size()>0) {
|
|
|
presItemCount = SETTLE_DETAILS.size()+"";
|
|
|
|
|
|
JSONObject SETTLE_DETAIL_OBJ = SETTLE_DETAILS.getJSONObject(0);
|
|
|
String RECIPE_NO = SETTLE_DETAIL_OBJ.getString("RECIPE_NO");
|
|
|
if (StringUtils.isBlank(prescription_code)){
|
|
|
prescription_code = RECIPE_NO;
|
|
|
}
|
|
|
ylzMedicalRelationDO = ylzMedicailRelationDao.findByLog_no(VISIT_NO);
|
|
|
//新的记录
|
|
|
if (null==ylzMedicalRelationDO){
|
|
|
newYlzRelation = true;
|
|
|
ylzMedicalRelationDO = new YlzMedicalRelationDO();
|
|
|
ylzMedicalRelationDO.setDel(1);
|
|
|
ylzMedicalRelationDO.setStatus(0);
|
|
|
ylzMedicalRelationDO.setState(0);
|
|
|
ylzMedicalRelationDO = ylzMedicailRelationDao.save(ylzMedicalRelationDO);
|
|
|
|
|
|
for (int j = 0; j < SETTLE_DETAILS.size(); j++) {
|
|
|
SETTLE_DETAIL_OBJ = SETTLE_DETAILS.getJSONObject(j);
|
|
|
YlzMedicalMxDO ylzMedicalMxDO = new YlzMedicalMxDO();
|
|
|
ylzMedicalMxDO.setMedicalId(ylzMedicalRelationDO.getId());//医保关联表id
|
|
|
ylzMedicalMxDO.setPrescriptionCode(prescription_code);//处方code
|
|
|
ylzMedicalMxDO.setHisDetailSn(SETTLE_DETAIL_OBJ.getString("feedetl_sn"));//his处方明细流水号
|
|
|
ylzMedicalMxDO.setItemCode(SETTLE_DETAIL_OBJ.getString("INSUR_ITEM_CODE"));//医保项目编码
|
|
|
ylzMedicalMxDO.setItemName(SETTLE_DETAIL_OBJ.getString("INSUR_ITEM_NAME"));//医保项目名称
|
|
|
ylzMedicalMxDO.setInvoiceType(SETTLE_DETAIL_OBJ.getString("INSUR_INVOICE_TYPE_CODE"));//发票项目类别
|
|
|
ylzMedicalMxDO.setSpecificationType(SETTLE_DETAIL_OBJ.getString("ITEM_SPEC"));//规格型号
|
|
|
ylzMedicalMxDO.setDosageForm(SETTLE_DETAIL_OBJ.getString("PHYSIC_FORM"));//剂型
|
|
|
ylzMedicalMxDO.setChargeUnit(SETTLE_DETAIL_OBJ.getString("ITEM_UNIT"));//单位
|
|
|
ylzMedicalMxDO.setChargeUnitName(SETTLE_DETAIL_OBJ.getString("ITEM_UNIT_NAME"));//单位名称
|
|
|
ylzMedicalMxDO.setPrice(null==SETTLE_DETAIL_OBJ.get("INSUR_ITEM_PRICE")?"0.0":SETTLE_DETAIL_OBJ.getString("INSUR_ITEM_PRICE"));//单价
|
|
|
ylzMedicalMxDO.setAmount(SETTLE_DETAIL_OBJ.getString("ITEM_QUANTITY"));//数量
|
|
|
|
|
|
ylzMedicalMxDO.setTotalMoney(amountDf.format(Double.valueOf(SETTLE_DETAIL_OBJ.getString("COST"))));//金额
|
|
|
totalAmount = totalAmount.add(new BigDecimal(SETTLE_DETAIL_OBJ.getString("COST")));
|
|
|
ownPay = ownPay.add(new BigDecimal(SETTLE_DETAIL_OBJ.getString("CHARGE")));
|
|
|
if (null!=SETTLE_DETAIL_OBJ.get("INSUR_ITEM_PRICE")){
|
|
|
INSUR_ITEM_PRICE = INSUR_ITEM_PRICE.add(new BigDecimal(SETTLE_DETAIL_OBJ.getString("INSUR_ITEM_PRICE")));
|
|
|
}
|
|
|
ylzMedicalMxDO.setSingleDose(SETTLE_DETAIL_OBJ.getString("PHYSIC_DOSE"));//每次用量
|
|
|
ylzMedicalMxDO.setUseFrequency(SETTLE_DETAIL_OBJ.getString("FREQUENCY"));//使用频率
|
|
|
ylzMedicalMxDO.setMedicalWay(SETTLE_DETAIL_OBJ.getString("PHYSIC_USAGE"));//给药途径
|
|
|
ylzMedicalMxDO.setPrescriptionDate(SETTLE_DETAIL_OBJ.getDate("prescription_date"));//处方日期
|
|
|
ylzMedicalMxDO.setMedicationDays(SETTLE_DETAIL_OBJ.getString("DAY_COUNT"));//执行天数
|
|
|
ylzMedicalMxDO.setDeptCode(SETTLE_DETAIL_OBJ.getString("APPLY_DEPT"));//科室编码
|
|
|
ylzMedicalMxDO.setDeptName(SETTLE_DETAIL_OBJ.getString("APPLY_DEPT_NAME"));//科室名称
|
|
|
ylzMedicalMxDO.setHisDeptCode(SETTLE_DETAIL_OBJ.getString("APPLY_DEPT"));//his内部科室编码
|
|
|
ylzMedicalMxDO.setHisDeptName(SETTLE_DETAIL_OBJ.getString("APPLY_DEPT_NAME"));//his内部科室名称
|
|
|
if (StringUtils.isBlank(hisDeptCode)){
|
|
|
hisDeptCode = SETTLE_DETAIL_OBJ.getString("APPLY_DEPT");
|
|
|
}
|
|
|
if (StringUtils.isBlank(APPLY_TIME)){
|
|
|
APPLY_TIME = SETTLE_DETAIL_OBJ.getString("APPLY_TIME");
|
|
|
}
|
|
|
if (StringUtils.isBlank(hisDeptName)){
|
|
|
hisDeptName = SETTLE_DETAIL_OBJ.getString("APPLY_DEPT_NAME");
|
|
|
}
|
|
|
ylzMedicalMxDO.setMedicalPerName(SETTLE_DETAIL_OBJ.getString("APPLY_OPERATOR_NAME"));//医疗服务人员姓名 开单医生姓名
|
|
|
ylzMedicalMxDO.setMedicalPerId(SETTLE_DETAIL_OBJ.getString("APPLY_OPERATOR"));//医疗服务人员证件号码 开单医生编码
|
|
|
if (StringUtils.isBlank(collector)){
|
|
|
collector = SETTLE_DETAIL_OBJ.getString("APPLY_OPERATOR");
|
|
|
}
|
|
|
ylzMedicalMxDO.setLimitType(SETTLE_DETAIL_OBJ.getString("INSUR_FLAG"));//限制范围类别
|
|
|
ylzMedicalMxDO.setActgDate(SETTLE_DETAIL_OBJ.getDate("fee_ocur_time"));//记帐日期
|
|
|
ylzMedicalMxDO.setHisItemCode(SETTLE_DETAIL_OBJ.getString("ITEM_CODE"));//HIS院内项目编码
|
|
|
ylzMedicalMxDO.setHisItemName(SETTLE_DETAIL_OBJ.getString("ITEM_NAME"));//HIS院内项目名称
|
|
|
ylzMedicalMxDO.setClerkDays(SETTLE_DETAIL_OBJ.getDate("fee_ocur_time"));//记帐日期
|
|
|
ylzMedicalMxDO.setPrescriptionDate(visitDate);
|
|
|
ylzMedicalMxDO.setPeopleType(null);//医保服务人员类别 todo
|
|
|
ylzMedicalMxDO.setDel(1);
|
|
|
ylzMedicalMxDO.setCreateTime(new Date());
|
|
|
ylzMedicalMxDO.setSetlMsgid(SETTLE_DETAIL_OBJ.getString("setl_msgid"));
|
|
|
ylzMedicalMxDO.setFeeMsgid(SETTLE_DETAIL_OBJ.getString("fee_msgid"));
|
|
|
ylzMedicalMxDO.setInsurSettleSort(SETTLE_DETAIL_OBJ.getString("INSUR_SETTLE_SORT"));
|
|
|
ylzMedicalMxDO.setChrgBchno(SETTLE_DETAIL_OBJ.getString("chrg_bchno"));
|
|
|
ylzMedicalMxDO.setRxCircFlag(SETTLE_DETAIL_OBJ.getString("rx_circ_flag"));
|
|
|
|
|
|
ylzMedicalMxDO.setBilgDeptCodg(SETTLE_DETAIL_OBJ.getString("bilg_dept_codg"));
|
|
|
ylzMedicalMxDO.setBilgDeptName(SETTLE_DETAIL_OBJ.getString("bilg_dept_name"));
|
|
|
ylzMedicalMxDO.setBilgDrCodg(SETTLE_DETAIL_OBJ.getString("APPLY_OPERATOR"));
|
|
|
ylzMedicalMxDO.setBilgDrName(SETTLE_DETAIL_OBJ.getString("APPLY_OPERATOR_NAME"));
|
|
|
ylzMedicalMxDO.setHospApprFlag(SETTLE_DETAIL_OBJ.getString("hosp_appr_flag"));
|
|
|
ylzMedicalMxDO.setRxno(SETTLE_DETAIL_OBJ.getString("APPLY_NO"));
|
|
|
ylzMedicalMxDO.setPsnSetlway(SETTLE_DETAIL_OBJ.getString("psn_setlway"));
|
|
|
ylzMedicailMxDao.save(ylzMedicalMxDO);
|
|
|
mxDOList.add(ylzMedicalMxDO);
|
|
|
}
|
|
|
ylzMedicalMxDO.setMedicalPerName(SETTLE_DETAIL_OBJ.getString("APPLY_OPERATOR_NAME"));//医疗服务人员姓名 开单医生姓名
|
|
|
ylzMedicalMxDO.setMedicalPerId(SETTLE_DETAIL_OBJ.getString("APPLY_OPERATOR"));//医疗服务人员证件号码 开单医生编码
|
|
|
if (StringUtils.isBlank(collector)){
|
|
|
collector = SETTLE_DETAIL_OBJ.getString("APPLY_OPERATOR");
|
|
|
}else {
|
|
|
List<YlzMedicalMxDO> ylzMedicalMxDOList = ylzMedicailMxDao.findByMedicalId(ylzMedicalRelationDO.getId());
|
|
|
mxDOList.addAll(ylzMedicalMxDOList);
|
|
|
}
|
|
|
}
|
|
|
//诊断明细
|
|
|
JSONArray DIAGNOSIS_DETAIL = visitDetail.getJSONArray("DIAGNOSIS_DETAIL");
|
|
|
if (DIAGNOSIS_DETAIL!=null&&DIAGNOSIS_DETAIL.size()>0){
|
|
|
if (!newYlzRelation){
|
|
|
List<YlzMedicalIcdDO> ylzMedicalIcdDOList = ylzMedicailIcdDao.findByMedicalId(ylzMedicalRelationDO.getId());
|
|
|
icdDOList.addAll(ylzMedicalIcdDOList);
|
|
|
}else {
|
|
|
for (int j=0;j<DIAGNOSIS_DETAIL.size();j++){
|
|
|
JSONObject DIAGNOSIS_DETAIL_OBJ = DIAGNOSIS_DETAIL.getJSONObject(j);
|
|
|
YlzMedicalIcdDO ylzMedicalIcdDO = new YlzMedicalIcdDO();
|
|
|
ylzMedicalIcdDO.setMedicalId(ylzMedicalRelationDO.getId());//医保关联表id
|
|
|
ylzMedicalIcdDO.setDiseaseCodeIcd10(DIAGNOSIS_DETAIL_OBJ.getString("diag_code"));
|
|
|
ylzMedicalIcdDO.setDiseaseNameIcd10(DIAGNOSIS_DETAIL_OBJ.getString("diag_name"));
|
|
|
ylzMedicalIcdDO.setDiseaseType(DIAGNOSIS_DETAIL_OBJ.getString("diag_type"));//诊断或症状类型
|
|
|
ylzMedicalIcdDO.setDiseaseOrder(DIAGNOSIS_DETAIL_OBJ.getString("diag_srt_no"));//诊断或症状序号
|
|
|
ylzMedicalIcdDO.setCreateTime(new Date());
|
|
|
ylzMedicalIcdDO.setDiseMsgid(DIAGNOSIS_DETAIL_OBJ.getString("dise_msgid"));
|
|
|
ylzMedicalIcdDO.setDiagDept(DIAGNOSIS_DETAIL_OBJ.getString("diag_dept"));
|
|
|
ylzMedicalIcdDO.setDiseDorNo(DIAGNOSIS_DETAIL_OBJ.getString("dise_dor_no"));
|
|
|
ylzMedicalIcdDO.setDiseDorName(DIAGNOSIS_DETAIL_OBJ.getString("dise_dor_name"));
|
|
|
ylzMedicalIcdDO.setDiagTime(DIAGNOSIS_DETAIL_OBJ.getString("diag_time"));
|
|
|
ylzMedicalIcdDO.setDel(Integer.valueOf(DIAGNOSIS_DETAIL_OBJ.getString("vali_flag")));
|
|
|
ylzMedicailIcdDao.save(ylzMedicalIcdDO);
|
|
|
icdDOList.add(ylzMedicalIcdDO);
|
|
|
}
|
|
|
ylzMedicalMxDO.setLimitType(SETTLE_DETAIL_OBJ.getString("INSUR_FLAG"));//限制范围类别
|
|
|
ylzMedicalMxDO.setActgDate(SETTLE_DETAIL_OBJ.getDate("fee_ocur_time"));//记帐日期
|
|
|
ylzMedicalMxDO.setHisItemCode(SETTLE_DETAIL_OBJ.getString("ITEM_CODE"));//HIS院内项目编码
|
|
|
ylzMedicalMxDO.setHisItemName(SETTLE_DETAIL_OBJ.getString("ITEM_NAME"));//HIS院内项目名称
|
|
|
ylzMedicalMxDO.setClerkDays(SETTLE_DETAIL_OBJ.getDate("fee_ocur_time"));//记帐日期
|
|
|
ylzMedicalMxDO.setPrescriptionDate(visitDate);
|
|
|
ylzMedicalMxDO.setPeopleType(null);//医保服务人员类别 todo
|
|
|
ylzMedicalMxDO.setDel(1);
|
|
|
ylzMedicalMxDO.setCreateTime(new Date());
|
|
|
ylzMedicalMxDO.setSetlMsgid(SETTLE_DETAIL_OBJ.getString("setl_msgid"));
|
|
|
ylzMedicalMxDO.setFeeMsgid(SETTLE_DETAIL_OBJ.getString("fee_msgid"));
|
|
|
ylzMedicalMxDO.setInsurSettleSort(SETTLE_DETAIL_OBJ.getString("INSUR_SETTLE_SORT"));
|
|
|
ylzMedicalMxDO.setChrgBchno(SETTLE_DETAIL_OBJ.getString("chrg_bchno"));
|
|
|
ylzMedicalMxDO.setRxCircFlag(SETTLE_DETAIL_OBJ.getString("rx_circ_flag"));
|
|
|
|
|
|
ylzMedicalMxDO.setBilgDeptCodg(SETTLE_DETAIL_OBJ.getString("bilg_dept_codg"));
|
|
|
ylzMedicalMxDO.setBilgDeptName(SETTLE_DETAIL_OBJ.getString("bilg_dept_name"));
|
|
|
ylzMedicalMxDO.setBilgDrCodg(SETTLE_DETAIL_OBJ.getString("APPLY_OPERATOR"));
|
|
|
ylzMedicalMxDO.setBilgDrName(SETTLE_DETAIL_OBJ.getString("APPLY_OPERATOR_NAME"));
|
|
|
ylzMedicalMxDO.setHospApprFlag(SETTLE_DETAIL_OBJ.getString("hosp_appr_flag"));
|
|
|
ylzMedicalMxDO.setRxno(SETTLE_DETAIL_OBJ.getString("APPLY_NO"));
|
|
|
ylzMedicalMxDO.setPsnSetlway(SETTLE_DETAIL_OBJ.getString("psn_setlway"));
|
|
|
ylzMedicailMxDao.save(ylzMedicalMxDO);
|
|
|
mxDOList.add(ylzMedicalMxDO);
|
|
|
}
|
|
|
}else {
|
|
|
List<YlzMedicalMxDO> ylzMedicalMxDOList = ylzMedicailMxDao.findByMedicalId(ylzMedicalRelationDO.getId());
|
|
|
mxDOList.addAll(ylzMedicalMxDOList);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//诊断明细
|
|
|
JSONArray DIAGNOSIS_DETAIL = visitDetail.getJSONArray("DIAGNOSIS_DETAIL");
|
|
|
if (DIAGNOSIS_DETAIL!=null&&DIAGNOSIS_DETAIL.size()>0){
|
|
|
if (!newYlzRelation){
|
|
|
List<YlzMedicalIcdDO> ylzMedicalIcdDOList = ylzMedicailIcdDao.findByMedicalId(ylzMedicalRelationDO.getId());
|
|
|
icdDOList.addAll(ylzMedicalIcdDOList);
|
|
|
}else {
|
|
|
for (int j=0;j<DIAGNOSIS_DETAIL.size();j++){
|
|
|
JSONObject DIAGNOSIS_DETAIL_OBJ = DIAGNOSIS_DETAIL.getJSONObject(j);
|
|
|
YlzMedicalIcdDO ylzMedicalIcdDO = new YlzMedicalIcdDO();
|
|
|
ylzMedicalIcdDO.setMedicalId(ylzMedicalRelationDO.getId());//医保关联表id
|
|
|
ylzMedicalIcdDO.setDiseaseCodeIcd10(DIAGNOSIS_DETAIL_OBJ.getString("diag_code"));
|
|
|
ylzMedicalIcdDO.setDiseaseNameIcd10(DIAGNOSIS_DETAIL_OBJ.getString("diag_name"));
|
|
|
ylzMedicalIcdDO.setDiseaseType(DIAGNOSIS_DETAIL_OBJ.getString("diag_type"));//诊断或症状类型
|
|
|
ylzMedicalIcdDO.setDiseaseOrder(DIAGNOSIS_DETAIL_OBJ.getString("diag_srt_no"));//诊断或症状序号
|
|
|
ylzMedicalIcdDO.setCreateTime(new Date());
|
|
|
ylzMedicalIcdDO.setDiseMsgid(DIAGNOSIS_DETAIL_OBJ.getString("dise_msgid"));
|
|
|
ylzMedicalIcdDO.setDiagDept(DIAGNOSIS_DETAIL_OBJ.getString("diag_dept"));
|
|
|
ylzMedicalIcdDO.setDiseDorNo(DIAGNOSIS_DETAIL_OBJ.getString("dise_dor_no"));
|
|
|
ylzMedicalIcdDO.setDiseDorName(DIAGNOSIS_DETAIL_OBJ.getString("dise_dor_name"));
|
|
|
ylzMedicalIcdDO.setDiagTime(DIAGNOSIS_DETAIL_OBJ.getString("diag_time"));
|
|
|
ylzMedicalIcdDO.setDel(Integer.valueOf(DIAGNOSIS_DETAIL_OBJ.getString("vali_flag")));
|
|
|
ylzMedicailIcdDao.save(ylzMedicalIcdDO);
|
|
|
icdDOList.add(ylzMedicalIcdDO);
|
|
|
if (newYlzRelation){
|
|
|
ylzMedicalRelationDO.setLogNo(VISIT_NO);
|
|
|
ylzMedicalRelationDO.setOrgCode(orgCode);
|
|
|
ylzMedicalRelationDO.setRegionCode("350200");
|
|
|
ylzMedicalRelationDO.setIdcard(null);
|
|
|
ylzMedicalRelationDO.setName(USER_NAME);
|
|
|
ylzMedicalRelationDO.setCertType("01");
|
|
|
ylzMedicalRelationDO.setMedicalMode("10");
|
|
|
ylzMedicalRelationDO.setMedicalType("11");
|
|
|
ylzMedicalRelationDO.setCardNo(cardNo);
|
|
|
ylzMedicalRelationDO.setHisSerial(INSUR_VISIT_NO);//医保挂号流水号
|
|
|
ylzMedicalRelationDO.setHisSettleNo(INSUR_VISIT_NO);//his結算流水号
|
|
|
ylzMedicalRelationDO.setDeptCode(deptCode);
|
|
|
ylzMedicalRelationDO.setDeptName(deptName);
|
|
|
ylzMedicalRelationDO.setHisDeptCode(hisDeptCode);
|
|
|
ylzMedicalRelationDO.setHisDeptName(hisDeptName);
|
|
|
ylzMedicalRelationDO.setCollector(collector);
|
|
|
ylzMedicalRelationDO.setEmergencySign("0");
|
|
|
ylzMedicalRelationDO.setTraumaSign("0");
|
|
|
ylzMedicalRelationDO.setDate(visitDate);
|
|
|
ylzMedicalRelationDO.setItemCount(mxDOList.size()+"");
|
|
|
ylzMedicalRelationDO.setTotalAmount(amountDf.format(totalAmount));
|
|
|
ylzMedicalRelationDO.setPreCharges("0");//预扣费金额
|
|
|
ylzMedicalRelationDO.setDataSource("53");
|
|
|
ylzMedicalRelationDO.setPreCount(presItemCount);//处方项目数
|
|
|
ylzMedicalRelationDO.setDoctorLevel("02");
|
|
|
ylzMedicalRelationDO.setRelationCode(prescription_code);
|
|
|
ylzMedicalRelationDO.setCreateTime(new Date());
|
|
|
ylzMedicalRelationDO.setMedicalPrice("0");
|
|
|
ylzMedicalRelationDO.setMedicalState(0);
|
|
|
if ("1".equals(RATE_TYPE)){
|
|
|
ylzMedicalRelationDO.setOwnPay(amountDf.format(totalAmount));//自费金额
|
|
|
ylzMedicalRelationDO.setPersonCash(amountDf.format(totalAmount));//自费金额
|
|
|
ylzMedicalRelationDO.setPersonAccount("0.0");
|
|
|
}else {
|
|
|
ylzMedicalRelationDO.setOwnPay("0");//自费
|
|
|
ylzMedicalRelationDO.setPersonCash("0");
|
|
|
ylzMedicalRelationDO.setPersonAccount(amountDf.format(totalAmount));
|
|
|
}
|
|
|
ylzMedicalRelationDO.setMedicalPrice("0");
|
|
|
ylzMedicalRelationDO.setMedicalState("1".equals(RATE_TYPE)?0:1);//0自费 1医保
|
|
|
ylzMedicalRelationDO.setMedType(med_type);
|
|
|
ylzMedicalRelationDO.setCaty(caty);
|
|
|
ylzMedicalRelationDO.setApplyTime(APPLY_TIME);
|
|
|
ylzMedicalRelationDO.setAtddrNo(atddr_no);
|
|
|
ylzMedicalRelationDO.setDrName(dr_name);
|
|
|
ylzMedicalRelationDO.setVisitMsgid(visit_msgid);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
if (newYlzRelation){
|
|
|
ylzMedicalRelationDO.setLogNo(prescription_code);
|
|
|
ylzMedicalRelationDO.setOrgCode(orgCode);
|
|
|
ylzMedicalRelationDO.setRegionCode("350200");
|
|
|
ylzMedicalRelationDO.setIdcard(null);
|
|
|
ylzMedicalRelationDO.setName(USER_NAME);
|
|
|
ylzMedicalRelationDO.setCertType("01");
|
|
|
ylzMedicalRelationDO.setMedicalMode("10");
|
|
|
ylzMedicalRelationDO.setMedicalType("11");
|
|
|
ylzMedicalRelationDO.setCardNo(cardNo);
|
|
|
ylzMedicalRelationDO.setHisSerial(INSUR_VISIT_NO);//医保挂号流水号
|
|
|
ylzMedicalRelationDO.setHisSettleNo(INSUR_VISIT_NO);//his結算流水号
|
|
|
ylzMedicalRelationDO.setDeptCode(deptCode);
|
|
|
ylzMedicalRelationDO.setDeptName(deptName);
|
|
|
ylzMedicalRelationDO.setHisDeptCode(hisDeptCode);
|
|
|
ylzMedicalRelationDO.setHisDeptName(hisDeptName);
|
|
|
ylzMedicalRelationDO.setCollector(collector);
|
|
|
ylzMedicalRelationDO.setEmergencySign("0");
|
|
|
ylzMedicalRelationDO.setTraumaSign("0");
|
|
|
ylzMedicalRelationDO.setDate(visitDate);
|
|
|
ylzMedicalRelationDO.setItemCount(mxDOList.size()+"");
|
|
|
ylzMedicalRelationDO.setTotalAmount(SUM_COST);
|
|
|
ylzMedicalRelationDO.setPreCharges("0");//预扣费金额
|
|
|
ylzMedicalRelationDO.setDataSource("53");
|
|
|
ylzMedicalRelationDO.setPreCount(presItemCount);//处方项目数
|
|
|
ylzMedicalRelationDO.setDoctorLevel("02");
|
|
|
ylzMedicalRelationDO.setRelationCode(VISIT_NO);
|
|
|
ylzMedicalRelationDO.setCreateTime(new Date());
|
|
|
ylzMedicalRelationDO.setMedicalPrice("0");
|
|
|
ylzMedicalRelationDO.setMedicalState(0);
|
|
|
if ("1".equals(RATE_TYPE)){
|
|
|
ylzMedicalRelationDO.setOwnPay(SUM_CHARGE);//自费金额
|
|
|
ylzMedicalRelationDO.setPersonCash(SUM_CHARGE);//自费金额
|
|
|
ylzMedicalRelationDO.setPersonAccount("0.0");
|
|
|
}else {
|
|
|
ylzMedicalRelationDO.setOwnPay("0");//自费
|
|
|
ylzMedicalRelationDO.setPersonCash("0");
|
|
|
ylzMedicalRelationDO.setPersonAccount(SUM_CHARGE);
|
|
|
}
|
|
|
ylzMedicalRelationDO.setMedicalPrice("0");
|
|
|
ylzMedicalRelationDO.setMedicalState("1".equals(RATE_TYPE)?0:1);//0自费 1医保
|
|
|
ylzMedicalRelationDO.setMedType(med_type);
|
|
|
ylzMedicalRelationDO.setCaty(caty);
|
|
|
ylzMedicalRelationDO.setApplyTime(APPLY_TIME);
|
|
|
ylzMedicalRelationDO.setAtddrNo(atddr_no);
|
|
|
ylzMedicalRelationDO.setDrName(dr_name);
|
|
|
ylzMedicalRelationDO.setVisitMsgid(visit_msgid);
|
|
|
}
|
|
|
if (ylzMedicalRelationDO.getStatus()!=1){
|
|
|
String balance =null;
|
|
|
JSONObject balanceObj = jwService.getSickDispBalance(ylzMedicalRelationDO.getCardNo(),ylzMedicalRelationDO.getOrgCode());
|
|
|
if (balanceObj.getString("status").equalsIgnoreCase("200")) {//i健康返回值
|
|
|
JSONObject responseDataTmp = balanceObj.getJSONObject("data");
|
|
|
String codeTMP = responseDataTmp.getString("CODE");//智业返回值 0失败 1成功
|
|
|
if (codeTMP.equalsIgnoreCase("1")) {
|
|
|
JSONArray byRefParaData = responseDataTmp.getJSONArray("byRefParaData");
|
|
|
if (byRefParaData.size()>0){
|
|
|
balance = byRefParaData.getJSONObject(0).getString("dispBalance");
|
|
|
if (ylzMedicalRelationDO.getStatus()!=1){
|
|
|
String balance =null;
|
|
|
JSONObject balanceObj = jwService.getSickDispBalance(ylzMedicalRelationDO.getCardNo(),ylzMedicalRelationDO.getOrgCode());
|
|
|
if (balanceObj.getString("status").equalsIgnoreCase("200")) {//i健康返回值
|
|
|
JSONObject responseDataTmp = balanceObj.getJSONObject("data");
|
|
|
String codeTMP = responseDataTmp.getString("CODE");//智业返回值 0失败 1成功
|
|
|
if (codeTMP.equalsIgnoreCase("1")) {
|
|
|
JSONArray byRefParaData = responseDataTmp.getJSONArray("byRefParaData");
|
|
|
if (byRefParaData.size()>0){
|
|
|
balance = byRefParaData.getJSONObject(0).getString("dispBalance");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
ylzMedicalRelationDO.setBalance(balance);//预缴金余额
|
|
|
}
|
|
|
if (1==ylzMedicalRelationDO.getMedicalState()&&0.0==Double.valueOf(ylzMedicalRelationDO.getTotalAmount())){
|
|
|
//费用为0的医保结算也需要当作自费处理
|
|
|
ylzMedicalRelationDO.setMedicalState(0);
|
|
|
}
|
|
|
BigDecimal b1 = new BigDecimal(ylzMedicalRelationDO.getPersonCash());//个人现金支付金额
|
|
|
BigDecimal b2 = new BigDecimal(ylzMedicalRelationDO.getPersonAccount());//个人账户支付金额
|
|
|
BigDecimal b3 = new BigDecimal(ylzMedicalRelationDO.getMedicalPrice());//医保基金总额
|
|
|
Double totalPirce=b1.add(b2).add(b3).doubleValue();
|
|
|
logger.info("总费用:"+totalPirce);
|
|
|
if (totalPirce!=Double.parseDouble(ylzMedicalRelationDO.getTotalAmount())){
|
|
|
throw new Exception("金额不对无法结算");
|
|
|
}
|
|
|
allTotalAmount = allTotalAmount.add(new BigDecimal(ylzMedicalRelationDO.getTotalAmount()));
|
|
|
ylzMedicailRelationDao.save(ylzMedicalRelationDO);
|
|
|
ylzMedicalRelationDO.setYlzMedicalIcdDOList(icdDOList);
|
|
|
ylzMedicalRelationDO.setYlzMedicalMxDOList(mxDOList);
|
|
|
result.add(ylzMedicalRelationDO);
|
|
|
}
|
|
|
ylzMedicalRelationDO.setBalance(balance);//预缴金余额
|
|
|
}
|
|
|
if (1==ylzMedicalRelationDO.getMedicalState()&&0.0==Double.valueOf(ylzMedicalRelationDO.getTotalAmount())){
|
|
|
//费用为0的医保结算也需要当作自费处理
|
|
|
ylzMedicalRelationDO.setMedicalState(0);
|
|
|
}
|
|
|
BigDecimal b1 = new BigDecimal(ylzMedicalRelationDO.getPersonCash());//个人现金支付金额
|
|
|
BigDecimal b2 = new BigDecimal(ylzMedicalRelationDO.getPersonAccount());//个人账户支付金额
|
|
|
BigDecimal b3 = new BigDecimal(ylzMedicalRelationDO.getMedicalPrice());//医保基金总额
|
|
|
Double totalPirce=b1.add(b2).add(b3).doubleValue();
|
|
|
logger.info("总费用:"+totalPirce);
|
|
|
if (totalPirce!=Double.parseDouble(ylzMedicalRelationDO.getTotalAmount())){
|
|
|
if (hisAllTotalAmount.compareTo(allTotalAmount)!=0){
|
|
|
throw new Exception("金额不对无法结算");
|
|
|
}
|
|
|
|
|
|
ylzMedicailRelationDao.save(ylzMedicalRelationDO);
|
|
|
ylzMedicalRelationDO.setYlzMedicalIcdDOList(icdDOList);
|
|
|
ylzMedicalRelationDO.setYlzMedicalMxDOList(mxDOList);
|
|
|
|
|
|
result.add(ylzMedicalRelationDO);
|
|
|
}
|
|
|
}
|
|
|
}
|