| 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 | 
|---|