| 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 | 
|---|