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

ORDV02D.m

Go to the documentation of this file.
  1. ORDV02D ;SLC/DCM - OE/RR REPORT EXTRACTS ;JAN 16, 2024@11:20
  1. ;;3.0;ORDER ENTRY/RESULTS REPORTING;**423,377,603**;Dec 17, 1997;Build 14
  1. ;
  1. OV ;Overview
  1. D EXT("OV")
  1. Q
  1. PEND ;Pending
  1. D EXT("PEND")
  1. Q
  1. ALL ;ALL
  1. D EXT("ALL")
  1. Q
  1. EXT(ORPRT) ;New Lab Reports Extract
  1. N S,DP,ORLIST,STARTDT,STAT,IFN,OS,CST,TEST,COLL,ODT,NM,RL,MD,GMI,SORT,D,SN,STATUS,X4,LRODT,LRSN,ORMERG,ORX0,ORIFN,X1,X2,X3,FLAG,IVEDT,IVSDT
  1. K ^TMP("OR",$J),^TMP("OROR",$J),^TMP("ORSORT",$J),^TMP("ORR",$J)
  1. S X=$O(^ORD(100.98,"B","LAB",0)) Q:'X S DP=X ; Display group = LAB
  1. S FLAG=1,X3=1,OS="",TEST="",GMI=0
  1. S X1=0,X2=9999999 ;Get everything to ensure all orders are included, then sort later by date ranges
  1. I ORPRT="OV" S SORT="On Collection List:2^COLLECTED:3^PROCESSING:4^COMPLETED:6"
  1. I ORPRT="PEND" S SORT="ORDERED:1^On Collection List:2^COLLECTED:3^PROCESSING:4"
  1. I ORPRT="ALL" S SORT="ORDERED:1^On Collection List:2^COLLECTED:3^PROCESSING:4^CANCELED:5^COMPLETED:6"
  1. D EN^ORQ1(DFN_";DPT(",DP,FLAG,"",X1,X2,X3)
  1. S IFN=0
  1. F S IFN=$O(^TMP("ORR",$J,ORLIST,IFN)) Q:IFN<1 S X=^(IFN) D
  1. . S ORIFN=+$P(X,"^"),STARTDT=$P(X,"^",4),STAT=$P(X,"^",6)
  1. . Q:'$D(^OR(100,ORIFN,0)) S ORX0=^(0),X4=$G(^(4))
  1. . I 'STARTDT S STARTDT=$S($L($P(X4,";",5)):9999999-$P(X4,";",5),1:$P(X,"^",3)) ;If no StartDate use lab CollectionDate or OrderDate
  1. . S LRODT=$P(X4,";",2),LRSN=$P(X4,";",3),ORMERG=0
  1. . I ORPRT="OV" D GET ;Set date for Inverse Start Date, sort by Date then Status, exclude ORDERED, CANCELED
  1. . I ORPRT="PEND" D GET ;Set date for Forward Start Date, sort by Date then Status, exclude COMPLETED, CANCELED
  1. . I ORPRT="ALL" D GET ;Set date for Inverse Start Date, sort by Status then Date
  1. S D=0
  1. S IVEDT=ORDBEG,IVSDT=ORDEND,D=IVEDT
  1. F S D=$O(^TMP("OROR",$J,D)) Q:'D!(D>IVSDT) D
  1. . S SN=0
  1. . F S SN=$O(^TMP("OROR",$J,D,SN)) Q:'SN S ORX0=^(SN) I $L(ORX0) S STATUS=$P(ORX0,"^",5) I $L($P(ORX0,"^")) D
  1. .. S S=$E(SORT,$F(SORT,STATUS)+1)
  1. .. I ORPRT="OV",STATUS'="ORDERED",STATUS'="CANCELED" S ^TMP("ORSORT",$J,9999999-D,S,SN)=ORX0 ;Reverse sort order DM-603
  1. .. I ORPRT="PEND",STATUS'="CANCELED",STATUS'="COMPLETED" S ^TMP("ORSORT",$J,9999999-D,S,SN)=ORX0
  1. .. I ORPRT="ALL" S ^TMP("ORSORT",$J,S,D,SN)=ORX0
  1. K ^TMP("OROR",$J),^TMP("ORR",$J)
  1. Q
  1. GET ;
  1. N ORI,ORX,GOTLR
  1. S ORI=0
  1. F S ORI=$O(^OR(100,ORIFN,4.5,"ID","ORDERABLE",ORI)) Q:ORI<1 I $D(^OR(100,ORIFN,4.5,ORI,1)) S ORX=^(1) D
  1. . S GOTLR=0
  1. . I $D(^ORD(101.43,+ORX,0)) S (TEST,ORX)=+$P(^(0),"^",2)
  1. . I ORX,LRODT,LRSN,$D(^LRO(69,LRODT,1,LRSN,2,"B",ORX)) S ORX=$O(^(ORX,0)) D
  1. .. Q:'$L($G(^LRO(69,LRODT,1,LRSN,0)))
  1. .. I $G(^LRO(69,LRODT,1,LRSN,2,ORX,0)) S ORX=^(0),GOTLR=1 D GET69
  1. . I 'ORMERG,'GOTLR D GET63 ;Get data from file 63 and OE/RR
  1. Q
  1. GET63 ; Get data from file 63 and OE/RR files
  1. N SUB,CDT,LRIDT,X0,SPEC,OS,MD,IFN,PKG,FILE,NM,MD,ACC,ODT,URG,COLL,CD,RDT,LRDFN,FNF,NSPACE
  1. Q:'$L($P(X4,";",4)) Q:'$L($P(X4,";",5))
  1. S SUB=$P(X4,";",4),LRIDT=$P(X4,";",5)
  1. I '$D(DFN) S DFN=$S($D(ORVP):+ORVP,1:0) Q:'DFN
  1. Q:'$D(^DPT(DFN,"LR")) S LRDFN=+^DPT(DFN,"LR") Q:'$D(^LR(LRDFN))
  1. Q:'$D(^LR(LRDFN,SUB,LRIDT,0)) S X0=^(0)
  1. S X=STARTDT D REGDTM4 S CDT=X
  1. S TEST=TEST_";"_$P($G(^LAB(60,+TEST,0)),"^"),SPEC=+$P(X0,"^",5)_";"_$P($G(^LAB(61,+$P(X0,"^",5),0)),"^"),OS=$S($P(X0,"^",3):"COMPLETED",1:"PROCESSING")
  1. S (MD,IFN)=$P(X0,"^",10),FNF=0,NSPACE="LR"
  1. I SUB="MI" S (MD,IFN)=$P(X0,"^",7)
  1. S PKG=$$VERSION^XPDUTL(NSPACE),FILE=$S($G(PKG)<5.2:6,1:200)
  1. S NM=$S($L($P($G(^VA(200,+MD,0)),"^")):$P(^(0),"^"),1:"UNKOWN"),MD=+MD_";"_NM,ACC=$P(X0,"^",6)
  1. S X=$P(ORX0,"^",7) D REGDTM4 S ODT=X
  1. S X=$P(X0,"^",3) D REGDTM4 S RDT=X
  1. S URG="UNKNOWN",COLL="UNKNOWN",CD=$P($P(ORX0,"^",7),".") ;COLL=Collection Type
  1. S GMI=GMI+1,^TMP("OROR",$J,STARTDT,GMI)=CDT_U_TEST_U_SPEC_U_URG_U_OS_U_MD_U_ODT_U_ACC_U_RDT_U_COLL_U_CD_U_ORIFN
  1. Q
  1. GET69 ; Get data from Lab Order/accession (69, 68) files
  1. N X,IDT,SPEC,SITE,BADTEST,FST,SPST
  1. I $L($P($G(^LRO(69,LRODT,1,LRSN,1)),"^",7)) S ORMERG=1 Q ;exclude merged orders from extract
  1. I $D(^LRO(69,LRODT,1,LRSN,0)) S SPST=^(0) D ORDER
  1. I $D(^LRO(69,LRODT,1,LRSN,1)) S CST=^(1) D COLLECT I 1
  1. E S OS="ORDERED",X=$P(^LRO(69,LRODT,1,LRSN,0),U,8),IDT=9999999-X D REGDTM4 S CDT=X
  1. I $D(^LRO(69,LRODT,1,LRSN,3)) S FST=^(3) D RESULT I 1
  1. E S RDT=""
  1. S SITE=+$G(^LRO(69,LRODT,1,LRSN,4,+$O(^LRO(69,LRODT,1,LRSN,4,0)),0)),SPEC=$S(SITE>0:SITE_";"_$P(^LAB(61,SITE,0),U),1:";UNKNOWN")
  1. S:$P(ORX,"^",9)="CA" OS="CANCELED"
  1. D TEST69
  1. I $D(BADTEST) K BADTEST Q
  1. S GMI=GMI+1,^TMP("OROR",$J,STARTDT,GMI)=CDT_U_TEST_U_SPEC_U_URG_U_OS_U_MD_U_ODT_U_ACC_U_RDT_U_COLL_U_LRODT_U_$P(ORX,U,7)
  1. Q
  1. ORDER ; Get Orders
  1. N IFN,FNF,FILE,NM,NSPACE,PKG,X
  1. S COLL=$S($L($P(SPST,U,4)):$P(SPST,U,4),1:"UNKNOWN")
  1. S:"LW"[COLL COLL=$S(COLL="L":"LAB",1:"WARD")
  1. S X=$P(SPST,U,5) D REGDTM4 S ODT=X
  1. S (MD,IFN)=$P(SPST,U,6),FNF=0,NSPACE="LR"
  1. S PKG=$$VERSION^XPDUTL(NSPACE),FILE=$S($G(PKG)<5.2:6,1:200)
  1. S NM=$S($L($P($G(^VA(200,+MD,0)),"^")):$P(^(0),"^"),1:"UNKOWN"),MD=+MD_";"_NM
  1. S RL=$P(SPST,U,7)
  1. Q
  1. COLLECT ;Get Collection status from 69
  1. N X,CS
  1. S X=STARTDT D REGDTM4 S CDT=X
  1. S CS=$P(CST,U,4),OS="COLLECTED"
  1. S OS=$S(CS="C":"COLLECTED",X="U":"CANCELED",1:"On Collection List")
  1. Q
  1. RESULT ;Get Result status
  1. N X S X=$P(FST,U,2) D REGDTM4 S RDT=X
  1. I X S OS="COMPLETED"
  1. Q
  1. TEST69 ;Get Collection status from file 68 (overrides 69)
  1. N TPTR,UPTR,ACCD,ACCA,ACCN,X
  1. S TPTR=+ORX,UPTR=$P(ORX,U,2)
  1. I '$D(^LAB(60,+TPTR,0)) S BADTEST=1 Q
  1. S ACCD=$P(ORX,U,3),ACCA=$P(ORX,U,4),ACCN=$P(ORX,U,5)
  1. S TEST=TPTR_";"_$S($L($P(^LAB(60,TPTR,0),U))<21:$P(^(0),U),1:$P(^(.1),U))
  1. S URG=$E($S($D(^LAB(62.05,+UPTR,0)):$P(^(0),U),1:""),1,7)
  1. I $S('$D(ACCD):1,'$L(ACCA):1,'$L(ACCD):1,1:0) S ACC="NONE" Q
  1. S ACC=$S($D(^LRO(68,+ACCA,1,+ACCD,1,+ACCN,.2)):^(.2),1:"NONE")
  1. I $D(^LRO(68,+ACCA,1,+ACCD,1,+ACCN,4,TPTR,0)) S X=$P(^(0),U,5) D
  1. . I $G(OS)'="CANCELED",$G(OS)'="On Collection List" S OS=$S('$L(X):"PROCESSING",1:"COMPLETED")
  1. Q
  1. REGDTM4 ;Receives X FM date and returns X in MM/DD/YYYY TT:TT
  1. S X=$TR($$FMTE^XLFDT(X,"5ZM"),"@"," ")
  1. Q