YTQTIU ;ASF/ALB - MHAX TIU ; 12/7/09 3:10pm
 ;;5.01;MENTAL HEALTH;**85,96,123,142,187**;Dec 30, 1994;Build 73
 ;
 ;Reference to TIUPUTU APIs supported by DBIA #3351
 ;Reference to TIUSRVA APIs supported by DBIA #5541
 ;Reference to VADPT APIs supported by DBIA #10061
 ;Reference to TIUSRVP APIs supported by DBIA #3535
 ;Reference to FILE 8925 supported by DBIA #3268
 ;Reference to PXAPI APIs supported by DBIA #1889
 ;Reference to TIUSRVR1 supported by DBIA #2944
 ;Reference to FILE 9.4 supported by DBIA #10048
 Q
PCREATE(YSDATA,YS) ;pn creation
 ;Input AD AS ien of 601.84 mh administration
 ; YS(1...X) as text of note
 N DFN,N,N1,N2,Y,J1,J2,YSAD,YSAVED,YSHOSP,YSOK,YSORD,YSRPRIVL,YST,YSTIT,YSTS,YSVISIT,YSVSIT,YSVSTR,YST1,YSTIUX,YSTIUDA
 N YSPNOK,YSINS,YSPNAC,YSPNTIT,VA,VADM,X,YSAGE,YSB,YSDOB,YSG,YSHDR,YSNM,YSSEX,YSSSN,YSCREQ,YSPCS,Y1
 S YSTIUDA=$G(YS("TIUIEN"),0)
 S YSDATA(1)="[ERROR]"
 S YSAD=$G(YS("AD"),0)
 S YSPCS=$G(YS("COSIGNER"))
 I '$D(^YTT(601.84,YSAD,0)) S YSDATA(2)="bad ad" Q  ;-->out
 S YSHOSP=$P(^YTT(601.84,YSAD,0),U,11)
 I YSHOSP'>0 S YSDATA(2)="no location" Q  ;-->out
 S DFN=$$GET1^DIQ(601.84,YSAD_",",1,"I")
 I DFN'>0  S YSDATA(2)="bad dfn" Q  ;-->out
 S YSAVED=$$GET1^DIQ(601.84,YSAD_",",4,"I")
 S YSORD=$$GET1^DIQ(601.84,YSAD_",",5,"I")
 ;
 ;asf 3/10/08 create pnote only when GENERATE '=n and not inactive
 S YSINS=$$GET1^DIQ(601.84,YSAD_",",2,"I")
 S YSPNOK=$$GET1^DIQ(601.71,YSINS_",",28,"I")
 Q:YSPNOK="N"  ;-->out no note for this test
 S YSPNTIT=$$GET1^DIQ(601.71,YSINS_",",29,"E")
 S Y=$$WHATITLE^TIUPUTU(YSPNTIT)
 ;I Y'>0 S Y=$$WHATITLE^TIUPUTU("MHA ASSESSMENT NOTE")
 I Y'>0 S YSDATA(2)="pn not setup" Q  ;--->out
 S YSTIT=+Y
 ;
 S YSTS=$$GET1^DIQ(601.84,YSAD_",",2,"I")
 S YSRPRIVL=$$GET1^DIQ(601.71,YSTS_",",9,"E")
 Q:YSRPRIVL'=""  ;-->out  ASF 5/1/07
 ;
 ;set cosigner if required or exit ASF 3/14/08
 D REQCOS^TIUSRVA(.YSCREQ,YSTIT,"",YSORD,"") ;is cosigner required
 ; ASF 12/4/2009 D GETPREF^TIUSRVR(.Y1,YSORD) S YSPCS=$P(Y1,U,9) ; is preferred cosigner set
 Q:YSCREQ&(YSPCS="")  ;-->out required signer not sent
 S:YSCREQ&(YSPCS>0) YSTIUX(1208)=YSPCS,YSTIUX(1506)=1
 S YSTIUX(1202)=YSORD
 ;
 D DEM^VADPT,PID^VADPT S YSNM=VADM(1),YSSEX=$P(VADM(5),U),YSDOB=$P(VADM(3),U,2),YSAGE=VADM(4),YSSSN="xxx-xx-"_VA("BID")
 S $P(YSHDR," ",60)="",YSHDR=YSSSN_"  "_YSNM_YSHDR,YSHDR=$E(YSHDR,1,44)_YSSEX_" AGE "_YSAGE
 ;add boilerplate at end if no report ASF 8/20/08
 ;don't add boilerplate for AIMS      KCM 8/15/19
 I '$D(^YTT(601.93,"C",YSINS)),($P(^YTT(601.71,YSINS,0),U)'="AIMS") D BOTTOM
 I YSTIUDA>0 D UPDATE Q  ;-->out
 D TXTCK(0)
 ;
 ;MAKE(SUCCESS,DFN,TITLE,VDT,VLOC,VSIT,TIUX,VSTR,SUPPRESS,NOASF)
 D MAKE^TIUSRVP(.YSOK,DFN,YSTIT,YSAVED,YSHOSP,,.YSTIUX,YSHOSP_";"_YSAVED_";E")
 Q:YSOK'>0  ;-->out
 S YSDATA(1)="[DATA]",YSDATA(2)=YSOK
 N YSENC,YSPKG,YSEOK,YSPROB
 S YSVISIT=$$GET1^DIQ(8925,YSOK_",",.03,"I")
 S YSPKG=$$FIND1^DIC(9.4,"","BO","MENTAL HEALTH")
 S YSENC("ENCOUNTER",1,"ENC D/T")=YSAVED
 S YSENC("ENCOUNTER",1,"PATIENT")=DFN
 S YSENC("ENCOUNTER",1,"HOS LOC")=YSHOSP
 S YSENC("ENCOUNTER",1,"SERVICE CATEGORY")="E"
 S YSENC("ENCOUNTER",1,"ENCOUNTER TYPE")="O"
 S YSENC("PROVIDER",1,"NAME")=YSORD
 S YSENC("PROVIDER",1,"PRIMARY")=1
 S YSEOK=$$DATA2PCE^PXAPI("YSENC",YSPKG,"MHA DATA",.YSVISIT,,,,,.YSPROB)
 Q
