| 1 | MAGGTRAI ;WOIFO/GEK - list images for Radiology report ; [ 11/08/2001 17:18 ]
 | 
|---|
| 2 |  ;;3.0;IMAGING;**8**;Sep 15, 2004
 | 
|---|
| 3 |  ;; +---------------------------------------------------------------+
 | 
|---|
| 4 |  ;; | Property of the US Government.                                |
 | 
|---|
| 5 |  ;; | No permission to copy or redistribute this software is given. |
 | 
|---|
| 6 |  ;; | Use of unreleased versions of this software requires the user |
 | 
|---|
| 7 |  ;; | to execute a written test agreement with the VistA Imaging    |
 | 
|---|
| 8 |  ;; | Development Office of the Department of Veterans Affairs,     |
 | 
|---|
| 9 |  ;; | telephone (301) 734-0100.                                     |
 | 
|---|
| 10 |  ;; |                                                               |
 | 
|---|
| 11 |  ;; | The Food and Drug Administration classifies this software as  |
 | 
|---|
| 12 |  ;; | a medical device.  As such, it may not be changed in any way. |
 | 
|---|
| 13 |  ;; | Modifications to this software may result in an adulterated   |
 | 
|---|
| 14 |  ;; | medical device under 21CFR820, the use of which is considered |
 | 
|---|
| 15 |  ;; | to be a violation of US Federal Statutes.                     |
 | 
|---|
| 16 |  ;; +---------------------------------------------------------------+
 | 
|---|
| 17 |  ;;
 | 
|---|
| 18 |  Q
 | 
|---|
| 19 | IMAGE(MAGZRY,DATA) ;RPC [MAGGRADIMAGE]
 | 
|---|
| 20 |  ; Call from selected entry in Rad Exam list.
 | 
|---|
| 21 |  ;  INPUT is DATA, which is just what we sent in the list of Rad
 | 
|---|
| 22 |  ;     Exams for the patient.
 | 
|---|
| 23 |  ;DATA is the Radiology values stored in ^TMP($J,"RAEX",x)
 | 
|---|
| 24 |  ;  that the radiology procedure RAPTLU sets during the search 
 | 
|---|
| 25 |  ;  for patient exams.  (see routine RAPTLU )
 | 
|---|
| 26 |  ;      ^TMP($J,"RAEX",RACNT)=
 | 
|---|
| 27 |  ;     RADFN_"^"_RADTI_"^"_RACNI_"^"_RANME_"^"_RASSN_"^"
 | 
|---|
| 28 |  ;     _RADATE_"^"_RADTE_"^"_RACN_"^"_RAPRC_"^"_RARPT_"^"_RAST
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 |  S MAGZRY=$NA(^TMP("MAGGTRAI",$J))
 | 
|---|
| 31 |  K @MAGZRY
 | 
|---|
| 32 |  IF $$NEWERR^%ZTER N $ETRAP,$ESTACK S $ETRAP="D ERRA^MAGGTERR"
 | 
|---|
| 33 |  E  S X="ERRA^MAGGTERR",@^%ZOSF("TRAP")
 | 
|---|
| 34 |  N I,Y,CT,MAGIEN
 | 
|---|
| 35 |  ;
 | 
|---|
| 36 |  S DATA=$P(DATA,"^",7,99)
 | 
|---|
| 37 |  S CT=0
 | 
|---|
| 38 |  F I="RADFN","RADTI","RACNI","RANME","RASSN","RADATE","RADTE","RACN","RAPRC","RARPT","RAST" S CT=CT+1,@I=$P(DATA,"^",CT)
 | 
|---|
| 39 |  ; Patch 2.0.5 next few lines for Patient Safety
 | 
