| 1 | ORWOR2 ; slc/dcm - Result RPC functions
 | 
|---|
| 2 |  ;;3.0;ORDER ENTRY/RESULTS REPORTING;**141**;Dec 17, 1997
 | 
|---|
| 3 | ORDHIST  ; -- orders - compare with ORDERS^ORCXPND1
 | 
|---|
| 4 |  I '$G(ORESULTS) D ORDERS^ORCXPND2 Q
 | 
|---|
| 5 |  ; -- Result History Display (Add more packages as available)
 | 
|---|
| 6 |  N PKG,TAB,ORIFN
 | 
|---|
| 7 |  S PKG=+$P($G(^OR(100,+ID,0)),"^",14),PKG=$$NMSP^ORCD(PKG)
 | 
|---|
| 8 |  S TAB=$S(PKG="LR":"LABS",PKG="GMRC":"CONSULTS",PKG="RA":"XRAYS",1:"")
 | 
|---|
| 9 |  I '$L(TAB)!(ID'>0) D  Q  ; no display available
 | 
|---|
| 10 |  . N ORY,I
 | 
|---|
| 11 |  . D TEXT^ORQ12(.ORY,+ID,80)
 | 
|---|
| 12 |  . S I=0 F  S I=$O(ORY(I)) Q:I'>0  D ITEM^ORCXPND(ORY(I))
 | 
|---|
| 13 |  . D BLANK^ORCXPND
 | 
|---|
| 14 |  . S LCNT=LCNT+1,^TMP("ORXPND",$J,LCNT,0)="There are no results to report in this time range."
 | 
|---|
| 15 |  I $O(^OR(100,+ID,2,0)) S ORIFN=+ID,ID=0 F  S ID=$O(^OR(100,ORIFN,2,ID)) Q:ID<1  I $D(^OR(100,ID,0)) D @TAB
 | 
|---|
| 16 |  I '$O(^OR(100,+ID,2,0)) D @TAB
 | 
|---|
| 17 |  Q
 | 
