| 1 | IBAECU3 ;WOIFO/SS-LTC PHASE 2 UTILITIES ; 20-FEB-02
 | 
|---|
| 2 |  ;;2.0;INTEGRATED BILLING;**176**;21-MAR-94
 | 
|---|
| 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  ;****** Outpatient LTC related utilities *********
 | 
|---|
| 6 |  ;/*--
 | 
|---|
| 7 |  ;Returns info about all visits via ^TMP($J,IBLB,IBDFN) global
 | 
|---|
| 8 |  ;
 | 
|---|
| 9 |  ;Input:
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 |  ;IBFRBEG- first date (in FM format),must be a valid,
 | 
|---|
| 12 |  ;  (wrong date like 3000231 will cause mistakes)
 | 
|---|
| 13 |  ;IBFREND- last date (in FM format),must be a valid date
 | 
|---|
| 14 |  ;  if any of dates above > yesterday it will be set to yesterday 
 | 
|---|
| 15 |  ;
 | 
|---|
| 16 |  ;IBDFN  - patient's ien in file (#2)
 | 
|---|
| 17 |  ;IBLB  - any string to identify results in ^TMP($J,IBLB
 | 
|---|
| 18 |  ;Output:
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 |  ;temp global array with inpatient info:
 | 
|---|
| 21 |  ;  ^TMP($J,IBLB,IBDFN,date,"M"/"L",IEN40968)=L/M^stopcode^
 | 
|---|
| 22 |  ;
 | 
|---|
| 23 |  ;  where pieces:
 | 
|---|
| 24 |  ;  #1 - "L" for LTC, "M" for MeansTest
 | 
|---|
| 25 |  ;  #2 - stopcode
 | 
|---|
| 26 |  ;  #3 - empty
 | 
|---|
| 27 |  ;  #4 - pointer to #350.1 IB action type
 | 
|---|
| 28 |  ;Returns:
 | 
|---|
| 29 |  ;  0 - none
 | 
|---|
| 30 |  ;  1 - if any leave or stay days in the period
 | 
|---|
| 31 | OUTPINFO(IBFRBEG,IBFREND,IBDFN,IBLB) ;
 | 
|---|
| 32 |  N IBVAL,IBCBK,IBFILTER,IBRES
 | 
|---|
| 33 |  S IBVAL("DFN")=IBDFN,IBVAL("BDT")=IBFRBEG-.1,IBVAL("EDT")=+(IBFREND_".9999999")
 | 
|---|
| 34 |  S IBFILTER=""
 | 
|---|
| 35 |  ; we look only for STATUS=CHECKED OUT i.e. $P(Y0,U,12)=2 in IBCBK
 | 
|---|
| 36 |  ;  consider only parent encounters, appts checked out
 | 
|---|
| 37 |  S IBCBK="I '$P(Y0,U,6),$P(Y0,U,12)=2 S IBRES=$$STOPINFO^IBAECU3($P(Y0,U,3),0),^TMP($J,IBLB,IBDFN,+Y0\1,Y)=IBRES"
 | 
|---|
| 38 |  D SCAN^IBSDU("PATIENT/DATE",.IBVAL,IBFILTER,IBCBK,1) K ^TMP("DIERR",$J)
 | 
|---|
| 39 |  Q +$O(^TMP($J,IBLB,IBDFN,0))>0
 | 
|---|
| 40 |  ;/**
 | 
|---|
| 41 |  ;get stop-code related info
 | 
|---|
| 42 |  ;IB407 pointer to file #40.7
 | 
|---|
| 43 |  ;IBDT - date to get rate, if 0 then will not return a rate in 3rd piece
 | 
|---|
| 44 |  ;returns 
 | 
|---|
| 45 |  ;IBTYPE_"^"_IBCODE_"^"_IBRATE_"^"_IBATYP
 | 
|---|
| 46 |  ;IBCARE - "M" for means test, "L" for LTC
 | 
|---|
| 47 |  ;IBCODE - AMIS REPORTING STOP CODE
 | 
|---|
| 48 |  ;IBRATE - rate for LTC, 0 for Means test
 | 
|---|
| 49 |  ;IBATYP - ien of 350.1
 | 
|---|
| 50 | STOPINFO(IB407,IBDT) ;
 | 
|---|
| 51 |  N Y,X
 | 
|---|
| 52 |  N IBI,IBCR,IBCODE,IBATYP,IBCHG
 | 
|---|
| 53 |  N IBSCDATA,IBNAME
 | 
|---|
| 54 |  D DIQ407^IBEMTSCU(IB407,1)
 | 
|---|
| 55 |  S IBCODE=$G(IBSCDATA(40.7,IB407,1,"E"))
 | 
|---|
| 56 |  Q:+IBCODE=0 ""
 | 
|---|
| 57 |  S IBNAME=$P($$LTCSTOP^IBAECU(IB407),"^",2)
 | 
|---|
| 58 |  Q:IBNAME="" "M^"_IBCODE_"^^"
 | 
|---|
| 59 |  S IBATYP=$O(^IBE(350.1,"B",IBNAME,0))
 | 
|---|
| 60 |  Q:+IBATYP=0 ""
 | 
|---|
| 61 |  S IBCHG=""
 | 
|---|
| 62 |  I +$G(IBDT)>0 D
 | 
|---|
| 63 |  . S IBCHG=0
 | 
|---|
| 64 |  . D COST^IBAUTL2
 | 
|---|
| 65 |  Q "L^"_IBCODE_"^"_IBCHG_"^"_IBATYP
 | 
|---|
| 66 |  ;
 | 
|---|
| 67 |  ;returns rate for different LTC services
 | 
|---|
| 68 |  ;INPUT:
 | 
|---|
| 69 |  ;IBCARE=1 - outpatient(clinic stopcode),IBTYPE=2 - inpatient(treating specialty)
 | 
|---|
| 70 |  ;IBCODE - treating specialty(outpatient) or clinic stopcode (inpatient)
 | 
|---|
| 71 |  ;IBDT - date of care
 | 
|---|
| 72 |  ;if not found - returns 0
 | 
|---|
| 73 | GETRATE(IBCARE,IBCODE,IBDT) ;
 | 
|---|
| 74 |  N IBCHG,IBATYP,IBTAG
 | 
|---|
| 75 |  N IBI,IBCR,IBNAME
 | 
|---|
| 76 |  S:'$D(U) U="^"
 | 
|---|
| 77 |  S (IBCHG,IBATYP)=0
 | 
|---|
| 78 |  S:IBCARE=1 IBTAG="C"_IBCODE,IBNAME=$P($T(@IBTAG^IBAECU1),";",3)
 | 
|---|
| 79 |  S:IBCARE=2 IBTAG="T"_IBCODE,IBNAME=$P($T(@IBTAG^IBAECU1),";",3)
 | 
|---|
| 80 |  Q:IBNAME="" IBCHG
 | 
|---|
| 81 |  S IBATYP=$O(^IBE(350.1,"B",IBNAME,0))
 | 
|---|
| 82 |  Q:+IBATYP=0 IBCHG
 | 
|---|
| 83 |  D COST^IBAUTL2
 | 
|---|
| 84 |  Q IBCHG_"^"_IBATYP
 | 
|---|
| 85 |  ;/**
 | 
|---|
| 86 |  ;is there any outp episode with that day
 | 
|---|
| 87 |  ;Input:
 | 
|---|
| 88 |  ;IBDFN - dfn of the patient
 | 
|---|
| 89 |  ;IBDT1 - date
 | 
|---|
| 90 |  ;IBTMPLB - ^TMP global subscript like IBADM in $$INPINFO
 | 
|---|
| 91 |  ;Output:
 | 
|---|
| 92 |  ;Returns "a^b" where :
 | 
|---|
| 93 |  ;a - number of LTC admissions on this date
 | 
|---|
| 94 |  ;b - number of Means Test admissions on this date
 | 
|---|
| 95 |  ;if "" - nothing
 | 
|---|
| 96 |  ; means test:
 | 
|---|
| 97 |  ;.IBVIS("M",#)=treating specialty^
 | 
|---|
| 98 |  ; LTC:  
 | 
|---|
| 99 |  ;.IBVIS("L",#)=treating specialty^ien of 350.1I action type
 | 
|---|
| 100 | ISOUTP(IBDFN,IBDT1,IBTMPLB,IBVIS) ;*/
 | 
