DGPSEU2 ;ALB/ERC - REPORTS FOR PSEUDO SSN ; 1/9/06 7:46am
 ;;5.3;Registration;**653**;Aug 13, 1993;Build 2
 ;
 ;creates a report of all dependents with pseudo SSNs
 ;can call for one Pseudo SSN Reason or can call for all reasons
 ;sorted by reason
 ;
TSK2 ;
 N DGQ,DGQUIT,DGREAS,DGXREAS,DGTXT
 N ZTRTN,ZTDESC,ZTSK,ZTIO,ZTDTH,POP,IO,IOBS,IOF,IOHG,IOM,ION,IOPAR
 N IOS,IOSL,IOST,IOT,IOUPAR,IOXY,%ZIS,ZTSAVE
 K ^TMP("DGEVC",$J)
 S DGQUIT=0
 D QUESREAS^DGPSEUDO Q:DGQUIT
 S %ZIS="Q"
 D ^%ZIS I $G(POP) D ^%ZISC,HOME^%ZIS W !,"Job Terminated!" Q
 I $D(IO("Q")) D  Q
 . S ZTRTN="RPT2^DGPSEU2"
 . S ZTDESC="DEPENDENTS WITH PSEUDO SOCIAL SECURITY NUMBERS"
 . S (ZTSAVE("DGXREAS"),ZTSAVE("DGXVET"))=""
 . D ^%ZTLOAD
 . S DGTXT=$S($G(ZTSK):"Task: "_ZTSK_" Queued.",1:"Error: Process not queued!")
 . W !,DGTXT
RPT2 ;
 N DGC,DGPAGE,DGQ
 S (DGQUIT,DGPAGE)=0
 S DGC=0
 D LOOP2
 D HDR2
 I $G(DGC)'>0 W !!?25,"****NO RECORDS TO REPORT****" W ! D PAUSE^DGPSEUDO Q
 D REP2(DGXREAS)
 D ^%ZISC,HOME^%ZIS
 K ^TMP("DGEVC",$J)
 Q
LOOP2 ;
 I $E(IOST,1,2)["C-" U IO(0) W !!,"Scanning file...."
 U IO
 N DGCT,DGIEN13,DGX
 K ^TMP("DGEVC",$J)
 S DGX=999999999
 S DGCT=0
 S ^TMP("DGEVC",$J,"COUNT")=0
 S ^TMP("DGEVC",$J,"COUNT","REFUSED TO PROVIDE")=0
 S ^TMP("DGEVC",$J,"COUNT","SSN UNKNOWN/FOLLOW-UP REQUIRED")=0
 S ^TMP("DGEVC",$J,"COUNT","NO SSN ASSIGNED")=0
 S ^TMP("DGEVC",$J,"COUNT","NULL")=0
 F  S DGX=$O(^DGPR(408.13,"SSN",DGX)) Q:DGX=""  D
 . I DGX'["P" Q
 . S DGIEN13=0
 . F  S DGIEN13=$O(^DGPR(408.13,"SSN",DGX,DGIEN13)) Q:'DGIEN13  D
 . . Q:'$D(^DGPR(408.13,DGIEN13,0))
 . . D PSEU2
 Q
PSEU2 ;
 N DGARR,DGCT,DGDFN,DGDOB,DGERR,DGIEN12,DGNAM,DGPAT,DGPSSN,DGSSN
 I $D(^TMP("DGEVC",$J,DGIEN13)) Q
 D GETS^DIQ(408.13,DGIEN13_",",".01;.09;.1","EI","DGARR","DGERR")
 I $D(DGERR) K DGERR Q
 I $G(DGARR(408.13,DGIEN13_",",.09,"I"))'["P" K DGARR Q
 S DGDEPNAM=$G(DGARR(408.13,DGIEN13_",",.01,"I"))
 S DGDEPSSN=$G(DGARR(408.13,DGIEN13_",",.09,"I"))
 S DGREASON=$G(DGARR(408.13,DGIEN13_",",.1,"E"))
 I $G(DGREASON)']"" S DGREASON="NULL"
 I DGXREAS'="ALL",DGXREAS'=DGREASON K DGARR Q
 S DGIEN12=0
 S DGIEN12=$O(^DGPR(408.12,"C",DGIEN13_";DGPR(408.13,",DGIEN12))
 I $G(DGIEN12)']"" K DGARR Q
 I '$D(^DGPR(408.12,DGIEN12,0)) K DGARR Q
 D GETS^DIQ(408.12,DGIEN12_",",".01;.02","EI","DGARR","DGERR")
 I $D(DGERR) K DGARR,DGERR Q
 S DGDFN=$G(DGARR(408.12,DGIEN12_",",.01,"I"))
 I '$D(^DPT(DGDFN)),($G(^DPT(DGDFN,0))']"") K DGARR Q
 S DGREL=$G(DGARR(408.12,DGIEN12_",",.02,"E"))
 S DGREL=$$GETREL(DGREL)
 D GETS^DIQ(2,DGDFN_",",".01;.09","EI","DGARR","DGERR")
 I $D(DGERR) K DGARR,DGERR Q
 S DGPATNAM=$G(DGARR(2,DGDFN_",",.01,"E"))
 S DGPATSSN=$G(DGARR(2,DGDFN_",",.09,"I"))
 S DGC=DGC+1
 S ^TMP("DGEVC",$J,DGPATNAM,DGDFN,DGDEPNAM,DGIEN13)=DGPATSSN_"^"_DGREL_"^"_DGDEPSSN_"^"_DGREASON
 S ^TMP("DGEVC",$J,"COUNT")=DGC
 S ^TMP("DGEVC",$J,"COUNT",DGREASON)=$G(^TMP("DGEVC",$J,"COUNT",DGREASON))+1
 K DGARR,DGDFN,DGERR,DGDEPNAM,DGDEPSSN,DGPATNAM,DGPATSSN,DGREASON,DGREL
 Q
