ABMM2PV8 ;IHS/SD/SDR - MU Patient Volume EP Report ;
 ;;2.6;IHS 3P BILLING SYSTEM;**12,15**;NOV 12, 2009;Build 251
 ;IHS/SD/SDR - 2.6*15 - HEAT161159 - Made change to correct duplicates; also made changes to resolve summary not reconciling to pt list
 ;IHS/SD/SDR - 2.6*15 - HEAT183289 - Added code for Tribal self-insured; will look if patient has only one insurer and that insurer is defined
 ;   as tribal self-insured in 3P Insurer file
 ;
ELIG ;EP
 S ABMICNT=0  ;abm*2.6*15 HEAT183289
 ;mcd
 K ABMK,ABML
 K ABMILST,ABMP("STATE")  ;abm*2.6*15 HEAT161159
 K ABMTSI  ;abm*2.6*15 HEAT183289
 K ABMP("SAVE")
 S ABMP("MDFN")=""
 F  S ABMP("MDFN")=$O(^AUPNMCD("B",ABMPT,ABMP("MDFN"))) Q:'ABMP("MDFN")  D
 .Q:$P($G(^AUPNMCD(ABMP("MDFN"),0)),U)=""
 .Q:$P($G(^AUPNMCD(ABMP("MDFN"),0)),U,2)=""
 .Q:$P($G(^AUPNMCD(ABMP("MDFN"),0)),U,4)=""
 .S ABM("INS")=+$P($G(^AUPNMCD(ABMP("MDFN"),0)),U,10)
 .I 'ABM("INS") S ABM("INS")=$P($G(^AUPNMCD(ABMP("MDFN"),0)),U,2)
 .S ABM("ITYP")=$$GET1^DIQ(9999999.181,$$GET1^DIQ(9999999.18,ABM("INS"),".211","I"),1,"I")
 .;S ABMGRP=$S(ABM("ITYP")="D":"MCD",ABM("ITYP")="K":"CHIP",(ABM("ITYP")="P"&($D(ABMI("INS",ABM("INS"))))):"CHIP",1:"OTHR")
 .S ABMGRP=$S(ABM("ITYP")="D":"MCD",($D(ABMI("INS",ABM("INS")))):"CHIP",1:"OTHR")
 .S ABMP("DDFN")=0
 .F  S ABMP("DDFN")=$O(^AUPNMCD(ABMP("MDFN"),11,ABMP("DDFN"))) Q:'ABMP("DDFN")  D
 ..S ABMP("SDT")=+$P($G(^AUPNMCD(ABMP("MDFN"),11,ABMP("DDFN"),0)),U)
 ..S ABMP("EDT")=+$P($G(^AUPNMCD(ABMP("MDFN"),11,ABMP("DDFN"),0)),U,2)
 ..D ENROLL2
 I +$G(ABMP("SAVE"))'=0 S ABMP("MDFN")=ABMP("SAVE")  ;abm*2.6*15 HEAT164125
 ;pi
 S ABMI=0
 F  S ABMI=$O(^AUPNPRVT(ABMPT,11,ABMI)) Q:'ABMI  D
 .S ABM("INS")=+$P($G(^AUPNPRVT(ABMPT,11,ABMI,0)),U)
 .S ABM("ITYP")=$$GET1^DIQ(9999999.181,$$GET1^DIQ(9999999.18,ABM("INS"),".211","I"),1,"I")
 .;S ABMGRP=$S(ABM("ITYP")="D":"MCD",ABM("ITYP")="K":"CHIP",(ABM("ITYP")="P"&($D(ABMI("INS",ABM("INS"))))):"CHIP",1:"OTHR")
 .S ABMGRP=$S(ABM("ITYP")="D":"MCD",($D(ABMI("INS",ABM("INS")))):"CHIP",1:"OTHR")
 .S ABMP("SDT")=+$P($G(^AUPNPRVT(ABMPT,11,ABMI,0)),U,6)
 .S ABMP("EDT")=+$P($G(^AUPNPRVT(ABMPT,11,ABMI,0)),U,7)
 .D ENROLL2
 ;mcr
 S ABM("INS")=+$P($G(^AUPNMCR(ABMPT,0)),U,2)
 S ABM("ITYP")=$$GET1^DIQ(9999999.181,$$GET1^DIQ(9999999.18,ABM("INS"),".211","I"),1,"I")
 ;S ABMGRP=$S(ABM("ITYP")="D":"MCD",ABM("ITYP")="K":"CHIP",(ABM("ITYP")="P"&($D(ABMI("INS",ABM("INS"))))):"CHIP",1:"OTHR")
 S ABMGRP=$S(ABM("ITYP")="D":"MCD",($D(ABMI("INS",ABM("INS")))):"CHIP",1:"OTHR")
 S ABMI=0
 F  S ABMI=$O(^AUPNMCR(ABMPT,11,ABMI)) Q:'ABMI  D
 .S ABMP("SDT")=+$P($G(^AUPNMCR(ABMPT,11,ABMI,0)),U)
 .S ABMP("EDT")=+$P($G(^AUPNMCR(ABMPT,11,ABMI,0)),U,2)
 .D ENROLL2
 ;rr
 S ABM("INS")=+$P($G(^AUPNRRE(ABMPT,0)),U,2)
 S ABM("ITYP")=$$GET1^DIQ(9999999.181,$$GET1^DIQ(9999999.18,ABM("INS"),".211","I"),1,"I")
 ;S ABMGRP=$S(ABM("ITYP")="D":"MCD",ABM("ITYP")="K":"CHIP",(ABM("ITYP")="P"&($D(ABMI("INS",ABM("INS"))))):"CHIP",1:"OTHR")
 S ABMGRP=$S(ABM("ITYP")="D":"MCD",($D(ABMI("INS",ABM("INS")))):"CHIP",1:"OTHR")
 S ABMI=0
 F  S ABMI=$O(^AUPNRRE(ABMPT,11,ABMI)) Q:'ABMI  D
 .S ABMP("SDT")=+$P($G(^AUPNRRE(ABMPT,11,ABMI,0)),U)
 .S ABMP("EDT")=+$P($G(^AUPNRRE(ABMPT,11,ABMI,0)),U,2)
 .D ENROLL2
 Q