UPDATE ;
 N STR ; patch 123
 K ^TMP("TIUVIEW",$J)
 D TGET^TIUSRVR1(.YST1,YSTIUDA)
 ; patch 123, changed N1=4 to N1=5 so that URGENCY is not repeated.
 S N1=5,N2=0 ;keep from adding header each time
 F  S N1=$O(^TMP("TIUVIEW",$J,N1)) Q:N1'>0  D
 . ; patch 123, skip lines = "", still set lines that at least =" "
 . S STR=^TMP("TIUVIEW",$J,N1)
 . I STR'="" S N2=N2+1,YSTIUX("TEXT",N2,0)=^TMP("TIUVIEW",$J,N1)
 ;; removed 8/20/08 ASFD DELBOTM
 K ^TMP("TIUVIEW",$J)
 S YSTIUX(.02)=DFN
 S YSTIUX(1301)=YSAVED
 S YSTIUX(1302)=YSORD
 S $P(X,"_",75)=""
 S N2=N2+1,YSTIUX("TEXT",N2,0)=X
 D TXTCK(N2)
 D UPDATE^TIUSRVP(.YSOK,YSTIUDA,.YSTIUX)
 S:YSOK YSDATA(1)="[DATA]",YSDATA(2)=YSOK
 Q
TXTCK(N2) ;clean text
 S N=0,N1=0 F  S N=$O(YS(N)) Q:N'>0  D
 . S YSG=YS(N)
 . I YSG="" S YSB=$G(YSB)+1
 . E  S YSB=0
 . I (YSG="")&(YSB>2) Q  ;no print mult blanks
 . I N>3 Q:($E(YSG,1,51)=$E(YSHDR,1,51))
 . I N>3 Q:YSG?." "1"PRINTED    ENTERED"." "
 . Q:YSG?1"Not valid unless signed: Reviewed by".E
 . Q:YSG?1"Printed by: ".E
 . S N1=N1+1
 . S YSTIUX("TEXT",N1+N2,0)=YS(N) K YS(N)
 Q
