| 1 | RAO7PC1A ;HISC/GJC-Procedure Call utilities (cont) ;1/22/03  12:41
 | 
|---|
| 2 |  ;;5.0;Radiology/Nuclear Medicine;**1,10,26,31,36,45**;Mar 16, 1998
 | 
|---|
| 3 | SETDATA ; Called from within the EN1 subroutine of RAO7PC1
 | 
|---|
| 4 |  ; Sets the ^TMP($J,"RAE1",patient ien,Exam ID) node.
 | 
|---|
| 5 |  ; See EN1^RAO7PC1 for further explanation.
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 |  ; Output (new) :
 | 
|---|
| 8 |  ; ^TMP($J,"RAE1",Patient IEN,Exam ID,"CMOD",1)=cptmod^cptmodname
 | 
|---|
| 9 |  ;                                          ,2)=cptmod^cptmodname
 | 
|---|
| 10 |  N RA,RA1,RA2,RA3
 | 
|---|
| 11 |  S RANO=0,RAREX(0)=$G(^RADPT(RADFN,"DT",RAIBDT,0))
 | 
|---|
| 12 |  S RAITY=+$P(RAREX(0),"^",2),RAILOC=+$P(RAREX(0),"^",4)
 | 
|---|
| 13 |  S RAILOC=$P($G(^SC(+$P($G(^RA(79.1,RAILOC,0)),"^"),0)),"^")
 | 
|---|
| 14 |  S RAITY(0)=$G(^RA(79.2,RAITY,0))
 | 
|---|
| 15 |  F  S RANO=$O(^RADPT(RADFN,"DT",RAIBDT,"P",RANO)) Q:RANO'>0  D  Q:RAXIT
 | 
|---|
| 16 |  . S RAXAM(0)=$G(^RADPT(RADFN,"DT",RAIBDT,"P",RANO,0))
 | 
|---|
| 17 |  . Q:RAXAM(0)=""
 | 
|---|
| 18 |  . S RAORDER=+$P(RAXAM(0),"^",11)
 | 
|---|
| 19 |  . ; quit if exam is WAITING and its order status isn't ACTIVE
 | 
|---|
| 20 |  . ; because this means exam hasn't finished being registered
 | 
|---|
| 21 |  . I $P($G(^RA(72,+$P(RAXAM(0),U,3),0)),U,3)=1,$P($G(^RAO(75.1,RAORDER,0)),U,5)'=6 Q
 | 
|---|
| 22 |  . S RAORDER(7)=$P($G(^RAO(75.1,RAORDER,0)),"^",7) ; CPRS order ien
 | 
|---|
| 23 |  . S RAXSTAT=+$P(RAXAM(0),"^",3),RAXSTAT(0)=$G(^RA(72,RAXSTAT,0))
 | 
|---|
| 24 |  . S RAXID=RAIBDT_"-"_RANO
 | 
|---|
| 25 |  . S RACSE=$S($P(RAXAM(0),U)]"":$P(RAXAM(0),U),1:"Unknown")
 | 
|---|
| 26 |  . S RAPRC=$G(^RAMIS(71,+$P(RAXAM(0),U,2),0))
 | 
|---|
| 27 |  . S RACPT=+$P(RAPRC,"^",9) ; pntr to 81
 | 
|---|
| 28 |  . S RACPT=$$NAMCODE^RACPTMSC(RACPT,DT)
 | 
|---|
| 29 |  . S RACPT=$S($P(RACPT,"^",2)]"":$P(RACPT,"^"),1:"")
 | 
|---|
| 30 |  . S RAPRC=$S($P(RAPRC,U)]"":$P(RAPRC,U),1:"Unknown")
 | 
|---|
| 31 |  . ; quit if cancelled exam, and cancelled exams not requested
 | 
