HLCSORAT ;ALB/MFK/jc - HEALTH LEVEL SEVEN ;07/13/99 15:20 [ 04/02/2003 8:38 AM ]
;;1.6;HEALTH LEVEL SEVEN;**1004**;APR 1, 2003
;;1.6;HEALTH LEVEL SEVEN;**57**;Oct 13, 1995
;Report low level communications errors for serial links (HLLP,
;X3.28) in file 870.
START ; Main Entry point
N DIR,DIC,X,Y,HLZ,LINE,HLERR,HLSORT,HLAAA,HLSTAT,HLLL,HLQUEUE,POP
N %ZIS,DTOUT,DUOUT,HLDONE,HLTMP,SET,FOO,CODES
S (HLERR,HLSTAT,LINE)=""
D PROMPT I (Y=-1)!($D(DUOUT))!($D(DTOUT)) Q
D OPEN G END:POP
I $D(IO("Q")) D QUEUED,HOME^%ZIS G END
U IO
REPORT ; Output data after gathering
S HLZ=0
; GATHER AND SORT DATA
D ^HLCSORA1
I 'HLZ G NEXT
I HLDONE G END
F HLAAA=$Y:1:(IOSL-3) W !
I ($E(IOST,1,2)="C-") S DIR(0)="E" D ^DIR K DIR I Y=0!(Y="")!($D(DIRUT)) G END
NEXT ; PRINT THE DATA
D ^HLCSORA2
I 'HLZ W !,"No data found for this request"
END ;
; Clean up. Kill the ^TMP and other assorted variables.
K ^TMP("HLCSORAT",$J)
I $D(ZTQUEUED) S ZTREQ="@" Q
K DIRUT,HLZ
D ^%ZISC
Q
PROMPT ; Find out how user wants report done
S HLLL=""
S DIR(0)="FAOU"
S DIR("A")="Select HL7 Logical Link: "
S DIR("B")="All Links"
D ^DIR
Q:$D(DTOUT)!($D(DUOUT))
I Y="All Links" S Y=0
I Y'=0 D
.S X=Y,DIC="^HLCS(870,",DIC(0)="EMQZ" D ^DIC K DIC
Q:$D(DTOUT)!($D(DUOUT))
S HLLL=$P(Y,"^",1)
I Y=-1 Q
S DIR(0)="S^I:IN QUEUE;O:OUT QUEUE;B:BOTH"
S DIR("A")="Select queue for report",DIR("B")="B" D ^DIR K DIR
S HLQUEUE=Y
I '("IOB"[Y) Q
S HLQUEUE=$S(HLQUEUE="B":"12",HLQUEUE="I":1,HLQUEUE="O":2)
S SET="",CODES=$$GET1^DID(870.019,2,"","POINTER")
F HLTMP=1:1 S FOO=$P(CODES,";",HLTMP) Q:(FOO="") D
.S SET=SET_$E(FOO,1,1)
ERR S DIR(0)="SOM^"_CODES_"ALL:ALL ERRORS;F:FINISH SELECTING ERRORS"
S DIR("A")="Select an error code to sort by"_$S(HLERR'="":" ("_HLERR_")",1:"")
S DIR("B")=$S((HLERR=""):"ALL",1:"F")
S DIR("?",1)="Select the list of errors that you would like to sort by. There are also"
S DIR("?",2)="two special selections. ALL means that you would like to sort on all the"
S DIR("?")="error codes. F means that you have finished selecting error codes."
D ^DIR K DIR
I ((HLERR'[Y)&(Y'="F")) S HLERR=HLERR_Y
I Y="ALL" S HLERR=SET
I (HLERR="")!($D(DUOUT))!($D(DTOUT)) S Y=-1 Q
I (Y'="ALL")&(Y'="F") G ERR
S SET="",CODES=$$GET1^DID(870.019,1,"","POINTER")
F HLTMP=1:1 S FOO=$P(CODES,";",HLTMP) Q:(FOO="") D
.S SET=SET_$E(FOO,1,1)
STAT S DIR(0)="SOM^"_CODES_"ALL:ALL STATUS;F:FINISH SELECTING STATUS CODES"
S DIR("A")="Select a status code to sort by"_$S(HLSTAT'="":" ("_HLSTAT_")",1:"")
S DIR("B")=$S((HLSTAT=""):"ALL",1:"F")
S DIR("?",1)="Select a status code to sort the report by. There are two special"
S DIR("?",2)="selections. ALL indicates you would like a report on all the statuses. The"
S DIR("?")="F means you are finished selecting statuses."
D ^DIR K DIR
I ((HLSTAT'[Y)&(Y'="F")) S HLSTAT=HLSTAT_Y
I Y="ALL" S HLSTAT=SET
I (HLSTAT="")!($D(DTOUT))!($D(DUOUT)) S Y=-1 Q
I (Y'="ALL")&(Y'="F") G STAT
S HLSORT=HLERR_"^"_HLSTAT
Q
QUEUED ; If queued, set up and kick in TASKMAN
S ZTRTN="REPORT^HLCSORAT",ZTDESC="HL7 LOGICAL LINK REPORT",ZTSAVE("HLLL")="",ZTSAVE("HLQUEUE")="",ZTSAVE("HLSORT")="" D ^%ZTLOAD
W !!,$S($D(ZTSK):"Request Queued",1:"Request Cancelled")
K ZTSK
Q
OPEN ; Open a device
S %ZIS="QM" D ^%ZIS
Q
HLCSORAT ;ALB/MFK/jc - HEALTH LEVEL SEVEN ;07/13/99 15:20 [ 04/02/2003 8:38 AM ]
+1 ;;1.6;HEALTH LEVEL SEVEN;**1004**;APR 1, 2003
+2 ;;1.6;HEALTH LEVEL SEVEN;**57**;Oct 13, 1995
+3 ;Report low level communications errors for serial links (HLLP,
+4 ;X3.28) in file 870.
START ; Main Entry point
+1 NEW DIR,DIC,X,Y,HLZ,LINE,HLERR,HLSORT,HLAAA,HLSTAT,HLLL,HLQUEUE,POP
+2 NEW %ZIS,DTOUT,DUOUT,HLDONE,HLTMP,SET,FOO,CODES
+3 SET (HLERR,HLSTAT,LINE)=""
+4 DO PROMPT
IF (Y=-1)!($DATA(DUOUT))!($DATA(DTOUT))
QUIT
+5 DO OPEN
IF POP
GOTO END
+6 IF $DATA(IO("Q"))
DO QUEUED
DO HOME^%ZIS
GOTO END
+7 USE IO
REPORT ; Output data after gathering
+1 SET HLZ=0
+2 ; GATHER AND SORT DATA
+3 DO ^HLCSORA1
+4 IF 'HLZ
GOTO NEXT
+5 IF HLDONE
GOTO END
+6 FOR HLAAA=$Y:1:(IOSL-3)
WRITE !
+7 IF ($EXTRACT(IOST,1,2)="C-")
SET DIR(0)="E"
DO ^DIR
KILL DIR
IF Y=0!(Y="")!($DATA(DIRUT))
GOTO END
NEXT ; PRINT THE DATA
+1 DO ^HLCSORA2
+2 IF 'HLZ
WRITE !,"No data found for this request"
END ;
+1 ; Clean up. Kill the ^TMP and other assorted variables.
+2 KILL ^TMP("HLCSORAT",$JOB)
+3 IF $DATA(ZTQUEUED)
SET ZTREQ="@"
QUIT
+4 KILL DIRUT,HLZ
+5 DO ^%ZISC
+6 QUIT
PROMPT ; Find out how user wants report done
+1 SET HLLL=""
+2 SET DIR(0)="FAOU"
+3 SET DIR("A")="Select HL7 Logical Link: "
+4 SET DIR("B")="All Links"
+5 DO ^DIR
+6 IF $DATA(DTOUT)!($DATA(DUOUT))
QUIT
+7 IF Y="All Links"
SET Y=0
+8 IF Y'=0
Begin DoDot:1
+9 SET X=Y
SET DIC="^HLCS(870,"
SET DIC(0)="EMQZ"
DO ^DIC
KILL DIC
End DoDot:1
+10 IF $DATA(DTOUT)!($DATA(DUOUT))
QUIT
+11 SET HLLL=$PIECE(Y,"^",1)
+12 IF Y=-1
QUIT
+13 SET DIR(0)="S^I:IN QUEUE;O:OUT QUEUE;B:BOTH"
+14 SET DIR("A")="Select queue for report"
SET DIR("B")="B"
DO ^DIR
KILL DIR
+15 SET HLQUEUE=Y
+16 IF '("IOB"[Y)
QUIT
+17 SET HLQUEUE=$SELECT(HLQUEUE="B":"12",HLQUEUE="I":1,HLQUEUE="O":2)
+18 SET SET=""
SET CODES=$$GET1^DID(870.019,2,"","POINTER")
+19 FOR HLTMP=1:1
SET FOO=$PIECE(CODES,";",HLTMP)
IF (FOO="")
QUIT
Begin DoDot:1
+20 SET SET=SET_$EXTRACT(FOO,1,1)
End DoDot:1
ERR SET DIR(0)="SOM^"_CODES_"ALL:ALL ERRORS;F:FINISH SELECTING ERRORS"
+1 SET DIR("A")="Select an error code to sort by"_$SELECT(HLERR'="":" ("_HLERR_")",1:"")
+2 SET DIR("B")=$SELECT((HLERR=""):"ALL",1:"F")
+3 SET DIR("?",1)="Select the list of errors that you would like to sort by. There are also"
+4 SET DIR("?",2)="two special selections. ALL means that you would like to sort on all the"
+5 SET DIR("?")="error codes. F means that you have finished selecting error codes."
+6 DO ^DIR
KILL DIR
+7 IF ((HLERR'[Y)&(Y'="F"))
SET HLERR=HLERR_Y
+8 IF Y="ALL"
SET HLERR=SET
+9 IF (HLERR="")!($DATA(DUOUT))!($DATA(DTOUT))
SET Y=-1
QUIT
+10 IF (Y'="ALL")&(Y'="F")
GOTO ERR
+11 SET SET=""
SET CODES=$$GET1^DID(870.019,1,"","POINTER")
+12 FOR HLTMP=1:1
SET FOO=$PIECE(CODES,";",HLTMP)
IF (FOO="")
QUIT
Begin DoDot:1
+13 SET SET=SET_$EXTRACT(FOO,1,1)
End DoDot:1
STAT SET DIR(0)="SOM^"_CODES_"ALL:ALL STATUS;F:FINISH SELECTING STATUS CODES"
+1 SET DIR("A")="Select a status code to sort by"_$SELECT(HLSTAT'="":" ("_HLSTAT_")",1:"")
+2 SET DIR("B")=$SELECT((HLSTAT=""):"ALL",1:"F")
+3 SET DIR("?",1)="Select a status code to sort the report by. There are two special"
+4 SET DIR("?",2)="selections. ALL indicates you would like a report on all the statuses. The"
+5 SET DIR("?")="F means you are finished selecting statuses."
+6 DO ^DIR
KILL DIR
+7 IF ((HLSTAT'[Y)&(Y'="F"))
SET HLSTAT=HLSTAT_Y
+8 IF Y="ALL"
SET HLSTAT=SET
+9 IF (HLSTAT="")!($DATA(DTOUT))!($DATA(DUOUT))
SET Y=-1
QUIT
+10 IF (Y'="ALL")&(Y'="F")
GOTO STAT
+11 SET HLSORT=HLERR_"^"_HLSTAT
+12 QUIT
QUEUED ; If queued, set up and kick in TASKMAN
+1 SET ZTRTN="REPORT^HLCSORAT"
SET ZTDESC="HL7 LOGICAL LINK REPORT"
SET ZTSAVE("HLLL")=""
SET ZTSAVE("HLQUEUE")=""
SET ZTSAVE("HLSORT")=""
DO ^%ZTLOAD
+2 WRITE !!,$SELECT($DATA(ZTSK):"Request Queued",1:"Request Cancelled")
+3 KILL ZTSK
+4 QUIT
OPEN ; Open a device
+1 SET %ZIS="QM"
DO ^%ZIS
+2 QUIT