ENROLL2 ;EP
 S:($G(ABMTSI)="") ABMTSI=$P($G(^ABMNINS(ABMVLOC,ABM("INS"),0)),U,11)  ;tribal self-insured flag  ;abm*2.6*15 HEAT183289
 I ABM("ITYP")="I"!(ABM("ITYP")="N") Q
 I $P(ABMP("VDT"),".")<ABMP("SDT") Q  ;vst before start dt
 I ABMP("EDT")'=0,($P(ABMP("VDT"),".")>ABMP("EDT")) Q  ;vst after end dt
 S ABML(ABMGRP)=1
 S ABMK($S(($D(ABMI("INS",ABM("INS")))):"K",1:ABM("ITYP")))=1
 ;I ABMGRP="MCD" S ABMP("SAVE")=ABMP("MDFN")  ;abm*2.6*15 HEAT164125
 ;start new abm*2.6*15 HEAT164125
 I ABMGRP="CHIP",+$G(ABMP("SAVE"))'=0 K ABMP("SAVE"),ABMILST("STATE")
 I ABMGRP="MCD" D
 .I +$G(ABMP("SAVE"))'=0 K ABMP("SAVE"),ABMILST("STATE")
 S ABMP("SAVE")=ABMP("MDFN"),ABMILST("STATE",ABM("INS"))=$$GET1^DIQ(5,$$GET1^DIQ(9000004,ABMP("MDFN"),".04","I"),1,"E")
 ;end new HEAT164125
 S ABMILST(ABM("INS"))=ABM("ITYP")  ;abm*2.6*15 HEAT161159 - to track pt's insurers
 S ABMICNT=+$G(ABMICNT)+1  ;abm*2.6*15 HEAT183289
 Q
ABMM2PV8  ;IHS/SD/SDR - MU Patient Volume EP Report ;
 +1       ;;2.6;IHS 3P BILLING SYSTEM;**12,15**;NOV 12, 2009;Build 251
 +2       ;IHS/SD/SDR - 2.6*15 - HEAT161159 - Made change to correct duplicates; also made changes to resolve summary not reconciling to pt list
 +3       ;IHS/SD/SDR - 2.6*15 - HEAT183289 - Added code for Tribal self-insured; will look if patient has only one insurer and that insurer is defined
 +4       ;   as tribal self-insured in 3P Insurer file
 +5       ;
