| 1 | IBCF12 ;ALB/AAS - PRINT BILL CONT. ;24 MAY 90
 | 
|---|
| 2 |  ;;2.0;INTEGRATED BILLING;**133,210**;21-MAR-94
 | 
|---|
| 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  ;MAP TO DGCRP2
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 |  ;Build ^Utility array of data to print in Block 20
 | 
|---|
| 8 |  ;   Print Medicare statment on bottom 4 of 23 lines
 | 
|---|
| 9 |  ;   Starting from top print the following, starting and finishing on
 | 
|---|
| 10 |  ;     same page.
 | 
|---|
| 11 |  ;   Print Revenue codes and subtotal
 | 
|---|
| 12 |  ;   Print Additional CPT/ICD codes
 | 
|---|
| 13 |  ;   Print offset and totals
 | 
|---|
| 14 |  ;   Print Opt visit dates
 | 
|---|
| 15 |  ;
 | 
|---|
| 16 |  ;^Utility(...)=free text^pointer to rev or date of additional code^additional code variable pointer^"c" if additional code^executable code
 | 
|---|
| 17 |  ;             =null ;blank line
 | 
|---|
| 18 | % ;
 | 
|---|
| 19 |  K ^UTILITY($J) S DGLCNT=0,DGSM=1 D SM^IBCU I 'DGSM D
 | 
|---|
| 20 |  .;  -dgsm=1 print medicare statement
 | 
|---|
| 21 |  .;  -dgsm=2 print NSC statement
 | 
|---|
| 22 |  .;  -dgsm=3 print both statements
 | 
|---|
| 23 |  .S DGRNODE=$G(^DGCR(399.3,$P(^DGCR(399,IBIFN,0),"^",7),0))
 | 
|---|
| 24 |  .I $P(^DGCR(399,IBIFN,0),"^",11)="i",$P(DGRNODE,"^",8) S DGSM=1
 | 
|---|
| 25 |  .I $P(DGRNODE,"^",9) S DGSM=DGSM+2
 | 
|---|
| 26 |  .Q
 | 
|---|
| 27 |  D ^IBCF14:DGSM
 | 
|---|
| 28 |  D REVCOD
 | 
|---|
| 29 |  D TOTAL
 | 
|---|
| 30 |  D ADDCOD:$O(^DGCR(399,IBIFN,"CP",0))
 | 
|---|
| 31 |  D OPVIS:$O(^DGCR(399,IBIFN,"OP",0))
 | 
|---|
| 32 |  I DGLCNT<18 D FILL
 | 
|---|
| 33 |  S DGCNT=0,DGPAG=1,DGTOTPAG=DGLCNT/23 S:$P(DGTOTPAG,".",2) DGTOTPAG=DGTOTPAG\1+1
 | 
|---|
| 34 |  Q
 | 
|---|
| 35 |  ;
 | 
