[613] | 1 | ORQQLR1 ; slc/CLA - Extrinsic functions and procedures which return patient lab results ;7/23/96 12:47
|
---|
| 2 | ;;3.0;ORDER ENTRY/RESULTS REPORTING;**6,51,74,143**;Dec 17, 1997
|
---|
| 3 | OETOLAB(ORNUM) ;extrinsic funct to get a lab order number from an oe/rr number
|
---|
| 4 | N LRNUM
|
---|
| 5 | S LRNUM=$G(^OR(100,ORNUM,4))
|
---|
| 6 | Q +LRNUM
|
---|
| 7 | ;
|
---|
| 8 | PRINTNAM(LRIEN) ;extrinsic function to return the print name for an entry in the Lab file [#60]
|
---|
| 9 | Q:+$G(LRIEN)<1 ""
|
---|
| 10 | N NODE,NAME
|
---|
| 11 | S NODE=$G(^LAB(60,LRIEN,.1))
|
---|
| 12 | Q:'$L(NODE) ""
|
---|
| 13 | S NAME=$P(NODE,U)
|
---|
| 14 | Q NAME
|
---|
| 15 | ;
|
---|
| 16 | OIRES(PT,OILR,SPEC) ;extrinsic function to return pt's most recent lab results for a lab orderable item in the format:
|
---|
| 17 | ; test id^abbrev test name^result^units^flag^collection d/t
|
---|
| 18 | N RSLT,ORZ
|
---|
| 19 | S ORZ=""
|
---|
| 20 | S RSLT=$$GETDATA^OCXCACHE(.ORZ,"$$OIRESC^ORQQLR1("_PT_","_OILR_","_SPEC_")",PT,)
|
---|
| 21 | Q ORZ
|
---|
| 22 | ;
|
---|
| 23 | OIRESC(PT,OILR,SPEC) ;extrinsic function to return pt's most recent lab results for a lab orderable item in the format:
|
---|
| 24 | ; test id^abbrev test name^result^units^flag^collection d/t
|
---|
| 25 | N ORY,ORX,ORN,ORLR,SUB,INVDT,SEQ,ORDG,RESULT
|
---|
| 26 | S SUB="",INVDT=0,SEQ=0,ORY=""
|
---|
| 27 | ;check to make sure the OI is in DG lab
|
---|
| 28 | Q:'$L($G(PT))!('$L($G(OILR))) ORY
|
---|
| 29 | Q:'$L($G(^ORD(101.43,OILR,0))) ORY
|
---|
| 30 | I +$G(SPEC)<1 S SPEC=""
|
---|
| 31 | S ORDG=$$DG^ORQOR1("LAB")
|
---|
| 32 | Q:'$L($G(ORDG)) ORY
|
---|
| 33 | Q:$P(^ORD(101.43,OILR,0),U,5)'=ORDG ORY ;quit if display grp is not lab
|
---|
| 34 | ;get lab test ien
|
---|
| 35 | S ORX=$P(^ORD(101.43,OILR,0),U,2)
|
---|
| 36 | S ORLR=$S(ORX["~":$P(ORX,"~"),1:$P(ORX,";"))
|
---|
| 37 | ;get lab results
|
---|
| 38 | K ^TMP("LRRR",$J)
|
---|
| 39 | D RR^LR7OR1(PT,"","","","",ORLR,"L",1,SPEC) I $D(^TMP("LRRR",$J,PT)) D
|
---|
| 40 | .S SUB=$O(^TMP("LRRR",$J,PT,SUB)) Q:SUB=""
|
---|
| 41 | .S INVDT=$O(^TMP("LRRR",$J,PT,SUB,INVDT)) Q:'INVDT
|
---|
| 42 | .S SEQ=$O(^TMP("LRRR",$J,PT,SUB,INVDT,SEQ)) Q:'SEQ D
|
---|
| 43 | ..S RESULT=^(SEQ),ORY=$P(RESULT,U)_U_$P(RESULT,U,15)_U_$P(RESULT,U,2)_U_$P(RESULT,U,4)_U_$P(RESULT,U,3)_U_$P(RESULT,U,5)_U_(9999999-INVDT)
|
---|
| 44 | K ^TMP("LRRR",$J)
|
---|
| 45 | Q ORY
|
---|
| 46 | ;
|
---|
| 47 | NATL(PT,NID,SPEC) ;extrinsic function to return pt's most recent lab results for a lab national id in the format:
|
---|
| 48 | ; test id^abbrev test name^result^units^flag^collection d/t
|
---|
| 49 | N RSLT,ORZ
|
---|
| 50 | S ORZ=""
|
---|
| 51 | S RSLT=$$GETDATA^OCXCACHE(.ORZ,"$$NATLC^ORQQLR1("_PT_","_NID_","_SPEC_")",PT,)
|
---|
| 52 | Q ORZ
|
---|
| 53 | ;
|
---|
| 54 | NATLC(PT,NID,SPEC) ;extrinsic function to return pt's most recent lab results for a lab national id in the format:
|
---|
| 55 | ; test id^abbrev test name^result^units^flag^collection d/t
|
---|
| 56 | N ORY,ORX,ORN,ORLR,SUB,INVDT,SEQ,ORDG
|
---|
| 57 | S SUB="",INVDT=0,SEQ=0,ORY=""
|
---|
| 58 | I +$G(SPEC)<1 S SPEC=""
|
---|
| 59 | ;get lab results
|
---|
| 60 | K ^TMP("LRRR",$J)
|
---|
| 61 | D RR^LR7OR1(PT,"","","","",NID,"N",1,SPEC) I $D(^TMP("LRRR",$J,PT)) D
|
---|
| 62 | .S SUB=$O(^TMP("LRRR",$J,PT,SUB)) Q:SUB=""
|
---|
| 63 | .S INVDT=$O(^TMP("LRRR",$J,PT,SUB,INVDT)) Q:'INVDT
|
---|
| 64 | .S SEQ=$O(^TMP("LRRR",$J,PT,SUB,INVDT,SEQ)) Q:'SEQ D
|
---|
| 65 | ..S RESULT=^(SEQ),ORY=$P(RESULT,U)_U_$P(RESULT,U,15)_U_$P(RESULT,U,2)_U_$P(RESULT,U,4)_U_$P(RESULT,U,3)_U_$P(RESULT,U,5)_U_(9999999-INVDT)
|
---|
| 66 | K ^TMP("LRRR",$J)
|
---|
| 67 | Q ORY
|
---|
| 68 | ;
|
---|
| 69 | LOCL(PT,LID,SPEC) ;extrinsic function to return pt's most recent lab results for a lab local id in the format:
|
---|
| 70 | ; test id^abbrev test name^result^units^flag^collection d/t
|
---|
| 71 | N RSLT,ORZ
|
---|
| 72 | S ORZ=""
|
---|
| 73 | S RSLT=$$GETDATA^OCXCACHE(.ORZ,"$$LOCLC^ORQQLR1("_PT_","_LID_","_SPEC_")",PT,)
|
---|
| 74 | Q ORZ
|
---|
| 75 | ;
|
---|
| 76 | LOCLC(PT,LID,SPEC) ;extrinsic function to return pt's most recent lab results for a lab local id in the format:
|
---|
| 77 | ; test id^abbrev test name^result^units^flag^collection d/t
|
---|
| 78 | N ORY,ORX,SUB,INVDT,SEQ,RESULT
|
---|
| 79 | S SUB="",INVDT=0,SEQ=0,ORY=""
|
---|
| 80 | ;get lab results
|
---|
| 81 | I +$G(SPEC)<1 S SPEC=""
|
---|
| 82 | K ^TMP("LRRR",$J)
|
---|
| 83 | D RR^LR7OR1(PT,"","","","",LID,"L",1,SPEC) I $D(^TMP("LRRR",$J,PT)) D
|
---|
| 84 | .S SUB=$O(^TMP("LRRR",$J,PT,SUB)) Q:SUB=""
|
---|
| 85 | .S INVDT="" F S INVDT=$O(^TMP("LRRR",$J,PT,SUB,INVDT)) Q:'INVDT D
|
---|
| 86 | ..S SEQ="" F S SEQ=$O(^TMP("LRRR",$J,PT,SUB,INVDT,SEQ)) Q:'SEQ!(+$G(RESULT)>0) D
|
---|
| 87 | ...S ORX=^(SEQ)
|
---|
| 88 | ...I $P(ORX,U,2)'="canc" D ;if results were not cancelled in lab:
|
---|
| 89 | ....S RESULT=$P(ORX,U,2)
|
---|
| 90 | ....S ORY=$P(ORX,U)_U_$P(ORX,U,15)_U_$P(ORX,U,2)_U_$P(ORX,U,4)
|
---|
| 91 | ....S ORY=ORY_U_$P(ORX,U,3)_U_$P(ORX,U,5)_U_(9999999-INVDT)
|
---|
| 92 | K ^TMP("LRRR",$J)
|
---|
| 93 | Q ORY
|
---|
| 94 | ;
|
---|
| 95 | LOCLFORM(PT,LID,SPEC) ;extrinsic function to return formatted most recnt lab
|
---|
| 96 | ;rtn format: 1 (if results)^<print name> <value> <units> <high/low flag>
|
---|
| 97 | ; (<reference range>) <collection date/time>
|
---|
| 98 | N FRCNT,X
|
---|
| 99 | S X=$$LOCL(PT,LID,SPEC)
|
---|
| 100 | Q:'$L(X) "^No results found."
|
---|
| 101 | S FRCNT="1^"_$P(X,U,2)_" "_$P(X,U,3)_" "_$P(X,U,4)_" "_$P(X,U,5)
|
---|
| 102 | S FRCNT=FRCNT_" ("_$P(X,U,6)_") "_$$FMTE^XLFDT($P(X,U,7),"2P")
|
---|
| 103 | Q FRCNT
|
---|