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

BLRNLOIN.m

Go to the documentation of this file.
  1. BLRNLOIN ;IHS/OIT/MKK - IHS LAB NO LOINC REPORT [ 02/05/2008 1:25 PM ]
  1. ;;5.2;LR;**1024**;May 2, 2008
  1. ;;
  1. EEP ; Ersatz EP
  1. W !!
  1. W ">>>>>>>>>>>>"
  1. W " USE LABEL "
  1. W "<<<<<<<<<<<<"
  1. W !!
  1. Q
  1. ;
  1. EP ; EP -- Main Entry Point
  1. NEW CNTLOINC,PTRLOINC,CNTLT,CNTZZ,CNTNLOI
  1. NEW QFLG,SITESPEC,STR
  1. NEW LABTNME,NOLOINC
  1. ;
  1. D NCNTLNC ; Count Lab Tests without LOINC Codes
  1. ;
  1. I CNTNLOI<1 D Q
  1. . W !,"All Tests in File 60 Have LOINC Codes.",!
  1. . W "Program Finished",!!
  1. . D PRESSIT
  1. ;
  1. D REPORT ; Output Results
  1. ;
  1. D PRESSIT ; Press RETURN key
  1. ;
  1. Q
  1. ;
  1. NCNTLNC ; EP -- Compile listing of tests without LOINC codes
  1. D NCNTLNCI ; Initialize variables
  1. ;
  1. F S TEST=$O(^LAB(60,TEST)) Q:TEST=""!(TEST'?.N) D
  1. . ; Warm fuzzy to user
  1. . W "."
  1. . I $X>78 W !
  1. . ;
  1. . ; Skip all COSMIC tests -- I don't belive you can LOINC panels
  1. . I +$O(^LAB(60,TEST,2,0))>0 Q
  1. . ;
  1. . S CNTLT=CNTLT+1 ; Count # of ATOMIC Lab Tests in dictionary
  1. . ;
  1. . ; Count # of Lab Tests that have a Name that begin with Two Z's
  1. . I $E($P($G(^LAB(60,TEST,0)),"^",1),1,2)="ZZ" S CNTZZ=CNTZZ+1
  1. . ;
  1. . ; LOINC Codes are stored in the SITE/SPECIMEN multiple, so have to
  1. . ; go through the multiple and determine if there is a LOINC Code
  1. . S (FLAG,SITESPEC)=0
  1. . F S SITESPEC=$O(^LAB(60,TEST,1,SITESPEC)) Q:SITESPEC=""!(SITESPEC'?.N)!(FLAG) D
  1. .. I +$G(^LAB(60,TEST,1,SITESPEC,95.3))>0 S FLAG=1 ; LOINC
  1. . ;
  1. . ; There is a LOINC, so count it and go to next test
  1. . I FLAG S CNTLOINC=CNTLOINC+1 Q
  1. . ;
  1. . ; There is no LOINC; Build array of such tests -- alpha sort by name
  1. . S LABTNME=$P($G(^LAB(60,TEST,0)),"^",1) ; Lab Test Name
  1. . S NOLOINC(LABTNME)=TEST ; Store data
  1. . S CNTNLOI=CNTNLOI+1 ; Count them
  1. ;
  1. Q
  1. ;
  1. NCNTLNCI ; EP -- Initialize variables
  1. W !
  1. S (CNTLOINC,FLAG,CNTLT,TEST,CNTZZ,CNTNLOI)=0
  1. D ^XBCLS
  1. W $$CJ^XLFSTR("Going through LAB TEST FILE (# 60)",IOM),!!
  1. Q
  1. ;
  1. REPORT ; EP - Results
  1. NEW LN,LRLRPT,TAB,TFLAG
  1. NEW HEADER,PG,QFLAG,LINES,MAXLINES
  1. ;
  1. I $$OKAYGO'="Y" Q ; Want to go on?
  1. ;
  1. D BUILDARY ; Build the array for output
  1. ;
  1. D REPORTIT ; Output the results
  1. ;
  1. Q
  1. OKAYGO() ; EP
  1. W !!
  1. W "There are ",CNTNLOI," Lab Tests WITHOUT LOINC codes"
  1. W !!
  1. W ?5,"The Detailed report will be approximately ",(CNTNLOI\55)," printed pages long"
  1. W !!
  1. D ^XBFMK
  1. S DIR("A")="Do you want to continue"
  1. S DIR("B")="NO"
  1. S DIR(0)="YO"
  1. D ^DIR
  1. I $E($$UP^XLFSTR(X),1,1)="N"!(+$G(DUOUT)) D Q "NO"
  1. . W !!
  1. . W ?10,"Program exiting",!
  1. ;
  1. Q "Y"
  1. ;
  1. BUILDARY ; EP -- Build the output array
  1. S TAB=$J("",5)
  1. S LN=0
  1. D ADDLNCJ($$LOC^XBFUNC,.LN)
  1. D ADDLNCJ("Logical Observation Identifiers",.LN)
  1. D ADDLNCJ("Names and Codes (LOINC)",.LN)
  1. D ADDLNCJ("IHS Lab Test File (# 60)",.LN)
  1. D ADDLNCJ("Tests WITHOUT Codes",.LN)
  1. D ADDLINE(" ",.LN)
  1. D ADDLINE(TAB_"File 60",.LN)
  1. D ADDLINE(TAB_"Number"_" File 60 Description",.LN)
  1. D ADDLNCJ($TR($J("",IOM)," ","-"),.LN)
  1. ;
  1. S LABTNME=""
  1. F S LABTNME=$O(NOLOINC(LABTNME)) Q:LABTNME="" D
  1. . S TEST=$G(NOLOINC(LABTNME))
  1. . D ADDLINE(" "_$J(TEST,8)_" "_$E(LABTNME,1,55),.LN)
  1. ;
  1. D ADDLINE(" ",.LN)
  1. D ADDLINE("Number of Lab Tests Without LOINC Code = "_CNTNLOI,.LN)
  1. D ADDLINE(" ",.LN)
  1. ;
  1. D ADDLINE(TAB_"Number of Lab Tests in Dictionary = "_CNTLT,.LN)
  1. D ADDLINE(" ",.LN)
  1. ;
  1. D ADDLINE(TAB_"Number of Lab Tests in Dictionary with LOINC codes = "_CNTLOINC,.LN)
  1. D ADDLINE(" ",.LN)
  1. ;
  1. I +$G(CNTZZ)>0 D
  1. . D ADDLINE(TAB_"Number of ZZ'ed Lab Tests in Dictionary = "_CNTZZ,.LN)
  1. . D ADDLINE(" ",.LN)
  1. ;
  1. Q
  1. ;
  1. ADDLNCJ(MIDSTR,LN,LEFTSTR,RGHTSTR) ; EP
  1. S LN=LN+1
  1. S LRLRPT(LN)=$$CJ^XLFSTR(MIDSTR,IOM)
  1. ;
  1. ; Today's Date
  1. S:$G(LEFTSTR)'="" $E(LRLRPT(LN),1,13)="Date:"_$$HTE^XLFDT($H,"2DZ")
  1. ;
  1. ; Current Time
  1. S:$G(RGHTSTR)'="" $E(LRLRPT(LN),IOM-15)=$J("Time:"_$$UP^XLFSTR($P($$HTE^XLFDT($H,"2MPZ")," ",2,3)),16)
  1. ;
  1. ; Trim extra spaces
  1. S:$G(LEFTSTR)'=""!($G(RGHTSTR)'="") LRLRPT(LN)=$$TRIM^XLFSTR(LRLRPT(LN),"R"," ")
  1. ;
  1. Q
  1. ;
  1. ADDLINE(ADDSTR,LN) ; EP
  1. S LN=LN+1
  1. S LRLRPT(LN)=$$LJ^XLFSTR(ADDSTR,IOM)
  1. Q
  1. ;
  1. REPORTIT ; EP -- Report the data
  1. S %ZIS="Q"
  1. D ^%ZIS
  1. I POP D
  1. . W !!,?10,"DEVICE could not be selected. Output will be to the screen.",!!
  1. ;
  1. I $D(IO("Q")) D Q
  1. . S ZTRTN="DEVRPT^BLRNLOIN",ZTDESC="IHS Non LOINC Lab Tests Report"
  1. . S ZTSAVE("LR*")=""
  1. . S ZTSAVE("CNT*")=""
  1. . D ^%ZTLOAD,^%ZISC
  1. . W !,"Request ",$S($G(ZTSK):"Queued - Task #"_ZTSK,1:"NOT Queued"),!!
  1. . D BLREND
  1. ;
  1. DEVRPT ; EP
  1. D DEVRPTIN
  1. ;
  1. U IO
  1. F Q:$G(LRLRPT(J))=""!(QFLAG="Q") D
  1. . I LINES>MAXLINES D HEADERPG^BLRGMENU(.PG,.QFLAG,"NO") I QFLAG="Q" Q
  1. . ;
  1. . S J=J+1
  1. . W $G(LRLRPT(J))
  1. . S LINES=LINES+1
  1. ;
  1. D ^%ZISC
  1. ;
  1. Q
  1. ;
  1. DEVRPTIN ; EP -- Initialize variables
  1. S (PG,CNT)=0
  1. S MAXLINES=IOSL-3
  1. S LINES=MAXLINES+10
  1. S QFLAG="NO"
  1. K HEADER
  1. F J=2:1:8 S HEADER(J-1)=LRLRPT(J)
  1. ;
  1. S J=10
  1. Q
  1. ;
  1. ; Just Prompt and quit
  1. PRESSIT ; EP
  1. D ^XBFMK
  1. S DIR("A")=$J("",10)_"Press RETURN Key"
  1. S DIR(0)="FO^1:1"
  1. D ^DIR
  1. Q
  1. ;
  1. ; Called when Queued
  1. BLREND ; EP
  1. I $E(IOST,1,2)="P-" W @IOF
  1. I $D(ZTQUEUED) S ZTREQ="@"
  1. E D ^%ZISC
  1. D KVA^VADPT
  1. Q