| 1 | LRAPUTL ;DALOI/WTY - AP UTILITIES;2/26/01
 | 
|---|
| 2 |  ;;5.2;LAB SERVICE;**259,308**;Sep 27, 1994
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;Reference  to EXTRACT^TIULQ supported by IA #2693
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  Q
 | 
|---|
| 7 | ACCYR(LRYROUT,LRYRIN,LRAREA,LRAANM) ;
 | 
|---|
| 8 |  ; Return variable (passed by reference):
 | 
|---|
| 9 |  ;      LRYROUT = Accession Year LRAD^LRH(0) 
 | 
|---|
| 10 |  ;                 where LRAD is format 3010000
 | 
|---|
| 11 |  ;                       LRH(0) is format 2001
 | 
|---|
| 12 |  ;              = -1 - Error Condition
 | 
|---|
| 13 |  ;              =  0 - No change from default value (LRYRIN)
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 |  ; Input parameters:
 | 
|---|
| 16 |  ;      LRYRIN  = Default accession year in yyyy format
 | 
|---|
| 17 |  ;      LRAREA  = Accession Area Mnemonic (ex. AU,CY,EM,SP)
 | 
|---|
| 18 |  ;      LRAANM  = Accession Area Name (ex. SURGICAL PATHOLOGY)
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 |  S LRYROUT=-1
 | 
|---|
| 21 |  Q:LRAREA=""!(LRYRIN="")!(LRAANM="")
 | 
|---|
| 22 |  N LRYR1,LRYR2
 | 
|---|
| 23 |  W !!,"Data entry for ",LRYRIN," "
 | 
|---|
| 24 |  S %=1 D YN^LRU
 | 
|---|
| 25 |  I %<1 D END Q
 | 
|---|
| 26 |  I %=1 S LRYROUT=0 K LRYRIN,LRAREA,LRAANM Q
 | 
|---|
| 27 |  I %=2 D  I Y<1 D END Q
 | 
|---|
| 28 |  .S %DT="AE",%DT(0)="-N",%DT("A")="Enter YEAR: " D ^%DT
 | 
|---|
| 29 |  .Q:Y<1
 | 
|---|
| 30 |  .S LRYR1=$E(Y,1,3)_"0000",LRYR2=$E(Y,1,3)+1700
 | 
|---|
| 31 |  I '$O(^LRO(68,LRAREA,1,LRYR1,1,0)) D  Q
 | 
|---|
| 32 |  .W $C(7),!!,"NO ",LRAANM," ACCESSIONS IN FILE FOR ",LRYR2,!!
 | 
|---|
| 33 |  .S LRYROUT=-1
 | 
|---|
| 34 |  .D END
 | 
|---|
| 35 |  S LRYROUT=LRYR1_U_LRYR2
 | 
|---|
| 36 |  Q
 | 
|---|
| 37 |  ;
 | 
|---|
| 38 | LOOKUP(LRDATA,LRYR1,LRAANM,LRAREA,LRYR2,LRAAN) ;
 | 
|---|
| 39 |  ;Lookup by accession number or patient name
 | 
|---|
| 40 |  K X,Y,LR("CK"),DIR
 | 
|---|
| 41 |  S LRDATA=-1 W !
 | 
|---|
| 42 |  S DIR(0)="FO",DIR("A")="Select Accession Number/Pt name"
 | 
|---|
| 43 |  S DIR("?",1)="Enter the year "_LRYR1_" "_LRAANM_" accession number to"
 | 
|---|
| 44 |  S DIR("?",1)=DIR("?",1)_" be updated"
 | 
|---|
| 45 |  S DIR("?")="or locate the accession by entering the patient name."
 | 
|---|
| 46 |  D ^DIR S LRAN=Y K DIR
 | 