BOTTOM ;add lines end of note not admin
 S J1=99999,J1=$O(YS(J1),-1) Q:J1'>0  ;--> out no text
 S J1=J1+1,YS(J1)="  "
 S J1=J1+1,YS(J1)="Information contained in this note is based on a self report assessment"
 S J1=J1+1,YS(J1)="and is not sufficient to use alone for diagnostic purposes."
 S J1=J1+1,YS(J1)="Assessment results should be verified for accuracy and used"
 S J1=J1+1,YS(J1)="in conjunction with other diagnostic activities."
 Q
DELBOTM ;DEL Bottom
 S J1=99999,J1=$O(YSTIUX("TEXT",J1),-1)
 F J2=J1:-1:J1-4 D
 . K YSTIUX("TEXT",J2)
 . S N2=N2-1
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HYTQTIU   5007     printed  Sep 23, 2025@19:55:10                                                                                                                                                                                                      Page 2
YTQTIU    ;ASF/ALB - MHAX TIU ; 12/7/09 3:10pm
 +1       ;;5.01;MENTAL HEALTH;**85,96,123,142,187**;Dec 30, 1994;Build 73
 +2       ;
 +3       ;Reference to TIUPUTU APIs supported by DBIA #3351
 +4       ;Reference to TIUSRVA APIs supported by DBIA #5541
 +5       ;Reference to VADPT APIs supported by DBIA #10061
 +6       ;Reference to TIUSRVP APIs supported by DBIA #3535
 +7       ;Reference to FILE 8925 supported by DBIA #3268
 +8       ;Reference to PXAPI APIs supported by DBIA #1889
 +9       ;Reference to TIUSRVR1 supported by DBIA #2944
 +10      ;Reference to FILE 9.4 supported by DBIA #10048
 +11       QUIT 
