RCDPEX0 ;ALB/TMK - 837 EDI RETURN MSG EXTRACT MAIN LIST TEMPLATE ;02-MAY-96
 ;;4.5;Accounts Receivable;**173**;Mar 20, 1995
 ;;Per VHA Directive 10-93-142, this routine should not be modified.
 ;
SCRIT(RCSCRIT) ; Enter display selection criteria
 ; Pass RCSCRIT by reference - returned containing selection criteria
 ; RCSCRIT(n)=n-level sort RCSCRIT(n,1-x)=selections
 ;  RCSCRIT(n,"D1") = from DATE range  RCSCRIT(n,"D2") = to DATE range 
 N DIR,X,Y
 D FULL^VALM1
 W !
 S DIR("B")="ALL"
 S DIR("A",1)="Enter sort and selection criteria for message list",DIR("A",2)=" ",DIR("A")="First level sort field: "
 S DIR(0)="SA^MT:TYPE OF MESSAGE;ER:TYPE OF ERROR;ALL:ALL MESSAGES"
 S DIR("?")="Enter the top-level sort for the list of messages"
 D ^DIR K DIR
 I $D(DIRUT) K RCSCRIT Q
 S RCSCRIT(1)=Y
 I Y="ALL" Q
 D SELECT(1,.RCSCRIT) Q:'$D(RCSCRIT)
 S DIR("A",1)=" ",DIR("A")="Second level sort field: "
 S DIR(0)="SAO^"_$S($S(RCSCRIT(1)'="MT":"MT:TYPE OF MESSAGE;",1:"")_RCSCRIT(1)'="MS":"ER:TYPE OF ERROR;",1:"")_"MD:ERA MESSAGE DATE;RD:ERA RECORDED DATE"
 S DIR("?")="Enter the second-level sort for the list of messages"
 S DIR("?",1)="First level sort selected was: "_$$FLD(RCSCRIT(1))
 D ^DIR K DIR
 I $D(DTOUT)!$D(DUOUT) K RCSCRIT Q
 I Y="" Q
 S RCSCRIT(2)=Y
 D SELECT(2,.RCSCRIT) Q:'$D(RCSCRIT)
 S DIR("A",1)=" ",DIR("A")="Third level sort field: "
 S DIR(0)="SAO^"
 S DIR(0)=DIR(0)_$S(RCSCRIT(1)'="MT"&(RCSCRIT(2)'="MT"):"MT:TYPE OF MESSAGE;",1:"")_$S(RCSCRIT(1)'="ER"&(RCSCRIT(2)'="ER"):"ER:TYPE OF ERROR",1:"")
 S DIR(0)=DIR(0)_$S(RCSCRIT(2)'="MD":"MD:ERA MESSAGE DATE;",1:"")_$S(RCSCRIT(2)'="RD":"RD:ERA RECORDED DATE",1:"")
 S DIR("?")="Enter the third-level sort for the list of messages"
 D ^DIR K DIR
 I $D(DTOUT)!$D(DUOUT) K RCSCRIT Q
 I Y="" Q
 S RCSCRIT(3)=Y
 D SELECT(3,.RCSCRIT)
 Q
 ;
SELECT(LEVEL,RCSCRIT) ; Select specific or all values/date range for RCSCRIT(LEVEL)
 ; LEVEL = sort level 1-3
 N SELNM,SEL,CT,Y,DIR,DUOUT,DTOUT,DIRUT,X,Z
 S SEL=$G(RCSCRIT(LEVEL)) I SEL="" K RCSCRIT Q
 S SELNM=$$FLD(SEL)
