| 1 | ONCACD0 ;Hines OIFO/GWB - NAACCR extract driver ;06/11/01
 | 
|---|
| 2 |  ;;2.11;Oncology;**9,12,20,24,25,28,29,30,36,37,38,40,41,44,45,47**;Mar 07, 1995;Build 19
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 | EN1(DEVICE,STEXT) ;Select extract from ONCOLOGY DATA EXTRACT FORMAT (160.16)
 | 
|---|
| 5 | EN2 N EXTRACT,HDRIEN,STAT,STAT1,STAT2,DATE,YESNO,BDT,SDT,EDT,QUEUE
 | 
|---|
| 6 |  K ^TMP($J)
 | 
|---|
| 7 |  S DEVICE=$G(DEVICE,0),STEXT=$G(STEXT,0),(EXTRACT,QUEUE)=0,EXT=""
 | 
|---|
| 8 |  I STEXT=0 S EXTRACT=$O(^ONCO(160.16,"B","NCDB EXTRACT V11.1",0))
 | 
|---|
| 9 |  S (STAT,DATE,OUT,SDT,EDT)=0
 | 
|---|
| 10 |  S HDRIEN=EXTRACT
 | 
|---|
| 11 |  D DISPLAY
 | 
|---|
| 12 |  I STEXT=1 D GETREC(.EXTRACT,.OUT)
 | 
|---|
| 13 |  I 'OUT S STAT=$$GETHOSP
 | 
|---|
| 14 |  I 'STAT S OUT=1
 | 
|---|
| 15 |  I 'OUT S STAT1=$P(STAT,U,1),STAT2=$P(STAT,U,2)
 | 
|---|
| 16 |  I 'OUT D GETDATE(.DATE,.OUT)
 | 
|---|
| 17 |  I 'OUT,STEXT D GETDT(.SDT,.EDT,DATE,.OUT)
 | 
|---|
| 18 |  I 'OUT D VERIFY(STAT,DATE,SDT,EDT,STEXT,.YESNO,.OUT)
 | 
|---|
| 19 |  I 'OUT G:'YESNO EN2
 | 
|---|
| 20 |  I 'OUT D DEVICE(DEVICE,.OUT)
 | 
|---|
| 21 |  I 'OUT D:'QUEUE PRINT(DEVICE,.OUT)
 | 
|---|
| 22 |  D EXIT
 | 
|---|
| 23 |  Q
 | 
|---|
| 24 |  ;
 | 
|---|
| 25 | GETREC(EXTRACT,OUT) ;Select record layout
 | 
|---|
| 26 |  W !!," Available record layouts:",!
 | 
|---|
| 27 |  W !,"  1) VACCR Record Layout v11.1 (VA Registry)"
 | 
|---|
| 28 |  W !,"  2) NAACCR State Record Layout v11.1"
 | 
|---|
| 29 |  W !
 | 
|---|
| 30 |  N DIR,X,Y
 | 
|---|
| 31 |  S DIR(0)="SAO^1:VACCR Record Layout v11.1;2:NAACCR State Record Layout v11.1"
 | 
|---|
| 32 |  S DIR("A")=" Select record layout: "
 | 
|---|
| 33 |  S DIR("?")="Select the record layout to use"
 | 
|---|
| 34 |  D ^DIR
 | 
|---|
| 35 |  I $D(DIRUT) S OUT=1 Q
 | 
|---|
| 36 |  I +Y<1 S OUT=1 Q
 | 
|---|
| 37 |  I Y=1 S EXT="VACCR",EXTRACT=$O(^ONCO(160.16,"B","VACCR EXTRACT V11.1",0))
 | 
|---|
| 38 |  I Y=2 S EXT="STATE",EXTRACT=$O(^ONCO(160.16,"B","STATE EXTRACT V11.1",0))
 | 
|---|
| 39 |  S HDRIEN=EXTRACT
 | 
|---|
| 40 |  Q
 | 
|---|
| 41 |  ;
 | 
|---|
| 42 | DISPLAY ;Display on-line instructions
 | 
|---|
| 43 |  N X,DIR,Y
 | 
|---|
| 44 |  S DIR("A")="    DISPLAY/PRINT on-line instructions"
 | 
|---|
| 45 |  S DIR("B")="No"
 | 
|---|
| 46 |  S DIR(0)="Y"
 | 
|---|
| 47 |  D ^DIR I ($D(DIRUT))!(+Y<1) Q
 | 
|---|
| 48 |  I X=0 Q
 | 
|---|
| 49 |  I X<0 S OUT=1 Q
 | 
