| 1 | IBTRKR ;ALB/AAS - CLAIMS TRACKER - AUTO-ENROLLER ; 4-AUG-93
 | 
|---|
| 2 |  ;;2.0;INTEGRATED BILLING;**23,43,45,56,214**;21-MAR-94
 | 
|---|
| 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 | INP ; -- Inpatient Tracker
 | 
|---|
| 6 |  ;    called by ibamtd  from DGPM MOVEMENT EVENTS
 | 
|---|
| 7 |  ;                                               add   edit   delete
 | 
|---|
| 8 |  ;  dgpma = after movement 0th node file 405  : data   data   null
 | 
|---|
| 9 |  ;  dgpmp = prior movement 0th node file 405  : null   data   data
 | 
|---|
| 10 |  ;  dfn   = ien of patient
 | 
|---|
| 11 |  ;  
 | 
|---|
| 12 |  N %,%H,%I,IBMVAD,IBMVTP,IBTRKR
 | 
|---|
| 13 |  ;
 | 
|---|
| 14 |  ;  inpatient claims tracking turned off
 | 
|---|
| 15 |  S IBTRKR=$G(^IBE(350.9,1,6)) I '$P(IBTRKR,"^",2) Q
 | 
|---|
| 16 |  ;
 | 
|---|
| 17 |  ;  movement type 1=admission, 2=transfer, 3=discharge, 6=specialty chg
 | 
|---|
| 18 |  S IBMVTP=$S($P(DGPMA,"^",2):$P(DGPMA,"^",2),1:$P(DGPMP,"^",2)) I 'IBMVTP Q
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 |  ;  $p(14)=admission movement ptr entry in file 405
 | 