PCREATE(YSDATA,YS) ;pn creation
 +1       ;Input AD AS ien of 601.84 mh administration
 +2       ; YS(1...X) as text of note
 +3        NEW DFN,N,N1,N2,Y,J1,J2,YSAD,YSAVED,YSHOSP,YSOK,YSORD,YSRPRIVL,YST,YSTIT,YSTS,YSVISIT,YSVSIT,YSVSTR,YST1,YSTIUX,YSTIUDA
 +4        NEW YSPNOK,YSINS,YSPNAC,YSPNTIT,VA,VADM,X,YSAGE,YSB,YSDOB,YSG,YSHDR,YSNM,YSSEX,YSSSN,YSCREQ,YSPCS,Y1
 +5        SET YSTIUDA=$GET(YS("TIUIEN"),0)
 +6        SET YSDATA(1)="[ERROR]"
 +7        SET YSAD=$GET(YS("AD"),0)
 +8        SET YSPCS=$GET(YS("COSIGNER"))
 +9       ;-->out
           IF '$DATA(^YTT(601.84,YSAD,0))
               SET YSDATA(2)="bad ad"
               QUIT 
 +10       SET YSHOSP=$PIECE(^YTT(601.84,YSAD,0),U,11)
 +11      ;-->out
           IF YSHOSP'>0
               SET YSDATA(2)="no location"
               QUIT 
 +12       SET DFN=$$GET1^DIQ(601.84,YSAD_",",1,"I")
 +13      ;-->out
           IF DFN'>0
               SET YSDATA(2)="bad dfn"
               QUIT 
 +14       SET YSAVED=$$GET1^DIQ(601.84,YSAD_",",4,"I")
 +15       SET YSORD=$$GET1^DIQ(601.84,YSAD_",",5,"I")
 +16      ;
 +17      ;asf 3/10/08 create pnote only when GENERATE '=n and not inactive
 +18       SET YSINS=$$GET1^DIQ(601.84,YSAD_",",2,"I")
 +19       SET YSPNOK=$$GET1^DIQ(601.71,YSINS_",",28,"I")
 +20      ;-->out no note for this test
           if YSPNOK="N"
               QUIT 
 +21       SET YSPNTIT=$$GET1^DIQ(601.71,YSINS_",",29,"E")
 +22       SET Y=$$WHATITLE^TIUPUTU(YSPNTIT)
 +23      ;I Y'>0 S Y=$$WHATITLE^TIUPUTU("MHA ASSESSMENT NOTE")
 +24      ;--->out
           IF Y'>0
               SET YSDATA(2)="pn not setup"
               QUIT 
 +25       SET YSTIT=+Y
 +26      ;
 +27       SET YSTS=$$GET1^DIQ(601.84,YSAD_",",2,"I")
 +28       SET YSRPRIVL=$$GET1^DIQ(601.71,YSTS_",",9,"E")
 +29      ;-->out  ASF 5/1/07
           if YSRPRIVL'=""
               QUIT 
 +30      ;
 +31      ;set cosigner if required or exit ASF 3/14/08
 +32      ;is cosigner required
           DO REQCOS^TIUSRVA(.YSCREQ,YSTIT,"",YSORD,"")
 +33      ; ASF 12/4/2009 D GETPREF^TIUSRVR(.Y1,YSORD) S YSPCS=$P(Y1,U,9) ; is preferred cosigner set
 +34      ;-->out required signer not sent
           if YSCREQ&(YSPCS="")
               QUIT 
 +35       if YSCREQ&(YSPCS>0)
               SET YSTIUX(1208)=YSPCS
               SET YSTIUX(1506)=1
 +36       SET YSTIUX(1202)=YSORD
 +37      ;
 +38       DO DEM^VADPT
           DO PID^VADPT
           SET YSNM=VADM(1)
           SET YSSEX=$PIECE(VADM(5),U)
           SET YSDOB=$PIECE(VADM(3),U,2)
           SET YSAGE=VADM(4)
           SET YSSSN="xxx-xx-"_VA("BID")
 +39       SET $PIECE(YSHDR," ",60)=""
           SET YSHDR=YSSSN_"  "_YSNM_YSHDR
           SET YSHDR=$EXTRACT(YSHDR,1,44)_YSSEX_" AGE "_YSAGE
 +40      ;add boilerplate at end if no report ASF 8/20/08
 +41      ;don't add boilerplate for AIMS      KCM 8/15/19
 +42       IF '$DATA(^YTT(601.93,"C",YSINS))
               IF ($PIECE(^YTT(601.71,YSINS,0),U)'="AIMS")
                   DO BOTTOM
 +43      ;-->out
           IF YSTIUDA>0
               DO UPDATE
               QUIT 
 +44       DO TXTCK(0)
 +45      ;
 +46      ;MAKE(SUCCESS,DFN,TITLE,VDT,VLOC,VSIT,TIUX,VSTR,SUPPRESS,NOASF)
 +47       DO MAKE^TIUSRVP(.YSOK,DFN,YSTIT,YSAVED,YSHOSP,,.YSTIUX,YSHOSP_";"_YSAVED_";E")
 +48      ;-->out
           if YSOK'>0
               QUIT 
 +49       SET YSDATA(1)="[DATA]"
           SET YSDATA(2)=YSOK
 +50       NEW YSENC,YSPKG,YSEOK,YSPROB
 +51       SET YSVISIT=$$GET1^DIQ(8925,YSOK_",",.03,"I")
 +52       SET YSPKG=$$FIND1^DIC(9.4,"","BO","MENTAL HEALTH")
 +53       SET YSENC("ENCOUNTER",1,"ENC D/T")=YSAVED
 +54       SET YSENC("ENCOUNTER",1,"PATIENT")=DFN
 +55       SET YSENC("ENCOUNTER",1,"HOS LOC")=YSHOSP
 +56       SET YSENC("ENCOUNTER",1,"SERVICE CATEGORY")="E"
 +57       SET YSENC("ENCOUNTER",1,"ENCOUNTER TYPE")="O"
 +58       SET YSENC("PROVIDER",1,"NAME")=YSORD
 +59       SET YSENC("PROVIDER",1,"PRIMARY")=1
 +60       SET YSEOK=$$DATA2PCE^PXAPI("YSENC",YSPKG,"MHA DATA",.YSVISIT,,,,,.YSPROB)
 +61       QUIT 
UPDATE    ;
 +1       ; patch 123
           NEW STR
 +2        KILL ^TMP("TIUVIEW",$JOB)
 +3        DO TGET^TIUSRVR1(.YST1,YSTIUDA)
 +4       ; patch 123, changed N1=4 to N1=5 so that URGENCY is not repeated.
 +5       ;keep from adding header each time
           SET N1=5
           SET N2=0
 +6        FOR 
               SET N1=$ORDER(^TMP("TIUVIEW",$JOB,N1))
               if N1'>0
                   QUIT 
               Begin DoDot:1
 +7       ; patch 123, skip lines = "", still set lines that at least =" "
 +8                SET STR=^TMP("TIUVIEW",$JOB,N1)
 +9                IF STR'=""
                       SET N2=N2+1
                       SET YSTIUX("TEXT",N2,0)=^TMP("TIUVIEW",$JOB,N1)
               End DoDot:1
 +10      ;; removed 8/20/08 ASFD DELBOTM
 +11       KILL ^TMP("TIUVIEW",$JOB)
 +12       SET YSTIUX(.02)=DFN
 +13       SET YSTIUX(1301)=YSAVED
 +14       SET YSTIUX(1302)=YSORD
 +15       SET $PIECE(X,"_",75)=""
 +16       SET N2=N2+1
           SET YSTIUX("TEXT",N2,0)=X
 +17       DO TXTCK(N2)
 +18       DO UPDATE^TIUSRVP(.YSOK,YSTIUDA,.YSTIUX)
 +19       if YSOK
               SET YSDATA(1)="[DATA]"
               SET YSDATA(2)=YSOK
 +20       QUIT 
TXTCK(N2) ;clean text
 +1        SET N=0
           SET N1=0
           FOR 
               SET N=$ORDER(YS(N))
               if N'>0
                   QUIT 
               Begin DoDot:1
 +2                SET YSG=YS(N)
 +3                IF YSG=""
                       SET YSB=$GET(YSB)+1
 +4               IF '$TEST
                       SET YSB=0
 +5       ;no print mult blanks
                   IF (YSG="")&(YSB>2)
                       QUIT 
 +6                IF N>3
                       if ($EXTRACT(YSG,1,51)=$EXTRACT(YSHDR,1,51))
                           QUIT 
 +7                IF N>3
                       if YSG?." "1"PRINTED    ENTERED"." "
                           QUIT 
 +8                if YSG?1"Not valid unless signed
                       QUIT 
 +9                if YSG?1"Printed by
                       QUIT 
 +10               SET N1=N1+1
 +11               SET YSTIUX("TEXT",N1+N2,0)=YS(N)
                   KILL YS(N)
               End DoDot:1
 +12       QUIT 
BOTTOM    ;add lines end of note not admin
 +1       ;--> out no text
           SET J1=99999
           SET J1=$ORDER(YS(J1),-1)
           if J1'>0
               QUIT 
 +2        SET J1=J1+1
           SET YS(J1)="  "
 +3        SET J1=J1+1
           SET YS(J1)="Information contained in this note is based on a self report assessment"
 +4        SET J1=J1+1
           SET YS(J1)="and is not sufficient to use alone for diagnostic purposes."
 +5        SET J1=J1+1
           SET YS(J1)="Assessment results should be verified for accuracy and used"
 +6        SET J1=J1+1
           SET YS(J1)="in conjunction with other diagnostic activities."
 +7        QUIT 
DELBOTM   ;DEL Bottom
 +1        SET J1=99999
           SET J1=$ORDER(YSTIUX("TEXT",J1),-1)
 +2        FOR J2=J1:-1:J1-4
               Begin DoDot:1
 +3                KILL YSTIUX("TEXT",J2)
 +4                SET N2=N2-1
               End DoDot:1
 +5        QUIT