TIUSUPN ;;SLC/TT - TIU SIGNED/UNSIGNED List Manager ; 04-FEB-2005
 ;;1.0;TEXT INTEGRATION UTILITIES;**180**;Jun 20, 1997
 ;
 Q
EN ; -- main entry point for TIU SIGNED/UNSIGNED PN
 N TIUSDT,TIUEDT
 W @IOF
 K ^TMP("TIUPS180",$J),^TMP("TIUSEL",$J),^TMP("VALMAR",$J),^TMP("TIU180",$J)
 I '$$ASKRNG(.TIUSDT,.TIUEDT) Q
 D EN^VALM("TIU SIGNED/UNSIGNED")
 Q
 ;
HDR ; -- header code
 N HDR1,HDR2
 S HDR1="From "_$$FMTE^XLFDT(TIUSDT)_" to "_$$FMTE^XLFDT(TIUEDT,"D")
 S HDR2=$P(^TMP("TIU180",$J,"TOTAL"),U)_" "_$S($P(^TMP("TIU180",$J,"TOTAL"),U)=0:"Document",$P(^TMP("TIU180",$J,"TOTAL"),U)=1:"Document",1:"Documents")
 S VALMHDR(1)=$$SETSTR^VALM1(HDR1,"",(IOM-$L(HDR1))/2,$L(HDR1))
 S VALMHDR(2)=$$SETSTR^VALM1(HDR2,"",(IOM-$L(HDR2))/2,$L(HDR2))
 D XQORM
 Q
 ;
INIT ; Create list
 N TIUDATE,TIUDA,TIUIEN,TIUTM,TIUCNT,TIUDP,TIUNO,TIUTOTAL
 I '$G(TIUSDT)!'($G(TIUEDT)) Q
 S TIUDATE=TIUSDT,(TIUCNT,VALMCNT,TIUTOTAL)=0
 W !!,"Searching for the documents."
 S TIUTM("STR")=$$NOW^XLFDT
 F  S TIUDATE=$O(^TIU(8925,"F",TIUDATE)) Q:'TIUDATE!(TIUDATE>TIUEDT)  D
 .S TIUIEN=$O(^TIU(8925,"F",TIUDATE,0)),TIUCNT=TIUCNT+1 D GETINFO(TIUIEN)
 .W:TIUCNT#1000'>0 "."
 ;
 S TIUDA="" F  S TIUDA=$O(^TMP("TIUPS180",$J,TIUDA)) Q:TIUDA=""  D
 .S TIUTOTAL=+$G(TIUTOTAL)+1
 .S TIUDP=$$SETSTR^VALM1(TIUTOTAL,"",1,5)
 .S TIUDP=$$SETSTR^VALM1($P($$GET1^DIQ(8925,TIUDA,.02),",")_","_$E($P($$GET1^DIQ(8925,TIUDA,.02),",",2),1),TIUDP,6,18)
 .S TIUDP=$$SETSTR^VALM1("("_$$PATFMAT($P(^TIU(8925,TIUDA,0),U,2))_")",TIUDP,19,26)
 .S TIUDP=$$SETSTR^VALM1(TIUDA,TIUDP,28,36)
 .S TIUDP=$$SETSTR^VALM1($E($$GET1^DIQ(8925,TIUDA,1502),1,19),TIUDP,38,56)
 .S TIUDP=$$SETSTR^VALM1($P($$FMTE^XLFDT($P(^TIU(8925,TIUDA,12),U),2),"@"),TIUDP,58,68)
 .S TIUDP=$$SETSTR^VALM1($$GET1^DIQ(8925,TIUDA,.05),TIUDP,70,100)
 .D SET^VALM10(TIUTOTAL,TIUDP,TIUDA)
 S (VALMCNT,^TMP("TIU180",$J,"TOTAL"))=+$G(TIUTOTAL)
 I +$G(TIUTOTAL)'>0 D
 .S VALMCNT=1
 .D SET^VALM10(1," ",0)
 .S TIUNO="No records found to satisfy search criteria."
 .S TIUNO=$$SETSTR^VALM1(TIUNO,"",(IOM-$L(TIUNO))/2,$L(TIUNO))
 .D SET^VALM10(2,TIUNO,0)
 S TIUTM("END")=$$NOW^XLFDT
 W !!,"Report started:   ",$P($$FMTE^XLFDT(TIUTM("STR")),"@",2)
 W !,"Report finished:  ",$P($$FMTE^XLFDT(TIUTM("END")),"@",2)
 W !,"Total searched:   ",TIUCNT
 Q
 ;