|---|
| 40 |  I RARPT["PMRAD" S @MAGZRY@(0)="-2^Patient Mismatch. Radiology Files" Q
 | 
|---|
| 41 |  I 'RARPT S @MAGZRY@(0)="0^No Report for selected exam." Q
 | 
|---|
| 42 |  I '$O(^RARPT(RARPT,2005,0)) S @MAGZRY@(0)="0^No Images for selected exam." Q
 | 
|---|
| 43 |  I $P($G(^RARPT(RARPT,0)),U,2)'=RADFN S @MAGZRY@(0)="-2^Patient Mismatch. Radiology Files" Q
 | 
|---|
| 44 |  D GETLIST
 | 
|---|
| 45 |  Q
 | 
|---|
| 46 | IMAGEC(MAGZRY,DATA) ;RPC [MAGG CPRS RAD EXAM]
 | 
|---|
| 47 |  ; Call to list Images for a Rad Exam that was selected from CPRS 
 | 
|---|
| 48 |  ; and Imaging Window was notified via windows messaging
 | 
|---|
| 49 |  ;   INPUT :  DATA is in format of Windows message received from CPRS
 | 
|---|
| 50 |  ;    example   'RPT^CPRS^29027^RA^i79029185.9998-1'
 | 
|---|
| 51 |  N DFN,RARPT,ENT,INVDTTM,INVDT,INVTM
 | 
|---|
| 52 |  S X=$$RTRNFMT^XWBLIB("GLOBAL ARRAY",1)
 | 
|---|
| 53 |  S MAGZRY=$NA(^TMP("MAGGTRAI",$J))
 | 
|---|
| 54 |  K @MAGZRY
 | 
|---|
| 55 |  S DFN=$P(DATA,U,3)
 | 
|---|
| 56 |  S ENT=$P($P(DATA,U,5),"-",2)
 | 
|---|
| 57 |  S INVDTTM=$P($P(DATA,U,5),"-",1)
 | 
|---|
| 58 |  S INVDT=$P(INVDTTM,".",1)
 | 
|---|
| 59 |  S INVTM=$P(INVDTTM,".",2)
 | 
|---|
| 60 |  F  Q:($L(INVDT)<8)  S INVDT=$E(INVDT,2,$L(INVDT))
 | 
|---|
| 61 |  S INVDTTM=INVDT_"."_INVTM
 | 
|---|
| 62 |  I '$D(^RADPT(DFN,"DT",INVDTTM,"P",ENT,0)) S @MAGZRY@(0)="0^INVALID Data : Attempt to access Exam failed." Q
 | 
|---|
| 63 |  ;   Get out the Naked reference .
 | 
|---|
| 64 |  S RARPT=$P(^RADPT(DFN,"DT",INVDTTM,"P",ENT,0),U,17)
 | 
|---|
| 65 |  ;S RARPT=$P(^(0),U,17)
 | 
|---|
| 66 |  I 'RARPT S @MAGZRY@(0)="0^No Report for selected Exam" Q
 | 
|---|
| 67 |  ; MAGQI 8/22/01
 | 
|---|
| 68 |  I $P($G(^RARPT(RARPT,0)),U,2)'=DFN S @MAGZRY@(0)="-2^Patient Mismatch. Radiology File" Q
 | 
|---|
| 69 |  D GETLIST
 | 
|---|
| 70 |  N XINFO
 | 
|---|
| 71 |  S XINFO=$P(^RARPT(RARPT,0),U,1)
 | 
|---|
| 72 |  S X=$P(^RADPT(DFN,"DT",INVDTTM,"P",ENT,0),U,2)
 | 
|---|
| 73 |  S XINFO=XINFO_"  "_$P(^RAMIS(71,X,0),U)
 | 
|---|
| 74 |  S X=$P(^RARPT(RARPT,0),U,3)
 | 
|---|
| 75 |  S XINFO=XINFO_"  "_X
 | 
|---|
| 76 |  S $P(@MAGZRY@(0),U,3)=RARPT
 | 
|---|
| 77 |  S $P(@MAGZRY@(0),U,4)=XINFO
 | 
|---|
| 78 |  Q
 | 
|---|
| 79 | GETLIST ; Private call. From other points in this routine, when RARPT is defined
 | 
|---|
| 80 |  ; and returns a list in MAGZRY(1..n). 
 | 
|---|
| 81 |  ; We'll make a tmp list of just the image IEN's
 | 
|---|
| 82 |  ;  splitting groups into individual image entries.
 | 
|---|
| 83 |  ; If more than 1 Image group points to this report, we
 | 
|---|
| 84 |  ;  will prefix the Image Description with (G1), (G2) etc
 | 
|---|
| 85 |  ; We call GROUP^MAGGTIG to get the images for the group, this call
 | 
|---|
| 86 |  ;  sorts the images in Dicom Series, Dicom Image number order.
 | 
|---|
| 87 |  ;
 | 
|---|
| 88 |  K ^TMP("MAGGX",$J)
 | 
|---|
| 89 |  N OI,IGCT,MAGIEN1,ORDCT,GCT,MAGQI,MAGX
 | 
|---|
| 90 |  S (ORDCT,GCT,SINGCT)=0
 | 
|---|
| 91 |  S IGCT=+$P($G(^RARPT(RARPT,2005,0)),U,4)
 | 
|---|
| 92 |  ; Quit if no images for RARPT
 | 
|---|
| 93 |  I IGCT=0 S @MAGZRY@(0)="0^0 Images for Radiology Report." Q 
 | 
|---|
| 94 |  ;
 | 
|---|
| 95 |  ; Check all Image entries in RARPT 2005 NODE. for Patient match Pointer match, from both 
 | 
|---|
| 96 |  ;   RARPT end, and Imaging end.
 | 
|---|
| 97 |  S MAGQI=1
 | 
|---|
| 98 |  S OI=0,CT=1 F  S OI=$O(^RARPT(RARPT,2005,OI)) Q:'OI  D  Q:(MAGQI<1)
 | 
|---|
| 99 |  . S MAGIEN1=$P(^RARPT(RARPT,2005,OI,0),U)
 | 
|---|
| 100 |  . ; Assure magdfn = rarpt dfn
 | 
|---|
| 101 |  . I $P($G(^RARPT(RARPT,0)),U,2)'=$P($G(^MAG(2005,MAGIEN1,0)),U,7) S MAGQI="-2^Patient Mismatch. Radiology Report" Q
 | 
|---|
| 102 |  . ; Assure magien1 is pointing to this rarpt
 | 
|---|
| 103 |  . I $P($G(^MAG(2005,MAGIEN1,2)),U,7)'=RARPT S MAGQI="-2^Pointer Mismatch. Radiology Report" Q
 | 
|---|
| 104 |  . ; Now run the Imaging integrity check
 | 
|---|
| 105 |  . D CHK^MAGGSQI(.MAGX,MAGIEN1) I 'MAGX(0) S MAGQI="-2^"_$P(MAGX(0),U,2,99) Q
 | 
|---|
| 106 |  ;
 | 
|---|
| 107 |  I MAGQI<1 S @MAGZRY@(0)=MAGQI Q
 | 
|---|
| 108 |  S CT=0
 | 
|---|
| 109 |  ;
 | 
|---|
| 110 |  S OI=0,CT=1 F  S OI=$O(^RARPT(RARPT,2005,OI)) Q:'OI  D
 | 
|---|
| 111 |  . S MAGIEN1=$P(^RARPT(RARPT,2005,OI,0),U) D ONELIST
 | 
|---|
| 112 |  ;
 | 
|---|
| 113 |  ; Now get the list from the TMP LIST and return it.
 | 
|---|
| 114 |  I '$D(^TMP("MAGGX",$J)) S @MAGZRY@(0)="0^Report "_RARPT_": has INVALID Image Pointers" Q
 | 
|---|
| 115 |  S CT=0
 | 
|---|
| 116 |  S MAGQUIET=1
 | 
|---|
| 117 |  S I="",J="",K=""
 | 
|---|
| 118 |  F  S I=$O(^TMP("MAGGX",$J,I)) Q:I=""  D
 | 
|---|
| 119 |  . S J=""
 | 
|---|
| 120 |  . F  S J=$O(^TMP("MAGGX",$J,I,J)) Q:J=""  D
 | 
|---|
| 121 |  . . S K=""
 | 
|---|
| 122 |  . . F  S K=$O(^TMP("MAGGX",$J,I,J,K)) Q:K=""  D
 | 
|---|
| 123 |  . . . S CT=CT+1
 | 
|---|
| 124 |  . . . S X="["_J_"]"_$P(^TMP("MAGGX",$J,I,J,K),U,8)
 | 
|---|
| 125 |  . . . S $P(^TMP("MAGGX",$J,I,J,K),U,8)=X
 | 
|---|
| 126 |  . . . S @MAGZRY@(CT)=^TMP("MAGGX",$J,I,J,K)
 | 
|---|
| 127 |  K MAGQUIET
 | 
|---|
| 128 |  S @MAGZRY@(0)=CT_"^Images for the selected Radiology Exam"
 | 
|---|
| 129 |  ; Redesign needed for Multiple Image Groups pointing to an exam or note.
 | 
|---|
| 130 |  ; we now put all images from all groups in one list. 
 | 
|---|
| 131 |  S $P(@MAGZRY@(0),U,5)=$G(MAGIEN1) ; this was last ien from multiple Image Groups.
 | 
|---|
| 132 |  ;
 | 
|---|
| 133 |  Q
 | 
|---|
| 134 | ONELIST ;        Private Call from other parts of this routine.
 | 
|---|
| 135 |  N MAGTMP
 | 
|---|
| 136 |  Q:'$D(^MAG(2005,MAGIEN1,0))
 | 
|---|
| 137 |  ; if a single image just get record for that IEN
 | 
|---|
| 138 |  I '$O(^MAG(2005,MAGIEN1,1,0)) D  Q
 | 
|---|
| 139 |  . S MAGXX=MAGIEN1 D INFO^MAGGTII
 | 
|---|
| 140 |  . S ORDCT=ORDCT+1,SINGCT=SINGCT+1
 | 
|---|
| 141 |  . S ^TMP("MAGGX",$J,ORDCT,"S",SINGCT)="B2^"_MAGFILE
 | 
|---|
| 142 |  D GROUP^MAGGTIG(.MAGTMP,MAGIEN1) I $P(@MAGTMP@(0),U,2)>0 D
 | 
|---|
| 143 |  . S ORDCT=ORDCT+1,GCT=GCT+1,X="G"_GCT
 | 
|---|
| 144 |  . K @MAGTMP@(0)
 | 
|---|
| 145 |  . M ^TMP("MAGGX",$J,ORDCT,X)=@MAGTMP
 | 
|---|
| 146 |  Q
 | 
|---|