PXRMDLG7 ;SLC/AGP - Reminder Dialog TESTER List Manager;Jul 12, 2022@14:08:28
;;2.0;CLINICAL REMINDERS;**45,65**;Feb 04, 2005;Build 438
;
;
BLFAIL(ARRAY) ;
N CNT,TEMP
S CNT=$O(ARRAY(""),-1)
I CNT>2 Q 0
S TEMP=1_U_U_"1"_U_"D"_U_"1"_U_U_U_"0"_U_U
I $G(ARRAY(1))'=TEMP Q 0
S TEMP=2_U_U_"1"_U_"Clinical Reminder evaluation error; this reminder dialog cannot be processed.<br>Please contact the reminder manager for assistance."
I ARRAY(CNT)'=TEMP Q 0
W !,"Clinical Reminder evaluation error; this reminder dialog cannot be processed."
W !,"Please contact the reminder manager for assistance."
H 2
Q 1
;
EN ;
N ARRAY,VIEW
S VALMBCK="R"
D TESTER(.ARRAY,PXRMDIEN,.VIEW)
I '$D(ARRAY) D BUILD^PXRMDLG(0) Q
I $$BLFAIL(.ARRAY) D BUILD^PXRMDLG(0) Q
D START
Q
;Display national dialog
START N NLINE,NSEL
S NLINE=0,NSEL=0
;
S PXRMDTST=1
K ^TMP("PXRMDLG",$J)
D BUILD
;Create headings
D CHGCAP^VALM("HEADER1","Item Seq.")
I VIEW=1 D CHGCAP^VALM("HEADER2","Tester Dialog Details")
I VIEW=2 D CHGCAP^VALM("HEADER2","Tester Dialog Text")
I VIEW=3 D CHGCAP^VALM("HEADER2","Tester Progress Note Text")
I VIEW=1 D CHGCAP^VALM("HEADER3","Type")
S VALMCNT=NLINE
S ^TMP("PXRMDLG",$J,"VALMCNT")=VALMCNT
D XQORM^PXRMDLG
EXIT Q
;
BUILD ;
N I,IEN,OUTPUT,PIECES,SEQ,SEQLAST,SEQS,TESTDATA
S I=0 F S I=$O(ARRAY(I)) Q:I'>0 D
.S OUTPUT=$G(ARRAY(I)) Q:OUTPUT="" Q:$P(OUTPUT,U)=2
.S IEN=$P(OUTPUT,U,2),SEQ=$P(OUTPUT,U,3)
.;break out seq to mimic going through the DD entry
.S PIECES=$L(SEQ,".")
.I PIECES=1 S SEQS="",SEQLAST=SEQ
.I PIECES>1 D
..S ^TMP("PXRMDLG",$J,"SEQ",SEQ)=IEN
..S SEQS=$P(SEQ,".",1,PIECES-1)_"."
..S SEQLAST=$P(SEQ,".",PIECES)
.I VIEW=1 D DLINE^PXRMDLG3(IEN,SEQS,SEQLAST)
.I VIEW>1 S TESTDATA=$$TESTDATA(IEN,OUTPUT) D DLINE^PXRMDLG4(IEN,SEQS,SEQLAST,"PXRMDLG")
.S ^TMP("PXRMDLG",$J,"IEN",NSEL)=IEN_U_SEQLAST
Q
;
ISTEST() ;
Q +$G(PXRMDTST)
;
TESTDATA(IEN,NODE) ;
N RESULT
S RESULT=$G(^PXRMD(801.41,IEN,0))
S $P(RESULT,U,11)=$S($P(NODE,U,4)="D":1,$P(NODE,U,4)="C":"C",1:"")
S $P(RESULT,U,14)=$P(NODE,U,10)
S $P(RESULT,U,10)=$P(NODE,U,15)
S $P(RESULT,U,7)=$P(NODE,U,16)
S $P(RESULT,U,8)=$P(NODE,U,17)
S $P(RESULT,U,9)=$P(NODE,U,18)
S $P(RESULT,U,6)=$S($P(NODE,U,19)=1:"Y",1:"N")
S $P(RESULT,U,5)=$P(NODE,U,20)
S $P(RESULT,U,12)=$P(NODE,U,21)
Q RESULT
;
TESTER(ARRAY,PXRMDIEN,VIEW) ;
;Prompt for patient and dialog.
N DATE,DIR,DFN,DIC,DIR,DIROUT,DIRUT,DTOUT,DUOUT,HASFF,HASTERM,IND
N PXRHM,PXRMFFSS,PXRMITEM,PXRMTDEB,OCNT,ORY,X,Y
S VIEW=-1
GVIEW ;
S DIR(0)="SB^DD:DETAILED DISPLAY;DP:DIALOG PROGRESS NOTE;DT:DIALOG TEXT"
S DIR("A")="Select View:"
S DIR("B")="DD"
D ^DIR
I Y=U G GVIEW
I Y=U_U Q
S VIEW=$S(Y="DD":1,Y="DP":3,Y="DT":2,1:-1)
I VIEW=-1 Q
S DIC=2,DIC("A")="Select Patient: "
S DIC(0)="AEQMZ"
GPAT1 D ^DIC
I $D(DIROUT)!$D(DIRUT) Q
I $D(DTOUT)!$D(DUOUT) Q
S DFN=+$P(Y,U,1)
I DFN=-1 G GPAT1
D LOAD^PXRMDLL(PXRMDIEN,DFN,"")
M ARRAY=ORY
Q
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPXRMDLG7 3023 printed Oct 16, 2024@17:44:49 Page 2
PXRMDLG7 ;SLC/AGP - Reminder Dialog TESTER List Manager;Jul 12, 2022@14:08:28
+1 ;;2.0;CLINICAL REMINDERS;**45,65**;Feb 04, 2005;Build 438
+2 ;
+3 ;
BLFAIL(ARRAY) ;
+1 NEW CNT,TEMP
+2 SET CNT=$ORDER(ARRAY(""),-1)
+3 IF CNT>2
QUIT 0
+4 SET TEMP=1_U_U_"1"_U_"D"_U_"1"_U_U_U_"0"_U_U
+5 IF $GET(ARRAY(1))'=TEMP
QUIT 0
+6 SET TEMP=2_U_U_"1"_U_"Clinical Reminder evaluation error; this reminder dialog cannot be processed.<br>Please contact the reminder manager for assistance."
+7 IF ARRAY(CNT)'=TEMP
QUIT 0
+8 WRITE !,"Clinical Reminder evaluation error; this reminder dialog cannot be processed."
+9 WRITE !,"Please contact the reminder manager for assistance."
+10 HANG 2
+11 QUIT 1
+12 ;
EN ;
+1 NEW ARRAY,VIEW
+2 SET VALMBCK="R"
+3 DO TESTER(.ARRAY,PXRMDIEN,.VIEW)
+4 IF '$DATA(ARRAY)
DO BUILD^PXRMDLG(0)
QUIT
+5 IF $$BLFAIL(.ARRAY)
DO BUILD^PXRMDLG(0)
QUIT
+6 DO START
+7 QUIT
+8 ;Display national dialog
START NEW NLINE,NSEL
+1 SET NLINE=0
SET NSEL=0
+2 ;
+3 SET PXRMDTST=1
+4 KILL ^TMP("PXRMDLG",$JOB)
+5 DO BUILD
+6 ;Create headings
+7 DO CHGCAP^VALM("HEADER1","Item Seq.")
+8 IF VIEW=1
DO CHGCAP^VALM("HEADER2","Tester Dialog Details")
+9 IF VIEW=2
DO CHGCAP^VALM("HEADER2","Tester Dialog Text")
+10 IF VIEW=3
DO CHGCAP^VALM("HEADER2","Tester Progress Note Text")
+11 IF VIEW=1
DO CHGCAP^VALM("HEADER3","Type")
+12 SET VALMCNT=NLINE
+13 SET ^TMP("PXRMDLG",$JOB,"VALMCNT")=VALMCNT
+14 DO XQORM^PXRMDLG
EXIT QUIT
+1 ;
BUILD ;
+1 NEW I,IEN,OUTPUT,PIECES,SEQ,SEQLAST,SEQS,TESTDATA
+2 SET I=0
FOR
SET I=$ORDER(ARRAY(I))
if I'>0
QUIT
Begin DoDot:1
+3 SET OUTPUT=$GET(ARRAY(I))
if OUTPUT=""
QUIT
if $PIECE(OUTPUT,U)=2
QUIT
+4 SET IEN=$PIECE(OUTPUT,U,2)
SET SEQ=$PIECE(OUTPUT,U,3)
+5 ;break out seq to mimic going through the DD entry
+6 SET PIECES=$LENGTH(SEQ,".")
+7 IF PIECES=1
SET SEQS=""
SET SEQLAST=SEQ
+8 IF PIECES>1
Begin DoDot:2
+9 SET ^TMP("PXRMDLG",$JOB,"SEQ",SEQ)=IEN
+10 SET SEQS=$PIECE(SEQ,".",1,PIECES-1)_"."
+11 SET SEQLAST=$PIECE(SEQ,".",PIECES)
End DoDot:2
+12 IF VIEW=1
DO DLINE^PXRMDLG3(IEN,SEQS,SEQLAST)
+13 IF VIEW>1
SET TESTDATA=$$TESTDATA(IEN,OUTPUT)
DO DLINE^PXRMDLG4(IEN,SEQS,SEQLAST,"PXRMDLG")
+14 SET ^TMP("PXRMDLG",$JOB,"IEN",NSEL)=IEN_U_SEQLAST
End DoDot:1
+15 QUIT
+16 ;
ISTEST() ;
+1 QUIT +$GET(PXRMDTST)
+2 ;
TESTDATA(IEN,NODE) ;
+1 NEW RESULT
+2 SET RESULT=$GET(^PXRMD(801.41,IEN,0))
+3 SET $PIECE(RESULT,U,11)=$SELECT($PIECE(NODE,U,4)="D":1,$PIECE(NODE,U,4)="C":"C",1:"")
+4 SET $PIECE(RESULT,U,14)=$PIECE(NODE,U,10)
+5 SET $PIECE(RESULT,U,10)=$PIECE(NODE,U,15)
+6 SET $PIECE(RESULT,U,7)=$PIECE(NODE,U,16)
+7 SET $PIECE(RESULT,U,8)=$PIECE(NODE,U,17)
+8 SET $PIECE(RESULT,U,9)=$PIECE(NODE,U,18)
+9 SET $PIECE(RESULT,U,6)=$SELECT($PIECE(NODE,U,19)=1:"Y",1:"N")
+10 SET $PIECE(RESULT,U,5)=$PIECE(NODE,U,20)
+11 SET $PIECE(RESULT,U,12)=$PIECE(NODE,U,21)
+12 QUIT RESULT
+13 ;
TESTER(ARRAY,PXRMDIEN,VIEW) ;
+1 ;Prompt for patient and dialog.
+2 NEW DATE,DIR,DFN,DIC,DIR,DIROUT,DIRUT,DTOUT,DUOUT,HASFF,HASTERM,IND
+3 NEW PXRHM,PXRMFFSS,PXRMITEM,PXRMTDEB,OCNT,ORY,X,Y
+4 SET VIEW=-1
GVIEW ;
+1 SET DIR(0)="SB^DD:DETAILED DISPLAY;DP:DIALOG PROGRESS NOTE;DT:DIALOG TEXT"
+2 SET DIR("A")="Select View:"
+3 SET DIR("B")="DD"
+4 DO ^DIR
+5 IF Y=U
GOTO GVIEW
+6 IF Y=U_U
QUIT
+7 SET VIEW=$SELECT(Y="DD":1,Y="DP":3,Y="DT":2,1:-1)
+8 IF VIEW=-1
QUIT
+9 SET DIC=2
SET DIC("A")="Select Patient: "
+10 SET DIC(0)="AEQMZ"
GPAT1 DO ^DIC
+1 IF $DATA(DIROUT)!$DATA(DIRUT)
QUIT
+2 IF $DATA(DTOUT)!$DATA(DUOUT)
QUIT
+3 SET DFN=+$PIECE(Y,U,1)
+4 IF DFN=-1
GOTO GPAT1
+5 DO LOAD^PXRMDLL(PXRMDIEN,DFN,"")
+6 MERGE ARRAY=ORY
+7 QUIT
+8 ;