Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: ABMMUFC5

ABMMUFC5.m

Go to the documentation of this file.
  1. ABMMUFC5 ;IHS/SD/SDR - EHR Incentive Report (MU) ;
  1. ;;2.6;IHS 3P BILLING SYSTEM;**6,7,12,15**;NOV 12, 2009;Build 251
  1. ;IHS/SDR/SDR - 2.6*12 - VMBP RQMT_104 - Added VA data to report
  1. ;IHS/SD/SDR - 2.6*12 - Added swingbed
  1. ;IHS/SD/SDR - 2.6*15 - HEAT183309 - Created separate GETBILLS for 'F' option since they are so different now
  1. GETBILLS ;EP
  1. S ABMPSDT=ABMP("SDT")-10000
  1. F S ABMPSDT=$O(^ABMDBILL(DUZ(2),"AD",ABMPSDT)) Q:'ABMPSDT D ;loop thru service date from x-ref
  1. .S ABMPFLG=0 ;abm*2.6*15 HEAT183309 Req#B
  1. .S ABMP("BDFN")=0
  1. .F S ABMP("BDFN")=$O(^ABMDBILL(DUZ(2),"AD",ABMPSDT,ABMP("BDFN"))) Q:'ABMP("BDFN") D
  1. ..S ABMVDFN=0
  1. ..F S ABMVDFN=$O(^ABMDBILL(DUZ(2),ABMP("BDFN"),11,ABMVDFN)) Q:'ABMVDFN D Q:ABMPFLG=1
  1. ...I $P($G(^AUPNVSIT(ABMVDFN,0)),U,11)=1 Q ;deleted visit
  1. ...S ABMSC=$P($G(^AUPNVSIT(ABMVDFN,0)),U,7) ;service category
  1. ...I "HIASRO"'[ABMSC Q ;ignore all other service categories
  1. ...;H=Hosp
  1. ...;I=In Hosp
  1. ...;A=Amb
  1. ...;S=Day Surg
  1. ...;R=Nurs Home
  1. ...;O=Observ
  1. ...;parent visit link; default to visit if there isn't one
  1. ...S ABMP("PVDFN")=$S($P($G(^AUPNVSIT(ABMVDFN,0)),U,12):$P(^AUPNVSIT(ABMVDFN,0),U,12),1:ABMVDFN)
  1. ...;if not Hospitalization, use Visit/Admit Date&Time
  1. ...I ABMSC'="H",($P($G(^AUPNVSIT(ABMP("PVDFN"),0)),U)<ABMP("SDT")) Q ;seen before start date
  1. ...I ABMSC'="H",($P($G(^AUPNVSIT(ABMP("PVDFN"),0)),U)>ABMP("EDT")) Q ;seen after end date
  1. ...;if Hospitalization, get Date of Discharge from V Hospitalization file
  1. ...S ABMQFLG=1
  1. ...I ABMSC="H" D Q:ABMQFLG=0
  1. ....;S ABMP("VHIEN")=$O(^AUPNVINP("AD",ABMP("PVDFN"),0)) ;abm*2.6*7
  1. ....S ABMP("VHIEN")=+$O(^AUPNVINP("AD",ABMP("PVDFN"),0)) ;abm*2.6*7
  1. ....I ABMP("VHIEN")=0 S ABMQFLG=0 Q
  1. ....S ABMP("DISCHDT")=$P($G(^AUPNVINP(ABMP("VHIEN"),0)),U)
  1. ....I ABMP("DISCHDT")<ABMP("SDT") S ABMQFLG=0 Q ;seen before start date
  1. ....I ABMP("DISCHDT")>ABMP("EDT") S ABMQFLG=0 Q ;seen after end date
  1. ....;start new abm*2.6*12 swingbed
  1. ....S ABMP("SWINGBED")=0
  1. ....I $$GET1^DIQ(45.7,$$GET1^DIQ(9000010.02,ABMP("VHIEN"),".04","I"),"9999999.01","E")=21 S ABMP("SWINGBED")=1
  1. ....I $$GET1^DIQ(45.7,$$GET1^DIQ(9000010.02,ABMP("VHIEN"),".05","I"),"9999999.01","E")=21 S ABMP("SWINGBED")=1
  1. ....;end new swingbed
  1. ...S ABMPBDFN=0
  1. ...S ABMPFLG=0 ;pymt flg
  1. ...K ABMB
  1. ...F ABMC=1:1 S ABMPBDFN=$O(^ABMDBILL(DUZ(2),"AV",ABMP("PVDFN"),ABMPBDFN)) Q:'ABMPBDFN D Q:ABMPFLG=1
  1. ....S ABMP("BTYP")=$P($G(^ABMDBILL(DUZ(2),ABMPBDFN,0)),U,2) ;bill type
  1. ....S ABMP("VTYP")=$P($G(^ABMDBILL(DUZ(2),ABMPBDFN,0)),U,7) ;visit type
  1. ....I $P($G(^ABMDBILL(DUZ(2),ABMPBDFN,0)),U,4)="X" Q ;skip cancelled bills
  1. ....S ABMB(ABMP("VTYP"),ABMP("BTYP"),ABMC)=ABMPBDFN
  1. ...I '$D(ABMB) Q ;no active bills found ;abm*2.6*15 HEAT183309
  1. ...S ABMP("VTYP")=0
  1. ...F S ABMP("VTYP")=$O(ABMB(ABMP("VTYP"))) Q:'ABMP("VTYP") D Q:ABMPFLG=1
  1. ....S ABMP("BTYP")=0
  1. ....F S ABMP("BTYP")=$O(ABMB(ABMP("VTYP"),ABMP("BTYP"))) Q:'ABMP("BTYP") D Q:ABMPFLG=1
  1. .....S ABMC=0
  1. .....F S ABMC=$O(ABMB(ABMP("VTYP"),ABMP("BTYP"),ABMC)) Q:'ABMC D Q:ABMPFLG=1
  1. ......S ABMPBDFN=$G(ABMB(ABMP("VTYP"),ABMP("BTYP"),ABMC))
  1. ......S ABM=ABMPBDFN
  1. ......S ABMP("PDFN")=$P($G(^ABMDBILL(DUZ(2),ABMPBDFN,0)),U,5)
  1. ......S ABMP("INS")=$P($G(^ABMDBILL(DUZ(2),ABMPBDFN,0)),U,8)
  1. ......S ABMP("LDFN")=$P($G(^ABMDBILL(DUZ(2),ABMPBDFN,0)),U,3)
  1. ......S ABMP("VDT")=$P($G(^ABMDBILL(DUZ(2),ABMPBDFN,7)),U)
  1. ......S ABMP("NEWBORN")=0 ;abm*2.6*7
  1. ......I $$GET1^DIQ(9002274.03,$P($G(^ABMDBILL(DUZ(2),ABMPBDFN,5)),U),.03,"E")="NEWBORN" S ABMP("NEWBORN")=1 ;abm*2.6*7
  1. ......S ABMP("PD")=0 ;abm*2.6*15 HEAT183309 Req#B
  1. ......D PREV^ABMMUFC3
  1. ......I +$G(ABMP("PD"))=0&('ABMPYD) Q ;skip if no payment made on bill
  1. ......S ABMPFLG=1
  1. ...I ABMPFLG=0 D ;if ABMPFLG=0 there wasn't a pymt on any bill; use the first one billed
  1. ....S ABMP("VTYP")=$O(ABMB(0))
  1. ....S ABMP("BTYP")=$O(ABMB(ABMP("VTYP"),0))
  1. ....S ABMC=$O(ABMB(ABMP("VTYP"),ABMP("BTYP"),0))
  1. ....S ABMPBDFN=$G(ABMB(ABMP("VTYP"),ABMP("BTYP"),ABMC))
  1. ...;start old abm*2.6*15 HEAT183309 Req#B
  1. ...;;if it gets here and ABMPFLG is 0, no pymt was found for any bill for this visit
  1. ...;Q:+$G(ABMPFLG)=0
  1. ...;end old HEAT183309 Req#B
  1. ...;if it gets here, ABMP("BDFN") is the first bill with a payment
  1. ...S ABMIT=$P($G(^ABMDBILL(DUZ(2),ABMPBDFN,2)),U,2)
  1. ...D INSTYP
  1. ...S ABMP("INS")=$P($G(^ABMDBILL(DUZ(2),ABMPBDFN,0)),U,8)
  1. ...S ABMP("FSDT")=0,ABMFFLG=0
  1. ...F S ABMP("FSDT")=$O(^ABMNINS(DUZ(2),ABMP("INS"),1,ABMP("VTYP"),11,ABMP("FSDT"))) Q:'ABMP("FSDT") D Q:ABMFFLG=1
  1. ....I $P($G(^ABMNINS(DUZ(2),ABMP("INS"),1,ABMP("VTYP"),11,ABMP("FSDT"),0)),U)>ABMP("EDT") Q
  1. ....I $P($G(^ABMNINS(DUZ(2),ABMP("INS"),1,ABMP("VTYP"),11,ABMP("FSDT"),0)),U,2)>ABMP("SDT") Q
  1. ....S ABMFFLG=1
  1. ...D SETCAT^ABMMUFAC
  1. ...;Q:$D(^TMP($J,"ABM-MUVLST",ABMP("PVDFN"))) ;quit if this visit has already counted
  1. ...;S ^TMP($J,"ABM-MUVLST",ABMP("PVDFN"))="" ;add visit to list
  1. ...;start new abm*2.6*15 HEAT183309 Req#B
  1. ...S ABMDOSB=$P($G(^ABMDBILL(DUZ(2),ABMPBDFN,7)),U)
  1. ...S ABMDOSE=$P($G(^ABMDBILL(DUZ(2),ABMPBDFN,7)),U,2)
  1. ...S ABMBILLD=+$P($G(^ABMDBILL(DUZ(2),ABMPBDFN,2)),U)
  1. ...S ABMVLOC=$$GET1^DIQ(9002274.4,ABMPBDFN,".03","E")
  1. ...S ABMNDAYS=+$P($G(^ABMDBILL(DUZ(2),ABMPBDFN,6)),U,6)
  1. ...S ABMCDAYS=+$P($G(^ABMDBILL(DUZ(2),ABMPBDFN,7)),U,3)
  1. ...S:'ABMCDAYS ABMCDAYS=$P($G(^ABMDBILL(DUZ(2),ABMPBDFN,6)),U,9)
  1. ...S:'ABMCDAYS ABMCDAYS=1
  1. ...S ABMRT=$S(+$G(ABMP("PD"))'=0&(ABMPYD):"PD",1:"BLD")
  1. ...I "^S^B^"[("^"_ABMSUMDT_"^") D SUMMREC
  1. ...I "^D^B^"[("^"_ABMSUMDT_"^") D DETREC
  1. Q
  1. SUMMREC ;EP
  1. ;cnt # IP/OP discharges
  1. I $D(^TMP($J,"ABM-MUVLST",ABMP("PVDFN")))&(ABMITYP'="PRI/MCD") Q ;quit if this visit has already counted
  1. S ^TMP($J,"ABM-MUVLST",ABMP("PVDFN"))="" ;add visit to list
  1. ;
  1. S ^TMP($J,"ABM-MUFAC",ABMITYP,ABMP("RPT-CAT"))=+$G(^TMP($J,"ABM-MUFAC",ABMITYP,ABMP("RPT-CAT")))+1
  1. ;tot cov'd days
  1. S:(ABMP("RPT-CAT")="IP SB DISCHGS") ^TMP($J,"ABM-MUFAC",ABMITYP,"IP SB DAYS")=+$G(^TMP($J,"ABM-MUFAC",ABMITYP,"IP SB DAYS"))+ABMCDAYS
  1. S:(ABMP("RPT-CAT")="IP DISCHGS") ^TMP($J,"ABM-MUFAC",ABMITYP,"IP DAYS")=+$G(^TMP($J,"ABM-MUFAC",ABMITYP,"IP DAYS"))+ABMCDAYS
  1. S:(ABMP("RPT-CAT")="IP NB DISCHGS") ^TMP($J,"ABM-MUFAC",ABMITYP,"IP NB DAYS")=+$G(^TMP($J,"ABM-MUFAC",ABMITYP,"IP NB DAYS"))+ABMCDAYS
  1. S:(ABMP("RPT-CAT")="IP CHGS") ^TMP($J,"ABM-MUFAC",ABMITYP,"IP CHGS DAYS")=+$G(^TMP($J,"ABM-MUFAC",ABMITYP,"IP CHGS DAYS"))+ABMCDAYS
  1. Q
  1. DETREC ;EP
  1. I ABMITYP="PRI/MCD" K ^TMP($J,"ABM-MUVLST",ABMP("PVDFN"))
  1. I $D(^TMP($J,"ABM-MUVLST",ABMP("PVDFN"))) Q ;quit if this visit has already counted
  1. S ^TMP($J,"ABM-MUVLST",ABMP("PVDFN"))="" ;add visit to list
  1. ;
  1. S ABMP("INSN")=$P($G(^AUTNINS(ABMP("INS"),0)),U)
  1. S ABMREC=ABMDOSB_U_ABMDOSE_U_ABMBILLD_U_+$G(ABMP("PD"))_U_ABMCDAYS_U_ABMNDAYS_U_ABMVLOC_U_DUZ(2)_U_ABMPBDFN
  1. S ^TMP($J,"ABM-MUFAC","DETAIL",ABMITYP,ABMP("RPT-CAT"),ABMP("INSN")_"|"_ABMP("INS"),$S(+$G(ABMP("PVDFN")):ABMP("PVDFN"),1:ABMVDFN))=ABMREC
  1. Q
  1. INSTYP ;EP
  1. I "^R^MH^MD^"[("^"_ABMIT_"^") S ABMITYP="MEDICARE"
  1. I "^P^H^D^F^"[("^"_ABMIT_"^") S ABMITYP="PRIVATE"
  1. I ABMIT="D" S ABMITYP="MEDICAID"
  1. I ABMIT="K" S ABMITYP="KIDSCARE/CHIP"
  1. I ABMIT="V" S ABMITYP="VMBP"
  1. I "^W^C^N^I^T^G^FPL^MMC^MC^SEP^TSI^"[("^"_ABMIT_"^") S ABMITYP="OTHER"
  1. Q