|---|
| 50 |  W ! S DIC="^ONCO(160.2,",L=0,DHD="@"
 | 
|---|
| 51 |  S FLDS="1",BY="@.01"
 | 
|---|
| 52 |  I STEXT S (FR,TO)="STATE REPORTING ACOS INFOA"
 | 
|---|
| 53 |  E  S (FR,TO)="PRIMARY ACOS INFO (850)"
 | 
|---|
| 54 |  D EN1^DIP
 | 
|---|
| 55 |  S:'($D(DTOUT)+$D(DUOUT)=0) OUT=1
 | 
|---|
| 56 |  S X=$$ASKY^ONCOU("Continue")
 | 
|---|
| 57 |  S:X<1 OUT=1
 | 
|---|
| 58 |  Q
 | 
|---|
| 59 |  ;
 | 
|---|
| 60 | GETDT(SDT,EDT,DATE,OUT) ; Select a date range
 | 
|---|
| 61 |  K DIR
 | 
|---|
| 62 |  S DIR(0)="SAO^1:Date Case Completed;2:Date Case Last Changed"
 | 
|---|
| 63 |  S DIR("A")=" Select date field to be used for Start/End range: "
 | 
|---|
| 64 |  S DIR("?")="Select the date field you wish to use for this download's Start/End range prompts."
 | 
|---|
| 65 |  D ^DIR
 | 
|---|
| 66 |  I $D(DIRUT) S OUT=1 Q
 | 
|---|
| 67 |  I Y<1 S OUT=1 Q
 | 
|---|
| 68 |  I +Y=2 S STEXT=2
 | 
|---|
| 69 |  K DIR
 | 
|---|
| 70 |  S DIR(0)="D^::X"
 | 
|---|
| 71 |  I STEXT=1 D
 | 
|---|
| 72 |  .S DIR("A")=" Start, Date Case Completed"
 | 
|---|
| 73 |  .S DIR("?",1)="   Enter the DATE CASE COMPLETED of the"
 | 
|---|
| 74 |  .S DIR("?",2)="   FIRST abstract you would like to report."
 | 
|---|
| 75 |  I STEXT=2 D
 | 
|---|
| 76 |  .S DIR("A")=" Start, Date Case Last Changed"
 | 
|---|
| 77 |  .S DIR("?",1)="   Enter the DATE CASE LAST CHANGED of the"
 | 
|---|
| 78 |  .S DIR("?",2)="   FIRST abstract you would like to report."
 | 
|---|
| 79 |  S DIR("?")=" "
 | 
|---|
| 80 |  D ^DIR I $D(DIRUT) S OUT=1 Q
 | 
|---|
| 81 |  S (SDT,BDT)=Y
 | 
|---|
| 82 |  S DIR(0)="D^::X"
 | 
|---|
| 83 |  I STEXT=1 D
 | 
|---|
| 84 |  .S DIR("A")="   End, Date Case Completed"
 | 
|---|
| 85 |  .S DIR("?",1)="   Enter the DATE CASE COMPLETED of the"
 | 
|---|
| 86 |  .S DIR("?",2)="   LAST abstract you would like to report."
 | 
|---|
| 87 |  I STEXT=2 D
 | 
|---|
| 88 |  .S DIR("A")="   End, Date Case Last Changed"
 | 
|---|
| 89 |  .S DIR("?",1)="   Enter the DATE CASE LAST CHANGED  of the"
 | 
|---|
| 90 |  .S DIR("?",2)="   LAST abstract you would like to report."
 | 
|---|
| 91 |  D ^DIR I $D(DIRUT) S OUT=1 Q
 | 
|---|
| 92 |  S EDT=Y
 | 
|---|
| 93 |  I EXT="" Q
 | 
|---|
| 94 |  I EXT="VACCR" S ACO=1 Q
 | 
|---|
| 95 |  K DIR
 | 
|---|
| 96 |  S DIR("A")=" Analytic cases only"
 | 
|---|
| 97 |  S DIR("B")="YES"
 | 
|---|
| 98 |  S DIR(0)="Y"
 | 
|---|
| 99 |  S DIR("?")=" "
 | 
|---|
| 100 |  S DIR("?",1)=" Answer 'YES' if you want only analytic cases (CLASS OF CASE 0-2) extracted."
 | 
|---|
| 101 |  S DIR("?",2)=" Answer  'NO' if you want all cases (analytic and non-analytic) extracted."
 | 
|---|
| 102 |  D ^DIR
 | 
|---|
| 103 |  I $D(DIRUT) S OUT=1 Q
 | 
|---|
| 104 |  S ACO=Y
 | 
