[623] | 1 | PXRMEXIU ; SLC/PKR/PJH - Utilities for installing repository entries. ;06/23/2005
|
---|
| 2 | ;;2.0;CLINICAL REMINDERS;**4**;Feb 04, 2005;Build 21
|
---|
| 3 | ;===============================================
|
---|
| 4 | DEF(FDA,NAMECHG) ;Check the reminder definition to make sure the related
|
---|
| 5 | ;reminder exists and all the findings exist.
|
---|
| 6 | N ABBR,ALIST,IEN,IENS,FILENUM,FINDING,LRD,OFINDING,PT01
|
---|
| 7 | N RRG,SPONSOR,TEXT,VERSN
|
---|
| 8 | S IENS=$O(FDA(811.9,""))
|
---|
| 9 | ;
|
---|
| 10 | ;Related reminder guideline field 1.4.
|
---|
| 11 | I $D(FDA(811.9,IENS,1.4)) D
|
---|
| 12 | . S RRG=FDA(811.9,IENS,1.4)
|
---|
| 13 | . S IEN=$$EXISTS^PXRMEXIU(811.9,RRG)
|
---|
| 14 | . I IEN=0 D
|
---|
| 15 | ..;Get replacement.
|
---|
| 16 | .. N DIC,X,Y
|
---|
| 17 | .. S TEXT(1)=" "
|
---|
| 18 | .. S TEXT(2)="The Related Reminder Guideline does not exist on your system!"
|
---|
| 19 | .. S TEXT(3)="It is "_RRG_" input a replacement or ^ to leave it empty."
|
---|
| 20 | .. D MES^XPDUTL(.TEXT)
|
---|
| 21 | ..;If this is being called during a KIDS install we need echoing on.
|
---|
| 22 | .. I $D(XPDNM) X ^%ZOSF("EON")
|
---|
| 23 | .. S DIC=811.9,DIC(0)="AEMQ"
|
---|
| 24 | .. D ^DIC
|
---|
| 25 | .. I $D(XPDNM) X ^%ZOSF("EOFF")
|
---|
| 26 | .. I Y=-1 K FDA(811.9,IENS,1.4)
|
---|
| 27 | .. E S FDA(811.9,IENS,1.4)=$P(Y,U,2)
|
---|
| 28 | ;
|
---|
| 29 | ;Sponsor field 101.
|
---|
| 30 | I $D(FDA(811.9,IENS,101)) D
|
---|
| 31 | . S SPONSOR=FDA(811.9,IENS,101)
|
---|
| 32 | . S IEN=$$FIND1^DIC(811.6,"","",SPONSOR)
|
---|
| 33 | . I IEN=0 D
|
---|
| 34 | ..;Get replacement.
|
---|
| 35 | .. N DIC,X,Y
|
---|
| 36 | .. S TEXT(1)=" "
|
---|
| 37 | .. S TEXT(2)="The Sponsor does not exist on your system!"
|
---|
| 38 | .. S TEXT(3)="It is "_SPONSOR_" input a replacement or ^ to leave it empty."
|
---|
| 39 | .. D MES^XPDUTL(.TEXT)
|
---|
| 40 | ..;If this is being called during a KIDS install we need echoing on.
|
---|
| 41 | .. I $D(XPDNM) X ^%ZOSF("EON")
|
---|
| 42 | .. S DIC=811.6,DIC(0)="AEMQ"
|
---|
| 43 | .. D ^DIC
|
---|
| 44 | .. I $D(XPDNM) X ^%ZOSF("EOFF")
|
---|
| 45 | .. I Y=-1 K FDA(811.9,IENS,101)
|
---|
| 46 | .. E S FDA(811.9,IENS,101)=$P(Y,U,2)
|
---|
| 47 | ;
|
---|
| 48 | ;Linked reminder dialog field 51.
|
---|
| 49 | S LRD=+$G(FDA(811.9,IENS,51))
|
---|
| 50 | S IEN=$$EXISTS^PXRMEXIU(801.41,LRD)
|
---|
| 51 | I IEN=0 K FDA(811.9,IENS,51)
|
---|
| 52 | ;
|
---|
| 53 | ;Search the finding multiple for replacements and missing findings.
|
---|
| 54 | D BLDALIST^PXRMVPTR(811.902,.01,.ALIST)
|
---|
| 55 | S IENS=""
|
---|
| 56 | F S IENS=$O(FDA(811.902,IENS)) Q:IENS="" D
|
---|
| 57 | . S (FINDING,OFINDING)=FDA(811.902,IENS,.01)
|
---|
| 58 | . S ABBR=$P(FINDING,".",1)
|
---|
| 59 | . S PT01=$P(FINDING,".",2)
|
---|
| 60 | . S FILENUM=$P(ALIST(ABBR),U,1)
|
---|
| 61 | . I $D(NAMECHG(FILENUM,PT01)) D
|
---|
| 62 | .. S FINDING=ABBR_"."_NAMECHG(FILENUM,PT01)
|
---|
| 63 | .. S FDA(811.902,IENS,.01)=FINDING
|
---|
| 64 | . S IEN=+$$VFIND1(FINDING,.ALIST)
|
---|
| 65 | . I IEN>0 S FDA(811.902,IENS,.01)=ABBR_".`"_IEN
|
---|
| 66 | . I IEN=0 D
|
---|
| 67 | ..;Get replacement
|
---|
| 68 | .. N DIC,DUOUT,TEXT,X,Y
|
---|
| 69 | .. S TEXT="Finding "_FINDING_" does not exist; input a replacement or ^ to quit the install."
|
---|
| 70 | .. W !,TEXT
|
---|
| 71 | .. S DIC=FILENUM
|
---|
| 72 | .. I DIC="60" S DIC("S")="I $$LABPANEL^PXRMEXIU(Y)"
|
---|
| 73 | .. S DIC(0)="AEMNQ"
|
---|
| 74 | .. S Y=-1
|
---|
| 75 | .. F Q:+Y'=-1 D
|
---|
| 76 | ...;If this is being called during a KIDS install we need echoing on.
|
---|
| 77 | ... I $D(XPDNM) X ^%ZOSF("EON")
|
---|
| 78 | ... D ^DIC
|
---|
| 79 | ... I $D(XPDNM) X ^%ZOSF("EOFF")
|
---|
| 80 | ... I $D(DUOUT) S Y="" K FDA
|
---|
| 81 | .. I Y="" Q
|
---|
| 82 | .. S FINDING=ABBR_"."_$P(Y,U,2),FDA(811.902,IENS,.01)=FINDING
|
---|
| 83 | .;Save the finding information for the history.
|
---|
| 84 | . S ^TMP("PXRMEXIA",$J,"DEFF",$P(IENS,",",1),OFINDING)=FINDING
|
---|
| 85 | .;Save changes to Orderable items for dialog
|
---|
| 86 | . I FILENUM=101.43,OFINDING'=FINDING
|
---|
| 87 | . S NAMECHG(FILENUM,$P(OFINDING,".",2))=$P(FINDING,".",2)
|
---|
| 88 | S VERSN=$$GETTAGV^PXRMEXU3(^PXD(811.8,PXRMRIEN,100,3,0),"<PACKAGE_VERSION>")
|
---|
| 89 | I VERSN=1.5 D CEFD^PXRMDATE(.FDA)
|
---|
| 90 | Q
|
---|
| 91 | ;
|
---|
| 92 | ;===============================================
|
---|
| 93 | EXISTS(FILENUM,NAME,FLAG) ;Check for existence of an entry with the
|
---|
| 94 | ;same name. Return 0 for null name
|
---|
| 95 | I NAME="" Q 0
|
---|
| 96 | ;Return the ien if it does, 0 otherwise.
|
---|
| 97 | N IEN
|
---|
| 98 | I FILENUM=0 S IEN=$$EXISTS^PXRMEXCF(NAME) Q
|
---|
| 99 | N FLAGS,RESULT
|
---|
| 100 | S RESULT=NAME
|
---|
| 101 | ;Special lookup for files 80 and 80.1, they do not have a standard "B"
|
---|
| 102 | ;cross-reference.
|
---|
| 103 | I (FILENUM=80)!(FILENUM=80.1) D
|
---|
| 104 | .;Name may or may not have the necessary space appended, make sure
|
---|
| 105 | .;it does.
|
---|
| 106 | . S RESULT=$S($E(NAME,$L(NAME))'=" ":NAME_" ",1:NAME)
|
---|
| 107 | . S FLAGS="MX"
|
---|
| 108 | E S FLAGS="BX"
|
---|
| 109 | I FILENUM=811.6 S FLAGS=FLAGS_"U"
|
---|
| 110 | ;File 8927.1 only allows upper case .01s.
|
---|
| 111 | I FILENUM=8927.1 S RESULT=$$UP^XLFSTR(NAME)
|
---|
| 112 | S IEN=$$FIND1^DIC(FILENUM,"",FLAGS,RESULT)
|
---|
| 113 | I +IEN>0 Q IEN
|
---|
| 114 | ;If IEN is null then there was an error try FIND^DIC.
|
---|
| 115 | N FILENAME,LIST,MSG,NFOUND,TEXT
|
---|
| 116 | D FIND^DIC(FILENUM,"","",FLAGS,NAME,"","","","","LIST","MSG")
|
---|
| 117 | S NFOUND=+$P(LIST("DILIST",0),U,1)
|
---|
| 118 | I NFOUND=0 Q 0
|
---|
| 119 | I NFOUND=1 Q LIST("DILIST",2,1)
|
---|
| 120 | ;Multiple entries with the same name found.
|
---|
| 121 | S FILENAME=$$GET1^DID(FILENUM,"","","NAME")
|
---|
| 122 | S TEXT(1)="Warning there are "_NFOUND_" "_FILENAME_" entries with the name "_NAME_"!"
|
---|
| 123 | S TEXT(2)="If this is used as a finding, and it is not resolved by FileMan during"
|
---|
| 124 | S TEXT(3)="installation, any component using this finding will not install."
|
---|
| 125 | D EN^DDIOL(.TEXT)
|
---|
| 126 | I $G(FLAG)="W" H 3 Q LIST("DILIST",2,1)
|
---|
| 127 | I NFOUND>1 S IEN=$$GETIEN^PXRMEXU0(NFOUND,.LIST)
|
---|
| 128 | Q IEN
|
---|
| 129 | ;
|
---|
| 130 | ;===============================================
|
---|
| 131 | GETACT(CHOICES,DIR) ;Get the action
|
---|
| 132 | ;If CHOICES is empty the only action is skip.
|
---|
| 133 | I CHOICES="" Q "S"
|
---|
| 134 | N DIROUT,DIRUT,DTOUT,DUOUT,X,Y
|
---|
| 135 | S DIR(0)="S"_U
|
---|
| 136 | I CHOICES["C" S DIR(0)=DIR(0)_"C:Create a new entry by copying to a new name"
|
---|
| 137 | I CHOICES["D" S DIR(0)=DIR(0)_";D:Delete (from the reminder/dialog)"
|
---|
| 138 | I CHOICES["I" S DIR(0)=DIR(0)_";I:Install"
|
---|
| 139 | I CHOICES["M" S DIR(0)=DIR(0)_";M:Merge findings"
|
---|
| 140 | I CHOICES["O" S DIR(0)=DIR(0)_";O:Overwrite the current entry"
|
---|
| 141 | I CHOICES["P" S DIR(0)=DIR(0)_";P:Replace (in the reminder/dialog) with an existing entry"
|
---|
| 142 | I CHOICES["Q" S DIR(0)=DIR(0)_";Q:Quit the install"
|
---|
| 143 | I CHOICES["R" S DIR(0)=DIR(0)_";R:Restart"
|
---|
| 144 | I CHOICES["S" S DIR(0)=DIR(0)_";S:Skip, do not install this entry"
|
---|
| 145 | ;If this is being called during a KIDS install we need echoing on.
|
---|
| 146 | I $D(XPDNM) X ^%ZOSF("EON")
|
---|
| 147 | D ^DIR
|
---|
| 148 | I $D(XPDNM) X ^%ZOSF("EOFF")
|
---|
| 149 | I $D(DIROUT)!$D(DIRUT) S Y="S"
|
---|
| 150 | I $D(DTOUT)!($D(DUOUT)) S Y="S"
|
---|
| 151 | Q Y
|
---|
| 152 | ;
|
---|
| 153 | ;===============================================
|
---|
| 154 | GETNAME(MIN,MAX) ;Get a name to use.
|
---|
| 155 | N DIR,DIROUT,DIRUT,DTOUT,DUOUT,X,Y
|
---|
| 156 | S DIR(0)="FAOU"_U_MIN_":"_MAX
|
---|
| 157 | S DIR("A")="Input the new name: "
|
---|
| 158 | D ^DIR
|
---|
| 159 | I $D(DIROUT)!$D(DIRUT) Q ""
|
---|
| 160 | I $D(DTOUT)!$D(DUOUT) Q ""
|
---|
| 161 | Q Y
|
---|
| 162 | ;
|
---|
| 163 | ;===============================================
|
---|
| 164 | GETUNAME(ATTR) ;Get a unique name to use, ATTR holds the attributes.
|
---|
| 165 | N IEN,NEWPT01,TEXT
|
---|
| 166 | GNEW S NEWPT01=$$GETNAME(ATTR("MIN FIELD LENGTH"),ATTR("FIELD LENGTH"))
|
---|
| 167 | S IEN=+$$EXISTS(ATTR("FILE NUMBER"),NEWPT01)
|
---|
| 168 | I IEN>0 D G GNEW
|
---|
| 169 | . S TEXT=ATTR("FILE NAME")_" entry "_NEWPT01_" already exists, what do you want to do?"
|
---|
| 170 | . D EN^DDIOL(TEXT)
|
---|
| 171 | E S ATTR("NAME")=NEWPT01
|
---|
| 172 | Q NEWPT01
|
---|
| 173 | ;
|
---|
| 174 | ;===============================================
|
---|
| 175 | HF(FDA,NAMECHG) ;Check the health factor to make sure a category does not
|
---|
| 176 | ;have a category.
|
---|
| 177 | N IENS
|
---|
| 178 | S IENS=$O(FDA(9999999.64,""))
|
---|
| 179 | I IENS="" Q
|
---|
| 180 | I FDA(9999999.64,IENS,.1)="CATEGORY" K FDA(9999999.64,IENS,.03)
|
---|
| 181 | Q
|
---|
| 182 | ;
|
---|
| 183 | ;===============================================
|
---|
| 184 | LABPANEL(IEN) ;
|
---|
| 185 | N NODE
|
---|
| 186 | S NODE=^LAB(60,IEN,0)
|
---|
| 187 | I $P(NODE,U,4)'["CH" Q 1
|
---|
| 188 | I $P(NODE,U,5)="" Q 0
|
---|
| 189 | Q 1
|
---|
| 190 | ;
|
---|
| 191 | ;===============================================
|
---|
| 192 | REXISTS(NAME,DATEP) ;See if this Exchange File entry already exists.
|
---|
| 193 | N IEN,LUVALUE
|
---|
| 194 | S LUVALUE(1)=NAME
|
---|
| 195 | S LUVALUE(2)=DATEP
|
---|
| 196 | S IEN=+$$FIND1^DIC(811.8,"","KU",.LUVALUE)
|
---|
| 197 | Q IEN
|
---|
| 198 | ;
|
---|
| 199 | ;===============================================
|
---|
| 200 | SAME(ATTR,TA,NAME) ;Check existing entry and entry in packed reminder
|
---|
| 201 | ;definition to see if they are identical.
|
---|
| 202 | ;Present version only works for computed finding routines, other
|
---|
| 203 | ;types of entries can be added later.
|
---|
| 204 | N SAME
|
---|
| 205 | I ATTR("FILE NAME")="COMPUTED FINDING ROUTINE" S SAME=$$SAME^PXRMEXCF(.ATTR,.TA,NAME)
|
---|
| 206 | E S SAME=1
|
---|
| 207 | Q SAME
|
---|
| 208 | ;
|
---|
| 209 | ;===============================================
|
---|
| 210 | TERM(FDA,NAMECHG) ;Check the reminder term to make sure all the
|
---|
| 211 | ;findings exist.
|
---|
| 212 | N ABBR,ALIST,IEN,IENS,FILENUM,FINDING,OFINDING,PT01
|
---|
| 213 | ;Search the finding multiple for replacements and missing findings.
|
---|
| 214 | D BLDALIST^PXRMVPTR(811.52,.01,.ALIST)
|
---|
| 215 | S IENS=""
|
---|
| 216 | F S IENS=$O(FDA(811.52,IENS)) Q:IENS="" D
|
---|
| 217 | . S (FINDING,OFINDING)=FDA(811.52,IENS,.01)
|
---|
| 218 | . S ABBR=$P(FINDING,".",1)
|
---|
| 219 | . S PT01=$P(FINDING,".",2)
|
---|
| 220 | . S FILENUM=$P(ALIST(ABBR),U,1)
|
---|
| 221 | . I $D(NAMECHG(FILENUM,PT01)) D
|
---|
| 222 | .. S FINDING=ABBR_"."_NAMECHG(FILENUM,PT01)
|
---|
| 223 | .. S FDA(811.52,IENS,.01)=FINDING
|
---|
| 224 | . S IEN=+$$VFIND1(FINDING,.ALIST)
|
---|
| 225 | . I IEN>0 S FDA(811.52,IENS,.01)=ABBR_".`"_IEN
|
---|
| 226 | . I IEN=0 D
|
---|
| 227 | ..;Get replacement
|
---|
| 228 | .. N DIC,DUOUT,TEXT,X,Y
|
---|
| 229 | .. S TEXT="Finding "_FINDING_" does not exist; input a replacement or ^ to quit the install."
|
---|
| 230 | .. D BMES^XPDUTL(TEXT)
|
---|
| 231 | .. S DIC=FILENUM
|
---|
| 232 | .. I DIC="60" S DIC("S")="I $$LABPANEL^PXRMEXIU(Y)"
|
---|
| 233 | .. S DIC(0)="AEMNQ"
|
---|
| 234 | .. S Y=-1
|
---|
| 235 | .. F Q:+Y'=-1 D
|
---|
| 236 | ...;If this is being called during a KIDS install we need echoing on.
|
---|
| 237 | ... I $D(XPDNM) X ^%ZOSF("EON")
|
---|
| 238 | ... D ^DIC
|
---|
| 239 | ... I $D(XPDNM) X ^%ZOSF("EOFF")
|
---|
| 240 | ... I $D(DUOUT) D
|
---|
| 241 | .... S Y=""
|
---|
| 242 | .... K FDA
|
---|
| 243 | .. I Y="" K FDA(811.52,IENS)
|
---|
| 244 | .. E D
|
---|
| 245 | ... S FINDING=ABBR_"."_$P(Y,U,2)
|
---|
| 246 | ... S FDA(811.52,IENS,.01)=FINDING
|
---|
| 247 | .;Save the finding information for the history.
|
---|
| 248 | . S ^TMP("PXRMEXIA",$J,"TRMF",$P(IENS,",",1),OFINDING)=FINDING
|
---|
| 249 | Q
|
---|
| 250 | ;
|
---|
| 251 | ;===============================================
|
---|
| 252 | VFIND1(VPTR,ALIST) ;Given a variable pointer of the form ABBR.NAME
|
---|
| 253 | ;and ALIST which contains the link between abbreviations and files
|
---|
| 254 | ;return the IEN if it exists and 0 if no match if found.
|
---|
| 255 | N ABBR,IEN,FILENUM,PT01,RESULT
|
---|
| 256 | S IEN=0
|
---|
| 257 | S ABBR=$P(VPTR,".",1)
|
---|
| 258 | S PT01=$P(VPTR,".",2,99)
|
---|
| 259 | S FILENUM=$P(ALIST(ABBR),U,1)
|
---|
| 260 | S IEN=$$EXISTS(FILENUM,PT01)
|
---|
| 261 | Q IEN
|
---|
| 262 | ;
|
---|