| 1 | HDI1000A ;BPFO/JRP - HDI v1.0 POST-INSTALL ROUTINE;2/17/2005 | 
|---|
| 2 | ;;1.0;HEALTH DATA & INFORMATICS;;Feb 22, 2005 | 
|---|
| 3 | ; | 
|---|
| 4 | POST ;Main entry point for post-install routine | 
|---|
| 5 | ; Input: None | 
|---|
| 6 | ;        All variables set by Kernel for KIDS post-installs | 
|---|
| 7 | ;Output: None | 
|---|
| 8 | N HDIMSG | 
|---|
| 9 | S HDIMSG(1)=" " | 
|---|
| 10 | S HDIMSG(2)="~~~~~~~~~~~~~~~~~~~~" | 
|---|
| 11 | S HDIMSG(3)="Post-Installation (POST^HDI1000A) will now be run" | 
|---|
| 12 | S HDIMSG(4)=" " | 
|---|
| 13 | D MES^XPDUTL(.HDIMSG) K HDIMSG | 
|---|
| 14 | I '$$SERVERS^HDI1000B() D PSTHALT Q | 
|---|
| 15 | I '$$ATTBUL^HDI1000B() D PSTHALT Q | 
|---|
| 16 | I '$$ATTREM^HDI1000B() D PSTHALT Q | 
|---|
| 17 | I '$$SYSPAR() D PSTHALT Q | 
|---|
| 18 | I '$$VUID() D PSTHALT Q | 
|---|
| 19 | S HDIMSG(1)=" " | 
|---|
| 20 | S HDIMSG(2)="Post-Installation ran to completion" | 
|---|
| 21 | S HDIMSG(3)="~~~~~~~~~~~~~~~~~~~~" | 
|---|
| 22 | S HDIMSG(4)=" " | 
|---|
| 23 | D MES^XPDUTL(.HDIMSG) K HDIMSG | 
|---|
| 24 | Q | 
|---|
| 25 | ; | 
|---|
| 26 | PSTHALT ;Print post-install halted text | 
|---|
| 27 | N HDIMSG | 
|---|
| 28 | S HDIMSG(1)=" " | 
|---|
| 29 | S HDIMSG(2)="*****" | 
|---|
| 30 | S HDIMSG(3)="***** Post-installation has been halted" | 
|---|
| 31 | S HDIMSG(4)="***** Please contact Enterprise VistA Support" | 
|---|
| 32 | S HDIMSG(5)="*****" | 
|---|
| 33 | S HDIMSG(6)=" " | 
|---|
| 34 | D MES^XPDUTL(.HDIMSG) | 
|---|
| 35 | Q | 
|---|
| 36 | ; | 
|---|
| 37 | SYSPAR() ;Initialize HDIS System and HDIS Parameter files | 
|---|
| 38 | ; Input: None | 
|---|
| 39 | ;Output: 0 = Stop post-install (error) | 
|---|
| 40 | ;        1 = Continue with post-install | 
|---|
| 41 | N FACNUM,DOMAIN,SYSTYPE,X,SYSPTR,HDIMSG,PRAMPTR | 
|---|
| 42 | ;Determine system information | 
|---|
| 43 | S FACNUM=$$FACNUM^HDISVF01() | 
|---|
| 44 | S DOMAIN=$G(^XMB("NETNAME")) | 
|---|
| 45 | S SYSTYPE=$$PROD^XUPROD() | 
|---|
| 46 | S HDIMSG(1)=" " | 
|---|
| 47 | S HDIMSG(2)="The following information concerning this system has been" | 
|---|
| 48 | S HDIMSG(3)="determined and will be used to initialize the HDIS SYSTEM" | 
|---|
| 49 | S HDIMSG(4)="(#7118.21) and HDIS PARAMETER (#7118.29) files" | 
|---|
| 50 | S HDIMSG(5)=" " | 
|---|
| 51 | S HDIMSG(6)="  Facility Number: "_FACNUM | 
|---|
| 52 | S HDIMSG(7)="   MailMan Domain: "_DOMAIN | 
|---|
| 53 | S HDIMSG(8)="      System Type: "_$S(SYSTYPE:"Production",1:"Test") | 
|---|
| 54 | S HDIMSG(9)=" " | 
|---|
| 55 | D MES^XPDUTL(.HDIMSG) K HDIMSG | 
|---|
| 56 | ;Create entry in HDIS System file | 
|---|
| 57 | D BMES^XPDUTL("Creating entry in HDIS SYSTEM file") | 
|---|
| 58 | I '$$FINDSYS^HDISVF07(DOMAIN,FACNUM,SYSTYPE,1,.SYSPTR) D  Q 0 | 
|---|
| 59 | .S HDIMSG(1)="**" | 
|---|
| 60 | .S HDIMSG(2)="** Unable to create entry" | 
|---|
| 61 | .S HDIMSG(3)="** Post-installation will be halted" | 
|---|
| 62 | .S HDIMSG(4)="**" | 
|---|
| 63 | .D MES^XPDUTL(.HDIMSG) K HDIMSG | 
|---|
| 64 | D MES^XPDUTL("Entry number "_SYSPTR_" created") | 
|---|
| 65 | ;Create entry in HDIS Parameter file | 
|---|
| 66 | D BMES^XPDUTL("Creating entry in HDIS PARAMETER file") | 
|---|
| 67 | S PRAMPTR=$$PARAMINI^HDISVF10(SYSPTR) | 
|---|
| 68 | I 'PRAMPTR D  Q 0 | 
|---|
| 69 | .S HDIMSG(1)="**" | 
|---|
| 70 | .S HDIMSG(2)="** Unable to create entry" | 
|---|
| 71 | .S HDIMSG(3)="** Post-installation will be halted" | 
|---|
| 72 | .S HDIMSG(4)="**" | 
|---|
| 73 | .D MES^XPDUTL(.HDIMSG) K HDIMSG | 
|---|
| 74 | D MES^XPDUTL("Entry number "_PRAMPTR_" created") | 
|---|
| 75 | ;Done if this is not FORUM | 
|---|
| 76 | I DOMAIN'="FORUM.VA.GOV" Q 1 | 
|---|
| 77 | ;This is FORUM - make it a server | 
|---|
| 78 | D BMES^XPDUTL("Making FORUM a server") | 
|---|
| 79 | D SETTYPE^HDISVF02(2,SYSPTR) | 
|---|
| 80 | I (+$$GETTYPE^HDISVF02(SYSPTR))'=2 D | 
|---|
| 81 | .S HDIMSG(1)="**" | 
|---|
| 82 | .S HDIMSG(2)="** Unable to change system type to SERVER" | 
|---|
| 83 | .S HDIMSG(3)="**" | 
|---|
| 84 | .D MES^XPDUTL(.HDIMSG) K HDIMSG | 
|---|
| 85 | ;Set Last Non-Standard VUID field | 
|---|
| 86 | I '$$GETNSVL^HDISVF03(SYSPTR) S X=$$SET^HDISVF02(7118.29,51,PRAMPTR_",",4536403,1) | 
|---|
| 87 | I '$$GETNSVL^HDISVF03(SYSPTR) D | 
|---|
| 88 | .S HDIMSG(1)="**" | 
|---|
| 89 | .S HDIMSG(2)="** Unable to set LAST NON-STANDARD VUID field to 4536403" | 
|---|
| 90 | .S HDIMSG(3)="**" | 
|---|
| 91 | .D MES^XPDUTL(.HDIMSG) K HDIMSG | 
|---|
| 92 | ;Set Ending Non-Standard VUID field | 
|---|
| 93 | I '$$GETNSVE^HDISVF03(SYSPTR) S X=$$SET^HDISVF02(7118.29,52,PRAMPTR_",",4636403,1) | 
|---|
| 94 | I '$$GETNSVE^HDISVF03(SYSPTR) D | 
|---|
| 95 | .S HDIMSG(1)="**" | 
|---|
| 96 | .S HDIMSG(2)="** Unable to set ENDING NON-STANDARD VUID field to 4636403" | 
|---|
| 97 | .S HDIMSG(3)="**" | 
|---|
| 98 | .D MES^XPDUTL(.HDIMSG) K HDIMSG | 
|---|
| 99 | ;Done | 
|---|
| 100 | Q 1 | 
|---|
| 101 | ; | 
|---|
| 102 | VUID() ;Instantiate VUIDs for set of code fields in Vitals domain | 
|---|
| 103 | ; Input: None | 
|---|
| 104 | ;Output: 0 = Stop post-install (error) | 
|---|
| 105 | ;        1 = Continue with post-install | 
|---|
| 106 | N HDIMSG | 
|---|
| 107 | S HDIMSG(1)=" " | 
|---|
| 108 | S HDIMSG(2)="Seeding XTID VUID FOR SET OF CODES file (#8985.1) with Vitals data" | 
|---|
| 109 | S HDIMSG(3)=" " | 
|---|
| 110 | D MES^XPDUTL(.HDIMSG) K HDIMSG | 
|---|
| 111 | I '$$VUIDL("VITALS","HDI1000C") Q 0 | 
|---|
| 112 | S HDIMSG(1)=" " | 
|---|
| 113 | S HDIMSG(2)="Seeding XTID VUID FOR SET OF CODES file (8985.1) with Allergy data" | 
|---|
| 114 | S HDIMSG(3)=" " | 
|---|
| 115 | D MES^XPDUTL(.HDIMSG) K HDIMSG | 
|---|
| 116 | I '$$VUIDL("ALLERGY","HDI1000C") Q 0 | 
|---|
| 117 | S HDIMSG(1)=" " | 
|---|
| 118 | S HDIMSG(2)="Seeding XTID VUID FOR SET OF CODES file (8985.1) with Lab & Pharmacy data" | 
|---|
| 119 | S HDIMSG(3)=" " | 
|---|
| 120 | D MES^XPDUTL(.HDIMSG) K HDIMSG | 
|---|
| 121 | I '$$VUIDL("LABPHAR","HDI1000D") Q 0 | 
|---|
| 122 | I '$$VUIDL("LABPHAR","HDI1000E") Q 0 | 
|---|
| 123 | I '$$VUIDL("LABPHAR","HDI1000F") Q 0 | 
|---|
| 124 | I '$$VUIDL("LABPHAR","HDI1000G") Q 0 | 
|---|
| 125 | Q 1 | 
|---|
| 126 | ; | 
|---|
| 127 | VUIDL(TAG,ROUTINE) ;Instantiate VUIDs for set of code fields | 
|---|
| 128 | ; Input: TAG - Line tag under which VUID data has been placed | 
|---|
| 129 | ;        ROUTINE - Routine line tag is in | 
|---|
| 130 | ;                  Leave blank if in this routine | 
|---|
| 131 | ;Output: 0 = Stop post-install (error) | 
|---|
| 132 | ;        1 = Continue with post-install | 
|---|
| 133 | ; Notes: Data lines must be in the format | 
|---|
| 134 | ;          File~Field~Code~VUID~Status~EffectiveDateTime | 
|---|
| 135 | ;          (Status and EffectiveDateTime must be in internal format) | 
|---|
| 136 | ;          (Default value for Status is 0 - Inactive) | 
|---|
| 137 | ;          (Default value for EffectiveDateTime is NOW) | 
|---|
| 138 | ;      : Call assumes that all input (TAG & ROUTINE) is valid | 
|---|
| 139 | ;      : Call assumes that data lines are valid | 
|---|
| 140 | ;        (i.e. no missing/bad data) | 
|---|
| 141 | N OFFSET,DATA,FILE,FIELD,IREF,VUID,STAT,STDT,DONE,RESULT,HDIMSG | 
|---|
| 142 | S ROUTINE=$G(ROUTINE) | 
|---|
| 143 | S RESULT=1 | 
|---|
| 144 | S DONE=0 | 
|---|
| 145 | F OFFSET=1:1 D  Q:DONE | 
|---|
| 146 | .S DATA=$S(ROUTINE="":$T(@TAG+OFFSET),1:$T(@TAG+OFFSET^@ROUTINE)) | 
|---|
| 147 | .S DATA=$P(DATA,";;",2) | 
|---|
| 148 | .I DATA="" S DONE=1 Q | 
|---|
| 149 | .S FILE=$P(DATA,"~",1) | 
|---|
| 150 | .S FIELD=$P(DATA,"~",2) | 
|---|
| 151 | .S IREF=$P(DATA,"~",3) | 
|---|
| 152 | .S VUID=$P(DATA,"~",4) | 
|---|
| 153 | .S STAT=$P(DATA,"~",5) | 
|---|
| 154 | .I STAT="" S STAT=0 | 
|---|
| 155 | .S STDT=$P(DATA,"~",6) | 
|---|
| 156 | .I STDT="" S STDT=$$NOW^XLFDT() | 
|---|
| 157 | .I '$$STOREIT(FILE,FIELD,IREF,VUID,STAT,STDT) D | 
|---|
| 158 | ..S HDIMSG(1)="**" | 
|---|
| 159 | ..S HDIMSG(2)="** Unable to store VUID and/or status information for file" | 
|---|
| 160 | ..S HDIMSG(3)="** "_FILE_", field "_FIELD_", and internal value "_IREF | 
|---|
| 161 | ..S HDIMSG(4)="**" | 
|---|
| 162 | ..D MES^XPDUTL(.HDIMSG) K HDIMSG | 
|---|
| 163 | ..S RESULT=0 | 
|---|
| 164 | Q RESULT | 
|---|
| 165 | ; | 
|---|
| 166 | STOREIT(FILE,FIELD,IREF,VUID,STAT,STDT) ;Store VUID info | 
|---|
| 167 | ; Input : FILE - File number | 
|---|
| 168 | ;         FIELD - Field number | 
|---|
| 169 | ;         IREF - Internal reference | 
|---|
| 170 | ;         VUID - VUID | 
|---|
| 171 | ;         STAT - Status | 
|---|
| 172 | ;                0 = Inacive (default)     1 = Active | 
|---|
| 173 | ;         STDT - Status Date/Time (FileMan) | 
|---|
| 174 | ;                (Defaults to NOW) | 
|---|
| 175 | ;Output : 1 = Success | 
|---|
| 176 | ;         0 = Failure | 
|---|
| 177 | ; Notes : Existance/validity of input assumed (internal call) | 
|---|
| 178 | ;       : Call will automatically inactivate terms when appropriate | 
|---|
| 179 | ; | 
|---|
| 180 | N TMP,MASTER | 
|---|
| 181 | S STAT=+$G(STAT) | 
|---|
| 182 | S STDT=+$G(STDT) | 
|---|
| 183 | I 'STDT S STDT=$$NOW^XLFDT() | 
|---|
| 184 | ;Store VUID (also sets master entry flag, if appropriate) | 
|---|
| 185 | I '$$SETVUID^XTID(FILE,FIELD,IREF,VUID) Q 0 | 
|---|
| 186 | ;Inactivate non-master entries | 
|---|
| 187 | I '$$GETMASTR^XTID(FILE,FIELD,IREF) D | 
|---|
| 188 | .S STAT=0 | 
|---|
| 189 | .S STDT=$$NOW^XLFDT() | 
|---|
| 190 | ;Store status | 
|---|
| 191 | Q $$SETSTAT^XTID(FILE,FIELD,IREF,STAT,STDT) | 
|---|