HDR2 ;
 N DGDATE,DGL,DGLINE,DGT,Y ;display veteran, non-vet or both
 I $E(IOST,1,2)["C-" W @IOF
 S DGPAGE=DGPAGE+1
 W !?((IOM-46)\2),"Pseudo SSN Report for Means Test Dependents",?70,"Page:"_DGPAGE
 S DGT="Report shows "_$S(DGXREAS="NULL":"<NONE ENTERED>",1:DGXREAS)
 S DGL=$L(DGT)
 W !?((IOM-DGL)\2),DGT
 S Y=DT X ^DD("DD") S DGDATE=Y
 W !?62,"Date: "_$G(DGDATE)
 W !!,"PATIENT",?27,"PATIENT SSN"
 W !?5,"DEPENDENT",?38,"RELATIONSHIP",?52,"DEP. PSSN",?64,"PSSN REASON"
 N DGZ
 W !
 F DGZ=1:1:IOM W "-"
 Q
REP2(DGXREAS) ;
 N DG0,DGCT,DGDNAM,DGIEN,DGN,DGPNAM,DGRR
 S (DGDNAM,DGN,DGDFN,DGPNAM)=""
 S DGCT=0
 F  S DGPNAM=$O(^TMP("DGEVC",$J,DGPNAM)) Q:DGPNAM']""!($G(DGQ))  D
 . I DGPNAM="COUNT",($O(^TMP("DGEVC",$J,DGPNAM,""))'>0) Q
 . F  S DGDFN=$O(^TMP("DGEVC",$J,DGPNAM,DGDFN)) Q:DGDFN'>0!($G(DGQ))  D
 . . N DG0
 . . I $E(IOST,1,2)["C-",($Y>(IOSL-4)) D PAUSE^DGPSEUDO Q:$G(DGQ)
 . . I $Y>(IOSL-4) D
 . . . W @IOF
 . . . D HDR2
 . . S DG0=^DPT(DGDFN,0)
 . . S DGSSN=$P(DG0,U,9)
 . . W !!,$E($G(DGPNAM),1,25),?27,$G(DGSSN)
 . . S (DGDNAM,DGIEN)=""
 . . F  S DGDNAM=$O(^TMP("DGEVC",$J,DGPNAM,DGDFN,DGDNAM)) Q:DGDNAM']""!($G(DGQ))  D
 . . . F  S DGIEN=$O(^TMP("DGEVC",$J,DGPNAM,DGDFN,DGDNAM,DGIEN)) Q:DGIEN'>0!($G(DGQ))  D
 . . . . S DGN=^TMP("DGEVC",$J,DGPNAM,DGDFN,DGDNAM,DGIEN)
 . . . . S DGRR=$P(DGN,U,4)
 . . . . S DGRR=$S(DGRR["REF":"REF TO PROVIDE",DGRR["UNKN":"SSN UNK-F/U REQ",DGRR["NULL":"<NONE ENTERED>",1:DGRR)
 . . . . I $E(IOST,1,2)["C-",($Y>(IOSL-4)) D PAUSE^DGPSEUDO Q:$G(DGQ)
 . . . . I $Y>(IOSL-4) D
 . . . . . W @IOF
 . . . . . D HDR2
 . . . . . W !,$E($G(DGPNAM),1,25),?27,$G(DGSSN)
 . . . . W !?5,$G(DGDNAM),?38,$E($P(DGN,U,2),1,12),?52,$P(DGN,U,3),?64,$G(DGRR)
 . . . . S DGCT=DGCT+1
 I DGCT=DGC D
 . I $E(IOST,1,2)["C-",($Y>(IOSL-6)) D PAUSE^DGPSEUDO Q:$G(DGQ)
 . I $Y>(IOSL-6) D
 . . W @IOF
 . . D HDR2
 . W !!?5,"Total number of dependents with Pseudo SSNs for this report: "_DGC
 . I DGXREAS="ALL" D
 . . W !?31,"Dependents who REFUSED TO PROVIDE: "_^TMP("DGEVC",$J,"COUNT","REFUSED TO PROVIDE")
 . . W !?29,"Dependents who have NO SSN ASSIGNED: "_^TMP("DGEVC",$J,"COUNT","NO SSN ASSIGNED")
 . . W !?33,"Dependents who have SSN UNKNOWN: "_^TMP("DGEVC",$J,"COUNT","SSN UNKNOWN/FOLLOW-UP REQUIRED")
 . . W !?22,"Dependents who have no PSSN Reason entered: "_^TMP("DGEVC",$J,"COUNT","NULL")
 W !
 I $E(IOST,1,2)["C-",('$G(DGQ)) D PAUSE^DGPSEUDO
 D ^%ZISC,HOME^%ZIS
 Q
GETREL(DGREL) ;some relationships will need to be abbreviated to fit the 12 
 ; char spacing limit
 I DGREL']"" Q DGREL
 I $P(DGREL,"-")="GREAT" S $P(DGREL,"-")="GR"
 Q DGREL
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HDGPSEU2   5646     printed  Sep 23, 2025@20:27:03                                                                                                                                                                                                     Page 2
DGPSEU2   ;ALB/ERC - REPORTS FOR PSEUDO SSN ; 1/9/06 7:46am
 +1       ;;5.3;Registration;**653**;Aug 13, 1993;Build 2
 +2       ;
 +3       ;creates a report of all dependents with pseudo SSNs
 +4       ;can call for one Pseudo SSN Reason or can call for all reasons
 +5       ;sorted by reason
 +6       ;
TSK2      ;
 +1        NEW DGQ,DGQUIT,DGREAS,DGXREAS,DGTXT
 +2        NEW ZTRTN,ZTDESC,ZTSK,ZTIO,ZTDTH,POP,IO,IOBS,IOF,IOHG,IOM,ION,IOPAR
 +3        NEW IOS,IOSL,IOST,IOT,IOUPAR,IOXY,%ZIS,ZTSAVE
 +4        KILL ^TMP("DGEVC",$JOB)
 +5        SET DGQUIT=0
 +6        DO QUESREAS^DGPSEUDO
           if DGQUIT
               QUIT 
 +7        SET %ZIS="Q"
 +8        DO ^%ZIS
           IF $GET(POP)
               DO ^%ZISC
               DO HOME^%ZIS
               WRITE !,"Job Terminated!"
               QUIT 
 +9        IF $DATA(IO("Q"))
               Begin DoDot:1
 +10               SET ZTRTN="RPT2^DGPSEU2"
 +11               SET ZTDESC="DEPENDENTS WITH PSEUDO SOCIAL SECURITY NUMBERS"
 +12               SET (ZTSAVE("DGXREAS"),ZTSAVE("DGXVET"))=""
 +13               DO ^%ZTLOAD
 +14               SET DGTXT=$SELECT($GET(ZTSK):"Task: "_ZTSK_" Queued.",1:"Error: Process not queued!")
 +15               WRITE !,DGTXT
               End DoDot:1
               QUIT 
RPT2      ;
 +1        NEW DGC,DGPAGE,DGQ
 +2        SET (DGQUIT,DGPAGE)=0
 +3        SET DGC=0
 +4        DO LOOP2
 +5        DO HDR2
 +6        IF $GET(DGC)'>0
               WRITE !!?25,"****NO RECORDS TO REPORT****"
               WRITE !
               DO PAUSE^DGPSEUDO
               QUIT 
 +7        DO REP2(DGXREAS)
 +8        DO ^%ZISC
           DO HOME^%ZIS
 +9        KILL ^TMP("DGEVC",$JOB)
 +10       QUIT 
LOOP2     ;
 +1        IF $EXTRACT(IOST,1,2)["C-"
               USE IO(0)
               WRITE !!,"Scanning file...."
 +2        USE IO
 +3        NEW DGCT,DGIEN13,DGX
 +4        KILL ^TMP("DGEVC",$JOB)
 +5        SET DGX=999999999
 +6        SET DGCT=0
 +7        SET ^TMP("DGEVC",$JOB,"COUNT")=0
 +8        SET ^TMP("DGEVC",$JOB,"COUNT","REFUSED TO PROVIDE")=0
 +9        SET ^TMP("DGEVC",$JOB,"COUNT","SSN UNKNOWN/FOLLOW-UP REQUIRED")=0
 +10       SET ^TMP("DGEVC",$JOB,"COUNT","NO SSN ASSIGNED")=0
 +11       SET ^TMP("DGEVC",$JOB,"COUNT","NULL")=0
 +12       FOR 
               SET DGX=$ORDER(^DGPR(408.13,"SSN",DGX))
               if DGX=""
                   QUIT 
               Begin DoDot:1
 +13               IF DGX'["P"
                       QUIT 
 +14               SET DGIEN13=0
 +15               FOR 
                       SET DGIEN13=$ORDER(^DGPR(408.13,"SSN",DGX,DGIEN13))
                       if 'DGIEN13
                           QUIT 
                       Begin DoDot:2
 +16                       if '$DATA(^DGPR(408.13,DGIEN13,0))
                               QUIT 
 +17                       DO PSEU2
                       End DoDot:2
               End DoDot:1
 +18       QUIT 
PSEU2     ;
 +1        NEW DGARR,DGCT,DGDFN,DGDOB,DGERR,DGIEN12,DGNAM,DGPAT,DGPSSN,DGSSN
 +2        IF $DATA(^TMP("DGEVC",$JOB,DGIEN13))
               QUIT 
 +3        DO GETS^DIQ(408.13,DGIEN13_",",".01;.09;.1","EI","DGARR","DGERR")
 +4        IF $DATA(DGERR)
               KILL DGERR
               QUIT 
 +5        IF $GET(DGARR(408.13,DGIEN13_",",.09,"I"))'["P"
               KILL DGARR
               QUIT 
 +6        SET DGDEPNAM=$GET(DGARR(408.13,DGIEN13_",",.01,"I"))
 +7        SET DGDEPSSN=$GET(DGARR(408.13,DGIEN13_",",.09,"I"))
 +8        SET DGREASON=$GET(DGARR(408.13,DGIEN13_",",.1,"E"))
 +9        IF $GET(DGREASON)']""
               SET DGREASON="NULL"
 +10       IF DGXREAS'="ALL"
               IF DGXREAS'=DGREASON
                   KILL DGARR
                   QUIT 
 +11       SET DGIEN12=0
 +12       SET DGIEN12=$ORDER(^DGPR(408.12,"C",DGIEN13_";DGPR(408.13,",DGIEN12))
 +13       IF $GET(DGIEN12)']""
               KILL DGARR
               QUIT 
 +14       IF '$DATA(^DGPR(408.12,DGIEN12,0))
               KILL DGARR
               QUIT 
 +15       DO GETS^DIQ(408.12,DGIEN12_",",".01;.02","EI","DGARR","DGERR")
 +16       IF $DATA(DGERR)
               KILL DGARR,DGERR
               QUIT 
 +17       SET DGDFN=$GET(DGARR(408.12,DGIEN12_",",.01,"I"))
 +18       IF '$DATA(^DPT(DGDFN))
               IF ($GET(^DPT(DGDFN,0))']"")
                   KILL DGARR
                   QUIT 
 +19       SET DGREL=$GET(DGARR(408.12,DGIEN12_",",.02,"E"))
 +20       SET DGREL=$$GETREL(DGREL)
 +21       DO GETS^DIQ(2,DGDFN_",",".01;.09","EI","DGARR","DGERR")
 +22       IF $DATA(DGERR)
               KILL DGARR,DGERR
               QUIT 
 +23       SET DGPATNAM=$GET(DGARR(2,DGDFN_",",.01,"E"))
 +24       SET DGPATSSN=$GET(DGARR(2,DGDFN_",",.09,"I"))
 +25       SET DGC=DGC+1
 +26       SET ^TMP("DGEVC",$JOB,DGPATNAM,DGDFN,DGDEPNAM,DGIEN13)=DGPATSSN_"^"_DGREL_"^"_DGDEPSSN_"^"_DGREASON
 +27       SET ^TMP("DGEVC",$JOB,"COUNT")=DGC
 +28       SET ^TMP("DGEVC",$JOB,"COUNT",DGREASON)=$GET(^TMP("DGEVC",$JOB,"COUNT",DGREASON))+1
 +29       KILL DGARR,DGDFN,DGERR,DGDEPNAM,DGDEPSSN,DGPATNAM,DGPATSSN,DGREASON,DGREL
 +30       QUIT 
HDR2      ;
 +1       ;display veteran, non-vet or both
           NEW DGDATE,DGL,DGLINE,DGT,Y
 +2        IF $EXTRACT(IOST,1,2)["C-"
               WRITE @IOF
 +3        SET DGPAGE=DGPAGE+1
 +4        WRITE !?((IOM-46)\2),"Pseudo SSN Report for Means Test Dependents",?70,"Page:"_DGPAGE
 +5        SET DGT="Report shows "_$SELECT(DGXREAS="NULL":"<NONE ENTERED>",1:DGXREAS)
 +6        SET DGL=$LENGTH(DGT)
 +7        WRITE !?((IOM-DGL)\2),DGT
 +8        SET Y=DT
           XECUTE ^DD("DD")
           SET DGDATE=Y
 +9        WRITE !?62,"Date: "_$GET(DGDATE)
 +10       WRITE !!,"PATIENT",?27,"PATIENT SSN"
 +11       WRITE !?5,"DEPENDENT",?38,"RELATIONSHIP",?52,"DEP. PSSN",?64,"PSSN REASON"
 +12       NEW DGZ
 +13       WRITE !
 +14       FOR DGZ=1:1:IOM
               WRITE "-"
 +15       QUIT 
REP2(DGXREAS) ;
 +1        NEW DG0,DGCT,DGDNAM,DGIEN,DGN,DGPNAM,DGRR
 +2        SET (DGDNAM,DGN,DGDFN,DGPNAM)=""
 +3        SET DGCT=0
 +4        FOR 
               SET DGPNAM=$ORDER(^TMP("DGEVC",$JOB,DGPNAM))
               if DGPNAM']""!($GET(DGQ))
                   QUIT 
               Begin DoDot:1
 +5                IF DGPNAM="COUNT"
                       IF ($ORDER(^TMP("DGEVC",$JOB,DGPNAM,""))'>0)
                           QUIT 
 +6                FOR 
                       SET DGDFN=$ORDER(^TMP("DGEVC",$JOB,DGPNAM,DGDFN))
                       if DGDFN'>0!($GET(DGQ))
                           QUIT 
                       Begin DoDot:2
 +7                        NEW DG0
 +8                        IF $EXTRACT(IOST,1,2)["C-"
                               IF ($Y>(IOSL-4))
                                   DO PAUSE^DGPSEUDO
                                   if $GET(DGQ)
                                       QUIT 
 +9                        IF $Y>(IOSL-4)
                               Begin DoDot:3
 +10                               WRITE @IOF
 +11                               DO HDR2
                               End DoDot:3
 +12                       SET DG0=^DPT(DGDFN,0)
 +13                       SET DGSSN=$PIECE(DG0,U,9)
 +14                       WRITE !!,$EXTRACT($GET(DGPNAM),1,25),?27,$GET(DGSSN)
 +15                       SET (DGDNAM,DGIEN)=""
 +16                       FOR 
                               SET DGDNAM=$ORDER(^TMP("DGEVC",$JOB,DGPNAM,DGDFN,DGDNAM))
                               if DGDNAM']""!($GET(DGQ))
                                   QUIT 
                               Begin DoDot:3
 +17                               FOR 
                                       SET DGIEN=$ORDER(^TMP("DGEVC",$JOB,DGPNAM,DGDFN,DGDNAM,DGIEN))
                                       if DGIEN'>0!($GET(DGQ))
                                           QUIT 
                                       Begin DoDot:4
 +18                                       SET DGN=^TMP("DGEVC",$JOB,DGPNAM,DGDFN,DGDNAM,DGIEN)
 +19                                       SET DGRR=$PIECE(DGN,U,4)
 +20                                       SET DGRR=$SELECT(DGRR["REF":"REF TO PROVIDE",DGRR["UNKN":"SSN UNK-F/U REQ",DGRR["NULL":"<NONE ENTERED>",1:DGRR)
 +21                                       IF $EXTRACT(IOST,1,2)["C-"
                                               IF ($Y>(IOSL-4))
                                                   DO PAUSE^DGPSEUDO
                                                   if $GET(DGQ)
                                                       QUIT 
 +22                                       IF $Y>(IOSL-4)
                                               Begin DoDot:5
 +23                                               WRITE @IOF
 +24                                               DO HDR2
 +25                                               WRITE !,$EXTRACT($GET(DGPNAM),1,25),?27,$GET(DGSSN)
                                               End DoDot:5
 +26                                       WRITE !?5,$GET(DGDNAM),?38,$EXTRACT($PIECE(DGN,U,2),1,12),?52,$PIECE(DGN,U,3),?64,$GET(DGRR)
 +27                                       SET DGCT=DGCT+1
                                       End DoDot:4
                               End DoDot:3
                       End DoDot:2
               End DoDot:1
 +28       IF DGCT=DGC
               Begin DoDot:1
 +29               IF $EXTRACT(IOST,1,2)["C-"
                       IF ($Y>(IOSL-6))
                           DO PAUSE^DGPSEUDO
                           if $GET(DGQ)
                               QUIT 
 +30               IF $Y>(IOSL-6)
                       Begin DoDot:2
 +31                       WRITE @IOF
 +32                       DO HDR2
                       End DoDot:2
 +33               WRITE !!?5,"Total number of dependents with Pseudo SSNs for this report: "_DGC
 +34               IF DGXREAS="ALL"
                       Begin DoDot:2
 +35                       WRITE !?31,"Dependents who REFUSED TO PROVIDE: "_^TMP("DGEVC",$JOB,"COUNT","REFUSED TO PROVIDE")
 +36                       WRITE !?29,"Dependents who have NO SSN ASSIGNED: "_^TMP("DGEVC",$JOB,"COUNT","NO SSN ASSIGNED")
 +37                       WRITE !?33,"Dependents who have SSN UNKNOWN: "_^TMP("DGEVC",$JOB,"COUNT","SSN UNKNOWN/FOLLOW-UP REQUIRED")
 +38                       WRITE !?22,"Dependents who have no PSSN Reason entered: "_^TMP("DGEVC",$JOB,"COUNT","NULL")
                       End DoDot:2
               End DoDot:1
 +39       WRITE !
 +40       IF $EXTRACT(IOST,1,2)["C-"
               IF ('$GET(DGQ))
                   DO PAUSE^DGPSEUDO
 +41       DO ^%ZISC
           DO HOME^%ZIS
 +42       QUIT 
GETREL(DGREL) ;some relationships will need to be abbreviated to fit the 12 
 +1       ; char spacing limit
 +2        IF DGREL']""
               QUIT DGREL
 +3        IF $PIECE(DGREL,"-")="GREAT"
               SET $PIECE(DGREL,"-")="GR"
 +4        QUIT DGREL