ELIG      ;EP
 +1       ;abm*2.6*15 HEAT183289
           SET ABMICNT=0
 +2       ;mcd
 +3        KILL ABMK,ABML
 +4       ;abm*2.6*15 HEAT161159
           KILL ABMILST,ABMP("STATE")
 +5       ;abm*2.6*15 HEAT183289
           KILL ABMTSI
 +6        KILL ABMP("SAVE")
 +7        SET ABMP("MDFN")=""
 +8        FOR 
               SET ABMP("MDFN")=$ORDER(^AUPNMCD("B",ABMPT,ABMP("MDFN")))
               IF 'ABMP("MDFN")
                   QUIT 
               Begin DoDot:1
 +9                IF $PIECE($GET(^AUPNMCD(ABMP("MDFN"),0)),U)=""
                       QUIT 
 +10               IF $PIECE($GET(^AUPNMCD(ABMP("MDFN"),0)),U,2)=""
                       QUIT 
 +11               IF $PIECE($GET(^AUPNMCD(ABMP("MDFN"),0)),U,4)=""
                       QUIT 
 +12               SET ABM("INS")=+$PIECE($GET(^AUPNMCD(ABMP("MDFN"),0)),U,10)
 +13               IF 'ABM("INS")
                       SET ABM("INS")=$PIECE($GET(^AUPNMCD(ABMP("MDFN"),0)),U,2)
 +14               SET ABM("ITYP")=$$GET1^DIQ(9999999.181,$$GET1^DIQ(9999999.18,ABM("INS"),".211","I"),1,"I")
 +15      ;S ABMGRP=$S(ABM("ITYP")="D":"MCD",ABM("ITYP")="K":"CHIP",(ABM("ITYP")="P"&($D(ABMI("INS",ABM("INS"))))):"CHIP",1:"OTHR")
 +16               SET ABMGRP=$SELECT(ABM("ITYP")="D":"MCD",($DATA(ABMI("INS",ABM("INS")))):"CHIP",1:"OTHR")
 +17               SET ABMP("DDFN")=0
 +18               FOR 
                       SET ABMP("DDFN")=$ORDER(^AUPNMCD(ABMP("MDFN"),11,ABMP("DDFN")))
                       IF 'ABMP("DDFN")
                           QUIT 
                       Begin DoDot:2
 +19                       SET ABMP("SDT")=+$PIECE($GET(^AUPNMCD(ABMP("MDFN"),11,ABMP("DDFN"),0)),U)
 +20                       SET ABMP("EDT")=+$PIECE($GET(^AUPNMCD(ABMP("MDFN"),11,ABMP("DDFN"),0)),U,2)
 +21                       DO ENROLL2
                       End DoDot:2
               End DoDot:1
 +22      ;abm*2.6*15 HEAT164125
           IF +$GET(ABMP("SAVE"))'=0
               SET ABMP("MDFN")=ABMP("SAVE")
 +23      ;pi
 +24       SET ABMI=0
 +25       FOR 
               SET ABMI=$ORDER(^AUPNPRVT(ABMPT,11,ABMI))
               IF 'ABMI
                   QUIT 
               Begin DoDot:1
 +26               SET ABM("INS")=+$PIECE($GET(^AUPNPRVT(ABMPT,11,ABMI,0)),U)
 +27               SET ABM("ITYP")=$$GET1^DIQ(9999999.181,$$GET1^DIQ(9999999.18,ABM("INS"),".211","I"),1,"I")
 +28      ;S ABMGRP=$S(ABM("ITYP")="D":"MCD",ABM("ITYP")="K":"CHIP",(ABM("ITYP")="P"&($D(ABMI("INS",ABM("INS"))))):"CHIP",1:"OTHR")
 +29               SET ABMGRP=$SELECT(ABM("ITYP")="D":"MCD",($DATA(ABMI("INS",ABM("INS")))):"CHIP",1:"OTHR")
 +30               SET ABMP("SDT")=+$PIECE($GET(^AUPNPRVT(ABMPT,11,ABMI,0)),U,6)
 +31               SET ABMP("EDT")=+$PIECE($GET(^AUPNPRVT(ABMPT,11,ABMI,0)),U,7)
 +32               DO ENROLL2
               End DoDot:1
 +33      ;mcr
 +34       SET ABM("INS")=+$PIECE($GET(^AUPNMCR(ABMPT,0)),U,2)
 +35       SET ABM("ITYP")=$$GET1^DIQ(9999999.181,$$GET1^DIQ(9999999.18,ABM("INS"),".211","I"),1,"I")
 +36      ;S ABMGRP=$S(ABM("ITYP")="D":"MCD",ABM("ITYP")="K":"CHIP",(ABM("ITYP")="P"&($D(ABMI("INS",ABM("INS"))))):"CHIP",1:"OTHR")
 +37       SET ABMGRP=$SELECT(ABM("ITYP")="D":"MCD",($DATA(ABMI("INS",ABM("INS")))):"CHIP",1:"OTHR")
 +38       SET ABMI=0
 +39       FOR 
               SET ABMI=$ORDER(^AUPNMCR(ABMPT,11,ABMI))
               IF 'ABMI
                   QUIT 
               Begin DoDot:1
 +40               SET ABMP("SDT")=+$PIECE($GET(^AUPNMCR(ABMPT,11,ABMI,0)),U)
 +41               SET ABMP("EDT")=+$PIECE($GET(^AUPNMCR(ABMPT,11,ABMI,0)),U,2)
 +42               DO ENROLL2
               End DoDot:1
 +43      ;rr
 +44       SET ABM("INS")=+$PIECE($GET(^AUPNRRE(ABMPT,0)),U,2)
 +45       SET ABM("ITYP")=$$GET1^DIQ(9999999.181,$$GET1^DIQ(9999999.18,ABM("INS"),".211","I"),1,"I")
 +46      ;S ABMGRP=$S(ABM("ITYP")="D":"MCD",ABM("ITYP")="K":"CHIP",(ABM("ITYP")="P"&($D(ABMI("INS",ABM("INS"))))):"CHIP",1:"OTHR")
 +47       SET ABMGRP=$SELECT(ABM("ITYP")="D":"MCD",($DATA(ABMI("INS",ABM("INS")))):"CHIP",1:"OTHR")
 +48       SET ABMI=0
 +49       FOR 
               SET ABMI=$ORDER(^AUPNRRE(ABMPT,11,ABMI))
               IF 'ABMI
                   QUIT 
               Begin DoDot:1
 +50               SET ABMP("SDT")=+$PIECE($GET(^AUPNRRE(ABMPT,11,ABMI,0)),U)
 +51               SET ABMP("EDT")=+$PIECE($GET(^AUPNRRE(ABMPT,11,ABMI,0)),U,2)
 +52               DO ENROLL2
               End DoDot:1
 +53       QUIT 