|---|
| 21 |  S IBMVAD=$S(DGPMA'="":$P(DGPMA,"^",14),1:$P(DGPMP,"^",14)) I 'IBMVAD Q
 | 
|---|
| 22 |  ;
 | 
|---|
| 23 |  D WRITE("Updating claims tracking ... ",2)
 | 
|---|
| 24 |  ;
 | 
|---|
| 25 |  I '$D(VAIN(1)) D INP^VADPT
 | 
|---|
| 26 |  ;
 | 
|---|
| 27 |  ;  add/edit admission
 | 
|---|
| 28 |  I IBMVTP=1 D ADMIT Q
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 |  ;  transfer to asih (patch 23)
 | 
|---|
| 31 |  I $P($G(^DGPM(+$P(DGPMA,"^",15),0)),"^",2)=1 S IBMVAD=$P(DGPMA,"^",15) D ADMIT Q
 | 
|---|
| 32 |  ;
 | 
|---|
| 33 |  ;  specialty change
 | 
|---|
| 34 |  I IBMVTP=6 D SPECIAL Q
 | 
|---|
| 35 |  ;
 | 
|---|
| 36 |  D WRITE("completed.")
 | 
|---|
| 37 |  Q
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 | WRITE(MSG,FF)         ;  write message on screen if not silent
 | 
|---|
| 41 |  ;  write 'F'orm 'F'eeds count followed by msg (optional)
 | 
|---|
| 42 |  N %
 | 
|---|
| 43 |  I '$D(IB20),'$G(DGQUIET) D
 | 
|---|
| 44 |  .   F %=1:1:$G(FF) W !
 | 
|---|
| 45 |  .   W MSG
 | 
|---|
| 46 |  Q
 | 
|---|
| 47 |  ;
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 | ADMIT ; -- process admission movements
 | 
|---|
| 50 |  ;  ibmvad is admission movement pointer to file 405
 | 
|---|
| 51 |  ;  dgpma  is movement entry from file 405
 | 
|---|
| 52 |  N %,%H,%I,IBCTFLAG,IBNEW,IBRANDOM,IBTRN,LASTADM,LASTDA,LASTDATA
 | 
|---|
| 53 |  ;
 | 
|---|
| 54 |  ;  this is a deleted admission from file 405, dgpma=null
 | 
|---|
| 55 |  I DGPMA="" D DELADMIT Q
 | 
|---|
| 56 |  ;
 | 
|---|
| 57 |  ;  try and relink to existing entry if already there
 | 
|---|
| 58 |  ;  find the last admission, check to make sure its inactive and there
 | 
|---|
| 59 |  ;  is not a pointer to the movement file ($p(5)).  if the current
 | 
|---|
| 60 |  ;  admission date is within 5 days, update the entry.
 | 
|---|
| 61 |  S LASTADM=$O(^IBT(356,"APTY",DFN,+$O(^IBE(356.6,"AC",1,0)),9999999),-1)
 | 
|---|
| 62 |  I LASTADM S LASTDA=+$O(^IBT(356,"APTY",DFN,1,LASTADM,0)),LASTDATA=$G(^IBT(356,LASTDA,0)) I $P(LASTDATA,"^",20)=0,$P(LASTDATA,"^",5)="" D  Q:$G(IBCTFLAG)
 | 
|---|
| 63 |  .   S %=$$FMDIFF^XLFDT($P(DGPMA,"."),$P(LASTADM,"."))
 | 
|---|
| 64 |  .   I %>-5,%<5 D RELINK^IBTRKRU(LASTDA,IBMVAD,$P(DGPMA,"^")),RELBULL^IBTRKRBR(DFN,LASTDA,DGPMA,+$G(VAIN(3))),WRITE("entry re-linked.") S IBCTFLAG=1
 | 
|---|
| 65 |  ;
 | 
|---|
| 66 |  ;  random sampler, admission date must equal today (dt)
 | 
|---|
| 67 |  I +$G(VAIN(3)),($E(+DGPMA,1,7)=DT) S IBRANDOM=$$RANDOM^IBTRKR1(+VAIN(3))
 | 
|---|
| 68 |  ;
 | 
|---|
| 69 |  N D,D0,DI,DIG,DIH,DIU,DIV,DQ,IBADMDT,IBETYP  ; variables left by ibtutl
 | 
|---|
| 70 |  ;  inpatient claims tracking = all patients
 | 
|---|
| 71 |  I $P(IBTRKR,"^",2)=2 D  Q
 | 
|---|
| 72 |  .   D ADM^IBTUTL(IBMVAD,+$E(+DGPMA,1,12),$G(IBRANDOM),$P(DGPMA,"^",27))
 | 
|---|
| 73 |  .   D WRITE("entry "_$S($G(IBNEW):"added.",1:"edited."))
 | 
|---|
| 74 |  .   I $G(IBRANDOM),$G(IBTRN) D ADMTBULL^IBTRKRBA(DFN,IBTRN,DGPMA,+$G(VAIN(3)))
 | 
|---|
| 75 |  ;
 | 
|---|
| 76 |  ;  inpatient claims tracking = insured and ur only
 | 
|---|
| 77 |  I $P(IBTRKR,"^",2)=1,$S($G(IBRANDOM):1,'$$INSURED^IBCNS1(DFN,+DGPMA):0,1:$$PTCOV^IBCNSU3(DFN,+DGPMA,"INPATIENT")) D  Q
 | 
|---|
| 78 |  .   D ADM^IBTUTL(IBMVAD,+$E(+DGPMA,1,12),$G(IBRANDOM),$P(DGPMA,"^",27))
 | 
|---|
| 79 |  .   D WRITE("entry "_$S($G(IBNEW):"added.",1:"edited."))
 | 
|---|
| 80 |  .   I $G(IBRANDOM),$G(IBTRN) D ADMTBULL^IBTRKRBA(DFN,IBTRN,DGPMA,+$G(VAIN(3)))
 | 
|---|
| 81 |  ;
 | 
|---|
| 82 |  ;  inpatient claims tracking = insured and ur only, but not insurred
 | 
|---|
| 83 |  ;  need to send off RDV in background
 | 
|---|
| 84 |  N IBT
 | 
|---|
| 85 |  I $P(IBTRKR,"^",2)=1,'$$INSURED^IBCNS1(DFN,+DGPMA),$$TFL^IBARXMU(DFN,.IBT),'$D(^IBT(356,"ARDV",DFN)) D ADM^IBCNRDV(DFN,IBMVAD,+$E(+DGPMA,1,12),$G(IBRANDOM),$P(DGPMA,"^",27)) D WRITE("Remote Query for insurance sent.") Q
 | 
|---|
| 86 |  ;
 | 
|---|
| 87 |  ;
 | 
|---|
| 88 |  D WRITE("no action taken.")
 | 
|---|
| 89 |  Q
 | 
|---|
| 90 |  ;
 | 
|---|
| 91 |  ;
 | 
|---|
| 92 | DELADMIT ;  deleted admission
 | 
|---|
| 93 |  N DA,FILE,IBDATE,IBTRN,SPECALTY
 | 
|---|
| 94 |  S IBTRN=$O(^IBT(356,"AD",+IBMVAD,0)) I IBTRN D  Q
 | 
|---|
| 95 |  .   S SPECALTY=+$P($G(^UTILITY($J,"ATS",+$P(DGPMP,"^"),+$O(^UTILITY($J,"ATS",+$P(DGPMP,"^"),0)))),"^",9)
 | 
|---|
| 96 |  .   ;  send information bulletin
 | 
|---|
| 97 |  .   D DELBULL^IBTRKRBD(DFN,IBTRN,DGPMP,SPECALTY)
 | 
|---|
| 98 |  .   ;  clean up files pointing to 405
 | 
|---|
| 99 |  .   F FILE=356.9,356.91,356.94 S DA=0 F  S DA=$O(^IBT(FILE,"C",+IBMVAD,DA)) Q:'DA  D DELETE^IBTRKRU(FILE,DA)
 | 
|---|
| 100 |  .   S IBDATE=0 F  S IBDATE=$O(^IBT(356.93,"AMVD",+IBMVAD,IBDATE)) Q:'IBDATE  S DA=0 F  S DA=$O(^IBT(356.93,"AMVD",+IBMVAD,IBDATE,DA)) Q:'DA  D DELETE^IBTRKRU(356.93,DA)
 | 
|---|
| 101 |  .   ;  inactivate entry in ct 356
 | 
|---|
| 102 |  .   D INACTIVE^IBTRKRU(IBTRN)
 | 
|---|
| 103 |  .   D WRITE("entry inactivated.")
 | 
|---|
| 104 |  D WRITE("no action taken.")
 | 
|---|
| 105 |  Q
 | 
|---|
| 106 |  ;
 | 
|---|
| 107 |  ;
 | 
|---|
| 108 | SPECIAL ;  specialty change
 | 
|---|
| 109 |  ;  deleted movement
 | 
|---|
| 110 |  I DGPMA="" D WRITE("no action taken.") Q
 | 
|---|
| 111 |  ;
 | 
|---|
| 112 |  ;  if specialty change is past 7 days, quit
 | 
|---|
| 113 |  I +DGPMA<$$FMADD^XLFDT(+DT,-7) D WRITE("no action taken.") Q
 | 
|---|
| 114 |  ;
 | 
|---|
| 115 |  N IBDT,IBTSA,IBTSP,IBTRC,IBTRN,IBTRV
 | 
|---|
| 116 |  ;  treating specialty after
 | 
|---|
| 117 |  S IBTSA=$P($G(^DIC(42.4,+$P($G(^DIC(45.7,+$P(DGPMA,"^",9),0)),"^",2),0)),"^",3)
 | 
|---|
| 118 |  ;
 | 
|---|
| 119 |  ;  treating specialty before
 | 
|---|
| 120 |  I DGPMP'="" S IBTSP=$P($G(^DIC(42.4,+$P($G(^DIC(45.7,+$P(DGPMP,"^",9),0)),"^",2),0)),"^",3)
 | 
|---|
| 121 |  ;
 | 
|---|
| 122 |  I DGPMP="" D
 | 
|---|
| 123 |  .   S IBDT=9999999.9999999-$P(DGPMA,"^")
 | 
|---|
| 124 |  .   S IBTSP=$P($G(^DIC(45.7,+$O(^(+$O(^DGPM("ATS",+DFN,+IBMVAD,+IBDT)),0)),0)),"^",2)
 | 
|---|
| 125 |  .   S IBTSP=$P($G(^DIC(42.4,+IBTSP,0)),"^",3)
 | 
|---|
| 126 |  ;
 | 
|---|
| 127 |  ;  no change in major bed section
 | 
|---|
| 128 |  I IBTSA=IBTSP D WRITE("no action taken.") Q
 | 
|---|
| 129 |  ;
 | 
|---|
| 130 |  S IBTRN=$O(^IBT(356,"AD",+IBMVAD,0))
 | 
|---|
| 131 |  ;
 | 
|---|
| 132 |  ;  tracked as hospital review
 | 
|---|
| 133 |  I $O(^IBT(356.1,"C",+IBTRN,0)) D
 | 
|---|
| 134 |  .   I $$ALREADY(356.1,+DGPMA) Q
 | 
|---|
| 135 |  .   D PRE^IBTUTL2($E(+DGPMA,1,7),IBTRN,30)
 | 
|---|
| 136 |  .   I $G(IBTRV) D COMMENT^IBTRKRU(356.1,+IBTRV)
 | 
|---|
| 137 |  ;
 | 
|---|
| 138 |  ;  tracked as insurance review
 | 
|---|
| 139 |  I $O(^IBT(356.2,"C",+IBTRN,0)) D
 | 
|---|
| 140 |  .   I $$ALREADY(356.2,+DGPMA) Q
 | 
|---|
| 141 |  .   I $P($G(^IBT(356,+IBTRN,0)),"^",24) D COM^IBTUTL3($E(+DGPMA,1,12),IBTRN,30)
 | 
|---|
| 142 |  .   I $G(IBTRC) D COMMENT^IBTRKRU(356.2,+IBTRC)
 | 
|---|
| 143 |  ;
 | 
|---|
| 144 |  D WRITE("completed.")
 | 
|---|
| 145 |  Q
 | 
|---|
| 146 |  ;
 | 
|---|
| 147 |  ;
 | 
|---|
| 148 | ALREADY(FILE,DATE) ; -- see if already is review for date
 | 
|---|
| 149 |  N X,Y,IBX
 | 
|---|
| 150 |  S IBX=0
 | 
|---|
| 151 |  S X=$P(DATE,".")+.25
 | 
|---|
| 152 |  S Y=$O(^IBT(FILE,"ATIDT",+IBTRN,-X)) S Y=-Y I Y,$P(Y,".")=$P(DATE,".") S IBX=1
 | 
|---|
| 153 |  Q IBX
 | 
|---|
| 154 |  ;
 | 
|---|
| 155 |  ;
 | 
|---|
| 156 | NIGHTLY ; -- nightly job for claims tracking, called by IBAMTC
 | 
|---|
| 157 |  ;
 | 
|---|
| 158 |  D UPDATE^IBTRKR1 ; update claims tracking site parameters (random sampler)
 | 
|---|
| 159 |  D ^IBTRKR2 ;       add scheduled admissions to tracking
 | 
|---|
| 160 |  D ^IBTRKR3 ;       add rx refill to outpatient encounters
 | 
|---|
| 161 |  D ^IBTRKR4 ;       add outpatient encounters to tracking
 | 
|---|
| 162 |  D ^IBTRKR5 ;       add outpatient prosthetics item to tracking
 | 
|---|
| 163 |  Q
 | 
|---|