| 1 | ECRPRSN ;ALB/JAP - Procedure Reasons Report;24 JAN 07
 | 
|---|
| 2 |  ;;2.0; EVENT CAPTURE ;**5,18,47,63,72,91**;8 May 96;Build 2
 | 
|---|
| 3 | EN ;entry point from menu option
 | 
|---|
| 4 |  N JJ
 | 
|---|
| 5 |  W ! S JJ=$$ASKLOC^ECRUTL I 'JJ G EXIT
 | 
|---|
| 6 |  W ! S JJ=$$ASKDSS^ECRUTL I 'JJ G EXIT
 | 
|---|
| 7 |  W ! S JJ=$$ASKREAS() I 'JJ G EXIT
 | 
|---|
| 8 |  W !
 | 
|---|
| 9 |  D RANGE
 | 
|---|
| 10 |  I '$G(ECLOOP)!'$G(ECSD)!'$G(ECED) G EXIT
 | 
|---|
| 11 |  W ! D DEVICE I POP G EXIT
 | 
|---|
| 12 |  I $G(ZTSK) G EXIT
 | 
|---|
| 13 |  I $G(IO("Q")),'$G(ZTSK) G EXIT
 | 
|---|
| 14 |  D START,HOME^%ZIS
 | 
|---|
| 15 |  G EXIT
 | 
|---|
| 16 |  Q
 | 
|---|
| 17 | START ;queued entry point or continuation
 | 
|---|
| 18 |  D PROCESS
 | 
|---|
| 19 |  U IO D PRINT Q:$D(ECGUI)
 | 
|---|
| 20 |  I IO'=IO(0) D ^%ZISC
 | 
|---|
| 21 |  I $D(ZTQUEUED) S ZTREQ="@" D EXIT
 | 
|---|
| 22 |  Q
 | 
|---|
| 23 | ASKREAS()        ; Ask reasons
 | 
|---|
| 24 |  ;   output: ECREAS array; contains set of reason iens
 | 
|---|
| 25 |  N DIRUT,DUOUT,DTOUT,Y,DIR,A,P,R,S,JJ,KK,NLOC,NUNIT,LINK,ECREAS,E
 | 
|---|
| 26 |  ;setup array of associated reason iens for the locations/units included
 | 
|---|
| 27 |  W !!,"Just a moment please..."
 | 
|---|
| 28 |  W !,?5,"...finding Procedure Reasons related to the"
 | 
|---|
| 29 |  W !,?5,"   Location(s) and DSS Unit(s) you selected...",!
 | 
|---|
| 30 |  S JJ="" F  S JJ=$O(ECLOC(JJ)) Q:JJ=""  D
 | 
|---|
| 31 |  .S NLOC=$P(ECLOC(JJ),"^",1)
 | 
|---|
| 32 |  .S KK="" F  S KK=$O(ECDSSU(KK)) Q:KK=""  S NUNIT=$P(ECDSSU(KK),"^",1),A(NLOC_"-"_NUNIT)=""
 | 
|---|
| 33 |  S P=""
 | 
|---|
| 34 |  F  S P=$O(^ECJ("B",P)) Q:P=""  I $D(A($P(P,"-",1,2))) S I=$O(^ECJ("B",P,"")),S(I)=""
 | 
|---|
| 35 |  K A S P="" F  S P=$O(^ECL("AD",P)) Q:P=""  I $D(S(P)) S R="" D
 | 
|---|
| 36 |  .F  S R=$O(^ECL("AD",P,R)) Q:R=""  D
 | 
|---|
| 37 |  ..S LINK=$O(^ECL("AD",P,R,"")),ECLINK(LINK)=R
 | 
|---|
| 38 |  ..S ECREAS(R)=$P($G(^ECR(R,0)),"^",1)
 | 
|---|
| 39 |  ..I ECREAS(R)="" K ECREAS(R),ECLINK(LINK)
 | 
|---|
| 40 |  K S
 | 
|---|
| 41 |  ;ask the user to include all reasons or selected reasons
 | 
|---|
| 42 |  S ASK=1
 | 
|---|
| 43 |  S DIR(0)="YA",DIR("A")="Do you want to print this report for all Procedure Reasons? "
 | 
|---|
| 44 |  S DIR("B")="YES" W ! D ^DIR K DIR I Y=0,'$G(DIRUT) D SPECR
 | 
