PXRMDLG2 ; SLC/PJH - Reminder Dialog Edit/Inquiry ;06/02/2009
 ;;2.0;CLINICAL REMINDERS;**12**;Feb 04, 2005;Build 73
 ;
 ;Find description for dialog type
LIT(INP) ;
 Q:INP="G" "Dialog group: "
 Q:INP="F" "Forced value: "
 Q:INP="P" "Prompt: "
 Q:INP="E" "Dialog element: "
 Q "???"
 ;
 ;Additional Findings
ADD(DIEN) ;
 N FIND,FSUB,FTYP,FNAME,FNUM
 S FSUB=0
 F  S FSUB=$O(^PXRMD(801.41,DIEN,3,FSUB)) Q:'FSUB  D
 .S FIND=$P($G(^PXRMD(801.41,DIEN,3,FSUB,0)),U) Q:FIND=""
 .S FNAME="" D DESC(FIND) Q:FNAME=""
 .S FNAME="Additional Finding: "_FNAME
 .;Save additional finding name
 .S VALMCNT=VALMCNT+1
 .S ^TMP("PXRMDLG",$J,VALMCNT,0)=$J("",15)_FNAME
 Q
 ;Finding description
DESC(FIEN) ;
 ;Determine finding type
 S FGLOB=$P(FIEN,";",2) Q:FGLOB=""
 S FITEM=$P(FIEN,";") Q:FITEM=""
 ;Diagnosis POV
 I FGLOB["ICD9" D  Q
 .S FTYP="DIAGNOSIS",FGLOB=U_FGLOB_FITEM_",0)"
 .S FNAME=$P($G(@FGLOB),U,3)_" ["_FITEM_"]"
 ;Procedure CPT
 I FGLOB["ICPT" D  Q
 .S FTYP="PROCEDURE",FGLOB=U_FGLOB_FITEM_",0)"
 .S FNAME=$P($G(@FGLOB),U,2)_" ["_FITEM_"]"
 ;Quick order
 I FGLOB["ORD(101.41" D  Q
 .S FTYP="QUICK ORDER",FGLOB=U_FGLOB_FITEM_",0)"
 .S FNAME=$P($G(@FGLOB),U,2)_" ["_FITEM_"]"
 ;Short name for finding type
 S FTYP=$G(DEF1(FGLOB)) Q:FTYP=""
 S FNUM=" ["_FTYP_"("_FITEM_")]"
 ;Long name
 S FTYP=$G(DEF2(FTYP))
 S FGLOB=U_FGLOB_FITEM_",0)"
 S FNAME=$P($G(@FGLOB),U,1)
 I FNAME="" S FNAME=$P($G(@FGLOB),U)
 I FNAME]"" S FNAME=FNAME_FNUM Q
 S FNAME=FITEM
 Q
 ;
 ;Dialog Details (DD)
DETAIL(PIEN) ;
 ;Get prompt data
 N DATA
 S DATA=$G(^PXRMD(801.41,PIEN,0))
 ;Extract name, type and disabled
 S PNAME=$P(DATA,U),PDIS=$P(DATA,U,3),PTYP=$P(DATA,U,4),PTYP=$$LIT(PTYP)
 ;Result (if any)
 S RESULT=$P(DATA,U,15)
 I RESULT S RESNM=$P($G(^PXRMD(801.41,RESULT,0)),U)
 ;Get Resolution/Finding details
 S DATA=$G(^PXRMD(801.41,PIEN,1)),RIEN=$P(DATA,U,3),FIEN=$P(DATA,U,5)
 ;Resolution status name (assume this is a set)
 S RNAME="???"
 I RIEN S RNAME=$P($G(^PXRMD(801.9,RIEN,0)),U) S:RNAME="" RNAME="???"
 ;Set Default display values
 S FNAME="???",FTYP="???",ONAME="???"
 ;For quick orders get the orderable item
 I RNAME="ORDERED" D
 .S FTYP="QUICK ORDER",FNAME="*QUICK ORDER MISSING*"
 .S OIEN=$P($G(^PXRMD(801.41,PIEN,1)),U,7) Q:'OIEN
 .S FGLOB="^ORD(101.43,"_OIEN_",0)"
 .S ONAME=$P($G(@FGLOB),U)_" ["_OIEN_"]"
 ;Description of finding
 D DESC(FIEN)
 ;
 S RNAME="Resolution: "_RNAME
 S FTYP="Finding type: "_FTYP
 S FNAME="Finding item: "_FNAME
 S VALMCNT=VALMCNT+1
 S PTXT=$J(SEQ,3)_$J("",12)_PTYP_PNAME
 S ^TMP("PXRMDLG",$J,VALMCNT,0)=PTXT_$J("",72-$L(PTXT))_$S(+PDIS>0:" (Disabled)",1:"")
 S ^TMP("PXRMDLG",$J,"IDX",SEQ,PIEN)=""
 ;Save resolution
 I ('DGRP),(FTYP'["TAXONOMY"),(FTYP'["MENTAL HEALTH") D
 .I RNAME'["???" D
 ..S VALMCNT=VALMCNT+1
 ..S ^TMP("PXRMDLG",$J,VALMCNT,0)=$J("",15)_RNAME
 .I FTYP["QUICK ORDER" D
 ..S VALMCNT=VALMCNT+1
 ..S ^TMP("PXRMDLG",$J,VALMCNT,0)=$J("",15)_"Orderable item: "_ONAME
 I ('DGRP) D
 .;Save finding type
 .I FTYP'["???" D
 ..S VALMCNT=VALMCNT+1
 ..S ^TMP("PXRMDLG",$J,VALMCNT,0)=$J("",15)_FTYP
 ;Save finding name
 I ('DGRP),(FNAME'["???") D
 .S VALMCNT=VALMCNT+1
 .S ^TMP("PXRMDLG",$J,VALMCNT,0)=$J("",15)_FNAME
 ;Additional Findings
 I (FTYP'["TAXONOMY"),(FTYP'["MENTAL HEALTH") D ADD(PIEN)
 ;Result group/element (mental health)
 I RESULT D
 .;Save result details
 .S VALMCNT=VALMCNT+1
 .S ^TMP("PXRMDLG",$J,VALMCNT,0)=$J("",15)_"Result name: "_RESNM
 ;Get additional prompts/dialog group elements
 D PROMPT^PXRMDLG1(PIEN,20,DHED,DGRP)
 Q
 ;
 ;Group findings and prompts
GROUP(PIEN) ;
 ;Get prompt data
 S DATA=$G(^PXRMD(801.41,PIEN,0))
 ;Extract name, type and disabled
 S PNAME=$P(DATA,U),PDIS=$P(DATA,U,3),PTYP=$P(DATA,U,4),PTYP=$$LIT(PTYP)
 ;Result (if any)
 S RESULT=$P(DATA,U,15)
 I RESULT S RESNM=$P($G(^PXRMD(801.41,RESULT,0)),U)
 ;Get Resolution/Finding details
 S DATA=$G(^PXRMD(801.41,PIEN,1)),RIEN=$P(DATA,U,3),FIEN=$P(DATA,U,5)
 ;Resolution status name (assume this is a set)
 S RNAME="???"
 I RIEN S RNAME=$P($G(^PXRMD(801.9,RIEN,0)),U) S:RNAME="" RNAME="???"
 ;Set Default display values
 S FNAME="???",FTYP="???",ONAME="???"
 ;For quick orders get the orderable item
 I RNAME="ORDERED" D
 .S FTYP="QUICK ORDER",FNAME="*QUICK ORDER MISSING*"
 .S OIEN=$P($G(^PXRMD(801.41,PIEN,1)),U,7) Q:'OIEN
 .S FGLOB="^ORD(101.43,"_OIEN_",0)"
 .S ONAME=$P($G(@FGLOB),U)_" ["_OIEN_"]"
 ;Description of finding
 D DESC(FIEN)
 ;
 S RNAME="Resolution: "_RNAME
 S FTYP="Finding type: "_FTYP
 S FNAME="Finding item: "_FNAME
 ;Save resolution
 I (FTYP'["TAXONOMY"),(FTYP'["MENTAL HEALTH") D
 .I RNAME'["???" D
 ..S VALMCNT=VALMCNT+1
 ..S ^TMP("PXRMDLG",$J,VALMCNT,0)=$J("",15)_RNAME
 .I FTYP["QUICK ORDER" D
 ..S VALMCNT=VALMCNT+1
 ..S ^TMP("PXRMDLG",$J,VALMCNT,0)=$J("",15)_"Orderable item: "_ONAME
 ;Save finding type
 I FTYP'["???" D
 .S VALMCNT=VALMCNT+1
 .S ^TMP("PXRMDLG",$J,VALMCNT,0)=$J("",15)_FTYP
 ;Save finding name
 I (FNAME'["???") D
 .S VALMCNT=VALMCNT+1
 .S ^TMP("PXRMDLG",$J,VALMCNT,0)=$J("",15)_FNAME
 ;Additional Findings
 I (FTYP'["TAXONOMY"),(FTYP'["MENTAL HEALTH") D ADD(PIEN)
 ;Get additional prompts/dialog group elements
 D PROMPT^PXRMDLG1(PIEN,20,"Additional prompts: ",0)
 ;Final line feed
 S VALMCNT=VALMCNT+1
 S ^TMP("PXRMDLG",$J,VALMCNT,0)=$J("",79)
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPXRMDLG2   5373     printed  Sep 23, 2025@19:19:53                                                                                                                                                                                                    Page 2
PXRMDLG2  ; SLC/PJH - Reminder Dialog Edit/Inquiry ;06/02/2009
 +1       ;;2.0;CLINICAL REMINDERS;**12**;Feb 04, 2005;Build 73
 +2       ;
 +3       ;Find description for dialog type
LIT(INP)  ;
 +1        if INP="G"
               QUIT "Dialog group: "
 +2        if INP="F"
               QUIT "Forced value: "
 +3        if INP="P"
               QUIT "Prompt: "
 +4        if INP="E"
               QUIT "Dialog element: "
 +5        QUIT "???"
 +6       ;
 +7       ;Additional Findings
ADD(DIEN) ;
 +1        NEW FIND,FSUB,FTYP,FNAME,FNUM
 +2        SET FSUB=0
 +3        FOR 
               SET FSUB=$ORDER(^PXRMD(801.41,DIEN,3,FSUB))
               if 'FSUB
                   QUIT 
               Begin DoDot:1
 +4                SET FIND=$PIECE($GET(^PXRMD(801.41,DIEN,3,FSUB,0)),U)
                   if FIND=""
                       QUIT 
 +5                SET FNAME=""
                   DO DESC(FIND)
                   if FNAME=""
                       QUIT 
 +6                SET FNAME="Additional Finding: "_FNAME
 +7       ;Save additional finding name
 +8                SET VALMCNT=VALMCNT+1
 +9                SET ^TMP("PXRMDLG",$JOB,VALMCNT,0)=$JUSTIFY("",15)_FNAME
               End DoDot:1
 +10       QUIT 
 +11      ;Finding description
DESC(FIEN) ;
 +1       ;Determine finding type
 +2        SET FGLOB=$PIECE(FIEN,";",2)
           if FGLOB=""
               QUIT 
 +3        SET FITEM=$PIECE(FIEN,";")
           if FITEM=""
               QUIT 
 +4       ;Diagnosis POV
 +5        IF FGLOB["ICD9"
               Begin DoDot:1
 +6                SET FTYP="DIAGNOSIS"
                   SET FGLOB=U_FGLOB_FITEM_",0)"
 +7                SET FNAME=$PIECE($GET(@FGLOB),U,3)_" ["_FITEM_"]"
               End DoDot:1
               QUIT 
 +8       ;Procedure CPT
 +9        IF FGLOB["ICPT"
               Begin DoDot:1
 +10               SET FTYP="PROCEDURE"
                   SET FGLOB=U_FGLOB_FITEM_",0)"
 +11               SET FNAME=$PIECE($GET(@FGLOB),U,2)_" ["_FITEM_"]"
               End DoDot:1
               QUIT 
 +12      ;Quick order
 +13       IF FGLOB["ORD(101.41"
               Begin DoDot:1
 +14               SET FTYP="QUICK ORDER"
                   SET FGLOB=U_FGLOB_FITEM_",0)"
 +15               SET FNAME=$PIECE($GET(@FGLOB),U,2)_" ["_FITEM_"]"
               End DoDot:1
               QUIT 
 +16      ;Short name for finding type
 +17       SET FTYP=$GET(DEF1(FGLOB))
           if FTYP=""
               QUIT 
 +18       SET FNUM=" ["_FTYP_"("_FITEM_")]"
 +19      ;Long name
 +20       SET FTYP=$GET(DEF2(FTYP))
 +21       SET FGLOB=U_FGLOB_FITEM_",0)"
 +22       SET FNAME=$PIECE($GET(@FGLOB),U,1)
 +23       IF FNAME=""
               SET FNAME=$PIECE($GET(@FGLOB),U)
 +24       IF FNAME]""
               SET FNAME=FNAME_FNUM
               QUIT 
 +25       SET FNAME=FITEM
 +26       QUIT 
 +27      ;
 +28      ;Dialog Details (DD)
DETAIL(PIEN) ;
 +1       ;Get prompt data
 +2        NEW DATA
 +3        SET DATA=$GET(^PXRMD(801.41,PIEN,0))
 +4       ;Extract name, type and disabled
 +5        SET PNAME=$PIECE(DATA,U)
           SET PDIS=$PIECE(DATA,U,3)
           SET PTYP=$PIECE(DATA,U,4)
           SET PTYP=$$LIT(PTYP)
 +6       ;Result (if any)
 +7        SET RESULT=$PIECE(DATA,U,15)
 +8        IF RESULT
               SET RESNM=$PIECE($GET(^PXRMD(801.41,RESULT,0)),U)
 +9       ;Get Resolution/Finding details
 +10       SET DATA=$GET(^PXRMD(801.41,PIEN,1))
           SET RIEN=$PIECE(DATA,U,3)
           SET FIEN=$PIECE(DATA,U,5)
 +11      ;Resolution status name (assume this is a set)
 +12       SET RNAME="???"
 +13       IF RIEN
               SET RNAME=$PIECE($GET(^PXRMD(801.9,RIEN,0)),U)
               if RNAME=""
                   SET RNAME="???"
 +14      ;Set Default display values
 +15       SET FNAME="???"
           SET FTYP="???"
           SET ONAME="???"
 +16      ;For quick orders get the orderable item
 +17       IF RNAME="ORDERED"
               Begin DoDot:1
 +18               SET FTYP="QUICK ORDER"
                   SET FNAME="*QUICK ORDER MISSING*"
 +19               SET OIEN=$PIECE($GET(^PXRMD(801.41,PIEN,1)),U,7)
                   if 'OIEN
                       QUIT 
 +20               SET FGLOB="^ORD(101.43,"_OIEN_",0)"
 +21               SET ONAME=$PIECE($GET(@FGLOB),U)_" ["_OIEN_"]"
               End DoDot:1
 +22      ;Description of finding
 +23       DO DESC(FIEN)
 +24      ;
 +25       SET RNAME="Resolution: "_RNAME
 +26       SET FTYP="Finding type: "_FTYP
 +27       SET FNAME="Finding item: "_FNAME
 +28       SET VALMCNT=VALMCNT+1
 +29       SET PTXT=$JUSTIFY(SEQ,3)_$JUSTIFY("",12)_PTYP_PNAME
 +30       SET ^TMP("PXRMDLG",$JOB,VALMCNT,0)=PTXT_$JUSTIFY("",72-$LENGTH(PTXT))_$SELECT(+PDIS>0:" (Disabled)",1:"")
 +31       SET ^TMP("PXRMDLG",$JOB,"IDX",SEQ,PIEN)=""
 +32      ;Save resolution
 +33       IF ('DGRP)
               IF (FTYP'["TAXONOMY")
                   IF (FTYP'["MENTAL HEALTH")
                       Begin DoDot:1
 +34                       IF RNAME'["???"
                               Begin DoDot:2
 +35                               SET VALMCNT=VALMCNT+1
 +36                               SET ^TMP("PXRMDLG",$JOB,VALMCNT,0)=$JUSTIFY("",15)_RNAME
                               End DoDot:2
 +37                       IF FTYP["QUICK ORDER"
                               Begin DoDot:2
 +38                               SET VALMCNT=VALMCNT+1
 +39                               SET ^TMP("PXRMDLG",$JOB,VALMCNT,0)=$JUSTIFY("",15)_"Orderable item: "_ONAME
                               End DoDot:2
                       End DoDot:1
 +40       IF ('DGRP)
               Begin DoDot:1
 +41      ;Save finding type
 +42               IF FTYP'["???"
                       Begin DoDot:2
 +43                       SET VALMCNT=VALMCNT+1
 +44                       SET ^TMP("PXRMDLG",$JOB,VALMCNT,0)=$JUSTIFY("",15)_FTYP
                       End DoDot:2
               End DoDot:1
 +45      ;Save finding name
 +46       IF ('DGRP)
               IF (FNAME'["???")
                   Begin DoDot:1
 +47                   SET VALMCNT=VALMCNT+1
 +48                   SET ^TMP("PXRMDLG",$JOB,VALMCNT,0)=$JUSTIFY("",15)_FNAME
                   End DoDot:1
 +49      ;Additional Findings
 +50       IF (FTYP'["TAXONOMY")
               IF (FTYP'["MENTAL HEALTH")
                   DO ADD(PIEN)
 +51      ;Result group/element (mental health)
 +52       IF RESULT
               Begin DoDot:1
 +53      ;Save result details
 +54               SET VALMCNT=VALMCNT+1
 +55               SET ^TMP("PXRMDLG",$JOB,VALMCNT,0)=$JUSTIFY("",15)_"Result name: "_RESNM
               End DoDot:1
 +56      ;Get additional prompts/dialog group elements
 +57       DO PROMPT^PXRMDLG1(PIEN,20,DHED,DGRP)
 +58       QUIT 
 +59      ;
 +60      ;Group findings and prompts
GROUP(PIEN) ;
 +1       ;Get prompt data
 +2        SET DATA=$GET(^PXRMD(801.41,PIEN,0))
 +3       ;Extract name, type and disabled
 +4        SET PNAME=$PIECE(DATA,U)
           SET PDIS=$PIECE(DATA,U,3)
           SET PTYP=$PIECE(DATA,U,4)
           SET PTYP=$$LIT(PTYP)
 +5       ;Result (if any)
 +6        SET RESULT=$PIECE(DATA,U,15)
 +7        IF RESULT
               SET RESNM=$PIECE($GET(^PXRMD(801.41,RESULT,0)),U)
 +8       ;Get Resolution/Finding details
 +9        SET DATA=$GET(^PXRMD(801.41,PIEN,1))
           SET RIEN=$PIECE(DATA,U,3)
           SET FIEN=$PIECE(DATA,U,5)
 +10      ;Resolution status name (assume this is a set)
 +11       SET RNAME="???"
 +12       IF RIEN
               SET RNAME=$PIECE($GET(^PXRMD(801.9,RIEN,0)),U)
               if RNAME=""
                   SET RNAME="???"
 +13      ;Set Default display values
 +14       SET FNAME="???"
           SET FTYP="???"
           SET ONAME="???"
 +15      ;For quick orders get the orderable item
 +16       IF RNAME="ORDERED"
               Begin DoDot:1
 +17               SET FTYP="QUICK ORDER"
                   SET FNAME="*QUICK ORDER MISSING*"
 +18               SET OIEN=$PIECE($GET(^PXRMD(801.41,PIEN,1)),U,7)
                   if 'OIEN
                       QUIT 
 +19               SET FGLOB="^ORD(101.43,"_OIEN_",0)"
 +20               SET ONAME=$PIECE($GET(@FGLOB),U)_" ["_OIEN_"]"
               End DoDot:1
 +21      ;Description of finding
 +22       DO DESC(FIEN)
 +23      ;
 +24       SET RNAME="Resolution: "_RNAME
 +25       SET FTYP="Finding type: "_FTYP
 +26       SET FNAME="Finding item: "_FNAME
 +27      ;Save resolution
 +28       IF (FTYP'["TAXONOMY")
               IF (FTYP'["MENTAL HEALTH")
                   Begin DoDot:1
 +29                   IF RNAME'["???"
                           Begin DoDot:2
 +30                           SET VALMCNT=VALMCNT+1
 +31                           SET ^TMP("PXRMDLG",$JOB,VALMCNT,0)=$JUSTIFY("",15)_RNAME
                           End DoDot:2
 +32                   IF FTYP["QUICK ORDER"
                           Begin DoDot:2
 +33                           SET VALMCNT=VALMCNT+1
 +34                           SET ^TMP("PXRMDLG",$JOB,VALMCNT,0)=$JUSTIFY("",15)_"Orderable item: "_ONAME
                           End DoDot:2
                   End DoDot:1
 +35      ;Save finding type
 +36       IF FTYP'["???"
               Begin DoDot:1
 +37               SET VALMCNT=VALMCNT+1
 +38               SET ^TMP("PXRMDLG",$JOB,VALMCNT,0)=$JUSTIFY("",15)_FTYP
               End DoDot:1
 +39      ;Save finding name
 +40       IF (FNAME'["???")
               Begin DoDot:1
 +41               SET VALMCNT=VALMCNT+1
 +42               SET ^TMP("PXRMDLG",$JOB,VALMCNT,0)=$JUSTIFY("",15)_FNAME
               End DoDot:1
 +43      ;Additional Findings
 +44       IF (FTYP'["TAXONOMY")
               IF (FTYP'["MENTAL HEALTH")
                   DO ADD(PIEN)
 +45      ;Get additional prompts/dialog group elements
 +46       DO PROMPT^PXRMDLG1(PIEN,20,"Additional prompts: ",0)
 +47      ;Final line feed
 +48       SET VALMCNT=VALMCNT+1
 +49       SET ^TMP("PXRMDLG",$JOB,VALMCNT,0)=$JUSTIFY("",79)
 +50       QUIT