|---|
| 105 |  Q
 | 
|---|
| 106 |  ;
 | 
|---|
| 107 | PRINT(DEVICE,OUT) ;Capture output data
 | 
|---|
| 108 |  I 'DEVICE D  Q:OUT
 | 
|---|
| 109 |  .N X
 | 
|---|
| 110 |  .W !!
 | 
|---|
| 111 |  .W !,?6,"--------------------------------------------------------------"
 | 
|---|
| 112 |  .W !,?6,"|Please activate your PC capture program.  The data will be  |"
 | 
|---|
| 113 |  .W !,?6,"|sent in 2 minutes or when you press the return key.         |"
 | 
|---|
| 114 |  .W !,?6,"--------------------------------------------------------------"
 | 
|---|
| 115 |  .W !!!
 | 
|---|
| 116 |  .R X:120
 | 
|---|
| 117 |  .I X="^" S OUT=1
 | 
|---|
| 118 |  U IO D EN1^ONCACD1
 | 
|---|
| 119 |  Q
 | 
|---|
| 120 |  ;
 | 
|---|
| 121 | EXIT ;Exit
 | 
|---|
| 122 |  K D0,DI,DIC,DISYS,DQ,FIL,ONCOM,ONCOT,ONCOYR,OUT,ST,STGIND,X,Y
 | 
|---|
| 123 |  I '$D(^TMP($J)) W !?3,"No records extracted." G EX
 | 
|---|
| 124 |  W !
 | 
|---|
| 125 |  S DIC="^ONCO(165.5,",L=0,FLDS="[ONC EXTRACT]",BY(0)="^TMP($J,",L(0)=1
 | 
|---|
| 126 |  S:DEVICE IOP=ION
 | 
|---|
| 127 |  I STEXT=0 S DHD=$P(^ONCO(160.16,HDRIEN,0),U,1) W !
 | 
|---|
| 128 |  I (STEXT=1)!(STEXT=2) S DHD=$P(^ONCO(160.16,HDRIEN,0),U,1)_" "_$$FMTE^XLFDT(BDT,"2D")_" - "_$$FMTE^XLFDT(EDT,"2D")
 | 
|---|
| 129 |  D EN1^DIP
 | 
|---|
| 130 |  I IOST?1"C".E K DIR S DIR(0)="E" D ^DIR Q:'Y
 | 
|---|
| 131 | EX K ^TMP($J)
 | 
|---|
| 132 |  K %ZIS
 | 
|---|
| 133 |  D ^%ZISC
 | 
|---|
| 134 |  Q
 | 
|---|
| 135 |  ;
 | 
|---|
| 136 | DEVICE(DEVICE,OUT) ;Select output device
 | 
|---|
| 137 |  Q:'DEVICE
 | 
|---|
| 138 |  S %ZIS="Q"
 | 
|---|
| 139 |  D ^%ZIS
 | 
|---|
| 140 |  I POP S OUT=1 Q
 | 
|---|
| 141 |  I $D(IO("Q")) D
 | 
|---|
| 142 |  .S ZTRTN="PRINT^ONCACD0(DEVICE,.OUT)"
 | 