|---|
| 101 |  N IB40968,IBRETV,IBD,IB1
 | 
|---|
| 102 |  S IB40968=0,IBRETV=""
 | 
|---|
| 103 |  F  S IB40968=$O(^TMP($J,IBTMPLB,IBDFN,IBDT1,IB40968)) Q:+IB40968=0  D
 | 
|---|
| 104 |  . S IBD=$G(^TMP($J,IBTMPLB,IBDFN,IBDT1,IB40968))
 | 
|---|
| 105 |  . S IB1=$P(IBD,"^",1)
 | 
|---|
| 106 |  . I IB1="L" S $P(IBRETV,"^",1)=$P($G(IBRETV),"^",1)+1
 | 
|---|
| 107 |  . I IB1="M" S $P(IBRETV,"^",2)=$P($G(IBRETV),"^",2)+1
 | 
|---|
| 108 |  . S IBVIS(IB1,IB40968)=$P(IBD,"^",2)_"^"_$P(IBD,"^",4)
 | 
|---|
| 109 |  Q IBRETV
 | 
|---|
| 110 |  ;
 | 
|---|
| 111 |  ;checks if there is Means test outpatient visits this date and
 | 
|---|
| 112 |  ;cancels them if there is a charge 
 | 
|---|
| 113 | CHKMTOUT(IBDFN,IBDT,IBTMPLB) ;
 | 
