| [613] | 1 | FBPCR4 ;WOIFO/SS-LTC PHASE 3 UTILITIES ;03/17/04
 | 
|---|
 | 2 |  ;;3.5;FEE BASIS;**48,76**;JAN 30, 1995
 | 
|---|
 | 3 |  ;;Per VHA Directive 10-93-142, this routine should not be modified.
 | 
|---|
 | 4 |  ;
 | 
|---|
 | 5 |  Q
 | 
|---|
 | 6 |  ;
 | 
|---|
 | 7 | INSURED(FBDFN,FBINDT1,FBINDT2) ;check if the patient has insurance
 | 
|---|
 | 8 |  ;FBDFN - patient DFN
 | 
|---|
 | 9 |  ;FBINDT1 - the treatment date - for outpatients,
 | 
|---|
 | 10 |  ;    FROM date - for inpatients,
 | 
|---|
 | 11 |  ;    certified date  - for Pharmacy
 | 
|---|
 | 12 |  ;FBINDT2 (optional) - TO date for inpatients
 | 
|---|
 | 13 |  N FBINS1
 | 
|---|
 | 14 |  S FBINS1=+$$INSUR^IBBAPI(FBDFN,FBINDT1)
 | 
|---|
 | 15 |  I FBINS1<0 D ADDERR(DFN) Q FBINCUNK  ;error handling
 | 
|---|
 | 16 |  Q:'$D(FBINDT2) FBINS1
 | 
|---|
 | 17 |  Q:FBINS1=1 1  ;if was insured for FROM date - don't check TO date
 | 
|---|
 | 18 |  S FBINS1=+$$INSUR^IBBAPI(FBDFN,FBINDT2) ;otherwise return the state on TO date
 | 
|---|
 | 19 |  I FBINS1<0 D ADDERR(DFN) Q FBINCUNK  ;error handling
 | 
|---|
 | 20 |  Q FBINS1
 | 
|---|
 | 21 |  ;
 | 
|---|
 | 22 | ADDERR(FBDFN) ;add error to ^TMP, FBDFN - patient DFN
 | 
|---|
 | 23 |  I FBPARTY=1 Q
 | 
|---|
 | 24 |  N DFN,FBPNAME,FBPID,FBDOB,FBPI
 | 
|---|
 | 25 |  S DFN=FBDFN
 | 
|---|
 | 26 |  D VET^FBPCR
 | 
|---|
 | 27 |  S ^TMP($J,"FBINSIBAPI")=$G(^TMP($J,"FBINSIBAPI"))+1
 | 
|---|
 | 28 |  S ^TMP($J,"FBINSIBAPI",DFN)=FBPID_"^"_FBDOB_"^"_FBPNAME
 | 
|---|
 | 29 |  Q
 | 
|---|
 | 30 |  ;
 | 
|---|
 | 31 | ERRHDL ;Error handler called from FBPCR
 | 
|---|
 | 32 |  I +$G(^TMP($J,"FBINSIBAPI"))=0 Q  ;no errors
 | 
|---|
 | 33 |  D PRNUNKN
 | 
|---|
 | 34 |  Q
 | 
|---|
 | 35 |  ;
 | 
|---|
 | 36 | PRNUNKN ;write output
 | 
|---|
 | 37 |  N FBDFN,FBDATA
 | 
|---|
 | 38 |  D PAGEINS
 | 
|---|
 | 39 |  I FBPG>1&(($Y+15)>IOSL) D HEADER Q:FBOUT
 | 
|---|
 | 40 |  S FBDFN=0 F  S FBDFN=$O(^TMP($J,"FBINSIBAPI",FBDFN)) Q:FBDFN']""!(FBOUT)  D  Q:FBOUT
 | 
|---|
 | 41 |  . I ($Y+6)>IOSL D PAGEINS Q:FBOUT
 | 
|---|
 | 42 |  . S FBDATA=$G(^TMP($J,"FBINSIBAPI",FBDFN))
 | 
|---|
 | 43 |  . W !,$P(FBDATA,"^",3),?40,$P(FBDATA,"^",1),?62,$P(FBDATA,"^",2)
 | 
|---|
 | 44 |  Q
 | 
|---|
 | 45 | PAGEINS ;new page
 | 
|---|
 | 46 |  D CHKPAGE Q:FBOUT
 | 
|---|
 | 47 |  D HEADER Q:FBOUT
 | 
|---|
 | 48 |  Q
 | 
|---|
 | 49 | CHKPAGE ;form feed when new station/patient
 | 
|---|
 | 50 |  S FBSTA=$G(FBPSF)_$G(FBPT)
 | 
