LA7VSTP ;VA/DALOI/JMC - HL7 environment setup routine ;JUL 06, 2010 3:14 PM
;;5.2;AUTOMATED LAB INSTRUMENTS;**27,44,51,46,64,1027**;NOV 01, 1997
; This routine will create LEDI and UNIVERSAL INTERFACE HL7 v1.6 file setups.
;
; Reference to PROTOCOL file (#101) supported by DBIA #872
;
HOST(PRIMARY,PRSITE,LRI,SITE,LA7VER) ;
;
N LA7Y,LAREMOTE,LAHOST,LASERV,LACLNT,LRS,PROT,ORU
;
I $G(LRI)="" D EXIT Q
;
W !,"Setting up the following Host Labs for "_PRSITE
W !," Updating HL7 APPLICATION PARAMETER file (#771)."
;
S LA7VER=$S($G(LA7VER)]"":LA7VER,1:2.3)
S LAREMOTE="LA7V REMOTE "_PRIMARY
S $P(LAREMOTE,"^",2)=$$SETAPP(LAREMOTE,PRIMARY)
;
S LAHOST="LA7V HOST "_LRI
S $P(LAHOST,"^",2)=$$SETAPP(LAHOST,LRI)
;
W !," Updating PROTOCOL file (#101)."
;
; Setup protocols to receive and process result (ORU) messages.
; Create event & subscriber protocols.
K LASERV
S LASERV="LA7V Receive Results from "_LRI
S LASERV(4)="E"
S LASERV(770.1)=$P(LAHOST,"^")
S LASERV(770.3)="ORU"
S LASERV(770.4)="R01"
S LASERV(770.95)=LA7VER
D SETPRO(.LASERV)
;
K LACLNT
S LACLNT="LA7V Process Results from "_LRI
S LACLNT(4)="S"
S LACLNT(770.2)=$P(LAREMOTE,"^")
S LACLNT(770.3)="@"
S LACLNT(770.4)="R01"
S LACLNT(770.11)="ACK"
S LACLNT(770.95)=LA7VER
S LACLNT(771)="D ORU^LA7VHL"
F I=773.1,773.2,773.4 S LACLNT(I)=1
D SETPRO(.LACLNT)
;
; Add subscriber to event.
D ADDSUB(LASERV,LACLNT)
;
; Setup protocols to build and send order (ORM) messages.
; Create event & subscriber protocols.
K LASERV
S LASERV="LA7V Order to "_LRI
S LASERV(4)="E"
S LASERV(770.1)=$P(LAREMOTE,"^")
S LASERV(770.3)="ORM"
S LASERV(770.4)="O01"
F I=770.2,770.11 S LASERV(I)="@"
F I=770.8,770.9 S LASERV(I)="AL"
S LASERV(770.95)=LA7VER
S LASERV(772)="D ORR^LA7VHL"
D SETPRO(.LASERV)
;
K LACLNT
S LACLNT="LA7V Send Order to "_LRI
S LACLNT(4)="S"
S LACLNT(770.2)=$P(LAHOST,"^")
S LACLNT(770.4)="O02"
S LACLNT(770.11)="ORR"
S LACLNT(770.95)=LA7VER
F I=770.1,770.3 S LACLNT(I)="@"
F I=773.1,773.2,773.4 S LACLNT(I)=1
D SETPRO(.LACLNT)
;
; Add subscriber to event.
D ADDSUB(LASERV,LACLNT)
;
D HOST^LA7VSTP1
D EXIT
;
Q
;
;
REMOTE(PRIMARY,PRSITE,LRI,SITE,LA7VER) ;
N LA7Y,LAREMOTE,LAHOST,LASERV,LACLNT,LRS,PROT,ORU
;
I $G(LRI)="" D EXIT Q
;
W !,"Setting up the REMOTE Lab, "_SITE_" and HOST Lab "_PRSITE
W !," Updating HL7 APPLICATION PARAMETER file (#771)."
;
S LA7VER=$S($G(LA7VER)]"":LA7VER,1:2.3)
S LAHOST="LA7V HOST "_PRIMARY
S $P(LAHOST,"^",2)=$$SETAPP(LAHOST,PRIMARY)
;
S LAREMOTE="LA7V REMOTE "_LRI
S $P(LAREMOTE,"^",2)=$$SETAPP(LAREMOTE,LRI)
;
W !," Updating PROTOCOL file (#101)."
;
; Setup protocols to build and send results (ORU) message back.
; Create event & subscriber protocols.
K LASERV
S LASERV="LA7V Results Reporting to "_LRI
S LASERV(4)="E"
S LASERV(770.1)=$P(LAHOST,"^")
S LASERV(770.3)="ORU"
S LASERV(770.4)="R01"
S LASERV(770.95)=LA7VER
F I=770.8,770.9 S LASERV(I)="AL"
S LASERV(772)="D ACK^LA7VHL"
D SETPRO(.LASERV)
;
K LACLNT
S LACLNT="LA7V Send Results to "_LRI
S LACLNT(4)="S"
S LACLNT(770.2)=$P(LAREMOTE,"^")
S LACLNT(770.3)="@"
S LACLNT(770.4)="R01"
S LACLNT(770.11)="ACK"
S LACLNT(770.95)=LA7VER
F I=773.1,773.2,773.4 S LACLNT(I)=1
D SETPRO(.LACLNT)
;
; Add subscriber to event.
D ADDSUB(LASERV,LACLNT)
;
; Setup protocols to receive and process order (ORM) messages.
; Create event & subscriber protocols.
K LASERV
S LASERV="LA7V Receive Order from "_LRI
S LASERV(4)="E"
S LASERV(770.1)=$P(LAREMOTE,"^")
S LASERV(770.3)="ORM"
S LASERV(770.4)="O01"
S LASERV(770.95)=LA7VER
F I=770.2,770.11 S LASERV(I)="@"
D SETPRO(.LASERV)
;
K LACLNT
S LACLNT="LA7V Process Order from "_LRI
S LACLNT(4)="S"
S LACLNT(770.2)=$P(LAHOST,"^")
S LACLNT(770.4)="O02"
S LACLNT(770.11)="ORR"
F I=770.1,770.3 S LACLNT(I)="@"
F I=773.1,773.2,773.4 S LACLNT(I)=1
S LACLNT(770.95)=LA7VER
S LACLNT(771)="D IN^LA7VORM"
D SETPRO(.LACLNT)
;
; Add subscriber to event.
D ADDSUB(LASERV,LACLNT)
;
D REMOTE^LA7VSTP1
D EXIT
;
Q
;
;
EXIT ; Exit with message
W !!,"HL7 v1.6 Environment setup is complete!!"
S LASERV(770.95)=LA7VER
K DIR
S DIR(0)="E" D ^DIR
Q
;
;
SETAPP(LA7X,LA7FAC) ;sets up the HL7 APPLICATION PARAMETER file #771
;
; Call with LA7X = value of .01 field to add to file #771
; LA7FAC = facility name
;
N DIC,DIE,DLAYGO,DR,LA7Y
;
S X=LA7X
S DIC="^HL(771,",DLAYGO=771,DIC(0)="L"
D ^DIC
S LA7Y=Y
W:$P(LA7Y,"^",3) !," Adding "_LA7X
I +LA7Y<1 Q
;
S DA=+LA7Y,DIE="^HL(771,",DR="2////a;3////"_LA7FAC
D ^DIE
Q $P(LA7Y,"^")
;
;
SETPRO(FIELDS) ;sets up the PROTOCOL file #101
; Call with LA7X = Protocol name
; FIELDS = FileMan fields array
;
N DA,DIC,FDA,I,LA7DIE,LA7IENS
;
S X=FIELDS,DIC="^ORD(101,",DIC(0)="L",DLAYGO=101
D ^DIC
I '$G(LA7QUIET) W !,FIELDS W:$P(Y,U,3) !," Adding "_X
S DA=+Y
I DA<0 Q
;
S I=0,LA7IENS=DA_","
F S I=$O(FIELDS(I)) Q:'I S FDA(1,101,LA7IENS,I)=FIELDS(I)
S FDA(1,101,LA7IENS,770.6)="@"
D FILE^DIE("E","FDA(1)","LA7DIE(1)")
S FDA(2,101,LA7IENS,5)=DUZ
D FILE^DIE("","FDA(2)","LA7DIE(2)")
D CLEAN^DILF
Q
;
;
ADDSUB(LA7EVNT,LA7SUB) ; Add subscriber to event protocol
; Call with LA7EVNT = name of event protocol
; LA7SUB = name of subscriber protocol
;
N DIC,DA,DR,D0,DLAYGO,LA7101E,LA7101S,X,Y
;
I '$D(^ORD(101,"B",LA7SUB)) Q
I '$D(^ORD(101,"B",LA7EVNT)) Q
;
; Get ien for event and subscriber protocols
S LA7101E=$O(^ORD(101,"B",LA7EVNT,0))
S LA7101S=$O(^ORD(101,"B",LA7SUB,0))
;
; Already listed as a subscriber to this event
I $D(^ORD(101,LA7101E,775,"B",LA7101S)) Q
;
S X=LA7SUB,DA(1)=LA7101E,DIC="^ORD(101,"_DA(1)_",775,"
S DLAYGO=101.01,DIC(0)="QEL",DIC("P")=$P(^DD(101,775,0),U,2)
D ^DIC
;
Q
LA7VSTP ;VA/DALOI/JMC - HL7 environment setup routine ;JUL 06, 2010 3:14 PM
+1 ;;5.2;AUTOMATED LAB INSTRUMENTS;**27,44,51,46,64,1027**;NOV 01, 1997
+2 ; This routine will create LEDI and UNIVERSAL INTERFACE HL7 v1.6 file setups.
+3 ;
+4 ; Reference to PROTOCOL file (#101) supported by DBIA #872
+5 ;
HOST(PRIMARY,PRSITE,LRI,SITE,LA7VER) ;
+1 ;
+2 NEW LA7Y,LAREMOTE,LAHOST,LASERV,LACLNT,LRS,PROT,ORU
+3 ;
+4 IF $GET(LRI)=""
DO EXIT
QUIT
+5 ;
+6 WRITE !,"Setting up the following Host Labs for "_PRSITE
+7 WRITE !," Updating HL7 APPLICATION PARAMETER file (#771)."
+8 ;
+9 SET LA7VER=$SELECT($GET(LA7VER)]"":LA7VER,1:2.3)
+10 SET LAREMOTE="LA7V REMOTE "_PRIMARY
+11 SET $PIECE(LAREMOTE,"^",2)=$$SETAPP(LAREMOTE,PRIMARY)
+12 ;
+13 SET LAHOST="LA7V HOST "_LRI
+14 SET $PIECE(LAHOST,"^",2)=$$SETAPP(LAHOST,LRI)
+15 ;
+16 WRITE !," Updating PROTOCOL file (#101)."
+17 ;
+18 ; Setup protocols to receive and process result (ORU) messages.
+19 ; Create event & subscriber protocols.
+20 KILL LASERV
+21 SET LASERV="LA7V Receive Results from "_LRI
+22 SET LASERV(4)="E"
+23 SET LASERV(770.1)=$PIECE(LAHOST,"^")
+24 SET LASERV(770.3)="ORU"
+25 SET LASERV(770.4)="R01"
+26 SET LASERV(770.95)=LA7VER
+27 DO SETPRO(.LASERV)
+28 ;
+29 KILL LACLNT
+30 SET LACLNT="LA7V Process Results from "_LRI
+31 SET LACLNT(4)="S"
+32 SET LACLNT(770.2)=$PIECE(LAREMOTE,"^")
+33 SET LACLNT(770.3)="@"
+34 SET LACLNT(770.4)="R01"
+35 SET LACLNT(770.11)="ACK"
+36 SET LACLNT(770.95)=LA7VER
+37 SET LACLNT(771)="D ORU^LA7VHL"
+38 FOR I=773.1,773.2,773.4
SET LACLNT(I)=1
+39 DO SETPRO(.LACLNT)
+40 ;
+41 ; Add subscriber to event.
+42 DO ADDSUB(LASERV,LACLNT)
+43 ;
+44 ; Setup protocols to build and send order (ORM) messages.
+45 ; Create event & subscriber protocols.
+46 KILL LASERV
+47 SET LASERV="LA7V Order to "_LRI
+48 SET LASERV(4)="E"
+49 SET LASERV(770.1)=$PIECE(LAREMOTE,"^")
+50 SET LASERV(770.3)="ORM"
+51 SET LASERV(770.4)="O01"
+52 FOR I=770.2,770.11
SET LASERV(I)="@"
+53 FOR I=770.8,770.9
SET LASERV(I)="AL"
+54 SET LASERV(770.95)=LA7VER
+55 SET LASERV(772)="D ORR^LA7VHL"
+56 DO SETPRO(.LASERV)
+57 ;
+58 KILL LACLNT
+59 SET LACLNT="LA7V Send Order to "_LRI
+60 SET LACLNT(4)="S"
+61 SET LACLNT(770.2)=$PIECE(LAHOST,"^")
+62 SET LACLNT(770.4)="O02"
+63 SET LACLNT(770.11)="ORR"
+64 SET LACLNT(770.95)=LA7VER
+65 FOR I=770.1,770.3
SET LACLNT(I)="@"
+66 FOR I=773.1,773.2,773.4
SET LACLNT(I)=1
+67 DO SETPRO(.LACLNT)
+68 ;
+69 ; Add subscriber to event.
+70 DO ADDSUB(LASERV,LACLNT)
+71 ;
+72 DO HOST^LA7VSTP1
+73 DO EXIT
+74 ;
+75 QUIT
+76 ;
+77 ;
REMOTE(PRIMARY,PRSITE,LRI,SITE,LA7VER) ;
+1 NEW LA7Y,LAREMOTE,LAHOST,LASERV,LACLNT,LRS,PROT,ORU
+2 ;
+3 IF $GET(LRI)=""
DO EXIT
QUIT
+4 ;
+5 WRITE !,"Setting up the REMOTE Lab, "_SITE_" and HOST Lab "_PRSITE
+6 WRITE !," Updating HL7 APPLICATION PARAMETER file (#771)."
+7 ;
+8 SET LA7VER=$SELECT($GET(LA7VER)]"":LA7VER,1:2.3)
+9 SET LAHOST="LA7V HOST "_PRIMARY
+10 SET $PIECE(LAHOST,"^",2)=$$SETAPP(LAHOST,PRIMARY)
+11 ;
+12 SET LAREMOTE="LA7V REMOTE "_LRI
+13 SET $PIECE(LAREMOTE,"^",2)=$$SETAPP(LAREMOTE,LRI)
+14 ;
+15 WRITE !," Updating PROTOCOL file (#101)."
+16 ;
+17 ; Setup protocols to build and send results (ORU) message back.
+18 ; Create event & subscriber protocols.
+19 KILL LASERV
+20 SET LASERV="LA7V Results Reporting to "_LRI
+21 SET LASERV(4)="E"
+22 SET LASERV(770.1)=$PIECE(LAHOST,"^")
+23 SET LASERV(770.3)="ORU"
+24 SET LASERV(770.4)="R01"
+25 SET LASERV(770.95)=LA7VER
+26 FOR I=770.8,770.9
SET LASERV(I)="AL"
+27 SET LASERV(772)="D ACK^LA7VHL"
+28 DO SETPRO(.LASERV)
+29 ;
+30 KILL LACLNT
+31 SET LACLNT="LA7V Send Results to "_LRI
+32 SET LACLNT(4)="S"
+33 SET LACLNT(770.2)=$PIECE(LAREMOTE,"^")
+34 SET LACLNT(770.3)="@"
+35 SET LACLNT(770.4)="R01"
+36 SET LACLNT(770.11)="ACK"
+37 SET LACLNT(770.95)=LA7VER
+38 FOR I=773.1,773.2,773.4
SET LACLNT(I)=1
+39 DO SETPRO(.LACLNT)
+40 ;
+41 ; Add subscriber to event.
+42 DO ADDSUB(LASERV,LACLNT)
+43 ;
+44 ; Setup protocols to receive and process order (ORM) messages.
+45 ; Create event & subscriber protocols.
+46 KILL LASERV
+47 SET LASERV="LA7V Receive Order from "_LRI
+48 SET LASERV(4)="E"
+49 SET LASERV(770.1)=$PIECE(LAREMOTE,"^")
+50 SET LASERV(770.3)="ORM"
+51 SET LASERV(770.4)="O01"
+52 SET LASERV(770.95)=LA7VER
+53 FOR I=770.2,770.11
SET LASERV(I)="@"
+54 DO SETPRO(.LASERV)
+55 ;
+56 KILL LACLNT
+57 SET LACLNT="LA7V Process Order from "_LRI
+58 SET LACLNT(4)="S"
+59 SET LACLNT(770.2)=$PIECE(LAHOST,"^")
+60 SET LACLNT(770.4)="O02"
+61 SET LACLNT(770.11)="ORR"
+62 FOR I=770.1,770.3
SET LACLNT(I)="@"
+63 FOR I=773.1,773.2,773.4
SET LACLNT(I)=1
+64 SET LACLNT(770.95)=LA7VER
+65 SET LACLNT(771)="D IN^LA7VORM"
+66 DO SETPRO(.LACLNT)
+67 ;
+68 ; Add subscriber to event.
+69 DO ADDSUB(LASERV,LACLNT)
+70 ;
+71 DO REMOTE^LA7VSTP1
+72 DO EXIT
+73 ;
+74 QUIT
+75 ;
+76 ;
EXIT ; Exit with message
+1 WRITE !!,"HL7 v1.6 Environment setup is complete!!"
+2 SET LASERV(770.95)=LA7VER
+3 KILL DIR
+4 SET DIR(0)="E"
DO ^DIR
+5 QUIT
+6 ;
+7 ;
SETAPP(LA7X,LA7FAC) ;sets up the HL7 APPLICATION PARAMETER file #771
+1 ;
+2 ; Call with LA7X = value of .01 field to add to file #771
+3 ; LA7FAC = facility name
+4 ;
+5 NEW DIC,DIE,DLAYGO,DR,LA7Y
+6 ;
+7 SET X=LA7X
+8 SET DIC="^HL(771,"
SET DLAYGO=771
SET DIC(0)="L"
+9 DO ^DIC
+10 SET LA7Y=Y
+11 IF $PIECE(LA7Y,"^",3)
WRITE !," Adding "_LA7X
+12 IF +LA7Y<1
QUIT
+13 ;
+14 SET DA=+LA7Y
SET DIE="^HL(771,"
SET DR="2////a;3////"_LA7FAC
+15 DO ^DIE
+16 QUIT $PIECE(LA7Y,"^")
+17 ;
+18 ;
SETPRO(FIELDS) ;sets up the PROTOCOL file #101
+1 ; Call with LA7X = Protocol name
+2 ; FIELDS = FileMan fields array
+3 ;
+4 NEW DA,DIC,FDA,I,LA7DIE,LA7IENS
+5 ;
+6 SET X=FIELDS
SET DIC="^ORD(101,"
SET DIC(0)="L"
SET DLAYGO=101
+7 DO ^DIC
+8 IF '$GET(LA7QUIET)
WRITE !,FIELDS
IF $PIECE(Y,U,3)
WRITE !," Adding "_X
+9 SET DA=+Y
+10 IF DA<0
QUIT
+11 ;
+12 SET I=0
SET LA7IENS=DA_","
+13 FOR
SET I=$ORDER(FIELDS(I))
IF 'I
QUIT
SET FDA(1,101,LA7IENS,I)=FIELDS(I)
+14 SET FDA(1,101,LA7IENS,770.6)="@"
+15 DO FILE^DIE("E","FDA(1)","LA7DIE(1)")
+16 SET FDA(2,101,LA7IENS,5)=DUZ
+17 DO FILE^DIE("","FDA(2)","LA7DIE(2)")
+18 DO CLEAN^DILF
+19 QUIT
+20 ;
+21 ;
ADDSUB(LA7EVNT,LA7SUB) ; Add subscriber to event protocol
+1 ; Call with LA7EVNT = name of event protocol
+2 ; LA7SUB = name of subscriber protocol
+3 ;
+4 NEW DIC,DA,DR,D0,DLAYGO,LA7101E,LA7101S,X,Y
+5 ;
+6 IF '$DATA(^ORD(101,"B",LA7SUB))
QUIT
+7 IF '$DATA(^ORD(101,"B",LA7EVNT))
QUIT
+8 ;
+9 ; Get ien for event and subscriber protocols
+10 SET LA7101E=$ORDER(^ORD(101,"B",LA7EVNT,0))
+11 SET LA7101S=$ORDER(^ORD(101,"B",LA7SUB,0))
+12 ;
+13 ; Already listed as a subscriber to this event
+14 IF $DATA(^ORD(101,LA7101E,775,"B",LA7101S))
QUIT
+15 ;
+16 SET X=LA7SUB
SET DA(1)=LA7101E
SET DIC="^ORD(101,"_DA(1)_",775,"
+17 SET DLAYGO=101.01
SET DIC(0)="QEL"
SET DIC("P")=$PIECE(^DD(101,775,0),U,2)
+18 DO ^DIC
+19 ;
+20 QUIT