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

BLRSHDRC.m

Go to the documentation of this file.
  1. BLRSHDRC ; IHS/OIT/MKK - NON MICRO STATE HEALTH DEPT REPORT MAIN [ 07/22/2005 ]
  1. ;;5.2;LR;**1020,1022**;September 20, 2007
  1. ;;
  1. ; Lab PSG gave permission to retrieve programs from PIMC and distribute
  1. ; nationally. The original routines at PIMC are BZXLRSER and BZXLRSEP.
  1. ;
  1. ; Note that ^BLRSHDRD is the new global name for the new dictionary that
  1. ; this routine depends upon: REPORTABLE LAB TESTS (# 90475)
  1. ; It has been distributed with this patch and number given to it by
  1. ; the IHS DBA.
  1. ;
  1. ; This is the driver and compiler of data.
  1. ; It calls BLRSHDRP as the routine to do the actual printing
  1. ;
  1. ; The following is code to prevent routine from being run by D ^BLRLRSER.
  1. EP ;
  1. W !,$C(7),$C(7),$C(7),! ; Bell/Beep
  1. W "Run from Label ONLY",!! ; Failsafe code
  1. Q
  1. ;
  1. PEP ; EP -- Private
  1. NEW HEADER1,HEADER2,HEADERS
  1. NEW STR,SITENAME,SITEADDR,SITECITY,SITESTPT,SITESTAB,SITESTNM,SITEZIP
  1. ;
  1. I $G(IOM)="" D HOME^%ZIS ; If no IOM, then setup Interactive IO vars
  1. ;
  1. K ^TMP($J) ; Clean up
  1. ;
  1. D GETSITE ; Get site information
  1. ;
  1. D ^XBCLS ; Clear screen and home cursor
  1. D EN^DDIOL(.HEADERS) ; Write the Screen Header Lines
  1. ;
  1. D ^XBFMK ; Clear FileMan variables
  1. S DIR("A")="Enter start date"
  1. S DIR(0)="D^::EPX"
  1. D ^DIR
  1. I $D(DIRUT) D Q ; If ^, or RETURN, or timed out, Quit
  1. . K DIR,DIRUT,DTOUT,DUOUT
  1. ;
  1. S BLRSDT=Y ; Start Date
  1. S BLRVDT=Y-.5 ; Trick for $Order function -- see LP label
  1. ;
  1. GETEND ;
  1. S DIR("A")="Enter end date"
  1. S DIR(0)="D^::EPX"
  1. D ^DIR
  1. I $D(DIRUT) D Q
  1. . K DIR,DIRUT,DTOUT,DUOUT,BLRSDT,BLRVDT
  1. S BLRENDT=Y
  1. I BLRENDT<BLRVDT D G GETEND
  1. . W !,"End date cannot be before start date. Try again."
  1. ;
  1. D ^XBCLS
  1. D EN^DDIOL(.HEADERS)
  1. D WAIT^DICD ; Wait Message
  1. ;
  1. LP ;Start looping through tests
  1. ; BLRVDT is both the verification date and the order date
  1. ; In effect we only look at the verification date
  1. NEW TMPIT ; Temp variable -- Discar
  1. ;
  1. F S BLRVDT=$O(^LRO(69,BLRVDT)) Q:'BLRVDT!(BLRVDT>BLRENDT) D
  1. .S LOC=""
  1. .F S LOC=$O(^LRO(69,BLRVDT,1,"AN",LOC)) Q:LOC="" D
  1. ..S LRDFN=""
  1. ..F S LRDFN=$O(^LRO(69,BLRVDT,1,"AN",LOC,LRDFN)) Q:'LRDFN D
  1. ...S LRIDT=9999999-BLRVDT-.5 ; Create Inverse Date
  1. ...;
  1. ...S X=$$FMADD^XLFDT(BLRVDT,-545) ; Subtracts 545 days from BLRVDT
  1. ...S LRIDTLM=9999999-X ; Sets Minimum "Inverse Date"
  1. ...F S LRIDT=$O(^LRO(69,BLRVDT,1,"AN",LOC,LRDFN,LRIDT)) Q:'LRIDT!(LRIDT>LRIDTLM) D
  1. ....Q:'$D(^LR(LRDFN,"CH",LRIDT,0)) ; Quit if no CH data
  1. ....;
  1. ....; S X=$P(^LR(LRDFN,"CH",LRIDT,0),U,3)\1 ; Date Report Completed
  1. ....; ----- BEGIN IHS/OIT/MKK - LR*5.2*1022 - Naked reference correction
  1. ....S X=$P($G(^LR(LRDFN,"CH",LRIDT,0)),U,3)\1 ; Date Report Completed
  1. ....; ----- END IHS/OIT/MKK - LR*5.2*1022 - Naked reference correction
  1. ....Q:X'=BLRVDT ; Quit if no Report Comp Date
  1. ....;
  1. ....S D0=0
  1. ....F S D0=$O(^BLRSHDRD(D0)) Q:'D0 D
  1. .....S BLRTPTR=$P($G(^BLRSHDRD(D0,0)),U,1)
  1. .....S BLRTYPE=""
  1. .....I $P($G(^LAB(60,BLRTPTR,0)),U,12)'="" D
  1. ......S TMPIT=U_$P($G(^LAB(60,BLRTPTR,0)),U,12)_"0)"
  1. ......I $D(@TMPIT)<1 Q
  1. ......S BLRTYPE=$P(@(U_$P($G(^LAB(60,BLRTPTR,0)),U,12)_"0)"),U,2)
  1. .....I $G(BLRTYPE)="" Q ; Quit if no data type for test
  1. .....;
  1. .....S BLRDLOC=$P($G(^LAB(60,BLRTPTR,0)),U,5)
  1. .....I $G(BLRDLOC)="" Q ; Quit f no Location
  1. .....;
  1. .....; S ^BLRDEBUG(LRDFN,LRIDT,D0,"BLRTYPE")=BLRTYPE
  1. .....; S ^BLRDEBUG(LRDFN,LRIDT,D0,"BLRDLOC")=BLRDLOC
  1. .....;
  1. .....Q:'$D(^LR(LRDFN,"CH",LRIDT,$P(BLRDLOC,";",2))) ; Quit if not CH
  1. .....;
  1. .....; S BLRRES=$P(^LR(LRDFN,"CH",LRIDT,$P(BLRDLOC,";",2)),U,1)
  1. .....; S BLRFLD=$P(^LAB(60,BLRTPTR,0),U,12)
  1. .....; ----- BEGIN IHS/OIT/MKK - LR*5.2*1022 - Naked reference correction
  1. ..... S BLRRES=$P($G(^LR(LRDFN,"CH",LRIDT,$P(BLRDLOC,";",2))),U,1)
  1. ..... S BLRFLD=$P($G(^LAB(60,BLRTPTR,0)),U,12)
  1. .....; ----- END IHS/OIT/MKK - LR*5.2*1022 - Naked reference correction
  1. .....S BLRRAWRS=BLRRES
  1. .....;
  1. .....S TRANS=$G(^BLRSHDRD(D0,2))
  1. .....I $L(TRANS) D ; If Transform code, execute it
  1. ......S Y=BLRRES
  1. ......K X
  1. ......X TRANS
  1. ......Q:'$D(X)
  1. ......S BLRRES=X
  1. .....;
  1. .....I $E(BLRTYPE,1)="N" D Q ; Numeric Data Type
  1. ......S COND=$P($G(^BLRSHDRD(D0,0)),U,4)
  1. ......S COND=$S(COND=2:"[",COND=4:"<",COND=5:"=",COND=6:">",1:"")
  1. ......I $G(COND)="" Q
  1. ......S VALUE=$P($G(^BLRSHDRD(D0,0)),U,3)
  1. ......I $E(BLRRES,1)=">" S BLRRES=$P(BLRRES,">",2)+1
  1. ......S BLRRES=+BLRRES
  1. ......I @(BLRRES_COND_VALUE) D STORE
  1. .....;
  1. .....I $E(BLRTYPE,1)="S" D Q ; Set Data Type
  1. ......;What the values stand for in the set
  1. ......S BLRSTNFR=$P(@(U_BLRFLD_"0)"),U,3)
  1. ......F I=1:1 S Y=$P(BLRSTNFR,";",I) Q:Y="" D
  1. .......I $P(Y,":",1)=BLRRAWRS D
  1. ........ I $L($P(Y,":",1))>$L(BLRRAWRS) S BLRRAWRS=$P(Y,":",1) Q
  1. ........ I $L($P(Y,":",2))>$L(BLRRAWRS) S BLRRAWRS=$P(Y,":",2)
  1. .......I $P(Y,":",2)=BLRRAWRS D
  1. ........ I $L($P(Y,":",1))>$L(BLRRAWRS) S BLRRAWRS=$P(Y,":",1) Q
  1. ........ I $L($P(Y,":",2))>$L(BLRRAWRS) S BLRRAWRS=$P(Y,":",2)
  1. ......S D1=0
  1. ......F S D1=$O(^BLRSHDRD(D0,1,D1)) Q:'D1 D
  1. .......S VALUE=$P($G(^BLRSHDRD(D0,1,D1,0)),U,1)
  1. .......I BLRRES=VALUE D STORE
  1. .....;
  1. .....I $E(BLRTYPE,1)="F" D ; Free Text Data Type
  1. ......I BLRRES'=+BLRRES S BLRRES=""""_BLRRES_""""
  1. ......S D1=0
  1. ......F S D1=$O(^BLRSHDRD(D0,4,D1)) Q:'D1 D
  1. .......S COND=$P($G(^BLRSHDRD(D0,4,D1,0)),U,2)
  1. .......S COND=$S(COND=2:"[",COND=4:"<",COND=5:"=",COND=6:">",1:"")
  1. .......I $G(COND)="" Q
  1. .......; S COND=$S(COND="C":"[",1:"=")
  1. .......S VALUE=$P($G(^BLRSHDRD(D0,4,D1,0)),U,1)
  1. .......I VALUE'=+VALUE S VALUE=""""_VALUE_""""
  1. .......I @(BLRRES_COND_VALUE) D STORE
  1. ;
  1. D PEP^BLRSHDRP ; Print data collected
  1. ;
  1. ; D ^XBCLS
  1. D EN^DDIOL(.HEADERS)
  1. I +$G(PG)>0 W !!!,"Number of pages printed = ",PG-1,!
  1. I '$D(IO("Q")) D PRESSRTN^BLRSHDRP ; Press RETURN
  1. ;
  1. K ^TMP($J) ; Clean up
  1. ;
  1. D ^XBCLS
  1. ;
  1. Q
  1. ;
  1. STORE ;Store data for printing
  1. K BLRCOMM,BLRCMIN
  1. ; S BLRFILE=$P(^LR(LRDFN,0),U,2)
  1. ; ----- BEGIN IHS/OIT/MKK - LR*5.2*1022 - Naked reference correction
  1. S BLRFILE=$P($G(^LR(LRDFN,0)),U,2)
  1. ; ----- END IHS/OIT/MKK - LR*5.2*1022 - Naked reference correction
  1. S DFN=$P(^LR(LRDFN,0),U,3)
  1. ; S PATNAM=$S(BLRFILE=2:$P($G(^DPT(DFN,0)),U,1),BLRFILE=67:"*"_$P(^LRT(67,DFN,0),U,1),1:"UNK")
  1. ; ----- BEGIN IHS/OIT/MKK - LR*5.2*1022 - Naked reference correction
  1. S PATNAM=$S(BLRFILE=2:$P($G(^DPT(DFN,0)),U,1),BLRFILE=67:"*"_$P($G(^LRT(67,DFN,0)),U,1),1:"UNK")
  1. ; ----- END IHS/OIT/MKK - LR*5.2*1022 - Naked reference correction
  1. S IENS=DFN_","
  1. S SEX=$$GET1^DIQ(BLRFILE,IENS,.02)
  1. S DOB=$$GET1^DIQ(BLRFILE,IENS,.03)
  1. Q:BLRFILE=67.3
  1. I BLRFILE=67 D
  1. . ;S ID=$P(^LRT(67,DFN,0),U,9)
  1. . ; ----- BEGIN IHS/OIT/MKK - LR*5.2*1022 - Naked reference correction
  1. . S ID=$P($G(^LRT(67,DFN,0)),U,9)
  1. . ; ----- BEGIN IHS/OIT/MKK - LR*5.2*1022 - Naked reference correction
  1. .S (STREET,CITY,STATE,ZIP,PHONE,BLRCOMM,BLRCMIN)=""
  1. E I BLRFILE=2 D
  1. .S ID=$$HRN^AUPNPAT(DFN,DUZ(2))
  1. . ; S Y=^DPT(DFN,.11)
  1. . ;----- BEGIN IHS/OIT/MKK - LR*5.2*1022 - Naked reference correction
  1. . S Y=$G(^DPT(DFN,.11))
  1. . ;----- END IHS/OIT/MKK - LR*5.2*1022 - Naked reference correction
  1. .S STREET=$P(Y,U,1)
  1. .S CITY=$P(Y,U,4)
  1. .S ZIP=$P(Y,U,6)
  1. .S IENS=DFN_","
  1. .S STATE=$$GET1^DIQ(2,IENS,.115)
  1. .S PHONE=$$GET1^DIQ(2,IENS,.131)
  1. .S BLRCOMM=$$COMMRES^AUPNPAT(DFN,"E")
  1. .S BLRCMIN=$$COMMRES^AUPNPAT(DFN,"I")
  1. .I 'BLRCMIN D
  1. ..; S BLRXCOMM=$P(^AUPNPAT(DFN,11),U,18)
  1. ..; ----- BEGIN IHS/OIT/MKK - LR*5.2*1022 - Naked reference correction
  1. .. S BLRXCOMM=$P($G(^AUPNPAT(DFN,11)),U,18)
  1. ..; ----- BEGIN IHS/OIT/MKK - LR*5.2*1022 - Naked reference correction
  1. ..Q:BLRCOMM=""
  1. ..S BLRCMIN=$O(^AUTTCOM("B",BLRCOMM,""))
  1. I BLRCMIN,$D(BLRGR),'$D(^BLRGRHR("B",BLRCMIN)) Q
  1. I $D(BLRGR),'BLRCMIN Q
  1. S ^TMP($J,D0)=$P($G(^BLRSHDRD(D0,0)),U,2) ; Reporting Test
  1. I $G(^TMP($J,D0))="" S ^TMP($J,D0)=$P($G(^LAB(60,BLRTPTR,0)),U,1)
  1. S ^TMP($J,D0,LRDFN,LRIDT)=PATNAM_U_ID_U_DOB_U_SEX_U_PHONE_U_STREET_U_CITY_U_STATE_U_ZIP_U_BLRCOMM_U_BLRRAWRS
  1. Q
  1. ;
  1. ; NOTE: The variables HEADER1 & HEADER2 hold the "header" information for the
  1. ; report, which must be 132 columns wide. That is why the Right Margin
  1. ; is hard-coded to 132 for those 2 variables.
  1. GETSITE ;
  1. ;
  1. D MAKESITE ; Get Site parameters
  1. ;
  1. D MAKEHDRS ; Create Header Strings
  1. ;
  1. Q
  1. MAKEHDRS ; EP
  1. ;
  1. S STR=$$CJ^XLFSTR(SITENAME,132)
  1. S $E(STR,1,28)=SITESTAB_" HEALTH DEPARTMENT REPORT"
  1. S HEADER1=STR ; HEADER LINE 1
  1. ;
  1. S HEADER2=$$CJ^XLFSTR(SITEADDR_", "_SITECITY_", "_SITESTAB_" "_SITEZIP,132)
  1. I $TR($TR(HEADER2,",")," ")="" S HEADER2="" ; If nothing, set to null
  1. ;
  1. ; Screen Header
  1. NEW TMPLN ; Temporary Line
  1. ;
  1. S TMPLN=$$CJ^XLFSTR(SITENAME,IOM)
  1. S $E(TMPLN,1,13)="Date:"_$$NUMDATE^BLRUTIL($$DT^XLFDT()) ; Today's Date
  1. S $E(TMPLN,IOM-16)=$J("Time:"_$$NUMTIME^BLRUTIL($$NOW^XLFDT()),16) ; Current Time
  1. S TMPLN=$$TRIM^XLFSTR(TMPLN,"R"," ") ; Trim extra spaces
  1. S HEADERS(1)=TMPLN
  1. ;
  1. S BLRVERN="1.01.02" ; Version number
  1. S TMPLN=$$CJ^XLFSTR(SITESTAB_" Health Department Report",IOM) ; Center Header Line 2
  1. S $E(TMPLN,IOM-11)=$J(BLRVERN,11) ; Version Number
  1. S TMPLN=$$TRIM^XLFSTR(TMPLN,"R"," ") ; Trim extra spaces
  1. S HEADERS(2)=TMPLN
  1. ;
  1. S HEADERS(3)=$TR($J("",IOM-1)," ","-") ; Dashed line
  1. S HEADERS(4)=" " ; Blank line
  1. ;
  1. Q
  1. ;
  1. MAKESITE ;
  1. W !!!
  1. D ^XBFMK
  1. D GETDUZS
  1. ;
  1. S DIR("A")="Use Site "_SITENAME_" as Report Header"
  1. S DIR("B")="YES"
  1. S DIR(0)="Y"
  1. D ^DIR
  1. I X["Y" Q ; Accepted Default
  1. ;
  1. ; Did NOT accept default. Get Institution
  1. D ^XBFMK
  1. S DIC=4
  1. S DIC(0)="ACEIKNQTZ"
  1. S DIC("B")=SITENAME
  1. D ^DIC
  1. I $D(DIRUT) D Q ; If ^, or RETURN, or timed out, Quit
  1. . K DIR,DIRUT,DTOUT,DUOUT
  1. . D SETHDRVS($G(DUZ(2))) ; Something has to be there
  1. ;
  1. D SETHDRVS(+Y)
  1. ;
  1. Q
  1. ;
  1. ; Get Site Name/Address using DUZ(2)
  1. GETDUZS ;
  1. D SETHDRVS($G(DUZ(2))) ; Set HeaDeR VariableS
  1. ;
  1. S DIR("A",1)="Default Site/Address for Report:"
  1. S DIR("A",2)=" "
  1. S DIR("A",3)=" "_SITENAME
  1. S DIR("A",4)=" "_SITEADDR
  1. S DIR("A",5)=" "_SITECITY_", "_SITESTAB_" "_SITEZIP
  1. S DIR("A",6)=" "
  1. ;
  1. Q
  1. ;
  1. ; SET HeaDeR VariableS -- use ONLY values in dictionaries.
  1. ; NO FREE TEXT.
  1. SETHDRVS(DIC4PTR) ; EP
  1. S SITENAME=$$GET1^DIQ(4,DIC4PTR_",","NAME")
  1. ;
  1. S SITESTAB=$$GET1^DIQ(4,DIC4PTR_",","STATE:ABBREVIATION")
  1. S SITESTNM=$$GET1^DIQ(4,DIC4PTR_",","STATE:NAME")
  1. ;
  1. S SITEADDR=$$GET1^DIQ(4,DIC4PTR_",","STREET ADDR. 1")
  1. S STR=$$GET1^DIQ(4,DIC4PTR_",","STREET ADDR. 2")
  1. I $G(STR)'="" S SITEADDR=SITEADDR_" "_STR
  1. ;
  1. S SITECITY=$$GET1^DIQ(4,DIC4PTR_",","CITY")
  1. S SITEZIP=$$GET1^DIQ(4,DIC4PTR_",","ZIP")
  1. ;
  1. S ^TMP($J,"DIC4PTR")=DIC4PTR
  1. Q