MAGGI14 ;WOIFO/SG - IMAGE FILE API (GROUP PROPERTIES) ; 5/1/09 2:48pm
;;3.0;IMAGING;**93**;Dec 02, 2009;Build 163
;;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
;
;##### FINDS REFERENCE TO "CHILD" IMAGE IN OBJECT GROUP MULTIPLE
;
; GRPIEN Internal Entry Number of the group.
;
; IMGIEN Internal Entry Number of the image.
;
; Return Values
; =============
; <0 Error descriptor (see the $$ERROR^MAGUERR)
; 0 The multiple does not reference the image
; >0 IEN of the record of the OBJECT GROUP multiple (#4)
; that references the image.
;
FINDCHLD(GRPIEN,IMGIEN) ;
N IEN,NODE,RC
S NODE=$$NODE^MAGGI11(GRPIEN,.RC)
I NODE="" D STORE^MAGUERR(RC) Q RC
S IEN=0
F S IEN=$O(@NODE@(1,IEN)) Q:IEN'>0 Q:$P($G(^(IEN,0)),U)=IMGIEN
Q $S(IEN>0:IEN,1:0)
;
;##### RETURNS THE 1ST IMAGE OF THE GROUP
;
; GRPIEN Internal Entry Number of the image record
;
; FLAGS Flags that control the execution (can be combined):
;
; D Consider deleted images (file #2005.1)
; E Consider existing images (file #2005)
;
; If neither 'E' nor 'D' flag is provided, then an
; error code is returned.
;
; Return Values
; =============
; <0 Error descriptor (see the $$ERROR^MAGUERR)
; 0 Group contains no images of requested kind(s)
; >0 IEN of the 1st image of the group
;
; Notes
; =====
;
; This function does not return an error code when it encounters an
; invalid image reference in the OBJECT GROUP multiple (4); it just
; skips the entry.
;
GRPCH1(GRPIEN,FLAGS) ;
N CH1IEN,ERR,I,IEN,NODE
S FLAGS=$G(FLAGS),CH1IEN=0
;--- Unknown/Unsupported flag(s)
Q:$TR(FLAGS,"DE")'="" $$IPVE^MAGUERR("FLAGS")
;--- Missing required flag
Q:$TR(FLAGS,"DE")=FLAGS $$ERROR^MAGUERR(-6,,"D,E")
;
;--- Get the global node of the record
S NODE=$$NODE^MAGGI11(GRPIEN,.ERR)
I NODE="" D STORE^MAGUERR(ERR) Q ERR
;
;--- Check the existing (non-deleted) group memebers
I FLAGS["E" D I IEN>0 S:'CH1IEN!(IEN<CH1IEN) CH1IEN=IEN
. S (I,IEN)=0
. F S I=$O(@NODE@(1,I)) Q:I'>0 D Q:IEN>0
. . S IEN=+@NODE@(1,I,0) ; OBJECT GROUP (.01)
. . I IEN>0,$D(^MAG(2005,IEN))>1 Q
. . S IEN=0 ; Skip the bad entry
. . Q
. Q
;
;--- Check the deleted group memebers
I FLAGS["D" D I IEN>0 S:'CH1IEN!(IEN<CH1IEN) CH1IEN=IEN
. S IEN=0
. F D Q:IEN'>0 Q:$D(^MAG(2005,IEN))>1
. . S IEN=$O(^MAG(2005,"AGPD",GRPIEN,IEN))
. . Q
. ;~~~ Delete this comment and the following lines of code when
. ;~~~ the IMAGE AUDIT file (#2005.1) is completely eliminated.
. Q:IEN>0
. S IEN=0
. F D Q:IEN'>0 Q:$D(^MAG(2005.1,IEN))>1
. . S IEN=$O(^MAG(2005.1,"AGP",GRPIEN,IEN))
. . Q
. ;~~~
. Q
;
;---
Q CH1IEN
;
;##### RETURNS NUMBERS OF IMAGES AND PAGES IN THE GROUP
;
; GRPIEN Internal Entry Number of the image record
;
; [FLAGS] Flags that control the execution (can be combined):
;
; P Include page counts (see the NUMBER OF PAGES
; field (114) for details).
;
; S Return image counts grouped by image status in
; the array defined by the DETAILS parameter.
;
; U Return image counts grouped by users in
; the array defined by the DETAILS parameter.
;
; [.DETAILS] Reference to a local array where detailed image
; counts are returned.
;
; DETAILS(
; "S",
; Status) Counts of images with this internal value of the
; STATUS field (112). Zero subscript is used if the
; field is empty.
; ^01: Number of existing entries
; ^02: Number of deleted entries
; ^03: Number of existing images (pages)
; ^04: Number of deleted images (pages)
;
; This list is compiled only if the "S" flag is
; provided (see the FLAGS parameter above).
; "U",
; UserIEN, Counts of images captured by this user (see the
; IMAGE SAVE BY field (8). Zero subscript is used
; if the field is empty.
; ^01: Number of existing entries
; ^02: Number of deleted entries
; ^03: Number of existing images (pages)
; ^04: Number of deleted images (pages)
;
; Status) Counts of images with this internal value of the
; STATUS field (112) captured by the user. Zero
; subscript is used if the field is empty.
; ^01: Number of existing entries
; ^02: Number of deleted entries
; ^03: Number of existing images (pages)
; ^04: Number of deleted images (pages)
;
; This list is compiled only if the "U" flag is
; provided (see the FLAGS parameter above).
;
; Return Values
; =============
; <0 Error descriptor (see the $$ERROR^MAGUERR)
; '<0 Numbers of images in the group
; ^01: Number of existing entries
; ^02: Number of deleted entries
; ^03: Number of existing images (pages)
; ^04: Number of deleted images (pages)
;
; Notes
; =====
;
; Pieces 3 and 4 of the function result and nodes of the DETAILS are
; populated only if the P flag is provided (see the FLAGS parameter).
;
; This function does not return an error code when it encounters an
; invalid image reference in the OBJECT GROUP multiple (4); it just
; skips the entry.
;
GRPCT(GRPIEN,FLAGS,DETAILS) ;
N I,IEN,MAGF,NT,TMP,TOTALS
K DETAILS("S"),DETAILS("U")
;--- Validate control flags
S FLAGS=$G(FLAGS),NT=2
Q:$TR(FLAGS,"PSU")'="" $$IPVE^MAGUERR("FLAGS")
S:FLAGS["P" MAGF("P")="",NT=4
S:FLAGS["S" MAGF("D","S")=""
S:FLAGS["U" MAGF("D","U")=""
;--- Validate the record IEN
I '$$ISVALID^MAGGI11(GRPIEN,.TMP) D STORE^MAGUERR(TMP) Q TMP
;
;--- Count existing (non-deleted) members and pages
I $D(MAGF)>1 D
. N CHIEN
. S CHIEN=0
. F S CHIEN=$O(^MAG(2005,GRPIEN,1,CHIEN)) Q:CHIEN'>0 D
. . S IEN=+$G(^MAG(2005,GRPIEN,1,CHIEN,0)) ; OBJECT GROUP (.01)
. . Q:IEN'>0 Q:$D(^MAG(2005,IEN))<10
. . S TOTALS(1)=$G(TOTALS(1))+1
. . D GRPCT1(2005,IEN,1)
. . Q
. Q
E D
. S TOTALS(1)=+$P($G(^MAG(2005,GRPIEN,1,0)),U,4)
. Q
;
;--- Count deleted members and pages
S IEN=0
F S IEN=$O(^MAG(2005,"AGPD",GRPIEN,IEN)) Q:IEN'>0 D
. Q:$D(^MAG(2005,IEN))<10
. S TOTALS(2)=$G(TOTALS(2))+1
. D:$D(MAGF)>1 GRPCT1(2005,IEN,2)
. Q
;
;~~~ Delete this comment and the following lines of code when
;~~~ the IMAGE AUDIT file (#2005.1) is completely eliminated.
S IEN=0
F S IEN=$O(^MAG(2005.1,"AGP",GRPIEN,IEN)) Q:IEN'>0 D
. Q:$D(^MAG(2005.1,IEN))<10
. S TOTALS(2)=$G(TOTALS(2))+1
. D:$D(MAGF)>1 GRPCT1(2005.1,IEN,2)
. Q
;
;--- Calculate users' totals
D:$D(MAGF("D","U"))
. N STC,USRIEN
. S USRIEN=""
. F S USRIEN=$O(DETAILS("U",USRIEN)) Q:USRIEN="" D
. . S STC="" K TMP
. . F S STC=$O(DETAILS("U",USRIEN,STC)) Q:STC="" D
. . . S TMP=DETAILS("U",USRIEN,STC)
. . . F I=1:1:NT S TMP(I)=$G(TMP(I))+$P(TMP,U,I)
. . . Q
. . F I=1:1:NT S $P(DETAILS("U",USRIEN),U,I)=+$G(TMP(I))
. . Q
. Q
;
;--- Return group totals
S TMP=""
F I=1:1:NT S $P(TMP,U,I)=+$G(TOTALS(I))
Q TMP
;
;+++++ DETAILED COUNTS FOR THE IMAGE
;
; FILE File number (2005 or 2005.1)
; IEN IEN of the image entry
; CP Piece number for the entry count (1 or 2)
;
; Input Variables
; ===============
; DETAILS, MAGF, TOTALS
;
; Output Variables
; ================
; DETAILS, TOTALS
;
GRPCT1(FILE,IEN,CP) ;
N NP,STC,TMP,USRIEN
;--- Count the pages
D:$D(MAGF("P"))
. S NP=+$P($G(^MAG(FILE,IEN,100)),U,10) ; NUMBER OF PAGES (114)
. S:NP'>0 NP=1
. S TOTALS(CP+2)=$G(TOTALS(CP+2))+NP
. Q
;--- Get the image status code for detailed counts
Q:$D(MAGF("D"))<10
S STC=+$$IMGST^MAGGI11(IEN,.TMP) Q:TMP<0
;--- Counts by image statuses
D:$D(MAGF("D","S"))
. S TMP=$G(DETAILS("S",STC))
. S $P(DETAILS("S",STC),U,CP)=$P(TMP,U,CP)+1
. S:$G(NP)>0 $P(DETAILS("S",STC),U,CP+2)=$P(TMP,U,CP+2)+NP
. Q
;--- Counts by users
D:$D(MAGF("D","U"))
. S USRIEN=+$P($G(^MAG(FILE,IEN,2)),U,2) ; IMAGE SAVE BY (8)
. S TMP=$G(DETAILS("U",USRIEN,STC))
. S $P(DETAILS("U",USRIEN,STC),U,CP)=$P(TMP,U,CP)+1
. S:$G(NP)>0 $P(DETAILS("U",USRIEN,STC),U,CP+2)=$P(TMP,U,CP+2)+NP
. Q
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HMAGGI14 9760 printed Nov 22, 2024@17:12:38 Page 2
MAGGI14 ;WOIFO/SG - IMAGE FILE API (GROUP PROPERTIES) ; 5/1/09 2:48pm
+1 ;;3.0;IMAGING;**93**;Dec 02, 2009;Build 163
+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 ;; | |
+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 QUIT
+19 ;
+20 ;##### FINDS REFERENCE TO "CHILD" IMAGE IN OBJECT GROUP MULTIPLE
+21 ;
+22 ; GRPIEN Internal Entry Number of the group.
+23 ;
+24 ; IMGIEN Internal Entry Number of the image.
+25 ;
+26 ; Return Values
+27 ; =============
+28 ; <0 Error descriptor (see the $$ERROR^MAGUERR)
+29 ; 0 The multiple does not reference the image
+30 ; >0 IEN of the record of the OBJECT GROUP multiple (#4)
+31 ; that references the image.
+32 ;
FINDCHLD(GRPIEN,IMGIEN) ;
+1 NEW IEN,NODE,RC
+2 SET NODE=$$NODE^MAGGI11(GRPIEN,.RC)
+3 IF NODE=""
DO STORE^MAGUERR(RC)
QUIT RC
+4 SET IEN=0
+5 FOR
SET IEN=$ORDER(@NODE@(1,IEN))
if IEN'>0
QUIT
if $PIECE($GET(^(IEN,0)),U)=IMGIEN
QUIT
+6 QUIT $SELECT(IEN>0:IEN,1:0)
+7 ;
+8 ;##### RETURNS THE 1ST IMAGE OF THE GROUP
+9 ;
+10 ; GRPIEN Internal Entry Number of the image record
+11 ;
+12 ; FLAGS Flags that control the execution (can be combined):
+13 ;
+14 ; D Consider deleted images (file #2005.1)
+15 ; E Consider existing images (file #2005)
+16 ;
+17 ; If neither 'E' nor 'D' flag is provided, then an
+18 ; error code is returned.
+19 ;
+20 ; Return Values
+21 ; =============
+22 ; <0 Error descriptor (see the $$ERROR^MAGUERR)
+23 ; 0 Group contains no images of requested kind(s)
+24 ; >0 IEN of the 1st image of the group
+25 ;
+26 ; Notes
+27 ; =====
+28 ;
+29 ; This function does not return an error code when it encounters an
+30 ; invalid image reference in the OBJECT GROUP multiple (4); it just
+31 ; skips the entry.
+32 ;
GRPCH1(GRPIEN,FLAGS) ;
+1 NEW CH1IEN,ERR,I,IEN,NODE
+2 SET FLAGS=$GET(FLAGS)
SET CH1IEN=0
+3 ;--- Unknown/Unsupported flag(s)
+4 if $TRANSLATE(FLAGS,"DE")'=""
QUIT $$IPVE^MAGUERR("FLAGS")
+5 ;--- Missing required flag
+6 if $TRANSLATE(FLAGS,"DE")=FLAGS
QUIT $$ERROR^MAGUERR(-6,,"D,E")
+7 ;
+8 ;--- Get the global node of the record
+9 SET NODE=$$NODE^MAGGI11(GRPIEN,.ERR)
+10 IF NODE=""
DO STORE^MAGUERR(ERR)
QUIT ERR
+11 ;
+12 ;--- Check the existing (non-deleted) group memebers
+13 IF FLAGS["E"
Begin DoDot:1
+14 SET (I,IEN)=0
+15 FOR
SET I=$ORDER(@NODE@(1,I))
if I'>0
QUIT
Begin DoDot:2
+16 ; OBJECT GROUP (.01)
SET IEN=+@NODE@(1,I,0)
+17 IF IEN>0
IF $DATA(^MAG(2005,IEN))>1
QUIT
+18 ; Skip the bad entry
SET IEN=0
+19 QUIT
End DoDot:2
if IEN>0
QUIT
+20 QUIT
End DoDot:1
IF IEN>0
if 'CH1IEN!(IEN<CH1IEN)
SET CH1IEN=IEN
+21 ;
+22 ;--- Check the deleted group memebers
+23 IF FLAGS["D"
Begin DoDot:1
+24 SET IEN=0
+25 FOR
Begin DoDot:2
+26 SET IEN=$ORDER(^MAG(2005,"AGPD",GRPIEN,IEN))
+27 QUIT
End DoDot:2
if IEN'>0
QUIT
if $DATA(^MAG(2005,IEN))>1
QUIT
+28 ;~~~ Delete this comment and the following lines of code when
+29 ;~~~ the IMAGE AUDIT file (#2005.1) is completely eliminated.
+30 if IEN>0
QUIT
+31 SET IEN=0
+32 FOR
Begin DoDot:2
+33 SET IEN=$ORDER(^MAG(2005.1,"AGP",GRPIEN,IEN))
+34 QUIT
End DoDot:2
if IEN'>0
QUIT
if $DATA(^MAG(2005.1,IEN))>1
QUIT
+35 ;~~~
+36 QUIT
End DoDot:1
IF IEN>0
if 'CH1IEN!(IEN<CH1IEN)
SET CH1IEN=IEN
+37 ;
+38 ;---
+39 QUIT CH1IEN
+40 ;
+41 ;##### RETURNS NUMBERS OF IMAGES AND PAGES IN THE GROUP
+42 ;
+43 ; GRPIEN Internal Entry Number of the image record
+44 ;
+45 ; [FLAGS] Flags that control the execution (can be combined):
+46 ;
+47 ; P Include page counts (see the NUMBER OF PAGES
+48 ; field (114) for details).
+49 ;
+50 ; S Return image counts grouped by image status in
+51 ; the array defined by the DETAILS parameter.
+52 ;
+53 ; U Return image counts grouped by users in
+54 ; the array defined by the DETAILS parameter.
+55 ;
+56 ; [.DETAILS] Reference to a local array where detailed image
+57 ; counts are returned.
+58 ;
+59 ; DETAILS(
+60 ; "S",
+61 ; Status) Counts of images with this internal value of the
+62 ; STATUS field (112). Zero subscript is used if the
+63 ; field is empty.
+64 ; ^01: Number of existing entries
+65 ; ^02: Number of deleted entries
+66 ; ^03: Number of existing images (pages)
+67 ; ^04: Number of deleted images (pages)
+68 ;
+69 ; This list is compiled only if the "S" flag is
+70 ; provided (see the FLAGS parameter above).
+71 ; "U",
+72 ; UserIEN, Counts of images captured by this user (see the
+73 ; IMAGE SAVE BY field (8). Zero subscript is used
+74 ; if the field is empty.
+75 ; ^01: Number of existing entries
+76 ; ^02: Number of deleted entries
+77 ; ^03: Number of existing images (pages)
+78 ; ^04: Number of deleted images (pages)
+79 ;
+80 ; Status) Counts of images with this internal value of the
+81 ; STATUS field (112) captured by the user. Zero
+82 ; subscript is used if the field is empty.
+83 ; ^01: Number of existing entries
+84 ; ^02: Number of deleted entries
+85 ; ^03: Number of existing images (pages)
+86 ; ^04: Number of deleted images (pages)
+87 ;
+88 ; This list is compiled only if the "U" flag is
+89 ; provided (see the FLAGS parameter above).
+90 ;
+91 ; Return Values
+92 ; =============
+93 ; <0 Error descriptor (see the $$ERROR^MAGUERR)
+94 ; '<0 Numbers of images in the group
+95 ; ^01: Number of existing entries
+96 ; ^02: Number of deleted entries
+97 ; ^03: Number of existing images (pages)
+98 ; ^04: Number of deleted images (pages)
+99 ;
+100 ; Notes
+101 ; =====
+102 ;
+103 ; Pieces 3 and 4 of the function result and nodes of the DETAILS are
+104 ; populated only if the P flag is provided (see the FLAGS parameter).
+105 ;
+106 ; This function does not return an error code when it encounters an
+107 ; invalid image reference in the OBJECT GROUP multiple (4); it just
+108 ; skips the entry.
+109 ;
GRPCT(GRPIEN,FLAGS,DETAILS) ;
+1 NEW I,IEN,MAGF,NT,TMP,TOTALS
+2 KILL DETAILS("S"),DETAILS("U")
+3 ;--- Validate control flags
+4 SET FLAGS=$GET(FLAGS)
SET NT=2
+5 if $TRANSLATE(FLAGS,"PSU")'=""
QUIT $$IPVE^MAGUERR("FLAGS")
+6 if FLAGS["P"
SET MAGF("P")=""
SET NT=4
+7 if FLAGS["S"
SET MAGF("D","S")=""
+8 if FLAGS["U"
SET MAGF("D","U")=""
+9 ;--- Validate the record IEN
+10 IF '$$ISVALID^MAGGI11(GRPIEN,.TMP)
DO STORE^MAGUERR(TMP)
QUIT TMP
+11 ;
+12 ;--- Count existing (non-deleted) members and pages
+13 IF $DATA(MAGF)>1
Begin DoDot:1
+14 NEW CHIEN
+15 SET CHIEN=0
+16 FOR
SET CHIEN=$ORDER(^MAG(2005,GRPIEN,1,CHIEN))
if CHIEN'>0
QUIT
Begin DoDot:2
+17 ; OBJECT GROUP (.01)
SET IEN=+$GET(^MAG(2005,GRPIEN,1,CHIEN,0))
+18 if IEN'>0
QUIT
if $DATA(^MAG(2005,IEN))<10
QUIT
+19 SET TOTALS(1)=$GET(TOTALS(1))+1
+20 DO GRPCT1(2005,IEN,1)
+21 QUIT
End DoDot:2
+22 QUIT
End DoDot:1
+23 IF '$TEST
Begin DoDot:1
+24 SET TOTALS(1)=+$PIECE($GET(^MAG(2005,GRPIEN,1,0)),U,4)
+25 QUIT
End DoDot:1
+26 ;
+27 ;--- Count deleted members and pages
+28 SET IEN=0
+29 FOR
SET IEN=$ORDER(^MAG(2005,"AGPD",GRPIEN,IEN))
if IEN'>0
QUIT
Begin DoDot:1
+30 if $DATA(^MAG(2005,IEN))<10
QUIT
+31 SET TOTALS(2)=$GET(TOTALS(2))+1
+32 if $DATA(MAGF)>1
DO GRPCT1(2005,IEN,2)
+33 QUIT
End DoDot:1
+34 ;
+35 ;~~~ Delete this comment and the following lines of code when
+36 ;~~~ the IMAGE AUDIT file (#2005.1) is completely eliminated.
+37 SET IEN=0
+38 FOR
SET IEN=$ORDER(^MAG(2005.1,"AGP",GRPIEN,IEN))
if IEN'>0
QUIT
Begin DoDot:1
+39 if $DATA(^MAG(2005.1,IEN))<10
QUIT
+40 SET TOTALS(2)=$GET(TOTALS(2))+1
+41 if $DATA(MAGF)>1
DO GRPCT1(2005.1,IEN,2)
+42 QUIT
End DoDot:1
+43 ;
+44 ;--- Calculate users' totals
+45 if $DATA(MAGF("D","U"))
Begin DoDot:1
+46 NEW STC,USRIEN
+47 SET USRIEN=""
+48 FOR
SET USRIEN=$ORDER(DETAILS("U",USRIEN))
if USRIEN=""
QUIT
Begin DoDot:2
+49 SET STC=""
KILL TMP
+50 FOR
SET STC=$ORDER(DETAILS("U",USRIEN,STC))
if STC=""
QUIT
Begin DoDot:3
+51 SET TMP=DETAILS("U",USRIEN,STC)
+52 FOR I=1:1:NT
SET TMP(I)=$GET(TMP(I))+$PIECE(TMP,U,I)
+53 QUIT
End DoDot:3
+54 FOR I=1:1:NT
SET $PIECE(DETAILS("U",USRIEN),U,I)=+$GET(TMP(I))
+55 QUIT
End DoDot:2
+56 QUIT
End DoDot:1
+57 ;
+58 ;--- Return group totals
+59 SET TMP=""
+60 FOR I=1:1:NT
SET $PIECE(TMP,U,I)=+$GET(TOTALS(I))
+61 QUIT TMP
+62 ;
+63 ;+++++ DETAILED COUNTS FOR THE IMAGE
+64 ;
+65 ; FILE File number (2005 or 2005.1)
+66 ; IEN IEN of the image entry
+67 ; CP Piece number for the entry count (1 or 2)
+68 ;
+69 ; Input Variables
+70 ; ===============
+71 ; DETAILS, MAGF, TOTALS
+72 ;
+73 ; Output Variables
+74 ; ================
+75 ; DETAILS, TOTALS
+76 ;
GRPCT1(FILE,IEN,CP) ;
+1 NEW NP,STC,TMP,USRIEN
+2 ;--- Count the pages
+3 if $DATA(MAGF("P"))
Begin DoDot:1
+4 ; NUMBER OF PAGES (114)
SET NP=+$PIECE($GET(^MAG(FILE,IEN,100)),U,10)
+5 if NP'>0
SET NP=1
+6 SET TOTALS(CP+2)=$GET(TOTALS(CP+2))+NP
+7 QUIT
End DoDot:1
+8 ;--- Get the image status code for detailed counts
+9 if $DATA(MAGF("D"))<10
QUIT
+10 SET STC=+$$IMGST^MAGGI11(IEN,.TMP)
if TMP<0
QUIT
+11 ;--- Counts by image statuses
+12 if $DATA(MAGF("D","S"))
Begin DoDot:1
+13 SET TMP=$GET(DETAILS("S",STC))
+14 SET $PIECE(DETAILS("S",STC),U,CP)=$PIECE(TMP,U,CP)+1
+15 if $GET(NP)>0
SET $PIECE(DETAILS("S",STC),U,CP+2)=$PIECE(TMP,U,CP+2)+NP
+16 QUIT
End DoDot:1
+17 ;--- Counts by users
+18 if $DATA(MAGF("D","U"))
Begin DoDot:1
+19 ; IMAGE SAVE BY (8)
SET USRIEN=+$PIECE($GET(^MAG(FILE,IEN,2)),U,2)
+20 SET TMP=$GET(DETAILS("U",USRIEN,STC))
+21 SET $PIECE(DETAILS("U",USRIEN,STC),U,CP)=$PIECE(TMP,U,CP)+1
+22 if $GET(NP)>0
SET $PIECE(DETAILS("U",USRIEN,STC),U,CP+2)=$PIECE(TMP,U,CP+2)+NP
+23 QUIT
End DoDot:1
+24 QUIT