create or replace view VW_SF_op_electronic_bill
as
-- MODIFICATION HISTORY                                                       
-- Person    Date          Comments                                           
-- zhangyc   2020.11.09    created  [门诊][易惠博思电子发票][结账发票视图] by MZSF9-20201111-004
-- zhangyc   2020.11.17    placeCode 开票点编码	改成院内员工编码  by MZSF9-20201118-001
-- zhangyc   2020.11.19    placeCode 开票点编码	改成院内员工胸卡号 by MZSF9-20201119-002
-- zhangyc   2020.11.19    修正busType	业务标识错误（01:住院 02	门诊）
-- zhangyc   2020.12.07    busDateTime后补000至17位和consultationDate改为yyyyMMdd by 	MZSF9-20201207-002 
-- zhangyc   2020.12.09    medicalInstitution改为取通用字典 为空默认"综合医院"   by MZSF9-20201210-001
-- zhangyc   2020.12.11    busNo改为函数 '02'||to_char(SF_SF_GETYXPJH(a.PJH000)) by MZSF9-20201211-001
-- zhangyc   2020.12.18    author--改为d.ZWXM00 by MZSF9-20201221-001
-- zhangyc   2021.01.25    SF_SF_BSDJPJ_JSON增加入参数 by  MZSF9-20210126-001
-- qiulf     2021.05.28    selfCashPay（个人现金支付）由原来的a.XJFKJE改为a.ZFJE00 by MZSF9-20210527-003
-- zhangyc   2021.07.01    d.ZWXM00 as  payee改为 d.YGBH00 as  payee by MZSF9-20210628-001
-- jlg       2021.09.22    重整下视图的排版 	MZSF9-20210909-002
-- linzetao  2021.10.22    调整otherfundPay栏位取值, 直接改成0      	MZSF9-20211020-003
-- qiulf     2021.12.17    remark增加特殊病种名称、余额、医保个人账户金额 by 	MZSF9-20211217-002
-- chenHeyi  2022.04.15    增加patientCategory就诊科室，medCareAreaCode医保行政区划码  MZSF9-20220408-001
-- linzetao  2022.12.26    调整remark取值改为由函数SF_SF_GETFPXX_REMARK获取   MZSF9-20221221-002
-- linzetao  2023.03.21    调整medicalCareType取值改为优先从函数SF_SF_GETFPXX_YBLXMC获取   MZSF9-20230111-001
-- chenrh    2024.05.07    YBLB00字段，过滤“\”特殊符号	MZSF13-20240507-004
-- wac       2026.02.04    payer改为先显示KPDWMC,payerType在KPDWMC有值时传2  MZSF13-20260202-001
select
  a.BRID00 as  BRID00,                                                       --病人ID 
  a.JZDH00 as  JZDH00,                                                       --结账单号
  a.PJH000 as  PJH000,                                                       --票据号
  a.JZRQ00 as  JZRQ00,                                                       --结账日期
  a.JZSJ00 as  JZSJ00,                                                       --结账时间
  a.JZY000 as  JZY000,                                                       --结账员编码
  d.ZWXM00 as  JZYXM0,                                                       --结账员姓名
  a.YBZHYE as  YBZHYE,                                                       --医保账户余额
  a.HJJE00 as  HJJE00,                                                       --合计金额
  nvl(a.PMLJ00,0) as ptmzlj,                                                 --普通门诊累计
  nvl(a.TMLJ00,0) as tsmzlj,                                                 --特殊门诊累计          
  a.JZDH00 as  ywlsh,                                                        --ywlsh	             业务流水号 是	string	
  '02' as busType,                                                           --busType	           业务标识	String	20	(01:住院 02	门诊 03	急诊 04	门特 05	体检中心 06	挂号 07	住院预交金 08	体检预交金)
  '02'||to_char(SF_SF_GETYXPJH(a.PJH000))  as busNo,                         --busNo               业务流水号        String  50    是 单位内部唯一
  nvl((select KPDWMC from BM_BRQTXX X where X.BRID00 = A.BRID00),b.BRXM00) as payer,  --payer               患者姓名          String  100   是
  a.JZRQ00||substrb(a.JZSJ00,1,2)||substrb(a.JZSJ00,4,2)||substrb(a.JZSJ00,7,2)||'000' as  busDateTime,--busDateTime	业务发生时间	String	17	是	格式：yyyyMMddHHmmssSSS
  d.xkh000 as  placeCode,                                                    --placeCode	         开票点编码	String	50	是	直接填写业务系统内部编码值，由医疗平台配置对照
  d.YGBH00 as  payee,                                                        --payee	             收费员	String	50	是（=员工编码）2021.07.01 	
  d.ZWXM00 as  author,                                                       --author	             票据编制人	String	100	是	如收费员与开票人员为同一人，则值与payee相同
  d.ZWXM00 as  checker,                                                      --checker	           票据复核人 
  a.HJJE00 as totalAmt,                                                      --totalAmt            开票总金额        Number  14,2  是
   (case when (select KPDWMC from BM_BRQTXX X where X.BRID00 = A.BRID00) is not null then '2'  else '1' end) as payerType, --payerType	         交款人类型	String	1	是	交款人类型：1 个人 2 单位 
  decode(trim(b.YBKH00),'0','3101','1102') as  cardType,                     --cardType	           卡类型	String	10	是(1101	身份证号码 1102	社会保障卡号 3101	诊疗卡/就诊卡 4101	居民户口簿 5101	京通卡)
  substrb(SF_SF_YYTCARDNO(A.BRID00),1,30) as cardNo,                         --cardNo              卡号              String  50    是 根据卡类型填写
  c.GHH000 as patientNo,                                                     --patientNo           患者就诊编号      String  20    是 患者每次就诊一次就生成的一个新的编号。（患者登记号）
  c.XB0000 as sex,                                                           --sex                 性别              String  2     是
  to_number(to_char(sysdate,'YYYY'))-to_number(substr(b.BRCSRQ,1,4)) as age, --age                 年龄              String  10    是 
  b.BRZJBH as idCardNo,                                                      --idCardNo            患者身份证号码    String  20    否 
  nvl(b.BRDH00,b.BRLXDH) as tel,                                             --tel	               患者手机号码	String	13	否	患者手机号（如需要用于电子票归集、电子票据短信通知，必填）
  '' as email,                                                               --email	             患者邮箱地址	String	100	否	患者邮箱地址（如需用于电子票归集、电子票据邮箱通知，必填）
 -- substrb(nvl(SF_SF_TYZD00('第三方电子发票平台接口','medicalInstitution'),'综合医院'),1,60) as medicalInstitution,--medicalInstitution	医疗机构类型	String	60	否
  (select  YYQC00 from XT_YYXX00 where yyid00=b.DAYYID and rownum=1) as medicalInstitution,--medicalInstitution	医疗机构类型	String	60	否
  e.FBBH00 as medCareInstitution,                                            --medCareInstitution	 医保机构编码	String	60	否	医保机构的唯一编码  
  decode(e.YBLB00,chr(92),'',e.YBLB00) as medCareTypeCode,                                               --medCareTypeCode     医保类型编码      String  60    否 
  SF_SF_GETFPXX_YBLXMC(a.BRID00,a.FBBH00,b.YBLB00,a.JZDH00,'') as medicalCareType,   --medicalCareType     医保类型名称      String  60    否 由城镇职工基本医疗保险、城镇居民基本医疗保险、新型农村合作医疗、其它医疗保险等构成
  b.YBID00 as medicalInsuranceID,                                            --medicalInsuranceID  患者医保编号      String  60    否 参保人在医保系统中的唯一标识(医保号)      
  c.GHRQ00 as consultationDate,                                              --consultationDate    就诊日期          String  10    否 患者就医时间格式:yyyy-MM-dd
  (select BMMC00 from BM_BMBM00 where BMBH00=c.GHKS00) as category,          --category            就诊科室          String  200   否 
  c.GHKS00 as patientCategoryCode,                                           --patientCategoryCode 就诊科室编码      String  60    否  
  b.BRID00 as patientId,                                                     --patientId           患者唯一ID        String  50    否 患者在业务系统中的唯一标识ID，类似身份证号码。
  c.BRBLH0 as caseNumber,                                                    --caseNumber          病历号            String  50    否 
  (select MC0000 from  BM_TSBZB0 where YBZXLB = a.YBZXLB and BH0000=a.TSBZBH and rownum=1) as specialDiseasesName,               --specialDiseasesName 特殊病种名称      String  200   否 
  nvl(a.GRZHZF,0) as accountPay,                                             --accountPay          个人账户支付      Number  14,2  是 按政策规定用个人账户支付参保人的医疗费用（含基本医疗保险目录范围内和目录范围外的费用）；
  nvl(a.TCJJZF,0) as fundPay,                                                --fundPay             医保统筹基金支付  Number  14,2  是 患者本次就医所发生的医疗费用中按规定由基本医疗保险统筹基金支付的金额；
  --nvl(a.YBYL24,0)+nvl(a.YBYL26,0)+nvl(a.YBYL02,0)+nvl(a.YBYL03,0)+nvl(a.YBYL04,0)+nvl(a.YBYL57,0) as otherfundPay,--otherfundPay        其它医保支付      Number  14,2  是 患者本次就医所发生的医疗费用中按规定由大病保险、医疗救助、公务员医疗补助、大额补充、企业补充等基金或资金支付的金额；
  0 as otherfundPay,                                                         --otherfundPay        其它医保支付      Number  14,2  是 患者本次就医所发生的医疗费用中按规定由大病保险、医疗救助、公务员医疗补助、大额补充、企业补充等基金或资金支付的金额；
  nvl(a.YBYL63,0) as ownPay,                                                 --ownPay                 自费金额          Number  14,2  是 患者本次就医所发生的医疗费用中按照有关规定不属于基本医疗保险目录范围而全部由个人支付的费用；
  nvl(a.YBYL31,0) as selfConceitedAmt,                                       --selfConceitedAmt       个人自负          Number  14,2  是 医保患者起付标准内个人支付费用；
  nvl(a.ZFJE00,0) as selfPayAmt,                                             --selfPayAmt             个人自付          Number  14,2  是 患者本次就医所发生的医疗费用中由个人负担的属于基本医疗保险目录范围内自付部分的金额；开展按病种、病组、床日等打包付费方式且由患者定额付费的费用。该项为个人所得税大病医疗专项附加扣除信；息项如无金额，填写0
  nvl(a.ZFJE00,0) as selfCashPay,                                            --selfCashPay            个人现金支付      Number  14,2  是 个人通过现金、银行卡、微信、支付宝等渠道支付的金额；
  nvl(a.XJFKJE,0) as cashPay,                                                --cashPay                现金预交款金额    Number  14,2  否
  0 as chequePay,                                                            --chequePay              支票预交款金额    Number  14,2  否 
  nvl(a.ZZFKJE,0) as transferAccountPay,                                     --transferAccountPay     转账预交款金额    Number  14,2  否 
  0 as cashRecharge,                                                         --cashRecharge           补交金额(现金)    Number  14,2  否 
  0 as chequeRecharge,                                                       --chequeRecharge         补交金额(支票)    Number  14,2  否 
  0 as transferRecharge,                                                     --transferRecharge       补交金额（转账）  Number  14,2  否 
  0 as cashRefund,                                                           --cashRefund             退还金额(现金)    Number  14,2  否 
  0 as chequeRefund,                                                         --chequeRefund           退交金额(支票)    Number  14,2  否 
  0 as transferRefund,                                                       --transferRefund         退交金额(转账)    Number  14,2  否 
  a.BRYE00 as ownAcBalance,                                                  --ownAcBalance           个人账户余额      Number  14,2  否 
  nvl(a.TCJJZF,0)+nvl(a.GRZHZF,0) as reimbursementAmt,                       --reimbursementAmt       报销总金额        Number  14,2  否 医保结算后返回的总金额
  a.YBDJH0  as balancedNumber,                                               --balancedNumber         结算号            String  100   否 医保结算后生成的号码/入账唯一值
  '' as alipayCode,                                                          --alipayCode	            患者支付宝账户	String	100	否	患者如果使用支付宝结算，可传入患者的支付宝UserID，用于电子票据归集到支付宝发票管家
  '' as weChatOrderNo,                                                       --weChatOrderNo	        微信支付订单号	String	100	否	微信结算时，可传入患者支付成功的订单号，用来发微信服务通知
  '' as weChatMedTransNo,                                                    --weChatMedTransNo	      微信医保支付订单号	String	100	否	医保患者使用微信医保支付结算时，填写对应的微信医保支付的订单号
  '' as openID,                                                              --openID	                微信公众号或小程序用户ID	String	60	否
  '' as eBillRelateNo,                                                       --eBillRelateNo	        业务票据关联号	String	32	否
  SF_SF_BSDJPJ_JSON(a.BRID00,a.JZDH00,a.HJJE00,1,a.PJH000,0) as chargeDetail,--chargeDetail	          收费项目明细列表	String	不限	是 JSON
  --SF_SF_BSDJPJ_JSONDATA(a.BRID00,a.JZDH00,a.HJJE00,2) as listDetail,            --listDetail	      清单项目明细列表	String JSON (明细太多数据直接取视图：VW_SF_listDetail)
  '' as listDetail,                                                               --listDetail	      清单项目明细列表	String JSON (明细太多数据直接取视图：VW_SF_listDetail)
  SF_SF_BSDJPJ_JSON(a.BRID00,a.JZDH00,a.HJJE00,3,a.PJH000,0) as otherInfo,        --otherInfo	        其它扩展信息列表	String	不限	否 JSON
  SF_SF_BSDJPJ_JSON(a.BRID00,a.JZDH00,a.HJJE00,4,a.PJH000,0) as otherMedicalList, --otherMedicalList	其它医保信息列表	String	不限	否 JSON
  SF_SF_BSDJPJ_JSON(a.BRID00,a.JZDH00,a.HJJE00,5,a.PJH000,0) as payChannelDetail, --payChannelDetail	交费渠道列表	String	不限	是(01	POS刷卡 02	现金03	转账04	支付宝05	微信06	支票07	卡支付08	银联卡09	自助机缴费10	软POS11	医保支付12	预交金13	公众平台)
  SF_SF_GETFPXX_REMARK(a.BRID00,a.FBBH00,a.YBZXLB,a.YBBRLB,a.YBLB00,a.JZDH00,a.PJH000,
                       a.YBJKID,a.BRZJE0,a.JZJE00,a.GFJE00,a.HJJE00,a.JMJE00,a.TCJJZF,
                       a.GRZHZF,a.ZFJE00,a.TSBZBH,a.BRYE00,a.YBZHYE,'') as remark,--remark	          备注	String	200	否
  --'特殊病种名称：'||(select MC0000 from  BM_TSBZB0 where YBZXLB = a.YBZXLB and BH0000=a.TSBZBH and rownum=1)||',院内余额：'||a.BRYE00||',个人账户余额：'||a.YBZHYE as remark,                                                                   --remark	          备注	String	200	否
  B.BRBLH0 as hospitalNo,                                                         --患者住院号【住院】门诊用病历号
  B.BRBLH0 as  visitNo ,                                                          --住院就诊编号【住院】
  a.BRID00 as patiendId ,                                                         --患者唯一ID=bm_brxxb0.brid00
  null as  inHospitalDate,                                                        --住院日期【住院】
  null as  outHospitalDate,                                                       --出院日期【住院】
  '1' as isArrears,                                                               --是否可流通【住院】0-否、1-是（如欠费情况根 据医院业务要求该票据是 否可流通）
  null as arrearsReason,                                                          --不可流通原因  
  b.XZQH00  as medCareAreaCode,                                                   --医保行政区划码
  (select BMMC00 from BM_BMBM00 where BMBH00=c.GHKS00) as patientCategory         --patientCategory            就诊科室          String  200   否  
from SF_JZB000 a,BM_BRXXB0 b,SF_BRXXB0 c,BM_YGBM00 d,IC_YBBRLB E
where a.BRID00 = b.BRID00 
  and a.MZID00 = c.GHID00
  and a.JZY000 =d.YGBH00
  and b.YBLB00 =e.YBLB00
  and b.FBBH00 =e.FBBH00