RESEL S DIR("A")="Do you want ALL "_SELNM_"'s",DIR(0)="Y",DIR("?")="ANSWER YES TO INCLUDE ALL "_SELNM_" OR NO TO SELECT SPECIFIC VALUES OR RANGES"
 D ^DIR K DIR
 I $D(DIRUT) K RCSCRIT Q
 I Y=1 Q
 I SEL="MD"!(SEL="RD") D  Q  ;Date field
 . S DIR("A")="From Date: ",DIR(0)="DA^:"_DT_":P",DIR("?")="Enter the earliest date you want included in the list" D ^DIR
 . I $D(DIRUT) K RCSCRIT Q
 . S RCSCRIT(LEVEL,"D1")=Y I 'X W "  ",$$FMTE^XLFDT(Y,2)
 . S DIR("A")="To Date: ",DIR(0)="DA^:"_DT_":P",DIR("?")="Enter the latest date you want included in the list" D ^DIR
 . I $D(DIRUT) K RCSCRIT Q
 . S RCSCRIT(LEVEL,"D2")=Y I 'X W "  ",$$FMTE^XLFDT(Y,2)
 S CT=0
 S DIR("A",1)=" ",DIR("A",2)="Enter your selections one at a time.",DIR("A",3)="When done, press return at the "_SELNM_" prompt to continue."
 S DIR("A")=SELNM_": ",DIR(0)=$S(SEL="ER":"344.5,.1",SEL="MT":"344.5,.02",1:"")_"AO"
 F  D ^DIR D  Q:"^"[Y
 . Q:$D(DUOUT)
 . I Y="" Q:CT  W !,*7,"You must select at least one entry" S Y=-1 Q
 . S CT=CT+1,RCSCRIT(LEVEL,$P(Y,U))=Y
 . I $D(DIR("A",1)) F Z=1:1:3 K DIR("A",Z)
 K DIR
 I $D(DUOUT)!$D(DTOUT) D  I $D(RCSCRIT) K RCSCRIT(LEVEL) S RCSCRIT(LEVEL)=SEL G RESEL
 . S DIR(0)="Y",DIR("A",1)=" ",DIR("A")="Do you want to abort this entire sort/selection"
 . S DIR("?")="Answer YES if you want to abort or to re-enter all sort/selection criteria",DIR("?",1)="Answer NO if you want to re-enter just this sort level's criteria"
 . D ^DIR K DIR
 . I $D(DIRUT)!Y K RCSCRIT
 Q
 ;
FLD(FLD) ; RETURN NAME OF FIELD
 Q $S(FLD="ER":"ERROR CATEGORY",FLD="MT":"TYPE OF MESSAGE",FLD="MD":"MESSAGE DATE",FLD="RD":"DATE RECORDED",1:"")
 ;
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HRCDPEX0   3715     printed  Sep 23, 2025@19:22:03                                                                                                                                                                                                     Page 2
RCDPEX0   ;ALB/TMK - 837 EDI RETURN MSG EXTRACT MAIN LIST TEMPLATE ;02-MAY-96
 +1       ;;4.5;Accounts Receivable;**173**;Mar 20, 1995
 +2       ;;Per VHA Directive 10-93-142, this routine should not be modified.
 +3       ;
SCRIT(RCSCRIT) ; Enter display selection criteria
 +1       ; Pass RCSCRIT by reference - returned containing selection criteria
 +2       ; RCSCRIT(n)=n-level sort RCSCRIT(n,1-x)=selections
 +3       ;  RCSCRIT(n,"D1") = from DATE range  RCSCRIT(n,"D2") = to DATE range 
 +4        NEW DIR,X,Y
 +5        DO FULL^VALM1
 +6        WRITE !
 +7        SET DIR("B")="ALL"
 +8        SET DIR("A",1)="Enter sort and selection criteria for message list"
           SET DIR("A",2)=" "
           SET DIR("A")="First level sort field: "
 +9        SET DIR(0)="SA^MT:TYPE OF MESSAGE;ER:TYPE OF ERROR;ALL:ALL MESSAGES"
 +10       SET DIR("?")="Enter the top-level sort for the list of messages"
 +11       DO ^DIR
           KILL DIR
 +12       IF $DATA(DIRUT)
               KILL RCSCRIT
               QUIT 
 +13       SET RCSCRIT(1)=Y
 +14       IF Y="ALL"
               QUIT 
 +15       DO SELECT(1,.RCSCRIT)
           if '$DATA(RCSCRIT)
               QUIT 
 +16       SET DIR("A",1)=" "
           SET DIR("A")="Second level sort field: "
 +17       SET DIR(0)="SAO^"_$SELECT($SELECT(RCSCRIT(1)'="MT":"MT:TYPE OF MESSAGE;",1:"")_RCSCRIT(1)'="MS":"ER:TYPE OF ERROR;",1:"")_"MD:ERA MESSAGE DATE;RD:ERA RECORDED DATE"
 +18       SET DIR("?")="Enter the second-level sort for the list of messages"
 +19       SET DIR("?",1)="First level sort selected was: "_$$FLD(RCSCRIT(1))
 +20       DO ^DIR
           KILL DIR
 +21       IF $DATA(DTOUT)!$DATA(DUOUT)
               KILL RCSCRIT
               QUIT 
 +22       IF Y=""
               QUIT 
 +23       SET RCSCRIT(2)=Y
 +24       DO SELECT(2,.RCSCRIT)
           if '$DATA(RCSCRIT)
               QUIT 
 +25       SET DIR("A",1)=" "
           SET DIR("A")="Third level sort field: "
 +26       SET DIR(0)="SAO^"
 +27       SET DIR(0)=DIR(0)_$SELECT(RCSCRIT(1)'="MT"&(RCSCRIT(2)'="MT"):"MT:TYPE OF MESSAGE;",1:"")_$SELECT(RCSCRIT(1)'="ER"&(RCSCRIT(2)'="ER"):"ER:TYPE OF ERROR",1:"")
 +28       SET DIR(0)=DIR(0)_$SELECT(RCSCRIT(2)'="MD":"MD:ERA MESSAGE DATE;",1:"")_$SELECT(RCSCRIT(2)'="RD":"RD:ERA RECORDED DATE",1:"")
 +29       SET DIR("?")="Enter the third-level sort for the list of messages"
 +30       DO ^DIR
           KILL DIR
 +31       IF $DATA(DTOUT)!$DATA(DUOUT)
               KILL RCSCRIT
               QUIT 
 +32       IF Y=""
               QUIT 
 +33       SET RCSCRIT(3)=Y
 +34       DO SELECT(3,.RCSCRIT)
 +35       QUIT 
 +36      ;
