PXRMDEDI ;SLC/PJH - Edit PXRM reminder dialog. ;Apr 27, 2021@18:34
;;2.0;CLINICAL REMINDERS;**4,26,45,77**;Feb 04, 2005;Build 5
;
;Used by protocol PXRM DIALOG SELECTION ITEM
;
ASK(PIEN,SEQ) ;Ask if OK to delete
N DDATA,DIR,DTYP,NAME,TYP,X,Y
K DIROUT,DIRUT,DTOUT,DUOUT
S DDATA=$G(^PXRMD(801.41,PIEN,0))
S NAME=$P(DDATA,U),TYP=$P(DDATA,U,4)
S DIR(0)="YA0"
S DIR("A")="Delete sequence "_SEQ_" from "
I TYP="G" S DIR("A")=DIR("A")_"group "_NAME_": "
E S DIR("A")=DIR("A")_"reminder dialog "_NAME_": "
S DIR("B")="N"
S DIR("?")="Enter Y or N. For detailed help type ??"
S DIR("??")=U_"D XHLP^PXRMDLG(1)"
D ^DIR K DIR
I $D(DIROUT) S DTOUT=1
I $D(DTOUT)!($D(DUOUT)) Q
I $E(Y(0))="N" S DUOUT=1
S VALMBCK="R"
Q
;
DEL(SEQ,PXRMDIEN) ;Delete individual element from dialog or group
N DA,DIK
S DIEN=0
F S DIEN=$O(^PXRMD(801.41,PXRMDIEN,10,DIEN)) Q:'DIEN D
.I $P($G(^PXRMD(801.41,PXRMDIEN,10,DIEN,0)),U)=SEQ D
..S DA(1)=PXRMDIEN,DA=DIEN W !,"DA: "_DA Q:'DA
..S DIK="^PXRMD(801.41,"_DA(1)_",10,"
..D ^DIK
S VALMBG=1
Q
;
IND(DIEN,SEL) ;Edit individual element
W IORESET
N DIC,DIDEL,DR,DTOUT,DTYP,DUOUT,DINUSE,FAIL,HED,LFIND,LOCK,NATIONAL,OIEN,PLOCK,Y
;
S OIEN=0
;Check for Uneditable flag
S LOCK=$P($G(^PXRMD(801.41,DIEN,100)),U,4)
S LFIND=$P($G(^PXRMD(801.41,DIEN,1)),U,5)
I LOCK=1,$G(LFIND)'="",$G(LFIND)'["ORD",'$G(PXRMINST) D Q
.W !,"This item can not be edited" H 2
;
S NATIONAL=0
;Limited edit of National dialogs
I $P($G(^PXRMD(801.41,PXRMDIEN,100)),U)="N" D
.I $G(PXRMINST)=1,DUZ(0)="@" Q
.S NATIONAL=1
.S PLOCK=$P($G(^PXRMD(801.41,PXRMDIEN,100)),U,4)
;
N ANS,DATA,PIEN,SEQ
;Get group or reminder dialog ien for this component
S DATA=$G(^TMP("PXRMDLG4",$J,"IEN",SEL))
S PIEN=$P(DATA,U),SEQ=$P(DATA,U,2)
;National dialogs can only be edited
I NATIONAL S ANS="E"
;In Group edit the group can only be edited
I DIEN=PXRMDIEN S ANS="E"
;Ask what to do with local dialogs
S DTYP=$P($G(^PXRMD(801.41,DIEN,0)),U,4) Q:DTYP=""
I (('NATIONAL)&(DIEN'=PXRMDIEN))!((NATIONAL)&($G(PLOCK)=1)&(DIEN'=PXRMDIEN)&($G(LOCK)'=1)) D Q:$D(DUOUT)!$D(DTOUT)
.D PROMPT(.ANS,DIEN) Q:$D(DTOUT)!$D(DUOUT)
.;Display usage
.I "DC"[ANS D
..W !,"Dialog Name: "_$P($G(^PXRMD(801.41,DIEN,0)),U)
.; Verify delete
.I ANS="D" D ASK(PIEN,SEQ)
;Ask what to do with National Dialogs that have a lock on them
;I NATIONAL,DIEN'=PXRMDIEN,$P($G(^PXRMD(801.41,DIEN,100)),U,4)=1 D Q:$D(DUOUT)!$D(DTOUT)
I NATIONAL,DIEN'=PXRMDIEN,LOCK=1,DTYP="G" D Q
.W !,"Cannot modify lock group from a higher level view. Please modify"
.W !,"this group from the group editor screen." H 2
;
;Delete line
I ANS="D" D DEL(SEQ,PIEN) Q
;Copy and Replace option
I ANS="C" D SEL^PXRMDCPY(.DIEN,PIEN) Q:$D(DTOUT)!$D(DUOUT)
;PXRM*2.0*77 - set NATIONAL at selection (IEN) level when get
; to this point if this is a national dialog which
; should not be edited. (PXRMINST is set in
; programmer mode by National Support if editing of
; a national dialog is needed.)
I '$G(PXRMINST),$P($G(^PXRMD(801.41,IEN,100)),"^")="N" S NATIONAL=1
;Determine if a taxonomy dialog
N FIND
S FAIL=0
I ANS="R",$D(^PXRMD(801.41,DIEN,"BL")) D
.N ARRAY,CNT,DIR,SEQ,IDX,DNAME,REPIEN,Y
.S DIR(0)="S"_U,CNT=0,DIR("A")="Replacement Dialog"
.S SEQ=0 F S SEQ=$O(^PXRMD(801.41,IEN,"BL","B",SEQ)) Q:SEQ'>0 D
..S IDX=$O(^PXRMD(801.41,IEN,"BL","B",SEQ,"")) Q:IDX'>0
..S REPIEN=$P($G(^PXRMD(801.41,IEN,"BL",IDX,0)),U,5) Q:REPIEN'>0
..S ARRAY(SEQ)=REPIEN
..S DNAME=$P($G(^PXRMD(801.41,REPIEN,0)),U)
..S CNT=CNT+1,DIR(0)=DIR(0)_SEQ_":"_DNAME_";"
.I CNT=1,REPIEN>0 S OIEN=DIEN,(IEN,DIEN)=REPIEN Q
.D ^DIR
.I $D(DIROUT) S DTOUT=1
.I $D(DTOUT)!($D(DUOUT)) S FAIL=1 Q
.S REPIEN=ARRAY(Y)
.I REPIEN>0 S OIEN=DIEN,(IEN,DIEN)=REPIEN
I FAIL=1 Q
;S OIEN=DIEN,(IEN,DIEN)=$P($G(^PXRMD(801.41,DIEN,49)),U,3)
S FIND=$P($G(^PXRMD(801.41,IEN,1)),U,5),VALMBCK="R"
;Option to change an element to a group
I DTYP="E",'NATIONAL D NTYP^PXRMDEDT(.DTYP) Q:$D(DUOUT)!$D(DTOUT) D:DTYP="G"
.S $P(^PXRMD(801.41,DIEN,0),U,4)=DTYP
.I $P($G(^PXRMD(801.41,DIEN,"TAX")),U)="A" D
..N FDA,MSG
..S FDA(801.41,DIEN_",",.01)=$P($G(^PXRMD(801.41,DIEN,0)),U)
..S FDA(801.41,DIEN_",",123)="N"
..D UPDATE^DIE("","FDA","","MSG")
..I '$D(MSG) W !,"Taxonomy selection set to 'No Pick List'. Review group structure before using in CPRS." Q
..I $D(MSG) D AWRITE^PXRMUTIL("MSG")
.W !,"Dialog element changed to a dialog group"
;Edit Element
D EDIT^PXRMDEDT(DTYP,DIEN,OIEN)
Q
;
PROMPT(ANS,DIEN) ;Select Dialog Element Action
N NAME,X,Y,DIR K DIROUT,DIRUT,DTOUT,DUOUT
S DIR(0)="S"_U_"E:Edit;"
S DIR(0)=DIR(0)_"C:Copy and Replace current element;"
S DIR(0)=DIR(0)_"D:Delete element from this dialog;"
I $D(^PXRMD(801.41,DIEN,"BL")) S DIR(0)=DIR(0)_"R:Edit Replacement Element/Group;"
S DIR("A")="Select Dialog Element Action"
S DIR("B")="E"
S DIR("?")="Select from the codes displayed. For detailed help type ??"
S DIR("??")=U_"D HELP^PXRMDEDI(1)"
D ^DIR K DIR
I $D(DIROUT) S DTOUT=1
I $D(DTOUT)!($D(DUOUT)) Q
S ANS=Y
Q
;
HELP(CALL) ;General help text routine
N HTEXT
N DIWF,DIWL,DIWR,IC
S DIWF="C70",DIWL=0,DIWR=70
;
I CALL=1 D
.S HTEXT(1)="Select E to edit dialog element. If you wish to create"
.S HTEXT(2)="a new dialog element just for this reminder dialog select"
.S HTEXT(3)="C to copy and replace the current element. Select D to"
.S HTEXT(4)="delete the sequence number/element from the dialog."
K ^UTILITY($J,"W")
S IC=""
F S IC=$O(HTEXT(IC)) Q:IC="" D
. S X=HTEXT(IC)
. D ^DIWP
W !
S IC=0
F S IC=$O(^UTILITY($J,"W",0,IC)) Q:IC="" D
. W !,^UTILITY($J,"W",0,IC,0)
K ^UTILITY($J,"W")
W !
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPXRMDEDI 5815 printed Dec 13, 2024@01:43:37 Page 2
PXRMDEDI ;SLC/PJH - Edit PXRM reminder dialog. ;Apr 27, 2021@18:34
+1 ;;2.0;CLINICAL REMINDERS;**4,26,45,77**;Feb 04, 2005;Build 5
+2 ;
+3 ;Used by protocol PXRM DIALOG SELECTION ITEM
+4 ;
ASK(PIEN,SEQ) ;Ask if OK to delete
+1 NEW DDATA,DIR,DTYP,NAME,TYP,X,Y
+2 KILL DIROUT,DIRUT,DTOUT,DUOUT
+3 SET DDATA=$GET(^PXRMD(801.41,PIEN,0))
+4 SET NAME=$PIECE(DDATA,U)
SET TYP=$PIECE(DDATA,U,4)
+5 SET DIR(0)="YA0"
+6 SET DIR("A")="Delete sequence "_SEQ_" from "
+7 IF TYP="G"
SET DIR("A")=DIR("A")_"group "_NAME_": "
+8 IF '$TEST
SET DIR("A")=DIR("A")_"reminder dialog "_NAME_": "
+9 SET DIR("B")="N"
+10 SET DIR("?")="Enter Y or N. For detailed help type ??"
+11 SET DIR("??")=U_"D XHLP^PXRMDLG(1)"
+12 DO ^DIR
KILL DIR
+13 IF $DATA(DIROUT)
SET DTOUT=1
+14 IF $DATA(DTOUT)!($DATA(DUOUT))
QUIT
+15 IF $EXTRACT(Y(0))="N"
SET DUOUT=1
+16 SET VALMBCK="R"
+17 QUIT
+18 ;
DEL(SEQ,PXRMDIEN) ;Delete individual element from dialog or group
+1 NEW DA,DIK
+2 SET DIEN=0
+3 FOR
SET DIEN=$ORDER(^PXRMD(801.41,PXRMDIEN,10,DIEN))
if 'DIEN
QUIT
Begin DoDot:1
+4 IF $PIECE($GET(^PXRMD(801.41,PXRMDIEN,10,DIEN,0)),U)=SEQ
Begin DoDot:2
+5 SET DA(1)=PXRMDIEN
SET DA=DIEN
WRITE !,"DA: "_DA
if 'DA
QUIT
+6 SET DIK="^PXRMD(801.41,"_DA(1)_",10,"
+7 DO ^DIK
End DoDot:2
End DoDot:1
+8 SET VALMBG=1
+9 QUIT
+10 ;
IND(DIEN,SEL) ;Edit individual element
+1 WRITE IORESET
+2 NEW DIC,DIDEL,DR,DTOUT,DTYP,DUOUT,DINUSE,FAIL,HED,LFIND,LOCK,NATIONAL,OIEN,PLOCK,Y
+3 ;
+4 SET OIEN=0
+5 ;Check for Uneditable flag
+6 SET LOCK=$PIECE($GET(^PXRMD(801.41,DIEN,100)),U,4)
+7 SET LFIND=$PIECE($GET(^PXRMD(801.41,DIEN,1)),U,5)
+8 IF LOCK=1
IF $GET(LFIND)'=""
IF $GET(LFIND)'["ORD"
IF '$GET(PXRMINST)
Begin DoDot:1
+9 WRITE !,"This item can not be edited"
HANG 2
End DoDot:1
QUIT
+10 ;
+11 SET NATIONAL=0
+12 ;Limited edit of National dialogs
+13 IF $PIECE($GET(^PXRMD(801.41,PXRMDIEN,100)),U)="N"
Begin DoDot:1
+14 IF $GET(PXRMINST)=1
IF DUZ(0)="@"
QUIT
+15 SET NATIONAL=1
+16 SET PLOCK=$PIECE($GET(^PXRMD(801.41,PXRMDIEN,100)),U,4)
End DoDot:1
+17 ;
+18 NEW ANS,DATA,PIEN,SEQ
+19 ;Get group or reminder dialog ien for this component
+20 SET DATA=$GET(^TMP("PXRMDLG4",$JOB,"IEN",SEL))
+21 SET PIEN=$PIECE(DATA,U)
SET SEQ=$PIECE(DATA,U,2)
+22 ;National dialogs can only be edited
+23 IF NATIONAL
SET ANS="E"
+24 ;In Group edit the group can only be edited
+25 IF DIEN=PXRMDIEN
SET ANS="E"
+26 ;Ask what to do with local dialogs
+27 SET DTYP=$PIECE($GET(^PXRMD(801.41,DIEN,0)),U,4)
if DTYP=""
QUIT
+28 IF (('NATIONAL)&(DIEN'=PXRMDIEN))!((NATIONAL)&($GET(PLOCK)=1)&(DIEN'=PXRMDIEN)&($GET(LOCK)'=1))
Begin DoDot:1
+29 DO PROMPT(.ANS,DIEN)
if $DATA(DTOUT)!$DATA(DUOUT)
QUIT
+30 ;Display usage
+31 IF "DC"[ANS
Begin DoDot:2
+32 WRITE !,"Dialog Name: "_$PIECE($GET(^PXRMD(801.41,DIEN,0)),U)
End DoDot:2
+33 ; Verify delete
+34 IF ANS="D"
DO ASK(PIEN,SEQ)
End DoDot:1
if $DATA(DUOUT)!$DATA(DTOUT)
QUIT
+35 ;Ask what to do with National Dialogs that have a lock on them
+36 ;I NATIONAL,DIEN'=PXRMDIEN,$P($G(^PXRMD(801.41,DIEN,100)),U,4)=1 D Q:$D(DUOUT)!$D(DTOUT)
+37 IF NATIONAL
IF DIEN'=PXRMDIEN
IF LOCK=1
IF DTYP="G"
Begin DoDot:1
+38 WRITE !,"Cannot modify lock group from a higher level view. Please modify"
+39 WRITE !,"this group from the group editor screen."
HANG 2
End DoDot:1
QUIT
+40 ;
+41 ;Delete line
+42 IF ANS="D"
DO DEL(SEQ,PIEN)
QUIT
+43 ;Copy and Replace option
+44 IF ANS="C"
DO SEL^PXRMDCPY(.DIEN,PIEN)
if $DATA(DTOUT)!$DATA(DUOUT)
QUIT
+45 ;PXRM*2.0*77 - set NATIONAL at selection (IEN) level when get
+46 ; to this point if this is a national dialog which
+47 ; should not be edited. (PXRMINST is set in
+48 ; programmer mode by National Support if editing of
+49 ; a national dialog is needed.)
+50 IF '$GET(PXRMINST)
IF $PIECE($GET(^PXRMD(801.41,IEN,100)),"^")="N"
SET NATIONAL=1
+51 ;Determine if a taxonomy dialog
+52 NEW FIND
+53 SET FAIL=0
+54 IF ANS="R"
IF $DATA(^PXRMD(801.41,DIEN,"BL"))
Begin DoDot:1
+55 NEW ARRAY,CNT,DIR,SEQ,IDX,DNAME,REPIEN,Y
+56 SET DIR(0)="S"_U
SET CNT=0
SET DIR("A")="Replacement Dialog"
+57 SET SEQ=0
FOR
SET SEQ=$ORDER(^PXRMD(801.41,IEN,"BL","B",SEQ))
if SEQ'>0
QUIT
Begin DoDot:2
+58 SET IDX=$ORDER(^PXRMD(801.41,IEN,"BL","B",SEQ,""))
if IDX'>0
QUIT
+59 SET REPIEN=$PIECE($GET(^PXRMD(801.41,IEN,"BL",IDX,0)),U,5)
if REPIEN'>0
QUIT
+60 SET ARRAY(SEQ)=REPIEN
+61 SET DNAME=$PIECE($GET(^PXRMD(801.41,REPIEN,0)),U)
+62 SET CNT=CNT+1
SET DIR(0)=DIR(0)_SEQ_":"_DNAME_";"
End DoDot:2
+63 IF CNT=1
IF REPIEN>0
SET OIEN=DIEN
SET (IEN,DIEN)=REPIEN
QUIT
+64 DO ^DIR
+65 IF $DATA(DIROUT)
SET DTOUT=1
+66 IF $DATA(DTOUT)!($DATA(DUOUT))
SET FAIL=1
QUIT
+67 SET REPIEN=ARRAY(Y)
+68 IF REPIEN>0
SET OIEN=DIEN
SET (IEN,DIEN)=REPIEN
End DoDot:1
+69 IF FAIL=1
QUIT
+70 ;S OIEN=DIEN,(IEN,DIEN)=$P($G(^PXRMD(801.41,DIEN,49)),U,3)
+71 SET FIND=$PIECE($GET(^PXRMD(801.41,IEN,1)),U,5)
SET VALMBCK="R"
+72 ;Option to change an element to a group
+73 IF DTYP="E"
IF 'NATIONAL
DO NTYP^PXRMDEDT(.DTYP)
if $DATA(DUOUT)!$DATA(DTOUT)
QUIT
if DTYP="G"
Begin DoDot:1
+74 SET $PIECE(^PXRMD(801.41,DIEN,0),U,4)=DTYP
+75 IF $PIECE($GET(^PXRMD(801.41,DIEN,"TAX")),U)="A"
Begin DoDot:2
+76 NEW FDA,MSG
+77 SET FDA(801.41,DIEN_",",.01)=$PIECE($GET(^PXRMD(801.41,DIEN,0)),U)
+78 SET FDA(801.41,DIEN_",",123)="N"
+79 DO UPDATE^DIE("","FDA","","MSG")
+80 IF '$DATA(MSG)
WRITE !,"Taxonomy selection set to 'No Pick List'. Review group structure before using in CPRS."
QUIT
+81 IF $DATA(MSG)
DO AWRITE^PXRMUTIL("MSG")
End DoDot:2
+82 WRITE !,"Dialog element changed to a dialog group"
End DoDot:1
+83 ;Edit Element
+84 DO EDIT^PXRMDEDT(DTYP,DIEN,OIEN)
+85 QUIT
+86 ;
PROMPT(ANS,DIEN) ;Select Dialog Element Action
+1 NEW NAME,X,Y,DIR
KILL DIROUT,DIRUT,DTOUT,DUOUT
+2 SET DIR(0)="S"_U_"E:Edit;"
+3 SET DIR(0)=DIR(0)_"C:Copy and Replace current element;"
+4 SET DIR(0)=DIR(0)_"D:Delete element from this dialog;"
+5 IF $DATA(^PXRMD(801.41,DIEN,"BL"))
SET DIR(0)=DIR(0)_"R:Edit Replacement Element/Group;"
+6 SET DIR("A")="Select Dialog Element Action"
+7 SET DIR("B")="E"
+8 SET DIR("?")="Select from the codes displayed. For detailed help type ??"
+9 SET DIR("??")=U_"D HELP^PXRMDEDI(1)"
+10 DO ^DIR
KILL DIR
+11 IF $DATA(DIROUT)
SET DTOUT=1
+12 IF $DATA(DTOUT)!($DATA(DUOUT))
QUIT
+13 SET ANS=Y
+14 QUIT
+15 ;
HELP(CALL) ;General help text routine
+1 NEW HTEXT
+2 NEW DIWF,DIWL,DIWR,IC
+3 SET DIWF="C70"
SET DIWL=0
SET DIWR=70
+4 ;
+5 IF CALL=1
Begin DoDot:1
+6 SET HTEXT(1)="Select E to edit dialog element. If you wish to create"
+7 SET HTEXT(2)="a new dialog element just for this reminder dialog select"
+8 SET HTEXT(3)="C to copy and replace the current element. Select D to"
+9 SET HTEXT(4)="delete the sequence number/element from the dialog."
End DoDot:1
+10 KILL ^UTILITY($JOB,"W")
+11 SET IC=""
+12 FOR
SET IC=$ORDER(HTEXT(IC))
if IC=""
QUIT
Begin DoDot:1
+13 SET X=HTEXT(IC)
+14 DO ^DIWP
End DoDot:1
+15 WRITE !
+16 SET IC=0
+17 FOR
SET IC=$ORDER(^UTILITY($JOB,"W",0,IC))
if IC=""
QUIT
Begin DoDot:1
+18 WRITE !,^UTILITY($JOB,"W",0,IC,0)
End DoDot:1
+19 KILL ^UTILITY($JOB,"W")
+20 WRITE !
+21 QUIT