|---|
| 36 | REVCOD ;I $D(IBIP) S X=IBLS_" DAY"_$S(IBLS>1:"S ",1:" ")_$S(IBBS'=IBU:IBBS,1:"INPATIENT CARE") D SET
 | 
|---|
| 37 |  I $D(IBIP) S X=IBLS_" DAY"_$S(IBLS>1:"S ",1:" ")_"INPATIENT CARE" D SET
 | 
|---|
| 38 |  S X="" D SET
 | 
|---|
| 39 |  S DGBS=""
 | 
|---|
| 40 |  F I=0:0 S DGBS=$O(^DGCR(399,IBIFN,"RC","ABS",DGBS)) Q:'DGBS  I $D(^DGCR(399.1,DGBS,0)) S X=$P(^DGCR(399.1,DGBS,0),"^") D SET,RCODE
 | 
|---|
| 41 |  ;
 | 
|---|
| 42 |  ; -loop thru all REV CODES and print those with no bedsection
 | 
|---|
| 43 |  S DGCNT=0,DGDA=0 F I=0:0 S DGDA=$O(^DGCR(399,IBIFN,"RC",DGDA)) Q:'DGDA  I $D(^(DGDA,0)),'$P(^(0),U,5) S X="^"_DGDA D SET
 | 
|---|
| 44 |  S X="^^^^W !,""SUBTOTAL"",?39,$S(IB(""U1"")']"""":"""",$P(IB(""U1""),U,1)]"""":$J($P(IB(""U1""),U,1),9,2),1:$J(0,9,2))" D SET
 | 
|---|
| 45 |  Q
 | 
|---|
| 46 |  ;
 | 
|---|
| 47 |  ;Input: DGBS - bedsection, IBIFN - Bill/Claim
 | 
|---|
| 48 | RCODE ;Find revenue codes sorted by bedsection
 | 
|---|
| 49 |  N DGRV,DGDA,IBCODE
 | 
|---|
| 50 |  S DGRV=0 F  S DGRV=$O(^DGCR(399,IBIFN,"RC","ABS",DGBS,DGRV)) Q:'DGRV  D
 | 
|---|
| 51 |  . S DGDA=0 F  S DGDA=$O(^DGCR(399,IBIFN,"RC","ABS",DGBS,DGRV,DGDA)) Q:'DGDA  D
 | 
|---|
| 52 |  .. S X=U_DGDA D SET
 | 
|---|
| 53 |  .. S IBCODE=$P($G(^DGCR(399,IBIFN,"RC",DGDA,0)),U,6) D:IBCODE>0
 | 
|---|
| 54 |  ... S X="          Procedure:    "_$P($$CPT^IBACSV(IBCODE),U)
 | 
|---|
| 55 |  ... D SET
 | 
|---|
| 56 |  Q
 | 
|---|
| 57 | ADDCOD ;Find additional codes
 | 
|---|
| 58 |  Q:'$D(IBPROC)#2  Q:IBPROC<4
 | 
|---|
| 59 |  D RSPACE
 | 
|---|
| 60 |  I DGRSPAC<(IBPROC-2) D FILL
 | 
|---|
| 61 |  S X="" D SET
 | 
|---|
| 62 |  S X="ADDITIONAL PROCEDURE CODES:" D SET
 | 
|---|
| 63 |  S J="" F I=1:1 S J=$O(IBPROC(J)) Q:'J  I I>3 S X="^"_$P(IBPROC(J),"^",2)_"^"_$P(IBPROC(J),"^")_"^C" D SET
 | 
|---|
| 64 |  Q
 | 
|---|
| 65 |  ;
 | 
|---|
| 66 | TOTAL ;Find offsets and Totals
 | 
|---|
| 67 |  D RSPACE
 | 
|---|
| 68 |  I DGRSPAC<$S($P(IB("U1"),"^",2):4,1:2) D FILL
 | 
|---|
| 69 |  S X="" D SET
 | 
|---|
| 70 |  I $P(IB("U1"),"^",2) S X="^^^^W !,""LESS "",$P(IB(""U1""),""^"",3),?39,$J($P(IB(""U1""),""^"",2),9,2)" D SET S X="" D SET
 | 
|---|
| 71 |  S X="^^^^W !,""TOTAL"",?31,$S(+$P(IBEPAR(1),""^"",10):""001"",1:""""),?39,$J($P(IB(""U1""),""^"")-$P(IB(""U1""),""^"",2),9,2)" D SET
 | 
|---|
| 72 |  Q
 | 
|---|
| 73 |  ;
 | 
|---|
| 74 | OPVIS ;Find outpatient Visit dates
 | 
|---|
| 75 |  D RSPACE
 | 
|---|
| 76 |  S DGCNT=0 F I=0:0 S I=$O(^DGCR(399,IBIFN,"OP",I)) Q:'I  S DGCNT=DGCNT+1
 | 
|---|
| 77 |  S DGCNT=DGCNT/3 I $P(DGCNT,".",2)]"" S DGCNT=DGCNT\1+1
 | 
|---|
| 78 |  I DGRSPAC<(DGCNT+1) D FILL
 | 
|---|
| 79 |  S X="" D SET
 | 
|---|
| 80 |  S X="OP VISIT DATE(S) BILLED              "
 | 
|---|
| 81 |  S IB01=0 F IB02=1:1 S IB01=$O(^DGCR(399,IBIFN,"OP",IB01)) Q:'IB01  S Y=IB01 X ^DD("DD") S X=X_Y_$S($O(^DGCR(399,IBIFN,"OP",IB01)):", ",1:"") I '(IB02#3) D SET S X="                                     "
 | 
|---|
| 82 |  I (IB02-1)#3 D SET
 | 
|---|
| 83 |  K IB01,IB02
 | 
|---|
| 84 |  Q
 | 
|---|
| 85 |  ;
 | 
|---|
| 86 | SET S DGLCNT=DGLCNT+1
 | 
|---|
| 87 |  I DGLCNT<24,DGSM,DGLCNT+$S(DGSM=1:5,DGSM=2:2,1:8)>23 S DGLCNT=24
 | 
|---|
| 88 |  G:$D(^UTILITY($J,"IB-RC",DGLCNT)) SET
 | 
|---|
| 89 |  S ^UTILITY($J,"IB-RC",DGLCNT)=X Q
 | 
|---|
| 90 |  Q
 | 
|---|
| 91 |  ;
 | 
|---|
| 92 | RSPACE ;Find remaining blank lines
 | 
|---|
| 93 |  S DGRSPAC=$S(DGLCNT<24:$S(DGSM=1:18,DGSM=2:21,DGSM=3:15,1:23)-DGLCNT,DGLCNT<47:46-DGLCNT,DGLCNT<70:69-DGLCNT,DGLCNT<93:92-DGLCNT,DGLCNT<116:115,1:138)
 | 
|---|
| 94 |  Q
 | 
|---|
| 95 | FILL ;fill space with blank lines so all will fit on page
 | 
|---|
| 96 |  F I=0:0 Q:($S(DGSM=1&(DGLCNT=18):1,DGSM=2&(DGLCNT=21):1,DGSM=3&(DGLCNT=15):1,1:0))!('(DGLCNT#23))  S X="" D SET
 | 
|---|
| 97 |  Q
 | 
|---|