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

MAGDQR21.m

Go to the documentation of this file.
  1. MAGDQR21 ;WOIFO/EDM,NST,MLH,JSL,SAF,BT,ZEB - RPCs for Query/Retrieve SetUp ; 07 DEC,2023@1:22 PM
  1. ;;3.0;IMAGING;**83,104,123,119,221,348**;Mar 19, 2002;Build 6;Apr 19, 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. GET(OUT,DEST,GATEWAY) ; RPC = MAG GET DICOM DEST
  1. N D0,D1,N,OK,X
  1. I $G(DEST)="" D Q
  1. . S N=1
  1. . S X="" F S X=$O(^MAG(2006.587,"B",X)) Q:X="" S N=N+1,OUT(N)="B^"_X
  1. . S X="" F S X=$O(^MAG(2006.587,"D",X)) Q:X="" S N=N+1,OUT(N)="D^"_X
  1. . S OUT(1)=N
  1. . Q
  1. ;
  1. S GATEWAY=$G(GATEWAY) S:GATEWAY="--All DICOM Gateways--" GATEWAY=""
  1. S D0=0,OK=0 F S D0=$O(^MAG(2006.587,D0)) Q:'D0 D Q:OK
  1. . S X=$G(^MAG(2006.587,D0,0))
  1. . Q:$P(X,"^",1)'=DEST
  1. . I GATEWAY'="",$P(X,"^",5)'=GATEWAY Q
  1. . S OK=1,N=6
  1. . S OUT(2)="2^"_$P(X,"^",2)
  1. . S OUT(3)="3^"_$P(X,"^",3)
  1. . S OUT(4)="4^"_$P(X,"^",4)
  1. . S OUT(5)="5^"_$P(X,"^",6)
  1. . S OUT(6)="6^"_$P(X,"^",7)
  1. . S D1=0 F S D1=$O(^MAG(2006.587,D0,1,D1)) Q:'D1 D
  1. . . S X=$G(^MAG(2006.587,D0,1,D1,0)) Q:$P(X,"^",1)=""
  1. . . S N=N+1,OUT(N)=X
  1. . . Q
  1. . Q
  1. S OUT(1)=N
  1. Q
  1. ;
  1. SET(OUT,DATA,DEST,GATEWAY) ; RPC = MAG SET DICOM DEST
  1. N D0,D1,I,N,P,Q,O1,O5,O7,OK,T,X
  1. I $G(DEST)="" S OUT="-1,No Destination Specified." Q
  1. ;
  1. S I="" F S I=$O(DATA(I)) Q:I="" D
  1. . S T=DATA(I) Q:T'["^"
  1. . I +T=2 S P(2)=$P(T,"^",2) Q
  1. . I +T=3 S P(3)=$P(T,"^",2) Q
  1. . I +T=4 S P(4)=$P(T,"^",2) Q
  1. . I +T=5 S P(6)=$P(T,"^",2) Q
  1. . I +T=6 S P(7)=$P(T,"^",2) Q
  1. . S Q($P(T,"^",1))=(+$P(T,"^",2))_"^"_(+$P(T,"^",3))
  1. . Q
  1. ;
  1. S OUT=0
  1. S GATEWAY=$G(GATEWAY) S:GATEWAY="--All DICOM Gateways--" GATEWAY=""
  1. S D0=0,OK=0 F S D0=$O(^MAG(2006.587,D0)) Q:'D0 D Q:OK
  1. . S X=$G(^MAG(2006.587,D0,0)),O1=$P(X,"^",1),O5=$P(X,"^",5),O7=$P(X,"^",7)
  1. . Q:O1'=DEST
  1. . I GATEWAY'="",O5'=GATEWAY Q
  1. . S:GATEWAY'="" OK=1 S OUT=OUT+1
  1. . I O1'="",O5'="",O7'="" K ^MAG(2006.587,"C",O1,O7,O5,D0)
  1. . I O5'="",O7'="" K ^MAG(2006.587,"D",O5,O7,D0)
  1. . S I="" F S I=$O(P(I)) Q:I="" S:P(I)'="" $P(X,"^",I)=P(I)
  1. . S:$G(P(7))'="" O7=P(7)
  1. . S ^MAG(2006.587,D0,0)=X
  1. . I O1'="",O5'="",O7'="" S ^MAG(2006.587,"C",O1,O7,O5,D0)=""
  1. . I O5'="",O7'="" S ^MAG(2006.587,"D",O5,O7,D0)=""
  1. . K ^MAG(2006.587,D0,1)
  1. . S D1=0,I="" F S I=$O(Q(I)) Q:I="" D
  1. . . S D1=D1+1,^MAG(2006.587,D0,1,D1,0)=I_"^"_Q(I)
  1. . . S ^MAG(2006.587,D0,1,"B",I,D1)=""
  1. . . Q
  1. . S:D1 ^MAG(2006.587,D0,1,0)="^2006.5871SA^"_D1_"^"_D1
  1. . Q
  1. Q
  1. ;
  1. TMPOUT(NAME) ; Return name of the temp
  1. N X
  1. S X=$$RTRNFMT^XWBLIB("GLOBAL ARRAY",1)
  1. S X=$NA(^TMP("MAG",$J,NAME))
  1. K @X
  1. Q X
  1. ;
  1. ;*zeb *348 add Series Description as optional return
  1. STUDY2(OUT,GROUPS,REQDFN,IMGLESS,FLAGS) ; RPC = MAG DOD GET STUDIES IEN
  1. ; CR, 5-28-09
  1. ; IMGLESS is a new flag to speed up queries: if=1 (true), just get study-level
  1. ; data, if null or zero get everything. This new flag is optional.
  1. ; BT, 01-06-12
  1. ; FLAGS is "" - Exclude Deleted records (default)
  1. ; "D" - Include Deleted records
  1. ; "S" - Include Series Description for DICOM Q/R
  1. ;
  1. ;
  1. N STUDY,INCDEL,INCSERD
  1. ;
  1. S REQDFN=$G(REQDFN)
  1. S INCDEL=$G(FLAGS)["D"
  1. ;*zeb *348 add study description as optional return
  1. S INCSERD=$G(FLAGS)["S"
  1. S IMGLESS=$G(IMGLESS)
  1. S OUT=$$TMPOUT^MAGDQR21("STUDY")
  1. S @OUT@(1)=1
  1. ;
  1. I $G(GROUPS) D CNVGRP^MAGDQR21(.GROUPS)
  1. ;
  1. D GETSTUDY^MAGDQR21(.GROUPS,.STUDY,INCDEL) ; read IENS in GROUPS and sort into STUDY by UID,IEN
  1. ;
  1. D GENOUT^MAGDQR21(.STUDY,REQDFN,IMGLESS,INCDEL,INCSERD) ; generate OUT based on STUDY
  1. ;
  1. ;update last counter
  1. S @OUT@(1)=@OUT@(1)-1
  1. Q
  1. ;
  1. CNVGRP(GROUPS) ; Add top level GROUPS value to GROUPS array
  1. ; GROUPS=10, GROUPS(1)=11, GROUPS(2)=12 becomes GROUPS(1)=11, GROUPS(2)=12, GROUPS(3)=10
  1. N LAST
  1. S LAST=$O(GROUPS(""),-1)+1
  1. S GROUPS(LAST)=GROUPS
  1. Q
  1. ;
  1. GETSTUDY(GROUPS,STUDY,INCDEL) ; Read IENS in GROUPS and sort into STUDY by UID,IEN
  1. N I,IEN
  1. S I=""
  1. F S I=$O(GROUPS(I)) Q:I="" D
  1. . S IEN=$G(GROUPS(I))
  1. . Q:'IEN
  1. . I 'INCDEL D SRTUID^MAGDQR21(IEN,.STUDY)
  1. . I INCDEL D SRTUID2^MAGDQR21(IEN,.STUDY)
  1. . Q
  1. Q
  1. ;
  1. SRTUID(IEN,STUDY) ; Sort group by UID, IEN
  1. N PARENT,UID
  1. ;get parent IEN
  1. S PARENT=$P($G(^MAG(2005,IEN,0)),"^",10)
  1. S:PARENT IEN=PARENT
  1. ;IEN now is parent IEN or Individual Image
  1. S UID=$P($G(^MAG(2005,IEN,"PACS")),"^",1) S:UID="" UID="?" ;no pacs
  1. S STUDY(UID,IEN)=""
  1. Q
  1. ;
  1. SRTUID2(IEN,STUDY) ; Sort group by UID, IEN (include Deleted Images)
  1. N PARENT,UID,MAGFIL
  1. ;get parent IEN
  1. S PARENT=$P($G(^MAG(2005,IEN,0)),"^",10)
  1. S:'PARENT PARENT=$P($G(^MAG(2005.1,IEN,0)),"^",10)
  1. S:PARENT IEN=PARENT
  1. ;IEN now is parent IEN or Individual Image
  1. S MAGFIL=$$FILE^MAGGI11(IEN)
  1. S UID=$S(MAGFIL:$P($G(^MAG(MAGFIL,IEN,"PACS")),"^",1),1:"")
  1. S:UID="" UID="?" ;no pacs
  1. S STUDY(UID,IEN)=""
  1. Q
  1. ;
  1. ;*zeb *348 pass on INCSERD to code that would actually include the series description
  1. GENOUT(STUDY,REQDFN,IMGLESS,INCDEL,INCSERD) ; Generate output in ^TMP based on STUDY array
  1. N UID,IEN
  1. S INCSERD=$G(INCSERD)
  1. ;
  1. S UID=""
  1. F S UID=$O(STUDY(UID)) Q:UID="" D
  1. . I UID="?" D Q
  1. . . S IEN=""
  1. . . F S IEN=$O(STUDY(UID,IEN)) Q:IEN="" D STUDY^MAGDQR21("",IEN,REQDFN,IMGLESS,INCDEL,INCSERD)
  1. . . Q
  1. . ;ELSE
  1. . D STUDY^MAGDQR21(UID,"",REQDFN,IMGLESS,INCDEL,INCSERD)
  1. . Q
  1. Q
  1. ;
  1. ;*zeb *348 pass on INCSERD to code that would actually include the series description
  1. STUDY(UID,IEN,REQDFN,IMGLESS,INCDEL,INCSERD) ; Generate output in ^TMP based on parameters
  1. N STUDY
  1. N SERIESARRAY ; array of series numbers for this study
  1. N TOTIMAGES ; total number of images for all series in this study
  1. N PAT ; array of IENs by patient
  1. N PATCOUNT ; array of patients, use for validation purposes, should contain only one patient
  1. N I0 ;IEN where the patient found
  1. N D0
  1. N STUMO ;Procedure array
  1. N TDCMIMG ; total number of DICOM images
  1. S INCSERD=$G(INCSERD)
  1. ;
  1. D WRTOUT^MAGDQR21("NEXT_STUDY|"_UID_"|"_IEN)
  1. ;
  1. D:UID'="" GETGPUID^MAGDQR21(UID,.STUDY,INCDEL) ;fill STUDY based on UID
  1. D:IEN GETGPIEN^MAGDQR21(IEN,.STUDY,INCDEL) ;add IEN into STUDY
  1. Q:'$O(STUDY(""))
  1. ;
  1. D GETPAT^MAGDQR21(.STUDY,.PAT,.PATCOUNT,.TOTIMAGES,.TDCMIMG,REQDFN,INCDEL) ;get images for patient
  1. Q:'$$VALPAT^MAGDQR21(UID,.PAT,.PATCOUNT,REQDFN) ;validate to make sure all images belonged to one patient
  1. ;
  1. S I0=$O(PAT(REQDFN,"")) ;include the first Image when writing out the STUDY section
  1. Q:'$$WRTIEN^MAGDQR21(UID,I0,TOTIMAGES,TDCMIMG,REQDFN)
  1. ;
  1. Q:'$$INTEGDFN^MAGDQR21(I0,REQDFN,INCDEL)
  1. ;
  1. D WRTOUT^MAGDQR21("STUDY_PAT|"_REQDFN_"|"_$S($T(GETICN^MPIF001)'="":$$GETICN^MPIF001(REQDFN),1:"-1^NO MPI")_"|"_$P($G(^DPT(REQDFN,0)),"^",1))
  1. ;
  1. ; CR, 5-28-09
  1. ; For study-level data stop here without additional checks
  1. Q:IMGLESS=1
  1. ;end of check above
  1. ;
  1. S D0=""
  1. F S D0=$O(PAT(REQDFN,D0)) Q:D0="" D WRTIMG^MAGDQR20(.SERIESARRAY,D0,REQDFN,.STUMO,INCDEL,INCSERD)
  1. D WRTMOD^MAGDQR21(.STUMO) ; list all modalities
  1. Q
  1. ;
  1. GETGPUID(UID,STUDY,INCDEL) ; Given UID, populate STUDY array with Image IEN
  1. N D0
  1. S D0=""
  1. F S D0=$O(^MAG(2005,"P",UID,D0)) Q:D0="" D
  1. . S:'$P($G(^MAG(2005,D0,0)),"^",10) STUDY(D0)=2005 ; add either Group IEN or individual IEN (not child IEN)
  1. . Q
  1. ;
  1. I INCDEL D
  1. . S D0=""
  1. . F S D0=$O(^MAG(2005.1,"P",UID,D0)) Q:D0="" D
  1. . . Q:'$$ISDEL^MAGGI11(D0)
  1. . . S:'$P($G(^MAG(2005.1,D0,0)),"^",10) STUDY(D0)=2005.1 ; add either deleted Group IEN or deleted individual IEN (not child IEN)
  1. . . Q
  1. . Q
  1. Q
  1. ;
  1. GETGPIEN(IEN,STUDY,INCDEL) ; Add IEN into STUDY (include deleted images)
  1. S:'$P($G(^MAG(2005,IEN,0)),"^",10) STUDY(IEN)=2005 ; add image IEN
  1. ;
  1. I INCDEL,$$ISDEL^MAGGI11(IEN) D
  1. . S:'$P($G(^MAG(2005.1,IEN,0)),"^",10) STUDY(IEN)=2005.1 ;add deleted image IEN
  1. . Q
  1. Q
  1. ;
  1. GETPAT(STUDY,PAT,PATCOUNT,TOTIMAGES,TDCMIMG,REQDFN,INCDEL) ; Get Total Images count and fill Patient array based on STUDY
  1. ;Input:
  1. ; STUDY - array of all images
  1. ; REQDFN - patient
  1. ; INCDEL - include Deleted Images
  1. ;Output:
  1. ; PAT - array of all images for the patient
  1. ; PATCOUNT - array to validate all images should belonged only to one patient
  1. ; TOTIMAGES - total images for the patient
  1. ; TDCMIMG - total DICOM images
  1. ;
  1. N D0,MAGFIL,DFN,ISGRP,CNT
  1. S (TOTIMAGES,TDCMIMG)=0
  1. S D0=""
  1. ;
  1. F S D0=$O(STUDY(D0)) Q:D0="" D
  1. . S MAGFIL=STUDY(D0)
  1. . S DFN=+$P($G(^MAG(MAGFIL,D0,0)),"^",7)
  1. . S PATCOUNT(DFN)=""
  1. . S:REQDFN=DFN PAT(DFN,D0)=""
  1. . ;
  1. . ;Add image count to Total Images for the study
  1. . S ISGRP=$$ISGRP^MAGDQR21(D0,INCDEL)
  1. . I 'ISGRP,REQDFN=DFN S TOTIMAGES=TOTIMAGES+1 Q
  1. . I MAGFIL=2005 D
  1. . . S CNT=$$GETGPIM^MAGDQR21(D0,REQDFN,.PATCOUNT)
  1. . . S TOTIMAGES=TOTIMAGES+$P(CNT,"^",1) ; count group images
  1. . . S TDCMIMG=TDCMIMG+$P(CNT,"^",2)
  1. . . Q
  1. . I INCDEL D
  1. . . S CNT=$$GETGPDIM^MAGDQR21(D0,REQDFN,.PATCOUNT)
  1. . . S TOTIMAGES=TOTIMAGES+$P(CNT,"^",1) ; count deleted group images
  1. . . S TDCMIMG=TDCMIMG+$P(CNT,"^",2)
  1. . . Q
  1. . Q
  1. Q
  1. ;
  1. ISGRP(D0,INCDEL) ; return 1 if D0 is a group IEN, 0 otherwise
  1. N ISGRP
  1. S ISGRP=1
  1. I 'INCDEL,'$D(^MAG(2005,D0,1)) S ISGRP=0 ; a single image (e.g., photo ID), not a group
  1. I INCDEL,'$D(^MAG(2005,D0,1)),'$D(^MAG(2005.1,D0,1)) S ISGRP=0 ; a single deleted image (e.g., photo ID), not a group
  1. Q ISGRP
  1. ;
  1. GETGPIM(D0,REQDFN,PATCOUNT) ; return total images in the group and PATCOUNT array for patient validation
  1. N D1,I0,DFN,IMGCNT,IMGCNTOT,MAGOBJTP
  1. S (IMGCNT,IMGCNTOT)=0
  1. S D1=0 ;go through all images. They should belong to one pt
  1. F S D1=$O(^MAG(2005,D0,1,D1)) Q:'D1 D
  1. . S I0=+$G(^MAG(2005,D0,1,D1,0)) Q:'I0
  1. . S DFN=+$P($G(^MAG(2005,I0,0)),"^",7)
  1. . S PATCOUNT(DFN)="" ;populate PATCOUNT with DFN for validation (DFN might be different in this case it's a corrupted record)
  1. . ; increment image count unless single pt was requested and this isn't that pt
  1. . I REQDFN'=DFN Q
  1. . S IMGCNT=IMGCNT+1
  1. . S MAGOBJTP=$P($G(^MAG(2005,I0,0)),"^",6) ; OBJECT TYPE field (#3)
  1. . S:(MAGOBJTP=100)!(MAGOBJTP=3) IMGCNTOT=IMGCNTOT+1 ; 100 - DICOM IMAGE; 3 - XRAY
  1. . Q
  1. Q IMGCNT_"^"_IMGCNTOT
  1. ;
  1. GETGPDIM(D0,REQDFN,PATCOUNT) ; return total images in the group and PATCOUNT array for patient validation
  1. N I0,DFN,IMGCNT,IMGCNTOT,MAGOBJTP
  1. S (IMGCNT,IMGCNTOT)=0
  1. S I0="" ;go through all AUDIT images.
  1. F S I0=$O(^MAG(2005.1,"AGP",D0,I0)) Q:I0="" D
  1. . S DFN=+$P($G(^MAG(2005.1,I0,0)),"^",7)
  1. . S PATCOUNT(DFN)="" ;populate PATCOUNT with DFN for validation (DFN might be different in this case it's a corrupted record)
  1. . ; increment image count unless single pt was requested and this isn't that pt
  1. . I REQDFN'=DFN Q
  1. . S IMGCNT=IMGCNT+1
  1. . S MAGOBJTP=$P($G(^MAG(2005.1,I0,0)),"^",6) ; OBJECT TYPE field (#3)
  1. . S:(MAGOBJTP=100)!(MAGOBJTP=3) IMGCNTOT=IMGCNTOT+1 ; 100 - DICOM IMAGE; 3 - XRAY
  1. . Q
  1. Q IMGCNT_"^"_IMGCNTOT
  1. ;
  1. VALPAT(UID,PAT,PATCOUNT,REQDFN) ; Validate - should only have one patient
  1. N CONT,DFN
  1. ;
  1. S CONT=1,PATCOUNT=0
  1. S DFN="" F S DFN=$O(PATCOUNT(DFN)) Q:DFN="" S PATCOUNT=PATCOUNT+1
  1. ;
  1. I PATCOUNT>1 D
  1. . ; duplicate study instance UID?
  1. . D WRTOUT^MAGDQR21("STUDY_ERR|"_UID_"|"_PATCOUNT_" different patients")
  1. . S CONT=$S('REQDFN:0,'$D(PAT(REQDFN)):0,1:1) ;continue processing with error if patient requested found
  1. . Q
  1. ;
  1. Q CONT
  1. ;
  1. WRTIEN(UID,I0,TOTIMAGES,TDCMIMG,REQDFN) ; Output STUDY UID and IEN line
  1. N OBJGRP
  1. ;
  1. D:UID'="" WRTOUT^MAGDQR21("STUDY_UID|"_UID)
  1. I 'I0 D WRTOUT^MAGDQR21("STUDY_ERR|"_UID_"|Matching study not found for patient "_REQDFN) Q 0
  1. S OBJGRP=$$ONEGROUP^MAGDQR21(I0) ; get the first image IEN for group/image I0
  1. D WRTOUT^MAGDQR21("STUDY_IEN|"_I0_"|"_TOTIMAGES_"|"_OBJGRP_"|"_$$CPTCODE^MAGDQR21(I0)_"|"_$$GETSITE1^MAGDQR21(OBJGRP)_"|"_TDCMIMG)
  1. Q 1
  1. ;
  1. INTEGDFN(I0,REQDFN,INCDEL) ; check integrity of study record
  1. ;Return 1 if Specified DFN (REQDFN) matches study DFN (VA internal use only!)
  1. ; 0 otherwise
  1. N X,CONT,MAGFIL,QINTEG
  1. ;
  1. D CHK^MAGGSQI(.X,I0)
  1. S QINTEG='$G(X(0))
  1. D:QINTEG APDOUT^MAGDQR21("|"_$P($G(X(0)),"^",2))
  1. S CONT=1
  1. ; override QI check only if image DFN = DFN specified in call
  1. ; (VA internal only!)
  1. I QINTEG D
  1. . I 'REQDFN S CONT=0 Q
  1. . S MAGFIL=$$FILE^MAGGI11(I0)
  1. . I MAGFIL="" S CONT=0 Q
  1. . S:$P($G(^MAG(MAGFIL,I0,0)),"^",7)'=REQDFN CONT=0
  1. . Q
  1. ;
  1. Q CONT
  1. ;
  1. WRTMOD(STUMO) ; Output STUDY_MODALITY line
  1. N M,X
  1. S X="",M=""
  1. F S M=$O(STUMO(M)) Q:M="" S X=X_$S(X'="":",",1:"")_M
  1. D:X'="" WRTOUT^MAGDQR21("STUDY_MODALITY|"_X)
  1. Q
  1. ;
  1. ONEGROUP(GROUP) ; Get the first IMAGE_IEN for this group in IMAGE file (#2005)
  1. ; or IMAGE AUDIT file (#2005.1)
  1. N D1,IMGIEN,MAGNODE
  1. S MAGNODE=$$NODE^MAGGI11(GROUP)
  1. I MAGNODE="" Q "0^Error 2 - First Image not available; No Data"
  1. I '$D(@MAGNODE@(1)) Q GROUP ; a single image (e.g., photo ID), not a group
  1. S IMGIEN=""
  1. S D1=$O(@MAGNODE@(1,0))
  1. I D1>0 S IMGIEN=+$G(@MAGNODE@(1,D1,0))
  1. I IMGIEN'>0 S IMGIEN=$O(^MAG(2005.1,"AGP",GROUP,""))
  1. I IMGIEN'>0 S IMGIEN="0^Error 1 - First Image not available"
  1. Q IMGIEN
  1. ;
  1. WRTOUT(S) ; Write a new line
  1. N CNT
  1. S CNT=^TMP("MAG",$J,"STUDY",1)+1
  1. S ^TMP("MAG",$J,"STUDY",1)=CNT
  1. S ^TMP("MAG",$J,"STUDY",CNT)=S
  1. Q
  1. ;
  1. APDOUT(S) ; Append to last line
  1. N CNT
  1. S CNT=^TMP("MAG",$J,"STUDY",1)
  1. S ^TMP("MAG",$J,"STUDY",CNT)=$G(^TMP("MAG",$J,"STUDY",CNT))_S
  1. Q
  1. ;
  1. CPTCODE(MAGIEN) ; Returns CPT code by IEN (image pointer) in IMAGE file (#2005)
  1. ; or IMAGE AUDIT file (#2005.1)
  1. ; MAGIEN = IEN in IMAGE file (#2005) or IMAGE AUDIT file (#2005.1)
  1. N RAIEN,CPTCODE,MAGFILE
  1. S MAGFILE=$$FILE^MAGGI11(MAGIEN)
  1. S RAIEN=+$$GET1^DIQ(MAGFILE,MAGIEN,62,"I") ; Get PACS PROCEDURE field #62
  1. S CPTCODE=$P($G(^RAMIS(71,RAIEN,0)),"^",9) ; IA # 1174 get CPT Code
  1. Q:CPTCODE="" "" ; quit with empty code
  1. S CPTCODE=$$CPT^ICPTCOD(CPTCODE) ; IA # 1995, supported reference
  1. Q $P(CPTCODE,"^",2) ; Return the code
  1. ;
  1. GETSITE1(MAGIEN) ; Returns STATION NUMBER where the image is stored
  1. ; MAGIEN = IEN in IMAGE file (#2005)
  1. N MAGNODE,TMP,NLOCIEN,PLC
  1. N SITEIEN,SITENUM
  1. I MAGIEN'>0 Q ""
  1. D:'$D(MAGJOB("NETPLC")) NETPLCS^MAGGTU6 ; Initialize MAGJOB("NETPLC")
  1. S MAGNODE=$$NODE^MAGGI11(MAGIEN)
  1. I MAGNODE="" Q ""
  1. S TMP=$G(@MAGNODE@(0))
  1. S NLOCIEN=+$S($P(TMP,U,3):$P(TMP,U,3),1:$P(TMP,U,5)) ; Get IEN in NETWORK LOCATION file (#2005.2)
  1. S PLC=$P($G(MAGJOB("NETPLC",NLOCIEN)),U,1) ; Imaging Site Parameters IEN
  1. Q $$GETSNUM^MAGDQR21(PLC) ; Return STATION NUMBER
  1. ;
  1. GETSNUM(MAGPLC) ; Returns STATION NUMBER by Image Site Parameters IEN
  1. ; MAGPLC - IEN in IMAGING SITE PARAMETERS file (#2006.1)
  1. I MAGPLC'>0 Q ""
  1. N SITEIEN,SITENUM
  1. S SITEIEN=$P($G(^MAG(2006.1,MAGPLC,0)),U,1) ; Get Station IEN in INSTITUTION file (#4)
  1. Q:SITEIEN="" "" ; if SITE IEN is not defined return blank
  1. S SITENUM=$P($$NS^XUAF4(SITEIEN),U,2) ; IA #2171 Get Station Number
  1. Q SITENUM