|---|
| 45 |  I $G(DIRUT)!(Y=0) S ASK=0 K ECREAS
 | 
|---|
| 46 |  ;display user selections
 | 
|---|
| 47 |  I $D(ECREAS)>1 D
 | 
|---|
| 48 |  .W @IOF S E=0 W !,"Selected Procedure Reasons --",!
 | 
|---|
| 49 |  .S R="" F  S R=$O(ECREAS(R)) Q:R=""  D  I E Q
 | 
|---|
| 50 |  ..I $Y+3>IOSL S DIR(0)="E" D ^DIR K DIR S:'Y E=1 Q:'Y  D
 | 
|---|
| 51 |  ...W @IOF,!,"Selected Procedure Reasons (cont.) --",!
 | 
|---|
| 52 |  ..W !,?5,ECREAS(R)
 | 
|---|
| 53 |  .Q:E  S DIR(0)="E" D  D ^DIR K DIR
 | 
|---|
| 54 |  ..S SS=22-$Y F JJ=1:1:SS W !
 | 
|---|
| 55 |  Q ASK
 | 
|---|
| 56 | SPECR ;specific reasons
 | 
|---|
| 57 |  N R,DUOUT,DTOUT
 | 
|---|
| 58 |  K DIRUT,Y
 | 
|---|
| 59 |  S DIR(0)="YA",DIR("A")="Do you want to include only specific Procedure Reasons in this report? ",DIR("B")="YES"
 | 
|---|
| 60 |  S DIR("?")="Enter YES to select specific Procedure Reasons or NO to quit."
 | 
|---|
| 61 |  W ! D ^DIR K DIR Q:$G(DIRUT)!(Y=0)
 | 
|---|
| 62 |  ;select subset of possible reasons
 | 
|---|
| 63 |  K DIRUT,DTOUT,DUOUT,Y
 | 
|---|
| 64 |  F  D  Q:$G(DIRUT)!(Y=-1)
 | 
|---|
| 65 |  .S DIC=720.4,DIC("A")="Select a Procedure Reason to include: ",DIC(0)="QAEM"
 | 
|---|
| 66 |  .S DIC("S")="I $D(ECREAS(+Y))"
 | 
|---|
| 67 |  .W ! D ^DIC Q:$G(DUOUT)!$G(DTOUT)!(Y=-1)
 | 
|---|
| 68 |  .S R(+Y)=""
 | 
|---|
| 69 |  S:$G(DTOUT)!($G(DUOUT)) DIRUT=1
 | 
|---|
| 70 |  Q:$G(DIRUT)
 | 
|---|
| 71 |  ;delete reasons from ecreas array which were not selected
 | 
|---|
| 72 |  I $D(R)<10 S Y=0 Q
 | 
|---|
| 73 |  S R="" F  S R=$O(ECREAS(R)) Q:R=""  I '$D(R(R)) K ECREAS(R)
 | 
|---|
| 74 |  ;delete links from eclink array for reasons not selected
 | 
|---|
| 75 |  S LINK="" F  S LINK=$O(ECLINK(LINK)) Q:LINK=""  S R=ECLINK(LINK) I '$D(ECREAS(R)) K ECLINK(LINK)
 | 
|---|
| 76 |  S Y=1
 | 
|---|
| 77 |  Q
 | 
|---|
| 78 | RANGE ;get any date range
 | 
|---|
| 79 |  N ECSTDT,ECENDDT
 | 
|---|
| 80 |  W !!!,?5,"Enter a Begin Date and End Date for the Event Capture "
 | 
|---|
| 81 |  W !,?5,"Procedure Reason Report.",!
 | 
|---|
| 82 |  S (ECSD,ECED)=0
 | 
|---|
| 83 |  F  D  Q:ECSD>0  Q:'$G(ECLOOP)
 | 
|---|
| 84 |  .S ECLOOP=$$STDT^ECRUTL() I 'ECLOOP Q
 | 
|---|
| 85 |  .S ECSD=ECSTDT
 | 
|---|
| 86 |  Q:'$G(ECLOOP)!'$G(ECSD)
 | 
|---|
| 87 |  F  D  Q:ECED>0  Q:'$G(ECLOOP)
 | 
|---|
| 88 |  .S ECLOOP=$$ENDDT^ECRUTL(ECSTDT) I 'ECLOOP Q
 | 
