[623] | 1 | RAO7PC2 ;HISC/GJC-Part two for Return Narrative (EN3^RAO7PC1);1/17/95 ;9/13/01 10:39
|
---|
| 2 | ;;5.0;Radiology/Nuclear Medicine;**1,11,14,16,22,27,45,75**;Mar 16, 1998;Build 4
|
---|
| 3 | CASE(Y) ; Retrieve exam data for specified inverse exam date range.
|
---|
| 4 | ; 'Y'-> Exam node IEN
|
---|
| 5 | N RABNOR,RACNT,RAEXAM,RAI,RAIMPRES,RAINCLUD,RAOPRC,RAORD,RAPDIAG
|
---|
| 6 | N RAPIST,RAPIRE,RAPROC,RARDE,RADTI,RACNI,RADUPHX,RAREASDY
|
---|
| 7 | N RARPT,RARPTST,RARPTXT,RASBN,RASDIAG,RAVER,RAERRFLG,Z,Z1,Z2
|
---|
| 8 | S RACNT=1
|
---|
| 9 | S RAEXAM(0)=$G(^RADPT(RADFN,"DT",RAINVXDT,"P",Y,0)) Q:RAEXAM(0)']""
|
---|
| 10 | S:$P(RAEXAM(0),"^",25)=2 RAPSET=1
|
---|
| 11 | S:RAPSET=1 ^TMP($J,"RAE2",RADFN,"PRINT_SET")="" ; xam set with same rpt
|
---|
| 12 | S RAPROC(0)=$G(^RAMIS(71,+$P(RAEXAM(0),"^",2),0))
|
---|
| 13 | S RAPROC=$S($P(RAPROC(0),"^")]"":$P(RAPROC(0),"^"),1:"Unknown")
|
---|
| 14 | S RAORD(0)=$G(^RAO(75.1,+$P(RAEXAM(0),"^",11),0))
|
---|
| 15 | S RAORD(7)=$P(RAORD(0),"^",7) ; CPRS order ien
|
---|
| 16 | S RAREASDY=$P($G(^RAO(75.1,+$P(RAEXAM(0),"^",11),.1)),"^") ;REASON FOR STUDY
|
---|
| 17 | S RAOPRC(0)=$G(^RAMIS(71,+$P(RAORD(0),"^",2),0))
|
---|
| 18 | S RAOPRC=$S($P(RAOPRC(0),"^")]"":$P(RAOPRC(0),"^"),1:"Unknown")
|
---|
| 19 | S RAPDIAG(0)=$G(^RA(78.3,+$P(RAEXAM(0),"^",13),0))
|
---|
| 20 | S RAPDIAG=$P(RAPDIAG(0),"^"),RARPT=+$P(RAEXAM(0),"^",17)
|
---|
| 21 | S RARPT(0)=$G(^RARPT(RARPT,0)),RARPTST=$P(RARPT(0),"^",5)
|
---|
| 22 | S RARPTST=$S(RARPTST="V":"Verified",RARPTST="R":"Released/Not verified",RARPTST="D":"Draft",RARPTST="PD":"Problem Draft",1:"No Report")
|
---|
| 23 | ; set the following flag variable: RAINCLUD
|
---|
| 24 | ; RAINCLUD=$S(RPT STATUS=verif'd or released/unverif'd:1,1:0)
|
---|
| 25 | S RAINCLUD=$S("RV"[$E(RARPTST):1,1:0)
|
---|
| 26 | I $E(RARPTST)="V",(RAPSET'<0) D
|
---|
| 27 | . S RAVER=$P(RARPT(0),"^",9),RASBN=$P($G(^VA(200,+RAVER,20)),"^",2)
|
---|
| 28 | . S ^TMP($J,"RAE2",RADFN,Y,RAPROC,"V")=RAVER_"^"_RASBN
|
---|
| 29 | . Q
|
---|
| 30 | S RABNOR=$$UP^XLFSTR($P(RAPDIAG(0),"^",4)) S:RABNOR'="Y" RABNOR=""
|
---|
| 31 | I RAPDIAG]"",(RAINCLUD),(RAPSET'<0) D ; if diag & verif'd or released/unverif'd & first pass if part of xam set (many xams - one rpt)
|
---|
| 32 | . S ^TMP($J,"RAE2",RADFN,Y,RAPROC,"D",RACNT)=RAPDIAG
|
---|
| 33 | . Q
|
---|
| 34 | S ^TMP($J,"RAE2",RADFN,Y,RAPROC,"RFS")=RAREASDY ;REASON FOR STUDY
|
---|
| 35 | ; 1st, get clnhist from file70. 2nd, get addl clnhist form file74
|
---|
| 36 | ; 1st:
|
---|
| 37 | I +$O(^RADPT(RADFN,"DT",RAINVXDT,"P",Y,"H",0)) D
|
---|
| 38 | . N RAI S (RAI,Z)=0
|
---|
| 39 | . F S Z=$O(^RADPT(RADFN,"DT",RAINVXDT,"P",Y,"H",Z)) Q:Z'>0 D
|
---|
| 40 | .. S RAI=RAI+1
|
---|
| 41 | .. S ^TMP($J,"RAE2",RADFN,Y,RAPROC,"H",RAI)=$G(^RADPT(RADFN,"DT",RAINVXDT,"P",Y,"H",Z,0))
|
---|
| 42 | .. Q
|
---|
| 43 | . Q
|
---|
| 44 | ;2nd:
|
---|
| 45 | S RADTI=RAINVXDT,RACNI=Y D CHKDUPHX^RART1 ;chk if file74 clnhist is dupl
|
---|
| 46 | I 'RADUPHX,$O(^RARPT(RARPT,"H",0)) S Z="H" D RPTXT(RARPT,Z)
|
---|
| 47 | ;
|
---|
| 48 | I +$O(^RADPT(RADFN,"DT",RAINVXDT,"P",Y,"M",0)) D ; save modifiers
|
---|
| 49 | . N RAI S (RAI,Z)=0
|
---|
| 50 | . F S Z=$O(^RADPT(RADFN,"DT",RAINVXDT,"P",Y,"M",Z)) Q:Z'>0 D
|
---|
| 51 | .. S RAI=RAI+1
|
---|
| 52 | .. S ^TMP($J,"RAE2",RADFN,Y,RAPROC,"M",RAI)=$P($G(^RAMIS(71.2,+$G(^RADPT(RADFN,"DT",RAINVXDT,"P",Y,"M",Z,0)),0)),"^")
|
---|
| 53 | .. Q
|
---|
| 54 | . Q
|
---|
| 55 | I +$O(^RADPT(RADFN,"DT",RAINVXDT,"P",Y,"DX",0)),(RAPSET'<0) D
|
---|
| 56 | . S Z=0 F S Z=$O(^RADPT(RADFN,"DT",RAINVXDT,"P",Y,"DX",Z)) Q:Z'>0 D
|
---|
| 57 | .. S RASDIAG=+$G(^RADPT(RADFN,"DT",RAINVXDT,"P",Y,"DX",Z,0))
|
---|
| 58 | .. S RASDIAG(0)=$G(^RA(78.3,RASDIAG,0)),RASDIAG(1)=$P(RASDIAG(0),"^")
|
---|
| 59 | .. I RASDIAG(1)]"",(RAINCLUD) D
|
---|
| 60 | ... S RACNT=RACNT+1,^TMP($J,"RAE2",RADFN,Y,RAPROC,"D",RACNT)=RASDIAG(1)
|
---|
| 61 | ... I RABNOR'="Y" D
|
---|
| 62 | .... S RABNOR=$$UP^XLFSTR($P(RASDIAG(0),"^",4)) S:RABNOR'="Y" RABNOR=""
|
---|
| 63 | .... Q
|
---|
| 64 | ... Q
|
---|
| 65 | .. Q
|
---|
| 66 | . Q
|
---|
| 67 | I RAINCLUD,(RAPSET'<0) D
|
---|
| 68 | . I +$O(^RARPT(RARPT,"I",0)) S Z="I" D RPTXT(RARPT,Z)
|
---|
| 69 | . I +$O(^RARPT(RARPT,"R",0)) S Z="R" D RPTXT(RARPT,Z)
|
---|
| 70 | . Q
|
---|
| 71 | I $P(RAEXAM(0),"^",25) S ^TMP($J,"RAE2",RADFN,"ORD")=RAOPRC
|
---|
| 72 | I '$P(RAEXAM(0),"^",25) S ^TMP($J,"RAE2",RADFN,"ORD",Y)=RAOPRC
|
---|
| 73 | ;
|
---|
| 74 | ; Check to see if amended report
|
---|
| 75 | I RAPSET'<0,+$O(^RARPT(RARPT,"ERR",0)) S RAERRFLG="A"
|
---|
| 76 | ;
|
---|
| 77 | S:RAPSET'<0 ^TMP($J,"RAE2",RADFN,Y,RAPROC)=RARPTST_"^"_$G(RABNOR)_"^"_$G(RAORD(7))_"^"_$G(RAERRFLG)
|
---|
| 78 | S:RAPSET<0 ^TMP($J,"RAE2",RADFN,Y,RAPROC)=""
|
---|
| 79 | S:RAPSET=1 RAPSET=-1
|
---|
| 80 | ;
|
---|
| 81 | I RARPTST'="No Report" D
|
---|
| 82 | .; Add Prim Int Staff, Prim Int Resident & Reported Date
|
---|
| 83 | .S RAPIST=$P(RAEXAM(0),"^",15)
|
---|
| 84 | .S RAPIRE=$P(RAEXAM(0),"^",12)
|
---|
| 85 | .S RARDE=$P(RARPT(0),"^",8)
|
---|
| 86 | .S ^TMP($J,"RAE2",RADFN,Y,RAPROC,"P")=RAPIST_"^"_RAPIRE_"^"_RARDE
|
---|
| 87 | ;If contrast media was involved in the exam pass that information.
|
---|
| 88 | I +$O(^RADPT(RADFN,"DT",RAINVXDT,"P",Y,"CM",0)) S (RACNT,RAI)=0 D
|
---|
| 89 | .F S RAI=$O(^RADPT(RADFN,"DT",RAINVXDT,"P",Y,"CM",RAI)) Q:'RAI D
|
---|
| 90 | ..S RACNT=RACNT+1
|
---|
| 91 | ..S RAI(0)=$G(^RADPT(RADFN,"DT",RAINVXDT,"P",Y,"CM",RAI,0))
|
---|
| 92 | ..S ^TMP($J,"RAE2",RADFN,Y,RAPROC,"CM",RACNT)=$P(RAI(0),U)_"^"_$$EXTERNAL^DILFD(70.3225,.01,"",$P(RAI(0),U))
|
---|
| 93 | ..Q
|
---|
| 94 | Q
|
---|
| 95 | ;
|
---|
| 96 | RPTXT(RARPT,Z) ; Retrieve report text & store in ^TMP
|
---|
| 97 | ; 'RARPT' -> Report IEN
|
---|
| 98 | ; 'Z' -> "I":Impression Text <> "R":Report Text
|
---|
| 99 | S (Z1,Z2)=0
|
---|
| 100 | ;file 74's "H" nodes are now additional clinical history
|
---|
| 101 | I Z="H" S Z2=$O(^TMP($J,"RAE2",RADFN,Y,RAPROC,Z,""),-1) I $O(^RARPT(RARPT,Z,Z1)) S Z2=Z2+1,^TMP($J,"RAE2",RADFN,Y,RAPROC,Z,Z2)="Additional Clinical History:"
|
---|
| 102 | F S Z1=$O(^RARPT(RARPT,Z,Z1)) Q:Z1'>0 D
|
---|
| 103 | . S Z1(0)=$G(^RARPT(RARPT,Z,Z1,0)),Z2=Z2+1
|
---|
| 104 | . S ^TMP($J,"RAE2",RADFN,Y,RAPROC,Z,Z2)=Z1(0)
|
---|
| 105 | . Q
|
---|
| 106 | Q
|
---|
| 107 | ;
|
---|
| 108 | CLIN(DFN,PROCLIST) ;Radiology and Clinical Reminders API
|
---|
| 109 | ;
|
---|
| 110 | ; Created by Cameron Taylor March 1999
|
---|
| 111 | ;
|
---|
| 112 | ; This API recieves a patient and a list of procedures. For each
|
---|
| 113 | ; Procedure, the details of the last 'complete' procedure and/or the
|
---|
| 114 | ; last 'cancelled' & 'in progress' procedure details and returns them
|
---|
| 115 | ; in ^TMP($J,"RADPROC"
|
---|
| 116 | N XX,PROC,DATE,STATUS,PROVIDER,EXAM,X,Y,EXAMIEN,RADPTIEN,ORDER,SUCCESS
|
---|
| 117 | ;
|
---|
| 118 | S DFN=$G(DFN) ; Patient Name
|
---|
| 119 | S PROCLIST=$G(PROCLIST) ; List of Procedures (separated by '^')
|
---|
| 120 | K ^TMP($J,"RADPROC")
|
---|
| 121 | ;
|
---|
| 122 | S RADPTIEN=$O(^RADPT("B",DFN,""))
|
---|
| 123 | I (RADPTIEN="")!(RADPTIEN=0) D Q
|
---|
| 124 | .S ^TMP($J,"RADPROC")="Invalid/Unknown Radiology Patient"
|
---|
| 125 | ;
|
---|
| 126 | F XX=1:1 S PROC=$P(PROCLIST,U,XX) Q:PROC="" D
|
---|
| 127 | .S SUCCESS=0 ; Quit searching if SUCCESS=3 (comp, canc & in prog)
|
---|
| 128 | .S DATE=0 F S DATE=$O(^RADPT(RADPTIEN,"DT",DATE)) Q:DATE'?7N1".".N!(SUCCESS=3) D
|
---|
| 129 | ..S EXAMIEN=0 F S EXAMIEN=$O(^RADPT(RADPTIEN,"DT",DATE,"P",EXAMIEN)) Q:'EXAMIEN!(SUCCESS=3) D
|
---|
| 130 | ...S EXAM=$G(^RADPT(RADPTIEN,"DT",DATE,"P",EXAMIEN,0))
|
---|
| 131 | ...Q:$P(EXAM,U,2)'=PROC
|
---|
| 132 | ...;
|
---|
| 133 | ...; Continue, get STATUS and ORDER
|
---|
| 134 | ...; (0 is cancelled, 1-8 in progress & 9 is COMPLETE)
|
---|
| 135 | ...; (ignore if null)
|
---|
| 136 | ...;
|
---|
| 137 | ...S STATUS=$P(EXAM,U,3)
|
---|
| 138 | ...I STATUS'="" D
|
---|
| 139 | ....S ORDER=$P(^RA(72,STATUS,0),U,3)
|
---|
| 140 | ....S STATUS=$P(^RA(72,STATUS,0),U) ; description
|
---|
| 141 | ...;
|
---|
| 142 | ...; Only one of each type (ORDER)
|
---|
| 143 | ...;
|
---|
| 144 | ...Q:ORDER=""
|
---|
| 145 | ...I ORDER=0 Q:$D(^TMP($J,"RADPROC",RADPTIEN,PROC,"CANCELLED")) S ORDER="CANCELLED"
|
---|
| 146 | ...I ORDER=9 Q:$D(^TMP($J,"RADPROC",RADPTIEN,PROC,"COMPLETE")) S ORDER="COMPLETE"
|
---|
| 147 | ...I ORDER<9,ORDER>0 Q:$D(^TMP($J,"RADPROC",RADPTIEN,PROC,"IN PROGRESS")) S ORDER="IN PROGRESS"
|
---|
| 148 | ...;
|
---|
| 149 | ...; Now for the PROVIDER. Check PRIMARY INTERPRETING STAFF
|
---|
| 150 | ...; if none, then default to PRIMARY INTERPRETING RESIDENT.
|
---|
| 151 | ...;
|
---|
| 152 | ...S PROVIDER=$P(EXAM,U,15)
|
---|
| 153 | ...S:PROVIDER="" PROVIDER=$P(EXAM,U,12)
|
---|
| 154 | ...S:PROVIDER'="" PROVIDER=$P($G(^VA(200,PROVIDER,0)),U,1) ; description
|
---|
| 155 | ...;
|
---|
| 156 | ...; Create return info. on ^TMP (1st manipulate DATE)
|
---|
| 157 | ...;
|
---|
| 158 | ...S Y=9999999.9999-DATE
|
---|
| 159 | ...S ^TMP($J,"RADPROC",RADPTIEN,PROC,ORDER)=Y_U_STATUS_U_PROVIDER
|
---|
| 160 | ...S SUCCESS=SUCCESS+1
|
---|
| 161 | .;
|
---|
| 162 | .; Finished searching Patient file. Any Procedures with no activity?
|
---|
| 163 | .;
|
---|
| 164 | .I '$D(^TMP($J,"RADPROC",RADPTIEN,PROC)) S ^TMP($J,"RADPROC",RADPTIEN,PROC,"NONE")=""
|
---|
| 165 | Q
|
---|
| 166 | ;
|
---|