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

MAGDQR05.m

Go to the documentation of this file.
  1. MAGDQR05 ;WOIFO/EdM,MLH,DAC - Imaging RPCs for Query/Retrieve ; 07 Feb 2013 5:18 PM
  1. ;;3.0;IMAGING;**54,118,138**;Mar 19, 2002;Build 5380;Sep 03, 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. TIM(REQ,FD,LD,TIM,ANY,SID) ; Overflow from MAGDQR02
  1. N D0,D1,D2,I,PAT,SDT,V,X,STDATE,STTIME,STUDYIX,STUTYP,STUDTA,DAT0,DATF,TIM0,TIMF,T,P
  1. N PROCIX,PATREFIX,PATREFDTA,SERIX,SOPIX
  1. D:$D(REQ("0008,0020"))>9
  1. . ; search old structure for studies by date and time
  1. . ; The references below to ^RADPT are permitted according to the
  1. . ; existing Integration Agreement # 1172
  1. . S V="" F S V=$O(^RADPT("ADC",V)) Q:V="" D
  1. . . S D0="" F S D0=$O(^RADPT("ADC",V,D0)) Q:D0="" D
  1. . . . S D1="" F S D1=$O(^RADPT("ADC",V,D0,D1)) Q:D1="" D
  1. . . . . S SDT=9999999.9999-D1 Q:SDT<FD Q:SDT>LD
  1. . . . . S D2="" F S D2=$O(^RADPT("ADC",V,D0,D1,D2)) Q:D2="" D
  1. . . . . . Q:'$P($G(^RADPT(D0,"DT",D1,"P",D2,0)),"^",17)
  1. . . . . . S ^TMP("MAG",$J,"QR",10,"R^"_D0_"^"_D1_"^"_D2)="",TIM=2
  1. . . . . . S ANY=1,SID=1
  1. . . . . . Q
  1. . . . . Q
  1. . . . Q
  1. . . Q
  1. . S PAT="" F S PAT=$O(^MAG(2005,"APDTPX",PAT)) Q:PAT="" D
  1. . . S D1="" F S D1=$O(^MAG(2005,"APDTPX",PAT,D1)) Q:D1="" D
  1. . . . S SDT=9999999.9999-D1 Q:SDT<FD Q:SDT>LD
  1. . . . S D0="" F S D0=$O(^MAG(2005,"APDTPX",PAT,D1,"CON/PROC",D0)) Q:D0="" D
  1. . . . . S X=$G(^MAG(2005,D0,2)),V=""
  1. . . . . D:$P(X,"^",6)=2006.5839
  1. . . . . . S V="123^"_$P(X,"^",7)_"^"_D0_"^"_$P(X,"^",7)
  1. . . . . . Q
  1. . . . . D:$P(X,"^",6)=8925
  1. . . . . . N T
  1. . . . . . S T=$P($G(^TIU(8925,+$P(X,"^",7),14)),"^",5) ; IA# 3268
  1. . . . . . S T=$S(T[";GMR(123,":$$GMRCACN^MAGDFCNV(+T),1:"") ; Should use FileMan
  1. . . . . . S V="8925^"_$P(X,"^",7)_"^"_D0_"^"_T
  1. . . . . . Q
  1. . . . . S ^TMP("MAG",$J,"QR",10,"C^"_PAT_"^"_V)="",TIM=2
  1. . . . . S ANY=1,SID=1
  1. . . . . Q
  1. . . . Q
  1. . . Q
  1. . Q
  1. ; search new structure for studies by date and time
  1. S T="0008,0020" ; search by date and time
  1. D:$D(REQ(T))>9
  1. . S P=$O(REQ(T,"")) Q:P="" S (DAT0,DATF)=$G(REQ(T,P)) Q:DAT0=""
  1. . S:DAT0["-" DATF=$P(DAT0,"-",2),DAT0=$P(DAT0,"-",1)
  1. . S DAT0=DAT0-17000000,DATF=DATF-17000000
  1. . S T="0008,0030" D:$D(REQ(T))>9
  1. . . S P=$O(REQ(T,"")),(TIM0,TIMF)=$G(REQ(T,P)) Q:TIM0=""
  1. . . S:TIM0["-" TIMF=$P(TIM0,"-",2),TIM0=$P(TIM0,"-",1)
  1. . . S TIM0=$E(TIM0_"000000",1,6),TIMF=$E(TIMF_"000000",1,6)
  1. . . Q
  1. . S STDATE=$O(^MAGV(2005.62,"J",DAT0),-1)
  1. . F S STDATE=$O(^MAGV(2005.62,"J",STDATE)) Q:STDATE>DATF Q:'STDATE D
  1. . . S STUDYIX=""
  1. . . F S STUDYIX=$O(^MAGV(2005.62,"J",STDATE,STUDYIX)) Q:STUDYIX="" D
  1. . . . Q:$P($G(^MAGV(2005.62,STUDYIX,5)),"^",2)="I" ; study marked inaccessible
  1. . . . N HIT
  1. . . . S HIT=1
  1. . . . D:$D(TIM0)
  1. . . . . S HIT=0
  1. . . . . S STTIME=$P($P($G(^MAGV(2005.62,STUDYIX,2)),"^",1),".",2) Q:STTIME=""
  1. . . . . S STTIME=$E((STTIME\1)_"000000",1,6)
  1. . . . . I STTIME'<TIM0,STTIME'>TIMF S HIT=1
  1. . . . . Q
  1. . . . S:HIT ^TMP("MAG",$J,"QR",30,STUDYIX)=""
  1. . . . Q
  1. . . Q
  1. . Q
  1. S T="0008,0030" ; search by time alone
  1. D:$D(REQ(T))>9
  1. . Q:$D(REQ("0008,0020"))>9 ; already did date & time search
  1. . S P=$O(REQ(T,"")) Q:P="" S (TIM0,TIMF)=$G(REQ(T,P)) Q:TIM0=""
  1. . S:TIM0["-" TIMF=$P(TIM0,"-",2),TIM0=$P(TIM0,"-",1)
  1. . S TIM0=$E(TIM0_"000000",1,6),TIMF=$E(TIMF_"000000",1,6)
  1. . S STTIME=$O(^MAGV(2005.62,"K",TIM0),-1)
  1. . F S STTIME=$O(^MAGV(2005.62,"K",STTIME)) Q:STTIME>TIMF Q:'STTIME D
  1. . . S STUDYIX=""
  1. . . F S STUDYIX=$O(^MAGV(2005.62,"K",STTIME,STUDYIX)) Q:STUDYIX="" D
  1. . . . Q:$P($G(^MAGV(2005.62,STUDYIX,5)),"^",2)="I" ; study marked inaccessible
  1. . . . S ^TMP("MAG",$J,"QR",30,STUDYIX)=""
  1. . . . Q
  1. . . Q
  1. . Q
  1. D:$D(^TMP("MAG",$J,"QR",30))
  1. . S TIM=2,STUDYIX=""
  1. . F S STUDYIX=$O(^TMP("MAG",$J,"QR",30,STUDYIX)) Q:'STUDYIX D
  1. . . S PROCIX=$P($G(^MAGV(2005.62,STUDYIX,6)),"^",1) Q:'PROCIX
  1. . . S PATREFIX=$P($G(^MAGV(2005.61,PROCIX,6)),"^",1) Q:'PATREFIX
  1. . . S PATREFDTA=$G(^MAGV(2005.6,PATREFIX,0)) Q:$P(PATREFDTA,"^",3)'="D"
  1. . . S PAT=$P(PATREFDTA,"^",1) Q:PAT=""
  1. . . S ^TMP("MAG",$J,"QR",10,"N^"_PAT_"^"_STUDYIX)=""
  1. . . S ANY=1,SID=1
  1. . . Q
  1. . K ^TMP("MAG",$J,"QR",30)
  1. . Q
  1. I TIM=1 D Q
  1. . D ERR^MAGDQRUE("No matches for tag 0008,0020 / 0008,0030")
  1. . D ERRSAV^MAGDQRUE
  1. . Q
  1. ;
  1. Q
  1. ;
  1. GWINFO(OUT,HOSTNAME,LOCATION,FILES,VER) ; RPC = MAG DICOM STORE GATEWAY INFO
  1. N D0,X
  1. I $G(HOSTNAME)="" S OUT="-1,No HostName provided." Q
  1. I '$G(LOCATION) S OUT="-3,No location provided." Q
  1. S HOSTNAME=$TR(HOSTNAME,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")
  1. S D0=$O(^MAG(2006.87,"B",HOSTNAME,"")) D:'D0
  1. . L +^MAG(2006.87,0):1E9 ; Background process MUST wait
  1. . S X=$G(^MAG(2006.87,0))
  1. . S $P(X,"^",1,2)="DICOM GATEWAY INFORMATION^2006.87"
  1. . S D0=$O(^MAG(2006.87," "),-1)+1
  1. . S $P(X,"^",3)=D0
  1. . S $P(X,"^",4)=$P(X,"^",4)+1
  1. . S ^MAG(2006.87,0)=X
  1. . S ^MAG(2006.87,D0,0)=HOSTNAME
  1. . S ^MAG(2006.87,"B",HOSTNAME,D0)=""
  1. . L -^MAG(2006.87,0)
  1. . Q
  1. S ^MAG(2006.87,D0,0)=HOSTNAME_"^"_"^"_(+LOCATION)
  1. D GWLOG(.FILES,"INSTRUMENT",D0,1)
  1. D GWLOG(.FILES,"MODALITY",D0,2)
  1. D GWLOG(.FILES,"PORTLIST",D0,3)
  1. D GWLOG(.FILES,"SCU_LIST",D0,4)
  1. D GWLOG(.FILES,"WORKLIST",D0,5)
  1. D GWLOG(.FILES,"CT_PARAM",D0,6)
  1. D GWLOG(.VER,"GW",D0,100)
  1. D GWLOG(.VER,"MAG_DCMVIEW",D0,101)
  1. D GWLOG(.VER,"MAG_MAKEABS",D0,102)
  1. D GWLOG(.VER,"MAG_CSTORE",D0,103)
  1. D GWLOG(.VER,"MAG_RECON",D0,104)
  1. D GWLOG(.VER,"MAG_DCMTOTGA",D0,105)
  1. S OUT=0
  1. Q
  1. ;
  1. GWLOG(ARRAY,NAME,D0,F) ;
  1. S:$D(ARRAY(NAME)) ^MAG(2006.87,D0,F)=ARRAY(NAME)
  1. Q
  1. ;
  1. GETINFO(OUT,HOSTNAME) ; RPC = MAG DICOM GET GATEWAY INFO
  1. N D0,N,X
  1. I $G(HOSTNAME)="" S OUT="-1,No HostName provided." Q
  1. S HOSTNAME=$TR(HOSTNAME,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")
  1. S D0=$O(^MAG(2006.87,"B",HOSTNAME,""))
  1. I 'D0 S OUT(1)="-2,Cannot find info for """_HOSTNAME_"""." Q
  1. S N=1
  1. S X=$G(^MAG(2006.87,D0,0))
  1. S:$P(X,"^",3) N=N+1,OUT(N)="Loc="_$$STA^XUAF4($P(X,"^",3))
  1. D GWGET($G(^MAG(2006.87,D0,1)),"In")
  1. D GWGET($G(^MAG(2006.87,D0,2)),"Mo")
  1. D GWGET($G(^MAG(2006.87,D0,3)),"PL")
  1. D GWGET($G(^MAG(2006.87,D0,4)),"SL")
  1. D GWGET($G(^MAG(2006.87,D0,5)),"WL")
  1. D GWGET($G(^MAG(2006.87,D0,6)),"CP")
  1. S X=$G(^MAG(2006.87,D0,100)) S:X'="" N=N+1,OUT(N)="Ver="_X
  1. D GWGET($G(^MAG(2006.87,D0,101)),"Vw")
  1. D GWGET($G(^MAG(2006.87,D0,102)),"Ab")
  1. D GWGET($G(^MAG(2006.87,D0,103)),"CS")
  1. D GWGET($G(^MAG(2006.87,D0,104)),"Rc")
  1. D GWGET($G(^MAG(2006.87,D0,105)),"DT")
  1. S OUT(1)=N
  1. Q
  1. ;
  1. GWGET(X,K) N T
  1. Q:X=""
  1. S:$P(X,"^",2)'="" N=N+1,OUT(N)=K_"_p="_$P(X,"^",2)
  1. S T=$P(X,"^",1) Q:'T
  1. S N=N+1,OUT(N)=K_"_s="_$$STAMP(T)
  1. Q
  1. ;
  1. STAMP(T) N O,V
  1. S V=(T\1#100)_"-"_$P("JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC"," ",T\100#100)_"-"_(T\10000+1700)
  1. S O=$E($P(T,".",2)_"000000",1,6),V=V_" "_$E(O,1,2)_":"_$E(O,3,4)_":"_$E(O,5,6)
  1. Q V
  1. ;