| [613] | 1 | IBCONS2 ;ALB/CPM - NSC W/INSURANCE OUTPUT (CON'T) ;31-JAN-92
 | 
|---|
 | 2 |  ;;2.0;INTEGRATED BILLING;**19,36,54,66,91,99,108,120,142,174,155**;21-MAR-94
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 |  ;MAP TO DGCRONS2
 | 
|---|
 | 5 |  ;
 | 
|---|
 | 6 | LOOP1 ; Compilation for both Inpatient Admisssion and Discharge reports.
 | 
|---|
 | 7 |  N DA,IBADM K ^TMP($J,"PATIENT INCLUDE"),^TMP($J,"PATIENT EXCLUDE")
 | 
|---|
 | 8 |  D DIV
 | 
|---|
 | 9 |  F I=(IBBEG-.0001):0 S I=$O(^DGPM(IBSUB,I)) Q:'I!(I>(IBEND+.99))  D
 | 
|---|
 | 10 |  . S DFN=0 F  S DFN=$O(^DGPM(IBSUB,I,DFN)) Q:'DFN  S DA=+$O(^(DFN,0)) D  D:PTF PTF I $G(IBDV) D PROC K IBADMVT
 | 
|---|
 | 11 |  ..  S:IBINPT=2 DA=+$P($G(^DGPM(DA,0)),"^",14),IBADM=+$G(^DGPM(DA,0))
 | 
|---|
 | 12 |  ..  S PTF=$P($G(^DGPM(DA,0)),"^",16)
 | 
|---|
 | 13 |  ..  S IBADMVT=DA
 | 
|---|
 | 14 |  ..  S IBDV=+$P($G(^DIC(42,+$P($G(^DGPM(DA,0)),"^",6),0)),"^",11)
 | 
|---|
 | 15 |  K ^TMP($J,"PATIENT INCLUDE"),^TMP($J,"PATIENT EXCLUDE")
 | 
|---|
 | 16 |  Q
 | 
|---|
 | 17 |  ;
 | 
|---|
 | 18 |  ;
 | 
|---|
 | 19 | LOOP2 ; Compilation for the Outpatient report
 | 
|---|
 | 20 |  N DFN,IBDTA,IBDV,IBVAL,IBFILTER,IBCBK,IBNO,IBOE,IBOE0,IBSTOP,IBOEZ,Y,Y0,IBQUERY2
 | 
|---|
 | 21 |  D DIV K ^TMP($J,"PATIENT INCLUDE"),^TMP($J,"PATIENT EXCLUDE")
 | 
|---|
 | 22 |  ;
 | 
|---|
 | 23 |  S IBQUERY2=""
 | 
|---|
 | 24 |  S IBVAL("BDT")=IBBEG,IBVAL("EDT")=IBEND+.99
 | 
|---|
 | 25 |  S IBFILTER="I '$P(Y0,U,6)"
 | 
|---|
 | 26 |  S IBCBK="D CALLBCK^IBCONS2(Y,Y0,.IBQUERY2)"
 | 
|---|
 | 27 |  K ^TMP("IBOEC",$J)
 | 
|---|
 | 28 |  D SCAN^IBSDU("DATE/TIME",.IBVAL,IBFILTER,IBCBK,1) K ^TMP("DIERR",$J)
 | 
|---|
 | 29 |  I $G(IBQUERY2) D CLOSE^IBSDU(IBQUERY2)
 | 
|---|
 | 30 |  ;
 | 
|---|
 | 31 |  ; Process stand-alone add/edits extracted
 | 
|---|
 | 32 |  S DFN=0 F  S DFN=$O(^TMP("IBOEC",$J,DFN)) Q:'DFN  I $D(^DPT(DFN,0)) D
 | 
|---|
 | 33 |  . S IBDTA=0 F  S IBDTA=$O(^TMP("IBOEC",$J,DFN,IBDTA)) Q:'IBDTA  D
 | 
|---|
 | 34 |  .. K IBOE,IBSTOP,IBCOMB
 | 
|---|
 | 35 |  .. S IBNO=1
 | 
|---|
 | 36 |  .. S IBOEZ=0 F  S IBOEZ=$O(^TMP("IBOEC",$J,DFN,IBDTA,IBOEZ)) Q:'IBOEZ  S IBOE0=$$SCE^IBSDU(IBOEZ,"",0) D
 | 
|---|
 | 37 |  ... S IBDV=$P(IBOE0,U,11)
 | 
|---|
 | 38 |  ... S:$L($G(IBOE(IBNO)))+$L(IBOEZ)+1>200 IBNO=IBNO+1
 | 
|---|
 | 39 |  ... S IBOE(IBNO)=$G(IBOE(IBNO))_IBOEZ_U I '$G(IBOE) S IBOE=+IBOE(1)
 | 
|---|
 | 40 |  ... S Z=+$P($G(^DIC(40.7,+$P(IBOE0,U,3),0)),U,2) S:Z IBCOMB(Z)=$G(IBCOMB(Z))+1
 | 
|---|
 | 41 |  .. S:'$D(IBSTOP) IBSTOP="Add/Edit Stop Code^"
 | 
|---|
 | 42 |  .. S Z=0 F  S Z=$O(IBCOMB(Z)) Q:'Z  S IBSTOP=IBSTOP_Z_$S(IBCOMB(Z)=1:"",1:"(x"_IBCOMB(Z)_")")_U
 | 
|---|
 | 43 |  .. ;
 | 
|---|
 | 44 |  .. S I=IBDTA
 | 
|---|
 | 45 |  .. I $G(IBOE) D PROCO ;All add/edit encounters for a patient/date on a single line
 | 
|---|
 | 46 |  ;
 | 
|---|
 | 47 |  K ^TMP("IBOEC",$J),^TMP($J,"PATIENT INCLUDE"),^TMP($J,"PATIENT EXCLUDE")
 | 
|---|
 | 48 |  Q
 | 
|---|
 | 49 |  ;
 | 
|---|
 | 50 | CALLBCK(IBOE,IBOE0,IBQUERY2) ; Executed by scan call back logic to process encounters
 | 
|---|
 | 51 |  ; IBOE = encounter ien
 | 
|---|
 | 52 |  ; IBOE0 = 0-node of the encounter
 | 
|---|
 | 53 |  ;
 | 
|---|
 | 54 |  N DFN,I,IBDC,IBDS,IBDV,IBSTOP,IBT,Z
 | 
|---|
 | 55 |  I '$$BDSRC^IBEFUNC3($P($G(IBOE0),U,5)) Q  ; non-billable visit data source
 | 
|---|
 | 56 |  ;
 | 
|---|
 | 57 |  S IBT=$P(IBOE0,U,8),DFN=$P(IBOE0,U,2),IBDV=$P(IBOE0,U,11),(IBDS,IBDC)=""
 | 
|---|
 | 58 |  S I=+IBOE0
 | 
|---|
 | 59 |  Q:'I  Q:DFN=""
 | 
|---|
 | 60 |  I IBT=1 D
 | 
|---|
 | 61 |  . S IBDC=+$P(IBOE0,U,4)
 | 
|---|
 | 62 |  . I IBDV="" S IBDV=$P($G(^SC(IBDC,0)),U,15)
 | 
|---|
 | 63 |  ;
 | 
|---|
 | 64 |  I IBT=3 D
 | 
|---|
 | 65 |  . S IBDS=$$DISND^IBSDU(IBOE,IBOE0)
 | 
|---|
 | 66 |  . I IBDV="" S IBDV=$P(IBDS,U,4)
 | 
|---|
 | 67 |  ;
 | 
|---|
 | 68 |  Q:'$$VALID()
 | 
|---|
 | 69 |  ;
 | 
|---|
 | 70 |  ; Screen to only include 1-3 originating process and
 | 
|---|
 | 71 |  ;  for 1 or 2, include only those that have appt types indicating they
 | 
|---|
 | 72 |  ;  are included on reports 
 | 
|---|
 | 73 |  ;
 | 
|---|
 | 74 |  I $S(IBT<3:$$RPT^IBEFUNC($P(IBOE0,U,10),+IBOE0),1:IBT=3) D
 | 
|---|
 | 75 |  . ; Extract add/edits to global so we can combine the data into one line (2 lines if RNB defined)
 | 
|---|
 | 76 |  . I IBT=2 D  Q  ; Stand-alone Add/Edits
 | 
|---|
 | 77 |  .. I VAUTD'=1 Q:'$D(VAUTD(+IBDV))
 | 
|---|
 | 78 |  .. I VAUTD=1 Q:'IBDV
 | 
|---|
 | 79 |  .. I +$$RNBOE(IBOE) S ^TMP("IBOEC",$J,DFN,(IBOE0\1)_".",IBOE)="" Q
 | 
|---|
 | 80 |  .. S ^TMP("IBOEC",$J,DFN,IBOE0\1,IBOE)=""
 | 
|---|
 | 81 |  . ;
 | 
|---|
 | 82 |  . I IBT=1 D  Q  ;Appointments
 | 
|---|
 | 83 |  .. I IBDC D
 | 
|---|
 | 84 |  ... S X=$$CHILD(IBOE,IBOE0,.IBVAL,.IBSTOP,.IBQUERY2)
 | 
|---|
 | 85 |  ... S IBSTOP="Clinic: "_$P($G(^SC(IBDC,0)),U)_$S('X:"",1:"  --  "_IBSTOP)
 | 
|---|
 | 86 |  ... S I=+IBOE0 D PROCO
 | 
|---|
 | 87 |  . ;
 | 
|---|
 | 88 |  . I IBT=3 D  Q  ;Registration
 | 
|---|
 | 89 |  .. N X
 | 
|---|
 | 90 |  .. Q:'$$DISCT^IBEFUNC(IBOE,IBOE0)
 | 
|---|
 | 91 |  .. S X=$$CHILD(IBOE,IBOE0,.IBVAL,.IBSTOP,.IBQUERY2)
 | 
|---|
 | 92 |  .. S IBSTOP="Registration: "_$P($G(^DIC(37,+$P(IBDS,U,7),0)),U)_$S('X:"",1:"  --  "_IBSTOP)
 | 
|---|
 | 93 |  .. S I=+IBOE0 D PROCO
 | 
|---|
 | 94 |  ;
 | 
|---|
 | 95 |  Q
 | 
|---|
 | 96 |  ;
 | 
|---|
 | 97 | CHILD(IBOE,IBOE0,IBVAL,IBSTOP,IBQUERY2) ;Find any child add/edits
 | 
|---|
 | 98 |  ;  IBSTOP and IBQUERY2 are returned
 | 
|---|
 | 99 |  N IBVAL1,IBFILTER,IBCBK,IBCOMB,Z
 | 
|---|
 | 100 |  M IBVAL1=IBVAL
 | 
|---|
 | 101 |  S (IBFILTER,IBSTOP)="",IBVAL1("DFN")=+$P(IBOE0,U,2)
 | 
|---|
 | 102 |  S IBCBK="I $S(Y=IBOE:1,1:$P(Y0,U,6)=IBOE),$P(Y0,U,3),$$RPT^IBEFUNC($P(Y0,U,10),+Y0) S Z=+$P($G(^DIC(40.7,+$P(Y0,U,3),0)),U,2) S:Z IBCOMB(Z)=$G(IBCOMB(Z))+1"
 | 
|---|
 | 103 |  D SCAN^IBSDU("PATIENT/DATE",.IBVAL1,IBFILTER,IBCBK,0,.IBQUERY2) K ^TMP("DIERR",$J)
 | 
|---|
 | 104 |  S Z=0 F  S Z=$O(IBCOMB(Z)) Q:'Z  S IBSTOP=$S(IBSTOP="":"Stop Codes^",1:IBSTOP)_Z_$S(IBCOMB(Z)=1:"",1:"(x"_IBCOMB(Z)_")")_U
 | 
|---|
 | 105 |  Q (IBSTOP'="")
 | 
|---|
 | 106 |  ;
 | 
|---|
 | 107 | PROC ;  -process each episode of care
 | 
|---|
 | 108 |  Q:'$$VALID()
 | 
|---|
 | 109 | PROCO ; Entrypoint for outpatient loop2
 | 
|---|
 | 110 |  K IBRMARK
 | 
|---|
 | 111 |  I '$G(IBSC) D TRACK^IBCONS3 ;     -find tracking entry get reason not billable
 | 
|---|
 | 112 |  I +$G(IBSC) S IBRMARK="{ALL MOVES SC}" ; stays with all SC moves not added to CT but on rpt w/RNB  ** PATCH 66
 | 
|---|
 | 113 |  D BILL,SET ;          -on billed or unbilled list
 | 
|---|
 | 114 |  Q
 | 
|---|
 | 115 |  ;
 | 
|---|
 | 116 | VALID() ;
 | 
|---|
 | 117 |  N IBOK
 | 
|---|
 | 118 |  S IBOK=0
 | 
|---|
 | 119 |  I +$G(IBSELRNG),$D(^TMP($J,"PATIENT EXCLUDE",DFN)) G VALIDQ ; pat already excluded from select range ** PATCH 66
 | 
|---|
 | 120 |  I +$G(IBSELRNG),+$G(IBSELRNG)<3,'$$PAT(DFN) G VALIDQ ; patient in selected range  ** PATCH 66
 | 
|---|
 | 121 |  I VAUTD'=1 G:'$D(VAUTD(+IBDV)) VALIDQ
 | 
|---|
 | 122 |  I VAUTD=1 G:'IBDV VALIDQ
 | 
|---|
 | 123 |  D PTCHK G:'IBFLAG VALIDQ ;  -is patient a vet and have ins data
 | 
|---|
 | 124 |  D INS G:'IBFLAG VALIDQ ;    -is insurance valid for date of care
 | 
|---|
 | 125 |  I +$G(IBSELRNG)=3,'$$PTINS(DFN) G VALIDQ ; patient ins is included in range  ** PATCH 66
 | 
|---|
 | 126 |  S IBOK=1
 | 
|---|
 | 127 | VALIDQ Q IBOK
 | 
|---|
 | 128 |  ;
 | 
|---|
 | 129 | INS S IBFLAG=$$INSURED^IBCNS1(DFN,I)
 | 
|---|
 | 130 |  I +IBFLAG,+IBINPT,'$$PTCOV^IBCNSU3(DFN,+I,"INPATIENT") S IBFLAG=0
 | 
|---|
 | 131 |  Q
 | 
|---|
 | 132 |  ;
 | 
|---|
 | 133 | PTCHK S IBFLAG=0 I $D(^DPT(+DFN,.312)),$G(^("VET"))="Y" S IBFLAG=1
 | 
|---|
 | 134 |  ; Patch #36 - removes non-veteran eligibilities and inpatient visits
 | 
|---|
 | 135 |  I 'IBINPT D
 | 
|---|
 | 136 |  .N IBTEMP,IBOE0 S IBTEMP=$$SCE^IBSDU(+IBOE,13,0),IBOE0=$$SCE^IBSDU(+IBOE)
 | 
|---|
 | 137 |  .I $P($G(^DIC(8,+IBTEMP,0)),U,5)="N" S IBFLAG=0 Q
 | 
|---|
 | 138 |  .I '$$APPTCT^IBEFUNC(IBOE0) S IBFLAG=0 Q
 | 
|---|
 | 139 |  Q
 | 
|---|
 | 140 |  ;
 | 
|---|
 | 141 | SET N DPT0,IBSUBSC2,IBSUBSC3,IBSUBSC4,IBSUBSC6 S DPT0=$G(^DPT(+DFN,0))
 | 
|---|
 | 142 |  S IBSUBSC2=+IBDV I +$G(IBSELCDV) S IBSUBSC2="COMBINED"
 | 
|---|
 | 143 |  S IBSUBSC3=$S(B]"":2,1:1)
 | 
|---|
 | 144 |  S IBSUBSC4=$P(DPT0,U,1) I +$G(IBSELTRM) S IBSUBSC4=+$$TERMDG(DFN)
 | 
|---|
 | 145 |  S IBSUBSC6=I F IBSUBSC6=IBSUBSC6:.000001 Q:'$D(^TMP($J,IBSUBSC2,IBSUBSC3,IBSUBSC4,DFN,IBSUBSC6))
 | 
|---|
 | 146 |  S ^TMP($J,IBSUBSC2,IBSUBSC3,IBSUBSC4,DFN,IBSUBSC6)=B
 | 
|---|
 | 147 |  I $D(IBSTOP),'$D(^TMP($J,IBSUBSC2,IBSUBSC3,IBSUBSC4,DFN,IBSUBSC6,1)) S ^(1)=IBSTOP
 | 
|---|
 | 148 |  I $G(IBRMARK)'="" S ^TMP($J,IBSUBSC2,IBSUBSC3,IBSUBSC4,DFN,IBSUBSC6,2)=$G(IBRMARK)
 | 
|---|
 | 149 |  K IBSTOP,IBRMARK
 | 
|---|
 | 150 |  Q
 | 
|---|
 | 151 |  ;
 | 
|---|
 | 152 | BILL ;  Add to billed list if is insurance bill, not canceled
 | 
|---|
 | 153 |  ;     if opt, date is in list, if inpt, admission date = event date
 | 
|---|
 | 154 |  ;  ** PATCH 66 modified to include check for bill authorized status and add that to the stored TMP array
 | 
|---|
 | 155 |  ;
 | 
|---|
 | 156 |  S B="",I1=$S(IBINPT=2:IBADM,IBINPT:I,1:I\1),IBAUTH=2 N IB0
 | 
|---|
 | 157 |  ; -- the following line modified in patch 19 to check for only inpt. bills ($p(^(0),u,5)<3) are counted as bills,
 | 
|---|
 | 158 |  ;    for when there is an outpatient bill with the same event date.
 | 
|---|
 | 159 |  I IBINPT,$D(^DGCR(399,"C",DFN)) F M=0:0 S M=$O(^DGCR(399,"C",DFN,M)) Q:'M  D  Q:$L(B)>200
 | 
|---|
 | 160 |  . S IB0=$G(^DGCR(399,M,0))
 | 
|---|
 | 161 |  . I IB0'="",$P(IB0,"^",5)<3,$P(IB0,"^",13)<7,$P($P(IB0,"^",3),".")=$P(I1,"."),$P(IB0,"^",11)="i" S B=B_M_"^" I $P(IB0,"^",13)<2 S IBAUTH=1
 | 
|---|
 | 162 |  ;
 | 
|---|
 | 163 |  I 'IBINPT,$D(^DGCR(399,"AOPV",DFN,I1)) F M=0:0 S M=$O(^DGCR(399,"AOPV",DFN,I1,M)) Q:'M  D  Q:$L(B)>200
 | 
|---|
 | 164 |  . S IB0=$G(^DGCR(399,M,0))
 | 
|---|
 | 165 |  . I IB0'="",$P(IB0,"^",13)<7,$P(IB0,"^",11)="i" S B=B_M_"^" I $P(IB0,"^",13)<2 S IBAUTH=1
 | 
|---|
 | 166 |  I +B S B=IBAUTH_"^"_B
 | 
|---|
 | 167 |  Q
 | 
|---|
 | 168 |  ;
 | 
|---|
 | 169 | PTF ;  if all movements are for sc condition then not billable
 | 
|---|
 | 170 |  ;
 | 
|---|
 | 171 |  S IBSC="" Q:'$D(^DGPT(+PTF))
 | 
|---|
 | 172 |  S IBMOV=0 F  S IBMOV=$O(^DGPT(PTF,"M",IBMOV)) Q:'IBMOV  S IBSC=$P($G(^(IBMOV,0)),"^",18) I IBSC=2!(IBSC="") Q
 | 
|---|
 | 173 |  S IBSC=$S(IBSC=2!(IBSC=""):0,1:1)
 | 
|---|
 | 174 |  Q
 | 
|---|
 | 175 | DIV ;adds the requested divisions to the report
 | 
|---|
 | 176 |  N IBDIV I +$G(IBSELCDV) S ^TMP($J,"COMBINED")="" Q
 | 
|---|
 | 177 |  I VAUTD'=1 D
 | 
|---|
 | 178 |  .S IBDIV="" F  S IBDIV=$O(VAUTD(IBDIV)) Q:'IBDIV  S ^TMP($J,IBDIV)=""
 | 
|---|
 | 179 |  I VAUTD=1 D
 | 
|---|
 | 180 |  .S IBDIV="" F  S IBDIV=$O(^DG(40.8,IBDIV)) Q:IBDIV']""!(+IBDIV'=IBDIV)  I $P($G(^DG(40.8,IBDIV,0)),"^",1)]"" S ^TMP($J,IBDIV)=""
 | 
|---|
 | 181 |  Q
 | 
|---|
 | 182 |  ;
 | 
|---|
 | 183 | PAT(DFN) ; true if patient is included in range requested   ** PATCH 66
 | 
|---|
 | 184 |  N IBX,IBY S IBX=1
 | 
|---|
 | 185 |  I $D(^TMP($J,"PATIENT INCLUDE",DFN)) S IBX=1 G PATQ
 | 
|---|
 | 186 |  I $D(^TMP($J,"PATIENT EXCLUDE",DFN)) S IBX=0 G PATQ
 | 
|---|
 | 187 |  ;
 | 
|---|
 | 188 |  I +$G(IBSELRNG)=2 S IBY=$$TERMDG(DFN) D
 | 
|---|
 | 189 |  . I IBY<$G(IBSELSR1) S IBX=0
 | 
|---|
 | 190 |  . I +$G(IBSELSR2),IBY>IBSELSR2 S IBX=0
 | 
|---|
 | 191 |  ;
 | 
|---|
 | 192 |  I +$G(IBSELRNG)=1 S IBY=$P($G(^DPT(+DFN,0)),U,1),IBX=$$STGRNG(IBY)
 | 
|---|
 | 193 |  ;
 | 
|---|
 | 194 |  I +IBX S ^TMP($J,"PATIENT INCLUDE",DFN)=""
 | 
|---|
 | 195 |  I 'IBX S ^TMP($J,"PATIENT EXCLUDE",DFN)=""
 | 
|---|
 | 196 | PATQ Q IBX
 | 
|---|
 | 197 |  ;
 | 
|---|
 | 198 | PTINS(DFN) ; check if patients ins is within selected range  ** PATCH 66
 | 
|---|
 | 199 |  N IBY,IBX,IBAR,IBI S IBX=1
 | 
|---|
 | 200 |  I $D(^TMP($J,"PATIENT INCLUDE",DFN)) S IBX=1 G PTINSQ
 | 
|---|
 | 201 |  I $D(^TMP($J,"PATIENT EXCLUDE",DFN)) S IBX=0 G PTINSQ
 | 
|---|
 | 202 |  ;
 | 
|---|
 | 203 |  I $G(IBSELRNG)=3 D ALL^IBCNS1(DFN,"IBAR",1,IBBEG),ALL^IBCNS1(DFN,"IBAR",1,IBEND) S IBX=0
 | 
|---|
 | 204 |  S IBI=0 F  S IBI=$O(IBAR(IBI)) Q:'IBI  S IBY=+$G(IBAR(IBI,0)),IBY=$P($G(^DIC(36,+IBY,0)),U,1) I +$$STGRNG(IBY) S IBX=1 Q
 | 
|---|
 | 205 |  ;
 | 
|---|
 | 206 |  I +IBX S ^TMP($J,"PATIENT INCLUDE",DFN)=""
 | 
|---|
 | 207 |  I 'IBX S ^TMP($J,"PATIENT EXCLUDE",DFN)=""
 | 
|---|
 | 208 | PTINSQ Q IBX
 | 
|---|
 | 209 |  ;
 | 
|---|
 | 210 | STGRNG(STRNG) ; check if the string passed in is contained within the selected ASCII range  ** PATCH 66
 | 
|---|
 | 211 |  N IBSB,IBSE,IBI,IBY,IBX S IBX=1,STRNG=$$ASCII($G(STRNG))
 | 
|---|
 | 212 |  F IBI=1:1 S IBSB=$P($G(IBSELSR1),",",IBI),IBY=$P(STRNG,",",IBI) Q:'IBSB  Q:IBSB<IBY  I IBSB>IBY S IBX=0 Q
 | 
|---|
 | 213 |  F IBI=1:1 S IBSE=$P($G(IBSELSR2),",",IBI),IBY=$P(STRNG,",",IBI) Q:'IBSE  Q:IBSE>IBY  I IBSE<IBY S IBX=0 Q
 | 
|---|
 | 214 |  Q IBX
 | 
|---|
 | 215 |  ;
 | 
|---|
 | 216 | ASCII(STRNG) ; returns string in ASCII ** PATCH 66
 | 
|---|
 | 217 |  N IBI,IBX,IBY S IBX=""
 | 
|---|
 | 218 |  I $G(STRNG)'="" F IBI=1:1 S IBY=$E(STRNG,IBI) Q:IBY=""  S IBX=IBX_$A(IBY)_"," Q:$L(IBX)>196
 | 
|---|
 | 219 |  Q IBX
 | 
|---|
 | 220 |  ;
 | 
|---|
 | 221 | TERMDG(DFN) ; returns a patients terminal digit  ** PATCH 66
 | 
|---|
 | 222 |  N TERMD,DPT0,SSN S TERMD="",DPT0=$G(^DPT(+DFN,0)),SSN=$P(DPT0,"^",9)
 | 
|---|
 | 223 |  S TERMD=$E(SSN,8,9)_$E(SSN,6,7)_$E(SSN,4,5)_$E(SSN,1,3)
 | 
|---|
 | 224 |  Q TERMD
 | 
|---|
 | 225 |  ;
 | 
|---|
 | 226 | RNBOE(IBOE) ; return a Reason Not Billable for the encounter if one can be found
 | 
|---|
 | 227 |  N IBX,IBR S IBR="" I +$G(IBOE) S IBX=+$O(^IBT(356,"ASCE",+IBOE,0)) I +IBX S IBR=$P($G(^IBT(356,IBX,0)),U,19)
 | 
|---|
 | 228 |  Q IBR
 | 
|---|