|---|
 | 51 |  I FBCRT&(FBPG'=0) D CR^FBPCR Q:FBOUT
 | 
|---|
 | 52 |  I FBPG>0!FBCRT W @IOF
 | 
|---|
 | 53 |  S FBPG=FBPG+1
 | 
|---|
 | 54 |  Q
 | 
|---|
 | 55 | HEADER ;main header
 | 
|---|
 | 56 |  N FBSTR1 S FBSTR1="List of the patients whose insurance information is currently unavailable"
 | 
|---|
 | 57 |  W !?(IOM-30/2),"POTENTIAL COST RECOVERY REPORT"
 | 
|---|
 | 58 |  W !?(IOM-$L(FBSTR1)/2),FBSTR1
 | 
|---|
 | 59 |  W !?71,"Page: ",FBPG
 | 
|---|
 | 60 |  W !,"Patient",?40,"Pat. ID",?62,"DOB"
 | 
|---|
 | 61 |  W !,FBDASH
 | 
|---|
 | 62 |  Q
 | 
|---|
 | 63 |  ;/**filtering logic
 | 
|---|
 | 64 |  ;input:
 | 
|---|
 | 65 |  ; FBPARTY: 1-Patient copay only,2-Insurance only,3-Both
 | 
|---|
 | 66 |  ; FBCOPAY: 1-LTC copays only,2-MT copays only,3-Both
 | 
|---|
 | 67 |  ; FBINS:   1- has insurance,0-none
 | 
|---|
 | 68 |  ; FBCATC:  0 - no copay,1- MT copay,2-LTC copay,3-no 1010EC,4-more analysis is needed
 | 
|---|
 | 69 |  ;output:
 | 
|---|
 | 70 |  ; 1 - include to report
 | 
|---|
 | 71 |  ; 0 - exclude from report
 | 
|---|
 | 72 | FILTER() ;*/
 | 
|---|
 | 73 |  I FBPARTY=1,FBCATC=0 Q 0
 | 
|---|
 | 74 |  I FBPARTY=2,FBINS=0 Q 0
 | 
|---|
 | 75 |  I FBPARTY=3,FBINS=1 Q 1
 | 
|---|
 | 76 |  I FBCOPAY=1,FBCATC<2 Q 0
 | 
|---|
 | 77 |  I FBCOPAY=2,FBCATC'=1 Q 0
 | 
|---|
 | 78 |  Q 1
 | 
|---|
 | 79 |  ;
 | 
|---|
 | 80 |  ;/**
 | 
|---|
 | 81 |  ; returns LTC status
 | 
|---|
 | 82 |  ; input:  Patient's DFN, Date of Care
 | 
|---|
 | 83 |  ;
 | 
|---|
 | 84 |  ; return values: 
 | 
|---|
 | 85 |  ; 0 - no1010EC
 | 
|---|
 | 86 |  ; 1 - exemption from LTC copay
 | 
|---|
 | 87 |  ; 2 - LTC copay
 | 
|---|
 | 88 | LTCST(DFN,FBDT) ;*/
 | 
|---|
 | 89 |  Q +$$COPAY^EASECCAL(DFN,$$LASTDT(FBDT),1)
 | 
|---|
 | 90 |  ;
 | 
|---|
 | 91 | LASTDT(X) ; compute the last day of the month in X
 | 
|---|
 | 92 |  N XM,X1,X2
 | 
|---|
 | 93 |  I $E(X,4,5)=12 Q $E(X,1,5)_"31"
 | 
|---|
 | 94 |  S XM=$E(X,4,5)+1
 | 
|---|
 | 95 |  S:XM<10 XM="0"_XM
 | 
|---|
 | 96 |  S X1=$E(X,1,3)_XM_"01"
 | 
|---|
 | 97 |  S X2=-1
 | 
|---|
 | 98 |  D C^%DTC
 | 
|---|
 | 99 |  Q X
 | 
|---|
 | 100 |  ;
 | 
|---|
 | 101 |  ;
 | 
|---|
 | 102 |  ;prepares local array with LTC POV codes
 | 
|---|
 | 103 |  ;input: FBARRLTC must be defined
 | 
|---|
 | 104 |  ;output: FBARRLTC with POV codes
 | 
|---|
 | 105 | MKARRLTC ;
 | 
|---|
 | 106 |  N FBPOV,FBIEN,FBLTCTYP
 | 
|---|
 | 107 |  S FBPOV="" F  S FBPOV=$O(^FBAA(161.82,"C",FBPOV)) Q:'FBPOV  S FBIEN=+$O(^FBAA(161.82,"C",FBPOV,0)),FBLTCTYP=+$P($G(^FBAA(161.82,FBIEN,0)),"^",4) S:FBLTCTYP=1!(FBLTCTYP=2) FBARRLTC(FBPOV)=FBLTCTYP
 | 
|---|
 | 108 |  Q
 | 
|---|
 | 109 |  ;/**
 | 
|---|
 | 110 |  ; Determine if POV code is related to LTC.
 | 
|---|
 | 111 |  ;Input:
 | 
|---|
 | 112 |  ; FBPOV - POV code, pointer to #161.82
 | 
|---|
 | 113 |  ; FBARRLTC must be defined and populated - array with LTC POV codes (see MKARRLTC) 
 | 
|---|
 | 114 |  ;Output:
 | 
|---|
 | 115 |  ; returns 
 | 
|---|
 | 116 |  ; 0 - it is not LTC service
 | 
|---|
 | 117 |  ; 1 - this POV code is for LTC and recoverable from LTC copayment 
 | 
|---|
 | 118 |  ; 2 - this POV code is for LTC but it is not a subject of LTC copayment
 | 
|---|
 | 119 | ISLTC(FBPOV) ;*/
 | 
|---|
 | 120 |  Q +$G(FBARRLTC(FBPOV))
 | 
|---|
 | 121 |  ;
 | 
|---|