SELECT(LEVEL,RCSCRIT) ; Select specific or all values/date range for RCSCRIT(LEVEL)
 +1       ; LEVEL = sort level 1-3
 +2        NEW SELNM,SEL,CT,Y,DIR,DUOUT,DTOUT,DIRUT,X,Z
 +3        SET SEL=$GET(RCSCRIT(LEVEL))
           IF SEL=""
               KILL RCSCRIT
               QUIT 
 +4        SET SELNM=$$FLD(SEL)
RESEL      SET DIR("A")="Do you want ALL "_SELNM_"'s"
           SET DIR(0)="Y"
           SET DIR("?")="ANSWER YES TO INCLUDE ALL "_SELNM_" OR NO TO SELECT SPECIFIC VALUES OR RANGES"
 +1        DO ^DIR
           KILL DIR
 +2        IF $DATA(DIRUT)
               KILL RCSCRIT
               QUIT 
 +3        IF Y=1
               QUIT 
 +4       ;Date field
           IF SEL="MD"!(SEL="RD")
               Begin DoDot:1
 +5                SET DIR("A")="From Date: "
                   SET DIR(0)="DA^:"_DT_":P"
                   SET DIR("?")="Enter the earliest date you want included in the list"
                   DO ^DIR
 +6                IF $DATA(DIRUT)
                       KILL RCSCRIT
                       QUIT 
 +7                SET RCSCRIT(LEVEL,"D1")=Y
                   IF 'X
                       WRITE "  ",$$FMTE^XLFDT(Y,2)
 +8                SET DIR("A")="To Date: "
                   SET DIR(0)="DA^:"_DT_":P"
                   SET DIR("?")="Enter the latest date you want included in the list"
                   DO ^DIR
 +9                IF $DATA(DIRUT)
                       KILL RCSCRIT
                       QUIT 
 +10               SET RCSCRIT(LEVEL,"D2")=Y
                   IF 'X
                       WRITE "  ",$$FMTE^XLFDT(Y,2)
               End DoDot:1
               QUIT 
 +11       SET CT=0
 +12       SET DIR("A",1)=" "
           SET DIR("A",2)="Enter your selections one at a time."
           SET DIR("A",3)="When done, press return at the "_SELNM_" prompt to continue."
 +13       SET DIR("A")=SELNM_": "
           SET DIR(0)=$SELECT(SEL="ER":"344.5,.1",SEL="MT":"344.5,.02",1:"")_"AO"
 +14       FOR 
               DO ^DIR
               Begin DoDot:1
 +15               if $DATA(DUOUT)
                       QUIT 
 +16               IF Y=""
                       if CT
                           QUIT 
                       WRITE !,*7,"You must select at least one entry"
                       SET Y=-1
                       QUIT 
 +17               SET CT=CT+1
                   SET RCSCRIT(LEVEL,$PIECE(Y,U))=Y
 +18               IF $DATA(DIR("A",1))
                       FOR Z=1:1:3
                           KILL DIR("A",Z)
               End DoDot:1
               if "^"[Y
                   QUIT 
 +19       KILL DIR
 +20       IF $DATA(DUOUT)!$DATA(DTOUT)
               Begin DoDot:1
 +21               SET DIR(0)="Y"
                   SET DIR("A",1)=" "
                   SET DIR("A")="Do you want to abort this entire sort/selection"
 +22               SET DIR("?")="Answer YES if you want to abort or to re-enter all sort/selection criteria"
                   SET DIR("?",1)="Answer NO if you want to re-enter just this sort level's criteria"
 +23               DO ^DIR
                   KILL DIR
 +24               IF $DATA(DIRUT)!Y
                       KILL RCSCRIT
               End DoDot:1
               IF $DATA(RCSCRIT)
                   KILL RCSCRIT(LEVEL)
                   SET RCSCRIT(LEVEL)=SEL
                   GOTO RESEL
 +25       QUIT 
 +26      ;
FLD(FLD)  ; RETURN NAME OF FIELD
 +1        QUIT $SELECT(FLD="ER":"ERROR CATEGORY",FLD="MT":"TYPE OF MESSAGE",FLD="MD":"MESSAGE DATE",FLD="RD":"DATE RECORDED",1:"")
 +2       ;