- ABMDBDIC ; IHS/ASDST/DMJ - Bill Selection ;
- ;;2.6;IHS 3P BILLING SYSTEM;;NOV 12, 2009
- ;
- ;IHS/DSD/MRS - 5/21/1999 - NOIS QDA-599-130046 Patch 3 #1
- ; Added check for missing insurer data
- ;
- ;IHS/PIMC/JLG - 8/20/02 - V2.5 P2
- ; Modified so IQMG option would only look at one bill. Thanks to
- ; Jim Gray for the code.
- ;
- ; IHS/SD/SDR - v2.5 p11 - Adrian supplied the following changes
- ;
- ; IHS/SD/SDR - v2.5 p12 - Added code to look up by UFMS invoice number
- ; using x-ref UINV
- ;
- BILL ;EP - SELECT BILL
- K %P,DIC,ABMP("BDFN"),ABM
- S DIR("A")="Select BILL or PATIENT"
- S DIR("?")="Enter either the Bill Number or a Patient Identifier (Name, HRN, SSN, DOB)"
- W !
- S DIR(0)="FO" D ^DIR K DIR
- Q:$D(DIRUT)
- S ABM("INPUT")=Y
- I Y=" " D Q
- .S DIC="^ABMDBILL(DUZ(2),",DIC(0)="EMQ",X=Y
- .D ^DIC Q:+Y<0
- .S ABMP("BDFN")=+Y
- I ($D(^ABMDBILL(DUZ(2),"B",Y))&(Y'=+Y))!($D(^ABMDBILL(DUZ(2),"UINV",Y))) D
- .S X=Y
- .S DIC="^ABMDBILL(DUZ(2),",DIC(0)="EM" D ^DIC
- .I +Y>0 S ABMP("BDFN")=+Y
- I $G(ABMP("BDFN")) K ABM Q
- I Y=+Y,$D(^ABMDBILL(DUZ(2),"B",Y)) D
- .S X=Y
- .S DIC="^ABMDBILL(DUZ(2),",DIC(0)="EM" D ^DIC
- .I +Y>0 D
- ..S ABMP("BDFN")=+Y
- ..K DIR,DIE,DIC,X,Y,DA
- ..S DIR(0)="Y"
- ..S DIR("A")="Correct Bill",DIR("B")="YES" D ^DIR K DIR
- ..I Y'=1 K ABMP("BDFN")
- I $G(ABMP("BDFN")) K ABM Q
- S ABM("STATUS")=$P(^DD(9002274.4,.04,0),"^",3)
- NUM ;NUMBER LOOKUP
- S Y=ABM("INPUT")
- I +Y D
- .S J=+Y_" "
- .S ABM("CNT")=0
- .F S J=$O(^ABMDBILL(DUZ(2),"B",J)) Q:J'[+ABM("INPUT")!($G(ABMP("BDFN"))) D
- ..S I=$O(^ABMDBILL(DUZ(2),"B",J,0))
- ..S ABMP("PDFN")=$P(^ABMDBILL(DUZ(2),I,0),"^",5)
- ..D ID
- .D:(ABM("CNT")#5) SEL
- I $G(ABMP("BDFN")) K ABM Q
- PAT ;PATIENT LOOKUP
- S X=ABM("INPUT"),DIC="^AUPNPAT(",DIC(0)="EMQ",AUPNLK("ALL")=1
- D ^DIC
- I +Y<0 G BILL
- S ABMP("PDFN")=+Y,ABM("P0")=^DPT(ABMP("PDFN"),0)
- S $P(ABM("="),"=",80)=""
- D PAT^ABMDUTL(ABMP("PDFN"))
- S I="",ABM("CNT")=0 F S I=$O(^ABMDBILL(DUZ(2),"D",ABMP("PDFN"),I),-1) Q:'I!($G(ABMP("BDFN")))!($D(DIRUT)) D ID
- D:(ABM("CNT")#5) SEL
- I '$G(ABMP("BDFN")) G BILL
- K ABM Q
- ID ;BILL IDENTIFIERS
- I '(ABM("CNT")#5) D PAT^ABMDUTL(ABMP("PDFN"))
- S ABM("CNT")=ABM("CNT")+1
- S ABM("CNT",ABM("CNT"))=I
- W !!,"(",ABM("CNT"),")"
- S ABM("ZERO")=^ABMDBILL(DUZ(2),I,0) N J F J=1:1:12 S ABM(J)=$P(ABM("ZERO"),"^",J)
- S ABM(7,1)=$P($G(^ABMDBILL(DUZ(2),I,7)),"^",1),ABM(2,1)=$P($G(^(2)),"^",1)
- S ABM(4)=$P(ABM("STATUS"),ABM(4)_":",2),ABM(4)=$P(ABM(4),";",1)
- W ?5,"Bill# ",ABM(1)
- W ?20,$$SDT^ABMDUTL(ABM(7,1))
- ;Realignment of bill inquiry
- W ?32,$E($P($G(^ABMDVTYP(+ABM(7),0)),U),1,17)
- ;Realignment of bill inquiry
- W ?51,$E($P($G(^DIC(40.7,+ABM(10),0)),U),1,13)
- W ?67,$P($G(^AUTTLOC(+ABM(3),0)),"^",2)
- W !,?6,$P($G(^ABMDEXP(+ABM(6),0)),"^",1)
- ;realignment of Bill Inquiry
- W ?22,$E(ABM(4),1,15)
- W ?37,$P($G(^AUTNINS(+ABM(8),0)),"^",1)
- W ?70,$J($FN(ABM(2,1),",",2),10)
- I '(ABM("CNT")#5) D SEL
- Q
- SEL ;SELECT
- F W ! Q:$Y+4>IOSL
- S DIR(0)="NAO^1:"_ABM("CNT"),DIR("A")="Select 1 to "_ABM("CNT")_": " D ^DIR K DIR
- I Y S ABMP("BDFN")=ABM("CNT",Y)
- I Y="",'$D(DTOUT) K DIRUT
- Q
- ;
- BENT ;EP - for doing Bill File lookup with DIC variables
- K ABMP("BDFN")
- S AUPNLK("ALL")=1
- S DIC("W")="S ABM(0)=^(0),ABM(2)=+$G(^(2)),ABM(7)=$S(+$G(^(7)):^(7),1:+$G(^(6))) D DICW^ABMDBDIC"
- D ^DIC K DIC
- G XIT:X=""!$D(DUOUT)!$D(DTOUT)
- I X="?" W !!,"Enter either the Bill Number or a Patient Identifier (Name, HRN, SSN, DOB)"
- G BENT:+Y<1 S ABMP("BDFN")=+Y
- G XIT
- ;
- DICW ;EP - for displaying bill identifiers
- I $G(DZ)["?",$P(ABM(0),U,5),$D(^DPT($P(ABM(0),U,5),0)) S ABMDPT=^(0) D
- .W ?12,$P(ABMDPT,U)
- .W ?46,$P(ABMDPT,U,2)," "
- .W $$HDT^ABMDUTL($P(ABMDPT,U,3))
- .W " ",$P(ABMDPT,U,9)
- I I $G(DUZ(2)),$D(^AUPNPAT($P(ABM(0),U,5),41,DUZ(2),0)) W ?68,$P($G(^AUTTLOC(DUZ(2),0)),U,7)," ",$P(^AUPNPAT($P(ABM(0),U,5),41,DUZ(2),0),U,2)
- I $G(X)'=$P(ABM(0),U,5)!($G(DZ)["?") W !
- W ?17,"Visit: ",$$HDT^ABMDUTL(ABM(7))," "
- I $P(ABM(0),U,7) W $E($P($G(^ABMDVTYP($P(ABM(0),U,7),0)),U),1,14)
- I $P(ABM(0),U,10),$P(ABM(0),U,3) W ?49,$E($P($G(^DIC(40.7,$P(ABM(0),U,10),0)),U),1,17),?68,$E($P($G(^AUTTLOC($P(ABM(0),U,3),0)),U,2),1,12)
- I $P(ABM(0),U,8) W !?20,"Bill: ",$P(^AUTNINS($P(ABM(0),U,8),0),U)
- I $P(ABM(0),U,6) W ?57,$P($G(^ABMDEXP($P(ABM(0),U,6),0)),U)
- W ?68,$J($FN(ABM(2),",",2),10)
- S DIW=1
- I $G(DZ)["?" W !
- K ABM(0),ABM(7)
- Q
- ;
- XIT K ABM
- Q
- ;
- MULT ;EP for Selecting Multiple Bills
- K DIC S ABM("C")=0,DIC="^ABMDBILL(DUZ(2),",DIC(0)="QEAM" W !
- F ABM=1:1 W ! D Q:X=""!$D(DUOUT)!$D(DTOUT)
- SELO .S ABM("E")=$E(ABM,$L(ABM)),DIC("A")="Select "_ABM_$S(ABM>3&(ABM<21):"th",ABM("E")=1:"st",ABM("E")=2:"nd",ABM("E")=3:"rd",1:"th")_" BILL: ",DIC(0)="QEAM" D ^DIC
- .Q:X=""!$D(DUOUT)!$D(DTOUT)
- .I +Y<1 G SELO
- .S ABMM(+Y)=""
- K DIC
- G XIT
- ABMDBDIC ; IHS/ASDST/DMJ - Bill Selection ;
- +1 ;;2.6;IHS 3P BILLING SYSTEM;;NOV 12, 2009
- +2 ;
- +3 ;IHS/DSD/MRS - 5/21/1999 - NOIS QDA-599-130046 Patch 3 #1
- +4 ; Added check for missing insurer data
- +5 ;
- +6 ;IHS/PIMC/JLG - 8/20/02 - V2.5 P2
- +7 ; Modified so IQMG option would only look at one bill. Thanks to
- +8 ; Jim Gray for the code.
- +9 ;
- +10 ; IHS/SD/SDR - v2.5 p11 - Adrian supplied the following changes
- +11 ;
- +12 ; IHS/SD/SDR - v2.5 p12 - Added code to look up by UFMS invoice number
- +13 ; using x-ref UINV
- +14 ;
- BILL ;EP - SELECT BILL
- +1 KILL %P,DIC,ABMP("BDFN"),ABM
- +2 SET DIR("A")="Select BILL or PATIENT"
- +3 SET DIR("?")="Enter either the Bill Number or a Patient Identifier (Name, HRN, SSN, DOB)"
- +4 WRITE !
- +5 SET DIR(0)="FO"
- DO ^DIR
- KILL DIR
- +6 IF $DATA(DIRUT)
- QUIT
- +7 SET ABM("INPUT")=Y
- +8 IF Y=" "
- Begin DoDot:1
- +9 SET DIC="^ABMDBILL(DUZ(2),"
- SET DIC(0)="EMQ"
- SET X=Y
- +10 DO ^DIC
- IF +Y<0
- QUIT
- +11 SET ABMP("BDFN")=+Y
- End DoDot:1
- QUIT
- +12 IF ($DATA(^ABMDBILL(DUZ(2),"B",Y))&(Y'=+Y))!($DATA(^ABMDBILL(DUZ(2),"UINV",Y)))
- Begin DoDot:1
- +13 SET X=Y
- +14 SET DIC="^ABMDBILL(DUZ(2),"
- SET DIC(0)="EM"
- DO ^DIC
- +15 IF +Y>0
- SET ABMP("BDFN")=+Y
- End DoDot:1
- +16 IF $GET(ABMP("BDFN"))
- KILL ABM
- QUIT
- +17 IF Y=+Y
- IF $DATA(^ABMDBILL(DUZ(2),"B",Y))
- Begin DoDot:1
- +18 SET X=Y
- +19 SET DIC="^ABMDBILL(DUZ(2),"
- SET DIC(0)="EM"
- DO ^DIC
- +20 IF +Y>0
- Begin DoDot:2
- +21 SET ABMP("BDFN")=+Y
- +22 KILL DIR,DIE,DIC,X,Y,DA
- +23 SET DIR(0)="Y"
- +24 SET DIR("A")="Correct Bill"
- SET DIR("B")="YES"
- DO ^DIR
- KILL DIR
- +25 IF Y'=1
- KILL ABMP("BDFN")
- End DoDot:2
- End DoDot:1
- +26 IF $GET(ABMP("BDFN"))
- KILL ABM
- QUIT
- +27 SET ABM("STATUS")=$PIECE(^DD(9002274.4,.04,0),"^",3)
- NUM ;NUMBER LOOKUP
- +1 SET Y=ABM("INPUT")
- +2 IF +Y
- Begin DoDot:1
- +3 SET J=+Y_" "
- +4 SET ABM("CNT")=0
- +5 FOR
- SET J=$ORDER(^ABMDBILL(DUZ(2),"B",J))
- IF J'[+ABM("INPUT")!($GET(ABMP("BDFN")))
- QUIT
- Begin DoDot:2
- +6 SET I=$ORDER(^ABMDBILL(DUZ(2),"B",J,0))
- +7 SET ABMP("PDFN")=$PIECE(^ABMDBILL(DUZ(2),I,0),"^",5)
- +8 DO ID
- End DoDot:2
- +9 IF (ABM("CNT")#5)
- DO SEL
- End DoDot:1
- +10 IF $GET(ABMP("BDFN"))
- KILL ABM
- QUIT
- PAT ;PATIENT LOOKUP
- +1 SET X=ABM("INPUT")
- SET DIC="^AUPNPAT("
- SET DIC(0)="EMQ"
- SET AUPNLK("ALL")=1
- +2 DO ^DIC
- +3 IF +Y<0
- GOTO BILL
- +4 SET ABMP("PDFN")=+Y
- SET ABM("P0")=^DPT(ABMP("PDFN"),0)
- +5 SET $PIECE(ABM("="),"=",80)=""
- +6 DO PAT^ABMDUTL(ABMP("PDFN"))
- +7 SET I=""
- SET ABM("CNT")=0
- FOR
- SET I=$ORDER(^ABMDBILL(DUZ(2),"D",ABMP("PDFN"),I),-1)
- IF 'I!($GET(ABMP("BDFN")))!($DATA(DIRUT))
- QUIT
- DO ID
- +8 IF (ABM("CNT")#5)
- DO SEL
- +9 IF '$GET(ABMP("BDFN"))
- GOTO BILL
- +10 KILL ABM
- QUIT
- ID ;BILL IDENTIFIERS
- +1 IF '(ABM("CNT")#5)
- DO PAT^ABMDUTL(ABMP("PDFN"))
- +2 SET ABM("CNT")=ABM("CNT")+1
- +3 SET ABM("CNT",ABM("CNT"))=I
- +4 WRITE !!,"(",ABM("CNT"),")"
- +5 SET ABM("ZERO")=^ABMDBILL(DUZ(2),I,0)
- NEW J
- FOR J=1:1:12
- SET ABM(J)=$PIECE(ABM("ZERO"),"^",J)
- +6 SET ABM(7,1)=$PIECE($GET(^ABMDBILL(DUZ(2),I,7)),"^",1)
- SET ABM(2,1)=$PIECE($GET(^(2)),"^",1)
- +7 SET ABM(4)=$PIECE(ABM("STATUS"),ABM(4)_":",2)
- SET ABM(4)=$PIECE(ABM(4),";",1)
- +8 WRITE ?5,"Bill# ",ABM(1)
- +9 WRITE ?20,$$SDT^ABMDUTL(ABM(7,1))
- +10 ;Realignment of bill inquiry
- +11 WRITE ?32,$EXTRACT($PIECE($GET(^ABMDVTYP(+ABM(7),0)),U),1,17)
- +12 ;Realignment of bill inquiry
- +13 WRITE ?51,$EXTRACT($PIECE($GET(^DIC(40.7,+ABM(10),0)),U),1,13)
- +14 WRITE ?67,$PIECE($GET(^AUTTLOC(+ABM(3),0)),"^",2)
- +15 WRITE !,?6,$PIECE($GET(^ABMDEXP(+ABM(6),0)),"^",1)
- +16 ;realignment of Bill Inquiry
- +17 WRITE ?22,$EXTRACT(ABM(4),1,15)
- +18 WRITE ?37,$PIECE($GET(^AUTNINS(+ABM(8),0)),"^",1)
- +19 WRITE ?70,$JUSTIFY($FNUMBER(ABM(2,1),",",2),10)
- +20 IF '(ABM("CNT")#5)
- DO SEL
- +21 QUIT
- SEL ;SELECT
- +1 FOR
- WRITE !
- IF $Y+4>IOSL
- QUIT
- +2 SET DIR(0)="NAO^1:"_ABM("CNT")
- SET DIR("A")="Select 1 to "_ABM("CNT")_": "
- DO ^DIR
- KILL DIR
- +3 IF Y
- SET ABMP("BDFN")=ABM("CNT",Y)
- +4 IF Y=""
- IF '$DATA(DTOUT)
- KILL DIRUT
- +5 QUIT
- +6 ;
- BENT ;EP - for doing Bill File lookup with DIC variables
- +1 KILL ABMP("BDFN")
- +2 SET AUPNLK("ALL")=1
- +3 SET DIC("W")="S ABM(0)=^(0),ABM(2)=+$G(^(2)),ABM(7)=$S(+$G(^(7)):^(7),1:+$G(^(6))) D DICW^ABMDBDIC"
- +4 DO ^DIC
- KILL DIC
- +5 IF X=""!$DATA(DUOUT)!$DATA(DTOUT)
- GOTO XIT
- +6 IF X="?"
- WRITE !!,"Enter either the Bill Number or a Patient Identifier (Name, HRN, SSN, DOB)"
- +7 IF +Y<1
- GOTO BENT
- SET ABMP("BDFN")=+Y
- +8 GOTO XIT
- +9 ;
- DICW ;EP - for displaying bill identifiers
- +1 IF $GET(DZ)["?"
- IF $PIECE(ABM(0),U,5)
- IF $DATA(^DPT($PIECE(ABM(0),U,5),0))
- SET ABMDPT=^(0)
- Begin DoDot:1
- +2 WRITE ?12,$PIECE(ABMDPT,U)
- +3 WRITE ?46,$PIECE(ABMDPT,U,2)," "
- +4 WRITE $$HDT^ABMDUTL($PIECE(ABMDPT,U,3))
- +5 WRITE " ",$PIECE(ABMDPT,U,9)
- End DoDot:1
- +6 IF $TEST
- IF $GET(DUZ(2))
- IF $DATA(^AUPNPAT($PIECE(ABM(0),U,5),41,DUZ(2),0))
- WRITE ?68,$PIECE($GET(^AUTTLOC(DUZ(2),0)),U,7)," ",$PIECE(^AUPNPAT($PIECE(ABM(0),U,5),41,DUZ(2),0),U,2)
- +7 IF $GET(X)'=$PIECE(ABM(0),U,5)!($GET(DZ)["?")
- WRITE !
- +8 WRITE ?17,"Visit: ",$$HDT^ABMDUTL(ABM(7))," "
- +9 IF $PIECE(ABM(0),U,7)
- WRITE $EXTRACT($PIECE($GET(^ABMDVTYP($PIECE(ABM(0),U,7),0)),U),1,14)
- +10 IF $PIECE(ABM(0),U,10)
- IF $PIECE(ABM(0),U,3)
- WRITE ?49,$EXTRACT($PIECE($GET(^DIC(40.7,$PIECE(ABM(0),U,10),0)),U),1,17),?68,$EXTRACT($PIECE($GET(^AUTTLOC($PIECE(ABM(0),U,3),0)),U,2),1,12)
- +11 IF $PIECE(ABM(0),U,8)
- WRITE !?20,"Bill: ",$PIECE(^AUTNINS($PIECE(ABM(0),U,8),0),U)
- +12 IF $PIECE(ABM(0),U,6)
- WRITE ?57,$PIECE($GET(^ABMDEXP($PIECE(ABM(0),U,6),0)),U)
- +13 WRITE ?68,$JUSTIFY($FNUMBER(ABM(2),",",2),10)
- +14 SET DIW=1
- +15 IF $GET(DZ)["?"
- WRITE !
- +16 KILL ABM(0),ABM(7)
- +17 QUIT
- +18 ;
- XIT KILL ABM
- +1 QUIT
- +2 ;
- MULT ;EP for Selecting Multiple Bills
- +1 KILL DIC
- SET ABM("C")=0
- SET DIC="^ABMDBILL(DUZ(2),"
- SET DIC(0)="QEAM"
- WRITE !
- +2 FOR ABM=1:1
- WRITE !
- Begin DoDot:1
- SELO SET ABM("E")=$EXTRACT(ABM,$LENGTH(ABM))
- SET DIC("A")="Select "_ABM_$SELECT(ABM>3&(ABM<21):"th",ABM("E")=1:"st",ABM("E")=2:"nd",ABM("E")=3:"rd",1:"th")_" BILL: "
- SET DIC(0)="QEAM"
- DO ^DIC
- +1 IF X=""!$DATA(DUOUT)!$DATA(DTOUT)
- QUIT
- +2 IF +Y<1
- GOTO SELO
- +3 SET ABMM(+Y)=""
- End DoDot:1
- IF X=""!$DATA(DUOUT)!$DATA(DTOUT)
- QUIT
- +4 KILL DIC
- +5 GOTO XIT