VPSRPC26 ;BPOIFO/EL,SLOIFO/BT - Patient Demographic (continue);07/31/14 13:07
;;1.0;VA POINT OF SERVICE (KIOSKS);**4,14**;Jul 31, 2014;Build 26
;;Per VHA Directive 2004-038, this routine should not be modified.
;
; External Reference DBIA#
; ------------------------
; #2056 - DIQ call (Supported)
; #2701 - MPIF001 call (Supported)
; #3860 - DGPFAPI call (Controlled Sub)
; #4289 - PRCAHV call (Controlled Sub)
; #4419 - IBBAPI call (Supported)
; #4425 - ^DGS( references (Controlled Sub)
; #4462 - $$GETSHAD^DGUTL3 (Supported)
; #4499 - $$LST^EASECU (Controlled Sub)
; #4807 - $$RDIS^DGRPDB (Supported)
; #6107 - PCDETAIL^ORWPT1 call (Controlled Sub)
; #10035 - ^DPT( references (Supported)
; #10103 - XLFDT call (Supported)
; #10147 - $$RXST^IBARXEU (Supported)
QUIT
;
IBB(VPSARR,DFN) ; Insurance Info
N VPSIBB,VPSIBFLD S VPSIBFLD="1,10,11,13,14,21"
N VAL S VAL=$$INSUR^IBBAPI(DFN,,"ABR",.VPSIBB,VPSIBFLD)
QUIT:VAL'>0
;
N VPSFL,VPSIEN
N SEQ S SEQ=""
;
F S SEQ=$O(VPSIBB("IBBAPI","INSUR",SEQ)) Q:SEQ="" D
. S VPSFL="2.312",VPSIEN=DFN_";"_SEQ
. ; Insurance Company Name
. S VAL=$G(VPSIBB("IBBAPI","INSUR",SEQ,1))
. S VAL=$P(VAL,U,2) D SET(.VPSARR,36,VPSIEN,.01,VAL)
. ; Policy Effective Date
. S VAL=$G(VPSIBB("IBBAPI","INSUR",SEQ,10))
. D SET(.VPSARR,VPSFL,VPSIEN,8,VAL)
. ; Policy Expiration Date
. S VAL=$G(VPSIBB("IBBAPI","INSUR",SEQ,11))
. D SET(.VPSARR,VPSFL,VPSIEN,3,VAL)
. ; Subscribe Name
. S VAL=$G(VPSIBB("IBBAPI","INSUR",SEQ,13))
. D SET(.VPSARR,VPSFL,VPSIEN,17,VAL)
. ; Subscribe ID
. S VAL=$G(VPSIBB("IBBAPI","INSUR",SEQ,14))
. D SET(.VPSARR,VPSFL,VPSIEN,1,VAL)
;
QUIT
;
REC(VPSARR,DFN) ; Patient Record Flag
N PRF,NPRF,PRFFIL,PRFLAG,VAL
S NPRF=$$GETACT^DGPFAPI(DFN,"VPSREC") ;Retrieve all ACTIVE Patient record flag assignments
;
; Store all Patient Record Flags and Assigment Narratives into result array (VPSARR)
F PRF=1:1:NPRF D
. ;store flag type
. S VAL=$P(VPSREC(PRF,"FLAGTYPE"),U,2)
. S PRFLAG=$P(VPSREC(PRF,"FLAG"),U)
. I VAL'="",PRFLAG'="" D
. . S PRFFIL=$P($P(PRFLAG,"DGPF(",2),",")
. . I PRFFIL'="" D SET(.VPSARR,PRFFIL,DFN,".03",VAL,"FLAG TYPE")
. ;store flag name
. S VAL=$P(VPSREC(PRF,"FLAG"),U,2) D SET(.VPSARR,"26.13",DFN,".02",VAL)
. D STNARR(PRF,.VPSREC) ; Store ASSIGNMENT NARRATIVE (word-processing) for this counter
;
QUIT
;
STNARR(PRF,VPSREC) ; Store ASSIGNMENT NARRATIVE (word-processing) into result array (VPSARR)
N VAL,NARRCNT S NARRCNT=""
F S NARRCNT=$O(VPSREC(PRF,"NARR",NARRCNT)) Q:NARRCNT="" D
. S VAL=$G(VPSREC(PRF,"NARR",NARRCNT,0)) D SET(.VPSARR,"26.132",DFN,".01",VAL)
QUIT
;
DGS(VPSARR,DFN) ; Pre-Registration Audit
N VPSFL S VPSFL="41.41"
N DGIEN S DGIEN=$O(^DGS(VPSFL,"ADC",DFN,""),-1)
D SET(.VPSARR,VPSFL,DFN,1,DGIEN)
QUIT
;
BAL(VPSARR,DFN) ; BALANCE-OWED
N VPSICN S VPSICN=$$GETICN^MPIF001(DFN)
N ICN S ICN=$P(VPSICN,"V")
N VAL,BAL S BAL=$$BALANCE^PRCAHV(.VAL,ICN,"ALL")
I BAL=1 D SET(.VPSARR,430,DFN,"COMPUTED",VAL,"BALANCE")
QUIT
;
OTH(VPSARR,DFN) ; Other info not in known category
N VAL
S VAL=$$GET1^DIQ(2,DFN_",",.323,"E") D SET(.VPSARR,2,DFN,.323,VAL) ;Period of Service
S VAL=$$GET1^DIQ(2,DFN_",",1100.01,"E") D SET(.VPSARR,2,DFN,1100.01,VAL) ; Fugitive Felon Flag
S VAL=$$GET1^DIQ(2,DFN_",",.109,"E") D SET(.VPSARR,2,DFN,.109,VAL) ; Exclude From Facility DIRECTORY?
S VAL=$$GET1^DIQ(2,DFN_",",63,"E") D SET(.VPSARR,2,DFN,63,VAL) ; Laboratory Reference
S VAL=$$GET1^DIQ(2,DFN_",",.305,"E") D SET(.VPSARR,2,DFN,.305,VAL) ; Unemployable
QUIT
;
POW(VPSARR,DFN) ; POW information
N VAL
S VAL=$$GET1^DIQ(2,DFN_",",.525,"E") D SET(.VPSARR,2,DFN,".525",VAL) ; POW Status Indicated?
S VAL=$$GET1^DIQ(2,DFN_",",.526,"E") D SET(.VPSARR,2,DFN,".526",VAL) ; POW Confinement Location
S VAL=$$GET1^DIQ(2,DFN_",",.527,"I") D SET(.VPSARR,2,DFN,".527",VAL) ; POW From Date
S VAL=$$GET1^DIQ(2,DFN_",",.528,"I") D SET(.VPSARR,2,DFN,".528",VAL) ; POW Through Date
S VAL=$$GET1^DIQ(2,DFN_",",.529,"I") D SET(.VPSARR,2,DFN,".529",VAL) ; POW Status Verified
QUIT
;
PH(VPSARR,DFN) ; Store PURPLE HEART
N VAL
S VAL=$$GET1^DIQ(2,DFN_",",.531,"E") D SET(.VPSARR,2,DFN,".531",VAL) ; Current PH Indicator
S VAL=$$GET1^DIQ(2,DFN_",",.532,"E") D SET(.VPSARR,2,DFN,".532",VAL) ; Current PH Status
S VAL=$$GET1^DIQ(2,DFN_",",.533,"E") D SET(.VPSARR,2,DFN,".533",VAL) ; Current PH Remarks
QUIT
;
MP(VPSARR,DFN) ; Store Missing Person
N VAL S VAL=$$GET1^DIQ(2,DFN_",",.153,"I") D SET(.VPSARR,2,DFN,.153,VAL) ; Missing Person Date
;
N WP S WP=$$GET1^DIQ(2,DFN_",",.16,"","WP") ; Missing or ineligible
N SEQ S SEQ=0 S VAL=""
F S SEQ=$O(WP(SEQ)) QUIT:'SEQ S VAL=VAL_" "_WP(SEQ)
D SET(.VPSARR,2,DFN,.16,VAL)
;
N INE S INE=$G(^DPT(DFN,"INE"))
QUIT:INE=""
S VAL=$P(INE,U,7) D SET(.VPSARR,2,DFN,".1657",VAL) ; Missing Person TWX Source
S VAL=$P(INE,U,8) D SET(.VPSARR,2,DFN,".1658",VAL) ; Missing Person TWX City
S VAL=$P(INE,U,9) D SET(.VPSARR,2,DFN,".1659",VAL) ; Missing Person TWX State
QUIT
;
SVC(VPSARR,DFN) ; Store Service Connected and Rated Disabilities
N VAL
S VAL=$$GET1^DIQ(2,DFN_",",.3012,"I") D SET(.VPSARR,2,DFN,.3012,VAL) ; SC Award Date
S VAL=$$GET1^DIQ(2,DFN_",",.3014,"I") D SET(.VPSARR,2,DFN,.3014,VAL) ; Effective Date Combine SC% EVAL
;
N DGARR S VAL=$$RDIS^DGRPDB(DFN,.DGARR)
N SEQ S SEQ=0
F S SEQ=$O(DGARR(SEQ)) QUIT:'SEQ D
. S VAL=$P(DGARR(SEQ),U,2) D SET(.VPSARR,2.04,DFN,2,VAL) ; Disability %
. S VAL=$P(DGARR(SEQ),U,3),VAL=$S(VAL=1:"YES",1:"NO") D SET(.VPSARR,2.04,DFN,3,VAL) ; Service Connected
. S VAL=$P(DGARR(SEQ),U,4),VAL=$$GETXAFF(VAL) D SET(.VPSARR,2.04,DFN,4,VAL) ; Extremity Affected
. S VAL=$P(DGARR(SEQ),U,5) D SET(.VPSARR,2.04,DFN,5,VAL) ; Original Effective Date
. S VAL=$P(DGARR(SEQ),U,6) D SET(.VPSARR,2.04,DFN,6,VAL) ; Current Effective Date
;
;Flags/Environment Indicators
S VAL=$$GET1^DIQ(2,DFN_",",.32102,"E") D SET(.VPSARR,2,DFN,.32102,VAL) ; Agent Orange Exposure Indicated
S VAL=$$GET1^DIQ(2,DFN_",",.32107,"I") D SET(.VPSARR,2,DFN,.32107,VAL) ; Agent Orange Registration Date
S VAL=$$GET1^DIQ(2,DFN_",",.32109,"I") D SET(.VPSARR,2,DFN,.32109,VAL) ; Agent Orange Examination Date
S VAL=$$GET1^DIQ(2,DFN_",",.32103,"E") D SET(.VPSARR,2,DFN,.32103,VAL) ; Radiation Exposure Indicated
S VAL=$$GET1^DIQ(2,DFN_",",.32111,"E") D SET(.VPSARR,2,DFN,.32111,VAL) ; Radiation Registration Date
S VAL=$$GET1^DIQ(2,DFN_",",.3212,"E") D SET(.VPSARR,2,DFN,.3212,VAL) ; Radiation Exposure Method
S VAL=$$GETSHAD^DGUTL3(DFN),VAL=$S(VAL=1:"YES",1:"NO") D SET(.VPSARR,2,DFN,.32115,VAL) ; Proj 112/shad
S VAL=$$GET1^DIQ(2,DFN_",",.5291,"E") D SET(.VPSARR,2,DFN,.5291,VAL) ; Combat Service Indicated
S VAL=$$GET1^DIQ(2,DFN_",",.5293,"I") D SET(.VPSARR,2,DFN,.5293,VAL) ; Combat from date
S VAL=$$GET1^DIQ(2,DFN_",",.5294,"I") D SET(.VPSARR,2,DFN,.5294,VAL) ; Combat to Date
QUIT
;
GETXAFF(VAL) ; Get external value of Extremity Affected
QUIT:VAL="BL" "BOTH LOWER"
QUIT:VAL="BU" "BOTH UPPER"
QUIT:VAL="RL" "RIGHT LOWER"
QUIT:VAL="RU" "RIGHT UPPER"
QUIT:VAL="LL" "LEFT LOWER"
QUIT:VAL="LU" "LEFT UPPER"
QUIT ""
;
CHG(VPSARR,DFN) ; Store Change DT/TM fields
N VAL
S VAL=$$GET1^DIQ(2,DFN_",",.118,"I") D SET(.VPSARR,2,DFN,".118",VAL) ;Address Change DT/TM
S VAL=$$GET1^DIQ(2,DFN_",",.12113,"I") D SET(.VPSARR,2,DFN,".12113",VAL) ;Temp Address Change DT/TM
S VAL=$$GET1^DIQ(2,DFN_",",.14112,"I") D SET(.VPSARR,2,DFN,".14112",VAL) ; CONFIDENTIAL ADDRESS CHANGE DT/TM
S VAL=$$GET1^DIQ(2,DFN_",",.1312,"I") D SET(.VPSARR,2,DFN,".1312",VAL) ; Pager Number Change DT/TM
S VAL=$$GET1^DIQ(2,DFN_",",.136,"I") D SET(.VPSARR,2,DFN,".136",VAL) ; Email Address Change DT/TM
S VAL=$$GET1^DIQ(2,DFN_",",.139,"I") D SET(.VPSARR,2,DFN,".139",VAL) ; CELLULAR NUMBER CHANGE DATE/TIME
S VAL=$$GET1^DIQ(2,DFN_",",.33012,"I") D SET(.VPSARR,2,DFN,".33012",VAL) ; E-Contact Change DT/TM
S VAL=$$GET1^DIQ(2,DFN_",",.33112,"I") D SET(.VPSARR,2,DFN,".33112",VAL) ; E2-Contact Change DT/TM
S VAL=$$GET1^DIQ(2,DFN_",",.3412,"I") D SET(.VPSARR,2,DFN,".3412",VAL) ; Designee Change DT/TM
S VAL=$$GET1^DIQ(2,DFN_",",.21012,"I") D SET(.VPSARR,2,DFN,".21012",VAL) ; PRIMARY NOK CHANGE DATE/TIME
S VAL=$$GET1^DIQ(2,DFN_",",.211012,"I") D SET(.VPSARR,2,DFN,".211012",VAL) ; SECONDARY NOK CHANGE DATE/TIME
QUIT
;
BLPAT(VPSARR,DFN) ; Store Billing Patient
N BP S BP=+$$RXST^IBARXEU(DFN)
QUIT:BP=-1
N VAL S VAL=$S(BP=0:"NON-EXEMPT",1:"EXEMPT") D SET(.VPSARR,354,DFN,"RX COPAY",VAL) ; COPAY INCOME EXEMPTION STATUS-
;N VAL S VAL=$S(BP=0:"NON-EXEMPT",1:"EXEMPT") D SET(.VPSARR,354,DFN,"COMPUTED",VAL) ; COPAY INCOME EXEMPTION STATUS
D SET(.VPSARR,408.31,DFN,".03",$P($$LST^EASECU(DFN),U,3)) ;"LTC CO-PAY"
QUIT
;
PCT(VPSARR,DFN) ; Primary Care Team
N PCTLST D PCDETAIL^ORWPT1(.PCTLST,DFN)
N REC,FLD,FLDVAL
N PROVIDER
N ILST S ILST=0
;
F S ILST=$O(PCTLST(ILST)) QUIT:'ILST D
. S REC=PCTLST(ILST)
. QUIT:'$F(REC,":")
. S FLD=$$TRIM^XLFSTR($P(REC,":"))
. S FLDVAL=$$TRIM^XLFSTR($P(REC,":",2))
. ;
. I FLD="Primary Care Team" D SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE TEAM NAME")
. I FLD="Phone" D SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE TEAM TELEPHONE NUMBER")
. ;
. I FLD="Primary Care Provider" S PROVIDER=1 D SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE PROVIDER NAME")
. I FLD="Analog Pager",$G(PROVIDER)=1 D SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE PROVIDER ANALOG PAGER")
. I FLD="Digital Pager",$G(PROVIDER)=1 D SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE PROVIDER DIGITAL PAGER")
. I FLD="Office Phone",$G(PROVIDER)=1 D SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE PROVIDER OFFICE PHONE")
. ;
. I FLD="Associate Provider" S PROVIDER=2 D SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE ASSOCIATE PROVIDER NAME")
. I FLD="Analog Pager",$G(PROVIDER)=2 D SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE ASSOCIATE PROVIDER ANALOG PAGER")
. I FLD="Digital Pager",$G(PROVIDER)=2 D SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE ASSOCIATE PROVIDER DIGITAL PAGER")
. I FLD="Office Phone",$G(PROVIDER)=2 D SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE ASSOCIATE PROVIDER OFFICE PHONE")
. ;
. I FLD="Attending Physician" S PROVIDER=3 D SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE ATTENDING PHYSICIAN NAME")
. I FLD="Analog Pager",$G(PROVIDER)=3 D SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE ATTENDING PHYSICIAN ANALOG PAGER")
. I FLD="Digital Pager",$G(PROVIDER)=3 D SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE ATTENDING PHYSICIAN DIGITAL PAGER")
. I FLD="Office Phone",$G(PROVIDER)=3 D SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE ATTENDING PHYSICIAN OFFICE PHONE")
. ;
. I FLD="MH Treatment Team" S PROVIDER=4 D SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE MENTAL HEALTH TEAM")
. I FLD="MH Treatment Coordinator" S PROVIDER=4 D SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE MENTAL HEALTH COORDINATOR")
. I FLD="Analog Pager",$G(PROVIDER)=4 D SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE MENTAL HEALTH PROVIDER ANALOG PAGER")
. I FLD="Digital Pager",$G(PROVIDER)=4 D SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE MENTAL HEALTH PROVIDER DIGITAL PAGER")
. I FLD="Office Phone",$G(PROVIDER)=4 D SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE MENTAL HEALTH PROVIDER OFFICE PHONE")
QUIT
;
SET(VPSARR,VPSFL,VPSIEN,VPSFLD,VPSDA,VPSDS) ;Set line item to output array
I VPSDA'="" D SET^VPSRPC1(.VPSARR,VPSFL,VPSIEN,VPSFLD,VPSDA,$G(VPSDS),6) ;Set line item to output array
QUIT
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HVPSRPC26 11725 printed Oct 16, 2024@18:44:08 Page 2
VPSRPC26 ;BPOIFO/EL,SLOIFO/BT - Patient Demographic (continue);07/31/14 13:07
+1 ;;1.0;VA POINT OF SERVICE (KIOSKS);**4,14**;Jul 31, 2014;Build 26
+2 ;;Per VHA Directive 2004-038, this routine should not be modified.
+3 ;
+4 ; External Reference DBIA#
+5 ; ------------------------
+6 ; #2056 - DIQ call (Supported)
+7 ; #2701 - MPIF001 call (Supported)
+8 ; #3860 - DGPFAPI call (Controlled Sub)
+9 ; #4289 - PRCAHV call (Controlled Sub)
+10 ; #4419 - IBBAPI call (Supported)
+11 ; #4425 - ^DGS( references (Controlled Sub)
+12 ; #4462 - $$GETSHAD^DGUTL3 (Supported)
+13 ; #4499 - $$LST^EASECU (Controlled Sub)
+14 ; #4807 - $$RDIS^DGRPDB (Supported)
+15 ; #6107 - PCDETAIL^ORWPT1 call (Controlled Sub)
+16 ; #10035 - ^DPT( references (Supported)
+17 ; #10103 - XLFDT call (Supported)
+18 ; #10147 - $$RXST^IBARXEU (Supported)
+19 QUIT
+20 ;
IBB(VPSARR,DFN) ; Insurance Info
+1 NEW VPSIBB,VPSIBFLD
SET VPSIBFLD="1,10,11,13,14,21"
+2 NEW VAL
SET VAL=$$INSUR^IBBAPI(DFN,,"ABR",.VPSIBB,VPSIBFLD)
+3 if VAL'>0
QUIT
+4 ;
+5 NEW VPSFL,VPSIEN
+6 NEW SEQ
SET SEQ=""
+7 ;
+8 FOR
SET SEQ=$ORDER(VPSIBB("IBBAPI","INSUR",SEQ))
if SEQ=""
QUIT
Begin DoDot:1
+9 SET VPSFL="2.312"
SET VPSIEN=DFN_";"_SEQ
+10 ; Insurance Company Name
+11 SET VAL=$GET(VPSIBB("IBBAPI","INSUR",SEQ,1))
+12 SET VAL=$PIECE(VAL,U,2)
DO SET(.VPSARR,36,VPSIEN,.01,VAL)
+13 ; Policy Effective Date
+14 SET VAL=$GET(VPSIBB("IBBAPI","INSUR",SEQ,10))
+15 DO SET(.VPSARR,VPSFL,VPSIEN,8,VAL)
+16 ; Policy Expiration Date
+17 SET VAL=$GET(VPSIBB("IBBAPI","INSUR",SEQ,11))
+18 DO SET(.VPSARR,VPSFL,VPSIEN,3,VAL)
+19 ; Subscribe Name
+20 SET VAL=$GET(VPSIBB("IBBAPI","INSUR",SEQ,13))
+21 DO SET(.VPSARR,VPSFL,VPSIEN,17,VAL)
+22 ; Subscribe ID
+23 SET VAL=$GET(VPSIBB("IBBAPI","INSUR",SEQ,14))
+24 DO SET(.VPSARR,VPSFL,VPSIEN,1,VAL)
End DoDot:1
+25 ;
+26 QUIT
+27 ;
REC(VPSARR,DFN) ; Patient Record Flag
+1 NEW PRF,NPRF,PRFFIL,PRFLAG,VAL
+2 ;Retrieve all ACTIVE Patient record flag assignments
SET NPRF=$$GETACT^DGPFAPI(DFN,"VPSREC")
+3 ;
+4 ; Store all Patient Record Flags and Assigment Narratives into result array (VPSARR)
+5 FOR PRF=1:1:NPRF
Begin DoDot:1
+6 ;store flag type
+7 SET VAL=$PIECE(VPSREC(PRF,"FLAGTYPE"),U,2)
+8 SET PRFLAG=$PIECE(VPSREC(PRF,"FLAG"),U)
+9 IF VAL'=""
IF PRFLAG'=""
Begin DoDot:2
+10 SET PRFFIL=$PIECE($PIECE(PRFLAG,"DGPF(",2),",")
+11 IF PRFFIL'=""
DO SET(.VPSARR,PRFFIL,DFN,".03",VAL,"FLAG TYPE")
End DoDot:2
+12 ;store flag name
+13 SET VAL=$PIECE(VPSREC(PRF,"FLAG"),U,2)
DO SET(.VPSARR,"26.13",DFN,".02",VAL)
+14 ; Store ASSIGNMENT NARRATIVE (word-processing) for this counter
DO STNARR(PRF,.VPSREC)
End DoDot:1
+15 ;
+16 QUIT
+17 ;
STNARR(PRF,VPSREC) ; Store ASSIGNMENT NARRATIVE (word-processing) into result array (VPSARR)
+1 NEW VAL,NARRCNT
SET NARRCNT=""
+2 FOR
SET NARRCNT=$ORDER(VPSREC(PRF,"NARR",NARRCNT))
if NARRCNT=""
QUIT
Begin DoDot:1
+3 SET VAL=$GET(VPSREC(PRF,"NARR",NARRCNT,0))
DO SET(.VPSARR,"26.132",DFN,".01",VAL)
End DoDot:1
+4 QUIT
+5 ;
DGS(VPSARR,DFN) ; Pre-Registration Audit
+1 NEW VPSFL
SET VPSFL="41.41"
+2 NEW DGIEN
SET DGIEN=$ORDER(^DGS(VPSFL,"ADC",DFN,""),-1)
+3 DO SET(.VPSARR,VPSFL,DFN,1,DGIEN)
+4 QUIT
+5 ;
BAL(VPSARR,DFN) ; BALANCE-OWED
+1 NEW VPSICN
SET VPSICN=$$GETICN^MPIF001(DFN)
+2 NEW ICN
SET ICN=$PIECE(VPSICN,"V")
+3 NEW VAL,BAL
SET BAL=$$BALANCE^PRCAHV(.VAL,ICN,"ALL")
+4 IF BAL=1
DO SET(.VPSARR,430,DFN,"COMPUTED",VAL,"BALANCE")
+5 QUIT
+6 ;
OTH(VPSARR,DFN) ; Other info not in known category
+1 NEW VAL
+2 ;Period of Service
SET VAL=$$GET1^DIQ(2,DFN_",",.323,"E")
DO SET(.VPSARR,2,DFN,.323,VAL)
+3 ; Fugitive Felon Flag
SET VAL=$$GET1^DIQ(2,DFN_",",1100.01,"E")
DO SET(.VPSARR,2,DFN,1100.01,VAL)
+4 ; Exclude From Facility DIRECTORY?
SET VAL=$$GET1^DIQ(2,DFN_",",.109,"E")
DO SET(.VPSARR,2,DFN,.109,VAL)
+5 ; Laboratory Reference
SET VAL=$$GET1^DIQ(2,DFN_",",63,"E")
DO SET(.VPSARR,2,DFN,63,VAL)
+6 ; Unemployable
SET VAL=$$GET1^DIQ(2,DFN_",",.305,"E")
DO SET(.VPSARR,2,DFN,.305,VAL)
+7 QUIT
+8 ;
POW(VPSARR,DFN) ; POW information
+1 NEW VAL
+2 ; POW Status Indicated?
SET VAL=$$GET1^DIQ(2,DFN_",",.525,"E")
DO SET(.VPSARR,2,DFN,".525",VAL)
+3 ; POW Confinement Location
SET VAL=$$GET1^DIQ(2,DFN_",",.526,"E")
DO SET(.VPSARR,2,DFN,".526",VAL)
+4 ; POW From Date
SET VAL=$$GET1^DIQ(2,DFN_",",.527,"I")
DO SET(.VPSARR,2,DFN,".527",VAL)
+5 ; POW Through Date
SET VAL=$$GET1^DIQ(2,DFN_",",.528,"I")
DO SET(.VPSARR,2,DFN,".528",VAL)
+6 ; POW Status Verified
SET VAL=$$GET1^DIQ(2,DFN_",",.529,"I")
DO SET(.VPSARR,2,DFN,".529",VAL)
+7 QUIT
+8 ;
PH(VPSARR,DFN) ; Store PURPLE HEART
+1 NEW VAL
+2 ; Current PH Indicator
SET VAL=$$GET1^DIQ(2,DFN_",",.531,"E")
DO SET(.VPSARR,2,DFN,".531",VAL)
+3 ; Current PH Status
SET VAL=$$GET1^DIQ(2,DFN_",",.532,"E")
DO SET(.VPSARR,2,DFN,".532",VAL)
+4 ; Current PH Remarks
SET VAL=$$GET1^DIQ(2,DFN_",",.533,"E")
DO SET(.VPSARR,2,DFN,".533",VAL)
+5 QUIT
+6 ;
MP(VPSARR,DFN) ; Store Missing Person
+1 ; Missing Person Date
NEW VAL
SET VAL=$$GET1^DIQ(2,DFN_",",.153,"I")
DO SET(.VPSARR,2,DFN,.153,VAL)
+2 ;
+3 ; Missing or ineligible
NEW WP
SET WP=$$GET1^DIQ(2,DFN_",",.16,"","WP")
+4 NEW SEQ
SET SEQ=0
SET VAL=""
+5 FOR
SET SEQ=$ORDER(WP(SEQ))
if 'SEQ
QUIT
SET VAL=VAL_" "_WP(SEQ)
+6 DO SET(.VPSARR,2,DFN,.16,VAL)
+7 ;
+8 NEW INE
SET INE=$GET(^DPT(DFN,"INE"))
+9 if INE=""
QUIT
+10 ; Missing Person TWX Source
SET VAL=$PIECE(INE,U,7)
DO SET(.VPSARR,2,DFN,".1657",VAL)
+11 ; Missing Person TWX City
SET VAL=$PIECE(INE,U,8)
DO SET(.VPSARR,2,DFN,".1658",VAL)
+12 ; Missing Person TWX State
SET VAL=$PIECE(INE,U,9)
DO SET(.VPSARR,2,DFN,".1659",VAL)
+13 QUIT
+14 ;
SVC(VPSARR,DFN) ; Store Service Connected and Rated Disabilities
+1 NEW VAL
+2 ; SC Award Date
SET VAL=$$GET1^DIQ(2,DFN_",",.3012,"I")
DO SET(.VPSARR,2,DFN,.3012,VAL)
+3 ; Effective Date Combine SC% EVAL
SET VAL=$$GET1^DIQ(2,DFN_",",.3014,"I")
DO SET(.VPSARR,2,DFN,.3014,VAL)
+4 ;
+5 NEW DGARR
SET VAL=$$RDIS^DGRPDB(DFN,.DGARR)
+6 NEW SEQ
SET SEQ=0
+7 FOR
SET SEQ=$ORDER(DGARR(SEQ))
if 'SEQ
QUIT
Begin DoDot:1
+8 ; Disability %
SET VAL=$PIECE(DGARR(SEQ),U,2)
DO SET(.VPSARR,2.04,DFN,2,VAL)
+9 ; Service Connected
SET VAL=$PIECE(DGARR(SEQ),U,3)
SET VAL=$SELECT(VAL=1:"YES",1:"NO")
DO SET(.VPSARR,2.04,DFN,3,VAL)
+10 ; Extremity Affected
SET VAL=$PIECE(DGARR(SEQ),U,4)
SET VAL=$$GETXAFF(VAL)
DO SET(.VPSARR,2.04,DFN,4,VAL)
+11 ; Original Effective Date
SET VAL=$PIECE(DGARR(SEQ),U,5)
DO SET(.VPSARR,2.04,DFN,5,VAL)
+12 ; Current Effective Date
SET VAL=$PIECE(DGARR(SEQ),U,6)
DO SET(.VPSARR,2.04,DFN,6,VAL)
End DoDot:1
+13 ;
+14 ;Flags/Environment Indicators
+15 ; Agent Orange Exposure Indicated
SET VAL=$$GET1^DIQ(2,DFN_",",.32102,"E")
DO SET(.VPSARR,2,DFN,.32102,VAL)
+16 ; Agent Orange Registration Date
SET VAL=$$GET1^DIQ(2,DFN_",",.32107,"I")
DO SET(.VPSARR,2,DFN,.32107,VAL)
+17 ; Agent Orange Examination Date
SET VAL=$$GET1^DIQ(2,DFN_",",.32109,"I")
DO SET(.VPSARR,2,DFN,.32109,VAL)
+18 ; Radiation Exposure Indicated
SET VAL=$$GET1^DIQ(2,DFN_",",.32103,"E")
DO SET(.VPSARR,2,DFN,.32103,VAL)
+19 ; Radiation Registration Date
SET VAL=$$GET1^DIQ(2,DFN_",",.32111,"E")
DO SET(.VPSARR,2,DFN,.32111,VAL)
+20 ; Radiation Exposure Method
SET VAL=$$GET1^DIQ(2,DFN_",",.3212,"E")
DO SET(.VPSARR,2,DFN,.3212,VAL)
+21 ; Proj 112/shad
SET VAL=$$GETSHAD^DGUTL3(DFN)
SET VAL=$SELECT(VAL=1:"YES",1:"NO")
DO SET(.VPSARR,2,DFN,.32115,VAL)
+22 ; Combat Service Indicated
SET VAL=$$GET1^DIQ(2,DFN_",",.5291,"E")
DO SET(.VPSARR,2,DFN,.5291,VAL)
+23 ; Combat from date
SET VAL=$$GET1^DIQ(2,DFN_",",.5293,"I")
DO SET(.VPSARR,2,DFN,.5293,VAL)
+24 ; Combat to Date
SET VAL=$$GET1^DIQ(2,DFN_",",.5294,"I")
DO SET(.VPSARR,2,DFN,.5294,VAL)
+25 QUIT
+26 ;
GETXAFF(VAL) ; Get external value of Extremity Affected
+1 if VAL="BL"
QUIT "BOTH LOWER"
+2 if VAL="BU"
QUIT "BOTH UPPER"
+3 if VAL="RL"
QUIT "RIGHT LOWER"
+4 if VAL="RU"
QUIT "RIGHT UPPER"
+5 if VAL="LL"
QUIT "LEFT LOWER"
+6 if VAL="LU"
QUIT "LEFT UPPER"
+7 QUIT ""
+8 ;
CHG(VPSARR,DFN) ; Store Change DT/TM fields
+1 NEW VAL
+2 ;Address Change DT/TM
SET VAL=$$GET1^DIQ(2,DFN_",",.118,"I")
DO SET(.VPSARR,2,DFN,".118",VAL)
+3 ;Temp Address Change DT/TM
SET VAL=$$GET1^DIQ(2,DFN_",",.12113,"I")
DO SET(.VPSARR,2,DFN,".12113",VAL)
+4 ; CONFIDENTIAL ADDRESS CHANGE DT/TM
SET VAL=$$GET1^DIQ(2,DFN_",",.14112,"I")
DO SET(.VPSARR,2,DFN,".14112",VAL)
+5 ; Pager Number Change DT/TM
SET VAL=$$GET1^DIQ(2,DFN_",",.1312,"I")
DO SET(.VPSARR,2,DFN,".1312",VAL)
+6 ; Email Address Change DT/TM
SET VAL=$$GET1^DIQ(2,DFN_",",.136,"I")
DO SET(.VPSARR,2,DFN,".136",VAL)
+7 ; CELLULAR NUMBER CHANGE DATE/TIME
SET VAL=$$GET1^DIQ(2,DFN_",",.139,"I")
DO SET(.VPSARR,2,DFN,".139",VAL)
+8 ; E-Contact Change DT/TM
SET VAL=$$GET1^DIQ(2,DFN_",",.33012,"I")
DO SET(.VPSARR,2,DFN,".33012",VAL)
+9 ; E2-Contact Change DT/TM
SET VAL=$$GET1^DIQ(2,DFN_",",.33112,"I")
DO SET(.VPSARR,2,DFN,".33112",VAL)
+10 ; Designee Change DT/TM
SET VAL=$$GET1^DIQ(2,DFN_",",.3412,"I")
DO SET(.VPSARR,2,DFN,".3412",VAL)
+11 ; PRIMARY NOK CHANGE DATE/TIME
SET VAL=$$GET1^DIQ(2,DFN_",",.21012,"I")
DO SET(.VPSARR,2,DFN,".21012",VAL)
+12 ; SECONDARY NOK CHANGE DATE/TIME
SET VAL=$$GET1^DIQ(2,DFN_",",.211012,"I")
DO SET(.VPSARR,2,DFN,".211012",VAL)
+13 QUIT
+14 ;
BLPAT(VPSARR,DFN) ; Store Billing Patient
+1 NEW BP
SET BP=+$$RXST^IBARXEU(DFN)
+2 if BP=-1
QUIT
+3 ; COPAY INCOME EXEMPTION STATUS-
NEW VAL
SET VAL=$SELECT(BP=0:"NON-EXEMPT",1:"EXEMPT")
DO SET(.VPSARR,354,DFN,"RX COPAY",VAL)
+4 ;N VAL S VAL=$S(BP=0:"NON-EXEMPT",1:"EXEMPT") D SET(.VPSARR,354,DFN,"COMPUTED",VAL) ; COPAY INCOME EXEMPTION STATUS
+5 ;"LTC CO-PAY"
DO SET(.VPSARR,408.31,DFN,".03",$PIECE($$LST^EASECU(DFN),U,3))
+6 QUIT
+7 ;
PCT(VPSARR,DFN) ; Primary Care Team
+1 NEW PCTLST
DO PCDETAIL^ORWPT1(.PCTLST,DFN)
+2 NEW REC,FLD,FLDVAL
+3 NEW PROVIDER
+4 NEW ILST
SET ILST=0
+5 ;
+6 FOR
SET ILST=$ORDER(PCTLST(ILST))
if 'ILST
QUIT
Begin DoDot:1
+7 SET REC=PCTLST(ILST)
+8 if '$FIND(REC,"
QUIT
+9 SET FLD=$$TRIM^XLFSTR($PIECE(REC,":"))
+10 SET FLDVAL=$$TRIM^XLFSTR($PIECE(REC,":",2))
+11 ;
+12 IF FLD="Primary Care Team"
DO SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE TEAM NAME")
+13 IF FLD="Phone"
DO SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE TEAM TELEPHONE NUMBER")
+14 ;
+15 IF FLD="Primary Care Provider"
SET PROVIDER=1
DO SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE PROVIDER NAME")
+16 IF FLD="Analog Pager"
IF $GET(PROVIDER)=1
DO SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE PROVIDER ANALOG PAGER")
+17 IF FLD="Digital Pager"
IF $GET(PROVIDER)=1
DO SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE PROVIDER DIGITAL PAGER")
+18 IF FLD="Office Phone"
IF $GET(PROVIDER)=1
DO SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE PROVIDER OFFICE PHONE")
+19 ;
+20 IF FLD="Associate Provider"
SET PROVIDER=2
DO SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE ASSOCIATE PROVIDER NAME")
+21 IF FLD="Analog Pager"
IF $GET(PROVIDER)=2
DO SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE ASSOCIATE PROVIDER ANALOG PAGER")
+22 IF FLD="Digital Pager"
IF $GET(PROVIDER)=2
DO SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE ASSOCIATE PROVIDER DIGITAL PAGER")
+23 IF FLD="Office Phone"
IF $GET(PROVIDER)=2
DO SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE ASSOCIATE PROVIDER OFFICE PHONE")
+24 ;
+25 IF FLD="Attending Physician"
SET PROVIDER=3
DO SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE ATTENDING PHYSICIAN NAME")
+26 IF FLD="Analog Pager"
IF $GET(PROVIDER)=3
DO SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE ATTENDING PHYSICIAN ANALOG PAGER")
+27 IF FLD="Digital Pager"
IF $GET(PROVIDER)=3
DO SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE ATTENDING PHYSICIAN DIGITAL PAGER")
+28 IF FLD="Office Phone"
IF $GET(PROVIDER)=3
DO SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE ATTENDING PHYSICIAN OFFICE PHONE")
+29 ;
+30 IF FLD="MH Treatment Team"
SET PROVIDER=4
DO SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE MENTAL HEALTH TEAM")
+31 IF FLD="MH Treatment Coordinator"
SET PROVIDER=4
DO SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE MENTAL HEALTH COORDINATOR")
+32 IF FLD="Analog Pager"
IF $GET(PROVIDER)=4
DO SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE MENTAL HEALTH PROVIDER ANALOG PAGER")
+33 IF FLD="Digital Pager"
IF $GET(PROVIDER)=4
DO SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE MENTAL HEALTH PROVIDER DIGITAL PAGER")
+34 IF FLD="Office Phone"
IF $GET(PROVIDER)=4
DO SET(.VPSARR,2,DFN,"COMPUTED",FLDVAL,"PRIMARY CARE MENTAL HEALTH PROVIDER OFFICE PHONE")
End DoDot:1
+35 QUIT
+36 ;
SET(VPSARR,VPSFL,VPSIEN,VPSFLD,VPSDA,VPSDS) ;Set line item to output array
+1 ;Set line item to output array
IF VPSDA'=""
DO SET^VPSRPC1(.VPSARR,VPSFL,VPSIEN,VPSFLD,VPSDA,$GET(VPSDS),6)
+2 QUIT