- IBCF32 ;ALB/BGA -UB92 HCFA-1450 (GATHER CODES) ;25-AUG-1993
- ;;Version 2.0 ; INTEGRATED BILLING ;; 21-MAR-94
- ;;Per VHA Directive 10-93-142, this routine should not be modified.
- ;
- ;This routine requires prior execution of ibcf3.
- ;
- DX ;set diagnosis codes fl 67-71
- ;S IBX=$G(^DGCR(399,+IBIFN,"C"))
- ;S IBI=0 F IBJ=14:1:18 S IBFL(67+IBI)=$P($G(^ICD9(+$P(IBX,U,IBJ),0)),U,1),IBI=IBI+1
- N IBINDXX D SET^IBCSC4D(IBIFN,"",.IBINDXX) S IBX=0 F IBI=1:1:9 S IBX=$O(IBINDXX(IBX)) Q:'IBX S IBFL(66+IBI)=$P($G(^ICD9(+IBINDXX(IBX),0)),U,1)
- ;
- 76 ;fl 76 admitting diagnoses (if a ICD dx not entered get old position of dx)
- S IBCBCOMM=$G(^DGCR(399,+IBIFN,"U1"))
- S IBX=$P(IBCU2,U,1) S IBFL(76)=$S(+IBX:$P($G(^ICD9(+IBX,0)),U,1),1:$P(IBCBCOMM,U,5))
- ;
- 78 S IBX=$P(IBCUF31,U,2) D SPLIT^IBCF3(78,2,3,IBX) ; set IBFL(78)
- ;fl 79 procedure coding method used
- S IBFL(79)=$P(IBCBILL,U,9)
- ;
- 82 ;fl 82 attending physician id
- S IBFL(82)=$P(IBCBCOMM,U,13) I IBFL(82)="" S IBFL(82)="Dept. Veterans Affairs"
- ;fl 83 other physician id
- S IBFL(83)=$P(IBCBCOMM,U,14)
- ;
- 84 ;fl 84 remarks
- S IBFL(84,1)="Patient ID: "_$P(VADM(2),U,2)
- S IBX=$P($G(^DGCR(399.3,+$P(IBCBILL,U,7),0)),U,2),IBFL(84,2)="Bill Type: "_$S(IBX'="":IBX,1:"UNSPECIFIED")
- S IBFL(84,3)=$P(IBSIGN,U,4)
- S IBFL(84,4)=$P(IBCBCOMM,U,8)
- ;
- 85 ;fl 85 provider representative signature
- S IBFL(85,1)=$P(IBSIGN,U,1)
- S IBFL(85,2)=$P(IBSIGN,U,2)
- 86 ;date bill submitted
- S IBX=$P($G(^DGCR(399,+IBIFN,"S")),U,12),IBX=$S(+IBPNT:DT,+IBX:IBX,1:DT),IBFL(86)=$$DATE^IBCF3(IBX)
- Q
- ;
- ;ADD OCCURRENCE CODES AND SPANS TO PRINT ARRAY
- 32 ;the following rules apply to printing occurrence codes and spans (see FL 32 in UB-92 manual)
- ; - fields 32a-36a are used before 32b-36b
- ; - if all occ code fields are used (32a&b -35a&b) then occ span fields (36a&b) may be used, w/ thru date blank
- ; - if all occ span fields are used (36a&b) the occ code fields 34&35 may be used, w/ code&from date in 34 and code&thru date in 35
- ;
- K IB32,IB36 S IBPG=0 F IBI=32:1:36 K IBFL(IBI) S IBFL(IBI)="0^0"
- ;occurrence codes/span and dates 32-35 ,36
- ;load codes and spans into two flat arrays
- S (IBI,IBJ,IBX)=0
- F S IBX=$O(^DGCR(399,+IBIFN,"OC",IBX)) Q:'IBX S IBY=$G(^(IBX,0)),IBZ=$G(^DGCR(399.1,+IBY,0)) I +$P(IBZ,U,4) D
- . I +$P(IBZ,U,10) S IBJ=IBJ+1,IB36(IBJ)=$P(IBZ,U,2)_U_$$DATE^IBCF3($P(IBY,U,2))_U_$$DATE^IBCF3($P(IBY,U,4)) Q
- . S IBI=IBI+1,IB32(IBI)=$P(IBZ,U,2)_U_$$DATE^IBCF3($P(IBY,U,2))
- S IB32=IBI_U_0
- S IB36=IBJ_U_0
- ;
- OCC ;
- S IBPG=IBPG+1
- S IBI=+$G(IBFL(32))+1
- I +IB32 F IBI=IBI,IBI+1 S IBX=+$P(IB32,U,2) F IBJ=32,33,34,35 S IBX=$O(IB32(IBX)) Q:'IBX D
- . S IBFL(IBJ,IBI)=IB32(IBX)
- . S $P(IBFL(IBJ),U,1)=+IBFL(IBJ)+1
- . S $P(IB32,U,1)=+IB32-1
- . S $P(IB32,U,2)=IBX
- ;
- S IBX=+$P(IB36,U,2),IBI=+$G(IBFL(36))+1
- I +IB36 F IBI=IBI,IBI+1 S IBX=$O(IB36(IBX)) Q:'IBX D
- . S IBFL(36,IBI)=IB36(IBX)
- . S $P(IBFL(36),U,1)=+IBFL(36)+1
- . S $P(IB36,U,1)=+IB36-1
- . S $P(IB36,U,2)=IBX
- ;
- I 'IB32,'IB36 G END
- ;
- ; add occ codes from 32 to occ span in 36
- S IBI=+IBFL(36)+1 F IBI=IBI,IBI+1 I +IB32>0,'IB36,IBI'>(IBPG*2) D
- . S IBX=+$P(IB32,U,2),IBX=$O(IB32(IBX)) Q:'IBX
- . S IBY=IB32(IBX)
- . S $P(IB32,U,1)=+IB32-1
- . S $P(IB32,U,2)=IBX
- . S IBX=+IBFL(36)+1
- . S IBFL(36,IBX)=IBY
- . S $P(IBFL(36),U,1)=+IBFL(36)+1
- ;
- ; add occ span from 36 to occ code in 32
- S IBI=+IBFL(34)+1 F IBI=IBI,IBI+1 I +IB36>0,'IB32,IBI'>(IBPG*2) D
- . S IBX=+$P(IB36,U,2),IBX=$O(IB36(IBX)) Q:'IBX
- . S IBY=IB36(IBX)
- . S $P(IB36,U,1)=+IB36-1
- . S $P(IB36,U,2)=IBX
- . S IBX=+IBFL(34)+1
- . S IBFL(34,IBX)=$P(IBY,U,1)_U_$P(IBY,U,2),$P(IBFL(34),U,1)=+IBFL(34)+1
- . S IBFL(35,IBX)=$P(IBY,U,1)_U_$P(IBY,U,3),$P(IBFL(35),U,1)=IBX
- G OCC
- END ;
- K IB32,IB36
- Q
- IBCF32 ;ALB/BGA -UB92 HCFA-1450 (GATHER CODES) ;25-AUG-1993
- +1 ;;Version 2.0 ; INTEGRATED BILLING ;; 21-MAR-94
- +2 ;;Per VHA Directive 10-93-142, this routine should not be modified.
- +3 ;
- +4 ;This routine requires prior execution of ibcf3.
- +5 ;
- DX ;set diagnosis codes fl 67-71
- +1 ;S IBX=$G(^DGCR(399,+IBIFN,"C"))
- +2 ;S IBI=0 F IBJ=14:1:18 S IBFL(67+IBI)=$P($G(^ICD9(+$P(IBX,U,IBJ),0)),U,1),IBI=IBI+1
- +3 NEW IBINDXX
- DO SET^IBCSC4D(IBIFN,"",.IBINDXX)
- SET IBX=0
- FOR IBI=1:1:9
- SET IBX=$ORDER(IBINDXX(IBX))
- IF 'IBX
- QUIT
- SET IBFL(66+IBI)=$PIECE($GET(^ICD9(+IBINDXX(IBX),0)),U,1)
- +4 ;
- 76 ;fl 76 admitting diagnoses (if a ICD dx not entered get old position of dx)
- +1 SET IBCBCOMM=$GET(^DGCR(399,+IBIFN,"U1"))
- +2 SET IBX=$PIECE(IBCU2,U,1)
- SET IBFL(76)=$SELECT(+IBX:$PIECE($GET(^ICD9(+IBX,0)),U,1),1:$PIECE(IBCBCOMM,U,5))
- +3 ;
- 78 ; set IBFL(78)
- SET IBX=$PIECE(IBCUF31,U,2)
- DO SPLIT^IBCF3(78,2,3,IBX)
- +1 ;fl 79 procedure coding method used
- +2 SET IBFL(79)=$PIECE(IBCBILL,U,9)
- +3 ;
- 82 ;fl 82 attending physician id
- +1 SET IBFL(82)=$PIECE(IBCBCOMM,U,13)
- IF IBFL(82)=""
- SET IBFL(82)="Dept. Veterans Affairs"
- +2 ;fl 83 other physician id
- +3 SET IBFL(83)=$PIECE(IBCBCOMM,U,14)
- +4 ;
- 84 ;fl 84 remarks
- +1 SET IBFL(84,1)="Patient ID: "_$PIECE(VADM(2),U,2)
- +2 SET IBX=$PIECE($GET(^DGCR(399.3,+$PIECE(IBCBILL,U,7),0)),U,2)
- SET IBFL(84,2)="Bill Type: "_$SELECT(IBX'="":IBX,1:"UNSPECIFIED")
- +3 SET IBFL(84,3)=$PIECE(IBSIGN,U,4)
- +4 SET IBFL(84,4)=$PIECE(IBCBCOMM,U,8)
- +5 ;
- 85 ;fl 85 provider representative signature
- +1 SET IBFL(85,1)=$PIECE(IBSIGN,U,1)
- +2 SET IBFL(85,2)=$PIECE(IBSIGN,U,2)
- 86 ;date bill submitted
- +1 SET IBX=$PIECE($GET(^DGCR(399,+IBIFN,"S")),U,12)
- SET IBX=$SELECT(+IBPNT:DT,+IBX:IBX,1:DT)
- SET IBFL(86)=$$DATE^IBCF3(IBX)
- +2 QUIT
- +3 ;
- +4 ;ADD OCCURRENCE CODES AND SPANS TO PRINT ARRAY
- 32 ;the following rules apply to printing occurrence codes and spans (see FL 32 in UB-92 manual)
- +1 ; - fields 32a-36a are used before 32b-36b
- +2 ; - if all occ code fields are used (32a&b -35a&b) then occ span fields (36a&b) may be used, w/ thru date blank
- +3 ; - if all occ span fields are used (36a&b) the occ code fields 34&35 may be used, w/ code&from date in 34 and code&thru date in 35
- +4 ;
- +5 KILL IB32,IB36
- SET IBPG=0
- FOR IBI=32:1:36
- KILL IBFL(IBI)
- SET IBFL(IBI)="0^0"
- +6 ;occurrence codes/span and dates 32-35 ,36
- +7 ;load codes and spans into two flat arrays
- +8 SET (IBI,IBJ,IBX)=0
- +9 FOR
- SET IBX=$ORDER(^DGCR(399,+IBIFN,"OC",IBX))
- IF 'IBX
- QUIT
- SET IBY=$GET(^(IBX,0))
- SET IBZ=$GET(^DGCR(399.1,+IBY,0))
- IF +$PIECE(IBZ,U,4)
- Begin DoDot:1
- +10 IF +$PIECE(IBZ,U,10)
- SET IBJ=IBJ+1
- SET IB36(IBJ)=$PIECE(IBZ,U,2)_U_$$DATE^IBCF3($PIECE(IBY,U,2))_U_$$DATE^IBCF3($PIECE(IBY,U,4))
- QUIT
- +11 SET IBI=IBI+1
- SET IB32(IBI)=$PIECE(IBZ,U,2)_U_$$DATE^IBCF3($PIECE(IBY,U,2))
- End DoDot:1
- +12 SET IB32=IBI_U_0
- +13 SET IB36=IBJ_U_0
- +14 ;
- OCC ;
- +1 SET IBPG=IBPG+1
- +2 SET IBI=+$GET(IBFL(32))+1
- +3 IF +IB32
- FOR IBI=IBI,IBI+1
- SET IBX=+$PIECE(IB32,U,2)
- FOR IBJ=32,33,34,35
- SET IBX=$ORDER(IB32(IBX))
- IF 'IBX
- QUIT
- Begin DoDot:1
- +4 SET IBFL(IBJ,IBI)=IB32(IBX)
- +5 SET $PIECE(IBFL(IBJ),U,1)=+IBFL(IBJ)+1
- +6 SET $PIECE(IB32,U,1)=+IB32-1
- +7 SET $PIECE(IB32,U,2)=IBX
- End DoDot:1
- +8 ;
- +9 SET IBX=+$PIECE(IB36,U,2)
- SET IBI=+$GET(IBFL(36))+1
- +10 IF +IB36
- FOR IBI=IBI,IBI+1
- SET IBX=$ORDER(IB36(IBX))
- IF 'IBX
- QUIT
- Begin DoDot:1
- +11 SET IBFL(36,IBI)=IB36(IBX)
- +12 SET $PIECE(IBFL(36),U,1)=+IBFL(36)+1
- +13 SET $PIECE(IB36,U,1)=+IB36-1
- +14 SET $PIECE(IB36,U,2)=IBX
- End DoDot:1
- +15 ;
- +16 IF 'IB32
- IF 'IB36
- GOTO END
- +17 ;
- +18 ; add occ codes from 32 to occ span in 36
- +19 SET IBI=+IBFL(36)+1
- FOR IBI=IBI,IBI+1
- IF +IB32>0
- IF 'IB36
- IF IBI'>(IBPG*2)
- Begin DoDot:1
- +20 SET IBX=+$PIECE(IB32,U,2)
- SET IBX=$ORDER(IB32(IBX))
- IF 'IBX
- QUIT
- +21 SET IBY=IB32(IBX)
- +22 SET $PIECE(IB32,U,1)=+IB32-1
- +23 SET $PIECE(IB32,U,2)=IBX
- +24 SET IBX=+IBFL(36)+1
- +25 SET IBFL(36,IBX)=IBY
- +26 SET $PIECE(IBFL(36),U,1)=+IBFL(36)+1
- End DoDot:1
- +27 ;
- +28 ; add occ span from 36 to occ code in 32
- +29 SET IBI=+IBFL(34)+1
- FOR IBI=IBI,IBI+1
- IF +IB36>0
- IF 'IB32
- IF IBI'>(IBPG*2)
- Begin DoDot:1
- +30 SET IBX=+$PIECE(IB36,U,2)
- SET IBX=$ORDER(IB36(IBX))
- IF 'IBX
- QUIT
- +31 SET IBY=IB36(IBX)
- +32 SET $PIECE(IB36,U,1)=+IB36-1
- +33 SET $PIECE(IB36,U,2)=IBX
- +34 SET IBX=+IBFL(34)+1
- +35 SET IBFL(34,IBX)=$PIECE(IBY,U,1)_U_$PIECE(IBY,U,2)
- SET $PIECE(IBFL(34),U,1)=+IBFL(34)+1
- +36 SET IBFL(35,IBX)=$PIECE(IBY,U,1)_U_$PIECE(IBY,U,3)
- SET $PIECE(IBFL(35),U,1)=IBX
- End DoDot:1
- +37 GOTO OCC
- END ;
- +1 KILL IB32,IB36
- +2 QUIT