- IBTRHRC ;ALB/JWS - CLAIMS TRACKING 278 CERTIFICATION REPORT ;24-AUG-2015
- ;;2.0;INTEGRATED BILLING;**517**;21-MAR-94;Build 240
- ;;Per VA Directive 6402, this routine should not be modified.
- ;
- % ;
- ;
- ; FILTERS array is built
- ; FILTERS(0)[1] = 1 if report by Payer (Insurance)
- ; 2 if report by Staff
- ; 3 if report by Patient
- ; 4 if report by Date
- ; FILTERS(0)[2] = 0 (or null) if All Payer's, 1 if selected payers
- ; FILTERS(0)[3] = 0 (or null) if All staff, 1 if selected staff
- ; FILTERS(0)[4] = 0 (or null) if All Patients, 1 if selected patients
- ; FILTERS(0)[5] = 0 (No) to display decision reason code, 1 (Yes)
- ; FILTERS(0)[6] = sort, 1 = name, 2 = date
- ; FILTERS(0)[7] = 0 (No) to total by Date, 1 (Yes)
- ; FILTERS(1,payer name) = ien
- ; FILTERS(2,staff name) = ien
- ; FILTERS(3,patient name) = ien
- ; FILTERS(4)[1] = from date
- ; FILTERS(4)[2] = through date
- N DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y,RPTDATE,IBQUIT,FILTERS,OK
- I '$D(DT) D DT^DICRW
- W !!,"278 Certification Report"
- ; selection filter
- S DIR(0)="S^1:Report by Payer;2:Report by Staff;3:Report by Patient;4:Report by Date Range^I '$F("",1,2,3,4"",X) K X"
- S DIR("A")="Select the type of report to generate"
- S DIR("L",1)="Select one of the following:"
- S DIR("L",2)=""
- S DIR("L",3)="1 Report by Payer"
- S DIR("L",4)="2 Report by Staff"
- S DIR("L",5)="3 Report by Patient"
- S DIR("L",6)="4 Report by Date Range"
- S DIR("?",1)="Select how you wish to select the entries to display on the report."
- S DIR("?",2)=""
- S DIR("?",3)="1 will allow you to select one or more Payers to report on."
- S DIR("?",4)="2 will allow you to select one or more Staff members to report on."
- S DIR("?",5)="3 will allow you to select one or more Patients to report on."
- S DIR("?")="4 will allow you to select a Date Range of 278 transactions to report on."
- W ! D ^DIR K DIR
- I $G(DIRUT) Q
- S FILTERS(0)=Y
- I Y=1 D PAY G 1
- I Y=2 D STAFF G 1
- I Y=4 G 1
- I Y=3 D PAT
- ;
- 1 ;
- S RPTDATE=$$FMDATES("") I RPTDATE="" Q
- S FILTERS(4)=RPTDATE
- S DIR(0)="Y",DIR("A")="Include Autho/Review Decision Code",DIR("B")="NO"
- S DIR("?",1)=" Enter: 'Y' - to include Authorization/Review Decision Reason Codes on report."
- S DIR("?",2)=" 'N' - to exclude Authorization/Review Decision Reason Codes on report."
- S DIR("?")=" '^' - to exit this report."
- D ^DIR K DIR
- I $G(DIRUT) Q
- S $P(FILTERS(0),"^",5)=+Y
- I $P(FILTERS(0),"^")=4 S $P(FILTERS(0),"^",6)=2 G 4
- S DIR(0)="Y",DIR("A")="Total by Date",DIR("B")="NO"
- S DIR("?",1)=" Enter: 'Y' - to include totals for each date on report."
- S DIR("?",2)=" 'N' - to NOT include totals for each date on report."
- S DIR("?")=" '^' - to exit this report."
- D ^DIR K DIR
- I $G(DIRUT) Q
- S $P(FILTERS(0),"^",7)=+Y
- I 'Y S $P(FILTERS(0),"^",6)=1 G 4
- I $P(FILTERS(0),"^")=2 G 2
- I $P(FILTERS(0),"^")=3 G 3
- S OK=1
- S X=$O(FILTERS(1,"")) I X,$O(FILTERS(1,X))="" S OK=0,$P(FILTERS(0),"^",6)=2
- I OK D I $G(DIRUT) Q
- . S DIR(0)="S^1:Payer Name;2:Date^I '$F("",1,2"",X) K X"
- . S DIR("A")="Select the Primary Sort"
- . S DIR("L",1)="Select one of the following:"
- . S DIR("L",2)=""
- . S DIR("L",3)="1 Payer Name"
- . S DIR("L",4)="2 Date"
- . S DIR("?",1)="Select how you wish to sort the entries on this report."
- . S DIR("?",2)=""
- . S DIR("?",3)="1 will sort the entries by Payer Name."
- . S DIR("?")="2 will sort the entries by 278 Transaction Date."
- . W ! D ^DIR K DIR
- . I $G(DIRUT) Q
- . S $P(FILTERS(0),"^",6)=Y
- . Q
- G 4
- ;
- 2 ;
- S OK=1,X=$P(FILTERS(0),"^",3)
- I X S X=$O(FILTERS(2,"")) I X,$O(FILTERS(2,X))="" S OK=0,$P(FILTERS(0),"^",6)=2
- I OK D I $G(DIRUT) Q
- . S DIR(0)="S^1:Staff Name;2:Date^I '$F("",1,2"",X) K X"
- . S DIR("A")="Select the Primary Sort"
- . S DIR("L",1)="Select one of the following:"
- . S DIR("L",2)=""
- . S DIR("L",3)="1 Staff Name"
- . S DIR("L",4)="2 Date"
- . S DIR("?",1)="Select how you wish to sort the entries on this report."
- . S DIR("?",2)=""
- . S DIR("?",3)="1 will sort the entries by Staff Name."
- . S DIR("?")="2 will sort the entries by 278 Transaction Date."
- . W ! D ^DIR K DIR
- . I $G(DIRUT) Q
- . S $P(FILTERS(0),"^",6)=Y
- . Q
- G 4
- ;
- 3 ;
- S OK=1,X=$P(FILTERS(0),"^",4)
- I X S X=$O(FILTERS(3,"")) I X,$O(FILTERS(3,X))="" S OK=0,$P(FILTERS(0),"^",6)=2
- I OK D I $G(DIRUT) Q
- . S DIR(0)="S^1:Patient Name;2:Date^I '$F("",1,2"",X) K X"
- . S DIR("A")="Select the Primary Sort"
- . S DIR("L",1)="Select one of the following:"
- . S DIR("L",2)=""
- . S DIR("L",3)="1 Patient Name"
- . S DIR("L",4)="2 Date"
- . S DIR("?",1)="Select how you wish to sort the entries on this report."
- . S DIR("?",2)=""
- . S DIR("?",3)="1 will sort the entries by Patient Name."
- . S DIR("?")="2 will sort the entries by 278 Transaction Date."
- . W ! D ^DIR K DIR
- . I $G(DIRUT) Q
- . S $P(FILTERS(0),"^",6)=Y
- . Q
- 4 ;
- D DEV
- Q
- ;
- PAY ; Payer filter
- N DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
- S DIR(0)="S",DIR("A")="Select(A)ll or (S)elected Payer(s)",DIR("B")="All"
- S DIR("?",1)="Enter 'A' to select all Payers."
- S DIR("?")="Enter 'S' to select specific Payers."
- S $P(DIR(0),"^",2)="A:All Payers;S:Selected Payers"
- W ! D ^DIR K DIR
- I $G(DIRUT) Q 0
- S X=$$UP^XLFSTR(X)
- S $P(FILTERS(0),"^",2)=$S(Y="A":0,1:1)
- ; Set Payer
- I $P(FILTERS(0),"^",2)=1 D ASKPAY(.FILTERS)
- Q
- ;
- STAFF ; Staff ( New Person file) filter
- N DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
- S DIR(0)="S",DIR("A")="Select(A)ll or (S)elected Staff",DIR("B")="All"
- S DIR("?",1)="Enter 'A' to select all Staff Members."
- S DIR("?")="Enter 'S' to select specific Staff Members."
- S $P(DIR(0),"^",2)="A:All Staff Members;S:Selected Staff Members"
- W ! D ^DIR K DIR
- I $G(DIRUT) Q 0
- S X=$$UP^XLFSTR(X)
- S $P(FILTERS(0),"^",3)=$S(Y="A":0,1:1)
- ; Set staff
- I $P(FILTERS(0),"^",3)=1 D ASKSTAFF(.FILTERS)
- Q
- ;
- PAT ; Patient filter
- N DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
- S DIR(0)="S",DIR("A")="Select(A)ll or (S)elected Patient(s)",DIR("B")="All"
- S DIR("?",1)="Enter 'A' to select all Patients."
- S DIR("?")="Enter 'S' to select specific Patients."
- S $P(DIR(0),"^",2)="A:All Patients;S:Selected Patients"
- W ! D ^DIR K DIR
- I $G(DIRUT) Q 0
- S X=$$UP^XLFSTR(X)
- S $P(FILTERS(0),"^",4)=$S(Y="A":0,1:1)
- ; Set Patient
- I $P(FILTERS(0),"^",4)=1 D ASKPAT(.FILTERS)
- Q
- ;
- DEV ; -- select device, run option
- W !!,"You will need a 132 column printer for this report!",!
- S %ZIS="QM" D ^%ZIS G:POP END
- I $D(IO("Q")) S ZTRTN="DQ^IBTRHRC",ZTSAVE("IB*")="",ZTDESC="IB - 278 Certification Report" D ^%ZTLOAD K IO("Q"),ZTSK D HOME^%ZIS G END
- U IO
- S X=132 X ^%ZOSF("RM")
- DQ D PRINT G END
- Q
- ;
- END ; -- Clean up
- I $D(ZTQUEUED) S ZTREQ="@" Q
- D ^%ZISC
- K I,J,X,Y,DFN,%ZIS,VA,IBTRN,IBTRND,IBPAG,IBHDT,IBDT,IBBDT,IBEDT,IBQUIT
- Q
- ;
- PRINT ; -- print one billing report from ct
- W !,"Compiling report data..."
- N SDT,EDT,IEN,NODE0,PATIEN,INSIEN,IBQUIT,IBPAG,CERT,AUTH,AUTH2,PATINS,STAFF,XREQ
- S IBHDT=$$HTE^XLFDT($H,1),IBQUIT=0,IBPAG=0
- K ^TMP($J)
- S SDT=$P(FILTERS(4),"^"),EDT=$P(FILTERS(4),"^",2)
- F S SDT=$O(^IBT(356.22,"AC",SDT)) Q:SDT="" Q:$P(SDT,".")>EDT D
- . S IEN=0 F S IEN=$O(^IBT(356.22,"AC",SDT,IEN)) Q:IEN="" Q:$G(IBQUIT) D
- .. S NODE0=$G(^IBT(356.22,IEN,0)) I NODE0'="" D
- ... I $P(NODE0,"^",20)'=2 Q ;response message
- ... S PATIEN=$P(NODE0,"^",2),INSIEN=$P(NODE0,"^",3)
- ... I PATIEN="" Q
- ... I INSIEN="" Q
- ... S PATINS=$P($G(^DPT(PATIEN,.312,INSIEN,0)),"^") I PATINS="" Q
- ... S OK=1
- ... I $P(FILTERS(0),"^")=1 D I 'OK Q
- .... I $P(FILTERS(0),"^",2) D I 'OK Q
- ..... I '$D(FILTERS(1,PATINS)) S OK=0 Q
- ..... Q
- .... Q
- ... I $P(FILTERS(0),"^")=2 D I 'OK Q
- .... S XREQ=$P(NODE0,"^",13) I XREQ="" S OK=0 Q
- .... S STAFF=$P($G(^IBT(356.22,XREQ,0)),"^",11) I STAFF="" S OK=0 Q
- .... I $P(FILTERS(0),"^",3) D I 'OK Q
- ..... I '$D(FILTERS(2,STAFF)) S OK=0 Q
- ..... Q
- .... Q
- ... I $P(FILTERS(0),"^")=3 D I 'OK Q
- .... I $P(FILTERS(0),"^",4) D I 'OK Q
- ..... I '$D(FILTERS(3,PATIEN)) S OK=0 Q
- ..... Q
- .... Q
- ... S CERT=$P($G(^IBT(356.22,IEN,103)),"^")
- ... S AUTH=$P($G(^IBT(356.22,IEN,103)),"^",3),AUTH2=$P($G(^(103)),"^",2)
- ... I CERT D SET
- .. Q
- . Q
- ;
- PR ;
- D HDR
- I '$D(^TMP($J,"IBTRHRC")) W !!,"No 278 Transactions found in date range.",! G PR1
- N Z1,Z2,Z3,TOT1,TOT2,TOT3,TOT4,TOT5,TOT6,TOT7,TOT8,TOT9,DATA,DDATA
- N GTOT1,GTOT2,GTOT3,GTOT4,GTOT5,GTOT6,GTOT7,GTOT8,GTOT9,D1,D2,TAB,TOT
- S (Z1,Z2)=""
- F S Z1=$O(^TMP($J,"IBTRHRC",Z1)) Q:Z1=""!($G(IBQUIT)) D Q:IBQUIT
- . S Z2="" F S Z2=$O(^TMP($J,"IBTRHRC",Z1,Z2)) Q:Z2=""!($G(IBQUIT)) S DATA=$G(^(Z2)) I DATA'="" D
- .. I ($Y+5)>IOSL D HDR Q:IBQUIT
- .. I $P(FILTERS(0),"^",6)=1 W !,Z1 I $P(FILTERS(0),"^",7),$P(FILTERS(0),"^")'=4 W ?30,$E(Z2,4,5),"/",$E(Z2,6,7),"/",$S($E(Z2)=3:20,1:19),$E(Z2,2,3)
- .. I $P(FILTERS(0),"^",6)=2 D
- ... I $P(FILTERS(0),"^")=4 W !,$E(Z1,4,5),"/",$E(Z1,6,7),"/",$S($E(Z1)=3:20,1:19),$E(Z1,2,3) Q
- ... W !,Z2,?30,$E(Z1,4,5),"/",$E(Z1,6,7),"/",$S($E(Z1)=3:20,1:19),$E(Z1,2,3)
- .. W ?49,$J($P(DATA,"^"),3),?57,$J($P(DATA,"^",2),3)
- .. W ?67,$J($P(DATA,"^",3),3),?77,$J($P(DATA,"^",4),3),?87,$J($P(DATA,"^",5),3),?97,$J($P(DATA,"^",6),3)
- .. W ?107,$J($P(DATA,"^",7),3),?117,$J($P(DATA,"^",8),3),?126,$J($P(DATA,"^",9),4)
- .. I $P(FILTERS(0),"^",5),$O(^TMP($J,"IBTRHRC",Z1,Z2,""))'="" D
- ... W !?48,"Detail Autho/Review Decision Code:",?93,"----"
- ... S Z3="" F S Z3=$O(^TMP($J,"IBTRHRC",Z1,Z2,1,Z3)) Q:Z3="" S DDATA=$G(^(Z3)) I DDATA D
- .... S D1=$$GET1^DIQ(356.021,Z3_",",.01)
- .... S D2=$$GET1^DIQ(356.021,Z3_",",.02)
- .... W !?48,D1,"-",D2,?95,DDATA
- ... S Z3="" F S Z3=$O(^TMP($J,"IBTRHRC",Z1,Z2,2,Z3)) Q:Z3="" S DDATA=$G(^(Z3)) I DDATA D
- .... W !?48,Z3,?95,DDATA
- .... Q
- .. S TOT1=$G(TOT1)+$P(DATA,"^"),TOT2=$G(TOT2)+$P(DATA,"^",2)
- .. S TOT3=$G(TOT3)+$P(DATA,"^",3),TOT4=$G(TOT4)+$P(DATA,"^",4)
- .. S TOT5=$G(TOT5)+$P(DATA,"^",5),TOT6=$G(TOT6)+$P(DATA,"^",6)
- .. S TOT7=$G(TOT7)+$P(DATA,"^",7),TOT8=$G(TOT8)+$P(DATA,"^",8)
- .. S TOT9=$G(TOT9)+$P(DATA,"^",9)
- . I +$P(FILTERS(0),"^",7) D
- .. ;N CHK S CHK=$O(FILTERS(1,"")) I CHK'="",$O(FILTERS(1,CHK))="" Q
- .. ;S CHK=$O(FILTERS(2,"")) I CHK'="",$O(FILTERS(2,CHK))="" Q
- .. ;S CHK=$O(FILTERS(3,"")) I CHK'="",$O(FILTERS(2,CHK))="" Q
- .. W !?48,$TR($J(" ",84)," ","-")
- .. W !," Total"
- .. W ?48,$J(TOT1,4)
- .. F I=2:1:8 S TAB=36+(10*I),TAB="?"_TAB,TOT="TOT"_I W @TAB,$J(@TOT,4)
- .. W ?126,$J(TOT9,4)
- .. W !?29,$TR($J(" ",103)," ","-")
- . S GTOT1=$G(GTOT1)+$G(TOT1),GTOT2=$G(GTOT2)+$G(TOT2)
- . S GTOT3=$G(GTOT3)+$G(TOT3),GTOT4=$G(GTOT4)+$G(TOT4)
- . S GTOT5=$G(GTOT5)+$G(TOT5),GTOT6=$G(GTOT6)+$G(TOT6)
- . S GTOT7=$G(GTOT7)+$G(TOT7),GTOT8=$G(GTOT8)+$G(TOT8)
- . S GTOT9=$G(GTOT9)+$G(TOT9)
- . S (TOT1,TOT2,TOT3,TOT4,TOT5,TOT6,TOT7,TOT8,TOT9)=""
- . Q
- I '+$P(FILTERS(0),"^",7) W !?29,$TR($J(" ",103)," ","-")
- W !,"Grand Total"
- W ?48,$J(GTOT1,4)
- F I=2:1:9 S TAB=36+(10*I),TAB="?"_TAB,TOT="GTOT"_I W @TAB,$J(@TOT,4)
- W !?29,$TR($J(" ",103)," ","=")
- W !
- PR1 ;
- W !?(132-$L("*** END OF REPORT ***")\2),"*** END OF REPORT ***"
- I $D(ZTQUEUED) G END
- Q
- ;
- HDR ; -- Print header for billing report
- Q:IBQUIT
- I $E(IOST,1,2)="C-",IBPAG D PAUSE^VALM1 I $D(DIRUT) S IBQUIT=1 Q
- I $E(IOST,1,2)="C-"!(IBPAG) W @IOF
- S IBPAG=IBPAG+1
- W !," 278 Certification Report",?55,IBHDT,?125,"Page: ",IBPAG
- W !," Sort by: ",$S($P(FILTERS(0),"^",6)=1:$S($P(FILTERS(0),"^")=1:"Payer",$P(FILTERS(0),"^")=2:"Staff",1:"Patient"),1:"Date"),?116,"Detail: ",$S($P(FILTERS(0),"^",7)=1:"Included",1:"Excluded")
- W !?55,"Report Timeframe:"
- S SDT=$P(FILTERS(4),"^"),EDT=$P(FILTERS(4),"^",2)
- W !?52,$E(SDT,4,5),"/",$E(SDT,6,7),"/",$S($E(SDT)=3:20,1:19),$E(SDT,2,3)
- W " - ",$E(EDT,4,5),"/",$E(EDT,6,7),"/",$S($E(EDT)=3:20,1:19),$E(EDT,2,3)
- I $P(FILTERS(0),"^")=1 W !?55,$S($P(FILTERS(0),"^",2)=1:"Selected",1:"All")," Payer(s)"
- I $P(FILTERS(0),"^")=2 W !?55,$S($P(FILTERS(0),"^",3)=1:"Selected",1:"All")," Staff"
- I $P(FILTERS(0),"^")=3 W !?55,$S($P(FILTERS(0),"^",4)=1:"Selected",1:"All")," Patient(s)"
- I $P(FILTERS(0),"^")=4 W !?55,"Selected Dates"
- W !
- W !,$S($P(FILTERS(0),"^")=1:"Payer",$P(FILTERS(0),"^")=2:"Staff",$P(FILTERS(0),"^")=3:"Patient",1:"Date")
- W ?30
- I $P(FILTERS(0),"^",7),$P(FILTERS(0),"^")'=4 W "Date"
- W ?48,"#278s",?58,"#A1",?68,"#A2",?78,"#A6",?88,"#A4",?98,"#A3",?108,"#C",?118,"CT",?128,"NA"
- W !,$TR($J(" ",132)," ","=")
- I $D(ZTQUEUED),$$S^%ZTLOAD S ZTSTOP=1,IBQUIT=1 W !!,"....task stopped at user request"
- Q
- ;
- SET ; -- set tmp array
- N PIECE,ST1,ST2,INS,DATE,AUTH1,COUNT
- I $P(FILTERS(0),"^")=1 D
- . I $D(FILTERS(1,PATINS)) S INS=FILTERS(1,PATINS)
- . E S INS=$$GET1^DIQ(36,PATINS_",",.01),FILTERS(1,PATINS)=INS
- . I INS="" S INS="UNKNOWN" Q
- I $P(FILTERS(0),"^")=2 D
- . I $D(FILTERS(2,STAFF)) S INS=FILTERS(2,STAFF)
- . E S INS=$$GET1^DIQ(200,STAFF_",",.01),FILTERS(2,STAFF)=INS
- . I INS="" S INS="UNKNOWN" Q
- I $P(FILTERS(0),"^")=3 D
- . I $D(FILTERS(3,PATIEN)) S INS=FILTERS(3,PATIEN)
- . E S INS=$$GET1^DIQ(2,PATIEN_",",.01),FILTERS(3,PATIEN)=INS
- . I INS="" S INS="UNKNOWN" Q
- I $P(FILTERS(0),"^")=4 S INS=$P(SDT,".")
- I $P(FILTERS(0),"^",6)=1 S ST1=INS,ST2=$P(SDT,".") I '$P(FILTERS(0),"^",7) S ST2=ST1
- I $P(FILTERS(0),"^",6)=2 S ST1=$P(SDT,"."),ST2=INS
- I $D(ZTQUEUED),$$S^%ZTLOAD S ZTSTOP=1,IBQUIT=1 D HDR W !!,"....task stopped at user request" Q
- S COUNT=$G(^TMP($J,"IBTRHRC",ST1,ST2)),$P(COUNT,"^")=$P(COUNT,"^")+1,^(ST2)=COUNT
- I CERT D
- . S CERT=$$GET1^DIQ(356.02,CERT_",",.01)
- . S PIECE=$S(CERT="A1":2,CERT="A2":3,CERT="A6":4,CERT="A4":5,CERT="A3":6,CERT="C":7,CERT="CT":8,1:"9")
- . S $P(COUNT,"^",PIECE)=$P(COUNT,"^",PIECE)+1
- . S ^TMP($J,"IBTRHRC",ST1,ST2)=COUNT
- I AUTH'="" D
- . S AUTH1=$$GET1^DIQ(356.021,AUTH_",",.01)
- . I AUTH1="" Q
- . S COUNT=$G(^TMP($J,"IBTRHRC",ST1,ST2,1,AUTH))
- . S COUNT=COUNT+1
- . S ^TMP($J,"IBTRHRC",ST1,ST2,1,AUTH)=COUNT
- I AUTH2'="" D
- . S COUNT=$G(^TMP($J,"IBTRHRC",ST1,ST2,2,AUTH2))
- . S COUNT=COUNT+1
- . S ^TMP($J,"IBTRHRC",ST1,ST2,2,AUTH2)=COUNT
- Q
- ;
- FMDATES(PROMPT) ; ask for date range
- N %DT,X,Y,DT1,DT2,IB1,IB2
- S DT1="",IB1="Start Date: ",IB2="End Date: "
- I $G(PROMPT)'="" S IB1="Start with "_PROMPT_": ",IB2="Go to "_PROMPT_": "
- FM1 ;
- S %DT="AEX",%DT("A")=IB1 D ^%DT K %DT I Y<0!($P(Y,".",1)'?7N) G FM1E:(Y<0&(X="")),FMDQ
- S (%DT(0),DT2)=$P(Y,".",1) I DT2'>DT S %DT("B")="Today"
- FM2 ;
- S %DT="AEX",%DT("A")=IB2 D ^%DT K %DT I Y<0!($P(Y,".",1)'?7N) G FM2E:(Y<0&(X="")),FMDQ
- S DT1=DT2_"^"_$P(Y,".",1)
- FMDQ ;
- Q DT1
- FM1E ;
- W !,"A date must be entered." G FM1
- FM2E ;
- W !,"A date must be entered." G FM2
- Q
- ;
- ASKPAY(FILTERS) ; Sets a list of patients
- ; the HCSR Worklist
- ; Input: FILTERS - Current Array of filter settings
- ; Output: FILTERS - Updated Array of filter settings
- N CLINS,DIC,DIR,DIRUT,DIVS,DUOUT,IBIENS,IEN,N,NM,NODE,WARDS,X,XX,Y
- S DIC=36,DIC(0)="AEM"
- F D Q:+IEN<1
- . D ONE(.DIC,.IEN) ; One patient
- . Q:+IEN<1
- . S FILTERS(1,$P(IEN,"^"))=$P(IEN,"^",2)
- Q
- ;
- ASKSTAFF(FILTERS) ; Sets a list of staff
- ; Input: FILTERS - Current Array of filter settings
- ; Output: FILTERS - Updated Array of filter settings
- N DIC,DIR,DIRUT,DIVS,DUOUT,IBIENS,IEN,N,NM,NODE,X,XX,Y
- S DIC=200,DIC(0)="AEM"
- F D Q:+IEN<1
- . D ONE(.DIC,.IEN)
- . Q:+IEN<1
- . S FILTERS(2,$P(IEN,"^"))=$P(IEN,"^",2)
- Q
- ;
- ONE(DIC,IEN) ; Prompts the user for Payer
- ; Input: DIC - Variable/Array of settings needed for ^DIC call
- ;
- ; Output: IEN - IEN of the selected Payer Entry
- ; null if no selection was made
- S DIC("A")="Select "_$S(DIC=200:"Staff Member: ",DIC="^VA(200,":"Staff Member: ",DIC=2:"Patient: ",DIC="^DPT(":"Patient: ",1:"Payer: ")
- D ^DIC
- S IEN=Y
- Q
- ;
- ASKPAT(FILTERS) ; Sets a list of Patients
- ; Input: FILTERS - Current Array of filter settings
- ; Output: FILTERS - Updated Array of filter settings
- N DIC,DIR,DIRUT,DIVS,DUOUT,IBIENS,IEN,N,NM,NODE,X,XX,Y
- S DIC=2,DIC(0)="AEM"
- F D Q:+IEN<1
- . D ONE(.DIC,.IEN)
- . Q:+IEN<1
- . S FILTERS(3,$P(IEN,"^"))=$P(IEN,"^",2)
- Q
- --- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HIBTRHRC 16163 printed Mar 13, 2025@21:33:32 Page 2
- IBTRHRC ;ALB/JWS - CLAIMS TRACKING 278 CERTIFICATION REPORT ;24-AUG-2015
- +1 ;;2.0;INTEGRATED BILLING;**517**;21-MAR-94;Build 240
- +2 ;;Per VA Directive 6402, this routine should not be modified.
- +3 ;
- % ;
- +1 ;
- +2 ; FILTERS array is built
- +3 ; FILTERS(0)[1] = 1 if report by Payer (Insurance)
- +4 ; 2 if report by Staff
- +5 ; 3 if report by Patient
- +6 ; 4 if report by Date
- +7 ; FILTERS(0)[2] = 0 (or null) if All Payer's, 1 if selected payers
- +8 ; FILTERS(0)[3] = 0 (or null) if All staff, 1 if selected staff
- +9 ; FILTERS(0)[4] = 0 (or null) if All Patients, 1 if selected patients
- +10 ; FILTERS(0)[5] = 0 (No) to display decision reason code, 1 (Yes)
- +11 ; FILTERS(0)[6] = sort, 1 = name, 2 = date
- +12 ; FILTERS(0)[7] = 0 (No) to total by Date, 1 (Yes)
- +13 ; FILTERS(1,payer name) = ien
- +14 ; FILTERS(2,staff name) = ien
- +15 ; FILTERS(3,patient name) = ien
- +16 ; FILTERS(4)[1] = from date
- +17 ; FILTERS(4)[2] = through date
- +18 NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y,RPTDATE,IBQUIT,FILTERS,OK
- +19 IF '$DATA(DT)
- DO DT^DICRW
- +20 WRITE !!,"278 Certification Report"
- +21 ; selection filter
- +22 SET DIR(0)="S^1:Report by Payer;2:Report by Staff;3:Report by Patient;4:Report by Date Range^I '$F("",1,2,3,4"",X) K X"
- +23 SET DIR("A")="Select the type of report to generate"
- +24 SET DIR("L",1)="Select one of the following:"
- +25 SET DIR("L",2)=""
- +26 SET DIR("L",3)="1 Report by Payer"
- +27 SET DIR("L",4)="2 Report by Staff"
- +28 SET DIR("L",5)="3 Report by Patient"
- +29 SET DIR("L",6)="4 Report by Date Range"
- +30 SET DIR("?",1)="Select how you wish to select the entries to display on the report."
- +31 SET DIR("?",2)=""
- +32 SET DIR("?",3)="1 will allow you to select one or more Payers to report on."
- +33 SET DIR("?",4)="2 will allow you to select one or more Staff members to report on."
- +34 SET DIR("?",5)="3 will allow you to select one or more Patients to report on."
- +35 SET DIR("?")="4 will allow you to select a Date Range of 278 transactions to report on."
- +36 WRITE !
- DO ^DIR
- KILL DIR
- +37 IF $GET(DIRUT)
- QUIT
- +38 SET FILTERS(0)=Y
- +39 IF Y=1
- DO PAY
- GOTO 1
- +40 IF Y=2
- DO STAFF
- GOTO 1
- +41 IF Y=4
- GOTO 1
- +42 IF Y=3
- DO PAT
- +43 ;
- 1 ;
- +1 SET RPTDATE=$$FMDATES("")
- IF RPTDATE=""
- QUIT
- +2 SET FILTERS(4)=RPTDATE
- +3 SET DIR(0)="Y"
- SET DIR("A")="Include Autho/Review Decision Code"
- SET DIR("B")="NO"
- +4 SET DIR("?",1)=" Enter: 'Y' - to include Authorization/Review Decision Reason Codes on report."
- +5 SET DIR("?",2)=" 'N' - to exclude Authorization/Review Decision Reason Codes on report."
- +6 SET DIR("?")=" '^' - to exit this report."
- +7 DO ^DIR
- KILL DIR
- +8 IF $GET(DIRUT)
- QUIT
- +9 SET $PIECE(FILTERS(0),"^",5)=+Y
- +10 IF $PIECE(FILTERS(0),"^")=4
- SET $PIECE(FILTERS(0),"^",6)=2
- GOTO 4
- +11 SET DIR(0)="Y"
- SET DIR("A")="Total by Date"
- SET DIR("B")="NO"
- +12 SET DIR("?",1)=" Enter: 'Y' - to include totals for each date on report."
- +13 SET DIR("?",2)=" 'N' - to NOT include totals for each date on report."
- +14 SET DIR("?")=" '^' - to exit this report."
- +15 DO ^DIR
- KILL DIR
- +16 IF $GET(DIRUT)
- QUIT
- +17 SET $PIECE(FILTERS(0),"^",7)=+Y
- +18 IF 'Y
- SET $PIECE(FILTERS(0),"^",6)=1
- GOTO 4
- +19 IF $PIECE(FILTERS(0),"^")=2
- GOTO 2
- +20 IF $PIECE(FILTERS(0),"^")=3
- GOTO 3
- +21 SET OK=1
- +22 SET X=$ORDER(FILTERS(1,""))
- IF X
- IF $ORDER(FILTERS(1,X))=""
- SET OK=0
- SET $PIECE(FILTERS(0),"^",6)=2
- +23 IF OK
- Begin DoDot:1
- +24 SET DIR(0)="S^1:Payer Name;2:Date^I '$F("",1,2"",X) K X"
- +25 SET DIR("A")="Select the Primary Sort"
- +26 SET DIR("L",1)="Select one of the following:"
- +27 SET DIR("L",2)=""
- +28 SET DIR("L",3)="1 Payer Name"
- +29 SET DIR("L",4)="2 Date"
- +30 SET DIR("?",1)="Select how you wish to sort the entries on this report."
- +31 SET DIR("?",2)=""
- +32 SET DIR("?",3)="1 will sort the entries by Payer Name."
- +33 SET DIR("?")="2 will sort the entries by 278 Transaction Date."
- +34 WRITE !
- DO ^DIR
- KILL DIR
- +35 IF $GET(DIRUT)
- QUIT
- +36 SET $PIECE(FILTERS(0),"^",6)=Y
- +37 QUIT
- End DoDot:1
- IF $GET(DIRUT)
- QUIT
- +38 GOTO 4
- +39 ;
- 2 ;
- +1 SET OK=1
- SET X=$PIECE(FILTERS(0),"^",3)
- +2 IF X
- SET X=$ORDER(FILTERS(2,""))
- IF X
- IF $ORDER(FILTERS(2,X))=""
- SET OK=0
- SET $PIECE(FILTERS(0),"^",6)=2
- +3 IF OK
- Begin DoDot:1
- +4 SET DIR(0)="S^1:Staff Name;2:Date^I '$F("",1,2"",X) K X"
- +5 SET DIR("A")="Select the Primary Sort"
- +6 SET DIR("L",1)="Select one of the following:"
- +7 SET DIR("L",2)=""
- +8 SET DIR("L",3)="1 Staff Name"
- +9 SET DIR("L",4)="2 Date"
- +10 SET DIR("?",1)="Select how you wish to sort the entries on this report."
- +11 SET DIR("?",2)=""
- +12 SET DIR("?",3)="1 will sort the entries by Staff Name."
- +13 SET DIR("?")="2 will sort the entries by 278 Transaction Date."
- +14 WRITE !
- DO ^DIR
- KILL DIR
- +15 IF $GET(DIRUT)
- QUIT
- +16 SET $PIECE(FILTERS(0),"^",6)=Y
- +17 QUIT
- End DoDot:1
- IF $GET(DIRUT)
- QUIT
- +18 GOTO 4
- +19 ;
- 3 ;
- +1 SET OK=1
- SET X=$PIECE(FILTERS(0),"^",4)
- +2 IF X
- SET X=$ORDER(FILTERS(3,""))
- IF X
- IF $ORDER(FILTERS(3,X))=""
- SET OK=0
- SET $PIECE(FILTERS(0),"^",6)=2
- +3 IF OK
- Begin DoDot:1
- +4 SET DIR(0)="S^1:Patient Name;2:Date^I '$F("",1,2"",X) K X"
- +5 SET DIR("A")="Select the Primary Sort"
- +6 SET DIR("L",1)="Select one of the following:"
- +7 SET DIR("L",2)=""
- +8 SET DIR("L",3)="1 Patient Name"
- +9 SET DIR("L",4)="2 Date"
- +10 SET DIR("?",1)="Select how you wish to sort the entries on this report."
- +11 SET DIR("?",2)=""
- +12 SET DIR("?",3)="1 will sort the entries by Patient Name."
- +13 SET DIR("?")="2 will sort the entries by 278 Transaction Date."
- +14 WRITE !
- DO ^DIR
- KILL DIR
- +15 IF $GET(DIRUT)
- QUIT
- +16 SET $PIECE(FILTERS(0),"^",6)=Y
- +17 QUIT
- End DoDot:1
- IF $GET(DIRUT)
- QUIT
- 4 ;
- +1 DO DEV
- +2 QUIT
- +3 ;
- PAY ; Payer filter
- +1 NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
- +2 SET DIR(0)="S"
- SET DIR("A")="Select(A)ll or (S)elected Payer(s)"
- SET DIR("B")="All"
- +3 SET DIR("?",1)="Enter 'A' to select all Payers."
- +4 SET DIR("?")="Enter 'S' to select specific Payers."
- +5 SET $PIECE(DIR(0),"^",2)="A:All Payers;S:Selected Payers"
- +6 WRITE !
- DO ^DIR
- KILL DIR
- +7 IF $GET(DIRUT)
- QUIT 0
- +8 SET X=$$UP^XLFSTR(X)
- +9 SET $PIECE(FILTERS(0),"^",2)=$SELECT(Y="A":0,1:1)
- +10 ; Set Payer
- +11 IF $PIECE(FILTERS(0),"^",2)=1
- DO ASKPAY(.FILTERS)
- +12 QUIT
- +13 ;
- STAFF ; Staff ( New Person file) filter
- +1 NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
- +2 SET DIR(0)="S"
- SET DIR("A")="Select(A)ll or (S)elected Staff"
- SET DIR("B")="All"
- +3 SET DIR("?",1)="Enter 'A' to select all Staff Members."
- +4 SET DIR("?")="Enter 'S' to select specific Staff Members."
- +5 SET $PIECE(DIR(0),"^",2)="A:All Staff Members;S:Selected Staff Members"
- +6 WRITE !
- DO ^DIR
- KILL DIR
- +7 IF $GET(DIRUT)
- QUIT 0
- +8 SET X=$$UP^XLFSTR(X)
- +9 SET $PIECE(FILTERS(0),"^",3)=$SELECT(Y="A":0,1:1)
- +10 ; Set staff
- +11 IF $PIECE(FILTERS(0),"^",3)=1
- DO ASKSTAFF(.FILTERS)
- +12 QUIT
- +13 ;
- PAT ; Patient filter
- +1 NEW DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
- +2 SET DIR(0)="S"
- SET DIR("A")="Select(A)ll or (S)elected Patient(s)"
- SET DIR("B")="All"
- +3 SET DIR("?",1)="Enter 'A' to select all Patients."
- +4 SET DIR("?")="Enter 'S' to select specific Patients."
- +5 SET $PIECE(DIR(0),"^",2)="A:All Patients;S:Selected Patients"
- +6 WRITE !
- DO ^DIR
- KILL DIR
- +7 IF $GET(DIRUT)
- QUIT 0
- +8 SET X=$$UP^XLFSTR(X)
- +9 SET $PIECE(FILTERS(0),"^",4)=$SELECT(Y="A":0,1:1)
- +10 ; Set Patient
- +11 IF $PIECE(FILTERS(0),"^",4)=1
- DO ASKPAT(.FILTERS)
- +12 QUIT
- +13 ;
- DEV ; -- select device, run option
- +1 WRITE !!,"You will need a 132 column printer for this report!",!
- +2 SET %ZIS="QM"
- DO ^%ZIS
- if POP
- GOTO END
- +3 IF $DATA(IO("Q"))
- SET ZTRTN="DQ^IBTRHRC"
- SET ZTSAVE("IB*")=""
- SET ZTDESC="IB - 278 Certification Report"
- DO ^%ZTLOAD
- KILL IO("Q"),ZTSK
- DO HOME^%ZIS
- GOTO END
- +4 USE IO
- +5 SET X=132
- XECUTE ^%ZOSF("RM")
- DQ DO PRINT
- GOTO END
- +1 QUIT
- +2 ;
- END ; -- Clean up
- +1 IF $DATA(ZTQUEUED)
- SET ZTREQ="@"
- QUIT
- +2 DO ^%ZISC
- +3 KILL I,J,X,Y,DFN,%ZIS,VA,IBTRN,IBTRND,IBPAG,IBHDT,IBDT,IBBDT,IBEDT,IBQUIT
- +4 QUIT
- +5 ;
- PRINT ; -- print one billing report from ct
- +1 WRITE !,"Compiling report data..."
- +2 NEW SDT,EDT,IEN,NODE0,PATIEN,INSIEN,IBQUIT,IBPAG,CERT,AUTH,AUTH2,PATINS,STAFF,XREQ
- +3 SET IBHDT=$$HTE^XLFDT($HOROLOG,1)
- SET IBQUIT=0
- SET IBPAG=0
- +4 KILL ^TMP($JOB)
- +5 SET SDT=$PIECE(FILTERS(4),"^")
- SET EDT=$PIECE(FILTERS(4),"^",2)
- +6 FOR
- SET SDT=$ORDER(^IBT(356.22,"AC",SDT))
- if SDT=""
- QUIT
- if $PIECE(SDT,".")>EDT
- QUIT
- Begin DoDot:1
- +7 SET IEN=0
- FOR
- SET IEN=$ORDER(^IBT(356.22,"AC",SDT,IEN))
- if IEN=""
- QUIT
- if $GET(IBQUIT)
- QUIT
- Begin DoDot:2
- +8 SET NODE0=$GET(^IBT(356.22,IEN,0))
- IF NODE0'=""
- Begin DoDot:3
- +9 ;response message
- IF $PIECE(NODE0,"^",20)'=2
- QUIT
- +10 SET PATIEN=$PIECE(NODE0,"^",2)
- SET INSIEN=$PIECE(NODE0,"^",3)
- +11 IF PATIEN=""
- QUIT
- +12 IF INSIEN=""
- QUIT
- +13 SET PATINS=$PIECE($GET(^DPT(PATIEN,.312,INSIEN,0)),"^")
- IF PATINS=""
- QUIT
- +14 SET OK=1
- +15 IF $PIECE(FILTERS(0),"^")=1
- Begin DoDot:4
- +16 IF $PIECE(FILTERS(0),"^",2)
- Begin DoDot:5
- +17 IF '$DATA(FILTERS(1,PATINS))
- SET OK=0
- QUIT
- +18 QUIT
- End DoDot:5
- IF 'OK
- QUIT
- +19 QUIT
- End DoDot:4
- IF 'OK
- QUIT
- +20 IF $PIECE(FILTERS(0),"^")=2
- Begin DoDot:4
- +21 SET XREQ=$PIECE(NODE0,"^",13)
- IF XREQ=""
- SET OK=0
- QUIT
- +22 SET STAFF=$PIECE($GET(^IBT(356.22,XREQ,0)),"^",11)
- IF STAFF=""
- SET OK=0
- QUIT
- +23 IF $PIECE(FILTERS(0),"^",3)
- Begin DoDot:5
- +24 IF '$DATA(FILTERS(2,STAFF))
- SET OK=0
- QUIT
- +25 QUIT
- End DoDot:5
- IF 'OK
- QUIT
- +26 QUIT
- End DoDot:4
- IF 'OK
- QUIT
- +27 IF $PIECE(FILTERS(0),"^")=3
- Begin DoDot:4
- +28 IF $PIECE(FILTERS(0),"^",4)
- Begin DoDot:5
- +29 IF '$DATA(FILTERS(3,PATIEN))
- SET OK=0
- QUIT
- +30 QUIT
- End DoDot:5
- IF 'OK
- QUIT
- +31 QUIT
- End DoDot:4
- IF 'OK
- QUIT
- +32 SET CERT=$PIECE($GET(^IBT(356.22,IEN,103)),"^")
- +33 SET AUTH=$PIECE($GET(^IBT(356.22,IEN,103)),"^",3)
- SET AUTH2=$PIECE($GET(^(103)),"^",2)
- +34 IF CERT
- DO SET
- End DoDot:3
- +35 QUIT
- End DoDot:2
- +36 QUIT
- End DoDot:1
- +37 ;
- PR ;
- +1 DO HDR
- +2 IF '$DATA(^TMP($JOB,"IBTRHRC"))
- WRITE !!,"No 278 Transactions found in date range.",!
- GOTO PR1
- +3 NEW Z1,Z2,Z3,TOT1,TOT2,TOT3,TOT4,TOT5,TOT6,TOT7,TOT8,TOT9,DATA,DDATA
- +4 NEW GTOT1,GTOT2,GTOT3,GTOT4,GTOT5,GTOT6,GTOT7,GTOT8,GTOT9,D1,D2,TAB,TOT
- +5 SET (Z1,Z2)=""
- +6 FOR
- SET Z1=$ORDER(^TMP($JOB,"IBTRHRC",Z1))
- if Z1=""!($GET(IBQUIT))
- QUIT
- Begin DoDot:1
- +7 SET Z2=""
- FOR
- SET Z2=$ORDER(^TMP($JOB,"IBTRHRC",Z1,Z2))
- if Z2=""!($GET(IBQUIT))
- QUIT
- SET DATA=$GET(^(Z2))
- IF DATA'=""
- Begin DoDot:2
- +8 IF ($Y+5)>IOSL
- DO HDR
- if IBQUIT
- QUIT
- +9 IF $PIECE(FILTERS(0),"^",6)=1
- WRITE !,Z1
- IF $PIECE(FILTERS(0),"^",7)
- IF $PIECE(FILTERS(0),"^")'=4
- WRITE ?30,$EXTRACT(Z2,4,5),"/",$EXTRACT(Z2,6,7),"/",$SELECT($EXTRACT(Z2)=3:20,1:19),$EXTRACT(Z2,2,3)
- +10 IF $PIECE(FILTERS(0),"^",6)=2
- Begin DoDot:3
- +11 IF $PIECE(FILTERS(0),"^")=4
- WRITE !,$EXTRACT(Z1,4,5),"/",$EXTRACT(Z1,6,7),"/",$SELECT($EXTRACT(Z1)=3:20,1:19),$EXTRACT(Z1,2,3)
- QUIT
- +12 WRITE !,Z2,?30,$EXTRACT(Z1,4,5),"/",$EXTRACT(Z1,6,7),"/",$SELECT($EXTRACT(Z1)=3:20,1:19),$EXTRACT(Z1,2,3)
- End DoDot:3
- +13 WRITE ?49,$JUSTIFY($PIECE(DATA,"^"),3),?57,$JUSTIFY($PIECE(DATA,"^",2),3)
- +14 WRITE ?67,$JUSTIFY($PIECE(DATA,"^",3),3),?77,$JUSTIFY($PIECE(DATA,"^",4),3),?87,$JUSTIFY($PIECE(DATA,"^",5),3),?97,$JUSTIFY($PIECE(DATA,"^",6),3)
- +15 WRITE ?107,$JUSTIFY($PIECE(DATA,"^",7),3),?117,$JUSTIFY($PIECE(DATA,"^",8),3),?126,$JUSTIFY($PIECE(DATA,"^",9),4)
- +16 IF $PIECE(FILTERS(0),"^",5)
- IF $ORDER(^TMP($JOB,"IBTRHRC",Z1,Z2,""))'=""
- Begin DoDot:3
- +17 WRITE !?48,"Detail Autho/Review Decision Code:",?93,"----"
- +18 SET Z3=""
- FOR
- SET Z3=$ORDER(^TMP($JOB,"IBTRHRC",Z1,Z2,1,Z3))
- if Z3=""
- QUIT
- SET DDATA=$GET(^(Z3))
- IF DDATA
- Begin DoDot:4
- +19 SET D1=$$GET1^DIQ(356.021,Z3_",",.01)
- +20 SET D2=$$GET1^DIQ(356.021,Z3_",",.02)
- +21 WRITE !?48,D1,"-",D2,?95,DDATA
- End DoDot:4
- +22 SET Z3=""
- FOR
- SET Z3=$ORDER(^TMP($JOB,"IBTRHRC",Z1,Z2,2,Z3))
- if Z3=""
- QUIT
- SET DDATA=$GET(^(Z3))
- IF DDATA
- Begin DoDot:4
- +23 WRITE !?48,Z3,?95,DDATA
- +24 QUIT
- End DoDot:4
- End DoDot:3
- +25 SET TOT1=$GET(TOT1)+$PIECE(DATA,"^")
- SET TOT2=$GET(TOT2)+$PIECE(DATA,"^",2)
- +26 SET TOT3=$GET(TOT3)+$PIECE(DATA,"^",3)
- SET TOT4=$GET(TOT4)+$PIECE(DATA,"^",4)
- +27 SET TOT5=$GET(TOT5)+$PIECE(DATA,"^",5)
- SET TOT6=$GET(TOT6)+$PIECE(DATA,"^",6)
- +28 SET TOT7=$GET(TOT7)+$PIECE(DATA,"^",7)
- SET TOT8=$GET(TOT8)+$PIECE(DATA,"^",8)
- +29 SET TOT9=$GET(TOT9)+$PIECE(DATA,"^",9)
- End DoDot:2
- +30 IF +$PIECE(FILTERS(0),"^",7)
- Begin DoDot:2
- +31 ;N CHK S CHK=$O(FILTERS(1,"")) I CHK'="",$O(FILTERS(1,CHK))="" Q
- +32 ;S CHK=$O(FILTERS(2,"")) I CHK'="",$O(FILTERS(2,CHK))="" Q
- +33 ;S CHK=$O(FILTERS(3,"")) I CHK'="",$O(FILTERS(2,CHK))="" Q
- +34 WRITE !?48,$TRANSLATE($JUSTIFY(" ",84)," ","-")
- +35 WRITE !," Total"
- +36 WRITE ?48,$JUSTIFY(TOT1,4)
- +37 FOR I=2:1:8
- SET TAB=36+(10*I)
- SET TAB="?"_TAB
- SET TOT="TOT"_I
- WRITE @TAB,$JUSTIFY(@TOT,4)
- +38 WRITE ?126,$JUSTIFY(TOT9,4)
- +39 WRITE !?29,$TRANSLATE($JUSTIFY(" ",103)," ","-")
- End DoDot:2
- +40 SET GTOT1=$GET(GTOT1)+$GET(TOT1)
- SET GTOT2=$GET(GTOT2)+$GET(TOT2)
- +41 SET GTOT3=$GET(GTOT3)+$GET(TOT3)
- SET GTOT4=$GET(GTOT4)+$GET(TOT4)
- +42 SET GTOT5=$GET(GTOT5)+$GET(TOT5)
- SET GTOT6=$GET(GTOT6)+$GET(TOT6)
- +43 SET GTOT7=$GET(GTOT7)+$GET(TOT7)
- SET GTOT8=$GET(GTOT8)+$GET(TOT8)
- +44 SET GTOT9=$GET(GTOT9)+$GET(TOT9)
- +45 SET (TOT1,TOT2,TOT3,TOT4,TOT5,TOT6,TOT7,TOT8,TOT9)=""
- +46 QUIT
- End DoDot:1
- if IBQUIT
- QUIT
- +47 IF '+$PIECE(FILTERS(0),"^",7)
- WRITE !?29,$TRANSLATE($JUSTIFY(" ",103)," ","-")
- +48 WRITE !,"Grand Total"
- +49 WRITE ?48,$JUSTIFY(GTOT1,4)
- +50 FOR I=2:1:9
- SET TAB=36+(10*I)
- SET TAB="?"_TAB
- SET TOT="GTOT"_I
- WRITE @TAB,$JUSTIFY(@TOT,4)
- +51 WRITE !?29,$TRANSLATE($JUSTIFY(" ",103)," ","=")
- +52 WRITE !
- PR1 ;
- +1 WRITE !?(132-$LENGTH("*** END OF REPORT ***")\2),"*** END OF REPORT ***"
- +2 IF $DATA(ZTQUEUED)
- GOTO END
- +3 QUIT
- +4 ;
- HDR ; -- Print header for billing report
- +1 if IBQUIT
- QUIT
- +2 IF $EXTRACT(IOST,1,2)="C-"
- IF IBPAG
- DO PAUSE^VALM1
- IF $DATA(DIRUT)
- SET IBQUIT=1
- QUIT
- +3 IF $EXTRACT(IOST,1,2)="C-"!(IBPAG)
- WRITE @IOF
- +4 SET IBPAG=IBPAG+1
- +5 WRITE !," 278 Certification Report",?55,IBHDT,?125,"Page: ",IBPAG
- +6 WRITE !," Sort by: ",$SELECT($PIECE(FILTERS(0),"^",6)=1:$SELECT($PIECE(FILTERS(0),"^")=1:"Payer",$PIECE(FILTERS(0),"^")=2:"Staff",1:"Patient"),1:"Date"),?116,"Detail: ",$SELECT($PIECE(FILTERS(0),"^",7)=1:"Included",1:"Excluded")
- +7 WRITE !?55,"Report Timeframe:"
- +8 SET SDT=$PIECE(FILTERS(4),"^")
- SET EDT=$PIECE(FILTERS(4),"^",2)
- +9 WRITE !?52,$EXTRACT(SDT,4,5),"/",$EXTRACT(SDT,6,7),"/",$SELECT($EXTRACT(SDT)=3:20,1:19),$EXTRACT(SDT,2,3)
- +10 WRITE " - ",$EXTRACT(EDT,4,5),"/",$EXTRACT(EDT,6,7),"/",$SELECT($EXTRACT(EDT)=3:20,1:19),$EXTRACT(EDT,2,3)
- +11 IF $PIECE(FILTERS(0),"^")=1
- WRITE !?55,$SELECT($PIECE(FILTERS(0),"^",2)=1:"Selected",1:"All")," Payer(s)"
- +12 IF $PIECE(FILTERS(0),"^")=2
- WRITE !?55,$SELECT($PIECE(FILTERS(0),"^",3)=1:"Selected",1:"All")," Staff"
- +13 IF $PIECE(FILTERS(0),"^")=3
- WRITE !?55,$SELECT($PIECE(FILTERS(0),"^",4)=1:"Selected",1:"All")," Patient(s)"
- +14 IF $PIECE(FILTERS(0),"^")=4
- WRITE !?55,"Selected Dates"
- +15 WRITE !
- +16 WRITE !,$SELECT($PIECE(FILTERS(0),"^")=1:"Payer",$PIECE(FILTERS(0),"^")=2:"Staff",$PIECE(FILTERS(0),"^")=3:"Patient",1:"Date")
- +17 WRITE ?30
- +18 IF $PIECE(FILTERS(0),"^",7)
- IF $PIECE(FILTERS(0),"^")'=4
- WRITE "Date"
- +19 WRITE ?48,"#278s",?58,"#A1",?68,"#A2",?78,"#A6",?88,"#A4",?98,"#A3",?108,"#C",?118,"CT",?128,"NA"
- +20 WRITE !,$TRANSLATE($JUSTIFY(" ",132)," ","=")
- +21 IF $DATA(ZTQUEUED)
- IF $$S^%ZTLOAD
- SET ZTSTOP=1
- SET IBQUIT=1
- WRITE !!,"....task stopped at user request"
- +22 QUIT
- +23 ;
- SET ; -- set tmp array
- +1 NEW PIECE,ST1,ST2,INS,DATE,AUTH1,COUNT
- +2 IF $PIECE(FILTERS(0),"^")=1
- Begin DoDot:1
- +3 IF $DATA(FILTERS(1,PATINS))
- SET INS=FILTERS(1,PATINS)
- +4 IF '$TEST
- SET INS=$$GET1^DIQ(36,PATINS_",",.01)
- SET FILTERS(1,PATINS)=INS
- +5 IF INS=""
- SET INS="UNKNOWN"
- QUIT
- End DoDot:1
- +6 IF $PIECE(FILTERS(0),"^")=2
- Begin DoDot:1
- +7 IF $DATA(FILTERS(2,STAFF))
- SET INS=FILTERS(2,STAFF)
- +8 IF '$TEST
- SET INS=$$GET1^DIQ(200,STAFF_",",.01)
- SET FILTERS(2,STAFF)=INS
- +9 IF INS=""
- SET INS="UNKNOWN"
- QUIT
- End DoDot:1
- +10 IF $PIECE(FILTERS(0),"^")=3
- Begin DoDot:1
- +11 IF $DATA(FILTERS(3,PATIEN))
- SET INS=FILTERS(3,PATIEN)
- +12 IF '$TEST
- SET INS=$$GET1^DIQ(2,PATIEN_",",.01)
- SET FILTERS(3,PATIEN)=INS
- +13 IF INS=""
- SET INS="UNKNOWN"
- QUIT
- End DoDot:1
- +14 IF $PIECE(FILTERS(0),"^")=4
- SET INS=$PIECE(SDT,".")
- +15 IF $PIECE(FILTERS(0),"^",6)=1
- SET ST1=INS
- SET ST2=$PIECE(SDT,".")
- IF '$PIECE(FILTERS(0),"^",7)
- SET ST2=ST1
- +16 IF $PIECE(FILTERS(0),"^",6)=2
- SET ST1=$PIECE(SDT,".")
- SET ST2=INS
- +17 IF $DATA(ZTQUEUED)
- IF $$S^%ZTLOAD
- SET ZTSTOP=1
- SET IBQUIT=1
- DO HDR
- WRITE !!,"....task stopped at user request"
- QUIT
- +18 SET COUNT=$GET(^TMP($JOB,"IBTRHRC",ST1,ST2))
- SET $PIECE(COUNT,"^")=$PIECE(COUNT,"^")+1
- SET ^(ST2)=COUNT
- +19 IF CERT
- Begin DoDot:1
- +20 SET CERT=$$GET1^DIQ(356.02,CERT_",",.01)
- +21 SET PIECE=$SELECT(CERT="A1":2,CERT="A2":3,CERT="A6":4,CERT="A4":5,CERT="A3":6,CERT="C":7,CERT="CT":8,1:"9")
- +22 SET $PIECE(COUNT,"^",PIECE)=$PIECE(COUNT,"^",PIECE)+1
- +23 SET ^TMP($JOB,"IBTRHRC",ST1,ST2)=COUNT
- End DoDot:1
- +24 IF AUTH'=""
- Begin DoDot:1
- +25 SET AUTH1=$$GET1^DIQ(356.021,AUTH_",",.01)
- +26 IF AUTH1=""
- QUIT
- +27 SET COUNT=$GET(^TMP($JOB,"IBTRHRC",ST1,ST2,1,AUTH))
- +28 SET COUNT=COUNT+1
- +29 SET ^TMP($JOB,"IBTRHRC",ST1,ST2,1,AUTH)=COUNT
- End DoDot:1
- +30 IF AUTH2'=""
- Begin DoDot:1
- +31 SET COUNT=$GET(^TMP($JOB,"IBTRHRC",ST1,ST2,2,AUTH2))
- +32 SET COUNT=COUNT+1
- +33 SET ^TMP($JOB,"IBTRHRC",ST1,ST2,2,AUTH2)=COUNT
- End DoDot:1
- +34 QUIT
- +35 ;
- FMDATES(PROMPT) ; ask for date range
- +1 NEW %DT,X,Y,DT1,DT2,IB1,IB2
- +2 SET DT1=""
- SET IB1="Start Date: "
- SET IB2="End Date: "
- +3 IF $GET(PROMPT)'=""
- SET IB1="Start with "_PROMPT_": "
- SET IB2="Go to "_PROMPT_": "
- FM1 ;
- +1 SET %DT="AEX"
- SET %DT("A")=IB1
- DO ^%DT
- KILL %DT
- IF Y<0!($PIECE(Y,".",1)'?7N)
- if (Y<0&(X=""))
- GOTO FM1E
- GOTO FMDQ
- +2 SET (%DT(0),DT2)=$PIECE(Y,".",1)
- IF DT2'>DT
- SET %DT("B")="Today"
- FM2 ;
- +1 SET %DT="AEX"
- SET %DT("A")=IB2
- DO ^%DT
- KILL %DT
- IF Y<0!($PIECE(Y,".",1)'?7N)
- if (Y<0&(X=""))
- GOTO FM2E
- GOTO FMDQ
- +2 SET DT1=DT2_"^"_$PIECE(Y,".",1)
- FMDQ ;
- +1 QUIT DT1
- FM1E ;
- +1 WRITE !,"A date must be entered."
- GOTO FM1
- FM2E ;
- +1 WRITE !,"A date must be entered."
- GOTO FM2
- +2 QUIT
- +3 ;
- ASKPAY(FILTERS) ; Sets a list of patients
- +1 ; the HCSR Worklist
- +2 ; Input: FILTERS - Current Array of filter settings
- +3 ; Output: FILTERS - Updated Array of filter settings
- +4 NEW CLINS,DIC,DIR,DIRUT,DIVS,DUOUT,IBIENS,IEN,N,NM,NODE,WARDS,X,XX,Y
- +5 SET DIC=36
- SET DIC(0)="AEM"
- +6 FOR
- Begin DoDot:1
- +7 ; One patient
- DO ONE(.DIC,.IEN)
- +8 if +IEN<1
- QUIT
- +9 SET FILTERS(1,$PIECE(IEN,"^"))=$PIECE(IEN,"^",2)
- End DoDot:1
- if +IEN<1
- QUIT
- +10 QUIT
- +11 ;
- ASKSTAFF(FILTERS) ; Sets a list of staff
- +1 ; Input: FILTERS - Current Array of filter settings
- +2 ; Output: FILTERS - Updated Array of filter settings
- +3 NEW DIC,DIR,DIRUT,DIVS,DUOUT,IBIENS,IEN,N,NM,NODE,X,XX,Y
- +4 SET DIC=200
- SET DIC(0)="AEM"
- +5 FOR
- Begin DoDot:1
- +6 DO ONE(.DIC,.IEN)
- +7 if +IEN<1
- QUIT
- +8 SET FILTERS(2,$PIECE(IEN,"^"))=$PIECE(IEN,"^",2)
- End DoDot:1
- if +IEN<1
- QUIT
- +9 QUIT
- +10 ;
- ONE(DIC,IEN) ; Prompts the user for Payer
- +1 ; Input: DIC - Variable/Array of settings needed for ^DIC call
- +2 ;
- +3 ; Output: IEN - IEN of the selected Payer Entry
- +4 ; null if no selection was made
- +5 SET DIC("A")="Select "_$SELECT(DIC=200:"Staff Member: ",DIC="^VA(200,":"Staff Member: ",DIC=2:"Patient: ",DIC="^DPT(":"Patient: ",1:"Payer: ")
- +6 DO ^DIC
- +7 SET IEN=Y
- +8 QUIT
- +9 ;
- ASKPAT(FILTERS) ; Sets a list of Patients
- +1 ; Input: FILTERS - Current Array of filter settings
- +2 ; Output: FILTERS - Updated Array of filter settings
- +3 NEW DIC,DIR,DIRUT,DIVS,DUOUT,IBIENS,IEN,N,NM,NODE,X,XX,Y
- +4 SET DIC=2
- SET DIC(0)="AEM"
- +5 FOR
- Begin DoDot:1
- +6 DO ONE(.DIC,.IEN)
- +7 if +IEN<1
- QUIT
- +8 SET FILTERS(3,$PIECE(IEN,"^"))=$PIECE(IEN,"^",2)
- End DoDot:1
- if +IEN<1
- QUIT
- +9 QUIT