|---|
| 18 | LABS ; -- laboratory [RESULTS ONLY for ID=OE order #]
 | 
|---|
| 19 |  N ORIFN,X,Y,SUB,NAME,SS,IDE,IVDT,TST,CC,ORCY,IG,TCNT,ITEM,ORY,SDATE,EDATE,ITDATE,ITMDATE,NDT,STAR,LNM
 | 
|---|
| 20 |  K ^TMP("LRRR",$J),^TMP("LRAPI",$J)
 | 
|---|
| 21 |  S ORIFN=+ID,IDE=$G(^OR(100,+ID,4))
 | 
|---|
| 22 |  Q:'$L(IDE)  ; OE# -> Lab#
 | 
|---|
| 23 |  S ITEM=$$VALUE^ORX8(ID,"ORDERABLE",,"I"),ITMDATE=$S($P(ID,";",2):$P($G(^OR(100,ORIFN,8,$P(ID,";",2),0)),"^",16),1:$P(^OR(100,ORIFN,0),"^",8)),ITDATE=$$FMTE^XLFDT(ITMDATE,"1M")
 | 
|---|
| 24 |  Q:'ITEM
 | 
|---|
| 25 |  S ITEM=+$P($G(^ORD(101.43,+ITEM,0)),"^",2)
 | 
|---|
| 26 |  S $P(IDE,";",1,3)=";;"
 | 
|---|
| 27 |  S SDATE=9999999-$S($P(IDE,";",5):$P(IDE,";",5),1:ITMDATE),EDATE=$$FMADD^XLFDT(DT,-1825) ;Set for previous 5 years
 | 
|---|
| 28 |  D RR^LR7OR1(+ORVP,,SDATE,EDATE,,ITEM,,5)
 | 
|---|
| 29 |  K ORCY D TEXT^ORQ12(.ORCY,ORIFN,80)
 | 
|---|
| 30 |  S IG=0 F  S IG=$O(ORCY(IG)) Q:IG<1  S X=ORCY(IG) D ITEM^ORCXPND(X)
 | 
|---|
| 31 |  D BLANK^ORCXPND
 | 
|---|
| 32 |  I '$D(^TMP("LRRR",$J,+ORVP)) S LCNT=LCNT+1,^TMP("ORXPND",$J,LCNT,0)="No data available." Q
 | 
|---|
| 33 |  S LCNT=LCNT+1,^TMP("ORXPND",$J,LCNT,0)="Order Released: "_ITDATE_$S('$P(IDE,";",5):" (Results not yet available for this order)",1:"  (* Results for this order)")
 | 
|---|
| 34 |  S CC=0,SS="",TCNT=0
 | 
|---|
| 35 |  F  S SS=$O(^TMP("LRRR",$J,+ORVP,SS)) Q:SS=""  S IVDT=0 F  S IVDT=$O(^TMP("LRRR",$J,+ORVP,SS,IVDT)) Q:'IVDT  D  Q:SS="MI"  Q:SS="BB"
 | 
|---|
| 36 |  . S NDT=1,STAR=" "
 | 
|---|
| 37 |  . I SS="BB" K ^TMP("LRC",$J) D EN1^LR7OSBR(+ORVP) Q:'$D(^TMP("LRC",$J))  D  Q
 | 
|---|
| 38 |  .. N I S I=0 F  S I=$O(^TMP("LRC",$J,I)) Q:I<1  S X=^(I,0),LCNT=LCNT+1,^TMP("ORXPND",$J,LCNT,0)=X
 | 
|---|
| 39 |  .. K ^TMP("LRC",$J)
 | 
|---|
| 40 |  . I SS="MI" K ^TMP("LRC",$J) D EN^LR7OSMZ0(+ORVP) Q:'$D(^TMP("LRC",$J))  D  Q
 | 
|---|
| 41 |  .. S LCNT=LCNT+1,^TMP("ORXPND",$J,LCNT,0)="Previous 5 sets of related results within 5 years... "
 | 
|---|
| 42 |  .. N I S I=0 F  S I=$O(^TMP("LRC",$J,I)) Q:I<1  S X=^(I,0),LCNT=LCNT+1,^TMP("ORXPND",$J,LCNT,0)=X
 | 
|---|
| 43 |  .. K ^TMP("LRC",$J)
 | 
|---|
| 44 |  . I SS="CH",$O(^TMP("LRRR",$J,+ORVP,SS,IVDT,0)) D  Q
 | 
|---|
| 45 |  .. S TST=0 F  S TST=$O(^TMP("LRRR",$J,+ORVP,SS,IVDT,TST)) Q:TST=""  S CC=0,Y="",TCNT=TCNT+1,X=$S(TST:^TMP("LRRR",$J,+ORVP,SS,IVDT,TST),1:"") D
 | 
|---|
| 46 |  ... I TCNT=1 D
 | 
|---|
| 47 |  .... S LCNT=LCNT+1,^TMP("ORXPND",$J,LCNT,0)="Previous 5 sets of related results within 5 years... "
 | 
|---|
| 48 |  .... D BLANK^ORCXPND
 | 
|---|
| 49 |  .... S CC=0,LCNT=LCNT+1,^TMP("ORXPND",$J,LCNT,0)=$$S(1,CC," ")_$$S(1,CC,"Collection Time")_$$S(21,CC,"Test Name")_$$S(34,CC,"Result")_$$S(42,CC,"Units")_$$S(58,CC,"Range")
 | 
|---|
| 50 |  .... S CC=0,LCNT=LCNT+1,^TMP("ORXPND",$J,LCNT,0)=$$S(1,CC," ")_$$S(1,CC,"------------------")_$$S(21,CC,"---------")_$$S(34,CC,"------")_$$S(42,CC,"-----")_$$S(58,CC,"-----")
 | 
|---|
| 51 |  ... I TST S X=^TMP("LRRR",$J,+ORVP,SS,IVDT,TST),CC=0 I +X D
 | 
|---|
| 52 |  .... I NDT=1,$P(IDE,";",5)=IVDT S STAR="*"
 | 
|---|
| 53 |  .... S LCNT=LCNT+1,LNM=$S($D(^LAB(60,+X,.1)):$P(^(.1),U),1:$P(^(0),U))
 | 
|---|
| 54 |  .... S ^TMP("ORXPND",$J,LCNT,0)=STAR_$S(NDT=1:$$S(1,CC,$$FMTE^XLFDT(9999999-IVDT,"1M")),1:$$S(1,CC,"   "))_$$S(20,CC,LNM)_$$S(30,CC,$J($P(X,U,2),7))
 | 
|---|
| 55 |  .... I $L($P(X,U,2))<8 S ^TMP("ORXPND",$J,LCNT,0)=^TMP("ORXPND",$J,LCNT,0)_$$S(36,CC,$S($L($P(X,U,3)):$P(X,U,3),1:""))_$$S(41,CC,$P(X,U,4))_$$S(47,CC,$J($P(X,U,5),15))
 | 
|---|
| 56 |  .... E  S CC=0,LCNT=LCNT+1,$P(Y," ",38)="",^TMP("ORXPND",$J,LCNT,0)=$$S(1,CC,Y)_$$S(36,CC,$S($L($P(X,U,3)):$P(X,U,3),1:""))_$$S(42,CC,$P(X,U,4))_$$S(58,CC,$J($P(X,U,5),15))
 | 
|---|
| 57 |  .... S NDT=0
 | 
|---|
| 58 |  ... I TST="N" S LCNT=LCNT+1,^TMP("ORXPND",$J,LCNT,0)="  Comments: " D
 | 
|---|
| 59 |  .... N CMT S CMT=0 F  S CMT=$O(^TMP("LRRR",$J,+ORVP,SS,IVDT,"N",CMT)) Q:'CMT  S LCNT=LCNT+1,^TMP("ORXPND",$J,LCNT,0)="   "_^TMP("LRRR",$J,+ORVP,SS,IVDT,"N",CMT)
 | 
|---|
| 60 |  K ^TMP("LRRR",$J),^TMP("LRAPI",$J)
 | 
|---|
| 61 |  Q
 | 
|---|
| 62 | CONSULTS ; -- consults
 | 
|---|
| 63 |  N I,X,SUB,ORTX
 | 
|---|
| 64 |  I $G(ORTAB)="CONSULTS" S X=$P($G(^TMP("OR",$J,ORTAB,"IDX",NUM)),U,4)
 | 
|---|
| 65 |  E  D TEXT^ORQ12(.ORTX,+ID) S X=ORTX(1),ID=+$G(^OR(100,+ID,4)) ; OE->GMRC order#
 | 
|---|
| 66 |  D ITEM^ORCXPND(X),BLANK^ORCXPND
 | 
|---|
| 67 |  I ID'>0 S LCNT=LCNT+1,^TMP("ORXPND",$J,LCNT,0)="No data available." Q
 | 
|---|
| 68 |  I '$G(ORESULTS) D  ;DT action
 | 
|---|
| 69 |  . S LCNT=LCNT+1,^TMP("ORXPND",$J,LCNT,0)="Consult No.:           "_ID
 | 
|---|
| 70 |  . N GMRCOER S GMRCOER=2 D DT^GMRCSLM2(ID) S SUB="DT"
 | 
|---|
| 71 |  I $G(ORESULTS) D RT^GMRCGUIA(ID,"^TMP(""GMRCR"",$J,""RT"")") S SUB="RT"
 | 
|---|
| 72 |  S I=0 F  S I=$O(^TMP("GMRCR",$J,SUB,I)) Q:I'>0  S X=$G(^(I,0)),LCNT=LCNT+1,^TMP("ORXPND",$J,LCNT,0)=X
 | 
|---|
| 73 |  K ^TMP("GMRCR",$J)
 | 
|---|
| 74 |  Q
 | 
|---|
| 75 |  ;
 | 
|---|
| 76 | XRAYS ; -- Radiology
 | 
|---|
| 77 |  I '$G(ORESULTS) S ID=+ORVP_U_$TR(ID,"-","^") D EN3^RAO7PC3(ID)
 | 
|---|
| 78 |  I $G(ORESULTS) S ID=+$G(^OR(100,+ID,4)) D EN30^RAO7PC3(ID)
 | 
|---|
| 79 |  N CASE,PROC,PSET
 | 
|---|
| 80 |  S PSET=$D(^TMP($J,"RAE3",+ORVP,"PRINT_SET")),CASE=0
 | 
|---|
| 81 |  F  S CASE=$O(^TMP($J,"RAE3",+ORVP,CASE)) Q:CASE'>0  D
 | 
|---|
| 82 |  . I PSET S PROC=$O(^TMP($J,"RAE3",+ORVP,CASE,"")) D ITEM^ORCXPND(PROC) Q
 | 
|---|
| 83 |  . S PROC="" F  S PROC=$O(^TMP($J,"RAE3",+ORVP,CASE,PROC)) Q:PROC=""  D ITEM^ORCXPND(PROC),BLANK^ORCXPND,XRPT,BLANK^ORCXPND
 | 
|---|
| 84 |  I PSET S CASE=$O(^TMP($J,"RAE3",+ORVP,0)),PROC=$O(^(CASE,"")) D BLANK^ORCXPND,XRPT,BLANK^ORCXPND ;printset=list all procs, then one report
 | 
|---|
| 85 |  K ^TMP($J,"RAE3",+ORVP) S VALM("RM")=81
 | 
|---|
| 86 |  Q
 | 
|---|
| 87 | XRPT ; -- body of report for CASE, PROC
 | 
|---|
| 88 |  N ORD,X,I
 | 
|---|
| 89 |  S ORD=$S($L($G(^TMP($J,"RAE3",+ORVP,"ORD"))):^("ORD"),$L($G(^("ORD",CASE))):^(CASE),1:"") I $L(ORD),ORD'=PROC S LCNT=LCNT+1,^TMP("ORXPND",$J,LCNT,0)="Proc Ord: "_ORD
 | 
|---|
| 90 |  S I=1 F  S I=$O(^TMP($J,"RAE3",+ORVP,CASE,PROC,I)) Q:I'>0  S X=^(I),LCNT=LCNT+1,^TMP("ORXPND",$J,LCNT,0)=X ;Skip pt ID on line 1
 | 
|---|
| 91 |  Q
 | 
|---|
| 92 |  ;
 | 
|---|
| 93 | S(X,Y,Z) ;Pad over
 | 
|---|
| 94 |  ;X=Column #
 | 
|---|
| 95 |  ;Y=Current length
 | 
|---|
| 96 |  ;Z=Text
 | 
|---|
| 97 |  ;SP=TEXT SENT
 | 
|---|
| 98 |  ;CC=Line position after input text
 | 
|---|
| 99 |  I '$D(Z) Q ""
 | 
|---|
| 100 |  N SP S SP=Z I X,Y,X>Y S SP=$E("                                                                             ",1,X-Y)_Z
 | 
|---|
| 101 |  S CC=$$INC(CC,SP)
 | 
|---|
| 102 |  Q SP
 | 
|---|
| 103 | INC(X,Y) ;Character position count
 | 
|---|
| 104 |  ;X=Current count
 | 
|---|
| 105 |  ;Y=Text
 | 
|---|
| 106 |  N INC S INC=X+$L(Y)
 | 
|---|
| 107 |  Q INC
 | 
|---|