MAGNTRAI ;WOIFO/NST - List images for Reports ; 16 Jan 2018 3:59 PM
;;3.0;IMAGING;**170,185**;Mar 19, 2002;Build 4525;May 01, 2013
;; Per VHA Directive 2004-038, this routine should not be modified.
;; +---------------------------------------------------------------+
;; | Property of the US Government. |
;; | No permission to copy or redistribute this software is given. |
;; | Use of unreleased versions of this software requires the user |
;; | to execute a written test agreement with the VistA Imaging |
;; | Development Office of the Department of Veterans Affairs, |
;; | telephone (301) 734-0100. |
;; | The Food and Drug Administration classifies this software as |
;; | a medical device. As such, it may not be changed in any way. |
;; | Modifications to this software may result in an adulterated |
;; | medical device under 21CFR820, the use of which is considered |
;; | to be a violation of US Federal Statutes. |
;; +---------------------------------------------------------------+
;;
Q
;
;***** List Images for Rad Exams or TIU Notes by CPRS context
;
; RPC: MAGN CPRS IMAGE LIST
;
; Input Parameters
; ================
;
; DATA - Array holds Windows message received from CPRS in format
; e.g. 'RPT^CPRS^29027^RA^79029185.9998-1'
; or
; RPT^CPRS^4658^TIU^2243408^^^^^^^^1
; [IMGLESS] flag to speed up queries: if=1 (true), just get study-level data
;
; Return Values
; =============
;
; if error MAGRY(0) = 0 ^Error message^
; if success MAGRY(0) = 1
; MAGRY(1..n) = CONTEXTID | 0 or 1 | images in format defined in
; RPC [MAGG CPRS RAD EXAM] or [MAG3 CPRS TIU NOTE]
;
IMAGEL(MAGRY,DATA,IMGLESS) ;RPC [MAGN CPRS IMAGE LIST]
S IMGLESS=$S($D(IMGLESS):+IMGLESS,1:1) ; Defualt is IMAGELESS
;
N MAGVER,MAGNII
S MAGVER=""
S MAGNII=""
; Check version of the RPC we need to call
F S MAGNII=$O(DATA(MAGNII)) Q:(MAGVER'="")!(MAGNII="") D
. S MAGVER=$P(DATA(MAGNII),"~",2)
. Q
I MAGVER=2 D IMAGEL^MAGNVQ06(.MAGRY,.DATA,IMGLESS) Q
;
N MAGNCXT,MAGNI,MAGNCNT,MAGNX,MAGNTIU,RARPT
N MAGZRY
N $ETRAP,$ESTACK S $ETRAP="D AERRA^MAGGTERR"
S IMGLESS=$S($D(IMGLESS):+IMGLESS,1:1) ; Defualt is IMAGELESS
S MAGRY=$NA(^TMP("MAGNTRAI",$J))
K @MAGRY
S @MAGRY@(0)=0
S MAGNCNT=0
S MAGNI=""
F S MAGNI=$O(DATA(MAGNI)) Q:MAGNI="" D
. S MAGNCXT=DATA(MAGNI) ; CPRS contextID
. S MAGNX=$P(MAGNCXT,"^",4)
. I MAGNX="RA" D Q
. . D IMAGEC(.MAGZRY,MAGNCXT,IMGLESS,.RARPT) ; get image list for a single contextID
. . D APPENDRA(MAGRY,.MAGNCNT,MAGNCXT,MAGZRY,RARPT) ; Append individual contextID image list to final list
. . Q
. I MAGNX="TIU" D Q
. . S MAGNTIU=$P(MAGNCXT,"^",5)
. . K MAGZRY
. . D IMAGES^MAGGNTI(.MAGZRY,MAGNTIU)
. . D APPEND2(MAGRY,.MAGNCNT,MAGNCXT,.MAGZRY,MAGNTIU) ; Append individual contextID image list to final list
. . Q
. S MAGNCNT=MAGNCNT+1
. S @MAGRY@(MAGNCNT)="NEXT_CONTEXTID|"_MAGNCXT_"|0|"_"Invalid ContextId Type"
. Q
S @MAGRY@(0)=1
Q
;
IMAGEC(MAGZRY,DATA,IMGLESS,RARPT) ;A copy from MAGGTRAI
; Call to list Images for a Rad Exam that was selected from CPRS
; and Imaging Window was notified via windows messaging
; INPUT : DATA is in format of Windows message received from CPRS
; example 'RPT^CPRS^29027^RA^i79029185.9998-1'
N DFN,ENT,INVDTTM,INVDT,INVTM
S MAGZRY=$NA(^TMP("MAGGTRAI",$J))
K @MAGZRY
S DFN=+$P(DATA,U,3)
S ENT=+$P($P(DATA,U,5),"-",2)
S INVDTTM=$P($P(DATA,U,5),"-",1)
S INVDT=$P(INVDTTM,".",1)
S INVTM=$P(INVDTTM,".",2)
F Q:($L(INVDT)<8) S INVDT=$E(INVDT,2,$L(INVDT))
S INVDTTM=INVDT_"."_INVTM
S RARPT=0
I '$D(^RADPT(DFN,"DT",INVDTTM,"P",ENT,0)) S @MAGZRY@(0)="0^INVALID Data : Attempt to access Exam failed." Q
S RARPT=$P(^RADPT(DFN,"DT",INVDTTM,"P",ENT,0),U,17)
I 'RARPT S @MAGZRY@(0)="0^No Report for selected Exam" Q
; MAGQI 8/22/01
I $P($G(^RARPT(RARPT,0)),U,2)'=DFN S @MAGZRY@(0)="-2^Patient Mismatch. Radiology File" Q
D GETSTUDY(.MAGZRY,RARPT,IMGLESS) ; Pass input parameters
Q
;
GETSTUDY(MAGZRY,RARPT,IMGLESS) ; Private call. From other points in this routine, when RARPT is defined
; RARPT -- Radiology report IEN
; and returns a list in MAGZRY(1..n).
; We'll make a tmp list of just the image IEN's
; splitting groups into individual image entries.
; If more than 1 Image group points to this report, we
; will prefix the Image Description with (G1), (G2) etc
; We call GROUP^MAGGTIG to get the images for the group, this call
; sorts the images in Dicom Series, Dicom Image number order.
;
N GROUPS,OUT,REQDFN
;
N CT,OI,IGCT,MAGIEN1,MAGQI,MAGX
S IGCT=+$P($G(^RARPT(RARPT,2005,0)),U,4)
; Quit if no images for RARPT
I IGCT=0 S @MAGZRY@(0)="0^0 Images for Radiology Report." Q
;
; Check all Image entries in RARPT 2005 NODE. for Patient match Pointer match, from both
; RARPT end, and Imaging end.
S MAGQI=1
S OI=0,CT=1 F S OI=$O(^RARPT(RARPT,2005,OI)) Q:'OI D Q:(MAGQI<1)
. S MAGIEN1=$P(^RARPT(RARPT,2005,OI,0),U)
. ; Assure magdfn = rarpt dfn
. I $P($G(^RARPT(RARPT,0)),U,2)'=$P($G(^MAG(2005,MAGIEN1,0)),U,7) S MAGQI="-2^Patient Mismatch. Radiology Report" Q
. ; Assure magien1 is pointing to this rarpt
. I $P($G(^MAG(2005,MAGIEN1,2)),U,7)'=RARPT S MAGQI="-2^Pointer Mismatch. Radiology Report" Q
. ; Now run the Imaging integrity check
. D CHK^MAGGSQI(.MAGX,MAGIEN1) I 'MAGX(0) S MAGQI="-2^"_$P(MAGX(0),U,2,99) Q
;
I MAGQI<1 S @MAGZRY@(0)=MAGQI Q
S CT=0
;
S OI=0,CT=1 F S OI=$O(^RARPT(RARPT,2005,OI)) Q:'OI D
. S MAGIEN1=$P(^RARPT(RARPT,2005,OI,0),U) S GROUPS(OI)=MAGIEN1
. Q
;
S REQDFN=$P($G(^RARPT(RARPT,0)),U,2)
D STUDY2^MAGDQR21(.OUT,.GROUPS,REQDFN,IMGLESS) ; MAG DOD GET STUDIES IEN
;
S MAGZRY=OUT
S @MAGZRY@(0)=1
;
Q
;
APPENDRA(OUT,MAGNCNT,MAGNCXT,MAGZRY,RARPT) ;
; Append individual contextID image list to final list
; and add more data
; OUT - destination image list array
; .MAGNCNT -- Start position in the array
; MAGNCXT -- context ID
; MAGZRY -- Image list to be appended - reference to a global
;
N I,IMGIEN,MAGNCNTN,MAGSTUDY
S @MAGZRY@(0)=$G(@MAGZRY@(0))
I '@MAGZRY@(0) D Q
. S MAGNCNT=MAGNCNT+1
. S @OUT@(MAGNCNT)="NEXT_CONTEXTID|"_MAGNCXT_"|0|"_$P(@MAGZRY@(0),"^",2)
. Q
;
S MAGNCNTN=MAGNCNT
S MAGNCNT=MAGNCNT+1
;
S I=1 ; start from line number 2. Line number 1 is a records count
F S I=$O(@MAGZRY@(I)) Q:'I D
. S MAGNCNT=MAGNCNT+1
. S @OUT@(MAGNCNT)=@MAGZRY@(I)
. I $P(@MAGZRY@(I),"|")="STUDY_IEN" D ; Add STUDY_INFO. Better place will be MAGDQR21
. . S MAGNCNT=MAGNCNT+1
. . S IMGIEN=$P(@MAGZRY@(I),"|",2) ; IEN of the group
. . S @OUT@(MAGNCNT)="STUDY_INFO|"_$$STDINFO(IMGIEN)_"|RA-"_RARPT
. . S MAGSTUDY=@MAGZRY@(I)
. . Q
. I IMGLESS,($P(@MAGZRY@(I),"|")="STUDY_PAT") D INSFIMG(MAGSTUDY,.MAGNCNT,OUT) ; Append First Image Info
. Q
S @OUT@(MAGNCNTN+1)="NEXT_CONTEXTID|"_MAGNCXT_"|1|"_(MAGNCNT-MAGNCNTN) ; @MAGZRY@(1) is a result lines count
Q
;
INSFIMG(DATA,MAGNCNT,OUT) ; Append First Image Info I
N IMGGRP,IMGIEN
S IMGGRP=$P(DATA,"|",2)
S IMGIEN=$P(DATA,"|",4)
S MAGNCNT=MAGNCNT+1,@OUT@(MAGNCNT)="NEXT_SERIES"
S MAGNCNT=MAGNCNT+1,@OUT@(MAGNCNT)="SERIES_IEN|"_IMGGRP
S MAGNCNT=MAGNCNT+1,@OUT@(MAGNCNT)="SERIES_NUMBER|1"
S MAGNCNT=MAGNCNT+1,@OUT@(MAGNCNT)="NEXT_IMAGE"
S MAGNCNT=MAGNCNT+1,@OUT@(MAGNCNT)="IMAGE_IEN|"_IMGIEN
S MAGNCNT=MAGNCNT+1,@OUT@(MAGNCNT)="GROUP_IEN|"_IMGGRP
S MAGNCNT=MAGNCNT+1,@OUT@(MAGNCNT)="IMAGE_INFO|"_"^"_$$INFO^MAGGAII(IMGIEN,"E")
Q
;
APPEND2(OUT,MAGNCNT,MAGNCXT,MAGZRY,MAGNTIU) ;
; Append individual contextID image list to final list
; and add more data
; OUT - destination image list array
; .MAGNCNT -- Start position in the array
; MAGNCXT -- context ID
; .MAGZRY -- Image list to be appended
;
N I,IMGIEN,STDINFO
S MAGZRY(0)=$G(MAGZRY(0))
I 'MAGZRY(0) D Q
. S MAGNCNT=MAGNCNT+1
. S @OUT@(MAGNCNT)="NEXT_CONTEXTID|"_MAGNCXT_"|0|"_$P(MAGZRY(0),"^",2)
. Q
;
S MAGNCNT=MAGNCNT+1
S @OUT@(MAGNCNT)="NEXT_CONTEXTID|"_MAGNCXT_"|1|"_MAGZRY(0)
S I=0
F S I=$O(MAGZRY(I)) Q:'I D
. S IMGIEN=$P(MAGZRY(I),"^",25) ; IEN of the group
. S:'IMGIEN IMGIEN=$P(MAGZRY(I),"^",2) ; Ien of the image
. S MAGNCNT=MAGNCNT+1
. S STDINFO=$$STDINFO(IMGIEN)
. S $P(STDINFO,"^",6)=$P(MAGZRY(I),"^",15) ; Group image count per VIX request
. S @OUT@(MAGNCNT)=STDINFO_"|"_$P(MAGZRY(I),"^",2,9999)_"|TIU-"_MAGNTIU
. Q
Q
;
STDINFO(IMGIEN) ; Get study info
; IMGIEN -- Image IEN
;
; Return Study( Image ) info. The code is a copy from MAGSIXG3
N X0,X2,X40
N PKG,TYPE,EVT,SPEC,ORIG,ORIG,CAPTAPP,CLASS
N IMGNODE,FLTX
;
S IMGNODE=$$NODE^MAGGI11(IMGIEN) Q:IMGNODE="" 0
;
S X0=$G(@IMGNODE@(0))
S X2=$G(@IMGNODE@(2))
S X40=$G(@IMGNODE@(40))
;
S PKG=$P(X40,U) ; PACKAGE INDEX (40)
S TYPE=$P(X40,U,3) ; TYPE INDEX (42)
S EVT=$P(X40,U,4) ; PROC/EVENT INDEX (43)
S SPEC=$P(X40,U,5) ; SPEC/SUBSPEC INDEX (44)
S ORIG=$P(X40,U,6) ; ORIGIN INDEX (45)
S:ORIG="" ORIG="V" ; Show VA by default
S CAPTAPP=$P(X2,U,12) ; CAPTURE APPLICATION (8.1)
;
S CLASS=$S(TYPE:$P($G(^MAG(2005.83,+TYPE,0)),U,2),1:"")
;
S FLTX=""
S $P(FLTX,U,3)=$$RPTITLE^MAGSIXG3($P(X2,U,6),$P(X2,U,7)) ; Report title
S $P(FLTX,U,4)=$$DTE^MAGSIXG3($P(X2,U,5)) ; Procedure date
S $P(FLTX,U,5)=$P(X0,U,8) ; Procedure
S $P(FLTX,U,7)=$P(X2,U,4) ; Short descr.
S $P(FLTX,U,8)=PKG ; Package
S $P(FLTX,U,9)=$P($G(^MAG(2005.82,+CLASS,0)),U) ; Class
S $P(FLTX,U,10)=$P($G(^MAG(2005.83,+TYPE,0)),U) ; Type
S $P(FLTX,U,11)=$P($G(^MAG(2005.84,+SPEC,0)),U) ; (Sub)Specialty
S $P(FLTX,U,12)=$P($G(^MAG(2005.85,+EVT,0)),U) ; Proc/Event
S $P(FLTX,U,13)=$$EXTERNAL^DILFD(2005,45,,ORIG) ; Origin
S $P(FLTX,U,14)=$$DTE^MAGSIXG3($P(X2,U)) ; Capture date
S $P(FLTX,U,15)=$$GET1^DIQ(200,+$P(X2,U,2)_",",.01) ; Captured by
S $P(FLTX,U,16)=IMGIEN ; Image IEN
Q FLTX
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HMAGNTRAI 10335 printed Oct 16, 2024@18:08:07 Page 2
MAGNTRAI ;WOIFO/NST - List images for Reports ; 16 Jan 2018 3:59 PM
+1 ;;3.0;IMAGING;**170,185**;Mar 19, 2002;Build 4525;May 01, 2013
+2 ;; Per VHA Directive 2004-038, this routine should not be modified.
+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 ;; | The Food and Drug Administration classifies this software as |
+11 ;; | a medical device. As such, it may not be changed in any way. |
+12 ;; | Modifications to this software may result in an adulterated |
+13 ;; | medical device under 21CFR820, the use of which is considered |
+14 ;; | to be a violation of US Federal Statutes. |
+15 ;; +---------------------------------------------------------------+
+16 ;;
+17 QUIT
+18 ;
+19 ;***** List Images for Rad Exams or TIU Notes by CPRS context
+20 ;
+21 ; RPC: MAGN CPRS IMAGE LIST
+22 ;
+23 ; Input Parameters
+24 ; ================
+25 ;
+26 ; DATA - Array holds Windows message received from CPRS in format
+27 ; e.g. 'RPT^CPRS^29027^RA^79029185.9998-1'
+28 ; or
+29 ; RPT^CPRS^4658^TIU^2243408^^^^^^^^1
+30 ; [IMGLESS] flag to speed up queries: if=1 (true), just get study-level data
+31 ;
+32 ; Return Values
+33 ; =============
+34 ;
+35 ; if error MAGRY(0) = 0 ^Error message^
+36 ; if success MAGRY(0) = 1
+37 ; MAGRY(1..n) = CONTEXTID | 0 or 1 | images in format defined in
+38 ; RPC [MAGG CPRS RAD EXAM] or [MAG3 CPRS TIU NOTE]
+39 ;
IMAGEL(MAGRY,DATA,IMGLESS) ;RPC [MAGN CPRS IMAGE LIST]
+1 ; Defualt is IMAGELESS
SET IMGLESS=$SELECT($DATA(IMGLESS):+IMGLESS,1:1)
+2 ;
+3 NEW MAGVER,MAGNII
+4 SET MAGVER=""
+5 SET MAGNII=""
+6 ; Check version of the RPC we need to call
+7 FOR
SET MAGNII=$ORDER(DATA(MAGNII))
if (MAGVER'="")!(MAGNII="")
QUIT
Begin DoDot:1
+8 SET MAGVER=$PIECE(DATA(MAGNII),"~",2)
+9 QUIT
End DoDot:1
+10 IF MAGVER=2
DO IMAGEL^MAGNVQ06(.MAGRY,.DATA,IMGLESS)
QUIT
+11 ;
+12 NEW MAGNCXT,MAGNI,MAGNCNT,MAGNX,MAGNTIU,RARPT
+13 NEW MAGZRY
+14 NEW $ETRAP,$ESTACK
SET $ETRAP="D AERRA^MAGGTERR"
+15 ; Defualt is IMAGELESS
SET IMGLESS=$SELECT($DATA(IMGLESS):+IMGLESS,1:1)
+16 SET MAGRY=$NAME(^TMP("MAGNTRAI",$JOB))
+17 KILL @MAGRY
+18 SET @MAGRY@(0)=0
+19 SET MAGNCNT=0
+20 SET MAGNI=""
+21 FOR
SET MAGNI=$ORDER(DATA(MAGNI))
if MAGNI=""
QUIT
Begin DoDot:1
+22 ; CPRS contextID
SET MAGNCXT=DATA(MAGNI)
+23 SET MAGNX=$PIECE(MAGNCXT,"^",4)
+24 IF MAGNX="RA"
Begin DoDot:2
+25 ; get image list for a single contextID
DO IMAGEC(.MAGZRY,MAGNCXT,IMGLESS,.RARPT)
+26 ; Append individual contextID image list to final list
DO APPENDRA(MAGRY,.MAGNCNT,MAGNCXT,MAGZRY,RARPT)
+27 QUIT
End DoDot:2
QUIT
+28 IF MAGNX="TIU"
Begin DoDot:2
+29 SET MAGNTIU=$PIECE(MAGNCXT,"^",5)
+30 KILL MAGZRY
+31 DO IMAGES^MAGGNTI(.MAGZRY,MAGNTIU)
+32 ; Append individual contextID image list to final list
DO APPEND2(MAGRY,.MAGNCNT,MAGNCXT,.MAGZRY,MAGNTIU)
+33 QUIT
End DoDot:2
QUIT
+34 SET MAGNCNT=MAGNCNT+1
+35 SET @MAGRY@(MAGNCNT)="NEXT_CONTEXTID|"_MAGNCXT_"|0|"_"Invalid ContextId Type"
+36 QUIT
End DoDot:1
+37 SET @MAGRY@(0)=1
+38 QUIT
+39 ;
IMAGEC(MAGZRY,DATA,IMGLESS,RARPT) ;A copy from MAGGTRAI
+1 ; Call to list Images for a Rad Exam that was selected from CPRS
+2 ; and Imaging Window was notified via windows messaging
+3 ; INPUT : DATA is in format of Windows message received from CPRS
+4 ; example 'RPT^CPRS^29027^RA^i79029185.9998-1'
+5 NEW DFN,ENT,INVDTTM,INVDT,INVTM
+6 SET MAGZRY=$NAME(^TMP("MAGGTRAI",$JOB))
+7 KILL @MAGZRY
+8 SET DFN=+$PIECE(DATA,U,3)
+9 SET ENT=+$PIECE($PIECE(DATA,U,5),"-",2)
+10 SET INVDTTM=$PIECE($PIECE(DATA,U,5),"-",1)
+11 SET INVDT=$PIECE(INVDTTM,".",1)
+12 SET INVTM=$PIECE(INVDTTM,".",2)
+13 FOR
if ($LENGTH(INVDT)<8)
QUIT
SET INVDT=$EXTRACT(INVDT,2,$LENGTH(INVDT))
+14 SET INVDTTM=INVDT_"."_INVTM
+15 SET RARPT=0
+16 IF '$DATA(^RADPT(DFN,"DT",INVDTTM,"P",ENT,0))
SET @MAGZRY@(0)="0^INVALID Data : Attempt to access Exam failed."
QUIT
+17 SET RARPT=$PIECE(^RADPT(DFN,"DT",INVDTTM,"P",ENT,0),U,17)
+18 IF 'RARPT
SET @MAGZRY@(0)="0^No Report for selected Exam"
QUIT
+19 ; MAGQI 8/22/01
+20 IF $PIECE($GET(^RARPT(RARPT,0)),U,2)'=DFN
SET @MAGZRY@(0)="-2^Patient Mismatch. Radiology File"
QUIT
+21 ; Pass input parameters
DO GETSTUDY(.MAGZRY,RARPT,IMGLESS)
+22 QUIT
+23 ;
GETSTUDY(MAGZRY,RARPT,IMGLESS) ; Private call. From other points in this routine, when RARPT is defined
+1 ; RARPT -- Radiology report IEN
+2 ; and returns a list in MAGZRY(1..n).
+3 ; We'll make a tmp list of just the image IEN's
+4 ; splitting groups into individual image entries.
+5 ; If more than 1 Image group points to this report, we
+6 ; will prefix the Image Description with (G1), (G2) etc
+7 ; We call GROUP^MAGGTIG to get the images for the group, this call
+8 ; sorts the images in Dicom Series, Dicom Image number order.
+9 ;
+10 NEW GROUPS,OUT,REQDFN
+11 ;
+12 NEW CT,OI,IGCT,MAGIEN1,MAGQI,MAGX
+13 SET IGCT=+$PIECE($GET(^RARPT(RARPT,2005,0)),U,4)
+14 ; Quit if no images for RARPT
+15 IF IGCT=0
SET @MAGZRY@(0)="0^0 Images for Radiology Report."
QUIT
+16 ;
+17 ; Check all Image entries in RARPT 2005 NODE. for Patient match Pointer match, from both
+18 ; RARPT end, and Imaging end.
+19 SET MAGQI=1
+20 SET OI=0
SET CT=1
FOR
SET OI=$ORDER(^RARPT(RARPT,2005,OI))
if 'OI
QUIT
Begin DoDot:1
+21 SET MAGIEN1=$PIECE(^RARPT(RARPT,2005,OI,0),U)
+22 ; Assure magdfn = rarpt dfn
+23 IF $PIECE($GET(^RARPT(RARPT,0)),U,2)'=$PIECE($GET(^MAG(2005,MAGIEN1,0)),U,7)
SET MAGQI="-2^Patient Mismatch. Radiology Report"
QUIT
+24 ; Assure magien1 is pointing to this rarpt
+25 IF $PIECE($GET(^MAG(2005,MAGIEN1,2)),U,7)'=RARPT
SET MAGQI="-2^Pointer Mismatch. Radiology Report"
QUIT
+26 ; Now run the Imaging integrity check
+27 DO CHK^MAGGSQI(.MAGX,MAGIEN1)
IF 'MAGX(0)
SET MAGQI="-2^"_$PIECE(MAGX(0),U,2,99)
QUIT
End DoDot:1
if (MAGQI<1)
QUIT
+28 ;
+29 IF MAGQI<1
SET @MAGZRY@(0)=MAGQI
QUIT
+30 SET CT=0
+31 ;
+32 SET OI=0
SET CT=1
FOR
SET OI=$ORDER(^RARPT(RARPT,2005,OI))
if 'OI
QUIT
Begin DoDot:1
+33 SET MAGIEN1=$PIECE(^RARPT(RARPT,2005,OI,0),U)
SET GROUPS(OI)=MAGIEN1
+34 QUIT
End DoDot:1
+35 ;
+36 SET REQDFN=$PIECE($GET(^RARPT(RARPT,0)),U,2)
+37 ; MAG DOD GET STUDIES IEN
DO STUDY2^MAGDQR21(.OUT,.GROUPS,REQDFN,IMGLESS)
+38 ;
+39 SET MAGZRY=OUT
+40 SET @MAGZRY@(0)=1
+41 ;
+42 QUIT
+43 ;
APPENDRA(OUT,MAGNCNT,MAGNCXT,MAGZRY,RARPT) ;
+1 ; Append individual contextID image list to final list
+2 ; and add more data
+3 ; OUT - destination image list array
+4 ; .MAGNCNT -- Start position in the array
+5 ; MAGNCXT -- context ID
+6 ; MAGZRY -- Image list to be appended - reference to a global
+7 ;
+8 NEW I,IMGIEN,MAGNCNTN,MAGSTUDY
+9 SET @MAGZRY@(0)=$GET(@MAGZRY@(0))
+10 IF '@MAGZRY@(0)
Begin DoDot:1
+11 SET MAGNCNT=MAGNCNT+1
+12 SET @OUT@(MAGNCNT)="NEXT_CONTEXTID|"_MAGNCXT_"|0|"_$PIECE(@MAGZRY@(0),"^",2)
+13 QUIT
End DoDot:1
QUIT
+14 ;
+15 SET MAGNCNTN=MAGNCNT
+16 SET MAGNCNT=MAGNCNT+1
+17 ;
+18 ; start from line number 2. Line number 1 is a records count
SET I=1
+19 FOR
SET I=$ORDER(@MAGZRY@(I))
if 'I
QUIT
Begin DoDot:1
+20 SET MAGNCNT=MAGNCNT+1
+21 SET @OUT@(MAGNCNT)=@MAGZRY@(I)
+22 ; Add STUDY_INFO. Better place will be MAGDQR21
IF $PIECE(@MAGZRY@(I),"|")="STUDY_IEN"
Begin DoDot:2
+23 SET MAGNCNT=MAGNCNT+1
+24 ; IEN of the group
SET IMGIEN=$PIECE(@MAGZRY@(I),"|",2)
+25 SET @OUT@(MAGNCNT)="STUDY_INFO|"_$$STDINFO(IMGIEN)_"|RA-"_RARPT
+26 SET MAGSTUDY=@MAGZRY@(I)
+27 QUIT
End DoDot:2
+28 ; Append First Image Info
IF IMGLESS
IF ($PIECE(@MAGZRY@(I),"|")="STUDY_PAT")
DO INSFIMG(MAGSTUDY,.MAGNCNT,OUT)
+29 QUIT
End DoDot:1
+30 ; @MAGZRY@(1) is a result lines count
SET @OUT@(MAGNCNTN+1)="NEXT_CONTEXTID|"_MAGNCXT_"|1|"_(MAGNCNT-MAGNCNTN)
+31 QUIT
+32 ;
INSFIMG(DATA,MAGNCNT,OUT) ; Append First Image Info I
+1 NEW IMGGRP,IMGIEN
+2 SET IMGGRP=$PIECE(DATA,"|",2)
+3 SET IMGIEN=$PIECE(DATA,"|",4)
+4 SET MAGNCNT=MAGNCNT+1
SET @OUT@(MAGNCNT)="NEXT_SERIES"
+5 SET MAGNCNT=MAGNCNT+1
SET @OUT@(MAGNCNT)="SERIES_IEN|"_IMGGRP
+6 SET MAGNCNT=MAGNCNT+1
SET @OUT@(MAGNCNT)="SERIES_NUMBER|1"
+7 SET MAGNCNT=MAGNCNT+1
SET @OUT@(MAGNCNT)="NEXT_IMAGE"
+8 SET MAGNCNT=MAGNCNT+1
SET @OUT@(MAGNCNT)="IMAGE_IEN|"_IMGIEN
+9 SET MAGNCNT=MAGNCNT+1
SET @OUT@(MAGNCNT)="GROUP_IEN|"_IMGGRP
+10 SET MAGNCNT=MAGNCNT+1
SET @OUT@(MAGNCNT)="IMAGE_INFO|"_"^"_$$INFO^MAGGAII(IMGIEN,"E")
+11 QUIT
+12 ;
APPEND2(OUT,MAGNCNT,MAGNCXT,MAGZRY,MAGNTIU) ;
+1 ; Append individual contextID image list to final list
+2 ; and add more data
+3 ; OUT - destination image list array
+4 ; .MAGNCNT -- Start position in the array
+5 ; MAGNCXT -- context ID
+6 ; .MAGZRY -- Image list to be appended
+7 ;
+8 NEW I,IMGIEN,STDINFO
+9 SET MAGZRY(0)=$GET(MAGZRY(0))
+10 IF 'MAGZRY(0)
Begin DoDot:1
+11 SET MAGNCNT=MAGNCNT+1
+12 SET @OUT@(MAGNCNT)="NEXT_CONTEXTID|"_MAGNCXT_"|0|"_$PIECE(MAGZRY(0),"^",2)
+13 QUIT
End DoDot:1
QUIT
+14 ;
+15 SET MAGNCNT=MAGNCNT+1
+16 SET @OUT@(MAGNCNT)="NEXT_CONTEXTID|"_MAGNCXT_"|1|"_MAGZRY(0)
+17 SET I=0
+18 FOR
SET I=$ORDER(MAGZRY(I))
if 'I
QUIT
Begin DoDot:1
+19 ; IEN of the group
SET IMGIEN=$PIECE(MAGZRY(I),"^",25)
+20 ; Ien of the image
if 'IMGIEN
SET IMGIEN=$PIECE(MAGZRY(I),"^",2)
+21 SET MAGNCNT=MAGNCNT+1
+22 SET STDINFO=$$STDINFO(IMGIEN)
+23 ; Group image count per VIX request
SET $PIECE(STDINFO,"^",6)=$PIECE(MAGZRY(I),"^",15)
+24 SET @OUT@(MAGNCNT)=STDINFO_"|"_$PIECE(MAGZRY(I),"^",2,9999)_"|TIU-"_MAGNTIU
+25 QUIT
End DoDot:1
+26 QUIT
+27 ;
STDINFO(IMGIEN) ; Get study info
+1 ; IMGIEN -- Image IEN
+2 ;
+3 ; Return Study( Image ) info. The code is a copy from MAGSIXG3
+4 NEW X0,X2,X40
+5 NEW PKG,TYPE,EVT,SPEC,ORIG,ORIG,CAPTAPP,CLASS
+6 NEW IMGNODE,FLTX
+7 ;
+8 SET IMGNODE=$$NODE^MAGGI11(IMGIEN)
if IMGNODE=""
QUIT 0
+9 ;
+10 SET X0=$GET(@IMGNODE@(0))
+11 SET X2=$GET(@IMGNODE@(2))
+12 SET X40=$GET(@IMGNODE@(40))
+13 ;
+14 ; PACKAGE INDEX (40)
SET PKG=$PIECE(X40,U)
+15 ; TYPE INDEX (42)
SET TYPE=$PIECE(X40,U,3)
+16 ; PROC/EVENT INDEX (43)
SET EVT=$PIECE(X40,U,4)
+17 ; SPEC/SUBSPEC INDEX (44)
SET SPEC=$PIECE(X40,U,5)
+18 ; ORIGIN INDEX (45)
SET ORIG=$PIECE(X40,U,6)
+19 ; Show VA by default
if ORIG=""
SET ORIG="V"
+20 ; CAPTURE APPLICATION (8.1)
SET CAPTAPP=$PIECE(X2,U,12)
+21 ;
+22 SET CLASS=$SELECT(TYPE:$PIECE($GET(^MAG(2005.83,+TYPE,0)),U,2),1:"")
+23 ;
+24 SET FLTX=""
+25 ; Report title
SET $PIECE(FLTX,U,3)=$$RPTITLE^MAGSIXG3($PIECE(X2,U,6),$PIECE(X2,U,7))
+26 ; Procedure date
SET $PIECE(FLTX,U,4)=$$DTE^MAGSIXG3($PIECE(X2,U,5))
+27 ; Procedure
SET $PIECE(FLTX,U,5)=$PIECE(X0,U,8)
+28 ; Short descr.
SET $PIECE(FLTX,U,7)=$PIECE(X2,U,4)
+29 ; Package
SET $PIECE(FLTX,U,8)=PKG
+30 ; Class
SET $PIECE(FLTX,U,9)=$PIECE($GET(^MAG(2005.82,+CLASS,0)),U)
+31 ; Type
SET $PIECE(FLTX,U,10)=$PIECE($GET(^MAG(2005.83,+TYPE,0)),U)
+32 ; (Sub)Specialty
SET $PIECE(FLTX,U,11)=$PIECE($GET(^MAG(2005.84,+SPEC,0)),U)
+33 ; Proc/Event
SET $PIECE(FLTX,U,12)=$PIECE($GET(^MAG(2005.85,+EVT,0)),U)
+34 ; Origin
SET $PIECE(FLTX,U,13)=$$EXTERNAL^DILFD(2005,45,,ORIG)
+35 ; Capture date
SET $PIECE(FLTX,U,14)=$$DTE^MAGSIXG3($PIECE(X2,U))
+36 ; Captured by
SET $PIECE(FLTX,U,15)=$$GET1^DIQ(200,+$PIECE(X2,U,2)_",",.01)
+37 ; Image IEN
SET $PIECE(FLTX,U,16)=IMGIEN
+38 QUIT FLTX