Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: BLRREFLA

BLRREFLA.m

Go to the documentation of this file.
  1. BLRREFLA ;IHS/MSC/MKK - REFerence Lab Address functions ; 17-Oct-2014 09:22 ; MKK
  1. ;;5.2;IHS LABORATORY;**1033,1034**;NOV 01, 1997;Build 88
  1. ;
  1. EEP ; Ersatz EP
  1. D EEP^BLRGMENU
  1. Q
  1. ;
  1. ; API Function.
  1. PCCRLADR(VFILENUM,VFILEIEN,ARRAY) ; EP - Get Address for Lab V File entry
  1. ; VFILENUM = Number of the Lab V File
  1. ; VFILEIEN = IEN of the test in the Lab V File
  1. ;
  1. ; Returns 1 if successful or 0 if failure.
  1. ;
  1. ; If successful, the ARRAY will be set as:
  1. ; ARRAY("ST1")=Street Address 1
  1. ; ARRAY("ST2")=Street Address 2 (array element only exists if Street Address 2 element exists)
  1. ; ARRAY("CITY")=City
  1. ; ARRAY("STATE")=STATE
  1. ; ARRAY("ZIP")=Zipcode
  1. ;
  1. ; If failure, the returned string is of the form
  1. ; 0^VFILENUM^DESCRIPTION
  1. ; where DESCRIPTION is a brief explanation of its failure (if possible)
  1. ;
  1. ; Uses the INSTITUTION number to determine the address.
  1. ;
  1. ; Initialize the array
  1. K ARRAY
  1. ;
  1. Q:+$G(VFILENUM)<1 "0^^V FILE NUMBER < 1"
  1. Q:+$G(VFILEIEN)<1 "0^"_VFILENUM_"^Lab V FILE IEN missing"
  1. ;
  1. Q:VFILENUM=9000010.09 $$CHPCCSUB(VFILEIEN,.ARRAY)
  1. ;
  1. Q:VFILENUM=9000010.25 $$MIPCCSUB(VFILEIEN,.ARRAY)
  1. ;
  1. Q "0^Lab V FILE NUMBER '"_VFILENUM_"' INVALID"
  1. ;
  1. CHPCCSUB(VLABIEN,ARRAY) ; EP - "CH" subscripted tests
  1. NEW (ARRAY,DILOCKTM,DISYS,DT,DTIME,DUZ,IO,IOBS,IOF,IOM,ION,IOS,IOSL,IOST,IOT,IOXY,U,VLABIEN,XPARSYS,XQXFLG)
  1. ;
  1. S INST=0
  1. ;
  1. S F60IEN=+$$GET1^DIQ(9000010.09,VLABIEN,.01,"I") ; File 60 IEN
  1. S LRDN=+$$GET1^DIQ(60,F60IEN,400,"I") ; DataName IEN
  1. ;
  1. S DFN=$$GET1^DIQ(9000010.09,VLABIEN,.02,"I") ; DFN = File 2 IEN
  1. S LRDFN=+$$GET1^DIQ(2,DFN,63) ; File 63 IEN
  1. ;
  1. S COLLDATE=+$$GET1^DIQ(9000010.09,VLABIEN,1201,"I") ; Collection Date
  1. ;
  1. S LRIDT=9999999-COLLDATE ; Inverse Date
  1. S LRSS="CH" ; File 63 Subscript
  1. ;
  1. I LRDN,LRDFN,COLLDATE D
  1. . S INST=+$P($G(^LR(LRDFN,LRSS,LRIDT,LRDN)),"^",9) ; Get Institution from Lab Data file
  1. ;
  1. S IENS=LRIDT_","_LRDFN_","
  1. ;
  1. S VPIEN=+$$GET1^DIQ(63.04,IENS,.04,"I") ; Verify Person
  1. ;
  1. ; If Institution IEN still < 1, use Verify Person
  1. S:INST<1 INST=+$$IHSDIV^XUS1(VPIEN)
  1. ;
  1. ; If Institution IEN still < 1, set to Accessioning Institution
  1. S:INST<1 INST=+$$GET1^DIQ(63.04,IENS,.112,"I")
  1. ;
  1. I INST<1 D ; If Institution IEN still < 1, use Requesting Location
  1. . S REQLOC=+$$GET1^DIQ(63.04,IENS,.111,"I")
  1. . S INST=+$$GET1^DIQ(44,REQLOC,"INSTITUTION","I")
  1. ;
  1. ; If Institution IEN still < 1, set to Default Institution in 69.9
  1. S:INST<1 INST=+$$GET1^DIQ(69.9,1_",",3,"I")
  1. ;
  1. ; If cannot determine Institution, Quit with 0 (failure)
  1. Q:INST<1 "0^9000010.09^Institution < 1"
  1. ;
  1. ; Call 'Get Address' function
  1. Q $$RLADDRES(INST,.ARRAY)
  1. ;
  1. MIPCCSUB(VLMICIEN,ARRAY) ; EP - "MI" subscripted tests
  1. NEW (ARRAY,DILOCKTM,DISYS,DT,DTIME,DUZ,IO,IOBS,IOF,IOM,ION,IOS,IOSL,IOST,IOT,IOXY,U,VLMICIEN,XPARSYS,XQXFLG)
  1. ;
  1. S INST=0
  1. ;
  1. S F60IEN=+$$GET1^DIQ(9000010.25,VLMICIEN,.01,"I") ; File 60 IEN
  1. S DFN=$$GET1^DIQ(9000010.09,VLMICIEN,.02,"I") ; DFN = File 2 IEN
  1. S LRDFN=+$$GET1^DIQ(2,DFN,63) ; File 63 IEN
  1. ;
  1. S COLLDATE=+$$GET1^DIQ(9000010.09,VLMICIEN,1201,"I") ; Collection Date
  1. S LRIDT=9999999-COLLDATE ; Inverse Date
  1. ;
  1. S IENS=LRIDT_","_LRDFN_","
  1. ;
  1. S VPIEN=+$$GET1^DIQ(63.04,IENS,.04,"I") ; Verify Person
  1. ;
  1. ; Use Verify Person
  1. S:INST<1 INST=+$$IHSDIV^XUS1(VPIEN)
  1. ;
  1. ; If Institution IEN still < 1, set to Accessioning Institution
  1. S:INST<1 INST=+$$GET1^DIQ(63.04,IENS,.112,"I")
  1. ;
  1. S VFLRAS=$$GET1^DIQ(9000010.25,VLMICIEN,.06) ; Accession Number
  1. S LRAAAB=$P(VFLRAS," ")
  1. ;
  1. K ERRS
  1. S LRAA=$$FIND1^DIC(68,,,LRAAAB,,,"ERRS") ; Get Accession IEN
  1. ;
  1. ; Find the Institution associated with the Accession's IEN
  1. I F60IEN,LRAA D
  1. . S (INSTIEN,INST)=0
  1. . F S INSTIEN=$O(^LAB(60,F60IEN,8,INSTIEN)) Q:INSTIEN<1!(INST) D
  1. .. S:$P($G(^LAB(60,F60IEN,8,INSTIEN,0)),"^",2)=LRAA INST=INSTIEN
  1. ;
  1. ; If Institution IEN still < 1, set to Default Institution in 69.9
  1. S:INST<1 INST=+$$GET1^DIQ(69.9,1_",",3,"I")
  1. ;
  1. ; If cannot determine Institution, Quit with 0 (failure)
  1. Q:INST<1 "0^9000010.25^Institution < 1"
  1. ;
  1. ; Call 'Get Address' function
  1. Q $$RLADDRES(INST,.ARRAY)
  1. ;
  1. ; API Function.
  1. ; Given an IEN from file 4.
  1. ;
  1. ; If not successful, the function returns 0.
  1. ;
  1. ; If successful, the fucntion returns returns 1.
  1. ; The Reference Lab ADDRESS is returned in the ARRAY from file 4
  1. ; The array will be defined as the following:
  1. ; ARRAY("ST1")=Street Address 1
  1. ; ARRAY("ST2")=Street Address 2 (array element only exists if Street Address 2 element exists)
  1. ; ARRAY("CITY")=City
  1. ; ARRAY("STATE")=STATE
  1. ; ARRAY("ZIP")=Zipcode
  1. ;
  1. RLADDRES(F4IEN,ARRAY) ; EP
  1. ; F4IEN = IEN from INSTITUTION (#4) file.
  1. ; Output (if any) will be put into the ARRAY
  1. ; Returns 1 if successful or 0 if failure.
  1. NEW (ARRAY,DILOCKTM,DISYS,DT,DTIME,DUZ,F4IEN,IO,IOBS,IOF,IOM,ION,IOS,IOSL,IOST,IOT,IOXY,U,XPARSYS,XQXFLG)
  1. ;
  1. K ARRAY ; Make sure array is initialized
  1. ;
  1. ; File IEN not positive. Quit with 0 (failure)
  1. Q:+$G(F4IEN)<1 "0^INSTITUTION"
  1. ;
  1. S NAME=$$GET1^DIQ(4,F4IEN,"NAME")
  1. S ST1=$$GET1^DIQ(4,F4IEN,"STREET ADDR. 1")
  1. S ST2=$$GET1^DIQ(4,F4IEN,"STREET ADDR. 2")
  1. S CITY=$$GET1^DIQ(4,F4IEN,"CITY")
  1. S STATE=$$GET1^DIQ(4,F4IEN,"STATE")
  1. S ZIP=$$GET1^DIQ(4,F4IEN,"ZIP")
  1. ;
  1. ; All necessary address entries exist. Put into ARRAY and exit.
  1. I $L(NAME),$L(ST1),$L(CITY),$L(STATE),$L(ZIP) D Q 1
  1. . S ARRAY("NAME")=NAME,ARRAY("ST1")=ST1
  1. . S:$L(ST2) ARRAY("ST2")=ST2
  1. . S ARRAY("CITY")=CITY,ARRAY("STATE")=STATE,ARRAY("ZIP")=ZIP
  1. ;
  1. ;
  1. ; Data does NOT exist. Quit with 0 (failure)
  1. Q "0^"_F4IEN_"^ADDRESS missing"
  1. ;
  1. FINDSOME ; EP - DEBUG
  1. NEW (DILOCKTM,DISYS,DT,DTIME,DUZ,IO,IOBS,IOF,IOM,ION,IOS,IOSL,IOST,IOT,IOXY,U,XPARSYS,XQXFLG)
  1. ;
  1. W !!,"DUZ(2)=",DUZ(2),!!,?4
  1. ;
  1. S (CNTACC,CNT)=0,MAX=29
  1. S LRDFN=.9999999
  1. F S LRDFN=$O(^LR(LRDFN)) Q:LRDFN<1!(CNT>MAX) D
  1. . S LRIDT=.9999999
  1. . F S LRIDT=$O(^LR(LRDFN,"CH",LRIDT)) Q:LRIDT<1!(CNT>MAX) D
  1. .. S IENS=LRIDT_","_LRDFN_","
  1. .. ;
  1. .. S IFIELD=.112
  1. .. S INST=+$$GET1^DIQ(63.04,IENS,.112,"I") ; Accessioning Institution
  1. .. I INST<1 D ; If no Accessioning Institution, use Requesting Location
  1. ... S REQLOC=+$$GET1^DIQ(63.04,IENS,.111,"I")
  1. ... S INST=$$GET1^DIQ(44,REQLOC,"INSTITUTION","I")
  1. ... S IFIELD=.111
  1. .. ;
  1. .. Q:INST=DUZ(2)
  1. .. ;
  1. .. S REFLAB=+$$GET1^DIQ(9009029,INST,3001,"I")
  1. .. Q:REFLAB<1
  1. .. ;
  1. .. S REFLNAME=$$GET1^DIQ(9009026,REFLAB,.01)
  1. .. ;
  1. .. S CNTACC=CNTACC+1
  1. .. I CNT<1 W:(CNTACC#100)=0 "." W:$X>74 !,?4
  1. .. ;
  1. .. S CNT=CNT+1
  1. .. W:CNT=1 !!
  1. .. W LRDFN
  1. .. W ?9,LRIDT
  1. .. W ?25,IFIELD
  1. .. W ?35,INST
  1. .. W ?45,REFLAB
  1. .. W ?55,REFLNAME
  1. .. W !
  1. ;
  1. Q
  1. ;
  1. FINDVISL ; EP - Find VLAB visits
  1. NEW (DILOCKTM,DISYS,DT,DTIME,DUZ,IO,IOBS,IOF,IOM,ION,IOS,IOSL,IOST,IOT,IOXY,U,XPARSYS,XQXFLG)
  1. ;
  1. S TESTIEN=175 ; Hard set to Glucose
  1. ;
  1. S HEADER(1)="VLAB Visits"
  1. S HEADER(2)=" "
  1. S HEADER(3)="IEN"
  1. S $E(HEADER(3),10)="Visit IEN"
  1. S $E(HEADER(3),20)="LR ACCESSION"
  1. S $E(HEADER(3),35)="ICD CODE"
  1. S $E(HEADER(3),45)="LOINC"
  1. S $E(HEADER(3),55)="PROVIDER NARRATIVE"
  1. ; S $E(HEADER(3),75)="LABPC"
  1. S $E(HEADER(3),75)="DFN"
  1. ;
  1. D HEADERDT^BLRGMENU
  1. ;
  1. S CNT=0,MAX=15
  1. S VLABIEN="A"
  1. F S VLABIEN=$O(^AUPNVLAB(VLABIEN),-1) Q:VLABIEN<1!(CNT>MAX) D
  1. . K TARGET,ERRS
  1. . D GETS^DIQ(9000010.09,VLABIEN,".01;.02;.03;.06;1112;1113;1601;1602","I","TARGET","ERRS")
  1. . ;
  1. . ; Don't duplicate patient
  1. . S DFN=$G(TARGET(9000010.09,VLABIEN_",",.02,"I"))
  1. . Q:$D(DFN(DFN))
  1. . S DFN(DFN)=""
  1. . ;
  1. . W VLABIEN
  1. . W ?9,$G(TARGET(9000010.09,VLABIEN_",",.03,"I"))
  1. . W ?19,$G(TARGET(9000010.09,VLABIEN_",",.06,"I"))
  1. . ; W ?34,$G(TARGET(9000010.09,VLABIEN_",",1112,"I"))
  1. . W ?34,$$SHOWICD($G(TARGET(9000010.09,VLABIEN_",",1112,"I"))) ; IHS/MSC/MKK - LR*5.2*1034
  1. . W ?44,$G(TARGET(9000010.09,VLABIEN_",",1113,"I"))
  1. . W ?54,$E($G(TARGET(9000010.09,VLABIEN_",",1601,"I")),1,18)
  1. . ; W ?74,$E($G(TARGET(9000010.09,VLABIEN_",",1602,"I")),1,6)
  1. . W:$D(^DPT(DFN,"LR")) ?73,"*"
  1. . W ?74,DFN
  1. . W !
  1. . S CNT=CNT+1
  1. ;
  1. Q
  1. ;
  1. ; ----- BEGIN IHS/MSC/MKK - LR*5.2*1034
  1. SHOWICD(ICD) ; EP -
  1. NEW ICDSTR
  1. ;
  1. S ICDSTR=$P($$ICDDX^ICDEX(ICD),"^",2)
  1. S:ICDSTR["No Code Selected" ICDSTR=""
  1. S:ICDSTR["Invalid" ICDSTR=ICD
  1. Q ICDSTR
  1. ; ----- END IHS/MSC/MKK - LR*5.2*1034
  1. ;
  1. VLABDATA(VLABIEN) ; EP - Display VLAB Data
  1. NEW (DILOCKTM,DISYS,DT,DTIME,DUZ,IO,IOBS,IOF,IOM,ION,IOS,IOSL,IOST,IOT,IOXY,U,VLABIEN,XPARSYS,XQXFLG)
  1. ;
  1. S F60IEN=+$$GET1^DIQ(9000010.09,VLABIEN,.01,"I")
  1. S VISITIEN=+$$GET1^DIQ(9000010.09,VLABIEN,.03,"I")
  1. S DFN=$$GET1^DIQ(9000010.09,VLABIEN,.02,"I")
  1. S COLLDATE=+$$GET1^DIQ(9000010.09,VLABIEN,1201,"I")
  1. ;
  1. S DATANAME=$$GET1^DIQ(60,F60IEN,400,"I")
  1. S LRDFN=+$$GET1^DIQ(2,+DFN,63)
  1. ;
  1. S LRIDT=$S(+COLLDATE:(9999999-COLLDATE),1:" ")
  1. ;
  1. S VISIENS=VISITIEN_","
  1. S VLOCEIEN=$$GET1^DIQ(9000010,VISIENS,.06,"I")
  1. S VLOCENIEN=$$GET1^DIQ(9999999.06,+VLOCEIEN,.01,"I")
  1. S VHLOCIEN=$$GET1^DIQ(9000010,VISIENS,.22,"I")
  1. ;
  1. W !!
  1. W "VLABIEN:",VLABIEN,!
  1. W ?4,"F60IEN:",F60IEN
  1. W ?24,"DFN:",DFN
  1. W ?39,"COLLDATE:",COLLDATE
  1. W !!
  1. ;
  1. W ?4,"DATANAME:",DATANAME
  1. W ?19,"LRDFN:",LRDFN
  1. W ?34,"LRIDT:",LRIDT
  1. W !!
  1. ;
  1. W ?4,"VISIT ",VISIENS," Data:",!
  1. W ?9,"LOC. OF ENCOUNTER:",VLOCEIEN
  1. W:$L(VLOCENIEN) ?39,VLOCENIEN,?49,$$GET1^DIQ(4,VLOCENIEN,.01)
  1. W !
  1. W ?9,"HOSPITAL LOCATION:",VHLOCIEN
  1. W !!
  1. ;
  1. S IENS=LRIDT_","_LRDFN_","
  1. ;
  1. W "Last $PIECE from File 63 '",DATANAME,"' Node: ",$RE($P($RE($G(^LR(+LRDFN,"CH",+LRIDT,+DATANAME))),"^")),!
  1. W ?4,"Raw Data:",$E($G(^LR(+LRDFN,"CH",+LRIDT,+DATANAME)),1,65),!!
  1. ;
  1. S VPIEN=$$GET1^DIQ(63.04,IENS,.04,"I")
  1. W "'Division' from File 63 Verify Person '",VPIEN,"' IEN: ",$$IHSDIV^XUS1(VPIEN),!!
  1. ;
  1. S REQLOC=$TR($$GET1^DIQ(63.04,IENS,.11),".")
  1. W "Requesting Location: ",REQLOC,!
  1. I $L(REQLOC) D
  1. . S F44IEN=$$FIND1^DIC(44,,,REQLOC)
  1. . W:+F44IEN<1 ?4,"Lookup of ",REQLOC,": ",!
  1. . I +F44IEN D
  1. .. W ?4,"Lookup of '",REQLOC,"' in File 44 --",!
  1. .. W ?19,"IEN: ",F44IEN,!
  1. .. W ?19,"NAME: ",$$GET1^DIQ(44,F44IEN,"NAME"),!
  1. .. W ?19,"INSTITUTION: ",$$GET1^DIQ(44,F44IEN,"INSTITUTION","I")
  1. .. W !
  1. . W !
  1. ;
  1. W "Requesting LOC/DIV: ",$$GET1^DIQ(63.04,IENS,.111),!!
  1. ;
  1. W "Accessioning Institituion: ",$$GET1^DIQ(63.04,IENS,.112),!!
  1. ;
  1. S REQLOC=$$GET1^DIQ(63.04,IENS,.111,"I")
  1. W:$L(REQLOC)<1 "Requesting Location Institution:",!!
  1. W:$L(REQLOC) "Requesting Location '",REQLOC,"' Institution:",$$GET1^DIQ(44,REQLOC,"INSTITUTION","I"),!!
  1. ;
  1. W "Default Institution in 69.9: ",$$GET1^DIQ(69.9,1_",",3,"I"),!!
  1. Q
  1. ;
  1. FINDVFVI ; EP - Find V File visits
  1. NEW (DILOCKTM,DISYS,DT,DTIME,DUZ,IO,IOBS,IOF,IOM,ION,IOS,IOSL,IOST,IOT,IOXY,U,XPARSYS,XQXFLG)
  1. ;
  1. S HEADER(1)="VFile Visits"
  1. S HEADER(2)=" "
  1. S HEADER(3)="V File"
  1. S $E(HEADER(3),13)="Visit"
  1. S $E(HEADER(3),23)="File 60"
  1. S HEADER(4)="Number"
  1. S $E(HEADER(4),13)="IEN"
  1. S $E(HEADER(4),23)="IEN"
  1. S $E(HEADER(4),33)="LR ACCESSION"
  1. S $E(HEADER(4),53)="DFN"
  1. S $E(HEADER(4),63)="LRDFN"
  1. ;
  1. D HEADERDT^BLRGMENU
  1. ;
  1. ; First, VLAB entries
  1. S TESTIEN=175 ; Hard set to Glucose
  1. S CNT=0,MAX=15
  1. S VLABIEN="A"
  1. F S VLABIEN=$O(^AUPNVLAB(VLABIEN),-1) Q:VLABIEN<1!(CNT>MAX) D
  1. . K TARGET,ERRS
  1. . ;
  1. . D LISTVISD(9000010.09,VLABIEN)
  1. ;
  1. W !
  1. ;
  1. ; NEXT, V MICRO Entries
  1. S CNT=0,MAX=15
  1. S VMICIEN=.9999999
  1. F S VMICIEN=$O(^AUPNVMIC(VMICIEN)) Q:VMICIEN<1!(CNT>MAX) D
  1. . D LISTVISD(9000010.25,VMICIEN)
  1. ;
  1. Q
  1. ;
  1. LISTVISD(VFILEIEN,VISITIEN) ; EP - List Visit Data
  1. K TARGET,ERRS
  1. ;
  1. D GETS^DIQ(VFILEIEN,VISITIEN,".01;.02;.06","I","TARGET","ERRS")
  1. ;
  1. S DFN=+$G(TARGET(VFILEIEN,VISITIEN_",",.02,"I"))
  1. S LRDFN=$$GET1^DIQ(2,+DFN,63)
  1. Q:$L(LRDFN)<1
  1. ;
  1. W VFILEIEN
  1. W ?12,VISITIEN
  1. W ?22,$G(TARGET(VFILEIEN,VISITIEN_",",.01,"I"))
  1. W ?32,$G(TARGET(VFILEIEN,VISITIEN_",",.06,"I"))
  1. S DFN=+$G(TARGET(VFILEIEN,VISITIEN_",",.02,"I"))
  1. W ?52,DFN
  1. W ?62,LRDFN
  1. W !
  1. S CNT=CNT+1
  1. Q