ENROLL2   ;EP
 +1       ;tribal self-insured flag  ;abm*2.6*15 HEAT183289
           IF ($GET(ABMTSI)="")
               SET ABMTSI=$PIECE($GET(^ABMNINS(ABMVLOC,ABM("INS"),0)),U,11)
 +2        IF ABM("ITYP")="I"!(ABM("ITYP")="N")
               QUIT 
 +3       ;vst before start dt
           IF $PIECE(ABMP("VDT"),".")<ABMP("SDT")
               QUIT 
 +4       ;vst after end dt
           IF ABMP("EDT")'=0
               IF ($PIECE(ABMP("VDT"),".")>ABMP("EDT"))
                   QUIT 
 +5        SET ABML(ABMGRP)=1
 +6        SET ABMK($SELECT(($DATA(ABMI("INS",ABM("INS")))):"K",1:ABM("ITYP")))=1
 +7       ;I ABMGRP="MCD" S ABMP("SAVE")=ABMP("MDFN")  ;abm*2.6*15 HEAT164125
 +8       ;start new abm*2.6*15 HEAT164125
 +9        IF ABMGRP="CHIP"
               IF +$GET(ABMP("SAVE"))'=0
                   KILL ABMP("SAVE"),ABMILST("STATE")
 +10       IF ABMGRP="MCD"
               Begin DoDot:1
 +11               IF +$GET(ABMP("SAVE"))'=0
                       KILL ABMP("SAVE"),ABMILST("STATE")
               End DoDot:1
 +12       SET ABMP("SAVE")=ABMP("MDFN")
           SET ABMILST("STATE",ABM("INS"))=$$GET1^DIQ(5,$$GET1^DIQ(9000004,ABMP("MDFN"),".04","I"),1,"E")
 +13      ;end new HEAT164125
 +14      ;abm*2.6*15 HEAT161159 - to track pt's insurers
           SET ABMILST(ABM("INS"))=ABM("ITYP")
 +15      ;abm*2.6*15 HEAT183289
           SET ABMICNT=+$GET(ABMICNT)+1
 +16       QUIT