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

ORDV02C.m

Go to the documentation of this file.
  1. ORDV02C ;SLC/DCM - OE/RR REPORT EXTRACTS ;MAY 17, 2024@15:40
  1. ;;3.0;ORDER ENTRY/RESULTS REPORTING;**350,423,377,534,603,610**;Dec 17, 1997;Build 11
  1. ;
  1. ; Reference to GCPR^OMGCOAS1 in ICR #3486
  1. ; Reference to ^TMP("60" in ICR #3486
  1. ; Reference to ^LAB(60 in ICR #2387
  1. ;
  1. OV(ROOT,ORALPHA,OROMEGA,ORMAX,ORDBEG,ORDEND,OREXT) ;Lab Overview
  1. I '$D(ORDEND) S ORDEND=9999999 ;Acknowledging parameter input value in ORDEND DM-610
  1. S OROMEGA=ORDEND
  1. I $L($T(GCPR^OMGCOAS1)) D ; Call if FHIE station 200
  1. . N BEG,END,MAX
  1. . Q:'$G(ORALPHA) Q:'$G(OROMEGA)
  1. . S MAX=$S(+$G(ORMAX)>0:ORMAX,1:999)
  1. . S BEG=9999999-OROMEGA,END=9999999-ORALPHA
  1. . D GCPR^OMGCOAS1(DFN,"LRO",BEG,END,MAX)
  1. N D,SN,ORX0,MAX,GMTS1,GMTS2,GMTSBEG,GMTSEND,GMTSMERG,ORSITE,SITE,GO,SORT,STATUS,S,LST,RSLT,Y,IVSDT,IVEDT,I,X,ORCTR,ORSTOP
  1. Q:'$L(OREXT)
  1. S GO=$P(OREXT,";")_"^"_$P(OREXT,";",2)
  1. Q:'$L($T(@GO))
  1. S GMTSBEG=0,GMTSEND=9999999,MAX=9999,GMTSMERG=1
  1. S ORSITE=$$SITE^VASITE,ORSITE=$P(ORSITE,"^",2)_";"_$P(ORSITE,"^",3)
  1. K ^TMP("ORDATA",$J)
  1. I '$L($T(GCPR^OMGCOAS1)) D
  1. . K ^TMP("LRO",$J),^TMP("ORTXT",$J),^TMP("ORSORT",$J),^TMP("ORXPND",$J)
  1. . D @GO
  1. S D=ORDBEG,IVSDT=ORDBEG,IVEDT=(9999999-ORDEND),ORCTR=1,ORSTOP=0 ;IVEDT change to reverse date order DM-603
  1. F S D=$O(^TMP("ORSORT",$J,D)) Q:'D!(D<IVEDT)!ORSTOP D
  1. . S S=0 F S S=$O(^TMP("ORSORT",$J,D,S)) Q:'S!ORSTOP S SN=0 F S SN=$O(^TMP("ORSORT",$J,D,S,SN)) S:ORCTR>ORMAX ORSTOP=1 Q:'SN!ORSTOP S ORX0=^(SN),ORCTR=ORCTR+1 D
  1. .. S SITE=$S($L($G(^TMP("LRO",$J,D,SN,"facility"))):^("facility"),1:ORSITE)
  1. .. S ^TMP("ORDATA",$J,D,S,SN,"WP",1)="1^"_SITE ;Station ID*1*1
  1. .. S ^TMP("ORDATA",$J,D,S,SN,"WP",2)="2^"_$P(ORX0,U) ;collection date*2*2
  1. .. S ^TMP("ORDATA",$J,D,S,SN,"WP",3)="3^"_$P($P(ORX0,U,2),";",2) ;test name*3*3
  1. .. S ^TMP("ORDATA",$J,D,S,SN,"WP",4)="4^"_$P($P(ORX0,U,2),";") ;test ien*3*4
  1. .. S ^TMP("ORDATA",$J,D,S,SN,"WP",5)="5^"_"" ;critical value field (calculated)
  1. .. S ^TMP("ORDATA",$J,D,S,SN,"WP",6)="6^"_$P($P(ORX0,U,3),";",2) ;specimen name*6*6
  1. .. S ^TMP("ORDATA",$J,D,S,SN,"WP",7)="7^"_$P($P(ORX0,U,3),";") ;specimen ien*7*7
  1. .. S ^TMP("ORDATA",$J,D,S,SN,"WP",8)="8^"_$P($P(ORX0,U,6),";",2) ;provider name*9*8
  1. .. S ^TMP("ORDATA",$J,D,S,SN,"WP",9)="9^"_$P($P(ORX0,U,6),";") ;provider ien*10*9
  1. .. S ^TMP("ORDATA",$J,D,S,SN,"WP",10)="10^"_$P(ORX0,U,5) ;status*8*10
  1. .. S ^TMP("ORDATA",$J,D,S,SN,"WP",11)="11^"_$P(ORX0,U,9) ;available date/time*11*YES
  1. .. S ^TMP("ORDATA",$J,D,S,SN,"WP",12)="12^"_$P(ORX0,U,12) ;OE/RR order #*12*
  1. .. S ^TMP("ORDATA",$J,D,S,SN,"WP",13)="13^"_$P(ORX0,U,4) ;urgency*13* (not needed in any reports/can be deleted)
  1. .. S ^TMP("ORDATA",$J,D,S,SN,"WP",14)="14^"_$P(ORX0,U,8) ;accession number*14* ((not needed in any reports/can be deleted)
  1. .. K ^TMP("ORXPND",$J)
  1. .. S RSLT="^TMP(""ORXPND"",$J)" D RESULT^ORWOR(.RSLT,DFN,$P(ORX0,U,12),$P(ORX0,U,12))
  1. .. D SPMRG^ORDVU("^TMP(""ORXPND"","_$J_")","^TMP(""ORDATA"","_$J_","_D_","_S_","_SN_",""WP"",15)",15) ;Test Results*15*
  1. .. K ^TMP("ORTXT",$J) S LST="^TMP(""ORTXT"",$J)" D DETAIL^ORWOR(.LST,$P(ORX0,U,12),DFN)
  1. .. D SPMRG^ORDVU("^TMP(""ORTXT"","_$J_")","^TMP(""ORDATA"","_$J_","_D_","_S_","_SN_",""WP"",16)",16) ;order details*16*
  1. .. I $O(@LST@(0))!($O(@RSLT@(0))) S ^TMP("ORDATA",$J,D,S,SN,"WP",17)="17^[+]" ;flag for details*17*YES
  1. .. N TSTNM,TSTIEN,GOTIT,T,TT,STOP,FLAG
  1. .. S TSTNM=$P($P(ORX0,U,2),";",2),TSTIEN=$P($P(ORX0,U,2),";")
  1. .. S TSTNM=$S($L($P(^LAB(60,+TSTIEN,0),U))>25:$S($L($P($G(^(.1)),U)):$P(^(.1),U),1:$E($P(^(0),U),1,25)),1:$E($P(^(0),U),1,25))
  1. .. S (I,GOTIT,STOP)=0,T="",TT=""
  1. .. I '$O(^LAB(60,+TSTIEN,2,0)) D Q ;***Test is NOT a panel
  1. ... F S I=$O(^TMP("ORXPND",$J,I)) Q:'I S X=^(I,0) I X["H*"!(X["L*") D Q:GOTIT
  1. .... I $P(X," ")=TSTNM S GOTIT=1,^TMP("ORDATA",$J,D,S,SN,"WP",5)="5^"_$S(X["H*":"H*",X["L*":"L*",1:"") Q
  1. .. S (I,GOTIT)=0,(Y,FLAG)=""
  1. .. I $O(^LAB(60,+TSTIEN,2,0)) S T=$O(^(0)),TT=$G(^(T,0)) D Q ;***Test is a panel
  1. ... I '$O(^LAB(60,+TSTIEN,2,T)) D Q ;If panel only has 1 test, treat like a cosmic test
  1. .... N TSTNM S STOP=1
  1. .... S TSTNM=$S($L($P(^LAB(60,+TT,0),U))>25:$S($L($P($G(^(.1)),U)):$P(^(.1),U),1:$E($P(^(0),U),1,25)),1:$E($P(^(0),U),1,25))
  1. .... F S I=$O(^TMP("ORXPND",$J,I)) Q:'I S X=^(I,0) I X["H*"!(X["L*") D Q:GOTIT
  1. ..... I $P(X," ")=TSTNM S GOTIT=1,^TMP("ORDATA",$J,D,S,SN,"WP",5)="5^"_$S(X["H*":"H*",X["L*":"L*",1:"") Q
  1. ... Q:STOP
  1. ... D PANEL(TSTIEN)
  1. ... S ^TMP("ORDATA",$J,D,S,SN,"WP",5)="5^"_FLAG Q
  1. ;The following set of comments is for the Overview report
  1. ;Critical Value Flag **5
  1. ;Flags for Partial Results **11
  1. ;Details is test results **YES in same format as "All Tests By Date" with Release Date/Time, Reporting site, Site Code (facility) added
  1. K ^TMP("LRO",$J),^TMP("ORTXT",$J),^TMP("ORSORT",$J),^TMP("ORXPND",$J)
  1. S ROOT=$NA(^TMP("ORDATA",$J))
  1. Q
  1. PANEL(TEST) ;Check sub-panels for a match
  1. ;OR*3.0*534 - modified this section so that comment lines containing
  1. ;an L* and/or H* wouldn't flag as critical
  1. N T,TT,TSTNM,X,I
  1. S T=0
  1. F S T=$O(^LAB(60,TEST,2,T)) Q:'T Q:FLAG="H* L*" S TT=+$G(^(T,0)) D
  1. . I $O(^LAB(60,TT,2,0)) D PANEL(TT) Q:GOTIT
  1. . S I=0,TSTNM=$S($L($P(^LAB(60,+TT,0),U))>25:$S($L($P($G(^(.1)),U)):$P(^(.1),U),1:$E($P(^(0),U),1,25)),1:$E($P(^(0),U),1,25))
  1. . F S I=$O(^TMP("ORXPND",$J,I)) Q:'I S X=^(I,0) I $P(X," ")=TSTNM&(X["H*"!(X["L*")) D
  1. .. S FLAG=$S(FLAG="H*"&(X["L*"):"H* L*",FLAG="L*"&(X["H*"):"H* L*",X["H*":"H*",X["L*":"L*",1:"*")
  1. Q