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  Sep 23, 2025@20:19:53                                                                                                                                                                                                   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