|---|
| 89 |  .S ECED=ECENDDT
 | 
|---|
| 90 |  .I ECED>(DT+1) D
 | 
|---|
| 91 |  ..W !!,?15,"The End Date for this report may not be"
 | 
|---|
| 92 |  ..W !,?15,"a future date.  Try again...",!
 | 
|---|
| 93 |  ..S ECED=0
 | 
|---|
| 94 |  Q 
 | 
|---|
| 95 |  ;
 | 
|---|
| 96 | DEVICE ;select output device
 | 
|---|
| 97 |  W ! K IOP,ZTSK S %ZIS="QM" D ^%ZIS
 | 
|---|
| 98 |  I POP W !!,"No device selected.  Exiting...",!! S DIR(0)="E" W ! D ^DIR K DIR Q
 | 
|---|
| 99 |  I $D(IO("Q")) D
 | 
|---|
| 100 |  .S ZTRTN="START^ECRPRSN",ZTDESC="EC Procedure Reason Report"
 | 
|---|
| 101 |  .S ZTSAVE("ECSD")="",ZTSAVE("ECED")="",ZTSAVE("ECLOC(")="",ZTSAVE("ECDSSU(")="",ZTSAVE("ECLINK(")=""
 | 
|---|
| 102 |  .D ^%ZTLOAD D HOME^%ZIS
 | 
|---|
| 103 |  .I '$G(ZTSK) W !,"Report canceled..." S DIR(0)="E" W ! D ^DIR K DIR Q
 | 
|---|
| 104 |  .W !,"Report queued as Task #: ",ZTSK S DIR(0)="E" W ! D ^DIR K DIR
 | 
|---|
| 105 |  Q
 | 
|---|
| 106 |  ;
 | 
|---|
| 107 | PROCESS ;get data to print
 | 
|---|
| 108 |  N EC,ECD,ECDA,ECPA,ECR,ECRL,ECRN,ECPATN,ECSS,ECSSN,ECP,ECPN,ECLOCA
 | 
|---|
| 109 |  N ECUNIT,ECCAT,ECFILE,ECPSY,ECPSYN,ECPRV,ECPRVN,ECDFN,ECCPT,ECDESC
 | 
|---|
| 110 |  N NLOC,NUNIT,JJ,ECMOD,ECMD,ECMODF,EC725
 | 
|---|
| 111 |  K ^TMP("ECREAS",$J)
 | 
|---|
| 112 |  ;if ecreas array doesn't exist, quit
 | 
|---|
| 113 |  I $D(ECLINK)<10 Q
 | 
|---|
| 114 |  ;put locations and units into ien subscripted arrays
 | 
|---|
| 115 |  S JJ="" F  S JJ=$O(ECLOC(JJ)) Q:JJ=""  D
 | 
|---|
| 116 |  .S NLOC($P(ECLOC(JJ),"^",1))=$P(ECLOC(JJ),"^",2)
 | 
|---|
| 117 |  S JJ="" F  S JJ=$O(ECDSSU(JJ)) Q:JJ=""  D
 | 
|---|
| 118 |  .S NUNIT($P(ECDSSU(JJ),"^",1))=$P(ECDSSU(JJ),"^",2)
 | 
|---|
| 119 |  S ECD=ECSD F  S ECD=$O(^ECH("AC",ECD)) Q:'ECD  Q:ECD>ECED  D
 | 
|---|
| 120 |  .S ECDA="" F  S ECDA=$O(^ECH("AC",ECD,ECDA)) Q:'ECDA  S EC=$G(^ECH(ECDA,0))  I $P(EC,"^",23)'="" D
 | 
|---|
| 121 |  ..S ECDFN=$P(EC,"^")
 | 
|---|
| 122 |  ..I $P(EC,"^",3)<ECSD!($P(EC,"^",3)>ECED) Q  ;file or x-ref problem
 | 
|---|
| 123 |  ..S ECLOCA=+$P(EC,U,4),ECUNIT=+$P(EC,U,7)
 | 
|---|
| 124 |  ..I '$D(NLOC(ECLOCA))!('$D(NUNIT(ECUNIT))) Q
 | 
|---|
| 125 |  ..S ECRL=$P(EC,"^",23) Q:'$D(ECLINK(ECRL))  S ECR=ECLINK(ECRL),ECRN=$P($G(^ECR(ECR,0)),"^") Q:ECRN']""
 | 
