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

MAGNVQ06.m

Go to the documentation of this file.
  1. MAGNVQ06 ;WOIFO/NST - List images for Reports ; 05 Feb 2018 3:59 PM
  1. ;;3.0;IMAGING;**185,197**;Mar 19, 2002;Build 4525;May 01, 2013
  1. ;; Per VHA Directive 2004-038, this routine should not be modified.
  1. ;; +---------------------------------------------------------------+
  1. ;; | Property of the US Government. |
  1. ;; | No permission to copy or redistribute this software is given. |
  1. ;; | Use of unreleased versions of this software requires the user |
  1. ;; | to execute a written test agreement with the VistA Imaging |
  1. ;; | Development Office of the Department of Veterans Affairs, |
  1. ;; | telephone (301) 734-0100. |
  1. ;; | The Food and Drug Administration classifies this software as |
  1. ;; | a medical device. As such, it may not be changed in any way. |
  1. ;; | Modifications to this software may result in an adulterated |
  1. ;; | medical device under 21CFR820, the use of which is considered |
  1. ;; | to be a violation of US Federal Statutes. |
  1. ;; +---------------------------------------------------------------+
  1. ;;
  1. Q
  1. ;
  1. ;***** List Images for Rad Exams or TIU Notes by CPRS context
  1. ;
  1. ; Input Parameters
  1. ; ================
  1. ;
  1. ; DATA - Array holds Windows message received from CPRS in format
  1. ; e.g. 'RPT^CPRS^29027^RA^79029185.9998-1~2'
  1. ; or
  1. ; RPT^CPRS^4658^TIU^2243408^^^^^^^^1~2
  1. ; [IMGLESS] flag to speed up queries: if=1 (true), just get study-level data
  1. ;
  1. ; Return Values
  1. ; =============
  1. ;
  1. ; if error MAGRY(0) = 0 ^Error message^
  1. ; if success MAGRY(0) = 1
  1. ; MAGRY(1..n) = CONTEXTID | 0 or 1 | images in format defined in
  1. ; RPC [MAGG CPRS RAD EXAM] or [MAG3 CPRS TIU NOTE]
  1. ;
  1. IMAGEL(MAGRY,DATA,IMGLESS) ;called by RPC [MAGN CPRS IMAGE LIST]
  1. N MAGNCXT,MAGNI,MAGNCNT,MAGNX,REFIEN,REFTYPE
  1. N MAGZRY,MAGRYNEW
  1. N $ETRAP,$ESTACK S $ETRAP="D AERRA^MAGGTERR"
  1. S IMGLESS=$S($D(IMGLESS):+IMGLESS,1:1) ; Defualt is IMAGELESS
  1. S MAGRY=$NA(^TMP("MAGNVQ06",$J))
  1. K @MAGRY
  1. S @MAGRY@(0)=0
  1. S MAGNCNT=0
  1. S MAGNI=""
  1. F S MAGNI=$O(DATA(MAGNI)) Q:MAGNI="" D
  1. . S MAGNCXT=$P(DATA(MAGNI),"~") ; CPRS contextID
  1. . S MAGNX=$P(MAGNCXT,"^",4)
  1. . I (MAGNX'="RA")&(MAGNX'="TIU") D Q
  1. . . S MAGNCNT=MAGNCNT+1
  1. . . S @MAGRY@(MAGNCNT)="NEXT_CONTEXTID|"_MAGNCXT_"|0|"_"Invalid ContextId Type"
  1. . . Q
  1. . S REFTYPE=$S(MAGNX="RA":"RAD",MAGNX="TIU":"TIU",1:"")
  1. . I REFTYPE="RAD" D
  1. . . D IMAGEC(.MAGZRY,MAGNCXT,IMGLESS,.REFIEN) ; Get image list for a single contextID
  1. . . Q
  1. . I REFTYPE="TIU" D
  1. . . S REFIEN=$P(MAGNCXT,"^",5)
  1. . . D IMAGETIU(.MAGZRY,MAGNCXT,IMGLESS)
  1. . . Q
  1. . K @MAGZRY@(1) ; delete counter node
  1. . D GSTUDY^MAGNVQ01(MAGZRY,REFTYPE,REFIEN,MAGNCXT,IMGLESS) ; Get imagage from new image data structure (P34)
  1. . D APPEND(MAGRY,.MAGNCNT,MAGNCXT,MAGZRY,REFTYPE,REFIEN) ; Append individual contextID image list to final list
  1. . Q
  1. S @MAGRY@(0)=1
  1. Q
  1. ;
  1. IMAGETIU(MAGZRY,DATA,IMGLESS) ; Get 2005 Images by TIU Note
  1. N I,OUT,GROUPS,IMGIEN,MAGOUT1,DFN,MAGNTIU
  1. ;
  1. K MAGZRY
  1. S DFN=+$P(DATA,U,3)
  1. S MAGNTIU=$P(DATA,U,5)
  1. D IMAGES^MAGGNTI(.MAGOUT1,MAGNTIU)
  1. ;
  1. S I=0
  1. F S I=$O(MAGOUT1(I)) Q:'I D
  1. . S IMGIEN=$P(MAGOUT1(I),"^",25) ; IEN of the group
  1. . S:'IMGIEN IMGIEN=$P(MAGOUT1(I),"^",2) ; Ien of the image
  1. . S GROUPS(I)=IMGIEN
  1. . Q
  1. D STUDY2^MAGDQR21(.OUT,.GROUPS,DFN,IMGLESS) ; MAG DOD GET STUDIES IEN
  1. ;
  1. S MAGZRY=OUT
  1. S @MAGZRY@(0)=1
  1. ;
  1. Q
  1. ;
  1. IMAGEC(MAGZRY,DATA,IMGLESS,RARPT) ;A copy from MAGGTRAI
  1. ; Call to list Images for a Rad Exam that was selected from CPRS
  1. ; and Imaging Window was notified via windows messaging
  1. ; INPUT : DATA is in format of Windows message received from CPRS
  1. ; example 'RPT^CPRS^29027^RA^i79029185.9998-1'
  1. N DFN,ENT,INVDTTM,INVDT,INVTM
  1. S MAGZRY=$NA(^TMP("MAGGTRAI",$J))
  1. K @MAGZRY
  1. S DFN=+$P(DATA,U,3)
  1. S ENT=+$P($P(DATA,U,5),"-",2)
  1. S INVDTTM=$P($P(DATA,U,5),"-",1)
  1. S INVDT=$P(INVDTTM,".",1)
  1. S INVTM=$P(INVDTTM,".",2)
  1. F Q:($L(INVDT)<8) S INVDT=$E(INVDT,2,$L(INVDT))
  1. S INVDTTM=INVDT_"."_INVTM
  1. S RARPT=0
  1. I '$D(^RADPT(DFN,"DT",INVDTTM,"P",ENT,0)) S @MAGZRY@(0)="0^INVALID Data : Attempt to access Exam failed." Q
  1. S RARPT=$P(^RADPT(DFN,"DT",INVDTTM,"P",ENT,0),U,17)
  1. I 'RARPT S @MAGZRY@(0)="1^No Report for selected Exam" Q
  1. ; MAGQI 8/22/01
  1. I $P($G(^RARPT(RARPT,0)),U,2)'=DFN S @MAGZRY@(0)="-2^Patient Mismatch. Radiology File" Q
  1. D GETSTUDY(.MAGZRY,RARPT,IMGLESS) ; Pass input parameters
  1. Q
  1. ;
  1. GETSTUDY(MAGZRY,RARPT,IMGLESS) ; Private call. From other points in this routine, when RARPT is defined
  1. ; RARPT -- Radiology report IEN
  1. ; and returns a list in MAGZRY(1..n).
  1. ; We'll make a tmp list of just the image IEN's
  1. ; splitting groups into individual image entries.
  1. ; If more than 1 Image group points to this report, we
  1. ; will prefix the Image Description with (G1), (G2) etc
  1. ; We call GROUP^MAGGTIG to get the images for the group, this call
  1. ; sorts the images in Dicom Series, Dicom Image number order.
  1. ;
  1. N GROUPS,OUT,REQDFN
  1. ;
  1. N CT,OI,IGCT,MAGIEN1,MAGQI,MAGX
  1. S IGCT=+$P($G(^RARPT(RARPT,2005,0)),U,4)
  1. ; Quit if no images for RARPT
  1. I IGCT=0 S @MAGZRY@(0)="0^0 Images for Radiology Report." Q
  1. ;
  1. ; Check all Image entries in RARPT 2005 NODE. for Patient match Pointer match, from both
  1. ; RARPT end, and Imaging end.
  1. S MAGQI=1
  1. S OI=0,CT=1 F S OI=$O(^RARPT(RARPT,2005,OI)) Q:'OI D Q:(MAGQI<1)
  1. . S MAGIEN1=$P(^RARPT(RARPT,2005,OI,0),U)
  1. . ; Assure magdfn = rarpt dfn
  1. . I $P($G(^RARPT(RARPT,0)),U,2)'=$P($G(^MAG(2005,MAGIEN1,0)),U,7) S MAGQI="-2^Patient Mismatch. Radiology Report" Q
  1. . ; Assure magien1 is pointing to this rarpt
  1. . I $P($G(^MAG(2005,MAGIEN1,2)),U,7)'=RARPT S MAGQI="-2^Pointer Mismatch. Radiology Report" Q
  1. . ; Now run the Imaging integrity check
  1. . D CHK^MAGGSQI(.MAGX,MAGIEN1) I 'MAGX(0) S MAGQI="-2^"_$P(MAGX(0),U,2,99) Q
  1. ;
  1. I MAGQI<1 S @MAGZRY@(0)=MAGQI Q
  1. S CT=0
  1. ;
  1. S OI=0,CT=1 F S OI=$O(^RARPT(RARPT,2005,OI)) Q:'OI D
  1. . S MAGIEN1=$P(^RARPT(RARPT,2005,OI,0),U) S GROUPS(OI)=MAGIEN1
  1. . Q
  1. ;
  1. S REQDFN=$P($G(^RARPT(RARPT,0)),U,2)
  1. D STUDY2^MAGDQR21(.OUT,.GROUPS,REQDFN,IMGLESS) ; MAG DOD GET STUDIES IEN
  1. ;
  1. S MAGZRY=OUT
  1. S @MAGZRY@(0)=1
  1. ;
  1. Q
  1. ;
  1. APPEND(MAGOUT,MAGNCNT,MAGNCXT,MAGIN,REFTYPE,REFIEN) ;
  1. ; Append individual contextID image list to final list
  1. ; and add more data
  1. ; MAGOUT - destination image list array
  1. ; .MAGNCNT -- Start position in the array
  1. ; MAGNCXT -- context ID
  1. ; MAGIN -- Image list to be appended - reference to a global
  1. ;
  1. N I,IMGIEN,MAGNCNTN,MAGSTUDY,OLDSTUDY
  1. S @MAGIN@(0)=$G(@MAGIN@(0))
  1. I '@MAGIN@(0) D Q
  1. . S MAGNCNT=MAGNCNT+1
  1. . S @MAGOUT@(MAGNCNT)="NEXT_CONTEXTID|"_MAGNCXT_"|0|"_$P(@MAGIN@(0),"^",2)
  1. . Q
  1. ;
  1. S MAGNCNTN=MAGNCNT
  1. S MAGNCNT=MAGNCNT+1
  1. ;
  1. S OLDSTUDY=0
  1. S I=0
  1. F S I=$O(@MAGIN@(I)) Q:'I D
  1. . S MAGNCNT=MAGNCNT+1
  1. . S @MAGOUT@(MAGNCNT)=@MAGIN@(I)
  1. . I $P(@MAGIN@(I),"|")="NEXT_STUDY" S OLDSTUDY=$P(@MAGIN@(I),"|",3)'="NEW"
  1. . I OLDSTUDY,$P(@MAGIN@(I),"|")="STUDY_IEN" D ; Add STUDY_INFO. Better place will be MAGDQR21
  1. . . S MAGNCNT=MAGNCNT+1
  1. . . S IMGIEN=$P(@MAGIN@(I),"|",2) ; IEN of the group
  1. . . S @MAGOUT@(MAGNCNT)="STUDY_INFO|"_$$STDINFO^MAGNU003(IMGIEN,REFTYPE,REFIEN,MAGNCXT)
  1. . . S MAGSTUDY=@MAGIN@(I)
  1. . . Q
  1. . I OLDSTUDY,IMGLESS,($P(@MAGIN@(I),"|")="STUDY_PAT") D INSFIMG^MAGNU003(MAGSTUDY,.MAGNCNT,MAGOUT) ; Append First Image Info
  1. . Q
  1. S @MAGOUT@(MAGNCNTN+1)="NEXT_CONTEXTID|"_MAGNCXT_"|1|"_(MAGNCNT-MAGNCNTN) ; @MAGIN@(1) is a result lines count
  1. Q