|---|
| 143 |  .S ZTDESC=$S('STEXT:"ONC NCDB Extract",STEXT:"ONC State Extract",1:"")
 | 
|---|
| 144 |  .S ZTSAVE("STAT1")=""
 | 
|---|
| 145 |  .S ZTSAVE("DATE")=""
 | 
|---|
| 146 |  .S ZTSAVE("STEXT")=""
 | 
|---|
| 147 |  .S ZTSAVE("DEVICE")=""
 | 
|---|
| 148 |  .S ZTSAVE("OUT")=""
 | 
|---|
| 149 |  .S ZTSAVE("BDT")=""
 | 
|---|
| 150 |  .S ZTSAVE("SDT")=""
 | 
|---|
| 151 |  .S ZTSAVE("EDT")=""
 | 
|---|
| 152 |  .S ZTSAVE("EXTRACT")=""
 | 
|---|
| 153 |  .S ZTSAVE("HDRIEN")=""
 | 
|---|
| 154 |  .D ^%ZTLOAD
 | 
|---|
| 155 |  .I $D(ZTSK)[0 S OUT=1 W !!,?20,"Report Canceled!"
 | 
|---|
| 156 |  .E  W !!,?20,"Report Queued!" S QUEUE=1
 | 
|---|
| 157 |  .D HOME^%ZIS
 | 
|---|
| 158 |  Q
 | 
|---|
| 159 |  ;
 | 
|---|
| 160 | VERIFY(STAT,DATE,SDT,EDT,STEXT,YESNO,OUT) ;Verify settings
 | 
|---|
| 161 |  N DIR,Y
 | 
|---|
| 162 |  S RL=$P(^ONCO(160.16,HDRIEN,0),U,1)
 | 
|---|
| 163 |  W !!," These are your current settings:"
 | 
|---|
| 164 |  W !
 | 
|---|
| 165 |  W !," Record layout.......................: ",RL
 | 
|---|
| 166 |  W !," Facility Identification Number (FIN): ",STAT1
 | 
|---|
| 167 |  I EXT="STATE" D
 | 
|---|
| 168 |  .W !," State to be extracted...............: ",STATE
 | 
|---|
| 169 |  I STEXT=0 W !," Accession Year......................: ",DATE
 | 
|---|
| 170 |  I (STEXT=1)!(STEXT=2) D
 | 
|---|
| 171 |  .W !," Start date..........................: ",$$FMTE^XLFDT(SDT,"2D")
 | 
|---|
| 172 |  .W !," End date............................: ",$$FMTE^XLFDT(EDT,"2D")
 | 
|---|
| 173 |  I EXT="STATE" D
 | 
|---|
| 174 |  .W !," Analytic cases only.................: ",$S(ACO=1:"YES",1:"NO")
 | 
|---|
| 175 |  W !
 | 
|---|
| 176 |  S DIR("A")=" Are these settings correct"
 | 
|---|
| 177 |  S DIR("B")="YES"
 | 
|---|
| 178 |  S DIR(0)="Y"
 | 
|---|
| 179 |  D ^DIR
 | 
|---|
| 180 |  I $D(DIRUT) S OUT=1 Q
 | 
|---|
| 181 |  S YESNO=Y
 | 
|---|
| 182 |  Q
 | 
|---|
| 183 |  ;
 | 
|---|
| 184 | GETDATE(DATE,OUT) ;Select ACCESSION YEAR
 | 
|---|
| 185 |  Q:STEXT=1
 | 
|---|
| 186 |  N CYR,DIR,SCREEN,Y
 | 
|---|
| 187 |  S DATE=0
 | 
|---|
| 188 |  S CYR=1700+($E(DT,1,3)),SCREEN="K:X>CYR X"
 | 
|---|
| 189 |  S DIR(0)="NAO^1900:"_CYR_":0^"_SCREEN
 | 
|---|
| 190 |  S DIR("A")=" Accession Year: "
 | 
|---|
| 191 |  D ^DIR
 | 
|---|
| 192 |  I $D(DIRUT) S OUT=1 Q
 | 
|---|
| 193 |  S DATE=Y
 | 
|---|
| 194 |  Q
 | 
|---|
| 195 |  ;
 | 
|---|
| 196 | GETHOSP() ;Facility Identification Number (FIN)
 | 
|---|
| 197 |  N STAT,STATI,ALLOK
 | 
|---|
| 198 |  S STAT=0,ALLOK=$$GETDXH(.STAT)
 | 
|---|
| 199 |  I STAT S STATI=6_STAT_0,STAT=STAT_"^"_STATI
 | 
|---|
| 200 |  Q STAT
 | 
|---|
| 201 |  ;
 | 
|---|
| 202 | GETDXH(DXH) ;INSTITUTION ID NUMBER (160.1,27)
 | 
|---|
| 203 |  N OKHERE,DIE,DA,DR,ONCOL
 | 
|---|
| 204 |  W !
 | 
|---|
| 205 |  S DIE=160.1
 | 
|---|
| 206 |  S DA=$O(^ONCO(160.1,"C",DUZ(2),0))
 | 
|---|
| 207 |  I DA="" S DA=$O(^ONCO(160.1,0))
 | 
|---|
| 208 |  S DR=27_$J("",1)_"Facility Identification Number (FIN)"
 | 
|---|
| 209 |  S ONCOL=0
 | 
|---|
| 210 |  L +^ONCO(160.1,DA):0 I $T D ^DIE L -^ONCO(160.1,DA) S ONCOL=1
 | 
|---|
| 211 |  I 'ONCOL W !,"This site paramaters record is being edited by another user."
 | 
|---|
| 212 |  K ONCOL,DIE
 | 
|---|
| 213 |  I $D(Y)=0 S DXH=$$GET1^DIQ(160.19,X,.01,"I")
 | 
|---|
| 214 |  I X'="" S STATE=$P($G(^ONCO(160.19,X,0)),U,4)
 | 
|---|
| 215 |  S OKHERE=($D(Y)=0)
 | 
|---|
| 216 |  Q OKHERE
 | 
|---|