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

MAGVIM04.m

Go to the documentation of this file.
  1. MAGVIM04 ;WOIFO/MAT - Utilities for RPC calls for DICOM file processing ; 3 Feb 2012 4:35 AM
  1. ;;3.0;IMAGING;**118**;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. ;+++ Importer II Log Reports: Data Delivery
  1. ;
  1. ; Internal processing routine for RPC: MAGV IMPORT STUDY LOG REPORT
  1. ;
  1. ; Output report data from MAGV IMPORTER LOG File (#2006.9421).
  1. ;
  1. ; Inputs:
  1. ; =======
  1. ;
  1. ; MAGVARY .... Variable for returned data.
  1. ; FILE ....... Data source file number.
  1. ; REPORT ..... Report selector = {1, 2, 3}
  1. ; STARTDT .... Inclusive lower bound of query date range.
  1. ; STOPDT ..... Inclusive upper "".
  1. ;
  1. ; Outputs:
  1. ; ========
  1. ;
  1. ; Expected: ^(0) 0`Count of lines returned.
  1. ; (n) Global array of report data.
  1. ;
  1. ; On Error: ^(0) <0`Error message.
  1. ;
  1. ; Notes
  1. ; =====
  1. ;
  1. ; Called by IMPLOGEX^MAGVIM03.
  1. ;
  1. MAGVQRY(MAGVARY,FILE,REPORT,STARTDT,STOPDT) ;
  1. ;
  1. ;--- Initialize counter arrays.
  1. K MAGVCT,MAGVDT,MAGVLC,MAGVMC,MAGVTP
  1. S MAGVCT("TOTALDT")=0 ;Hits within date range.
  1. S MAGVCT("RSELTOT")=0 ;Total ... total what?
  1. ;--- Initialize overhead counters for SERIES, OBJECTs imported, OBjects FAILED
  1. N SS F SS="SERIES","OBJECT","OBFAIL" S MAGVCT(SS)=0
  1. N MAGVNOD S MAGVNOD=$NA(^MAGV(FILE,"B",STARTDT))
  1. N STOPDT0
  1. D
  1. . ;--- Compensate STOPDT for $QS logic. IA #10000
  1. . N X,X1,X2 S X1=STOPDT,X2=1 D C^%DTC S STOPDT0=X
  1. F S MAGVNOD=$Q(@MAGVNOD) Q:+$QS(MAGVNOD,3)]STOPDT0 Q:$QS(MAGVNOD,2)'="B" D
  1. . ;
  1. . S MAGVCT("TOTALDT")=MAGVCT("TOTALDT")+1
  1. . ;--- Count of imported studies per date.
  1. . N RECDT S RECDT=$QS(MAGVNOD,3)\1
  1. . S:'$D(MAGVDT(RECDT)) MAGVDT(RECDT)=0
  1. . S MAGVDT(RECDT)=MAGVDT(RECDT)+1
  1. . N MAGVIEN S MAGVIEN=$QS(MAGVNOD,4)
  1. . ;--- Set working node.
  1. . N MAGVNOD0 S MAGVNOD0=$G(^MAGV(FILE,MAGVIEN,0))
  1. . ;
  1. . ;--- Get counts for this MAGVIEN.
  1. . ;--- Counts per "Study Performed Location"
  1. . N MAGVSLOC S MAGVSLOC=$P(MAGVNOD0,U,7)
  1. . S:MAGVSLOC="" MAGVSLOC="UNSPECIFIED"
  1. . S:MAGVSLOC?1N.N MAGVSLOC="UNSPECIFIED"
  1. . S:'$D(MAGVLC(MAGVSLOC)) MAGVLC(MAGVSLOC)=0,MAGVLC(0)=0
  1. . S MAGVLC(MAGVSLOC)=MAGVLC(MAGVSLOC)+1,MAGVLC(0)=MAGVLC(0)+1
  1. . ;--- Count of imported studies per study type.
  1. . N MAGVSTYP S MAGVSTYP=$P(MAGVNOD0,U,8) S:MAGVSTYP="" MAGVSTYP="UNSPECIFIED"
  1. . S:'$D(MAGVTP(MAGVSTYP)) MAGVTP(MAGVSTYP)=0
  1. . S MAGVTP(MAGVSTYP)=MAGVTP(MAGVSTYP)+1
  1. . ;
  1. . N CTSERIES S CTSERIES=$P(MAGVNOD0,U,9)
  1. . N CTOBJECT S CTOBJECT=$P(MAGVNOD0,U,10)
  1. . N CTOBFAIL S CTOBFAIL=$P(MAGVNOD0,U,12)
  1. . ;
  1. . F SS="SERIES","OBJECT","OBFAIL" D
  1. . . ;--- Add each to its overhead counter.
  1. . . S MAGVCT(SS)=MAGVCT(SS)+@("CT"_SS)
  1. . . ;
  1. . . ;--- Add each to its per-date counter.
  1. . . S:'$D(MAGVDT(RECDT,SS)) MAGVDT(RECDT,SS)=0
  1. . . S MAGVDT(RECDT,SS)=MAGVDT(RECDT,SS)+@("CT"_SS)
  1. . . ;
  1. . . ;--- Add each to its per-location counter.
  1. . . S:'$D(MAGVLC(MAGVSLOC,SS)) MAGVLC(MAGVSLOC,SS)=0
  1. . . S MAGVLC(MAGVSLOC,SS)=MAGVLC(MAGVSLOC,SS)+@("CT"_SS)
  1. . . ;
  1. . . ;--- Add each to its per-studyType counter.
  1. . . S:'$D(MAGVTP(MAGVSTYP,SS)) MAGVTP(MAGVSTYP,SS)=0
  1. . . S MAGVTP(MAGVSTYP,SS)=MAGVTP(MAGVSTYP,SS)+@("CT"_SS)
  1. . . Q
  1. . ;--- Count of modalities (only for REPORT=3 right now).
  1. . I REPORT=3 D K MAGVA
  1. . . ;
  1. . . N CTNDX,SFNDX,SUBFILE
  1. . . S SUBFILE=2006.94211
  1. . . ;
  1. . . ;--- Get number of modality counter subfile entries.
  1. . . S CTNDX=$P($G(^MAGV(FILE,MAGVIEN,100,0)),U,3)
  1. . . Q:CTNDX<1
  1. . . ;
  1. . . ;--- Grand Total counter ... no filter.
  1. . . F SFNDX=1:1:CTNDX D
  1. . . . ;
  1. . . . N MAGVLB S MAGVLB=$$GET1^DIQ(SUBFILE,SFNDX_","_MAGVIEN_",",.01)
  1. . . . N MAGVMCT S MAGVMCT=+$$GET1^DIQ(SUBFILE,SFNDX_","_MAGVIEN_",",.02)
  1. . . . S:'$D(MAGVMC(MAGVLB)) MAGVMC(MAGVLB)=0
  1. . . . S MAGVMC(MAGVLB)=MAGVMC(MAGVLB)+MAGVMCT
  1. . . . Q
  1. . . Q
  1. . Q
  1. D MAGVOUTP
  1. Q
  1. ;
  1. ;+++ Internal entry point: Assemble report output.
  1. ;
  1. MAGVOUTP ;
  1. ;
  1. N CT S CT=0
  1. ;
  1. N TIME S TIME=$$NOW^XLFDT,TIME=$$FMTE^XLFDT(TIME)
  1. N LNA S LNA="" S $P(LNA,"*",81)=""
  1. N LNH S LNH="" S $P(LNH,"-",81)=""
  1. N LNS S LNS="" S $P(LNS," ",81)=""
  1. N LNU S LNU="" S $P(LNU,"_",81)=""
  1. ;--- Output general header.
  1. S CT=CT+1,@MAGVARY@(CT)="Imaging Importer II Report: "_TIME
  1. ;
  1. D ZRUCR(2)
  1. D
  1. . S CT=CT+1
  1. . I STARTDT=STOPDT D Q
  1. . . S @MAGVARY@(CT)=" Imported on "_$$FMTE^XLFDT(STARTDT,5)_":"
  1. . S @MAGVARY@(CT)=" Imported between "_$$FMTE^XLFDT(STARTDT,5)_" and "_$$FMTE^XLFDT(STOPDT,5)_":"
  1. D ZRUCR(2)
  1. S CT=CT+1,@MAGVARY@(CT)=$E(LNS,1,23)_$J(MAGVCT("TOTALDT"),10)_" Studies"
  1. S CT=CT+1,@MAGVARY@(CT)=$E(LNS,1,23)_$J(MAGVCT("SERIES"),10)_" Series"
  1. S CT=CT+1,@MAGVARY@(CT)=$E(LNS,1,23)_$J(MAGVCT("OBJECT"),10)_" Objects"
  1. S CT=CT+1,@MAGVARY@(CT)=$E(LNS,1,23)_$J(MAGVCT("OBFAIL"),10)_" Objects Failed"
  1. S CT=CT+1,@MAGVARY@(CT)=$E(LNU,1,56)
  1. D ZRUCR(1)
  1. ;--- Branch to specific report.
  1. D
  1. . I REPORT=1 D REPDAT Q
  1. . I REPORT=2 D REPLCN Q
  1. . I REPORT=3 D REPMOD Q
  1. S CT=CT+1,@MAGVARY@(CT)=$E(LNA,1,6)_" END OF REPORT "_$E(LNA,1,6)
  1. Q
  1. ;
  1. REPDAT ;
  1. ;--- Output date specific column headers.
  1. S CT=CT+1,@MAGVARY@(CT)=$E(LNS,1,45)_"Failed"
  1. S CT=CT+1,@MAGVARY@(CT)="DATE______"_" Studies"_" Series"_" Objects"_" Objects"
  1. D ZRUCR(1)
  1. ;
  1. ;--- Tabular output by date.
  1. N DATE S DATE=""
  1. F S DATE=$O(MAGVDT(DATE)) Q:DATE="" D
  1. . ;
  1. . S CT=CT+1
  1. . N OUTDATE S OUTDATE=$$FMTE^XLFDT(DATE,5)
  1. . S @MAGVARY@(CT)=$J(OUTDATE,10)_" "_$J(MAGVDT(DATE),8)_" "_$J(MAGVDT(DATE,"SERIES"),8)
  1. . S @MAGVARY@(CT)=@MAGVARY@(CT)_" "_$J(MAGVDT(DATE,"OBJECT"),8)_" "_$J(MAGVDT(DATE,"OBFAIL"),8)
  1. . Q
  1. D ZRUCR(1)
  1. Q
  1. ;
  1. REPLCN ;
  1. ;--- Output location specific column headers.
  1. S CT=CT+1,@MAGVARY@(CT)=$E(LNS,1,50)_"Failed"
  1. S CT=CT+1,@MAGVARY@(CT)="LOCATION_______"_" Studies"_" Series"_" Objects"_" Objects"
  1. D ZRUCR(2)
  1. ;
  1. ;--- Tabular output by location.
  1. N LOCN S LOCN=$O(MAGVLC(""))
  1. F S LOCN=$O(MAGVLC(LOCN)) Q:LOCN="" D
  1. . ;
  1. . ;--- Pad a location under 15 characters.
  1. . N LLOCN S LLOCN=$L($E(LOCN,1,15))
  1. . N SPAD S SPAD=3+(15-LLOCN)
  1. . ;
  1. . S CT=CT+1
  1. . S @MAGVARY@(CT)=$E(LOCN,1,15)_":"_$E(LNS,1,SPAD)_$J(MAGVLC(LOCN),8)_" "_$J(MAGVLC(LOCN,"SERIES"),8)
  1. . S @MAGVARY@(CT)=@MAGVARY@(CT)_" "_$J(MAGVLC(LOCN,"OBJECT"),8)_" "_$J(MAGVLC(LOCN,"OBFAIL"),8)
  1. . ;
  1. . D ZRUCR(1)
  1. . S CT=CT+1,@MAGVARY@(CT)=$E(LNH,1,56)
  1. . D ZRUCR(2)
  1. D ZRUCR(1)
  1. Q
  1. ;
  1. REPMOD ;
  1. S CT=CT+1,@MAGVARY@(CT)=$E(LNS,1,27)_"COUNT ... MODALITY"
  1. D ZRUCR(1)
  1. S SS="" F S SS=$O(MAGVMC(SS)) Q:SS="" D
  1. . S CT=CT+1,@MAGVARY@(CT)=$E(LNS,1,22)_$J(MAGVMC(SS),10)_" ... "_SS
  1. D ZRUCR(1)
  1. Q
  1. ;+++ Routine utility: Output 'Carriage Return'
  1. ZRUCR(REP) ;
  1. N X F X=1:1:REP S CT=CT+1,@MAGVARY@(CT)=""
  1. Q
  1. ;
  1. ; MAGVIM04