|---|
| 126 |  ..S ECP=$P(EC,U,9) Q:ECP']""
 | 
|---|
| 127 |  ..S ECCAT=+$P(EC,U,8),ECPSY=+$O(^ECJ("AP",ECLOCA,ECUNIT,ECCAT,ECP,""))
 | 
|---|
| 128 |  ..S ECPSYN=$P($G(^ECJ(ECPSY,"PRO")),"^",2),ECPI=""
 | 
|---|
| 129 |  ..S ECFILE=$P(ECP,";",2),ECFILE=$S($E(ECFILE)="I":81,$E(ECFILE)="E":725,1:"UNKNOWN")
 | 
|---|
| 130 |  ..S ECCPT=$S(ECFILE=81:+ECP,1:$P($G(^EC(725,+ECP,0)),"^",5))
 | 
|---|
| 131 |  ..I ECCPT'="" D
 | 
|---|
| 132 |  ...S ECPI=$$CPT^ICPTCOD(ECCPT,$P(ECED,".")) I +ECPI>1 S ECCPT=$P(ECPI,"^",2)_" "
 | 
|---|
| 133 |  ..I ECFILE="UNKNOWN" S ECPN="UNKNOWN"
 | 
|---|
| 134 |  ..I ECFILE=81 S ECPN=$S($P(ECPI,"^",3)]"":$P(ECPI,"^",3),1:"UNKNOWN")
 | 
|---|
| 135 |  ..I ECFILE=725 S EC725=$G(^EC(725,+ECP,0)),ECPN=$P(EC725,"^",2)_" "_$P(EC725,"^")
 | 
|---|
| 136 |  ..Q:ECPN=""
 | 
|---|
| 137 |  ..S ECDESC=$J(ECCPT_" ",6)_$E(ECPN,1,40)_$S(ECPSYN]"":" ["_ECPSYN_"] ",1:"")
 | 
|---|
| 138 |  ..S (ECPA,ECPATN,ECSS)="",ECPA=$G(^DPT(+$P(EC,"^",2),0)) Q:ECPA=""
 | 
|---|
| 139 |  ..S ECPATN=$E($P(ECPA,"^",1),1,24),ECSS=$P(ECPA,"^",9)
 | 
|---|
| 140 |  ..S:+ECSS ECSSN=$E(ECSS,6,9) S:ECSS="" ECSSN="UNKNOWN"
 | 
|---|
| 141 |  ..S:ECPATN="" ECPATN="UNKNOWN" S ECPATN=ECPATN_"^"_ECSSN
 | 
|---|
| 142 |  ..S (ECPRV,ECPRVN)="",ECPRV=$$GETPPRV^ECPRVMUT(ECDA,.ECPRVN),ECPRVN=$S(ECPRV:"UNKNOWN",1:ECPRVN)
 | 
|---|
| 143 |  ..S ECMD="" I $O(^ECH(ECDA,"MOD",0))'="" D  ;ALB/JAM - Get CPT modifiers
 | 
|---|
| 144 |  ...K ECMOD S ECMODF=$$MOD^ECUTL(ECDA,"I",.ECMOD),SEQ="" I 'ECMODF Q
 | 
|---|
| 145 |  ...F  S SEQ=$O(ECMOD(SEQ)) Q:SEQ=""  S ECMD=ECMD_$S(ECMD="":"",1:";")_$P(ECMOD(SEQ),"^",2)
 | 
|---|
| 146 |  ..I ECMD="" S ECMD="NOMOD"
 | 
|---|
| 147 |  ..S ^TMP("ECREAS",$J,ECLOCA,ECUNIT,ECRN,$E(ECPN,1,15))=ECDESC
 | 
|---|
| 148 |  ..S ^TMP("ECREAS",$J,ECLOCA,ECUNIT,ECRN,$E(ECPN,1,15),ECMD,ECDFN,ECD)=ECPRVN_"^"_ECPATN
 | 
|---|
| 149 |  ..;where ecloca, ecunit,ecdfn are iens, ecdt is internal format
 | 
|---|
| 150 |  Q
 | 
|---|
| 151 | PRINT ;output report
 | 
|---|
| 152 |  N ECLOCA,ECUNIT,ECREASN,ECDT,ECED2,ECSD2,ECPATN,ECPN,ECPRVN,SEQ,X,Y,SSN
 | 
