[613] | 1 | PXRMDCPY ; SLC/PJH - Copy dialog files. ;07/09/2002
|
---|
| 2 | ;;2.0;CLINICAL REMINDERS;**4**;Feb 04, 2005;Build 21
|
---|
| 3 | ;
|
---|
| 4 | ;Called by label from PXRMDEDT
|
---|
| 5 | ;
|
---|
| 6 | ;Yes/No prompts
|
---|
| 7 | ;--------------
|
---|
| 8 | ASK(YESNO,TEXT,HLP,DEFAULT) ;
|
---|
| 9 | N X,Y,DIR
|
---|
| 10 | K DIROUT,DIRUT,DTOUT,DUOUT
|
---|
| 11 | S DIR(0)="YA0"
|
---|
| 12 | S DIR("A")=TEXT
|
---|
| 13 | S DIR("B")=DEFAULT
|
---|
| 14 | S DIR("?")="Enter Y or N. For detailed help type ??"
|
---|
| 15 | S DIR("??")=U_"D HELP^PXRMDEDT(HLP)"
|
---|
| 16 | D ^DIR K DIR
|
---|
| 17 | I $D(DIROUT) S DTOUT=1
|
---|
| 18 | I $D(DTOUT)!($D(DUOUT)) Q
|
---|
| 19 | S YESNO=$E(Y(0))
|
---|
| 20 | Q
|
---|
| 21 | ;
|
---|
| 22 | ;Copy any dialog
|
---|
| 23 | ;---------------
|
---|
| 24 | ANY W IORESET
|
---|
| 25 | N DIC,DUOUT,DTOUT,DIROUT,DIRUT,DTYP,LFIND,LOCK,SIEN,IENN,IENO,X,Y
|
---|
| 26 | N PROMPT,ROOT,WHAT
|
---|
| 27 | S WHAT="dialog",ROOT="^PXRMD(801.41,",PROMPT="Select the dialog to copy: "
|
---|
| 28 | ;
|
---|
| 29 | S DIC=ROOT,DIC(0)="AEQ",DIC("A")=PROMPT
|
---|
| 30 | S DIC("S")="I $P(^(0),U,4)=PXRMDTYP"
|
---|
| 31 | W !
|
---|
| 32 | D ^DIC
|
---|
| 33 | I $D(DUOUT)!$D(DTOUT) S DIROUT="" Q
|
---|
| 34 | S IENO=$P(Y,U,1) I IENO=-1 S DIROUT="" Q
|
---|
| 35 | ;
|
---|
| 36 | ;Check for Uneditable flag
|
---|
| 37 | S LOCK=$P($G(^PXRMD(801.41,IENO,100)),U,4)
|
---|
| 38 | S LFIND=$P($G(^PXRMD(801.41,IENO,1)),U,5)
|
---|
| 39 | S DTYP=$P($G(^PXRMD(801.41,IENO,0)),U,4)
|
---|
| 40 | I LOCK=1,'$G(PXRMINST),DTYP="G" D Q
|
---|
| 41 | .W !,"This item cannot be copied." H 2
|
---|
| 42 | I LOCK=1,$G(LFIND)'="",$G(LFIND)'["ORD",'$G(PXRMINST),DTYP'="G" D Q
|
---|
| 43 | .W !,"This item cannot be copied." H 2
|
---|
| 44 | ;
|
---|
| 45 | ;Copy the dialog
|
---|
| 46 | D COPY(IENO,.IENN,0) Q:$D(DUOUT)
|
---|
| 47 | ;
|
---|
| 48 | ;Prompts may become forced values
|
---|
| 49 | I "PF"[$P(@(ROOT_IENN_",0)"),U,4) D
|
---|
| 50 | .;Get original process ID
|
---|
| 51 | .N SUB S SUB=$P($G(^PXRMD(801.41,IENO,46)),U)
|
---|
| 52 | .;Update GUI process in 801.41
|
---|
| 53 | .I SUB S DR="46///"_SUB,DIE=ROOT,DA=IENN D ^DIE
|
---|
| 54 | .;check if a prompt
|
---|
| 55 | .I $P(@(ROOT_IENN_",0)"),U,4)="P" D
|
---|
| 56 | ..;Allow PXRM prompts to be changed into forced values
|
---|
| 57 | ..N ANS,TEXT
|
---|
| 58 | ..S TEXT="Change the new prompt into a forced value :"
|
---|
| 59 | ..D ASK(.ANS,TEXT,4,"N") Q:$D(DUOUT)!$D(DTOUT) Q:ANS'="Y"
|
---|
| 60 | ..;Store the dialog type
|
---|
| 61 | ..S DR="4///F",DIE=ROOT,DA=IENN
|
---|
| 62 | ..D ^DIE
|
---|
| 63 | .Q
|
---|
| 64 | ;
|
---|
| 65 | Q
|
---|
| 66 | ;
|
---|
| 67 | ;Copy original dialog
|
---|
| 68 | ;--------------------
|
---|
| 69 | COPY(IENO,IENN,RDIEN) ;
|
---|
| 70 | D SETSTART^PXRMCOPY(ROOT)
|
---|
| 71 | S IENN=$$GETFOIEN(ROOT)
|
---|
| 72 | D MERGE(IENN,IENO,ROOT) Q:$D(DUOUT)
|
---|
| 73 | ;
|
---|
| 74 | S DPOS=$G(SEQ)
|
---|
| 75 | N DA,DIE,DIK,DIR,DR,NAME,ORGNAME,X
|
---|
| 76 | S ORGNAME=$P(@(ROOT_IENO_",0)"),U,1),NAME=""
|
---|
| 77 | ;Get the new name.
|
---|
| 78 | F D Q:$D(DTOUT)!$D(DUOUT) Q:NAME]""
|
---|
| 79 | .S DIR(0)="F"_U_"3:63"_U_"K:(X?.N)!'(X'?1P.E) X"
|
---|
| 80 | .S DIR("A")="ENTER A UNIQUE NAME"
|
---|
| 81 | .;If give a default name
|
---|
| 82 | .S:RDIEN DIR("B")=$$NAME(IENO,ORGNAME)
|
---|
| 83 | .D ^DIR Q:$D(DTOUT)!$D(DUOUT)
|
---|
| 84 | .I Y["""" D EN^DDIOL(" name cannot contain quotes!") Q
|
---|
| 85 | .I $E(Y,1,4)="PXRM" D EN^DDIOL(" name cannot begin with PXRM!") Q
|
---|
| 86 | .I '$$VNAME^PXRMINTR(Y,801.41) Q
|
---|
| 87 | .I $$UNIQNAME(Y,ROOT) S NAME=Y Q
|
---|
| 88 | .D EN^DDIOL(" is not a unique name!")
|
---|
| 89 | ;
|
---|
| 90 | Q:$D(DTOUT)!$D(DUOUT)
|
---|
| 91 | ;
|
---|
| 92 | ;Store the unique name
|
---|
| 93 | S DR=".01///^S X=NAME",DIE=ROOT,DA=IENN
|
---|
| 94 | D ^DIE
|
---|
| 95 | ;
|
---|
| 96 | ;Change the class to local and delete the sponsor
|
---|
| 97 | D SCAS^PXRMCOPY(801.41,IENN,"L","")
|
---|
| 98 | ;Initialize the edit history
|
---|
| 99 | D INIEH^PXRMCOPY(801.41,ROOT,IENN,IENO)
|
---|
| 100 | ;Reindex the cross-references.
|
---|
| 101 | S DIK=ROOT,DA=IENN
|
---|
| 102 | D IX^DIK
|
---|
| 103 | ;
|
---|
| 104 | W !!,"Completed copy of '"_ORGNAME_"'"
|
---|
| 105 | W !,"into '"_NAME_"'",! H 2
|
---|
| 106 | ;
|
---|
| 107 | Q
|
---|
| 108 | ;
|
---|
| 109 | ;Delete the entry just added
|
---|
| 110 | ;---------------------------
|
---|
| 111 | DELETE S DIK=ROOT,DA=IENN D ^DIK
|
---|
| 112 | W !!,"New entry not created due to invalid name!",!
|
---|
| 113 | Q
|
---|
| 114 | ;
|
---|
| 115 | ;Error Handler
|
---|
| 116 | ;-------------
|
---|
| 117 | ERR(DESC) ;
|
---|
| 118 | N ERROR,IC,REF
|
---|
| 119 | S ERROR(1)="Unable to update GUI PROCESS file : "_DESC
|
---|
| 120 | S ERROR(2)="Error in UPDATE^DIE, needs further investigation"
|
---|
| 121 | ;Move MSG into ERROR
|
---|
| 122 | S REF="MSG"
|
---|
| 123 | F IC=3:1 S REF=$Q(@REF) Q:REF="" S ERROR(IC)=REF_"="_@REF
|
---|
| 124 | ;Screen message
|
---|
| 125 | D BMES^XPDUTL(.ERROR)
|
---|
| 126 | Q
|
---|
| 127 | ;
|
---|
| 128 | ;Given ROOT return the first
|
---|
| 129 | ;---------------------------
|
---|
| 130 | GETFOIEN(ROOT) ;Return the first open IEN in ROOT. This should be called
|
---|
| 131 | ;after a call to SETSTART.
|
---|
| 132 | N ENTRY,NIEN,OIEN
|
---|
| 133 | S ENTRY=ROOT_0_")"
|
---|
| 134 | S OIEN=$P(@ENTRY,U,3)
|
---|
| 135 | S ENTRY=ROOT_OIEN_")"
|
---|
| 136 | F S NIEN=$O(@ENTRY) Q:+(NIEN-OIEN)>1 Q:+NIEN'>0 S OIEN=NIEN,ENTRY=ROOT_NIEN_")"
|
---|
| 137 | Q OIEN+1
|
---|
| 138 | ;
|
---|
| 139 | ;Use MERGE to copy ROOT(IENO into ROOT(IENN
|
---|
| 140 | ;------------------------------------------
|
---|
| 141 | MERGE(IENN,IENO,ROOT) ;
|
---|
| 142 | N DEST,SOURCE
|
---|
| 143 | ;
|
---|
| 144 | S DEST=ROOT_IENN_")"
|
---|
| 145 | ;Lock the file before merging.
|
---|
| 146 | L +@DEST:10
|
---|
| 147 | E W !,"Another user is editing this file, try later" H 2 S DUOUT=1 Q
|
---|
| 148 | S SOURCE=ROOT_IENO_")"
|
---|
| 149 | M @DEST=@SOURCE
|
---|
| 150 | ;Unlock the file
|
---|
| 151 | L -@DEST
|
---|
| 152 | Q
|
---|
| 153 | ;
|
---|
| 154 | ;Get default name
|
---|
| 155 | ;----------------
|
---|
| 156 | NAME(IEN,ORG) ;
|
---|
| 157 | N CNT,NAME,PREV
|
---|
| 158 | ;
|
---|
| 159 | S PREV=0
|
---|
| 160 | I $E(ORG,$L(ORG))=")",ORG[" (" D
|
---|
| 161 | .S PREV=+$P(ORG," (",2) S:PREV>0 ORG=$P(ORG," (",1)
|
---|
| 162 | F CNT=PREV+1:1 S NAME=ORG_" ("_CNT_")" Q:'$D(^PXRMD(801.41,"B",NAME))
|
---|
| 163 | Q NAME
|
---|
| 164 | ;
|
---|
| 165 | ;Copy selected dialog element OR reminder dialog
|
---|
| 166 | ;-----------------------------------------------
|
---|
| 167 | SEL(IENO,RDIEN) ;
|
---|
| 168 | W IORESET S VALMBCK="R"
|
---|
| 169 | N ANS,IENN,PROMPT,ROOT,TEXT,WHAT,DPOS
|
---|
| 170 | S WHAT="dialog element"
|
---|
| 171 | S ROOT="^PXRMD(801.41,"
|
---|
| 172 | S PROMPT="Select the dialog to copy: "
|
---|
| 173 | S TEXT=$P($G(^PXRMD(801.41,IENO,0)),U)
|
---|
| 174 | ;
|
---|
| 175 | I RDIEN S TEXT="Copy and replace '"_TEXT_"' "
|
---|
| 176 | I 'RDIEN S TEXT="Copy reminder dialog '"_TEXT_"' "
|
---|
| 177 | D ASK(.ANS,TEXT,2,"Y") Q:$D(DUOUT)!$D(DTOUT) Q:ANS'="Y"
|
---|
| 178 | ;Copy
|
---|
| 179 | D COPY(IENO,.IENN,RDIEN) Q:$D(DUOUT)!$D(DTOUT)
|
---|
| 180 | ;Replace dialog element in reminder dialog
|
---|
| 181 | I RDIEN D
|
---|
| 182 | .N DR,DA,DIE
|
---|
| 183 | .S DA=0
|
---|
| 184 | .F S DA=$O(^PXRMD(801.41,RDIEN,10,"D",IENO,DA)) Q:DA="" D
|
---|
| 185 | . . I $P($G(^PXRMD(801.41,RDIEN,10,DA,0)),U)=$G(DPOS) D
|
---|
| 186 | . . . S DA(1)=RDIEN
|
---|
| 187 | . . . S DR="2///"_IENN
|
---|
| 188 | . . . S DIE=ROOT_RDIEN_",10,"
|
---|
| 189 | . . . D ^DIE
|
---|
| 190 | .W !,"Replaced element'"_$P(@(ROOT_IENO_",0)"),U)_"'"
|
---|
| 191 | .W !,"with '"_$P(@(ROOT_IENN_",0)"),U)_"'"
|
---|
| 192 | .W !,"on this dialog.",!
|
---|
| 193 | ;
|
---|
| 194 | ;Quit screen for edit = yes
|
---|
| 195 | I 'RDIEN S VALMBCK="Q" Q
|
---|
| 196 | ;
|
---|
| 197 | N DIR
|
---|
| 198 | S DIR(0)="YAO"
|
---|
| 199 | S DIR("A")="Do you want to edit now "
|
---|
| 200 | S DIR("B")="Y"
|
---|
| 201 | D ^DIR
|
---|
| 202 | I $D(DIRUT) S DUOUT=1 Q
|
---|
| 203 | I $E(Y(0))'="Y" S DUOUT=1 Q
|
---|
| 204 | W !
|
---|
| 205 | ;Reset dialog element ien
|
---|
| 206 | S IENO=IENN
|
---|
| 207 | Q
|
---|
| 208 | ;
|
---|
| 209 | ;Return TRUE (1) if NAME is unique
|
---|
| 210 | ;---------------------------------
|
---|
| 211 | UNIQNAME(NAME,ROOT) ;
|
---|
| 212 | N RETVAL,REF
|
---|
| 213 | S RETVAL=1,REF=ROOT_"""B"""_","_""""_NAME_""""_")"
|
---|
| 214 | I $D(@REF) S RETVAL=0
|
---|
| 215 | Q RETVAL
|
---|