Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: RAO7PC1A

RAO7PC1A.m

Go to the documentation of this file.
  1. RAO7PC1A ;HISC/GJC-Procedure Call utilities (cont) ;1/22/03 12:41
  1. ;;5.0;Radiology/Nuclear Medicine;**1,10,26,31,36,45,56,122**;Mar 16, 1998;Build 3
  1. ; 03/31/2015 KAM RA*5*122 Rem Ticket 1113213 Missing 'Abnormal' Notation in CPRS report list
  1. ;Supported IA #10040 ^SC(
  1. ;Supported IA #10103 DT^XLFDT, FMADD^XLFDT
  1. ;Supported IA #2056 GET1^DIQ
  1. ;Supported IA #10104 LOW^XLFSTR, UP^XLFSTR
  1. SETDATA ; Called from within the EN1 subroutine of RAO7PC1
  1. ; Sets the ^TMP($J,"RAE1",patient ien,Exam ID) node.
  1. ; See EN1^RAO7PC1 for further explanation.
  1. ;
  1. ; Output (new) :
  1. ; ^TMP($J,"RAE1",Patient IEN,Exam ID,"CMOD",1)=cptmod^cptmodname
  1. ; ,2)=cptmod^cptmodname
  1. N RA,RA1,RA2,RA3
  1. S RANO=0,RAREX(0)=$G(^RADPT(RADFN,"DT",RAIBDT,0))
  1. S RAITY=+$P(RAREX(0),"^",2),RAILOC=+$P(RAREX(0),"^",4)
  1. S RAILOC=$P($G(^SC(+$P($G(^RA(79.1,RAILOC,0)),"^"),0)),"^")
  1. S RAITY(0)=$G(^RA(79.2,RAITY,0))
  1. F S RANO=$O(^RADPT(RADFN,"DT",RAIBDT,"P",RANO)) Q:RANO'>0 D Q:RAXIT
  1. . S RAXAM(0)=$G(^RADPT(RADFN,"DT",RAIBDT,"P",RANO,0))
  1. . Q:RAXAM(0)=""
  1. . S RAORDER=+$P(RAXAM(0),"^",11)
  1. . ; quit if exam is WAITING and its order status isn't ACTIVE
  1. . ; because this means exam hasn't finished being registered
  1. . 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
  1. . S RAORDER(7)=$P($G(^RAO(75.1,RAORDER,0)),"^",7) ; CPRS order ien
  1. . S RAXSTAT=+$P(RAXAM(0),"^",3),RAXSTAT(0)=$G(^RA(72,RAXSTAT,0))
  1. . S RAXID=RAIBDT_"-"_RANO
  1. . S RACSE=$S($P(RAXAM(0),U)]"":$P(RAXAM(0),U),1:"Unknown")
  1. . S RAPRC=$G(^RAMIS(71,+$P(RAXAM(0),U,2),0))
  1. . S RACPT=+$P(RAPRC,"^",9) ; pntr to 81
  1. . S RACPT=$$NAMCODE^RACPTMSC(RACPT,DT)
  1. . S RACPT=$S($P(RACPT,"^",2)]"":$P(RACPT,"^"),1:"")
  1. . S RAPRC=$S($P(RAPRC,U)]"":$P(RAPRC,U),1:"Unknown")
  1. . ; quit if cancelled exam, and cancelled exams not requested
  1. . I ('$G(RACINC)),($P($G(^RA(72,+$P(RAXAM(0),"^",3),0)),"^",3)=0) Q
  1. . S RADIAG=+$P(RAXAM(0),U,13),RARPT=+$P(RAXAM(0),U,17)
  1. .; E3R 17541, 15507
  1. .; if want cancel'd cases returned, and this case is cancelled, then
  1. .; also require div param ALLOW RPTS ON CANCELLED CASES? = Y and
  1. .; presence of report, else skip this case
  1. . I $G(RACINC),($P($G(^RA(72,+$P(RAXAM(0),"^",3),0)),"^",3)=0) D Q:RASHOCAN=0
  1. .. S RASHOCAN=0
  1. .. I $P($G(^RA(79,+$P(RAREX(0),"^",3),.1)),"^",22)="Y",RARPT S RASHOCAN=1
  1. .. Q
  1. . S RABNOR=$$UP^XLFSTR($P($G(^RA(78.3,RADIAG,0)),U,4))
  1. . ;
  1. . ; 03/31/2015 KAM RA*5*122 Rem Ticket 1113213
  1. . ; Added the next 5 lines
  1. . ;
  1. . N RADX,RADIAG2
  1. . I RABNOR'="Y" D
  1. .. S RADX=0 F S RADX=$O(^RADPT(RADFN,"DT",RAIBDT,"P",RANO,"DX",RADX)) Q:(RADX'?1N)!(RADX="")!(RABNOR="Y") D
  1. ... S RADIAG2=$P(^RADPT(RADFN,"DT",RAIBDT,"P",RANO,"DX",RADX,0),"^")
  1. ... S RABNOR=$$UP^XLFSTR($P($G(^RA(78.3,RADIAG2,0)),U,4))
  1. . ;
  1. . S:RABNOR'="Y" RABNOR=""
  1. . S RABNORMR=$$UP^XLFSTR($P($G(^RA(78.3,RADIAG,0)),U,3))
  1. . ;
  1. . ; 03/31/2015 KAM RA*5*122 Rem Ticket 1113213 Added the next line
  1. . ;
  1. . I (RABNORMR'="Y"),($G(RADIAG2)'="") S RABNORMR=$$UP^XLFSTR($P($G(^RA(78.3,RADIAG2,0)),U,3))
  1. . ;
  1. . S:RABNORMR'="Y" RABNORMR=""
  1. . S RARPTST=$$RSTAT(),RARPTST=$$UL(RARPTST)
  1. . 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))
  1. . S ^TMP($J,"RAE1",RADFN,RAXID)=^TMP($J,"RAE1",RADFN,RAXID)_U_$S($O(^RARPT(RARPT,2005,0)):"Y",1:"N")
  1. . D CPTMOD
  1. . S RACNT=RACNT+1
  1. .;
  1. .; Condensed Radiology Display in CPRS GUI:
  1. .; subtract from count if counting parent; count only 1 case from printset
  1. .; and
  1. .; store values of MEMBER OF SET and ordered parent procedure name
  1. . I $D(RAEXNP),$E(RAEXNP,$L(RAEXNP))="P" D
  1. .. I $P(RAXAM(0),U,25)="2",$O(^RADPT(RADFN,"DT",RAIBDT,"P",RANO),-1) S RACNT=RACNT-1
  1. .. I $P(RAXAM(0),U,25) D
  1. ... S RA3=$S('RAORDER:"",1:$P($G(^RAMIS(71,+$P($G(^RAO(75.1,+RAORDER,0)),U,2),0)),U))
  1. ... S RA3=$S(RA3'="":RA3,1:"PARENT PROCEDURE")
  1. ... S ^TMP($J,"RAE1",RADFN,RAXID,"CPRS")=$P(RAXAM(0),U,25)_U_RA3
  1. ... Q
  1. .. Q
  1. . S:RACNT=RAEXN RAXIT=1
  1. .; Condensed Radiology Display in CPRS GUI:
  1. .; do not exit until all cases of printset have been stored
  1. . I $D(RAEXNP),$E(RAEXNP,$L(RAEXNP))="P",$O(^RADPT(RADFN,"DT",RAIBDT,"P",RANO)) S RAXIT=0
  1. . K RAXSTAT,RAORDER
  1. . Q
  1. K RAILOC,RAITY
  1. Q
  1. CASE ; Return the case numbers and the total number of case numbers
  1. ; associated with a particular order. Called from CASE^RAO7PC1.
  1. ; Sets RARRAY(case #)="" for all cases associated with an order.
  1. ; Sets first piece of RATTL to the number of cases found for an
  1. ; order, and the second piece is PRINTSET if the report covers
  1. ; multiple cases. See CASE^RAO7PC1 for more information.
  1. I '$D(^RAO(75.1,RAOIFN,0))#2 S RATTL="-1^invalid order ien" Q
  1. I '$D(^RADPT("AO",RAOIFN)) D Q ; case has yet to be registered
  1. . S RATTL="-2^no case registered to date"
  1. . Q
  1. N RACNI,RADFN,RADTI,RAEXAM S RADFN=0
  1. F S RADFN=$O(^RADPT("AO",RAOIFN,RADFN)) Q:RADFN'>0 D
  1. . S RADTI=0
  1. . F S RADTI=$O(^RADPT("AO",RAOIFN,RADFN,RADTI)) Q:RADTI'>0 D
  1. .. S RACNI=0
  1. .. F S RACNI=$O(^RADPT("AO",RAOIFN,RADFN,RADTI,RACNI)) Q:RACNI'>0 D
  1. ... S RAEXAM=$G(^RADPT(RADFN,"DT",RADTI,"P",RACNI,0))
  1. ... Q:$P($G(^RA(72,+$P(RAEXAM,"^",3),0)),"^",3)=0 ; xam cancelled
  1. ... S RATTL=+$G(RATTL)+1,@(RARRAY_"("_+RAEXAM_")")=""
  1. ... Q
  1. .. Q
  1. . Q
  1. I 'RATTL S RATTL="-2^cases cancelled" Q
  1. S:$P(RAEXAM,"^",25)=2 RATTL=RATTL_"^PRINTSET" ; combined reports
  1. Q
  1. ;
  1. EN2 ; IA: 2012, Return last 7 days of non-cancelled exams
  1. ; Required: RADFN (valid patient ien) called from EN2^RAO7PC1
  1. ; Output:
  1. ; ^TMP($J,"RAE7",Patient IEN,Exam ID)=procedure name^case number^
  1. ; report status^imaging location IEN^imaging location name^
  1. ; contrast medium or media used
  1. ; Note: Single characters in parenthesis indicate contrast
  1. ; involvement: (I)=Iodinated ionic; (N)=Iodinated non-ionic;
  1. ; (L)=Gadolinium; (C)=Oral Cholecystographic; (G)=Gastrografin;
  1. ; (B)=Barium; (M)=unspecified contrast media
  1. ;
  1. ; Exam ID: exam date/time (inverse) concatenated with the case IEN
  1. ;
  1. Q:'$D(RADFN) Q:'RADFN K ^TMP($J,"RAE7")
  1. N I,RABDT,RACNST,RACSE,RADT,RAEDT,RAIBDT,RAIEDT,RALOC,RACMEDIA,RANO
  1. N RAPRC,RAREX,RARPT,RARPTST,RAXAM,RAXID,RAXSTAT
  1. S RADT=$S($D(DT)#2:DT,1:$$DT^XLFDT()),RACNST=9999999.9999
  1. S RABDT=$$FMADD^XLFDT(RADT,-7,0,0,0),RAEDT=RADT
  1. S RAIBDT=RACNST-(RAEDT+.9999),RAIEDT=RACNST-(RABDT-.0001)
  1. F S RAIBDT=$O(^RADPT(RADFN,"DT",RAIBDT)) Q:RAIBDT'>0!(RAIBDT>RAIEDT) D
  1. . S RANO=0,RAREX(0)=$G(^RADPT(RADFN,"DT",RAIBDT,0))
  1. . S RALOC=+$P(RAREX(0),U,4),RALOC(0)=$G(^RA(79.1,RALOC,0))
  1. . S RALOC=$P($G(^SC(+RALOC(0),0)),"^")
  1. . F S RANO=$O(^RADPT(RADFN,"DT",RAIBDT,"P",RANO)) Q:RANO'>0 D
  1. .. S RAXAM(0)=$G(^RADPT(RADFN,"DT",RAIBDT,"P",RANO,0))
  1. .. S RAXID=RAIBDT_"-"_RANO
  1. .. S RACSE=$S($P(RAXAM(0),U)]"":$P(RAXAM(0),U),1:"Unknown")
  1. .. S RAPRC=$G(^RAMIS(71,+$P(RAXAM(0),U,2),0))
  1. .. S RAPRC=$S($P(RAPRC,U)]"":$P(RAPRC,U),1:"Unknown")
  1. .. Q:$P($G(^RA(72,+$P(RAXAM(0),"^",3),0)),"^",3)=0 ; cancelled xam
  1. .. 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
  1. .. S RARPT=+$P(RAXAM(0),U,17)
  1. .. S RARPTST=$$RSTAT(),RARPTST=$$UL(RARPTST)
  1. .. S ^TMP($J,"RAE7",RADFN,RAXID)=RAPRC_U_RACSE_U_RARPTST_U_+RALOC(0)_U_RALOC_U_RACMEDIA
  1. .. Q
  1. . Q
  1. Q
  1. CPTMOD ;extract cpt modifiers if any
  1. ;RA loop var, RA1 counter, RA2 intermed vars
  1. Q:'$O(^RADPT(RADFN,"DT",RAIBDT,"P",RANO,"CMOD",0))
  1. S RA=0,RA1=1
  1. F S RA=$O(^RADPT(RADFN,"DT",RAIBDT,"P",RANO,"CMOD",RA)) Q:'RA I $D(^(RA,0)) D
  1. . S RA2=$P(^RADPT(RADFN,"DT",RAIBDT,"P",RANO,"CMOD",RA,0),"^")
  1. . S RA2=$$BASICMOD^RACPTMSC(RA2,+RAREX(0)) Q:+RA2<0
  1. . S ^TMP($J,"RAE1",RADFN,RAXID,"CMOD",RA1)=$P(RA2,"^",2)_"^"_$P(RA2,"^",3),RA1=RA1+1
  1. Q
  1. RSTAT() ; Get report status name from GET1^DIQ
  1. ; RARPT is IEN of file 74
  1. N R,DIERR
  1. S R=$S($G(RARPT)>0:$$GET1^DIQ(74,+RARPT,5),1:"")
  1. S:R="" R="NO REPORT"
  1. Q R
  1. UL(R) ;Upper and Lower case
  1. ;First convert all chars to lower case, then
  1. ;capitalize 1st char AND (char after / OR char after blank)
  1. N L,R2
  1. S R2=$E(R,1)_$$LOW^XLFSTR($E(R,2,$L(R))) ; 1st char must be in caps
  1. S L=$F(R2,"/") ; If str has /, cap char after / but not char after blank
  1. I L S R2=$E(R2,1,L-1)_$$UP^XLFSTR($E(R2,L))_$E(R2,L+1,$L(R2)) G UPQ
  1. S L=$F(R2," ") ; If str has one blank, then cap the char after the blank
  1. I L S R2=$E(R2,1,L-1)_$$UP^XLFSTR($E(R2,L))_$E(R2,L+1,$L(R2))
  1. UPQ Q R2