- HLCSAC ;ISCSF/RWF - MPI direct connect client ;05/31/2000 09:40 [ 04/02/2003 8:38 AM ]
- ;;1.6;HEALTH LEVEL SEVEN;**1004**;APR 1, 2003
- ;;1.6;HEALTH LEVEL SEVEN;**43,64**;Jul 17,1995
- ;
- EN(HLDP,INPUT,OUTPUT) ;Call to do direct connect to MPI
- N HCSCMD,HLCS,HCSDAT,HCSER,HCSEXIT,HCSTRACE,HLDT1,HLOS
- N HLDRETR,HLDBSIZE,HLDREAD,HLDBACK,HLDWAIT,HLTCPADD,HLTCPORT,HLTCPCS,HLTCPLNK,X,Y
- ;HLCS=error
- S HLCS="",HCSTRACE="C: ",POP=1
- N $ESTACK,$ETRAP S $ETRAP="D ERROR^HLCSAC"
- D SETUP G:HLCS ERR
- D OPEN G:HLCS ERR
- D HELO G:HLCS ERR
- D DATA G:HLCS ERR
- D TURN G:HLCS ERR
- D GET G:HLCS ERR
- D QUIT
- Q 0
- ERR ;Report back an error
- D TRACE("ERROR "_HLCS)
- D:'POP QUIT
- Q HLCS
- ;
- ERROR ;Trap an error
- D ^%ZTER G UNWIND^%ZTER
- ;
- OPEN ;Open connection
- N HLI
- D TRACE("Make Connection")
- F HLI=1:1:HLDRETR D Q:'POP
- . D CALL^%ZISTCP(HLTCPADD,HLTCPORT,1)
- I POP S HLCS="-1^Inital Connection Failed" Q
- D TRACE("Got Connection")
- U IO
- Q
- HELO ;start conversation
- S X=$$POST("HELO "_$$KSP^XUPARAM("WHERE"))
- I $E(X,1)'=2 S HLCS="-1^Initial HELO Failed"
- I $E(X,1,3)="421" S HLCS="-1^Busy"
- Q
- DATA ;Send data
- D TRACE("Send Data")
- D SDATA^HLCSAS1(INPUT,"MPI"),CREAD^HLCSAS
- I $E(HCSCMD,1)'=2 S HLCS="-1^No 220 after send "_HCSDAT Q
- Q
- ;
- TURN ;Turn channel
- S X=$$POST("TURN ") I $E(X,1)'=2 S HLCS="-1^No 220 after Turn"
- Q
- GET ;Get responce
- D CREAD^HLCSAS I HCSCMD[220 G GET
- I HCSCMD'["DATA" S HLCS="-1^No DATA cmd "_HCSCMD Q
- D DATA^HLCSAS1(OUTPUT)
- Q
- QUIT ;Shut down
- D SEND^HLCSAS("QUIT ")
- D CLOSE^%ZISTCP,USE^%ZISUTL("HCS-HOME"),RMDEV^%ZISUTL("HCS-HOME")
- Q
- ;
- POST(MSG) ;Send a command and get responce
- D SEND^HLCSAS(MSG)
- D CREAD^HLCSAS
- Q HCSCMD
- ;
- TRACE(S1) ;
- Q
- N %,H
- I S1=-1 K ^TMP("HCSA",$J) Q
- S H=$P($H,",",2),H=(H\3600)_":"_(H#3600\60)_":"_(H#60)_" "
- L +^TMP("HCSA",$J) S %=$G(^TMP("HCSA",$J,0))+1,^(0)=%,^(%)=H_HCSTRACE_S1 L -^TMP("HCSA",$J)
- Q
- SETUP ;
- I ($G(HLDP)']"")!($G(INPUT)']"")!($G(OUTPUT)']"") S HLCS="-1^Missing input paramerter" Q
- S X=$$INIT^HLCSTCP
- I 'X S HLCS="-1^Bad Logical Link" Q
- I $G(HLP("ACKTIME")) S HLDREAD=HLP("ACKTIME")
- S (HCS("STAT"),HCSEXIT)=0
- D TRACE(-1),TRACE("Client Setup")
- Q
- HLCSAC ;ISCSF/RWF - MPI direct connect client ;05/31/2000 09:40 [ 04/02/2003 8:38 AM ]
- +1 ;;1.6;HEALTH LEVEL SEVEN;**1004**;APR 1, 2003
- +2 ;;1.6;HEALTH LEVEL SEVEN;**43,64**;Jul 17,1995
- +3 ;
- EN(HLDP,INPUT,OUTPUT) ;Call to do direct connect to MPI
- +1 NEW HCSCMD,HLCS,HCSDAT,HCSER,HCSEXIT,HCSTRACE,HLDT1,HLOS
- +2 NEW HLDRETR,HLDBSIZE,HLDREAD,HLDBACK,HLDWAIT,HLTCPADD,HLTCPORT,HLTCPCS,HLTCPLNK,X,Y
- +3 ;HLCS=error
- +4 SET HLCS=""
- SET HCSTRACE="C: "
- SET POP=1
- +5 NEW $ESTACK,$ETRAP
- SET $ETRAP="D ERROR^HLCSAC"
- +6 DO SETUP
- IF HLCS
- GOTO ERR
- +7 DO OPEN
- IF HLCS
- GOTO ERR
- +8 DO HELO
- IF HLCS
- GOTO ERR
- +9 DO DATA
- IF HLCS
- GOTO ERR
- +10 DO TURN
- IF HLCS
- GOTO ERR
- +11 DO GET
- IF HLCS
- GOTO ERR
- +12 DO QUIT
- +13 QUIT 0
- ERR ;Report back an error
- +1 DO TRACE("ERROR "_HLCS)
- +2 IF 'POP
- DO QUIT
- +3 QUIT HLCS
- +4 ;
- ERROR ;Trap an error
- +1 DO ^%ZTER
- GOTO UNWIND^%ZTER
- +2 ;
- OPEN ;Open connection
- +1 NEW HLI
- +2 DO TRACE("Make Connection")
- +3 FOR HLI=1:1:HLDRETR
- Begin DoDot:1
- +4 DO CALL^%ZISTCP(HLTCPADD,HLTCPORT,1)
- End DoDot:1
- IF 'POP
- QUIT
- +5 IF POP
- SET HLCS="-1^Inital Connection Failed"
- QUIT
- +6 DO TRACE("Got Connection")
- +7 USE IO
- +8 QUIT
- HELO ;start conversation
- +1 SET X=$$POST("HELO "_$$KSP^XUPARAM("WHERE"))
- +2 IF $EXTRACT(X,1)'=2
- SET HLCS="-1^Initial HELO Failed"
- +3 IF $EXTRACT(X,1,3)="421"
- SET HLCS="-1^Busy"
- +4 QUIT
- DATA ;Send data
- +1 DO TRACE("Send Data")
- +2 DO SDATA^HLCSAS1(INPUT,"MPI")
- DO CREAD^HLCSAS
- +3 IF $EXTRACT(HCSCMD,1)'=2
- SET HLCS="-1^No 220 after send "_HCSDAT
- QUIT
- +4 QUIT
- +5 ;
- TURN ;Turn channel
- +1 SET X=$$POST("TURN ")
- IF $EXTRACT(X,1)'=2
- SET HLCS="-1^No 220 after Turn"
- +2 QUIT
- GET ;Get responce
- +1 DO CREAD^HLCSAS
- IF HCSCMD[220
- GOTO GET
- +2 IF HCSCMD'["DATA"
- SET HLCS="-1^No DATA cmd "_HCSCMD
- QUIT
- +3 DO DATA^HLCSAS1(OUTPUT)
- +4 QUIT
- QUIT ;Shut down
- +1 DO SEND^HLCSAS("QUIT ")
- +2 DO CLOSE^%ZISTCP
- DO USE^%ZISUTL("HCS-HOME")
- DO RMDEV^%ZISUTL("HCS-HOME")
- +3 QUIT
- +4 ;
- POST(MSG) ;Send a command and get responce
- +1 DO SEND^HLCSAS(MSG)
- +2 DO CREAD^HLCSAS
- +3 QUIT HCSCMD
- +4 ;
- TRACE(S1) ;
- +1 QUIT
- +2 NEW %,H
- +3 IF S1=-1
- KILL ^TMP("HCSA",$JOB)
- QUIT
- +4 SET H=$PIECE($HOROLOG,",",2)
- SET H=(H\3600)_":"_(H#3600\60)_":"_(H#60)_" "
- +5 LOCK +^TMP("HCSA",$JOB)
- SET %=$GET(^TMP("HCSA",$JOB,0))+1
- SET ^(0)=%
- SET ^(%)=H_HCSTRACE_S1
- LOCK -^TMP("HCSA",$JOB)
- +6 QUIT
- SETUP ;
- +1 IF ($GET">GET">GET">GET(HLDP)']"")!($GET">GET">GET">GET(INPUT)']"")!($GET">GET">GET">GET(OUTPUT)']"")
- SET HLCS="-1^Missing input paramerter"
- QUIT
- +2 SET X=$$INIT^HLCSTCP
- +3 IF 'X
- SET HLCS="-1^Bad Logical Link"
- QUIT
- +4 IF $GET(HLP("ACKTIME"))
- SET HLDREAD=HLP("ACKTIME")
- +5 SET (HCS("STAT"),HCSEXIT)=0
- +6 DO TRACE(-1)
- DO TRACE("Client Setup")
- +7 QUIT