| [613] | 1 | DVBA278P ;ALB/GTS - PATCH DVBA*2.7*8 TO CLEANUP 396.1 DD ; 4/29/96
 | 
|---|
 | 2 |  ;;2.7;AMIE;**8**;Apr 10, 1995
 | 
|---|
 | 3 |  ;
 | 
|---|
 | 4 | TEXT ; write lines for user
 | 
|---|
 | 5 |  ;; This routine will loop through all fields in the AMIE SITE PARAMETER
 | 
|---|
 | 6 |  ;; file looking for fields not supported with class I software.  When
 | 
|---|
 | 7 |  ;; such a field is found, the installer will be asked if they want to
 | 
|---|
 | 8 |  ;; delete the field.  When all fields are checked, a message will be
 | 
|---|
 | 9 |  ;; sent to the installer indicating what they selected to delete.
 | 
|---|
 | 10 |  ;; This message serves as record of what was selected for a particular
 | 
|---|
 | 11 |  ;; install and can be used to check if existing class III fields are
 | 
|---|
 | 12 |  ;; needed.  The user may abort the install by entering an '^' at
 | 
|---|
 | 13 |  ;; the Device selection prompt.  If you are unsure that the fields
 | 
|---|
 | 14 |  ;; you have selected for deletion are not used by any class III
 | 
|---|
 | 15 |  ;; programming at your site, PLEASE '^' AT THE DEVICE SELECTION
 | 
|---|
 | 16 |  ;; PROMPT AND REVIEW THE MAIL MESSAGE THAT IS DELIVERED.  You may
 | 
|---|
 | 17 |  ;; rerun the install at any time after you have reviewed the mail
 | 
|---|
 | 18 |  ;; message.
 | 
|---|
 | 19 |  ;; 
 | 
|---|
 | 20 |  ;;QUIT
 | 
|---|
 | 21 |  ;
 | 
|---|
 | 22 | ENVCHKQ QUIT  ;** Quit the environment check.  Only called so routine is
 | 
|---|
 | 23 |  ;      ** available from Pre-Init questions.
 | 
|---|
 | 24 |  ;
 | 
|---|
 | 25 | QUEST ;** Entry point - Question Class III fields
 | 
|---|
 | 26 |  N TXTVAR
 | 
|---|
 | 27 |  D KVARS
 | 
|---|
 | 28 |  D MES^XPDUTL(" "),MES^XPDUTL(" ")
 | 
|---|
 | 29 |  F I=1:1 S TXTVAR=$P($T(TEXT+I),";;",2) Q:TXTVAR="QUIT"  DO
 | 
|---|
 | 30 |  .S:TXTVAR="" TXTVAR=" "
 | 
|---|
 | 31 |  .D MES^XPDUTL(TXTVAR)
 | 
|---|
 | 32 |  D START
 | 
|---|
 | 33 |  Q
 | 
|---|
 | 34 |  ;
 | 
|---|
 | 35 |  ;
 | 
|---|
 | 36 | START ;** Start processing
 | 
|---|
 | 37 |  S (I,NODE,COUNT,QUESDA)=0
 | 
|---|
 | 38 |  ;
 | 
|---|
 | 39 |  ;** Look for unsupported fields
 | 
|---|
 | 40 |  D MES^XPDUTL(" ")
 | 
|---|
 | 41 |  D MES^XPDUTL("Inspecting file 396.1 for unsupported fields.")
 | 
|---|
 | 42 |  ;
 | 
|---|
 | 43 |  ;** Class I fld array
 | 
|---|
 | 44 |  F FILE=396.1,396.12,396.13,396.14,396.115 DO
 | 
|---|
 | 45 |  .F I=(I+1):1 S FIELDVAR=$P($T(FIELDS+I),";;",2) Q:(FIELDVAR="QUIT")  DO
 | 
|---|
 | 46 |  ..S CLASSI(FILE,FIELDVAR)=""
 | 
|---|
 | 47 |  ;
 | 
|---|
 | 48 |  ;** Fields at site
 | 
|---|
 | 49 |  F FILE=396.1,396.12,396.13,396.14,396.115 DO
 | 
|---|
 | 50 |  .F FLDDA=0:0 S FLDDA=$O(^DD(FILE,FLDDA)) Q:'FLDDA  DO
 | 