|---|
| 32 |  . I ('$G(RACINC)),($P($G(^RA(72,+$P(RAXAM(0),"^",3),0)),"^",3)=0) Q
 | 
|---|
| 33 |  . S RADIAG=+$P(RAXAM(0),U,13),RARPT=+$P(RAXAM(0),U,17)
 | 
|---|
| 34 |  .; E3R 17541, 15507
 | 
|---|
| 35 |  .; if want cancel'd cases returned, and this case is cancelled, then
 | 
|---|
| 36 |  .; also require div param ALLOW RPTS ON CANCELLED CASES? = Y and
 | 
|---|
| 37 |  .; presence of report, else skip this case
 | 
|---|
| 38 |  . I $G(RACINC),($P($G(^RA(72,+$P(RAXAM(0),"^",3),0)),"^",3)=0) D  Q:RASHOCAN=0
 | 
|---|
| 39 |  .. S RASHOCAN=0
 | 
|---|
| 40 |  .. I $P($G(^RA(79,+$P(RAREX(0),"^",3),.1)),"^",22)="Y",RARPT S RASHOCAN=1
 | 
|---|
| 41 |  .. Q
 | 
|---|
| 42 |  . S RABNOR=$$UP^XLFSTR($P($G(^RA(78.3,RADIAG,0)),U,4))
 | 
|---|
| 43 |  . S:RABNOR'="Y" RABNOR=""
 | 
|---|
| 44 |  . S RABNORMR=$$UP^XLFSTR($P($G(^RA(78.3,RADIAG,0)),U,3))
 | 
|---|
| 45 |  . S:RABNORMR'="Y" RABNORMR=""
 | 
|---|
| 46 |  . S RARPTST=$P($G(^RARPT(RARPT,0)),U,5)
 | 
|---|
| 47 |  . S RARPTST=$S(RARPTST="V":"Verified",RARPTST="R":"Released/Not verified",RARPTST="D":"Draft",RARPTST="PD":"Problem Draft",1:"No Report")
 | 
|---|
| 48 |  . S ^TMP($J,"RAE1",RADFN,RAXID)=RAPRC_U_RACSE_U_RARPTST_U_RABNOR_U_$S(RARPT=0:"",1:RARPT)_U_$P(RAXSTAT(0),"^",3)_"~"_$P(RAXSTAT(0),"^")_U_RAILOC_U_$P(RAITY(0),"^",3)_"~"_$P(RAITY(0),"^")_U_RABNORMR_U_RACPT_U_$G(RAORDER(7))
 | 
|---|
| 49 |  . S ^TMP($J,"RAE1",RADFN,RAXID)=^TMP($J,"RAE1",RADFN,RAXID)_U_$S($O(^RARPT(RARPT,2005,0)):"Y",1:"N")
 | 
|---|
| 50 |  . D CPTMOD
 | 
|---|
| 51 |  . S RACNT=RACNT+1
 | 
|---|
| 52 |  .;
 | 
|---|
| 53 |  .; Condensed Radiology Display in CPRS GUI:
 | 
|---|
| 54 |  .; subtract from count if counting parent; count only 1 case from printset
 | 
|---|
| 55 |  .; and
 | 
|---|
| 56 |  .; store values of MEMBER OF SET and ordered parent procedure name
 | 
|---|
| 57 |  . I $D(RAEXNP),$E(RAEXNP,$L(RAEXNP))="P" D
 | 
|---|
| 58 |  .. I $P(RAXAM(0),U,25)="2",$O(^RADPT(RADFN,"DT",RAIBDT,"P",RANO),-1) S RACNT=RACNT-1
 | 
|---|
| 59 |  .. I $P(RAXAM(0),U,25) D
 | 
|---|
| 60 |  ... S RA3=$S('RAORDER:"",1:$P($G(^RAMIS(71,+$P($G(^RAO(75.1,+RAORDER,0)),U,2),0)),U))
 | 
|---|
| 61 |  ... S RA3=$S(RA3'="":RA3,1:"PARENT PROCEDURE")
 | 
|---|
| 62 |  ... S ^TMP($J,"RAE1",RADFN,RAXID,"CPRS")=$P(RAXAM(0),U,25)_U_RA3
 | 
|---|
| 63 |  ... Q
 | 
|---|
| 64 |  .. Q
 | 
|---|
| 65 |  . S:RACNT=RAEXN RAXIT=1
 | 
|---|
| 66 |  .; Condensed Radiology Display in CPRS GUI:
 | 
|---|
| 67 |  .; do not exit until all cases of printset have been stored
 | 
|---|
| 68 |  . I $D(RAEXNP),$E(RAEXNP,$L(RAEXNP))="P",$O(^RADPT(RADFN,"DT",RAIBDT,"P",RANO)) S RAXIT=0
 | 
|---|
| 69 |  . K RAXSTAT,RAORDER
 | 
|---|
| 70 |  . Q
 | 
|---|
| 71 |  K RAILOC,RAITY
 | 
|---|
| 72 |  Q
 | 
|---|
| 73 | CASE ; Return the case numbers and the total number of case numbers
 | 
|---|
| 74 |  ; associated with a particular order.  Called from CASE^RAO7PC1.
 | 
|---|
| 75 |  ; Sets RARRAY(case #)="" for all cases associated with an order.
 | 
|---|
| 76 |  ; Sets first piece of RATTL to the number of cases found for an
 | 
|---|
| 77 |  ; order, and the second piece is PRINTSET if the report covers
 | 
|---|
| 78 |  ; multiple cases.  See CASE^RAO7PC1 for more information.
 | 
|---|
| 79 |  I '$D(^RAO(75.1,RAOIFN,0))#2 S RATTL="-1^invalid order ien" Q
 | 
|---|
| 80 |  I '$D(^RADPT("AO",RAOIFN)) D  Q  ; case has yet to be registered
 | 
|---|
| 81 |  . S RATTL="-2^no case registered to date"
 | 
|---|
| 82 |  . Q
 | 
|---|
| 83 |  N RACNI,RADFN,RADTI,RAEXAM S RADFN=0
 | 
|---|
| 84 |  F  S RADFN=$O(^RADPT("AO",RAOIFN,RADFN)) Q:RADFN'>0  D
 | 
|---|
| 85 |  . S RADTI=0
 | 
|---|
| 86 |  . F  S RADTI=$O(^RADPT("AO",RAOIFN,RADFN,RADTI)) Q:RADTI'>0  D
 | 
|---|
| 87 |  .. S RACNI=0
 | 
|---|
| 88 |  .. F  S RACNI=$O(^RADPT("AO",RAOIFN,RADFN,RADTI,RACNI)) Q:RACNI'>0  D
 | 
|---|
| 89 |  ... S RAEXAM=$G(^RADPT(RADFN,"DT",RADTI,"P",RACNI,0))
 | 
|---|
| 90 |  ... Q:$P($G(^RA(72,+$P(RAEXAM,"^",3),0)),"^",3)=0  ; xam cancelled
 | 
|---|
| 91 |  ... S RATTL=+$G(RATTL)+1,@(RARRAY_"("_+RAEXAM_")")=""
 | 
|---|
| 92 |  ... Q
 | 
|---|
| 93 |  .. Q
 | 
|---|
| 94 |  . Q
 | 
|---|
| 95 |  I 'RATTL S RATTL="-2^cases cancelled" Q
 | 
|---|
| 96 |  S:$P(RAEXAM,"^",25)=2 RATTL=RATTL_"^PRINTSET" ; combined reports
 | 
|---|
| 97 |  Q
 | 
|---|
| 98 |  ;
 | 
|---|
| 99 | EN2 ; IA: 2012, Return last 7 days of non-cancelled exams
 | 
|---|
| 100 |  ; Required: RADFN (valid patient ien) called from EN2^RAO7PC1
 | 
|---|
| 101 |  ; Output:
 | 
|---|
| 102 |  ; ^TMP($J,"RAE7",Patient IEN,Exam ID)=procedure name^case number^
 | 
|---|
| 103 |  ;       report status^imaging location IEN^imaging location name^
 | 
|---|
| 104 |  ;       contrast medium or media used
 | 
|---|
| 105 |  ;       Note: Single characters in parenthesis indicate contrast
 | 
|---|
| 106 |  ;       involvement: (I)=Iodinated ionic; (N)=Iodinated non-ionic;
 | 
|---|
| 107 |  ;        (L)=Gadolinium; (C)=Oral Cholecystographic; (G)=Gastrografin;
 | 
|---|
| 108 |  ;        (B)=Barium; (M)=unspecified contrast media
 | 
|---|
| 109 |  ;
 | 
|---|
| 110 |  ; Exam ID: exam date/time (inverse) concatenated with the case IEN
 | 
|---|
| 111 |  ;
 | 
|---|
| 112 |  Q:'$D(RADFN)  Q:'RADFN  K ^TMP($J,"RAE7")
 | 
|---|
| 113 |  N I,RABDT,RACNST,RACSE,RADT,RAEDT,RAIBDT,RAIEDT,RALOC,RACMEDIA,RANO
 | 
|---|
| 114 |  N RAPRC,RAREX,RARPT,RARPTST,RAXAM,RAXID,RAXSTAT
 | 
|---|
| 115 |  S RADT=$S($D(DT)#2:DT,1:$$DT^XLFDT()),RACNST=9999999.9999
 | 
|---|
| 116 |  S RABDT=$$FMADD^XLFDT(RADT,-7,0,0,0),RAEDT=RADT
 | 
|---|
| 117 |  S RAIBDT=RACNST-(RAEDT+.9999),RAIEDT=RACNST-(RABDT-.0001)
 | 
|---|
| 118 |  F  S RAIBDT=$O(^RADPT(RADFN,"DT",RAIBDT)) Q:RAIBDT'>0!(RAIBDT>RAIEDT)  D
 | 
|---|
| 119 |  . S RANO=0,RAREX(0)=$G(^RADPT(RADFN,"DT",RAIBDT,0))
 | 
|---|
| 120 |  . S RALOC=+$P(RAREX(0),U,4),RALOC(0)=$G(^RA(79.1,RALOC,0))
 | 
|---|
| 121 |  . S RALOC=$P($G(^SC(+RALOC(0),0)),"^")
 | 
|---|
| 122 |  . F  S RANO=$O(^RADPT(RADFN,"DT",RAIBDT,"P",RANO)) Q:RANO'>0  D
 | 
|---|
| 123 |  .. S RAXAM(0)=$G(^RADPT(RADFN,"DT",RAIBDT,"P",RANO,0))
 | 
|---|
| 124 |  .. S RAXID=RAIBDT_"-"_RANO
 | 
|---|
| 125 |  .. S RACSE=$S($P(RAXAM(0),U)]"":$P(RAXAM(0),U),1:"Unknown")
 | 
|---|
| 126 |  .. S RAPRC=$G(^RAMIS(71,+$P(RAXAM(0),U,2),0))
 | 
|---|
| 127 |  .. S RAPRC=$S($P(RAPRC,U)]"":$P(RAPRC,U),1:"Unknown")
 | 
|---|
| 128 |  .. Q:$P($G(^RA(72,+$P(RAXAM(0),"^",3),0)),"^",3)=0  ; cancelled xam
 | 
|---|
| 129 |  .. S I=0,RACMEDIA="" F  S I=$O(^RADPT(RADFN,"DT",RAIBDT,"P",RANO,"CM",I)) Q:'I  S RACMEDIA=RACMEDIA_$P(^(I,0),U) ;RA*5*45
 | 
|---|
| 130 |  .. S RARPT=+$P(RAXAM(0),U,17)
 | 
|---|
| 131 |  .. S RARPTST=$P($G(^RARPT(RARPT,0)),U,5)
 | 
|---|
| 132 |  .. S RARPTST=$S(RARPTST="V":"Verified",RARPTST="R":"Released/Not verified",RARPTST="D":"Draft",RARPTST="PD":"Problem Draft",1:"No Report")
 | 
|---|
| 133 |  .. S ^TMP($J,"RAE7",RADFN,RAXID)=RAPRC_U_RACSE_U_RARPTST_U_+RALOC(0)_U_RALOC_U_RACMEDIA
 | 
|---|
| 134 |  .. Q
 | 
|---|
| 135 |  . Q
 | 
|---|
| 136 |  Q
 | 
|---|
| 137 | CPTMOD ;extract cpt modifiers if any
 | 
|---|
| 138 |  ;RA loop var, RA1 counter, RA2 intermed vars
 | 
|---|
| 139 |  Q:'$O(^RADPT(RADFN,"DT",RAIBDT,"P",RANO,"CMOD",0))
 | 
|---|
| 140 |  S RA=0,RA1=1
 | 
|---|
| 141 |  F  S RA=$O(^RADPT(RADFN,"DT",RAIBDT,"P",RANO,"CMOD",RA)) Q:'RA  I $D(^(RA,0)) D
 | 
|---|
| 142 |  . S RA2=$P(^RADPT(RADFN,"DT",RAIBDT,"P",RANO,"CMOD",RA,0),"^")
 | 
|---|
| 143 |  . S RA2=$$BASICMOD^RACPTMSC(RA2,+RAREX(0)) Q:+RA2<0
 | 
|---|
| 144 |  . S ^TMP($J,"RAE1",RADFN,RAXID,"CMOD",RA1)=$P(RA2,"^",2)_"^"_$P(RA2,"^",3),RA1=RA1+1
 | 
|---|
| 145 |  Q
 | 
|---|