Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: IBYPPC1

IBYPPC1.m

Go to the documentation of this file.
  1. IBYPPC1 ;ALB/ARH - IB*2*52 POST INIT: CM POST INIT (CONT) ; 16-MAY-1996
  1. ;;Version 2.0 ; INTEGRATED BILLING ;**52,86**; 21-MAR-94
  1. ;;Per VHA Directive 10-93-142, this routine should not be modified.
  1. ;
  1. ;
  1. ADDBS ; Add Billable Service (399.1, .2=1)
  1. N IBA,IBCNT,IBI,IBLN,IBFN,IBX,DD,DO,DLAYGO,DIC,DIE,DA,DR,X,Y S IBCNT=0
  1. ;
  1. F IBI=1:1 S IBLN=$P($T(BSF+IBI^IBYPPC5),";;",2) Q:+IBLN!(IBLN="") I $E(IBLN)?1A D
  1. . ;
  1. . I +$$MCCRUTL($P(IBLN,U,1),13) Q
  1. . ;
  1. . K DD,DO S DLAYGO=399.1,DIC="^DGCR(399.1,",DIC(0)="L",X=$P(IBLN,U,1) D FILE^DICN K DIC I Y<1 K X,Y Q
  1. . S IBFN=+Y,IBCNT=IBCNT+1
  1. . ;
  1. . S DR=".03////"_$P(IBLN,U,2)_";.2////"_1
  1. . S DIE="^DGCR(399.1,",DA=+IBFN D ^DIE K DIE,DA,DR,X,Y
  1. ;
  1. BSQ S IBA(1)=" >> "_IBCNT_" Billable Services added (399.1)..."
  1. D MES^XPDUTL(.IBA)
  1. Q
  1. ;
  1. ADDBE ; Add Billable Events (399.1, .21=1)
  1. N IBA,IBCNT,IBI,IBLN,IBFN,DD,DO,DLAYGO,DIC,DIE,DA,DR,X,Y S IBCNT=0
  1. ;
  1. F IBI=1:1 S IBLN=$P($T(BEF+IBI^IBYPPC5),";;",2) Q:+IBLN!(IBLN="") I $E(IBLN)?1A D
  1. . ;
  1. . I +$$MCCRUTL($P(IBLN,U,1),14) Q
  1. . ;
  1. . K DD,DO S DLAYGO=399.1,DIC="^DGCR(399.1,",DIC(0)="L",X=$P(IBLN,U,1) D FILE^DICN K DIC I Y<1 K X,Y Q
  1. . S IBFN=+Y,IBCNT=IBCNT+1
  1. . ;
  1. . S DR=".03////"_$P(IBLN,U,2)_";.21////"_1
  1. . S DIE="^DGCR(399.1,",DA=+IBFN D ^DIE K DIE,DA,DR,X,Y
  1. ;
  1. BEQ S IBA(1)=" >> "_IBCNT_" Billable Events added (399.1)..."
  1. D MES^XPDUTL(.IBA)
  1. Q
  1. ;
  1. ADDBR ; Add Billing Rates (363.3)
  1. N IBA,IBCNT,IBI,IBLN,IBFN,DD,DO,DLAYGO,DIC,DIE,DA,DR,X,Y S IBCNT=0
  1. ;
  1. F IBI=1:1 S IBLN=$P($T(BRF+IBI^IBYPPC5),";;",2) Q:+IBLN!(IBLN="") I $E(IBLN)?1A D
  1. . ;
  1. . I $O(^IBE(363.3,"B",$P(IBLN,U,1),0)) Q
  1. . ;
  1. . K DD,DO S DLAYGO=363.3,DIC="^IBE(363.3,",DIC(0)="L",X=$P(IBLN,U,1) D FILE^DICN K DIC I Y<1 K X,Y Q
  1. . S IBFN=+Y,IBCNT=IBCNT+1
  1. . ;
  1. . S DR=".02////"_$P(IBLN,U,2)_";.03////"_$P(IBLN,U,3)_";.04////"_$P(IBLN,U,4)_";.05////"_$P(IBLN,U,5)
  1. . S DIE="^IBE(363.3,",DA=+IBFN D ^DIE K DIE,DA,DR,X,Y
  1. ;
  1. BRQ S IBA(1)=" >> "_IBCNT_" Billing Rates added (363.3)..."
  1. D MES^XPDUTL(.IBA)
  1. Q
  1. ;
  1. ADDCS ; Add Charge Sets (363.1)
  1. N IBA,IBCNT,IBI,IBLN,IBFN,IBBR,IBBE,IBRVCD,DD,DO,DLAYGO,DIC,DIE,DA,DR,X,Y S IBCNT=0
  1. ;
  1. F IBI=1:1 S IBLN=$P($T(CSF+IBI^IBYPPC5),";;",2) Q:+IBLN!(IBLN="") I $E(IBLN)?1A D
  1. . ;
  1. . I $O(^IBE(363.1,"B",$P(IBLN,U,1),0)) Q
  1. . S IBBR=$P(IBLN,U,2),IBBR=$O(^IBE(363.3,"B",IBBR,0)) I 'IBBR Q
  1. . S IBBE=$$MCCRUTL($P(IBLN,U,3),14) Q:'IBBE
  1. . S IBRVCD=$$RVCD($P(IBLN,U,5))
  1. . ;
  1. . K DD,DO S DLAYGO=363.1,DIC="^IBE(363.1,",DIC(0)="L",X=$P(IBLN,U,1) D FILE^DICN K DIC I Y<1 K X,Y Q
  1. . S IBFN=+Y,IBCNT=IBCNT+1
  1. . ;
  1. . S DR=".02////"_IBBR_";.03////"_IBBE
  1. . I +$P(IBLN,U,4) S DR=DR_";.04////"_$P(IBLN,U,4)
  1. . I +IBRVCD S DR=DR_";.05////"_IBRVCD
  1. . S DIE="^IBE(363.1,",DA=+IBFN D ^DIE K DIE,DA,DR,X,Y
  1. ;
  1. CSQ S IBA(1)=" >> "_IBCNT_" Charge Sets added (363.1)..."
  1. D MES^XPDUTL(.IBA)
  1. Q
  1. ;
  1. ADDCI ; Add Charge Items (363.2) needs Charge Sets
  1. N IBA,IBCNT,IBI,IBLN,IBFN,IBCS,IBCI,IBRVCD,DD,DO,DLAYGO,DIC,DIE,DA,DR,X,Y,IBX S IBCNT=0
  1. ;
  1. F IBI=1:1 S IBLN=$P($T(CIF+IBI^IBYPPC61),";;",2) Q:+IBLN!(IBLN="") I $E(IBLN)?1A D SETCI
  1. F IBI=1:1 S IBLN=$P($T(CIF+IBI^IBYPPC6),";;",2) Q:+IBLN!(IBLN="") I $E(IBLN)?1A D SETCI
  1. F IBI=1:1 S IBLN=$P($T(CIF+IBI^IBYPPC7),";;",2) Q:+IBLN!(IBLN="") I $E(IBLN)?1A D SETCI
  1. ;
  1. CIQ S IBA(1)=" >> "_IBCNT_" Charge Items added (363.2)..."
  1. D MES^XPDUTL(.IBA)
  1. Q
  1. ;
  1. SETCI ; set Charge Item (duplicates based on item, CS, eff dt, rev cd)
  1. ;
  1. S IBCS=$P(IBLN,U,2),IBCS=+$O(^IBE(363.1,"B",IBCS,0)) I 'IBCS Q
  1. S IBCI=+$$MCCRUTL($P(IBLN,U,1),5) I 'IBCI Q
  1. S IBRVCD=$$RVCD($P(IBLN,U,4))
  1. S IBX=0 F S IBX=$O(^IBA(363.2,"AIVDTS"_IBCS,IBCI,-$P(IBLN,U,3),IBX)) Q:'IBX I $P(^IBA(363.2,IBX,0),U,6)=IBRVCD S IBCI=0
  1. Q:'IBCI
  1. ;
  1. K DD,DO S DLAYGO=363.2,DIC="^IBA(363.2,",DIC(0)="L",X=IBCI_";DGCR(399.1," D FILE^DICN K DIC I Y<1 K X,Y Q
  1. S IBFN=+Y,IBCNT=IBCNT+1
  1. ;
  1. S DR=".02////"_IBCS_";.03////"_$P(IBLN,U,3)_";.05////"_$P(IBLN,U,5)
  1. I +IBRVCD S DR=DR_";.06////"_IBRVCD
  1. S DIE="^IBA(363.2,",DA=+IBFN D ^DIE K DIE,DA,DR,X,Y
  1. Q
  1. ;
  1. ADDRS ; add Rate Schedules (363) (needs billable service and charge sets)
  1. N IBA,IBCNT,IBI,IBLN,IBFN,IBRT,IBBS,IBJ,IBLNCS,IBCS,IBCSFN,DD,DO,DLAYGO,DIC,DIE,DA,DR,X,Y S IBCNT=0
  1. ;
  1. F IBI=1:1 S IBLN=$P($T(RSF+IBI^IBYPPC5),";;",2) Q:+IBLN!(IBLN="") I $E(IBLN)?1A D
  1. . ;
  1. . I $O(^IBE(363,"B",$P(IBLN,U,1),0)) Q
  1. . S IBBS=$P(IBLN,U,4) I IBBS'="" S IBBS=$$MCCRUTL(IBBS,13) Q:'IBBS
  1. . S IBRT=$P(IBLN,U,2),IBRT=$O(^DGCR(399.3,"B",IBRT,0)) D Q:'IBRT
  1. .. I 'IBRT D MSG(" **** Rate Type "_$P(IBLN,U,2)_" not defined, RS "_$P(IBLN,U,1)_" not created")
  1. .. I +$P($G(^DGCR(399.3,+IBRT,0)),U,3) S IBRT=0 D MSG(" **** Rate Type "_$P(IBLN,U,2)_" not Active, RS "_$P(IBLN,U,1)_" not created")
  1. . ;
  1. . K DD,DO S DLAYGO=363,DIC="^IBE(363,",DIC(0)="L",X=$P(IBLN,U,1) D FILE^DICN K DIC,DINUM,DLAYGO I Y<1 K X,Y Q
  1. . S IBFN=+Y,IBCNT=IBCNT+1
  1. . ;
  1. . S DR=".02////"_IBRT_";.03////"_$P(IBLN,U,3) I +IBBS S DR=DR_";.04////"_IBBS
  1. . ;
  1. . S DIE="^IBE(363,",DA=+Y D ^DIE K DIE,DA,DR,X,Y
  1. . ;
  1. . ; charge sets (multiple)
  1. . S IBLNCS=$P(IBLN,":",2,999) F IBJ=1:1 S IBCS=$P(IBLNCS,":",IBJ) Q:IBCS="" D
  1. .. S IBCSFN=$O(^IBE(363.1,"B",IBCS,0)) Q:'IBCSFN
  1. .. ;
  1. .. S DLAYGO=363,DA(1)=+IBFN,DIC="^IBE(363,"_DA(1)_",11,",DIC(0)="L",X=IBCS,DIC("DR")=".02////"_1,DIC("P")="363.0011P" D ^DIC K DIC,DIE
  1. ;
  1. ;
  1. RSQ S IBA(1)=" >> "_IBCNT_" Rate Schedules added (363)..."
  1. D MES^XPDUTL(.IBA)
  1. Q
  1. ;
  1. MCCRUTL(X,P) ; returns IFN of item in 399.1 if Name is found and piece P is true
  1. N IBX,IBY S IBY=""
  1. I $G(X)'="" S IBX=0 F S IBX=$O(^DGCR(399.1,"B",X,IBX)) Q:'IBX I $P($G(^DGCR(399.1,IBX,0)),U,+$G(P)) S IBY=IBX
  1. Q IBY
  1. ;
  1. RVCD(RVCD) ; returns IFN if revenue code is valid and active
  1. N IBX,IBY S IBY=""
  1. I +$G(RVCD) S IBX=$G(^DGCR(399.2,+RVCD,0)) I +$P(IBX,U,3) S IBY=RVCD
  1. Q IBY
  1. ;
  1. MSG(X) ;
  1. N IBX S IBX=$O(IBA(999999),-1) S:'IBX IBX=1 S IBX=IBX+1
  1. S IBA(IBX)=$G(X)
  1. Q