|---|
 | 51 |  ..I $D(^DD(FILE,FLDDA,0)),'$D(CLASSI(FILE,FLDDA)) DO
 | 
|---|
 | 52 |  ...S CLASSIII(FILE,FLDDA)=$P(^DD(FILE,FLDDA,0),"^",1)_"^"_$P(^(0),"^",4)
 | 
|---|
 | 53 |  ;
 | 
|---|
 | 54 |  ;** If no Class III fields
 | 
|---|
 | 55 |  I '$D(CLASSIII) DO
 | 
|---|
 | 56 |  .D MES^XPDUTL(" ")
 | 
|---|
 | 57 |  .D MES^XPDUTL(".....no unsupported fields were found!")
 | 
|---|
 | 58 |  ;
 | 
|---|
 | 59 |  ;** Nullify all XPDQUES nodes
 | 
|---|
 | 60 |  S QUESSUB=""
 | 
|---|
 | 61 |  F  S QUESSUB=$O(XPDQUES(QUESSUB)) Q:(QUESSUB']"")  DO
 | 
|---|
 | 62 |  .S XPDQUES(QUESSUB)=""
 | 
|---|
 | 63 |  .S XPDQUES(QUESSUB,"A")=""
 | 
|---|
 | 64 |  ;
 | 
|---|
 | 65 |  ;** Set up XPDQUES nodes
 | 
|---|
 | 66 |  S FILE=""
 | 
|---|
 | 67 |  F  S FILE=$O(CLASSIII(FILE)) Q:('FILE!($D(DVBAOUT)))  DO
 | 
|---|
 | 68 |  .S FLDDA=""
 | 
|---|
 | 69 |  .F  S FLDDA=$O(CLASSIII(FILE,FLDDA)) Q:('FLDDA!($D(DVBAOUT)))  DO
 | 
|---|
 | 70 |  ..W !!!,?1,"Field #",?12,"Field Name",?45,"Node;Piece"
 | 
|---|
 | 71 |  ..W !,?3,FLDDA
 | 
|---|
 | 72 |  ..W ?12,$P(CLASSIII(FILE,FLDDA),U,1)
 | 
|---|
 | 73 |  ..W ?48,$P(CLASSIII(FILE,FLDDA),U,2)
 | 
|---|
 | 74 |  ..S DIR(0)="YAO^",DIR("A")="Do you want to delete this field? "
 | 
|---|
 | 75 |  ..S DIR("B")="YES" D ^DIR
 | 
|---|
 | 76 |  ..I $D(DTOUT)!($D(DUOUT)!($D(DIROUT))) S DVBAOUT=""
 | 
|---|
 | 77 |  ..I '$D(DVBAOUT)&(+Y=1) DO
 | 
|---|
 | 78 |  ...S QUESDA=QUESDA+1
 | 
|---|
 | 79 |  ...S QUESSUB="PRE"_QUESDA
 | 
|---|
 | 80 |  ...S XPDQUES(QUESSUB)=$P(CLASSIII(FILE,FLDDA),U,1)_"^"_FLDDA_"^"_FILE
 | 
|---|
 | 81 |  ...S XPDQUES(QUESSUB,"A")=$P(CLASSIII(FILE,FLDDA),U,1)_" selected for deletion!"
 | 
|---|
 | 82 |  ..K DIR,X,Y
 | 
|---|
 | 83 |  I $D(DVBAOUT) K XPDQUES
 | 
|---|
 | 84 |  I '$D(DVBAOUT) D MAIL
 | 
|---|
 | 85 | KVARS K COUNT,DFN,I,NODE,NODENM,FIELDVAR,FLDDA,FILE,QUESDA
 | 
|---|
 | 86 |  K CLASSI,CLASSIII,DVBAOUT
 | 
|---|
 | 87 |  K DTOUT,DUOUT,DIROUT
 | 
|---|
 | 88 |  Q
 | 
|---|
 | 89 |  ;
 | 
|---|
 | 90 | MAIL ; mail message of bogus nodes found
 | 
|---|
 | 91 |  N DIFROM
 | 
|---|
 | 92 |  S XMY(DUZ)="",XMDUZ=.5
 | 
|---|
 | 93 |  S XMSUB="AMIE SITE PARAMETER file field cleanup"
 | 
|---|
 | 94 |  S XMTEXT="^TMP(""DVBA V2.7 P8 E-MAIL"","_$J_","
 | 
|---|
 | 95 |  S I=0,COUNT=0
 | 
|---|
 | 96 |  S TEXT="This Mailman message records the Class III fields selected for deletion"
 | 
|---|
 | 97 |  D LINE(TEXT)
 | 
|---|
 | 98 |  S TEXT=" with patch DVBA*2.7*8.  These fields are only deleted if/when the"
 | 
|---|
 | 99 |  D LINE(TEXT)
 | 
|---|
 | 100 |  S TEXT=" installation was/is completed."
 | 
|---|
 | 101 |  D LINE(TEXT)
 | 
|---|
 | 102 |  D LINE(" ")
 | 
|---|
 | 103 |  S TEXT=" The following fields were selected to delete from the AMIE SITE"
 | 
|---|
 | 104 |  D LINE(TEXT)
 | 
|---|
 | 105 |  S TEXT="   PARAMETER file (#396.1) (Multiples included):"
 | 
|---|
 | 106 |  D LINE(TEXT)
 | 
|---|
 | 107 |  D LINE(" ")
 | 
|---|
 | 108 |  I '$D(XPDQUES) DO
 | 
|---|
 | 109 |  .S TEXT="     No fields selected for deletion!"
 | 
|---|
 | 110 |  .D LINE(TEXT)
 | 
|---|
 | 111 |  I $D(XPDQUES("PRE1")),(XPDQUES("PRE1")="") DO
 | 
|---|
 | 112 |  .S TEXT="     No fields selected for deletion!"
 | 
|---|
 | 113 |  .D LINE(TEXT)
 | 
|---|
 | 114 |  I $D(XPDQUES("PRE1")),(XPDQUES("PRE1")'="") DO
 | 
|---|
 | 115 |  .S TEXT="   FIELD NAME                        FIELD #        FILE #"
 | 
|---|
 | 116 |  .D LINE(TEXT)
 | 
|---|
 | 117 |  .S TEXT="   ==========                        =======        ======"
 | 
|---|
 | 118 |  .D LINE(TEXT)
 | 
|---|
 | 119 |  .S I="PRE0"
 | 
|---|
 | 120 |  .F  S I=$O(XPDQUES(I)) Q:(I']"")  D
 | 
|---|
 | 121 |  ..S (BLANK1,BLANK2)=""
 | 
|---|
 | 122 |  ..S $P(BLANK1," ",(37-$L($P(XPDQUES(I),"^",1))))=""
 | 
|---|
 | 123 |  ..S TEXT="   "_$P(XPDQUES(I),"^",1)_BLANK1_$P(XPDQUES(I),"^",2)
 | 
|---|
 | 124 |  ..S $P(BLANK2," ",(53-$L(TEXT)))=""
 | 
|---|
 | 125 |  ..S TEXT=TEXT_BLANK2_$P(XPDQUES(I),"^",3)
 | 
|---|
 | 126 |  ..D LINE(TEXT)
 | 
|---|
 | 127 |  D ^XMD
 | 
|---|
 | 128 |  K XMDUZ,XMY,XMTEXT,XMSUB,BLANK1,BLANK2,TEXT,QUESSUB
 | 
|---|
 | 129 |  K ^TMP("DVBA V2.7 P8 E-MAIL",$J)
 | 
|---|
 | 130 |  Q
 | 
|---|
 | 131 |  ;
 | 
|---|
 | 132 |  ;
 | 
|---|
 | 133 | LINE(TEXT)      ; add line to array for e-mail
 | 
|---|
 | 134 |  S COUNT=COUNT+1,^TMP("DVBA V2.7 P8 E-MAIL",$J,COUNT)=TEXT
 | 
|---|
 | 135 |  Q
 | 
|---|
 | 136 |  ;
 | 
|---|
 | 137 | FLDCLEAN ;**Delete selected fields
 | 
|---|
 | 138 |  I $D(XPDQUES) DO
 | 
|---|
 | 139 |  .N I,SITEDA,MULTDA,FLDDA,FILEDA1,NODE,CLEANFLD
 | 
|---|
 | 140 |  .S SITEDA=0
 | 
|---|
 | 141 |  .S SITEDA=$O(^DVB(396.1,SITEDA))
 | 
|---|
 | 142 |  .S I="PRE0"
 | 
|---|
 | 143 |  .F  S I=$O(XPDQUES(I)) Q:(I']"")  Q:(XPDQUES(I)="")  D
 | 
|---|
 | 144 |  ..S FILEDA1=$P(XPDQUES(I),"^",3)
 | 
|---|
 | 145 |  ..S FLDDA=$P(XPDQUES(I),"^",2)
 | 
|---|
 | 146 |  ..;
 | 
|---|
 | 147 |  ..;** Remove data in fields deleted
 | 
|---|
 | 148 |  ..I FILEDA1=396.1 DO
 | 
|---|
 | 149 |  ...S DIE="^DVB(396.1,",DA=SITEDA
 | 
|---|
 | 150 |  ...S DR=FLDDA_"////@"
 | 
|---|
 | 151 |  ...D ^DIE
 | 
|---|
 | 152 |  ...K DIE,DA,DR
 | 
|---|
 | 153 |  ..I FILEDA1'=396.1 DO
 | 
|---|
 | 154 |  ...S (CLEANFLD,MULTDA)=0
 | 
|---|
 | 155 |  ...S MULTDA=$O(^DD(396.1,"SB",FILEDA1,0))
 | 
|---|
 | 156 |  ...S:MULTDA CLEANFLD=1,NODE=$P($P(^DD(396.1,MULTDA,0),"^",4),";",1)
 | 
|---|
 | 157 |  ...I CLEANFLD DO
 | 
|---|
 | 158 |  ....S MULTDA=0
 | 
|---|
 | 159 |  ....F  S MULTDA=$O(^DVB(396.1,SITEDA,NODE,MULTDA)) Q:'MULTDA  DO
 | 
|---|
 | 160 |  .....S DIE="^DVB(396.1,"_SITEDA_","_NODE_","
 | 
|---|
 | 161 |  .....S DA=MULTDA,DA(1)=SITEDA
 | 
|---|
 | 162 |  .....S DR=FLDDA_"////@"
 | 
|---|
 | 163 |  .....D ^DIE
 | 
|---|
 | 164 |  .....K DIE,DA,DR
 | 
|---|
 | 165 |  ..;
 | 
|---|
 | 166 |  ..;** Remove from DD
 | 
|---|
 | 167 |  ..S DA=FLDDA
 | 
|---|
 | 168 |  ..S DA(1)=FILEDA1
 | 
|---|
 | 169 |  ..S DIK="^DD("_DA(1)_","
 | 
|---|
 | 170 |  ..D ^DIK
 | 
|---|
 | 171 |  ..K DA,DIK
 | 
|---|
 | 172 |  Q
 | 
|---|
 | 173 |  ;
 | 
|---|
 | 174 | FIELDS ; list of fields in 396.1
 | 
|---|
 | 175 |  ;;.01
 | 
|---|
 | 176 |  ;;.11
 | 
|---|
 | 177 |  ;;2
 | 
|---|
 | 178 |  ;;3
 | 
|---|
 | 179 |  ;;4
 | 
|---|
 | 180 |  ;;6
 | 
|---|
 | 181 |  ;;7
 | 
|---|
 | 182 |  ;;8
 | 
|---|
 | 183 |  ;;9
 | 
|---|
 | 184 |  ;;10
 | 
|---|
 | 185 |  ;;11
 | 
|---|
 | 186 |  ;;12
 | 
|---|
 | 187 |  ;;14
 | 
|---|
 | 188 |  ;;15
 | 
|---|
 | 189 |  ;;16
 | 
|---|
 | 190 |  ;;17
 | 
|---|
 | 191 |  ;;18
 | 
|---|
 | 192 |  ;;50
 | 
|---|
 | 193 |  ;;90
 | 
|---|
 | 194 |  ;;QUIT
 | 
|---|
 | 195 | P12 ;;.01
 | 
|---|
 | 196 |  ;;QUIT
 | 
|---|
 | 197 | P13 ;;.01
 | 
|---|
 | 198 |  ;;1
 | 
|---|
 | 199 |  ;;QUIT
 | 
|---|
 | 200 | P14 ;;.01
 | 
|---|
 | 201 |  ;;1
 | 
|---|
 | 202 |  ;;QUIT
 | 
|---|
 | 203 | P115 ;;.01
 | 
|---|
 | 204 |  ;;QUIT
 | 
|---|