PXRMDLGZ	; SLC/PJH - Link reminder to dialog. ;01/11/2007
	;;2.0;CLINICAL REMINDERS;**4,6**;Feb 04, 2005;Build 123
	;
	;Called by option PXRM DIALOG/COMPONENT EDIT
	;
START	N BY,DATA,DDES,DHD,DIC,DNAM,DTYP,FLDS,FR,L,LOGIC,NOW,PNAM,TO,Y
	N PXRMBG,PXRMHD,PXRMDIEN,PXRMGTYP,PXRMDTYP,PXRMITEM,PXRMMODE,PXRMNAME
	N PXRMTEMP,PXRMTITL,PXRMVIEW
	;Refresh on return
	S VALMBCK="R"
	S VALMSG="+ Next Screen   - Prev Screen   ?? More Actions"
	;Default is display dialog elements
	S PXRMDTYP="R",PXRMGTYP="DLGR",PXRMVIEW="AN"
	;Select dialog for display
	F  D  Q:'PXRMTEMP
	.S PXRMTEMP=""
	.D START^PXRMSEL(.PXRMHD,.PXRMGTYP,"PXRMTEMP") Q:'PXRMTEMP
	.N X S X="IORESET"
	.D ENDR^%ZISS,@(PXRMGTYP_"("_PXRMTEMP_")")
END	Q
	;
	;Reminder View
	;-------------
DLGR(PXRMITEM)	;
	N PXRMDIEN,PXRMCS1,PXRMCS2
	;Format headings to include reminder and name
	S DATA=$G(^PXD(811.9,PXRMITEM,0)),RNAM=$P(DATA,U),PNAM=$P(DATA,U,3)
	S PXRMHD="REMINDER NAME: "_RNAM
	;
	;Dialog History
	F  D  Q:'PXRMDIEN
	.D START^PXRMDLGH(PXRMITEM,.PXRMDIEN,"PXRMDIEN") Q:'PXRMDIEN
	.N PXRMHD,VALMBCK,VALMBG,VALMSG,VIEW,X,XMZ
	.S DNAM=$P($G(^PXRMD(801.41,PXRMDIEN,0)),U)
	.I $P($G(^PXRMD(801.41,PXRMDIEN,0)),U,3)]"" S DNAM=DNAM_" (DISABLED)"
	.S PXRMHD="REMINDER DIALOG NAME: "_DNAM
	.S PXRMCS1=$$FILE^PXRMEXCS(801.41,PXRMDIEN)
	.S X="IORESET"
	.D ENDR^%ZISS,EN^VALM("PXRM DIALOG LIST")
	.I PXRMDIEN,$D(^PXRMD(801.41,PXRMDIEN,0)) D
	..S PXRMCS2=$$FILE^PXRMEXCS(801.41,PXRMDIEN) Q:+PXRMCS2=0
	..Q:PXRMCS1=PXRMCS2
	..D SEHIST^PXRMUTIL(801.41,"^PXRMD(801,41,",PXRMDIEN)
	.W IORESET
	.D KILL^%ZISS
	Q
	;
	;Edit element/prompt/group
	;-------------------------