|---|
| 153 |  N PAGE,QFLAG,DASH,PRNTDT,JJ,SS,ALOC,AUNIT,DATE,LOC,UNIT,PTNAME,PROVN,ECDESC
 | 
|---|
| 154 |  S (PAGE,QFLAG)=0 S $P(DASH,"-",80)=""
 | 
|---|
| 155 |  S Y=$P(ECSD,".",1)+1 D DD^%DT S ECSD2=Y S Y=$P(ECED,".",1) D DD^%DT S ECED2=Y
 | 
|---|
| 156 |  D NOW^%DTC S Y=$E(%,1,12) D DD^%DT S PRNTDT=Y
 | 
|---|
| 157 |  ;if no data exists then print the header and quit
 | 
|---|
| 158 |  I '$D(^TMP("ECREAS",$J)) D  Q
 | 
|---|
| 159 |  .S (LOC,UNIT)="" D HEAD
 | 
|---|
| 160 |  .W !!,?6,"No data for the date range specified.",!!
 | 
|---|
| 161 |  .I $E(IOST)="C"&('QFLAG) S DIR(0)="E" D  D ^DIR K DIR
 | 
|---|
| 162 |  ..S SS=22-$Y F JJ=1:1:SS W !
 | 
|---|
| 163 |  .W:$E(IOST)'="C" @IOF
 | 
|---|
| 164 |  ;if there's data in ^TMP then need to present the data alphabetically;
 | 
|---|
| 165 |  ;put locations and units in alpha ordered array
 | 
|---|
| 166 |  S JJ="" F  S JJ=$O(ECLOC(JJ)) Q:JJ=""  D
 | 
|---|
| 167 |  .S ALOC($P(ECLOC(JJ),"^",2))=$P(ECLOC(JJ),"^",1)
 | 
|---|
| 168 |  S JJ="" F  S JJ=$O(ECDSSU(JJ)) Q:JJ=""  D
 | 
|---|
| 169 |  .S AUNIT($P(ECDSSU(JJ),"^",2))=$P(ECDSSU(JJ),"^",1)
 | 
|---|
| 170 |  ;process the ^TMP global data in alpha order for location and unit
 | 
|---|
| 171 |  S LOC="" F  S LOC=$O(ALOC(LOC)) Q:LOC=""  S ECLOCA=ALOC(LOC) D  Q:QFLAG
 | 
|---|
| 172 |  .S UNIT="" F  S UNIT=$O(AUNIT(UNIT)) Q:UNIT=""  S ECUNIT=AUNIT(UNIT) D  Q:QFLAG
 | 
|---|
| 173 |  ..;always start a location at top of page
 | 
|---|
| 174 |  ..I $D(^TMP("ECREAS",$J,ECLOCA,ECUNIT)) D HEAD D LOOP
 | 
|---|
| 175 |  ;all done
 | 
|---|
| 176 |  I $E(IOST)="C"&('QFLAG) S DIR(0)="E" D  D ^DIR W @IOF
 | 
|---|
| 177 |  .S SS=22-$Y F JJ=1:1:SS W !
 | 
|---|
| 178 |  W:$E(IOST)'="C" @IOF
 | 
|---|
| 179 |  Q
 | 
|---|
| 180 | LOOP ;print the section of the ^tmp global for a specific location/unit
 | 
|---|
| 181 |  S ECREASN=""
 | 
|---|
| 182 |  F  S ECREASN=$O(^TMP("ECREAS",$J,ECLOCA,ECUNIT,ECREASN)) Q:ECREASN=""  Q:QFLAG  D
 | 
|---|
| 183 |  .D:($Y+3>IOSL) HEAD Q:QFLAG  W !!,"Reason: ",ECREASN,! S ECPN=""
 | 
|---|
| 184 |  .F  S ECPN=$O(^TMP("ECREAS",$J,ECLOCA,ECUNIT,ECREASN,ECPN)) Q:ECPN=""  Q:QFLAG  D
 | 
|---|
| 185 |  ..S ECDESC=$G(^TMP("ECREAS",$J,ECLOCA,ECUNIT,ECREASN,ECPN)),ECMOD=""
 | 
|---|
| 186 |  ..F  S ECMOD=$O(^TMP("ECREAS",$J,ECLOCA,ECUNIT,ECREASN,ECPN,ECMOD)) Q:ECMOD=""  D  Q:QFLAG
 | 
|---|
| 187 |  ...W !,?3,"Procedure: ",ECDESC D:ECMOD'="NOMOD" MODPRT Q:QFLAG  D LOOP1
 | 
|---|
| 188 |  Q
 | 
|---|
| 189 | LOOP1 S ECPATN="" F  S ECPATN=$O(^TMP("ECREAS",$J,ECLOCA,ECUNIT,ECREASN,ECPN,ECMOD,ECPATN)) Q:ECPATN=""  Q:QFLAG  D
 | 
|---|
| 190 |  .S ECDT="" F  S ECDT=$O(^TMP("ECREAS",$J,ECLOCA,ECUNIT,ECREASN,ECPN,ECMOD,ECPATN,ECDT)) Q:ECDT=""  Q:QFLAG  D
 | 
|---|
| 191 |  ..S ECPRVN=^(ECDT),PTNAME=$P(ECPRVN,"^",3),PTNAME=$E(PTNAME,1,22)
 | 
|---|
| 192 |  ..S SSN=$P(ECPRVN,"^",4),ECPRVN=$P(ECPRVN,"^",2)
 | 
|---|
| 193 |  ..S Y=ECDT D DD^%DT S DATE=$E(Y,1,18),PROVN=$E(ECPRVN,1,22)
 | 
|---|
| 194 |  ..D:($Y+3>IOSL) HEAD Q:QFLAG  W !,?6,PTNAME,?30,SSN,?37,DATE,?57,PROVN
 | 
|---|
| 195 |  W !
 | 
|---|
| 196 |  Q
 | 
|---|
| 197 | MODPRT ;ALB/JAM - print CPT procedure modifiers
 | 
|---|
| 198 |  N MOD,I,MODESC,IEN,MODI
 | 
|---|
| 199 |  W !?4,"Modifier: "
 | 
|---|
| 200 |  F I=1:1 S IEN=$P(ECMOD,";",I) Q:IEN=""  D  I QFLAG Q
 | 
|---|
| 201 |  . S MODI=$$MOD^ICPTMOD(IEN,"E",$P(ECED,".")),MOD=$P(MODI,"^",2) I MOD="" Q
 | 
|---|
| 202 |  . S MODESC=$P(MODI,"^",3) I MODESC="UNKNOWN" Q
 | 
|---|
| 203 |  . W:I>1 ! W ?18,"- ",MOD," ",MODESC I ($Y+3)>IOSL D HEAD
 | 
|---|
| 204 |  Q
 | 
|---|
| 205 | HEAD ;header
 | 
|---|
| 206 |  I $E(IOST)="C" S SS=22-$Y F JJ=1:1:SS W !
 | 
|---|
| 207 |  I $E(IOST)="C",PAGE>0 S DIR(0)="E" W ! D ^DIR K DIR I 'Y S QFLAG=1 Q
 | 
|---|
| 208 |  W:$Y!($E(IOST)="C") @IOF
 | 
|---|
| 209 |  S PAGE=PAGE+1
 | 
|---|
| 210 |  W !,?12,"Event Capture Procedure Reason Report"
 | 
|---|
| 211 |  W !,?12,"for the Date Range ",$$FMTE^XLFDT(ECSD2)," to ",$$FMTE^XLFDT(ECED2),!
 | 
|---|
| 212 |  W !,?3,"DSS Unit: ",UNIT,?55,"Page: ",PAGE
 | 
|---|
| 213 |  W !,?3,"Location: ",LOC,?52,"Printed: "_PRNTDT,!
 | 
|---|
| 214 |  W !?6,"Patient",?30,"SSN",?37,"Date/Time",?57,"Provider"
 | 
|---|
| 215 |  W !,DASH
 | 
|---|
| 216 |  Q
 | 
|---|
| 217 | EXIT ;common exit point
 | 
|---|
| 218 |  D ^ECKILL D:'$D(ECGUI) ^%ZISC
 | 
|---|
| 219 |  K ^TMP("ECREAS",$J) K JJ,X,Y,ZTSK,IO("Q"),DIR,DIRUT,DTOUT,DUOUT,ECSD
 | 
|---|
| 220 |  K ECED,ECLOOP,ECLOC,ECDSSU,ECLINK,ASK,DIC
 | 
|---|
| 221 |  Q
 | 
|---|