|---|
| 114 |  N IBV1
 | 
|---|
| 115 |  N RETIENS S RETIENS=0
 | 
|---|
| 116 |  S IBV1=$$ISOUTP(IBDFN,IBDT,IBTMPLB,.RETIENS) Q:+$P(IBV1,"^",2)=0
 | 
|---|
| 117 |  S IBV1=0
 | 
|---|
| 118 |  F  S IBV1=$O(RETIENS("M",IBV1)) Q:+IBV1=0  D
 | 
|---|
| 119 |  . D CANCVIS^IBAECU5(IBDFN,IBDT)
 | 
|---|
| 120 |  Q
 | 
|---|
| 121 |  ;
 | 
|---|
| 122 |  ;
 | 
|---|
| 123 |  ;return IB action type based on treating specialty (42.4)
 | 
|---|
| 124 |  ;or clinic stop code
 | 
|---|
| 125 |  ;IBCARE=1 - outpatient(clinic stopcode),IBTYPE=2 - inpatient(treating specialty)
 | 
|---|
| 126 |  ;IBCODE - treating specialty(outpatient) or clinic stopcode (inpatient)
 | 
|---|
| 127 | GET3501(IBCARE,IBCODE) ;
 | 
|---|
| 128 |  N IBATYP,IBNAME
 | 
|---|
| 129 |  S:IBCARE=1 IBTAG="C"_IBCODE,IBNAME=$P($T(@IBTAG^IBAECU1),";",3)
 | 
|---|
| 130 |  S:IBCARE=2 IBTAG="T"_IBCODE,IBNAME=$P($T(@IBTAG^IBAECU1),";",3)
 | 
|---|
| 131 |  Q:IBNAME="" 0
 | 
|---|
| 132 |  S IBATYP=$O(^IBE(350.1,"B",IBNAME,0))
 | 
|---|
| 133 |  Q +IBATYP
 | 
|---|
| 134 |  ;
 | 
|---|