| 1 | HLCSORAT ;ALB/MFK/jc - HEALTH LEVEL SEVEN ;07/13/99  15:20 | 
|---|
| 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. | 
|---|
| 5 | START ; Main Entry point | 
|---|
| 6 | N DIR,DIC,X,Y,HLZ,LINE,HLERR,HLSORT,HLAAA,HLSTAT,HLLL,HLQUEUE,POP | 
|---|
| 7 | N %ZIS,DTOUT,DUOUT,HLDONE,HLTMP,SET,FOO,CODES | 
|---|
| 8 | S (HLERR,HLSTAT,LINE)="" | 
|---|
| 9 | D PROMPT I (Y=-1)!($D(DUOUT))!($D(DTOUT)) Q | 
|---|
| 10 | D OPEN G END:POP | 
|---|
| 11 | I $D(IO("Q")) D QUEUED,HOME^%ZIS G END | 
|---|
| 12 | U IO | 
|---|
| 13 | REPORT ;  Output data after gathering | 
|---|
| 14 | S HLZ=0 | 
|---|
| 15 | ;  GATHER AND SORT DATA | 
|---|
| 16 | D ^HLCSORA1 | 
|---|
| 17 | I 'HLZ G NEXT | 
|---|
| 18 | I HLDONE G END | 
|---|
| 19 | F HLAAA=$Y:1:(IOSL-3) W ! | 
|---|
| 20 | I ($E(IOST,1,2)="C-") S DIR(0)="E" D ^DIR K DIR I Y=0!(Y="")!($D(DIRUT)) G END | 
|---|
| 21 | NEXT ;  PRINT THE DATA | 
|---|
| 22 | D ^HLCSORA2 | 
|---|
| 23 | I 'HLZ W !,"No data found for this request" | 
|---|
| 24 | END ; | 
|---|
| 25 | ;  Clean up. Kill the ^TMP and other assorted variables. | 
|---|
| 26 | K ^TMP("HLCSORAT",$J) | 
|---|
| 27 | I $D(ZTQUEUED) S ZTREQ="@" Q | 
|---|
| 28 | K DIRUT,HLZ | 
|---|
| 29 | D ^%ZISC | 
|---|
| 30 | Q | 
|---|
| 31 | PROMPT ;  Find out how user wants report done | 
|---|
| 32 | S HLLL="" | 
|---|
| 33 | S DIR(0)="FAOU" | 
|---|
| 34 | S DIR("A")="Select HL7 Logical Link: " | 
|---|
| 35 | S DIR("B")="All Links" | 
|---|
| 36 | D ^DIR | 
|---|
| 37 | Q:$D(DTOUT)!($D(DUOUT)) | 
|---|
| 38 | I Y="All Links" S Y=0 | 
|---|
| 39 | I Y'=0 D | 
|---|
| 40 | .S X=Y,DIC="^HLCS(870,",DIC(0)="EMQZ" D ^DIC K DIC | 
|---|
| 41 | Q:$D(DTOUT)!($D(DUOUT)) | 
|---|
| 42 | S HLLL=$P(Y,"^",1) | 
|---|
| 43 | I Y=-1 Q | 
|---|
| 44 | S DIR(0)="S^I:IN QUEUE;O:OUT QUEUE;B:BOTH" | 
|---|
| 45 | S DIR("A")="Select queue for report",DIR("B")="B" D ^DIR K DIR | 
|---|
| 46 | S HLQUEUE=Y | 
|---|
| 47 | I '("IOB"[Y) Q | 
|---|
| 48 | S HLQUEUE=$S(HLQUEUE="B":"12",HLQUEUE="I":1,HLQUEUE="O":2) | 
|---|
| 49 | S SET="",CODES=$$GET1^DID(870.019,2,"","POINTER") | 
|---|
| 50 | F HLTMP=1:1 S FOO=$P(CODES,";",HLTMP) Q:(FOO="")  D | 
|---|
| 51 | .S SET=SET_$E(FOO,1,1) | 
|---|
| 52 | ERR S DIR(0)="SOM^"_CODES_"ALL:ALL ERRORS;F:FINISH SELECTING ERRORS" | 
|---|
| 53 | S DIR("A")="Select an error code to sort by"_$S(HLERR'="":" ("_HLERR_")",1:"") | 
|---|
| 54 | S DIR("B")=$S((HLERR=""):"ALL",1:"F") | 
|---|
| 55 | S DIR("?",1)="Select the list of errors that you would like to sort by.  There are also" | 
|---|
| 56 | S DIR("?",2)="two special selections.  ALL means that you would like to sort on all the" | 
|---|
| 57 | S DIR("?")="error codes.  F means that you have finished selecting error codes." | 
|---|
| 58 | D ^DIR K DIR | 
|---|
| 59 | I ((HLERR'[Y)&(Y'="F")) S HLERR=HLERR_Y | 
|---|
| 60 | I Y="ALL" S HLERR=SET | 
|---|
| 61 | I (HLERR="")!($D(DUOUT))!($D(DTOUT)) S Y=-1 Q | 
|---|
| 62 | I (Y'="ALL")&(Y'="F") G ERR | 
|---|
| 63 | S SET="",CODES=$$GET1^DID(870.019,1,"","POINTER") | 
|---|
| 64 | F HLTMP=1:1 S FOO=$P(CODES,";",HLTMP) Q:(FOO="")  D | 
|---|
| 65 | .S SET=SET_$E(FOO,1,1) | 
|---|
| 66 | STAT S DIR(0)="SOM^"_CODES_"ALL:ALL STATUS;F:FINISH SELECTING STATUS CODES" | 
|---|
| 67 | S DIR("A")="Select a status code to sort by"_$S(HLSTAT'="":" ("_HLSTAT_")",1:"") | 
|---|
| 68 | S DIR("B")=$S((HLSTAT=""):"ALL",1:"F") | 
|---|
| 69 | S DIR("?",1)="Select a status code to sort the report by.  There are two special" | 
|---|
| 70 | S DIR("?",2)="selections.  ALL indicates you would like a report on all the statuses.  The" | 
|---|
| 71 | S DIR("?")="F means you are finished selecting statuses." | 
|---|
| 72 | D ^DIR K DIR | 
|---|
| 73 | I ((HLSTAT'[Y)&(Y'="F")) S HLSTAT=HLSTAT_Y | 
|---|
| 74 | I Y="ALL" S HLSTAT=SET | 
|---|
| 75 | I (HLSTAT="")!($D(DTOUT))!($D(DUOUT)) S Y=-1 Q | 
|---|
| 76 | I (Y'="ALL")&(Y'="F") G STAT | 
|---|
| 77 | S HLSORT=HLERR_"^"_HLSTAT | 
|---|
| 78 | Q | 
|---|
| 79 | QUEUED ;  If queued, set up and kick in TASKMAN | 
|---|
| 80 | S ZTRTN="REPORT^HLCSORAT",ZTDESC="HL7 LOGICAL LINK REPORT",ZTSAVE("HLLL")="",ZTSAVE("HLQUEUE")="",ZTSAVE("HLSORT")="" D ^%ZTLOAD | 
|---|
| 81 | W !!,$S($D(ZTSK):"Request Queued",1:"Request Cancelled") | 
|---|
| 82 | K ZTSK | 
|---|
| 83 | Q | 
|---|
| 84 | OPEN ;  Open a device | 
|---|
| 85 | S %ZIS="QM" D ^%ZIS | 
|---|
| 86 | Q | 
|---|