|---|
| 47 |  I LRAN=""!(LRAN[U) D END S LRDATA=-1 Q
 | 
|---|
| 48 |  I LRAN'?1N.N D  Q
 | 
|---|
| 49 |  .D PNAME^LRAPDA
 | 
|---|
| 50 |  .I LRAN<1 S LRDATA=-1 Q
 | 
|---|
| 51 |  .S LRDATA=LRDFN,LRDATA(1)=$S('LRAU:LRI,1:"")
 | 
|---|
| 52 |  .D OE1^LR7OB63D
 | 
|---|
| 53 |  D OE1^LR7OB63D
 | 
|---|
| 54 |  W "  for "_LRYR1
 | 
|---|
| 55 |  I '$D(^LRO(68,LRAAN,1,LRYR2,1,LRAN,0)) D  Q
 | 
|---|
| 56 |  .S MSG="Accession # "_LRAN_" for "_LRYR1_" not in "_LRAANM
 | 
|---|
| 57 |  .D EN^DDIOL(MSG,"","!!") K MSG
 | 
|---|
| 58 |  .S LRDATA=0
 | 
|---|
| 59 |  S X=^LRO(68,LRAAN,1,LRYR2,1,LRAN,0),LRDFN=+X
 | 
|---|
| 60 |  Q:'$D(^LR(LRDFN,0))  S X=^LR(LRDFN,0) D ^LRUP
 | 
|---|
| 61 |  W @IOF
 | 
|---|
| 62 |  W !?3,PNM,?35,SSN,?55,"DOB: ",$$FMTE^XLFDT(DOB,1)
 | 
|---|
| 63 |  S LRI=+$P($G(^LRO(68,LRAAN,1,LRYR2,1,LRAN,3)),"^",5)
 | 
|---|
| 64 |  I LRAREA'="AU",'$D(^LR(LRDFN,LRAREA,LRI,0)) D  Q
 | 
|---|
| 65 |  .W $C(7)
 | 
|---|
| 66 |  .S MSG(1)="Inverse date missing or incorrect in Accession Area file "
 | 
|---|
| 67 |  .S MSG(1)=MSG(1)_"for"
 | 
|---|
| 68 |  .S MSG(1,"F")="!"
 | 
|---|
| 69 |  .S MSG(2)=LRAANM_"  Year: "_$E(LRYR2,2,3)_"  Accession: "_LRAN
 | 
|---|
| 70 |  .S MSG(2,"F")="!"
 | 
|---|
| 71 |  .D EN^DDIOL(.MSG) K MSG
 | 
|---|
| 72 |  .S LRDATA=-1
 | 
|---|
| 73 |  D DEMGRPH(LRAN,LRAD,LRAA)
 | 
|---|
| 74 |  S LRDATA=LRDFN,LRDATA(1)=LRI
 | 
|---|
| 75 |  Q
 | 
|---|
| 76 | DEMGRPH(LRAN,LRAD,LRAA) ;Demographics
 | 
|---|
| 77 |  N LRIENS,DA,LRIDT,LRQUIT,LRSPECID,LREDT,LRIDT,LRCDT
 | 
|---|
| 78 |  S LRQUIT=0
 | 
|---|
| 79 |  S LRIENS=LRAN_","_LRAD_","_LRAA_","
 | 
|---|
| 80 |  S LRSPECID="Acc #: "_$$GET1^DIQ(68.02,LRIENS,15,"E")
 | 
|---|
| 81 |  S LRSPECID=LRSPECID_$$GET1^DIQ(68.02,LRIENS,16)
 | 
|---|
| 82 |  S LREDT=$$GET1^DIQ(68.02,LRAN_","_LRAD_","_LRAA_",",9,"I")
 | 
|---|
| 83 |  S LRIDT=+$$GET1^DIQ(68.02,LRAN_","_LRAD_","_LRAA_",",13.5,"I")
 | 
|---|
| 84 |  I LREDT S LRCDT="Collection Date: "_$$FMTE^XLFDT(LREDT,1)
 | 
|---|
| 85 |  W !?5,LRCDT
 | 
|---|
| 86 |  W !?10,LRSPECID,!
 | 
|---|
| 87 |  I $G(^LRO(68,LRAA,1,LRAD,1,LRAN,"PCE")) W !?15,"PCE ENC # "_^("PCE")
 | 
|---|
| 88 |  I $L($G(LRSS)),$O(^LR(LRDFN,LRSS,LRIDT,.1,0)) D
 | 
|---|
| 89 |  .N LRX
 | 
|---|
| 90 |  .W !?5,"Tissue Specimen(s): ",!
 | 
|---|
| 91 |  .S LRX=0 F  S LRX=$O(^LR(LRDFN,LRSS,LRIDT,.1,LRX)) Q:LRX<1!(LRQUIT)  D
 | 
|---|
| 92 |  ..I $Y>(IOSL-10) D PG Q:$G(LRQUIT)  D
 | 
|---|
| 93 |  ...W @IOF,!?3,PNM,?35,SSN,?55,"DOB: ",$$FMTE^XLFDT(DOB,1),!
 | 
|---|
| 94 |  ..W ?15,$P($G(^LR(LRDFN,LRSS,LRIDT,.1,LRX,0)),U),!
 | 
|---|
| 95 |  I $O(^LRO(68,LRAA,1,LRAD,1,LRAN,4,0)) D
 | 
|---|
| 96 |  .W ?5,"Test(s): "
 | 
|---|
| 97 |  .S LRX=0
 | 
|---|
| 98 |  .F  S LRX=$O(^LRO(68,LRAA,1,LRAD,1,LRAN,4,LRX)) Q:LRX<1!($G(LRQUIT))  D
 | 
|---|
| 99 |  ..I $Y>(IOSL-10) D PG Q:$G(LRQUIT)  W @IOF
 | 
|---|
| 100 |  ..W ?15,$P($G(^LAB(60,+LRX,0)),U),!
 | 
|---|
| 101 |  S:$G(LRQUIT) LRQUIT=0
 | 
|---|
| 102 |  Q
 | 
|---|
| 103 | GETDOCS(LRDOCS,LRDFN,LRSS,LRI,LRSF) ;Return PCP and provider
 | 
|---|
| 104 |  N LRPF,DFN,LRIENS,LRFLD
 | 
|---|
| 105 |  S:LRSS="AU" LRSF=63
 | 
|---|
| 106 |  I '+$G(LRDFN)!($G(LRSS)="")!('+$G(LRSF)) S LRDOCS=0 Q
 | 
|---|
| 107 |  I "AUSPCYEM"'[LRSS S LRDOCS=0 Q
 | 
|---|
| 108 |  S LRPF=+$$GET1^DIQ(63,LRDFN_",",.02,"I")
 | 
|---|
| 109 |  S DFN=$$GET1^DIQ(63,LRDFN_",",.03,"I")
 | 
|---|
| 110 |  S LRDOCS(1)=0
 | 
|---|
| 111 |  I LRPF=2 D
 | 
|---|
| 112 |  .D INP^VADPT
 | 
|---|
| 113 |  .S LRDOCS(1)=+VAIN(2)
 | 
|---|
| 114 |  S LRIENS=LRDFN_","
 | 
|---|
| 115 |  I LRSS'="AU" S LRIENS=LRI_","_LRIENS,LRFLD=.07
 | 
|---|
| 116 |  S:LRSS="AU" LRFLD=13.5
 | 
|---|
| 117 |  S LRDOCS(2)=$$GET1^DIQ(LRSF,LRIENS,LRFLD,"I")
 | 
|---|
| 118 |  Q
 | 
|---|
| 119 | RELEASE(LRRELEAS,LRDFN,LRSS,LRI) ;
 | 
|---|
| 120 |  ;Determine if report has been released
 | 
|---|
| 121 |  N LRFILE,LRFLDS,LRIENS,LRRELAR,LRCT
 | 
|---|
| 122 |  I '+$G(LRDFN) S LRRELEAS=0 Q
 | 
|---|
| 123 |  I $G(LRSS)=""!("AUSPEMCY"'[LRSS) S LRRELEAS=0 Q
 | 
|---|
| 124 |  I LRSS'="AU",'+$G(LRI) S LRRELEAS=0 Q
 | 
|---|
| 125 |  I LRSS="AU" D
 | 
|---|
| 126 |  .S LRFILE=63,LRFLDS="14.7;14.8",LRIENS=LRDFN_","
 | 
|---|
| 127 |  I LRSS'="AU" D
 | 
|---|
| 128 |  .S LRFILE=$S(LRSS="SP":63.08,LRSS="CY":63.09,LRSS="EM":63.02,1:"")
 | 
|---|
| 129 |  .S LRFLDS=".11;.13;.15"
 | 
|---|
| 130 |  .S LRIENS=LRI_","_LRDFN_","
 | 
|---|
| 131 |  Q:LRFILE=""
 | 
|---|
| 132 |  D GETS^DIQ(LRFILE,LRIENS,LRFLDS,"I","LRRELAR")
 | 
|---|
| 133 |  F LRCT=1:1:$S(LRSS="AU":2,1:3) D
 | 
|---|
| 134 |  .S LRRELEAS(LRCT)=+$G(LRRELAR(LRFILE,LRIENS,$P(LRFLDS,";",LRCT),"I"))
 | 
|---|
| 135 |  Q
 | 
|---|
| 136 | TIUCHK(LRPTR,LRDFN,LRSS,LRI) ;
 | 
|---|
| 137 |  ;Check to see if report is in TIU
 | 
|---|
| 138 |  N LRTREC,LRROOT,LRFILE,LRIENS,LRFLD,LRREL
 | 
|---|
| 139 |  I LRSS=""!("AUSPEMCY"'[LRSS) S LRPTR=0 Q
 | 
|---|
| 140 |  I LRSS="AU" D
 | 
|---|
| 141 |  .S LRROOT="^LR(LRDFN,101,""A"")",LRIENS=LRDFN_","
 | 
|---|
| 142 |  .S LRFILE=63.101
 | 
|---|
| 143 |  I LRSS'="AU" D
 | 
|---|
| 144 |  .S LRROOT="^LR(LRDFN,LRSS,LRI,.05,""A"")"
 | 
|---|
| 145 |  .S LRIENS=LRI_","_LRDFN_","
 | 
|---|
| 146 |  .S LRFILE=$S(LRSS="SP":63.19,LRSS="CY":63.47,LRSS="EM":63.49,1:"")
 | 
|---|
| 147 |  S LRTREC=$O(@(LRROOT),-1)
 | 
|---|
| 148 |  I LRFILE=""!(LRTREC="") S LRPTR=0 Q
 | 
|---|
| 149 |  S LRIENS=LRTREC_","_LRIENS
 | 
|---|
| 150 |  S LRPTR=+$$GET1^DIQ(LRFILE,LRIENS,1,"I")
 | 
|---|
| 151 |  S:LRPTR LRPTR("D")=+$$GET1^DIQ(LRFILE,LRIENS,.01,"I")
 | 
|---|
| 152 |  I LRSS="AU" D
 | 
|---|
| 153 |  .S LRFILE=63,LRIENS=LRDFN_",",LRFLD=14.7
 | 
|---|
| 154 |  I LRSS'="AU" D
 | 
|---|
| 155 |  .S LRFLD=$S(LRSS="CY":9,LRSS="SP":8,LRSS="EM":2,1:"")
 | 
|---|
| 156 |  .Q:LRFLD=""
 | 
|---|
| 157 |  .S LRFILE=+$$GET1^DID(63,LRFLD,"","SPECIFIER"),LRFLD=.11
 | 
|---|
| 158 |  .Q:LRFILE=""
 | 
|---|
| 159 |  .S LRIENS=LRI_","_LRDFN_","
 | 
|---|
| 160 |  S LRREL=+$$GET1^DIQ(LRFILE,LRIENS,LRFLD,"I")
 | 
|---|
| 161 |  I 'LRREL K LRPTR S LRPTR=0 Q
 | 
|---|
| 162 |  I LRREL'=LRPTR("D") K LRPTR S LRPTR=0
 | 
|---|
| 163 |  Q
 | 
|---|
| 164 | ESIGINF(LRESINF,LRDFN,LRSS,LRI) ;Return Esig Info
 | 
|---|
| 165 |  N LRTIUDA,LRESINF1
 | 
|---|
| 166 |  Q:'$D(LRDFN)!('$D(LRSS))
 | 
|---|
| 167 |  Q:LRSS=""!("AUSPEMCY"'[LRSS)
 | 
|---|
| 168 |  D TIUCHK(.LRTIUDA,LRDFN,LRSS,$G(LRI))
 | 
|---|
| 169 |  Q:'+$G(LRTIUDA)
 | 
|---|
| 170 |  D EXTRACT^TIULQ(LRTIUDA,"LRESINF1(""ESIG"")",,,,,,1)
 | 
|---|
| 171 |  Q:'$D(LRESINF1("ESIG",LRTIUDA))
 | 
|---|
| 172 |  S LRESINF(1)=$G(LRESINF1("ESIG",LRTIUDA,1501,"E"))
 | 
|---|
| 173 |  S LRESINF(2)=$G(LRESINF1("ESIG",LRTIUDA,1503,"E"))
 | 
|---|
| 174 |  Q
 | 
|---|
| 175 | NEWLN(LRTEXT,TAB) ;
 | 
|---|
| 176 |  S LCT=$G(LCT)+1,BTAB=0
 | 
|---|
| 177 |  S TAB=+TAB
 | 
|---|
| 178 |  D GLBWRT(LRTEXT,TAB)
 | 
|---|
| 179 |  Q
 | 
|---|
| 180 | GLBWRT(LRTEXT,TAB) ;Write to global
 | 
|---|
| 181 |  D GLB(LCT,TAB,BTAB,LRTEXT,GROOT,.ATAB)
 | 
|---|
| 182 |  S BTAB=ATAB
 | 
|---|
| 183 |  Q
 | 
|---|
| 184 | GLB(LINE,TAB,BTAB,TEXT,ROOT,ATAB) ;
 | 
|---|
| 185 |  ; This subroutine is used to store report text to a global.
 | 
|---|
| 186 |  ; Input variables:
 | 
|---|
| 187 |  ; LINE = Current line number
 | 
|---|
| 188 |  ; TAB  = Desired tab position (not required)
 | 
|---|
| 189 |  ; BTAB = Current tab position BEFORE text is stored
 | 
|---|
| 190 |  ; TEXT = Text string to be stored
 | 
|---|
| 191 |  ; ROOT = Global root
 | 
|---|
| 192 |  ;
 | 
|---|
| 193 |  ; Output variables:
 | 
|---|
| 194 |  ; ATAB = Current tab position after text storage
 | 
|---|
| 195 |  ;
 | 
|---|
| 196 |  N LRSPC,LRINC,FTEXT,LRLINE
 | 
|---|
| 197 |  S LRSPC="" F LRINC=1:1:80 S LRSPC=LRSPC_" "
 | 
|---|
| 198 |  S:BTAB="" BTAB=0
 | 
|---|
| 199 |  S:+TAB=0 TAB=BTAB
 | 
|---|
| 200 |  S FTEXT=TEXT
 | 
|---|
| 201 |  I TAB,TAB>BTAB D
 | 
|---|
| 202 |  .S FTEXT=$E(LRSPC,1,TAB-BTAB)_TEXT
 | 
|---|
| 203 |  S:'$D(@(ROOT_"0)")) @(ROOT_"0)")="^^^^"_DT_"^"
 | 
|---|
| 204 |  S LRLINE=LINE,LINE=LINE_",0"
 | 
|---|
| 205 |  S:'$D(@(ROOT_LINE_")")) @(ROOT_LINE_")")=""
 | 
|---|
| 206 |  S @(ROOT_LINE_")")=@(ROOT_LINE_")")_FTEXT
 | 
|---|
| 207 |  S $P(@(ROOT_"0)"),"^",3,4)=LRLINE_"^"_LRLINE
 | 
|---|
| 208 |  S ATAB=TAB+$L(TEXT)
 | 
|---|
| 209 |  Q
 | 
|---|
| 210 | PROVIDR ;Entry of provider taken from PRO^LRCAPES        
 | 
|---|
| 211 |  S LREND=0
 | 
|---|
| 212 |  D
 | 
|---|
| 213 |  . N LRPRONM,DIR,DIRUT,DUOUT,X,Y
 | 
|---|
| 214 |  . S LRPRONM=$$GET1^DIQ(200,+$G(LRPRO),.01,"I")
 | 
|---|
| 215 |  . I $L(LRPRONM),$D(^VA(200,"AK.PROVIDER",LRPRONM,+$G(LRPRO)))#2,$$GET^XUA4A72(+$G(LRPRO),DT)>0 S DIR("B")=LRPRONM
 | 
|---|
| 216 |  . S DIR("A")="Provider"
 | 
|---|
| 217 |  . S LRPRO=0,DIR(0)="PO^200:ENMZ"
 | 
|---|
| 218 |  . S DIR("S")="I $D(^VA(200,""AK.PROVIDER"",$P(^(0),U),+Y)),$$GET^XUA4A72(+Y,DT)>0"
 | 
|---|
| 219 |  . D ^DIR
 | 
|---|
| 220 |  . I Y>1 S LRPRO=+Y
 | 
|---|
| 221 |  I '$G(LRPRO) D  D END^LRCAPES Q
 | 
|---|
| 222 |  . W !?5,"No Active Provider Selected",!
 | 
|---|
| 223 |  . S LRNOP=1
 | 
|---|
| 224 |  . S LRQUIT=1
 | 
|---|
| 225 |  I '$D(^LRO(68,LRAA,1,LRAD,1,LRAN,0))#2 D  D END^LRCAPES
 | 
|---|
| 226 |  . W !?5,"The accession is corrupt - missing zero node",!
 | 
|---|
| 227 |  . S LRNOP="7^Corrupt Accession"
 | 
|---|
| 228 |  . S LRQUIT=1
 | 
|---|
| 229 |  Q
 | 
|---|
| 230 | REFRRL ;Display informational message on referrals
 | 
|---|
| 231 |  S LRMSG2=$P(^DIC(LRDPF,0),"^")
 | 
|---|
| 232 |  S LRMSG="*** NOTE: This "_LRMSG2_" report will not be stored in TIU,"
 | 
|---|
| 233 |  S LRMSG(1)=$$CJ^XLFSTR(LRMSG,IOM)
 | 
|---|
| 234 |  S LRMSG(1,"F")="!!"
 | 
|---|
| 235 |  S LRMSG="  and therefore, does not have an electronic signature."
 | 
|---|
| 236 |  S LRMSG(2)=$$CJ^XLFSTR(LRMSG,IOM)
 | 
|---|
| 237 |  S LRMSG="A hardcopy signature will be required for this report."
 | 
|---|
| 238 |  S LRMSG(3)=$$CJ^XLFSTR(LRMSG,IOM)
 | 
|---|
| 239 |  D EN^DDIOL(.LRMSG)
 | 
|---|
| 240 |  K LRMSG
 | 
|---|
| 241 |  Q
 | 
|---|
| 242 | PG ;Page break
 | 
|---|
| 243 |  N DIR,DIRUT,DUOUT,DTOUT
 | 
|---|
| 244 |  S DIR(0)="E" D ^DIR
 | 
|---|
| 245 |  I $G(DIRUT) S LRQUIT=1
 | 
|---|
| 246 |  Q
 | 
|---|
| 247 | END ;
 | 
|---|
| 248 |  K LRYRIN,LRAREA,LRAANM
 | 
|---|
| 249 |  Q
 | 
|---|