GETINFO(TIUDA1) ;GET SIGNED DOCUMENT BUT UNSIGNED STATUS 
 ; Input  -- TIUDA1 TIU Document file (#8925) IEN
 ;
 N TIUD0,TIUD15
 I TIUDA1'>0 Q
 I '$D(^TIU(8925,TIUDA1,0))!('$D(^TIU(8925,TIUDA1,15))) Q
 S TIUD0=$G(^TIU(8925,TIUDA1,0)),TIUD15=$G(^TIU(8925,TIUDA1,15))
 I $P(TIUD0,U,5)=5,$P(TIUD15,U,1)>0 D
 .S ^TMP("TIUPS180",$J,TIUDA1)=""
 Q
 ;
HELP ; -- help code
 N DIR
 I X="?" S DIR("A")="Enter RETURN to continue or '^' to exit",DIR(0)="E"
 D FULL^VALM1
 W !!,"The following actions are available:"
 W !,"Browse Document  - View selected documents (if authorized)"
 W !,"Detailed Display   - View detailed display of selected documents (if authorized)"
 W !,"Update Document  - Update the status of selected documents"
 I $D(DIR("A")) D ^DIR
 S VALMBCK="R"
 Q
 ;
ASKRNG(TIUBEGDT,TIUENDT) ;Prompt for date range
 ; Input  -- None
 ; Output -- 1=Successful and 0=Failure
 ;           BEGDT Begin Date
 ;           ENDT  End Date
 N DIRUT,DTOUT,DUOUT,Y
 W !,"Please specify a date range:",!
 S TIUBEGDT=+$$READ^TIUU("DA^:DT:E","   Start Reference Date: ")
 I +$D(DIRUT)!(TIUBEGDT'>0) G ASKRNGQ
 S TIUENDT=+$$READ^TIUU("DA^"_TIUBEGDT_":DT:E","  Ending Reference Date: ")_"."_235959
 I +$D(DIRUT)!(TIUENDT'>0) G ASKRNGQ
 S Y=1
ASKRNGQ Q +$G(Y)
 ;
PATFMAT(TIUPAT) ; format patient as first letter of last name and last 4 SSN
 N TIUPATN,TIULAST4,TIUINIT
 I 'TIUPAT Q ""
 S TIUPATN=$$EXTERNAL^DILFD(8925,.02,"",TIUPAT)
 S TIULAST4=$E($$GET1^DIQ(2,$G(TIUPAT),.09),6,9)
 S TIUINIT=$E($P(TIUPATN,","))
 Q TIUINIT_TIULAST4
 ;
EXIT ; -- exit code
 D XQORM
 Q
 ;
XQORM ; default action for list manager
 S XQORM("#")=$O(^ORD(101,"B","TIU SIGNED/UNSIGNED SELECT",0))_U_"1:"_VALMCNT
 Q
 ;
ACTIONS ; user selectable actions
 N ACTION
 D
 . N DIR,DIRUT,POP,X,Y
 . S DIR(0)="SA^1:Browse Document;2:Detailed Display;3:Status Update"
 . S DIR("A")="Select Action: "
 . S DIR("B")="Status Update"
 . S DIR("L",1)="1.   Browse Document"
 . S DIR("L",2)="2.   Detailed Display"
 . S DIR("L",3)="3.   Status Update"
 . S DIR("L",4)=""
 . S DIR("L")="Enter selection by typing the name, number, or abbreviation"
 . S DIR("?",1)="The following actions are available:"
 . S DIR("?",2)=""
 . S DIR("?",3)="Browse Document  - View selected documents (if authorized)"
 . S DIR("?",4)="Detailed Display   - Detailed View of selected documents (if authorized)"
 . S DIR("?",5)="Status Update  - Update the status of selected documents"
 . D ^DIR Q:$D(DIRUT) 
 . S ACTION=$S(+Y=1:"BROWSE^TIUSUPN1",+Y=2:"DISP^TIUSUPN1",+Y=3:"UPDTDOC^TIUSUPN1",Y=U:-1,1:-1)
 . Q:ACTION=-1
 . D @ACTION
 . S VALMBCK="R"
 Q
 ;
SELECT(ACTION) ; selects document(s) and calls ACTION
 N TIUDOCS,TIUSEL,TIUQUIT,TIUCNT,TIUDA
 D FULL^VALM1
 I $P(^TMP("TIU180",$J,"TOTAL"),U)=0 W !,"No documents to select." H 3 Q
 S TIUSEL=$P(XQORNOD(0),"=",2),TIUCNT=0
 I TIUSEL="" D  Q:$D(TIUQUIT)
 . N DIR,X,Y
 . S DIR("A")="Select Document(s)"
 . S DIR(0)="L^"_VALMBG_":"_VALMLST
 . D ^DIR I $D(DIRUT)!(Y=U) S TIUQUIT=1 Q
 . S TIUSEL=Y(0)
 F X=1:1  Q:$P(TIUSEL,",",X)=""  D
 . S TIUCNT=TIUCNT+1
 . S TIUDOCS($P(TIUSEL,",",X))=$O(@VALMAR@("IDX",$P(TIUSEL,",",X),""))
 . S ^TMP("TIUSEL",$J,TIUCNT)=$P(TIUSEL,",",X)
 I $D(TIUDOCS)'>1 S VALMBCK="R" Q
 D @ACTION
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HTIUSUPN   5586     printed  Sep 23, 2025@20:22:34                                                                                                                                                                                                     Page 2
TIUSUPN   ;;SLC/TT - TIU SIGNED/UNSIGNED List Manager ; 04-FEB-2005
 +1       ;;1.0;TEXT INTEGRATION UTILITIES;**180**;Jun 20, 1997
 +2       ;
 +3        QUIT 
EN        ; -- main entry point for TIU SIGNED/UNSIGNED PN
 +1        NEW TIUSDT,TIUEDT
 +2        WRITE @IOF
 +3        KILL ^TMP("TIUPS180",$JOB),^TMP("TIUSEL",$JOB),^TMP("VALMAR",$JOB),^TMP("TIU180",$JOB)
 +4        IF '$$ASKRNG(.TIUSDT,.TIUEDT)
               QUIT 
 +5        DO EN^VALM("TIU SIGNED/UNSIGNED")
 +6        QUIT 
 +7       ;
HDR       ; -- header code
 +1        NEW HDR1,HDR2
 +2        SET HDR1="From "_$$FMTE^XLFDT(TIUSDT)_" to "_$$FMTE^XLFDT(TIUEDT,"D")
 +3        SET HDR2=$PIECE(^TMP("TIU180",$JOB,"TOTAL"),U)_" "_$SELECT($PIECE(^TMP("TIU180",$JOB,"TOTAL"),U)=0:"Document",$PIECE(^TMP("TIU180",$JOB,"TOTAL"),U)=1:"Document",1:"Documents")
 +4        SET VALMHDR(1)=$$SETSTR^VALM1(HDR1,"",(IOM-$LENGTH(HDR1))/2,$LENGTH(HDR1))
 +5        SET VALMHDR(2)=$$SETSTR^VALM1(HDR2,"",(IOM-$LENGTH(HDR2))/2,$LENGTH(HDR2))
 +6        DO XQORM
 +7        QUIT 
 +8       ;
INIT      ; Create list
 +1        NEW TIUDATE,TIUDA,TIUIEN,TIUTM,TIUCNT,TIUDP,TIUNO,TIUTOTAL
 +2        IF '$GET(TIUSDT)!'($GET(TIUEDT))
               QUIT 
 +3        SET TIUDATE=TIUSDT
           SET (TIUCNT,VALMCNT,TIUTOTAL)=0
 +4        WRITE !!,"Searching for the documents."
 +5        SET TIUTM("STR")=$$NOW^XLFDT
 +6        FOR 
               SET TIUDATE=$ORDER(^TIU(8925,"F",TIUDATE))
               if 'TIUDATE!(TIUDATE>TIUEDT)
                   QUIT 
               Begin DoDot:1
 +7                SET TIUIEN=$ORDER(^TIU(8925,"F",TIUDATE,0))
                   SET TIUCNT=TIUCNT+1
                   DO GETINFO(TIUIEN)
 +8                if TIUCNT#1000'>0
                       WRITE "."
               End DoDot:1
 +9       ;
 +10       SET TIUDA=""
           FOR 
               SET TIUDA=$ORDER(^TMP("TIUPS180",$JOB,TIUDA))
               if TIUDA=""
                   QUIT 
               Begin DoDot:1
 +11               SET TIUTOTAL=+$GET(TIUTOTAL)+1
 +12               SET TIUDP=$$SETSTR^VALM1(TIUTOTAL,"",1,5)
 +13               SET TIUDP=$$SETSTR^VALM1($PIECE($$GET1^DIQ(8925,TIUDA,.02),",")_","_$EXTRACT($PIECE($$GET1^DIQ(8925,TIUDA,.02),",",2),1),TIUDP,6,18)
 +14               SET TIUDP=$$SETSTR^VALM1("("_$$PATFMAT($PIECE(^TIU(8925,TIUDA,0),U,2))_")",TIUDP,19,26)
 +15               SET TIUDP=$$SETSTR^VALM1(TIUDA,TIUDP,28,36)
 +16               SET TIUDP=$$SETSTR^VALM1($EXTRACT($$GET1^DIQ(8925,TIUDA,1502),1,19),TIUDP,38,56)
 +17               SET TIUDP=$$SETSTR^VALM1($PIECE($$FMTE^XLFDT($PIECE(^TIU(8925,TIUDA,12),U),2),"@"),TIUDP,58,68)
 +18               SET TIUDP=$$SETSTR^VALM1($$GET1^DIQ(8925,TIUDA,.05),TIUDP,70,100)
 +19               DO SET^VALM10(TIUTOTAL,TIUDP,TIUDA)
               End DoDot:1
 +20       SET (VALMCNT,^TMP("TIU180",$JOB,"TOTAL"))=+$GET(TIUTOTAL)
 +21       IF +$GET(TIUTOTAL)'>0
               Begin DoDot:1
 +22               SET VALMCNT=1
 +23               DO SET^VALM10(1," ",0)
 +24               SET TIUNO="No records found to satisfy search criteria."
 +25               SET TIUNO=$$SETSTR^VALM1(TIUNO,"",(IOM-$LENGTH(TIUNO))/2,$LENGTH(TIUNO))
 +26               DO SET^VALM10(2,TIUNO,0)
               End DoDot:1
 +27       SET TIUTM("END")=$$NOW^XLFDT
 +28       WRITE !!,"Report started:   ",$PIECE($$FMTE^XLFDT(TIUTM("STR")),"@",2)
 +29       WRITE !,"Report finished:  ",$PIECE($$FMTE^XLFDT(TIUTM("END")),"@",2)
 +30       WRITE !,"Total searched:   ",TIUCNT
 +31       QUIT 
 +32      ;
GETINFO(TIUDA1) ;GET SIGNED DOCUMENT BUT UNSIGNED STATUS 
 +1       ; Input  -- TIUDA1 TIU Document file (#8925) IEN
 +2       ;
 +3        NEW TIUD0,TIUD15
 +4        IF TIUDA1'>0
               QUIT 
 +5        IF '$DATA(^TIU(8925,TIUDA1,0))!('$DATA(^TIU(8925,TIUDA1,15)))
               QUIT 
 +6        SET TIUD0=$GET(^TIU(8925,TIUDA1,0))
           SET TIUD15=$GET(^TIU(8925,TIUDA1,15))
 +7        IF $PIECE(TIUD0,U,5)=5
               IF $PIECE(TIUD15,U,1)>0
                   Begin DoDot:1
 +8                    SET ^TMP("TIUPS180",$JOB,TIUDA1)=""
                   End DoDot:1
 +9        QUIT 
 +10      ;
HELP      ; -- help code
 +1        NEW DIR
 +2        IF X="?"
               SET DIR("A")="Enter RETURN to continue or '^' to exit"
               SET DIR(0)="E"
 +3        DO FULL^VALM1
 +4        WRITE !!,"The following actions are available:"
 +5        WRITE !,"Browse Document  - View selected documents (if authorized)"
 +6        WRITE !,"Detailed Display   - View detailed display of selected documents (if authorized)"
 +7        WRITE !,"Update Document  - Update the status of selected documents"
 +8        IF $DATA(DIR("A"))
               DO ^DIR
 +9        SET VALMBCK="R"
 +10       QUIT 
 +11      ;
ASKRNG(TIUBEGDT,TIUENDT) ;Prompt for date range
 +1       ; Input  -- None
 +2       ; Output -- 1=Successful and 0=Failure
 +3       ;           BEGDT Begin Date
 +4       ;           ENDT  End Date
 +5        NEW DIRUT,DTOUT,DUOUT,Y
 +6        WRITE !,"Please specify a date range:",!
 +7        SET TIUBEGDT=+$$READ^TIUU("DA^:DT:E","   Start Reference Date: ")
 +8        IF +$DATA(DIRUT)!(TIUBEGDT'>0)
               GOTO ASKRNGQ
 +9        SET TIUENDT=+$$READ^TIUU("DA^"_TIUBEGDT_":DT:E","  Ending Reference Date: ")_"."_235959
 +10       IF +$DATA(DIRUT)!(TIUENDT'>0)
               GOTO ASKRNGQ
 +11       SET Y=1
ASKRNGQ    QUIT +$GET(Y)
 +1       ;
PATFMAT(TIUPAT) ; format patient as first letter of last name and last 4 SSN
 +1        NEW TIUPATN,TIULAST4,TIUINIT
 +2        IF 'TIUPAT
               QUIT ""
 +3        SET TIUPATN=$$EXTERNAL^DILFD(8925,.02,"",TIUPAT)
 +4        SET TIULAST4=$EXTRACT($$GET1^DIQ(2,$GET(TIUPAT),.09),6,9)
 +5        SET TIUINIT=$EXTRACT($PIECE(TIUPATN,","))
 +6        QUIT TIUINIT_TIULAST4
 +7       ;
EXIT      ; -- exit code
 +1        DO XQORM
 +2        QUIT 
 +3       ;
XQORM     ; default action for list manager
 +1        SET XQORM("#")=$ORDER(^ORD(101,"B","TIU SIGNED/UNSIGNED SELECT",0))_U_"1:"_VALMCNT
 +2        QUIT 
 +3       ;
ACTIONS   ; user selectable actions
 +1        NEW ACTION
 +2        Begin DoDot:1
 +3            NEW DIR,DIRUT,POP,X,Y
 +4            SET DIR(0)="SA^1:Browse Document;2:Detailed Display;3:Status Update"
 +5            SET DIR("A")="Select Action: "
 +6            SET DIR("B")="Status Update"
 +7            SET DIR("L",1)="1.   Browse Document"
 +8            SET DIR("L",2)="2.   Detailed Display"
 +9            SET DIR("L",3)="3.   Status Update"
 +10           SET DIR("L",4)=""
 +11           SET DIR("L")="Enter selection by typing the name, number, or abbreviation"
 +12           SET DIR("?",1)="The following actions are available:"
 +13           SET DIR("?",2)=""
 +14           SET DIR("?",3)="Browse Document  - View selected documents (if authorized)"
 +15           SET DIR("?",4)="Detailed Display   - Detailed View of selected documents (if authorized)"
 +16           SET DIR("?",5)="Status Update  - Update the status of selected documents"
 +17           DO ^DIR
               if $DATA(DIRUT)
                   QUIT 
 +18           SET ACTION=$SELECT(+Y=1:"BROWSE^TIUSUPN1",+Y=2:"DISP^TIUSUPN1",+Y=3:"UPDTDOC^TIUSUPN1",Y=U:-1,1:-1)
 +19           if ACTION=-1
                   QUIT 
 +20           DO @ACTION
 +21           SET VALMBCK="R"
           End DoDot:1
 +22       QUIT 
 +23      ;
SELECT(ACTION) ; selects document(s) and calls ACTION
 +1        NEW TIUDOCS,TIUSEL,TIUQUIT,TIUCNT,TIUDA
 +2        DO FULL^VALM1
 +3        IF $PIECE(^TMP("TIU180",$JOB,"TOTAL"),U)=0
               WRITE !,"No documents to select."
               HANG 3
               QUIT 
 +4        SET TIUSEL=$PIECE(XQORNOD(0),"=",2)
           SET TIUCNT=0
 +5        IF TIUSEL=""
               Begin DoDot:1
 +6                NEW DIR,X,Y
 +7                SET DIR("A")="Select Document(s)"
 +8                SET DIR(0)="L^"_VALMBG_":"_VALMLST
 +9                DO ^DIR
                   IF $DATA(DIRUT)!(Y=U)
                       SET TIUQUIT=1
                       QUIT 
 +10               SET TIUSEL=Y(0)
               End DoDot:1
               if $DATA(TIUQUIT)
                   QUIT 
 +11       FOR X=1:1
               if $PIECE(TIUSEL,",",X)=""
                   QUIT 
               Begin DoDot:1
 +12               SET TIUCNT=TIUCNT+1
 +13               SET TIUDOCS($PIECE(TIUSEL,",",X))=$ORDER(@VALMAR@("IDX",$PIECE(TIUSEL,",",X),""))
 +14               SET ^TMP("TIUSEL",$JOB,TIUCNT)=$PIECE(TIUSEL,",",X)
               End DoDot:1
 +15       IF $DATA(TIUDOCS)'>1
               SET VALMBCK="R"
               QUIT 
 +16       DO @ACTION
 +17       QUIT