| 1 | IBCNSP ;ALB/AAS - INSURANCE MANAGEMENT - EXPANDED POLICY ;05-MAR-1993 | 
|---|
| 2 | ;;2.0;INTEGRATED BILLING;**6,28,43,52,85,251,363,371**;21-MAR-94;Build 57 | 
|---|
| 3 | ;;Per VHA Directive 2004-038, this routine should not be modified. | 
|---|
| 4 | % ; | 
|---|
| 5 | EN ; -- main entry point for IBCNS EXPANDED POLICY | 
|---|
| 6 | N IB1ST | 
|---|
| 7 | K VALMQUIT,IBPPOL | 
|---|
| 8 | S IBTOP="IBCNSP" | 
|---|
| 9 | D EN^VALM("IBCNS EXPANDED POLICY") | 
|---|
| 10 | Q | 
|---|
| 11 | ; | 
|---|
| 12 | HDR ; -- header code | 
|---|
| 13 | N W,X,Y,Z | 
|---|
| 14 | S VALMHDR(1)="Expanded Policy Information for: "_$E($P(^DPT(DFN,0),U),1,20)_"  "_$P($$PT^IBEFUNC(DFN),U,2) | 
|---|
| 15 | S Z=$G(^DPT(DFN,.312,+$P(IBPPOL,U,4),0)) | 
|---|
| 16 | S W=$P($G(^IBA(355.3,+$P(Z,U,18),0)),U,11) | 
|---|
| 17 | S Y=$E($P($G(^DIC(36,+Z,0)),U),1,20)_" Insurance Company" | 
|---|
| 18 | S X="** Plan Currently "_$S(W:"Ina",1:"A")_"ctive **" | 
|---|
| 19 | S VALMHDR(2)=$$SETSTR^VALM1(X,Y,48,29) | 
|---|
| 20 | Q | 
|---|
| 21 | ; | 
|---|
| 22 | INIT ; -- init variables and list array | 
|---|
| 23 | K VALMQUIT | 
|---|
| 24 | S VALMCNT=0,VALMBG=1 | 
|---|
| 25 | I '$D(IBPPOL) D PPOL Q:$D(VALMQUIT) | 
|---|
| 26 | K ^TMP("IBCNSVP",$J) | 
|---|
| 27 | D BLD,HDR | 
|---|
| 28 | Q | 
|---|
| 29 | ; | 
|---|
| 30 | BLD ; -- list builder | 
|---|
| 31 | K ^TMP("IBCNSVP",$J),^TMP("IBCNSVPDX",$J) | 
|---|
| 32 | D KILL^VALM10() | 
|---|
| 33 | F I=1:1:20 D BLANK(.I)    ; start with 20 blank lines | 
|---|
| 34 | N IBCDFND,IBCDFND1,IBCDFND2,IBCDFND4,IBCDFND5 | 
|---|
| 35 | S IBCDFND=$G(^DPT(DFN,.312,$P(IBPPOL,U,4),0)),IBCDFND1=$G(^(1)),IBCDFND2=$G(^(2)),IBCDFND4=$G(^(4)),IBCDFND5=$G(^(5)) | 
|---|
| 36 | S IBCPOL=+$P(IBCDFND,U,18),IBCNS=+IBCDFND,IBCDFN=$P(IBPPOL,U,4) | 
|---|
| 37 | S IBCPOLD=$G(^IBA(355.3,+$P(IBCDFND,U,18),0)),IBCPOLD1=$G(^(1)) | 
|---|
| 38 | S IBCPOLD2=$G(^IBA(355.3,+$G(IBCPOL),6)) ;; Daou/EEN adding BIN and PCN | 
|---|
| 39 | ; | 
|---|
| 40 | D POLICY^IBCNSP0                   ; plan information | 
|---|
| 41 | D INS^IBCNSP0                      ; insurance company | 
|---|
| 42 | D UR                               ; utilization review info | 
|---|
| 43 | D EFFECT                           ; effective dates & source of info | 
|---|
| 44 | D SUBSC^IBCNSP01                   ; subscriber info | 
|---|
| 45 | D EMP                              ; subscriber's employer info | 
|---|
| 46 | D SPON^IBCNSP0                     ; insured person's info | 
|---|
| 47 | D ID^IBCNSP01                      ; ins co ID numbers (IB*2*371) | 
|---|
| 48 | D PLIM                             ; plan coverage limitations | 
|---|
| 49 | D VER^IBCNSP01                     ; user/verifier/editor info | 
|---|
| 50 | D CONTACT^IBCNSP0                  ; last insurance contact | 
|---|
| 51 | D COMMENT                          ; comments - policy & plan | 
|---|
| 52 | D RIDER^IBCNSP01                   ; policy rider info | 
|---|
| 53 | ; | 
|---|
| 54 | S VALMCNT=+$O(^TMP("IBCNSVP",$J,""),-1) | 
|---|
| 55 | Q | 
|---|
| 56 | ; | 
|---|
| 57 | COMMENT ; -- Comment region | 
|---|
| 58 | N START,OFFSET,IBL,IBI | 
|---|
| 59 | S (START,IBL)=$O(^TMP("IBCNSVP",$J,""),-1)+1,OFFSET=2 | 
|---|
| 60 | S IB1ST("COMMENT")=START | 
|---|
| 61 | D SET(START,OFFSET," Comment -- Patient Policy ",IORVON,IORVOFF) | 
|---|
| 62 | S IBL=IBL+1 | 
|---|
| 63 | D SET(IBL,OFFSET,$S($P(IBCDFND1,U,8)="":"None",1:$P(IBCDFND1,U,8))) | 
|---|
| 64 | S IBL=IBL+1 | 
|---|
| 65 | D SET(IBL,OFFSET," ") | 
|---|
| 66 | S IBL=IBL+1 | 
|---|
| 67 | D SET(IBL,OFFSET," Comment -- Group Plan ",IORVON,IORVOFF) | 
|---|
| 68 | S IBI=0 F  S IBI=$O(^IBA(355.3,+IBCPOL,11,IBI)) Q:IBI<1  D | 
|---|
| 69 | . S IBL=IBL+1 | 
|---|
| 70 | . D SET(IBL,OFFSET,"  "_$E($G(^IBA(355.3,+IBCPOL,11,IBI,0)),1,80)) | 
|---|
| 71 | . Q | 
|---|
| 72 | S IBL=IBL+1 D SET(IBL,OFFSET," ") | 
|---|
| 73 | S IBL=IBL+1 D SET(IBL,OFFSET," ") | 
|---|
| 74 | Q | 
|---|
| 75 | ; | 
|---|
| 76 | EFFECT ; -- Effective date region | 
|---|
| 77 | N START,OFFSET | 
|---|
| 78 | S START=16,OFFSET=45 | 
|---|
| 79 | D SET(START,OFFSET-4," Effective Dates & Source ",IORVON,IORVOFF) | 
|---|
| 80 | D SET(START+1,OFFSET," Effective Date: "_$$DAT1^IBOUTL($P(IBCDFND,U,8))) | 
|---|
| 81 | D SET(START+2,OFFSET,"Expiration Date: "_$$DAT1^IBOUTL($P(IBCDFND,U,4))) | 
|---|
| 82 | D SET(START+3,OFFSET," Source of Info: "_$$EXPAND^IBTRE(2.312,1.09,$P($G(IBCDFND1),U,9))) | 
|---|
| 83 | D SET(START+4,OFFSET-4,"Policy Not Billable: "_$S($P($G(^DPT(DFN,.312,IBCDFN,3)),"^",4):"YES",1:"NO")) | 
|---|
| 84 | Q | 
|---|
| 85 | ; | 
|---|
| 86 | UR ; -- UR of insurance region | 
|---|
| 87 | N START,OFFSET | 
|---|
| 88 | S START=16,OFFSET=2 | 
|---|
| 89 | D SET(START,OFFSET," Utilization Review Info ",IORVON,IORVOFF) | 
|---|
| 90 | D SET(START+1,OFFSET,"         Require UR: "_$$EXPAND^IBTRE(355.3,.05,$P(IBCPOLD,U,5))) | 
|---|
| 91 | D SET(START+2,OFFSET,"   Require Amb Cert: "_$$EXPAND^IBTRE(355.3,.12,$P(IBCPOLD,U,12))) | 
|---|
| 92 | D SET(START+3,OFFSET,"   Require Pre-Cert: "_$$EXPAND^IBTRE(355.3,.06,$P(IBCPOLD,U,6))) | 
|---|
| 93 | D SET(START+4,OFFSET,"   Exclude Pre-Cond: "_$$EXPAND^IBTRE(355.3,.07,$P(IBCPOLD,U,7))) | 
|---|
| 94 | D SET(START+5,OFFSET,"Benefits Assignable: "_$$EXPAND^IBTRE(355.3,.08,$P(IBCPOLD,U,8))) | 
|---|
| 95 | Q | 
|---|
| 96 | EMP ; -- Insurance Employer Region | 
|---|
| 97 | N OFFSET,START,IBADD | 
|---|
| 98 | S START=24,OFFSET=40 | 
|---|
| 99 | D SET(START,OFFSET," Subscriber's Employer Information ",IORVON,IORVOFF) | 
|---|
| 100 | D SET(START+1,OFFSET,"Emp Sponsored Plan: "_$S(+$P(IBCDFND2,U,10):"Yes",1:"No")) | 
|---|
| 101 | D SET(START+2,OFFSET,"          Employer: "_$P(IBCDFND2,U,9)) | 
|---|
| 102 | D SET(START+3,OFFSET," Employment Status: "_$$EXPAND^IBTRE(2.312,2.11,$P(IBCDFND2,U,11))) | 
|---|
| 103 | D SET(START+4,OFFSET,"   Retirement Date: "_$$DAT1^IBOUTL($P(IBCDFND2,U,12))) | 
|---|
| 104 | D SET(START+5,OFFSET,"Claims to Employer: "_$S(+IBCDFND2:"Yes, Send to Employer",1:"No, Send to Insurance Company")) | 
|---|
| 105 | ; | 
|---|
| 106 | D SET(START+6,OFFSET,"            Street: "_$P(IBCDFND2,U,2)) S IBADD=1 | 
|---|
| 107 | I $P(IBCDFND2,U,3)'="" D SET(START+7,OFFSET,"          Street 2: "_$P(IBCDFND2,U,3)) S IBADD=2 | 
|---|
| 108 | I $P(IBCDFND2,U,4)'="" D SET(START+8,OFFSET,"          Street 3: "_$P(IBCDFND2,U,4)) S IBADD=3 | 
|---|
| 109 | D SET(START+6+IBADD,OFFSET,"        City/State: "_$E($P(IBCDFND2,U,5),1,15)_$S($P(IBCDFND2,U,5)="":"",1:", ")_$P($G(^DIC(5,+$P(IBCDFND2,U,6),0)),U,2)_" "_$E($P(IBCDFND2,U,7),1,5)) | 
|---|
| 110 | D SET(START+7+IBADD,OFFSET,"             Phone: "_$P(IBCDFND2,U,8)) | 
|---|
| 111 | ; | 
|---|
| 112 | ; couple of blank lines to end this section | 
|---|
| 113 | D SET(START+8+IBADD,2," ") | 
|---|
| 114 | D SET(START+9+IBADD,2," ") | 
|---|
| 115 | ; | 
|---|
| 116 | EMPQ Q | 
|---|
| 117 | ; | 
|---|
| 118 | PLIM ; plan coverage limitations/plan limitation category display | 
|---|
| 119 | N START,END S START=$O(^TMP("IBCNSVP",$J,""),-1)+1 | 
|---|
| 120 | S IB1ST("PLIM")=START | 
|---|
| 121 | D LIMBLD^IBCNSC41(START,2) | 
|---|
| 122 | S END=$O(^TMP("IBCNSVP",$J,""),-1)  ; last line constructed | 
|---|
| 123 | D SET(END+1,2," ")    ; 2 blank lines to end this section | 
|---|
| 124 | D SET(END+2,2," ") | 
|---|
| 125 | PLIMX ; | 
|---|
| 126 | Q | 
|---|
| 127 | ; | 
|---|
| 128 | HELP ; -- help code | 
|---|
| 129 | S X="?" D DISP^XQORM1 W !! | 
|---|
| 130 | Q | 
|---|
| 131 | ; | 
|---|
| 132 | EXIT ; -- exit code | 
|---|
| 133 | K IBPPOL,VALMQUIT,IBCNS,IBCPOL,IBCPOLD,IBCPOLD1,IBCPOLD2,IBCDFND,IBCDFND1,IBCDFND2 | 
|---|
| 134 | D CLEAN^VALM10,CLEAR^VALM1 | 
|---|
| 135 | Q | 
|---|
| 136 | ; | 
|---|
| 137 | EXPND ; -- expand code | 
|---|
| 138 | Q | 
|---|
| 139 | ; | 
|---|
| 140 | PPOL ; -- select patient, select policy | 
|---|
| 141 | I '$D(DFN) D  G:$D(VALMQUIT) PPOLQ | 
|---|
| 142 | .S DIC="^DPT(",DIC(0)="AEQMN" D ^DIC | 
|---|
| 143 | .S DFN=+Y | 
|---|
| 144 | I $G(DFN)<1 S VALMQUIT="" G PPOLQ | 
|---|
| 145 | ; | 
|---|
| 146 | I '$O(^DPT(DFN,.312,0)) W !!,"Patient doesn't have Insurance" K DFN G PPOL | 
|---|
| 147 | ; | 
|---|
| 148 | S DIC="^DPT("_DFN_",.312,",DIC(0)="AEQMN",DIC("A")="Select Patient Policy: " | 
|---|
| 149 | D ^DIC I +Y<1 S VALMQUIT="" | 
|---|
| 150 | G:$D(VALMQUIT) PPOLQ | 
|---|
| 151 | S IBPPOL="^2^"_DFN_U_+Y_U_$G(^DPT(DFN,.312,+Y,0)) | 
|---|
| 152 | PPOLQ K DIC Q | 
|---|
| 153 | ; | 
|---|
| 154 | BLANK(LINE) ; -- Build blank line | 
|---|
| 155 | D SET^VALM10(.LINE,$J("",80)) | 
|---|
| 156 | Q | 
|---|
| 157 | ; | 
|---|
| 158 | SET(LINE,COL,TEXT,ON,OFF) ; -- set display info in array | 
|---|
| 159 | I '$D(@VALMAR@(LINE,0)) D BLANK(.LINE) S VALMCNT=$G(VALMCNT)+1 | 
|---|
| 160 | D SET^VALM10(.LINE,$$SETSTR^VALM1(.TEXT,@VALMAR@(LINE,0),.COL,$L(TEXT))) | 
|---|
| 161 | D:$G(ON)]""!($G(OFF)]"") CNTRL^VALM10(.LINE,.COL,$L(TEXT),$G(ON),$G(OFF)) | 
|---|
| 162 | W:'(LINE#5) "." | 
|---|
| 163 | Q | 
|---|