Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: RMPFRPC0

RMPFRPC0.m

Go to the documentation of this file.
  1. RMPFRPC0 ;DALC/PJU - Module to establish DALC elig for ROES3;06/18/2008
  1. ;;3.0;REMOTE ORDER ENTRY SYSTEM;**1,4**;Feb 9, 2011;Build 19
  1. ;;Updated for R3*4 2/1/2011
  1. ;;Per VHA Directive 10-92-142 this routine should not be modified
  1. ;;Uses supported IA's: 2343, 10003, 10015, 10061, 10103
  1. ;;subscriber to IA's: 174 & 767
  1. START(AR,DFN,SHW) ;called from RMPFRPC1 for elig variables
  1. ;input: array name by ref, DFN, SHW=1(opt) if prompts can be shown
  1. ;will return to the Delphi app as 0-7 subscripts in same order
  1. ;PD = AR(0)=date of death msg or ""
  1. ;ED = AR(1)=eligibility status date FM
  1. ;EL = AR(2)=calculated eligibility code
  1. ;ES = AR(3)=eligibility status
  1. ;SR = AR(4)=sensitive record
  1. ;ER = AR(5) is for error msg's
  1. ;PE = AR(6)=primary eligibility
  1. ;PG = AR(7)=priority group
  1. ;RA = AR(8)=elig^APPR(1)^PSAS user^ASPS user^req dt^sug el^act dt
  1. ;PS = enrollment group sub
  1. ;R3 = array of auto accepted R3 elig's
  1. ;VS = 0/1 for SC ^ %
  1. ;VT = y/n for veteran flag
  1. K AR ;in case came in with data (is called by ref)
  1. N ROES ;array of eligibilities to submitted to PSAS
  1. N A0,A1,A2,ED,EL,ES,ER,PD,PG,PS,R3,RA,RMDNM,SSN,VS,VT,IEN
  1. S (ED,EL,ES,ER,PD,PG,PS,R3,RA,RMDNM,SSN,VS,VT,IEN)=""
  1. F X=0:1:8 S AR(X)="" ;initialize array AR
  1. ;R3*4 removed or renamed:"WWI","AAA","EP3","HB"
  1. F X="SC","COM","PH","POW","PG3","PG4","NCA","0CA","OIF" S R3(X)=""
  1. F X="SCV","OGA","NSC","PG8","BLR","VOC","CAN","BRI" S R3(X)=""
  1. K VADM,VAEL,VAMB,VAPA,VASV
  1. D DEM^VADPT ;demographic vars
  1. I $G(VAERR) S ER="**ERROR retrieving Demographic values**" G END
  1. I $G(VADM(6)) D ;fm^external date of death
  1. .S (PD,AR(0))=VADM(6)
  1. S RMDNM=$G(VADM(1)) ;Patient name for SHOW
  1. S SSN=$P($G(VADM(2)),U,1)
  1. I $P($G(^DGSL(38.1,DFN,0)),U,2) S AR(4)=1 ;IA 767 (DBIA268-C SEN REC)
  1. S VAPA("P")="" D ADD^VADPT ;permanent address
  1. I $G(VAERR) S ER="**ERROR** Problem retrieving Permanent Address" G END
  1. D ELIG^VADPT ;eligibility vars
  1. I $G(VAERR) D G END
  1. .S ER="**ERROR** Problem in retrieving Eligibility (VADPT)."
  1. I $L(ER) G END
  1. S AR(6)=$P($G(VAEL(1)),U,2) ;external form PRIMARY ELIG
  1. S ES=$P($G(VAEL(8)),U,1) ;elig status
  1. I ES="V" D ;verified
  1. .K RM S DIC=2,DA=DFN,DIQ="RM",DR=".3612" D EN^DIQ1
  1. .S ED=RM(2,DFN,.3612) ;elig date text
  1. .S %DT="X",X=ED D ^%DT S:+Y>1 ED=+Y_U_ED ;fmdate ^ text date
  1. .K RM,DIC,DA,DIQ,DR,%DT
  1. S VT=$S($G(VAEL(4)):"Y",1:"N") ;VET Y/N
  1. K RM S DIC=2,DA=DFN,DIQ="RM",DR="27.01",DIQ(0)="I" D EN^DIQ1
  1. S DA=$G(RM(2,DFN,27.01,"I")) ;CURRENT ENROLLMENT entry in ^DPT(
  1. I DA D
  1. .K RM2 S DIC=27.11,DIQ="RM2",DR=".07;.12",DIQ(0)="I" D EN^DIQ1
  1. .S (PG,AR(7))=$G(RM2(27.11,DA,.07,"I")) ;Priority Group
  1. .S PS1=$G(RM2(27.11,DA,.12,"I"))
  1. .S PS=$S(PS1=1:"A",PS1=2:"B",PS1=3:"C",PS1=4:"D",1:"") ;PG Subgroup
  1. K RM,RM2,DIC,DA,DIQ,DR,PS1
  1. I VT="Y" D ;is veteran
  1. .D ELIGBL Q:$L(EL) ; ck for SC for condition *** SC **
  1. .S VS=$G(VAEL(3)) I $P(VS,U,1) D ;(3)=0/1 for SC ^ %
  1. ..I $P(VS,U,2)'<10 D
  1. ...I +PG>0,+PG<4 S EL="COM" ;PG 1-3 & SC >= 10% *** COM **
  1. G:$L(EL) END ;EL = COM or SC
  1. D SVC^VADPT I $G(VAERR) D G END ;Service Info(SVC^VADPT)
  1. .S ER="**ERROR** Problem in retrieving Service Information."
  1. I ($G(VASV(4))=1)!($P(VAEL(1),U,2)="PRISONER OF WAR") D G:$L(EL) END
  1. .S EL="POW" ;VASV(4)= POW status (1/0) *** POW **
  1. I +$G(VASV(9)) S EL="PH" G END ;VASV(9)=1(current PH),else 0 ** PH **
  1. I VT="Y" D G:$L(EL) END
  1. .S:PG=3 EL="PG3" ; *** PG3 **
  1. .S:PG=4 EL="PG4" ; include AAA & HB & catastrophic disabled ** PG4 **
  1. ;VAMB(1)=recv A&A ben's;VAMB(2)=recv HB bens both in PG4
  1. D ALLIED(DFN) G:$L(EL) END ; *** CAN or BRI **
  1. I VT="Y" D G:$L(EL) END
  1. .I PG=5 D Q:$L(EL) ; *** NCA **
  1. ..I $P($G(VAEL(1)),U,2)="NSC, VA PENSION" S EL="NCA" Q
  1. ..S:$P($G(VAEL(6)),U,2)="NSC VETERAN" EL="NCA"
  1. .I $G(VAEL(3)),$P($G(VAEL(3)),U,2)=0 D Q:$L(EL) ; *** 0CA **
  1. ..I (PG=5)!(PG=7)!(PG=8) S EL="0CA" Q
  1. .I PG=6 D Q:$L(EL) ;VASV(11)= # OIF/OEF tours
  1. ..I +$G(VASV(11))>0 S EL="OIF" ; *** OIF ***
  1. ..E S EL="SCV" ;Special category veterans *** SCV **
  1. G:$L(EL) END
  1. S X=0 I ($D(VAEL(1))>9) D G:$L(EL) END ; *** OGA **
  1. .F S X=$O(VAEL(1,X)) Q:'X D Q:$L(EL)
  1. ..I $P(VAEL(1,X),U,2)="OTHER FEDERAL AGENCY" S EL="OGA"
  1. I VT="Y",'$G(VAEL(3)) D G:$L(EL) END ; *** NSC **
  1. .I (PG=7) S EL="NSC"
  1. I VT="Y",PG=8 S EL="PG8" ; *** PG8 **
  1. END I $L($G(ER)) S AR(5)=ER
  1. S:$L(ED) AR(1)=ED ; *** ELIG DATE **
  1. S:$L(EL) AR(2)=EL ; *** calc elig CODE
  1. S:$L($G(ES)) AR(3)=ES ;ELIG STAT
  1. G:$L(EL) END2 ;R3*4
  1. ;if 'EL ck for PRIOR elig in ELIGIBILITY CONFIRMATION file
  1. S IEN="" I $D(^RMPF(791814,"B",DFN)) D
  1. .S IEN=$O(^RMPF(791814,"B",DFN," "),-1)
  1. G:'IEN END2
  1. S A0=$G(^RMPF(791814,IEN,0)),A1=$G(^(1)),A2=$G(^(2))
  1. S RA=$P(A2,U,2) ;0 or 1 or 2 (REJ, APPR, WAIT)
  1. I +RA<1 S RA=1,EL="NSC",$P(A2,U,1)=EL ;DEFAULT DISAPPROVED CHG'D TO NSC APPROVED
  1. I (RA>1) S RA=1 D ; others auto approve
  1. .I $P(A2,U,1)'="" S EL=$P(A2,U,1) ;PSAS ELIG
  1. .I EL="" S EL="NSC",$P(A1,U,1)=EL ;DEFAULT
  1. .S AR(2)=EL ;calculated elig
  1. .S X=$P(A2,U,3) S:(+X<1) X=DUZ ;psas or user DUZ
  1. .S Y=$$NAME^XUSER(X) S:Y="" Y="Unknown"
  1. .S $P(RA,U,2)=Y ;name
  1. .S X=$P(A0,U,3) S:(+X<1) X=DUZ ;ASPS user DUZ
  1. .S Y=$$NAME^XUSER(X) S:Y="" Y="Unknown"
  1. .S $P(RA,U,3)=Y ;name
  1. .S AR(8)=EL_U_RA ;elg^1^PSAS user^ASPS user
  1. .S Y=$P(A2,U,4) ;action date
  1. .I Y="" S Y=DT
  1. .D DD^%DT S $P(AR(8),U,7)=Y ;Action date
  1. ;;AR(8)=elg^1^P-user^A-user^entry DT^elg^Act DT
  1. END2 I EL="" S EL="NSC" D ;DEFAULT FOR R3*4 1/26/2011
  1. .S Y=DT D DD^%DT S ED=Y
  1. .S AR(1)=ED ; *** ELIG DATE **
  1. .S AR(2)=EL ; *** calc elig CODE
  1. D:$G(SHW) SHOW ;SHW=1 to show calc'd values for TESTING ONLY
  1. D KVAR^VADPT K LD,S0,S1,S2,S6,YY,POP,VAERR
  1. Q
  1. ;
  1. ELIGBL ;ELIGIBILITY FOR DISABILITY CONDITION - SC
  1. ;contains DFN,.372,X,0)=31 ptr^disabil %^SC 0/1
  1. ;DIC(31,i,0)= disab txt^abbrev^dx code
  1. Q:(+PG<1) I "123578"'[PG Q ;just 1,2,3,5,7&8 per Kyle 1/14/09
  1. Q:'$D(^DPT(DFN,.372)) N LD,S,RD,P,AX S AX=0
  1. E1 ;*** added IA #174(rated disabilities mult node direct read)
  1. S AX=$O(^DPT(DFN,.372,AX)) G E1END:'AX
  1. I $D(^DPT(DFN,.372,AX,0)) D G:$L(EL) E1END
  1. .S S=^DPT(DFN,.372,AX,0) I $P(S,U,3) D ;service connected
  1. ..S RD=$P(S,U,1) D:RD ;disibility file ptr
  1. ...S X=RD,DIC=31,DIC(0)="NZ" D ^DIC
  1. ...S LD=$S(+Y>0:$P(Y(0),U,3),1:"Unknown") K DIC,Y ;DX codes
  1. ...Q:+LD<5000 Q:+LD>6300 S LD=+LD ;ck specific hearing DX codes
  1. ...I (LD=6016)!((LD>6099)&(LD<6111)) S EL="SC" Q
  1. ...I ((LD>6198)&(LD<6212))!((LD>6249)&(LD<6264)) S EL="SC" Q
  1. ...I ((LD>6276)&(LD<6300)) S EL="SC"
  1. G E1 ;dis
  1. E1END Q
  1. ;
  1. ALLIED(DFN) ;Determine if qualifying Allied Veteran
  1. ;output: EL= CAN or BRI if true
  1. N DIC,DA,DIQ,DR,RM
  1. I $P(VAEL(3),U,1)=1 D ; SC
  1. .S DIC=2,DA=DFN,DIQ="RM",DR=".309" D EN^DIQ1
  1. .S:(RM(2,DFN,.309)="CANADA") EL="CAN"
  1. .S:(RM(2,DFN,.309)["BRITAIN") EL="BRI"
  1. Q
  1. ;
  1. SHOW ;View data retrieved - for debugging only if SHW=1
  1. ;called from END2
  1. W !!,"Patient: ",$G(RMDNM)
  1. W !,"Calculated R3 elig = " W:$L(EL) EL
  1. W !,"VA Elig status: " W:$L(ES) ES
  1. W !,"Elig status date: " W:$L(ED) ED
  1. ;W ! ZW AR ;FOR TESTING ONLY
  1. ENDS Q