DLGE(PXRMDIEN)	;
	N LOCK,LFIND
	;Check for Uneditable flag
	S LOCK=$P($G(^PXRMD(801.41,PXRMTEMP,100)),U,4)
	S LFIND=$P($G(^PXRMD(801.41,PXRMTEMP,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 PXRMHD="Dialog Name: ",PXRMDIEN=PXRMTEMP
	;Format headings to include dialog name
	S DATA=$G(^PXRMD(801.41,PXRMDIEN,0)),DDES=$P(DATA,U),DTYP=$P(DATA,U,4)
	;Test
	I DTYP="G" D DLG(PXRMDIEN) Q
	;
	S PXRMHD=PXRMHD_" "_DDES W PXRMHD,!
	;Edit selected dialog
	D EDIT^PXRMDEDT(DTYP,PXRMDIEN,0)
	Q
	;
	;Reminder dialog view
	;--------------------
DLG(PXRMDIEN)	;
	S PXRMDIEN=PXRMTEMP
	S PXRMNAME=$P($G(^PXRMD(801.41,PXRMDIEN,0)),U)
	S PXRMITEM=$P($G(^PXRMD(801.41,PXRMDIEN,0)),U,2)
	;Format headings to include dialog name
	S PXRMHD=PXRMHD_PXRMNAME
	;Check if the set is disable and add to header if disabled
	I $P(^PXRMD(801.41,PXRMDIEN,0),U,3)]"" S PXRMHD=PXRMHD_" (DISABLED)"
	;Listman option
	D EN^VALM("PXRM DIALOG LIST")
	W IORESET
	D KILL^%ZISS
	Q
	;
	;Other subroutines
	;
	;Ask update or no
	;----------------
ASK(YESNO)	;
	N X,Y,TEXT,DIR
	K DIROUT,DIRUT,DTOUT,DUOUT
	S DIR(0)="YA0"
	S DIR("A")="LINK THIS REMINDER TO DIALOG - "_$P(PXRMHD,": ",2)_": "
	S DIR("B")="Y"
	S DIR("?")="Enter Y or N. For detailed help type ??"
	S DIR("??")=U_"D HLP^PXRMDLGY(1)"
	D ^DIR K DIR
	I $D(DIROUT) S DTOUT=1
	I $D(DTOUT)!($D(DUOUT)) Q
	S YESNO=$E(Y(0))
	Q
	;
	;Display dialogs autogenerated from this reminder
	;------------------------------------------------
DISP(RIEN)	;
	N ARRAY,DSUB,FIRST
	;Get OTHER dialogs
	S FIRST=1,DSUB=""
	F  S DSUB=$O(^PXRMD(801.41,"AG",RIEN,DSUB)) Q:'DSUB  D
	.W !
	.D:FIRST
	..W "DIALOGS ALREADY GENERATED FROM THIS REMINDER:",!! S FIRST=0
	.W ?20,$P($G(^PXRMD(801.41,DSUB,0)),U)
	;
	I 'FIRST W !
	;
	Q
	;
	;Display linked reminders
	;------------------------
DISPL(DIEN)	;
	N ARRAY,DLG,RSUB,FIRST,RNAM
	S RSUB=$P($G(^PXRMD(801.41,DIEN,0)),U,2)
	I RSUB W !!,"SOURCE REMINDER: "_$P($G(^PXD(811.9,RSUB,0)),U)
	;Linked reminders
	S FIRST=1,RNAM=""
	F  S RNAM=$O(^PXD(811.9,"B",RNAM)) Q:RNAM=""  D
	.S RSUB=$O(^PXD(811.9,"B",RNAM,"")) Q:'RSUB
	.S DLG=$P($G(^PXD(811.9,RSUB,51)),U) Q:DLG'=DIEN
	.W ! I FIRST W !,"REMINDERS ALREADY LINKED TO THIS DIALOG:",!! S FIRST=0
	.W ?18,$P($G(^PXD(811.9,RSUB,0)),U)
	Q
	;
	;Link a dialog (called by protocol PXRM DIALOG/REMINDER LINK)
	;-------------
LINK(DIEN)	;
	F  D  Q:$D(DTOUT)!$D(DUOUT)
	.W IORESET
	.S VALMBCK="R"
	.;Display linked reminders
	.D DISPL(DIEN)
	.;
	.N ANS,DIC,DIR,DLG,LIT1,PNAME,PXRMREM,REM
	.S DIC("A")="SELECT A REMINDER TO LINK OR CHANGE: "
	.S LIT1="You must select a reminder!"
	.D SEL(811.9,"AEQMZ",.PXRMREM)
	.Q:$D(DTOUT)!$D(DUOUT)
	.S REM=$P(PXRMREM(1),U),PNAME=$P(PXRMREM(1),U,3)
	.I PNAME]"" W !!,"REMINDER PRINT NAME: "_PNAME,!
	.;Display related dialogs
	.D DISP(REM)
	.;Check if already linked
	.S DLG=$P($G(^PXD(811.9,REM,51)),U)
	.;Reconfirm to link reminder
	.I 'DLG S ANS="" D ASK(.ANS) Q:ANS'="Y"
	.;
	.N DA,DR,DIE
	.;Edit selected reminder
	.S DA=REM
	.;Settup local variables
	.S DIE="^PXD(811.9,",DR=51
	.;If no link force entry
	.I 'DLG S DR=DR_"///"_PXRMNAME
	.D ^DIE
	Q
	;
	;Link a Reminder (called by protocol PXRM DIALOG LINK)
	;---------------
RLINK(REM)	;
	N DLG
	;Re-display reminder name
	W IORESET
	W !,PXRMHD
	;
	N DA,DR,DIE
	;Edit selected reminder
	S DA=REM
	;Settup local variables
	S DIE="^PXD(811.9,",DR=51
	;If no link force entry
	D ^DIE
	Q
	;
	;General help text routine.
	;--------------------------
HLP(CALL)	;
	N HTEXT
	N DIWF,DIWL,DIWR,IC
	S DIWF="C75",DIWL=0,DIWR=75
	;
	I CALL=1 D
	.S HTEXT(1)="Enter Yes to link reminder to this dialog."
	I CALL=2 D
	.S HTEXT(1)="Enter Yes to link reminder to this 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
	;
	;Reminder selection
	;------------------
SEL(FILE,MODE,ARRAY)	;
	N X,Y,CNT
	K DIROUT,DIRUT,DTOUT,DUOUT
	S CNT=0
	W !
	F  D  Q:$D(DTOUT)  Q:$D(DUOUT)  Q:CNT>0  Q:(Y=-1)&(CNT>0)
	.S DIC=FILE,DIC(0)=MODE
	.D ^DIC
	.I X=(U_U) S DTOUT=1
	.I '$D(DTOUT),('$D(DUOUT)) D
	..I +Y'=-1 D  Q
	...S CNT=CNT+1,ARRAY(CNT)=Y_U_Y(0,0)_U_$P(Y(0),U,3)
	..W:CNT=0 !,LIT1
	.K DIC
	Q
	;
	;Input transform for FINDING ITEM in 801.41
XINP(X)	;Taxonomy findings are not allowed for dialog groups
	I $P(X,";",2)="PXD(811.2,",$P($G(^PXRMD(801.41,DA,0)),U,4)="G" D  Q 0
	.W $C(7),!,"A taxonomy cannot be entered as the finding item for a group"
	;Only applies to MH
	I $P(X,";",2)'="^YTT(601.71," Q 1
	I $$OK^PXRMDLL($P(X,";")) Q 1
	W *7,!,"This test is not appropriate for the GUI",!
	Q 0
