| 1 | LA7VSET ;DALOI/JMC - MENU TO SETUP VISN LABS ; 12/3/1997 | 
|---|
| 2 | ;;5.2;AUTOMATED LAB INSTRUMENTS;**27,51,55,46,64**;Sep 27, 1994 | 
|---|
| 3 | ; | 
|---|
| 4 | ; Reference to HL LOGICAL LINK file (#870) supported by DBIA #1495, 1496, 2063 | 
|---|
| 5 | ; Reference to PROTOCOL file (#101) supported by DBIA #872 | 
|---|
| 6 | ; Reference to MAIL GROUP file (#3.8) supported by DBIA #2061 | 
|---|
| 7 | ; | 
|---|
| 8 | D CONV | 
|---|
| 9 | ; | 
|---|
| 10 | N LA76248,LA7629,LA7VNVC,PRIMARY,PRSITE,HDR,LAB,HOST,REMOTE,LRY,LRX,LA7VS,NAME | 
|---|
| 11 | ; | 
|---|
| 12 | S LA7VS=$$PRIM^VASITE(DT) | 
|---|
| 13 | I $G(LA7VS)'="" D | 
|---|
| 14 | . S LA7VS=$$SITE^VASITE(DT,LA7VS) | 
|---|
| 15 | . S PRIMARY=$P(LA7VS,U,3),PRSITE=$P(LA7VS,U,2) | 
|---|
| 16 | ; | 
|---|
| 17 | I $G(PRIMARY)="" W !!,"No Primary Site is defined!!!!",!! R !,"Press RETURN to continue: ",X:DTIME Q | 
|---|
| 18 | ; | 
|---|
| 19 | S HDR="LEDI Setup" | 
|---|
| 20 | S HDR(1)="Add/Edit HOST Lab",HDR(2)="Add/Edit COLLECTION Lab" | 
|---|
| 21 | F  S LAB=$$MAIN Q:LAB=""  D @LAB | 
|---|
| 22 | ; | 
|---|
| 23 | K DIE,DA,DR,DO,DIC | 
|---|
| 24 | ; | 
|---|
| 25 | Q | 
|---|
| 26 | ; | 
|---|
| 27 | MAIN() ; Display the main LEDI setup screen | 
|---|
| 28 | N HDRCNT,HDRA | 
|---|
| 29 | W @IOF,! F X=1:1:79 W "-" | 
|---|
| 30 | W !,?((80-$L(HDR))/2),HDR | 
|---|
| 31 | W ! F X=1:1:79 W "-" | 
|---|
| 32 | W ! | 
|---|
| 33 | W !,"COLLECTION Labs:  Use option #1 to setup HOST labs." | 
|---|
| 34 | W !,"  HOST Labs    :  Use option #2 to setup COLLECTION labs." | 
|---|
| 35 | W !! | 
|---|
| 36 | S HDRCNT=0 | 
|---|
| 37 | F  S HDRCNT=$O(HDR(HDRCNT)) Q:'HDRCNT  W !,HDRCNT,".",?5,HDR(HDRCNT) | 
|---|
| 38 | D KDIR | 
|---|
| 39 | W !! | 
|---|
| 40 | S DIR(0)="NO^1:2" | 
|---|
| 41 | D MHLP,^DIR | 
|---|
| 42 | S HDRA=$S(Y=1:"HOST",Y=2:"REMOTE",1:"") | 
|---|
| 43 | D KDIR | 
|---|
| 44 | Q HDRA | 
|---|
| 45 | ; | 
|---|
| 46 | ; | 
|---|
| 47 | KDIR ; kill all DIR variables | 
|---|
| 48 | K DIR,DIRUT,DUOUT,DTOUT,DIROUT,X,Y | 
|---|
| 49 | Q | 
|---|
| 50 | ; | 
|---|
| 51 | ; | 
|---|
| 52 | HOST ; HOST Lab Setup Menu | 
|---|
| 53 | ; | 
|---|
| 54 | N LA7CNT,LA7,LA7P,SNUM,SNAME,HOST,LA7A | 
|---|
| 55 | ; | 
|---|
| 56 | F  D  Q:'LA7A | 
|---|
| 57 | . D HOSTBLD,HSTHDR,HOSTLST,KDIR | 
|---|
| 58 | . W !! S DIR(0)="NO^1:"_LA7CNT | 
|---|
| 59 | . D H1HLP,^DIR | 
|---|
| 60 | . I $D(DIRUT) S LA7A=0 Q | 
|---|
| 61 | . S LA7A=Y D AEHOST | 
|---|
| 62 | K SNAME | 
|---|
| 63 | Q | 
|---|
| 64 | ; | 
|---|
| 65 | ; | 
|---|
| 66 | HOSTBLD ; Build list of host facilities. | 
|---|
| 67 | ; Identify all HOST labs using LA7 MESSAGE PARAMETER file (#62.48) | 
|---|
| 68 | ; | 
|---|
| 69 | N LA7,LA74,LA76248,LA7629,SNAME,SNUM | 
|---|
| 70 | ; | 
|---|
| 71 | K HOST | 
|---|
| 72 | S LA7CNT=1,(LA7,LA7P)="LA7V HOST " | 
|---|
| 73 | F  S LA7=$O(^LAHM(62.48,"B",LA7)) Q:LA7=""!(LA7'[LA7P)  D | 
|---|
| 74 | . S SNUM=$P(LA7,"HOST ",2) | 
|---|
| 75 | . S LA74=$$FINDSITE^LA7VHLU2(SNUM,1,1) Q:LA74'>0 | 
|---|
| 76 | . S SNAME=$P($$NS^XUAF4(LA74),"^") | 
|---|
| 77 | . S HOST(LA7CNT)=SNUM_U_SNAME_U_LA7_U_LA74,LA7CNT=LA7CNT+1 | 
|---|
| 78 | S HOST(LA7CNT)="" | 
|---|
| 79 | ; | 
|---|
| 80 | Q | 
|---|
| 81 | ; | 
|---|
| 82 | ; | 
|---|
| 83 | HSTHDR ; HOST setup header | 
|---|
| 84 | S HOST="HOST Lab(s)" | 
|---|
| 85 | W @IOF,! F X=1:1:79 W "-" | 
|---|
| 86 | W !,?((80-$L(HOST))/2),HOST | 
|---|
| 87 | W ! F X=1:1:79 W "-" | 
|---|
| 88 | W !! | 
|---|
| 89 | Q | 
|---|
| 90 | ; | 
|---|
| 91 | ; | 
|---|
| 92 | HOSTLST ; | 
|---|
| 93 | S LA7CNT=1,LA7=0 | 
|---|
| 94 | F  S LA7=$O(HOST(LA7)) Q:'LA7  I HOST(LA7)'="" W !,LA7,".",?5,$P(HOST(LA7),U,2)_"  ("_$P(HOST(LA7),U,3)_")" S LA7CNT=LA7CNT+1 | 
|---|
| 95 | W !,LA7CNT,".",?5,"Add HOST Lab" | 
|---|
| 96 | Q | 
|---|
| 97 | ; | 
|---|
| 98 | AEHOST ; | 
|---|
| 99 | N CHA,UI | 
|---|
| 100 | F  S HOST="HOST Lab Setup" D HSTHDR,HSTHDR2,KDIR W !! S DIR(0)="NO^1:"_LA7CNT D H2HLP D ^DIR S CHA=Y D:CHA>0  Q:+CHA'>0 | 
|---|
| 101 | . I CHA=1 D HLAB($P(HOST(LA7A),U)) | 
|---|
| 102 | . I CHA=2 D HLL | 
|---|
| 103 | . I CHA=3 D LMC | 
|---|
| 104 | . I CHA=4 D CHTST | 
|---|
| 105 | D KDIR | 
|---|
| 106 | Q | 
|---|
| 107 | ; | 
|---|
| 108 | ; | 
|---|
| 109 | HSTHDR2 ; | 
|---|
| 110 | N LA7624,LA76248,LA7870,LA7X | 
|---|
| 111 | ; | 
|---|
| 112 | S LA7CNT=1 | 
|---|
| 113 | W !!,"1. HOST Lab: ",?15,$P(HOST(LA7A),U,2) | 
|---|
| 114 | W:$P(HOST(LA7A),U,2)'="" "  (Uneditable)" | 
|---|
| 115 | ; | 
|---|
| 116 | I $P(HOST(LA7A),U,2)="" Q | 
|---|
| 117 | ; | 
|---|
| 118 | D LINK^HLUTIL3($P(HOST(LA7A),"^",4),.LA7X,"") | 
|---|
| 119 | S LA7870=+$O(LA7X(0)) | 
|---|
| 120 | I 'LA7870 D | 
|---|
| 121 | . S LA7870=+$$FIND1^DIC(870,"","OX","LA7V"_$P(HOST(LA7A),U)) | 
|---|
| 122 | . I 'LA7870 S LA7870=+$$FIND1^DIC(870,"","OX","LA7V "_$P(HOST(LA7A),U)) | 
|---|
| 123 | . I LA7870 S LA7X(LA7870)=$$GET1^DIQ(870,LA7870_",",.01) | 
|---|
| 124 | S LA7CNT=2 | 
|---|
| 125 | W !,"2. Logical Link: ",$G(LA7X(LA7870)) | 
|---|
| 126 | ; | 
|---|
| 127 | S LA76248=$$FIND1^DIC(62.48,"","OX","LA7V HOST "_$P(HOST(LA7A),U)),LA7CNT=3 | 
|---|
| 128 | W !,"3. Message Configuration: ",$$GET1^DIQ(62.48,LA76248_",",.01) | 
|---|
| 129 | ; | 
|---|
| 130 | S LA7624=$$FIND1^DIC(62.4,"","OX","LA7V HOST "_$P(HOST(LA7A),U)),LA7CNT=4 | 
|---|
| 131 | W !,"4. Auto Instrument: ",$$GET1^DIQ(62.4,LA7624_",",.01) | 
|---|
| 132 | ; | 
|---|
| 133 | Q | 
|---|
| 134 | ; | 
|---|
| 135 | ; | 
|---|
| 136 | LMC ; Edit lab message configuration file. | 
|---|
| 137 | ; | 
|---|
| 138 | N DIC,DA,DR,DIE | 
|---|
| 139 | ; | 
|---|
| 140 | S X="LA7V HOST "_$P(@LAB@(LA7A),U),DIC(0)="EMX",DIC="^LAHM(62.48," | 
|---|
| 141 | D ^DIC | 
|---|
| 142 | I +Y<0 W !,"You have not entered a "_LAB_" lab." Q | 
|---|
| 143 | ; | 
|---|
| 144 | S DA=+Y,DIE="^LAHM(62.48,",DR="3;4;10;11////10;@20;20;I X'="""" S Y=""@20""" | 
|---|
| 145 | D ^DIE | 
|---|
| 146 | ; | 
|---|
| 147 | Q | 
|---|
| 148 | ; | 
|---|
| 149 | ; | 
|---|
| 150 | HLAB(LRI) ;Add Host LAB | 
|---|
| 151 | ; | 
|---|
| 152 | N INST,LA7VNVC,LA7629,LA7VER,LA7X | 
|---|
| 153 | ; | 
|---|
| 154 | I $P(HOST(LA7A),U)'="" D KDIR S DIR("A")="Are you sure you want to update the "_$P(HOST(LA7A),U,2)_" interface",DIR(0)="Y0" D ^DIR Q:+Y'>0 | 
|---|
| 155 | ; | 
|---|
| 156 | I $P(HOST(LA7A),U)="" D | 
|---|
| 157 | . N DIC,DA,DO | 
|---|
| 158 | . S DIC="^DIC(4,",DIC(0)="AEMQZ" | 
|---|
| 159 | . S DIC("S")="N LA7X S LA7X=$G(^(99)) I ($L($P(LA7X,U))&$P(LA7X,U,5)=""VA"")!($P(LA7X,U)=""""&$P(LA7X,U,5)'=""VA"")" | 
|---|
| 160 | . D ^DIC Q:Y<1 | 
|---|
| 161 | . S INST=+Y | 
|---|
| 162 | . I PRIMARY=INST!(INST=DUZ(2)) D  Q | 
|---|
| 163 | . . W !,"To add your Hospital as a HOST site just add COLLECTION sites." | 
|---|
| 164 | . S HOST(LA7A+1)=HOST(LA7A) | 
|---|
| 165 | . S HOST(LA7A)=$$RETFACID^LA7VHLU2(INST,1,1)_U_$P($$NS^XUAF4(INST),"^")_"^^"_INST | 
|---|
| 166 | ; | 
|---|
| 167 | I $P(HOST(LA7A),U)="" S $P(HOST(LA7A),U,2)="" Q | 
|---|
| 168 | ; | 
|---|
| 169 | I PRIMARY'=$P(HOST(LA7A),U) D | 
|---|
| 170 | . S LA7VER=2.3 | 
|---|
| 171 | . I $$NVAF^LA7VHLU2($P(HOST(LA7A),"^",4))=1 S LA7VER=2.2 | 
|---|
| 172 | . D HOST^LA7VSTP(PRIMARY,PRSITE,$P(HOST(LA7A),U),$P(HOST(LA7A),U,2),LA7VER) | 
|---|
| 173 | ; | 
|---|
| 174 | Q | 
|---|
| 175 | ; | 
|---|
| 176 | ; | 
|---|
| 177 | HLL ;add/edit logical link | 
|---|
| 178 | ; | 
|---|
| 179 | N HDR,PR,LA7LL | 
|---|
| 180 | S HDR="Logical Link for transmissions to/from "_$P(HOST(LA7A),U,2) | 
|---|
| 181 | W @IOF,! F X=1:1:79 W "-" | 
|---|
| 182 | W !,?((80-$L(HDR))/2),HDR | 
|---|
| 183 | W ! F X=1:1:79 W "-" | 
|---|
| 184 | W !,?3,"Protocol",?40,"Logical Link",!,?3,"----------",?40,"---------------" | 
|---|
| 185 | W !! | 
|---|
| 186 | S PR=$O(^ORD(101,"B","LA7V Process Results from "_$P(HOST(LA7A),U),0)) | 
|---|
| 187 | I PR D GETLL(PR) | 
|---|
| 188 | ; | 
|---|
| 189 | S PR=$O(^ORD(101,"B","LA7V Send Order to "_$P(HOST(LA7A),U),0)) | 
|---|
| 190 | I PR D GETLL(PR) | 
|---|
| 191 | ; | 
|---|
| 192 | W !! | 
|---|
| 193 | D KDIR | 
|---|
| 194 | S DIR("A")="Setup/update Logical Link",DIR(0)="YO" | 
|---|
| 195 | D ^DIR | 
|---|
| 196 | I $D(DIRUT) Q | 
|---|
| 197 | I Y=1 D TCP^LA7VLL(HOST(LA7A),LA7VS) | 
|---|
| 198 | ; | 
|---|
| 199 | Q | 
|---|
| 200 | ; | 
|---|
| 201 | ; | 
|---|
| 202 | CHTST ;Enter CHEM Test into the AUTO INSTRUMENT file (#62.4) | 
|---|
| 203 | ; | 
|---|
| 204 | N DA,DIC,DIE,DR,AI,LA7624 | 
|---|
| 205 | ; | 
|---|
| 206 | S (AI,X)="LA7V HOST "_$P(HOST(LA7A),U) | 
|---|
| 207 | S DIC(0)="QEM",DIC="^LAB(62.4," D ^DIC | 
|---|
| 208 | I +Y<1 Q | 
|---|
| 209 | S LA7624=+Y | 
|---|
| 210 | ; | 
|---|
| 211 | W !!,"AUTOMATED INSTRUMENT: ",$P(^LAB(62.4,LA7624,0),U) | 
|---|
| 212 | ; | 
|---|
| 213 | L +^LAB(62.4,LA7624):1 | 
|---|
| 214 | I '$T W !,?5,"Another user is editing this entry." Q | 
|---|
| 215 | ; | 
|---|
| 216 | S DA=LA7624,DIE=DIC,DR="3;10;11;12;18;107" | 
|---|
| 217 | D ^DIE | 
|---|
| 218 | W !,"Add Chem Tests to the "_AI_" Automated Instrument for "_$P(HOST(LA7A),U,2)_".",!! | 
|---|
| 219 | D CHSET | 
|---|
| 220 | ; | 
|---|
| 221 | L -^LAB(62.4,LA7624) | 
|---|
| 222 | ; | 
|---|
| 223 | Q | 
|---|
| 224 | ; | 
|---|
| 225 | ; | 
|---|
| 226 | CHSET ; Edit chem test multiple for selected fields | 
|---|
| 227 | ; Entry locked from above. | 
|---|
| 228 | N DA,DO,DIC,DIE,DLAYGO,DR,LA7NLT,LA7Y | 
|---|
| 229 | ; | 
|---|
| 230 | S DA(1)=LA7624,DLAYGO=62.4 | 
|---|
| 231 | S DIC="^LAB(62.4,"_DA(1)_",3,",DIC(0)="AELMQZ",DIC("DR")=".01",DIC("P")=$P(^DD(62.4,30,0),U,2) | 
|---|
| 232 | F  D  Q:LA7Y<1 | 
|---|
| 233 | . D ^DIC S LA7Y=Y Q:LA7Y<1 | 
|---|
| 234 | . S DIE=DIC | 
|---|
| 235 | . N DA,DIC,DLAYGO ; Protect variables in case changed in DIE call. | 
|---|
| 236 | . S LA7NLT=$$GET1^DIQ(64,+$P($G(^LAB(60,$P(LA7Y,U,2),64)),U,2)_",",1) | 
|---|
| 237 | . S DA=+LA7Y,DA(1)=LA7624 | 
|---|
| 238 | . S DR=".01;2;6//"_LA7NLT_";14;16;18//YES;19;22//NO" | 
|---|
| 239 | . D ^DIE | 
|---|
| 240 | . W ! | 
|---|
| 241 | Q | 
|---|
| 242 | ; | 
|---|
| 243 | ; | 
|---|
| 244 | REMOTE ;COLLECTION Lab Setup Menu | 
|---|
| 245 | ; | 
|---|
| 246 | D COLLECT^LA7VSET1 | 
|---|
| 247 | Q | 
|---|
| 248 | ; | 
|---|
| 249 | ; | 
|---|
| 250 | MHLP ;Main help | 
|---|
| 251 | S DIR("?")=" " | 
|---|
| 252 | S DIR("?",1)="Option #1 will setup HOST site auto-instruments, HOST site message" | 
|---|
| 253 | S DIR("?",2)="configuration, and HOST and COLLECTION sites HL7 environment." | 
|---|
| 254 | S DIR("?",3)=" " | 
|---|
| 255 | S DIR("?",4)="Option #2 will setup COLLECTION site auto-instruments, COLLECTION site message" | 
|---|
| 256 | S DIR("?",5)="configuration, and COLLECTION and HOST sites HL7 environment." | 
|---|
| 257 | S DIR("?",6)=" " | 
|---|
| 258 | S DIR("?",7)="Option #1 and #2 SHOULD be used by sites that are both a HOST" | 
|---|
| 259 | S DIR("?",8)="and a COLLECTION site." | 
|---|
| 260 | Q | 
|---|
| 261 | ; | 
|---|
| 262 | ; | 
|---|
| 263 | H1HLP ;HOST Lab(s) help | 
|---|
| 264 | S DIR("?")="Enter a number between 1 and "_LA7CNT_"." | 
|---|
| 265 | S DIR("?",1)="Enter a '"_LA7CNT_"' to create a new HOST lab." | 
|---|
| 266 | Q | 
|---|
| 267 | ; | 
|---|
| 268 | ; | 
|---|
| 269 | H2HLP ;HOST Lab Setup help | 
|---|
| 270 | S DIR("?")=" " | 
|---|
| 271 | S DIR("?",1)="Enter a '1' to create the HL7 environment along with the Auto-Instrument" | 
|---|
| 272 | S DIR("?",2)="and LA7 Message Configuration." | 
|---|
| 273 | S DIR("?",3)="Enter a '2' to create the link between the HOST and COLLECTION labs." | 
|---|
| 274 | S DIR("?",5)="Enter a '3' to configure the LA7 MESSAGE PARAMETER file." | 
|---|
| 275 | S DIR("?",4)="Enter a '4' to identify the list of test you expect back from the HOST lab." | 
|---|
| 276 | Q | 
|---|
| 277 | ; | 
|---|
| 278 | ; | 
|---|
| 279 | CONV ;Convert #62.4 and #62.48 from REMOTE to COLLECTION (File #771 will remain REMOTE). | 
|---|
| 280 | N RMT,RMT1,UPDT,IEN | 
|---|
| 281 | K DA,DR,DIE | 
|---|
| 282 | S DIE="^LAB(62.4," | 
|---|
| 283 | S RMT1="LA7V REMOTE ",RMT=RMT1 | 
|---|
| 284 | F  S RMT=$O(^LAB(62.4,"B",RMT)) Q:RMT=""!(RMT'[RMT1)  D | 
|---|
| 285 | . S IEN=$O(^LAB(62.4,"B",RMT,0)) | 
|---|
| 286 | . S NAME="LA7V COLLECTION"_$P($P(^LAB(62.4,IEN,0),U),"REMOTE",2) | 
|---|
| 287 | . S DA=IEN,DR=".01///"_NAME | 
|---|
| 288 | . W !,"Renaming Auto-Instrument "_$P(^LAB(62.4,IEN,0),U)_" to "_NAME | 
|---|
| 289 | . D ^DIE | 
|---|
| 290 | . S UPDT=1 | 
|---|
| 291 | K DA,DR,DIE | 
|---|
| 292 | S DIE="^LAHM(62.48," | 
|---|
| 293 | S RMT1="LA7V REMOTE ",RMT=RMT1 | 
|---|
| 294 | F  S RMT=$O(^LAHM(62.48,"B",RMT)) Q:RMT=""!(RMT'[RMT1)  D | 
|---|
| 295 | . S IEN=$O(^LAHM(62.48,"B",RMT,0)) | 
|---|
| 296 | . S NAME="LA7V COLLECTION"_$P($P(^LAHM(62.48,IEN,0),U),"REMOTE",2) | 
|---|
| 297 | . S DA=IEN,DR=".01///"_NAME | 
|---|
| 298 | . W !,"Renaming LA7 Message Configuration "_$P(^LAHM(62.48,IEN,0),U)_" to "_NAME | 
|---|
| 299 | . D ^DIE | 
|---|
| 300 | . S UPDT=1 | 
|---|
| 301 | I $G(UPDT)=1 D | 
|---|
| 302 | . N DIR,DIRUT | 
|---|
| 303 | . W !!,"For consistency and clarity the above Auto-Instrument names" | 
|---|
| 304 | . W !,"and Message Configurations have been changed from REMOTE to COLLECTION." | 
|---|
| 305 | . S DIR(0)="E" D ^DIR | 
|---|
| 306 | Q | 
|---|
| 307 | ; | 
|---|
| 308 | ; | 
|---|
| 309 | GETLL(LA7X) ; Get Lower Level Protocol information for displaying | 
|---|
| 310 | ; Call with LA7X = ien of file #101 protocol | 
|---|
| 311 | ; | 
|---|
| 312 | ; Called from above and LA7VSET1 | 
|---|
| 313 | ; | 
|---|
| 314 | N LA7Y | 
|---|
| 315 | ; | 
|---|
| 316 | D GETS^DIQ(101,LA7X_",",".01;770.7","IE","LA7Y") | 
|---|
| 317 | ; | 
|---|
| 318 | W !,?3,$G(LA7Y(101,LA7X_",",.01,"E")) | 
|---|
| 319 | W ?40,$G(LA7Y(101,LA7X_",",770.7,"E")) | 
|---|
| 320 | I $G(LA7Y(101,LA7X_",",770.7,"I")) W " ("_$$GET1^DIQ(870,+LA7Y(101,LA7X_",",770.7,"I")_",",2)_")" | 
|---|
| 321 | ; | 
|---|
| 322 | Q | 
|---|