MAGGI13 ;WOIFO/SG/BNT/NST/GEK/JSL - IMAGE FILE API (QUERY) ; 21 Jul 2010 11:05 AM
;;3.0;IMAGING;**93,117,122**;Mar 19, 2002;Build 92;Aug 02, 2012
;; 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. |
;; +---------------------------------------------------------------+
;;
;P122 : Stop Timeout error from QA Review window.
; Modified tag : QUERY, to now use ADTDUZ Cross reference
; when searching for images captured by a User.
; Remedy _<todo, get remedy ticket>
Q
;
;+++++ RETURNS INVERTED/REVERSED DATE/TIME (FILEMAN)
INVDT(DATETIME) ;
Q 9999999.9999-DATETIME
;
;##### $ORDER BOTH #2005 AND #2005.1 FILES AT THE SAME TIME
;
; NODE Name of a node in file #2005 or #2005.1 (it does
; not matter in which one if the BOTH parameter is
; not zero). The last subscript can be empty string.
;
; [DIR] Browsing direction:
; $G(DIR)'<0 forward
; DIR<0 backward
;
; [BOTH] If this parameter is defined and not zero, then
; the MAGORD browses subscripts of IMAGE (#2005) and
; IMAGE AUDIT (2005.1) files at the same time (as if
; the nodes were merged into a single array).
; Otherwise, it works as the $ORDER function.
;
; Return Values
; =============
; "" No more records
; Next/previous subscript (in #2005, #2005.1, or both)
;
; Notes
; =====
;
; This function relies on the fact that there are no records with
; the same IENs in the files #2005 and #2005.1.
;
MAGORD(NODE,DIR,BOTH) ;
Q:NODE'?1"^MAG(2005".1".1"1","1.E1")" ""
N FILE,LST,PI,SUBS,TRAIL
S DIR=$S($G(DIR)<0:-1,1:1)
Q:'$G(BOTH) $O(@NODE,DIR)
;--- Find subscripts in both files that follow the @NODE
S TRAIL=","_$P(NODE,",",2,999)
F FILE=2005,2005.1 D
. S PI="^MAG("_FILE_TRAIL,SUBS=$O(@PI,DIR)
. S:SUBS'="" LST(SUBS,FILE)=""
. Q
;--- Return one of the subscripts according to the direction
Q $O(LST(""),DIR)
;
;+++++ CHECKS THE PATIENT REFERENCE
;
; IMGIEN Internal entry number of the image entry
;
; DFN Patient IEN (DFN)
;
; Return Values
; =============
; 0 Skip the image entry (different patient or error)
; 1 Process the image entry
;
PTCHK(IMGIEN,DFN) ;
N NODE S NODE=$$NODE^MAGGI11(IMGIEN)
Q $S(NODE'="":$P($G(@NODE@(0)),U,7)=DFN,1:0)
;
;##### BROWSES IMAGES AND CALLS THE CALLBACK FUNCTION
;
; CALLBACK Full name of the callback function ($$TAG^ROUTINE)
; that is called for each preselected image.
;
; SINCE ENTRIES THAT ARE NOT MARKED AS DELETED CAN
; REFERENCE DELETED "CHILDREN", SUCH ENTRIES ARE PASSED
; TO THE CALLBACK FUNCTION EVEN IF ONLY DELETED IMAGES
; ARE REQUESTED! THEREFORE, THE FUNCTION MUST PERFORM
; ADDITIONAL SCREENING BY CHECKING THE "CHILD" ENTRIES.
;
; The function should accept 3 parameters:
;
; IMGIEN IEN of the image record
; (file #2005 or #2005.1)
;
; FLAGS Value of the FLAGS parameter of the
; $$QUERY function (see below).
;
; .DATA Reference to the local array passed via
; the MAG8DATA parameter of the $$QUERY
; function (see below).
;
; Non-zero result values of the callback function
; terminate the query:
;
; <0 Error descriptor (see the $$ERROR^MAGUERR)
; 0 Continue
; >0 Terminate the query (e.g. if maximum number of
; returned records has been reached)
;
; See the source code of the IMGQUERY^MAGGA03 and
; $$QRYCBK^MAGGA03 for an example.
;
; FLAGS Flags that control the execution (can be combined):
;
; C Capture date range. If this flag is provided,
; then the remote procedure uses values of the
; MAG8FROM and MAG8TO parameters to select images
; that were captured in this date range (see the
; DATE/TIME IMAGE SAVED field (7) and the "AD"
; cross-reference).
;
; Otherwise, values of those parameters are
; treated as the date range when procedures were
; performed (see the PROCEDURE/EXAM DATE/TIME
; field (15) and cross-references "APDTPX" and
; "APDT").
;
; G Include Group Images in the list of images returned.
; If any image in a group has an image that matches the
; status provided in the search criteria then
; the group will be returned.
;
; If the G flag is not set then only the status of the
; Group entry will be checked and the group will be
; returned if it passes.
;
; D Include only deleted images (file #2005.1)
;
; E Include only existing images (file #2005)
;
; If neither 'E' nor 'D' flag is provided, then an
; error code is returned.
;
; [.MAG8DATA] Reference to a local array that is passed to the
; callback function (by reference) "as is"
;
; [MAG8FROM] Date/time range for image selection. Parameter
; [MAG8TO] values should be valid date/times in internal or
; external FileMan format. If a parameter is not
; defined or empty, then the range remains open on
; the corresponding side.
;
; The beginning of the date/time range is included
; the search but the end is not! For example, if you
; need images for October 15, 2007, the internal
; parameter values should be 3071015 and 3071016.
;
; If the MAG8FROM is after the MAG8TO, then values
; of the parameters are swapped.
;
; [DFN] Patient IEN (DFN). If this parameter is defined and
; greater than 0, then only images associated with this
; patient are processed.
;
; Return Values
; =============
; <0 Error descriptor (see the $$ERROR^MAGUERR)
; 0 All appropriate image records have been processed
; >0 Value returned by the callback function when it
; terminated the query
;
; Notes
; =====
;
; Temporary global node ^TMP($J,"MAGGI13") is used by this function.
;
QUERY(CALLBACK,FLAGS,MAG8DATA,MAG8FROM,MAG8TO,DFN) ;
N MAG8BOTH,MAG8CALL,MAG8DT,MAG8IEN,MAG8RC,MAG8ROOT,MAG8XREF,TMP
;P122
N MAG8APP,MAG8DUZ,MAG8SITE,BOTHAPP
;
S FLAGS=$G(FLAGS)
;=== Validate parameters
Q:'(CALLBACK?2"$"1.8UN1"^MAG"1.5UN) $$IPVE^MAGUERR("CALLBACK")
;--- If a patient IEN is provided, it must be valid
I $G(DFN)>0,'$$VALDFN^MAGUTL05(DFN,.TMP) D STORE^MAGUERR(TMP) Q TMP
;--- Unknown/Unsupported flag(s)
Q:$TR(FLAGS,"CDEG")'="" $$IPVE^MAGUERR("FLAGS")
;--- Missing required flag
Q:$TR(FLAGS,"DE")=FLAGS $$ERROR^MAGUERR(-6,,"D,E")
;
;=== The expression in the following line does not look like
; (FLAGS["E")&(FLAGS["D") because a group header that is
;=== not marked as deleted can reference deleted "children".
S MAG8BOTH=(FLAGS["D")
S TMP=$S(FLAGS["E":2005,1:2005.1),MAG8ROOT=$NA(^MAG(TMP))
S TMP=$$DDQ^MAGUTL05(FLAGS)
S MAG8CALL="S MAG8RC="_CALLBACK_"(MAG8IEN,"_TMP_",.MAG8DATA)"
S MAG8RC=0
;P122 set a variable (MAG8DUZ) to $Order through the Cross Ref.
S MAG8DUZ=+$P($G(MAG8DATA("SAVEDBY")),"^",1)
;=== Return images in the capture date range captured by a User MAG8DUZ
; This call is made by the QA Review window. Looking for a list of images
; captured by a certain user in a certain date range.
I (FLAGS["C"),(MAG8DUZ) D Q MAG8RC
. ;--- Modify the callback to check for patient
. S:$G(DFN)>0 $E(MAG8CALL,1)="S:$$PTCHK(MAG8IEN,"_DFN_")"
. ;---
. ; ATDUZ may be used by more than QA Review, can't Force MAG8BOTH
. ; to '0', Deleted Images may be wanted by other functions.
. ;- S MAG8BOTH=0
. ; Loop through both Capture Application nodes of ADTDUZ
. F MAG8APP="C","I" D
. . S MAG8XREF=$NA(@MAG8ROOT@("ADTDUZ",MAG8APP))
. . S MAG8DT=MAG8TO
. . F S MAG8DT=$$MAGORD($NA(@MAG8XREF@(MAG8DT)),-1,MAG8BOTH) Q:(MAG8DT="")!(MAG8DT<MAG8FROM) D Q:MAG8RC
. . . S MAG8SITE=""
. . . F S MAG8SITE=$$MAGORD($NA(@MAG8XREF@(MAG8DT,MAG8DUZ,MAG8SITE)),-1,MAG8BOTH) Q:(MAG8SITE="") D
. . . . S MAG8IEN=""
. . . . F D Q:(MAG8IEN="")!MAG8RC X MAG8CALL Q:MAG8RC
. . . . . S MAG8IEN=$$MAGORD($NA(@MAG8XREF@(MAG8DT,MAG8DUZ,MAG8SITE,MAG8IEN)),-1,MAG8BOTH)
. . . . . I $D(ZTQUEUED),$$S^%ZTLOAD S MAG8RC="1^Task asked to stop",ZTSTOP=1
. . . . . Q
. . . . Q
. . Q
. Q
;=== Browse images in the capture date range
I FLAGS["C" D Q MAG8RC
. ;--- Modify the callback to check for patient
. S:$G(DFN)>0 $E(MAG8CALL,1)="S:$$PTCHK(MAG8IEN,"_DFN_")"
. ;---
. S MAG8XREF=$NA(@MAG8ROOT@("AD"))
. S MAG8DT=MAG8TO
. F S MAG8DT=$$MAGORD($NA(@MAG8XREF@(MAG8DT)),-1,MAG8BOTH) Q:(MAG8DT="")!(MAG8DT<MAG8FROM) D Q:MAG8RC
. . S MAG8IEN=""
. . F D Q:(MAG8IEN="")!MAG8RC X MAG8CALL Q:MAG8RC
. . . S MAG8IEN=$$MAGORD($NA(@MAG8XREF@(MAG8DT,MAG8IEN)),-1,MAG8BOTH)
. . . I $D(ZTQUEUED),$$S^%ZTLOAD S MAG8RC="1^Task asked to stop",ZTSTOP=1
. . . Q
. . Q
. Q
;
;=== Browse images in the procedure date range; single patient
I $G(DFN)>0 D Q MAG8RC
. N MAG8DT1,MAG8DT2,MAG8PRX,MAG8TMP
. S MAG8XREF=$NA(@MAG8ROOT@("APDTPX",+DFN))
. S MAG8TMP=$NA(^TMP("MAGGI13",$J))
. ;--- "Invert" the dates
. S MAG8DT1=$$INVDT(MAG8TO),MAG8DT2=$$INVDT(MAG8FROM)
. ;---
. S MAG8DT=MAG8DT1
. F S MAG8DT=$$MAGORD($NA(@MAG8XREF@(MAG8DT)),1,MAG8BOTH) Q:(MAG8DT="")!(MAG8DT>MAG8DT2) D Q:MAG8RC
. . K @MAG8TMP
. . I $D(ZTQUEUED),$$S^%ZTLOAD S MAG8RC="1^Task asked to stop",ZTSTOP=1 Q
. . ;--- Merge IEN lists from both files
. . S MAG8PRX=""
. . F S MAG8PRX=$$MAGORD($NA(@MAG8XREF@(MAG8DT,MAG8PRX)),1,MAG8BOTH) Q:MAG8PRX="" D
. . . S MAG8IEN=""
. . . F S MAG8IEN=$$MAGORD($NA(@MAG8XREF@(MAG8DT,MAG8PRX,MAG8IEN)),1,MAG8BOTH) Q:MAG8IEN="" D
. . . . S @MAG8TMP@(MAG8IEN)=""
. . . . Q
. . ;--- Browse the list and select the images
. . S MAG8IEN=""
. . F D Q:(MAG8IEN'>0)!MAG8RC X MAG8CALL Q:MAG8RC
. . . S MAG8IEN=$O(@MAG8TMP@(MAG8IEN),-1)
. . . I $D(ZTQUEUED),$$S^%ZTLOAD S MAG8RC="1^Task asked to stop",ZTSTOP=1
. . . Q
. . Q
. ;---
. K @MAG8TMP
. Q
;
;=== Browse images in the procedure date range; all patients
S MAG8XREF=$NA(@MAG8ROOT@("APDT"))
S MAG8DT=MAG8TO
F S MAG8DT=$$MAGORD($NA(@MAG8XREF@(MAG8DT)),-1,MAG8BOTH) Q:(MAG8DT="")!(MAG8DT<MAG8FROM) D Q:MAG8RC
. S MAG8IEN=""
. F D Q:(MAG8IEN="")!MAG8RC X MAG8CALL Q:MAG8RC
. . S MAG8IEN=$$MAGORD($NA(@MAG8XREF@(MAG8DT,MAG8IEN)),-1,MAG8BOTH)
. . I $D(ZTQUEUED),$$S^%ZTLOAD S MAG8RC="1^Task asked to stop",ZTSTOP=1
. . Q
. Q
;---
Q MAG8RC
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HMAGGI13 12302 printed Oct 16, 2024@18:03:13 Page 2
MAGGI13 ;WOIFO/SG/BNT/NST/GEK/JSL - IMAGE FILE API (QUERY) ; 21 Jul 2010 11:05 AM
+1 ;;3.0;IMAGING;**93,117,122**;Mar 19, 2002;Build 92;Aug 02, 2012
+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 ;P122 : Stop Timeout error from QA Review window.
+18 ; Modified tag : QUERY, to now use ADTDUZ Cross reference
+19 ; when searching for images captured by a User.
+20 ; Remedy _<todo, get remedy ticket>
+21 QUIT
+22 ;
+23 ;+++++ RETURNS INVERTED/REVERSED DATE/TIME (FILEMAN)
INVDT(DATETIME) ;
+1 QUIT 9999999.9999-DATETIME
+2 ;
+3 ;##### $ORDER BOTH #2005 AND #2005.1 FILES AT THE SAME TIME
+4 ;
+5 ; NODE Name of a node in file #2005 or #2005.1 (it does
+6 ; not matter in which one if the BOTH parameter is
+7 ; not zero). The last subscript can be empty string.
+8 ;
+9 ; [DIR] Browsing direction:
+10 ; $G(DIR)'<0 forward
+11 ; DIR<0 backward
+12 ;
+13 ; [BOTH] If this parameter is defined and not zero, then
+14 ; the MAGORD browses subscripts of IMAGE (#2005) and
+15 ; IMAGE AUDIT (2005.1) files at the same time (as if
+16 ; the nodes were merged into a single array).
+17 ; Otherwise, it works as the $ORDER function.
+18 ;
+19 ; Return Values
+20 ; =============
+21 ; "" No more records
+22 ; Next/previous subscript (in #2005, #2005.1, or both)
+23 ;
+24 ; Notes
+25 ; =====
+26 ;
+27 ; This function relies on the fact that there are no records with
+28 ; the same IENs in the files #2005 and #2005.1.
+29 ;
MAGORD(NODE,DIR,BOTH) ;
+1 if NODE'?1"^MAG(2005".1".1"1","1.E1")"
QUIT ""
+2 NEW FILE,LST,PI,SUBS,TRAIL
+3 SET DIR=$SELECT($GET(DIR)<0:-1,1:1)
+4 if '$GET(BOTH)
QUIT $ORDER(@NODE,DIR)
+5 ;--- Find subscripts in both files that follow the @NODE
+6 SET TRAIL=","_$PIECE(NODE,",",2,999)
+7 FOR FILE=2005,2005.1
Begin DoDot:1
+8 SET PI="^MAG("_FILE_TRAIL
SET SUBS=$ORDER(@PI,DIR)
+9 if SUBS'=""
SET LST(SUBS,FILE)=""
+10 QUIT
End DoDot:1
+11 ;--- Return one of the subscripts according to the direction
+12 QUIT $ORDER(LST(""),DIR)
+13 ;
+14 ;+++++ CHECKS THE PATIENT REFERENCE
+15 ;
+16 ; IMGIEN Internal entry number of the image entry
+17 ;
+18 ; DFN Patient IEN (DFN)
+19 ;
+20 ; Return Values
+21 ; =============
+22 ; 0 Skip the image entry (different patient or error)
+23 ; 1 Process the image entry
+24 ;
PTCHK(IMGIEN,DFN) ;
+1 NEW NODE
SET NODE=$$NODE^MAGGI11(IMGIEN)
+2 QUIT $SELECT(NODE'="":$PIECE($GET(@NODE@(0)),U,7)=DFN,1:0)
+3 ;
+4 ;##### BROWSES IMAGES AND CALLS THE CALLBACK FUNCTION
+5 ;
+6 ; CALLBACK Full name of the callback function ($$TAG^ROUTINE)
+7 ; that is called for each preselected image.
+8 ;
+9 ; SINCE ENTRIES THAT ARE NOT MARKED AS DELETED CAN
+10 ; REFERENCE DELETED "CHILDREN", SUCH ENTRIES ARE PASSED
+11 ; TO THE CALLBACK FUNCTION EVEN IF ONLY DELETED IMAGES
+12 ; ARE REQUESTED! THEREFORE, THE FUNCTION MUST PERFORM
+13 ; ADDITIONAL SCREENING BY CHECKING THE "CHILD" ENTRIES.
+14 ;
+15 ; The function should accept 3 parameters:
+16 ;
+17 ; IMGIEN IEN of the image record
+18 ; (file #2005 or #2005.1)
+19 ;
+20 ; FLAGS Value of the FLAGS parameter of the
+21 ; $$QUERY function (see below).
+22 ;
+23 ; .DATA Reference to the local array passed via
+24 ; the MAG8DATA parameter of the $$QUERY
+25 ; function (see below).
+26 ;
+27 ; Non-zero result values of the callback function
+28 ; terminate the query:
+29 ;
+30 ; <0 Error descriptor (see the $$ERROR^MAGUERR)
+31 ; 0 Continue
+32 ; >0 Terminate the query (e.g. if maximum number of
+33 ; returned records has been reached)
+34 ;
+35 ; See the source code of the IMGQUERY^MAGGA03 and
+36 ; $$QRYCBK^MAGGA03 for an example.
+37 ;
+38 ; FLAGS Flags that control the execution (can be combined):
+39 ;
+40 ; C Capture date range. If this flag is provided,
+41 ; then the remote procedure uses values of the
+42 ; MAG8FROM and MAG8TO parameters to select images
+43 ; that were captured in this date range (see the
+44 ; DATE/TIME IMAGE SAVED field (7) and the "AD"
+45 ; cross-reference).
+46 ;
+47 ; Otherwise, values of those parameters are
+48 ; treated as the date range when procedures were
+49 ; performed (see the PROCEDURE/EXAM DATE/TIME
+50 ; field (15) and cross-references "APDTPX" and
+51 ; "APDT").
+52 ;
+53 ; G Include Group Images in the list of images returned.
+54 ; If any image in a group has an image that matches the
+55 ; status provided in the search criteria then
+56 ; the group will be returned.
+57 ;
+58 ; If the G flag is not set then only the status of the
+59 ; Group entry will be checked and the group will be
+60 ; returned if it passes.
+61 ;
+62 ; D Include only deleted images (file #2005.1)
+63 ;
+64 ; E Include only existing images (file #2005)
+65 ;
+66 ; If neither 'E' nor 'D' flag is provided, then an
+67 ; error code is returned.
+68 ;
+69 ; [.MAG8DATA] Reference to a local array that is passed to the
+70 ; callback function (by reference) "as is"
+71 ;
+72 ; [MAG8FROM] Date/time range for image selection. Parameter
+73 ; [MAG8TO] values should be valid date/times in internal or
+74 ; external FileMan format. If a parameter is not
+75 ; defined or empty, then the range remains open on
+76 ; the corresponding side.
+77 ;
+78 ; The beginning of the date/time range is included
+79 ; the search but the end is not! For example, if you
+80 ; need images for October 15, 2007, the internal
+81 ; parameter values should be 3071015 and 3071016.
+82 ;
+83 ; If the MAG8FROM is after the MAG8TO, then values
+84 ; of the parameters are swapped.
+85 ;
+86 ; [DFN] Patient IEN (DFN). If this parameter is defined and
+87 ; greater than 0, then only images associated with this
+88 ; patient are processed.
+89 ;
+90 ; Return Values
+91 ; =============
+92 ; <0 Error descriptor (see the $$ERROR^MAGUERR)
+93 ; 0 All appropriate image records have been processed
+94 ; >0 Value returned by the callback function when it
+95 ; terminated the query
+96 ;
+97 ; Notes
+98 ; =====
+99 ;
+100 ; Temporary global node ^TMP($J,"MAGGI13") is used by this function.
+101 ;
QUERY(CALLBACK,FLAGS,MAG8DATA,MAG8FROM,MAG8TO,DFN) ;
+1 NEW MAG8BOTH,MAG8CALL,MAG8DT,MAG8IEN,MAG8RC,MAG8ROOT,MAG8XREF,TMP
+2 ;P122
+3 NEW MAG8APP,MAG8DUZ,MAG8SITE,BOTHAPP
+4 ;
+5 SET FLAGS=$GET(FLAGS)
+6 ;=== Validate parameters
+7 if '(CALLBACK?2"$"1.8UN1"^MAG"1.5UN)
QUIT $$IPVE^MAGUERR("CALLBACK")
+8 ;--- If a patient IEN is provided, it must be valid
+9 IF $GET(DFN)>0
IF '$$VALDFN^MAGUTL05(DFN,.TMP)
DO STORE^MAGUERR(TMP)
QUIT TMP
+10 ;--- Unknown/Unsupported flag(s)
+11 if $TRANSLATE(FLAGS,"CDEG")'=""
QUIT $$IPVE^MAGUERR("FLAGS")
+12 ;--- Missing required flag
+13 if $TRANSLATE(FLAGS,"DE")=FLAGS
QUIT $$ERROR^MAGUERR(-6,,"D,E")
+14 ;
+15 ;=== The expression in the following line does not look like
+16 ; (FLAGS["E")&(FLAGS["D") because a group header that is
+17 ;=== not marked as deleted can reference deleted "children".
+18 SET MAG8BOTH=(FLAGS["D")
+19 SET TMP=$SELECT(FLAGS["E":2005,1:2005.1)
SET MAG8ROOT=$NAME(^MAG(TMP))
+20 SET TMP=$$DDQ^MAGUTL05(FLAGS)
+21 SET MAG8CALL="S MAG8RC="_CALLBACK_"(MAG8IEN,"_TMP_",.MAG8DATA)"
+22 SET MAG8RC=0
+23 ;P122 set a variable (MAG8DUZ) to $Order through the Cross Ref.
+24 SET MAG8DUZ=+$PIECE($GET(MAG8DATA("SAVEDBY")),"^",1)
+25 ;=== Return images in the capture date range captured by a User MAG8DUZ
+26 ; This call is made by the QA Review window. Looking for a list of images
+27 ; captured by a certain user in a certain date range.
+28 IF (FLAGS["C")
IF (MAG8DUZ)
Begin DoDot:1
+29 ;--- Modify the callback to check for patient
+30 if $GET(DFN)>0
SET $EXTRACT(MAG8CALL,1)="S:$$PTCHK(MAG8IEN,"_DFN_")"
+31 ;---
+32 ; ATDUZ may be used by more than QA Review, can't Force MAG8BOTH
+33 ; to '0', Deleted Images may be wanted by other functions.
+34 ;- S MAG8BOTH=0
+35 ; Loop through both Capture Application nodes of ADTDUZ
+36 FOR MAG8APP="C","I"
Begin DoDot:2
+37 SET MAG8XREF=$NAME(@MAG8ROOT@("ADTDUZ",MAG8APP))
+38 SET MAG8DT=MAG8TO
+39 FOR
SET MAG8DT=$$MAGORD($NAME(@MAG8XREF@(MAG8DT)),-1,MAG8BOTH)
if (MAG8DT="")!(MAG8DT<MAG8FROM)
QUIT
Begin DoDot:3
+40 SET MAG8SITE=""
+41 FOR
SET MAG8SITE=$$MAGORD($NAME(@MAG8XREF@(MAG8DT,MAG8DUZ,MAG8SITE)),-1,MAG8BOTH)
if (MAG8SITE="")
QUIT
Begin DoDot:4
+42 SET MAG8IEN=""
+43 FOR
Begin DoDot:5
+44 SET MAG8IEN=$$MAGORD($NAME(@MAG8XREF@(MAG8DT,MAG8DUZ,MAG8SITE,MAG8IEN)),-1,MAG8BOTH)
+45 IF $DATA(ZTQUEUED)
IF $$S^%ZTLOAD
SET MAG8RC="1^Task asked to stop"
SET ZTSTOP=1
+46 QUIT
End DoDot:5
if (MAG8IEN="")!MAG8RC
QUIT
XECUTE MAG8CALL
if MAG8RC
QUIT
+47 QUIT
End DoDot:4
End DoDot:3
if MAG8RC
QUIT
+48 QUIT
End DoDot:2
+49 QUIT
End DoDot:1
QUIT MAG8RC
+50 ;=== Browse images in the capture date range
+51 IF FLAGS["C"
Begin DoDot:1
+52 ;--- Modify the callback to check for patient
+53 if $GET(DFN)>0
SET $EXTRACT(MAG8CALL,1)="S:$$PTCHK(MAG8IEN,"_DFN_")"
+54 ;---
+55 SET MAG8XREF=$NAME(@MAG8ROOT@("AD"))
+56 SET MAG8DT=MAG8TO
+57 FOR
SET MAG8DT=$$MAGORD($NAME(@MAG8XREF@(MAG8DT)),-1,MAG8BOTH)
if (MAG8DT="")!(MAG8DT<MAG8FROM)
QUIT
Begin DoDot:2
+58 SET MAG8IEN=""
+59 FOR
Begin DoDot:3
+60 SET MAG8IEN=$$MAGORD($NAME(@MAG8XREF@(MAG8DT,MAG8IEN)),-1,MAG8BOTH)
+61 IF $DATA(ZTQUEUED)
IF $$S^%ZTLOAD
SET MAG8RC="1^Task asked to stop"
SET ZTSTOP=1
+62 QUIT
End DoDot:3
if (MAG8IEN="")!MAG8RC
QUIT
XECUTE MAG8CALL
if MAG8RC
QUIT
+63 QUIT
End DoDot:2
if MAG8RC
QUIT
+64 QUIT
End DoDot:1
QUIT MAG8RC
+65 ;
+66 ;=== Browse images in the procedure date range; single patient
+67 IF $GET(DFN)>0
Begin DoDot:1
+68 NEW MAG8DT1,MAG8DT2,MAG8PRX,MAG8TMP
+69 SET MAG8XREF=$NAME(@MAG8ROOT@("APDTPX",+DFN))
+70 SET MAG8TMP=$NAME(^TMP("MAGGI13",$JOB))
+71 ;--- "Invert" the dates
+72 SET MAG8DT1=$$INVDT(MAG8TO)
SET MAG8DT2=$$INVDT(MAG8FROM)
+73 ;---
+74 SET MAG8DT=MAG8DT1
+75 FOR
SET MAG8DT=$$MAGORD($NAME(@MAG8XREF@(MAG8DT)),1,MAG8BOTH)
if (MAG8DT="")!(MAG8DT>MAG8DT2)
QUIT
Begin DoDot:2
+76 KILL @MAG8TMP
+77 IF $DATA(ZTQUEUED)
IF $$S^%ZTLOAD
SET MAG8RC="1^Task asked to stop"
SET ZTSTOP=1
QUIT
+78 ;--- Merge IEN lists from both files
+79 SET MAG8PRX=""
+80 FOR
SET MAG8PRX=$$MAGORD($NAME(@MAG8XREF@(MAG8DT,MAG8PRX)),1,MAG8BOTH)
if MAG8PRX=""
QUIT
Begin DoDot:3
+81 SET MAG8IEN=""
+82 FOR
SET MAG8IEN=$$MAGORD($NAME(@MAG8XREF@(MAG8DT,MAG8PRX,MAG8IEN)),1,MAG8BOTH)
if MAG8IEN=""
QUIT
Begin DoDot:4
+83 SET @MAG8TMP@(MAG8IEN)=""
+84 QUIT
End DoDot:4
End DoDot:3
+85 ;--- Browse the list and select the images
+86 SET MAG8IEN=""
+87 FOR
Begin DoDot:3
+88 SET MAG8IEN=$ORDER(@MAG8TMP@(MAG8IEN),-1)
+89 IF $DATA(ZTQUEUED)
IF $$S^%ZTLOAD
SET MAG8RC="1^Task asked to stop"
SET ZTSTOP=1
+90 QUIT
End DoDot:3
if (MAG8IEN'>0)!MAG8RC
QUIT
XECUTE MAG8CALL
if MAG8RC
QUIT
+91 QUIT
End DoDot:2
if MAG8RC
QUIT
+92 ;---
+93 KILL @MAG8TMP
+94 QUIT
End DoDot:1
QUIT MAG8RC
+95 ;
+96 ;=== Browse images in the procedure date range; all patients
+97 SET MAG8XREF=$NAME(@MAG8ROOT@("APDT"))
+98 SET MAG8DT=MAG8TO
+99 FOR
SET MAG8DT=$$MAGORD($NAME(@MAG8XREF@(MAG8DT)),-1,MAG8BOTH)
if (MAG8DT="")!(MAG8DT<MAG8FROM)
QUIT
Begin DoDot:1
+100 SET MAG8IEN=""
+101 FOR
Begin DoDot:2
+102 SET MAG8IEN=$$MAGORD($NAME(@MAG8XREF@(MAG8DT,MAG8IEN)),-1,MAG8BOTH)
+103 IF $DATA(ZTQUEUED)
IF $$S^%ZTLOAD
SET MAG8RC="1^Task asked to stop"
SET ZTSTOP=1
+104 QUIT
End DoDot:2
if (MAG8IEN="")!MAG8RC
QUIT
XECUTE MAG8CALL
if MAG8RC
QUIT
+105 QUIT
End DoDot:1
if MAG8RC
QUIT
+106 ;---
+107 QUIT MAG8RC