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

MAGDQR03.m

Go to the documentation of this file.
  1. MAGDQR03 ;WOIFO/EdM,MLH,JSL,SAF,BT,DAC,NST - Imaging RPCs for Query/Retrieve ; 20 Jun 2015 1:36 PM
  1. ;;3.0;IMAGING;**51,54,66,123,118,138,162**;Mar 19, 2002;Build 22;Jun 20 2015
  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. ; When RESULT^MAGDQR03 is called, the following input parameters
  1. ; should be properly defined:
  1. ; TYPE = R(adiology) or C(onsult)
  1. ; REQ = array of element tags being queried for
  1. ; RESULT = pointer into results global (#2006.5732)
  1. ; MAGIEN = pointer into the Image File (#2005)
  1. ; MAGDFN = pointer into the Patient File (#2)
  1. ; MAGRORD = second level pointer into the Rad/Nuc Med Patient File (#70)
  1. ; (Radiology orders only)
  1. ; MAGINTERP = third level pointer into the Rad/Nuc Med Patient File (#70)
  1. ; (Radiology orders only)
  1. ;
  1. ; This routine contains code to calculate values for DICOM Tags
  1. ; that can be derived from those two pointers.
  1. ; All other DICOM Tags are computed in MAGDQR06.
  1. ; (This routine does the things that are the same for all images.
  1. ; MAGDQR06 differentiates between Radiology, Consults, and anything else.)
  1. ;
  1. RESULT(TYPE,REQ,RESULT,MAGIEN,MAGDUZ,MAGDFN,MAGRORD,MAGINTERP,ERROR,FATAL) ;
  1. D ; validate input parameters
  1. . I "^R^C^N^"'[("^"_TYPE_"^") D ERR^MAGDQRUE("Study type (radiology/consult/new DB) not defined") Q
  1. . I '$G(RESULT) D ERR^MAGDQRUE("Invalid query result set "_RESULT_" specified") Q
  1. . I $D(MAGIEN),($D(^MAG(2005,MAGIEN)))!($D(^MAGV(2005.64,MAGIEN)))
  1. . E D ERR^MAGDQRUE("Invalid image ID "_MAGIEN_" specified for result") Q
  1. . I $D(MAGDFN),$D(^DPT(MAGDFN))
  1. . E D ERR^MAGDQRUE("Invalid patient ID "_MAGDFN_" specified for result") Q
  1. . I TYPE="R",'$G(MAGRORD) D Q
  1. . . D ERR^MAGDQRUE("Invalid Radiology order number "_MAGRORD_" specified")
  1. . . Q
  1. . I TYPE="R",'$G(MAGINTERP) D Q
  1. . . D ERR^MAGDQRUE("Invalid Radiology interpretation "_MAGINTERP_" specified")
  1. . . Q
  1. . Q
  1. I $D(^TMP("MAG",$J,"ERR")) D ERRLOG^MAGDQRUE Q
  1. ;
  1. N E,L,OK,V,X,T
  1. N SENSEMP ; ----- sensitive/employee flag
  1. N ACCESSION ; --- accession number
  1. N SERIESIX ; ---- new series index
  1. N STUDYIX ; ----- new study index
  1. N PROCIX ; ------ new procedure index
  1. N PROCREC ; ----- new procedure record
  1. N PROCIDTYP ; --- procedure ID type in new DB
  1. N Y ; ----------- patient DFN
  1. N DG1 ; --------- inpatient/outpatient indicator
  1. N DGOPT ; ------- option Name
  1. N DIC ; --------- DIC variable for the SETLOG entry point
  1. S SENSEMP=0,OK=1
  1. ;
  1. ; new specs for sens/emp patients 3/20/09 - data will be picked up, but scrubbed
  1. ; 01/2010: suspend data suppression
  1. ; 05/2011: log access using supported PIMS entry point
  1. ;
  1. S SENSEMP=SENSEMP+($$EMPL^DGSEC4(MAGDFN)=1) ; IA #3646
  1. S SENSEMP=SENSEMP+($P($G(^DGSL(38.1,MAGDFN,0)),"^",2)=1) ; IA #767
  1. S Y=MAGDFN,DG1="",DGOPT="MAG DICOM QUERY RETRIEVE^MAG CFIND QUERY",DIC(0)=""
  1. I SENSEMP D SETLOG^DGSEC
  1. S SENSEMP=0 ; sensitive/employee data suppression to be suspended as of Jan 2010
  1. ; increment (static) dummy Study Instance UID if sensitive/employee
  1. S:SENSEMP ^("DUMMY SIUID")=^TMP("MAG",$J,"DICOMQR","DUMMY SIUID")+1
  1. ;
  1. ; calculate accession number here 2/17/10, moved from Q0080050^MAGDQR06
  1. ;
  1. D:TYPE="R"
  1. . S X=$P($G(^RADPT(MAGDFN,"DT",MAGRORD,"P",MAGINTERP,0)),"^",17) ; IA # 1172
  1. . S ^TMP("MAG",$J,"ACCESSION")=$P($G(^RARPT(+X,0)),"^",1) ; IA # 1171
  1. . Q
  1. D:TYPE="C"
  1. . N R2,TIUNUM,CONSIX
  1. . S R2=$G(^MAG(2005,MAGIEN,2)) Q:R2=""
  1. . I $P(R2,"^",6)=2006.5839 D Q
  1. . . S CONSIX=$P(R2,"^",7)
  1. . . S ^TMP("MAG",$J,"ACCESSION")=$$GMRCACN^MAGDFCNV(CONSIX)
  1. . . Q
  1. . I $P(R2,"^",6)=8925 D Q
  1. . . S TIUNUM=$P(R2,"^",7) Q:'TIUNUM
  1. . . S CONSIX=$P($G(^TIU(8925,TIUNUM,14)),"^",5)
  1. . . S:$P(CONSIX,";",2)="GMR(123," ^TMP("MAG",$J,"ACCESSION")=$$GMRCACN^MAGDFCNV($P(CONSIX,";",1))
  1. . . Q
  1. . Q
  1. D:TYPE="N"
  1. . S STUDYIX=$$STUDYIX^MAGUE004(MAGIEN) Q:'STUDYIX
  1. . S PROCIX=$P($G(^MAGV(2005.62,STUDYIX,6)),"^",1) Q:'PROCIX
  1. . S PROCREC=$G(^MAGV(2005.61,PROCIX,0)) Q:PROCREC=""
  1. . S PROCIDTYP=$P(PROCREC,"^",3)
  1. . S ^TMP("MAG",$J,"ACCESSION")=""
  1. . D:"^RAD^CON^"[("^"_PROCIDTYP_"^")
  1. . . S ^TMP("MAG",$J,"ACCESSION")=$P(PROCREC,"^",1)
  1. . . Q
  1. . Q
  1. ;
  1. ; retrieve element values, indicate unsupported elements
  1. S T="" F S T=$O(REQ(T)) Q:T="" D
  1. . S L=$TR(T,",")
  1. . S E=$TR($E(L,1),"0123456789abcdef","QRSTUVWXYZABCDEF")
  1. . S $E(L,1)=E S:L'?8UN L=""
  1. . I L'="",$T(@L)'="" D Q
  1. . . S L=L_"(TYPE,.REQ,.V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,.OK)"
  1. . . D @L S V(T)=$G(V(T))
  1. . . Q
  1. . ; unsupported tag <> fatal error
  1. . D ERR^MAGDQRUE("Cannot calculate value for tag: """_T_""".") S ERROR=1
  1. . Q
  1. ;
  1. I $D(^TMP("MAG",$J,"ERR")) D ERRSAV^MAGDQRUE S FATAL=1 G RESULTX
  1. ;
  1. G RESULTX:'OK ; don't return result on key mismatch
  1. ;
  1. D G RESULTX:'OK ; There must be a valid Study Instance UID
  1. . N T ; P162 - Removed the new of the local V array to prevent undefined error in MAGDQR13
  1. . S T="0020,000D" D Q020000D(TYPE,.REQ,.V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,.OK)
  1. . S OK=(V(T)'="")
  1. . Q
  1. ;
  1. D SAVRSLT^MAGDQR13(RESULT,MAGDFN,MAGIEN,.V)
  1. ;
  1. RESULTX ; single exit point
  1. Q
  1. ;
  1. COMPARE(TAG,ACTUAL) N LOC,TMP,WILD
  1. Q:'$G(REQ(TAG)) 1
  1. S WILD=$G(REQ(TAG,1)) Q:WILD="" 0
  1. Q:$G(ACTUAL)="" 0
  1. S LOC(ACTUAL)=""
  1. Q $$MATCHD(WILD,"LOC(LOOP)","TMP(LOOP)")
  1. ;
  1. MATCH1(X,Y) N I,M
  1. F Q:X="" Q:Y="" D
  1. . I $E(X,1)=$E(Y,1) S X=$E(X,2,$L(X)),Y=$E(Y,2,$L(Y)) Q
  1. . I $E(Y,1)="?" S X=$E(X,2,$L(X)),Y=$E(Y,2,$L(Y)) Q
  1. . I $E(Y,1)="*" D Q:M
  1. . . I Y="*" S (X,Y)="",M=1 Q
  1. . . S Y=$E(Y,2,$L(Y)),M=0
  1. . . F I=1:1:$L(X) I $$MATCH1($E(X,I,$L(X)),Y) S M=1,X=$E(X,I,$L(X)) Q
  1. . . Q
  1. . S X="!",Y=""
  1. . Q
  1. S:$TR(Y,"*")="" Y="" Q:X'="" 0 Q:Y'="" 0
  1. Q 1
  1. ;
  1. MATCHD(WILDCARD,STRUCTUR,FOUND) N C,LOOP,L1,L9,SEEK,X,Y
  1. ; -- Scans a structure,
  1. ; reports entries in @STRUCTUR that match WILDCARD;
  1. ; the result is reported in local array @FOUND
  1. S C=0
  1. S L1=$P($P(WILDCARD,"?",1),"*",1),L9=L1_"~"
  1. I L1=WILDCARD D Q C
  1. . S LOOP=L1
  1. . I $D(@STRUCTUR) S @FOUND="",C=C+1 Q
  1. . Q
  1. S LOOP=L1 F D S LOOP=$O(@STRUCTUR) Q:LOOP="" Q:LOOP]]L9
  1. . Q:LOOP="" Q:'$D(@STRUCTUR)
  1. . Q:'$$MATCH1(LOOP,WILDCARD)
  1. . S @FOUND="",C=C+1
  1. . Q
  1. Q C
  1. ;
  1. Q0080018(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;U Image Instance UID
  1. ; sensitive/employee?
  1. I SENSEMP D Q ; yes, scrub
  1. . S V(T)="1.2.840.113754.2.1.3.1.1.1.1.66."_$G(^TMP("MAG",$J,"DICOMQR","DUMMY SIUID"))
  1. . Q
  1. ; no
  1. N SOPUID
  1. S V(T)=""
  1. D:MAGIEN'=""
  1. . I (TYPE="R")!(TYPE="C") D Q
  1. . . S V(T)=$P($G(^MAG(2005,MAGIEN,"PACS")),"^",1)
  1. . . S SOPUID=$P($G(^MAG(2005,MAGIEN,"SOP")),"^",2)
  1. . . S:SOPUID'="" V(T)=SOPUID
  1. . . Q
  1. . I TYPE="N" D Q
  1. . . S V(T)=$P($G(^MAGV(2005.64,MAGIEN,0)),"^",1)
  1. . . Q
  1. . Q
  1. Q
  1. ;
  1. Q0080020(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;R Study Date
  1. ; sensitive/employee?
  1. N STUDYIX
  1. I SENSEMP D Q ; yes, scrub
  1. . N I,REQDT S I=$O(REQ(T,"")) S:I REQDT=$TR($P($G(REQ(T,I)),"-",1),"*")
  1. . S V(T)=$S($G(REQDT)?8N:REQDT,1:$$DT^XLFDT+17000000)
  1. . Q
  1. ; no
  1. S V(T)=""
  1. D:MAGIEN
  1. . I (TYPE="R")!(TYPE="C") D Q
  1. . . S V(T)=$P($G(^MAG(2005,MAGIEN,2)),"^",5)
  1. . . Q
  1. . I TYPE="N" D Q
  1. . . S STUDYIX=$$STUDYIX^MAGUE004(MAGIEN) Q:'STUDYIX
  1. . . S V(T)=$P($G(^MAGV(2005.62,STUDYIX,2)),"^",1)
  1. . . Q
  1. . Q
  1. S:V(T) V(T)=V(T)\1+17000000
  1. Q
  1. ;
  1. Q0080030(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;R Study Time
  1. ; sensitive/employee?
  1. I SENSEMP D Q ; yes, scrub
  1. . N I,REQTM S I=$O(REQ(T,"")) S:I REQTM=$TR($P($G(REQ(T,I)),"-",1),"*")
  1. . S V(T)=$S($G(REQTM)?6N:REQTM,1:$E($P($$NOW^XLFDT,".",2)_"000000",1,6))
  1. . Q
  1. ; no
  1. S V(T)=""
  1. D:MAGIEN
  1. . I (TYPE="R")!(TYPE="C") D Q
  1. . . S V(T)=$P($G(^MAG(2005,MAGIEN,2)),"^",5)
  1. . . Q
  1. . I TYPE="N" D Q
  1. . . S STUDYIX=$$STUDYIX^MAGUE004(MAGIEN) Q:'STUDYIX
  1. . . S V(T)=$P($G(^MAGV(2005.62,STUDYIX,2)),"^",1)
  1. . . Q
  1. . Q
  1. S:V(T) V(T)=$TR($J("."_$P(V(T),".",2)*1E6,6)," ",0)
  1. Q
  1. ;
  1. Q0080050(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;R Accession Number
  1. D Q0080050^MAGDQR06(TYPE,.REQ,.V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,.OK)
  1. Q
  1. ;
  1. Q0100010(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;R Patient's Name
  1. ; No IA needed, PIMS 5.3
  1. S V(T)=$S('SENSEMP:$P($G(^DPT(MAGDFN,0)),"^",1),1:"IMAGPATIENT,SENSITIVE")
  1. S V(T)=$$VA2DCM^MAGDQR01(V(T))
  1. Q
  1. ;
  1. Q0100020(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;R Patient ID
  1. N DFN,VA
  1. S DFN=MAGDFN
  1. D PID^VADPT6 ; ICR supported #10062
  1. S V(T)=$TR(VA("PID"),"-")
  1. Q
  1. ;
  1. Q0200010(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;R Study ID
  1. D Q0200010^MAGDQR06(TYPE,.REQ,.V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,.OK)
  1. Q
  1. ;
  1. Q020000D(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;U Study Instance UID
  1. D Q020000D^MAGDQR09(TYPE,.REQ,.V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,.OK) ; overflow
  1. Q
  1. ;
  1. Q020000E(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;U Series Instance UID
  1. Q ; not for study level query
  1. D Q020000E^MAGDQR09(TYPE,.REQ,.V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,.OK) ; overflow
  1. Q
  1. ;
  1. Q0080052(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;O Query Level
  1. N I
  1. S I=$O(REQ(T,"")),V(T)=""
  1. S:I'="" V(T)=$G(REQ(T,I))
  1. Q
  1. ;
  1. Q0080061(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;O Modalities in Study
  1. D Q0080061^MAGDQR09(TYPE,.REQ,.V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,.OK) ; overflow
  1. Q
  1. ;
  1. Q0080062(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;O SOP Classes in Study
  1. D Q0080062^MAGDQR06(TYPE,.REQ,.V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,.OK)
  1. Q
  1. ;
  1. Q0080090(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;O Referring Physician's Name
  1. D Q0080090^MAGDQR06(TYPE,.REQ,.V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,.OK)
  1. Q
  1. ;
  1. Q0081030(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;O Study Description
  1. D Q0081030^MAGDQR06(TYPE,.REQ,.V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,.OK)
  1. Q
  1. ;
  1. Q0081032(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;O Procedure Code Sequence
  1. Q
  1. ;
  1. Q0080100(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;O >Code Value
  1. D Q0080100^MAGDQR06(TYPE,.REQ,.V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,.OK)
  1. Q
  1. ;
  1. Q0080102(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;O >Coding Scheme Designator
  1. S V("0008,1030",1,T)="C4"
  1. Q
  1. ;
  1. Q0080103(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;O >Coding Scheme Version
  1. S V("0008,1030",1,T)=4
  1. Q
  1. ;
  1. Q0080104(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;O >Code Meaning
  1. D Q0080104^MAGDQR06(TYPE,.REQ,.V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,.OK)
  1. Q
  1. ;
  1. Q0081060(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;O Name of Physician(s) Reading Study
  1. D Q0081060^MAGDQR06(TYPE,.REQ,.V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,.OK)
  1. Q
  1. ;
  1. Q0081080(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;O Admitting Diagnosis Description
  1. D Q0081080^MAGDQR06(TYPE,.REQ,.V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,.OK)
  1. Q
  1. ;
  1. Q0100021(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;O Issuer of Patient ID
  1. S V(T)="USSSA"
  1. S:'$$COMPARE(T,V(T)) OK=0
  1. Q
  1. ;
  1. Q0100030(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;O Patient's Birth Date
  1. ; sensitive/employee?
  1. I SENSEMP D Q ; yes, scrub
  1. . N I,REQDT S I=$O(REQ(T,"")) S:I REQDT=$TR($P($G(REQ(T,I)),"-",1),"*")
  1. . S V(T)=$S($G(REQDT)?8N:REQDT,1:$$DT^XLFDT+17000000)
  1. . Q
  1. ; no
  1. S V(T)=$P($G(^DPT(MAGDFN,0)),"^",3)\1+17000000
  1. I $E(V(T),5,6)="00" S V(T)="" ; invalid month for DICOM
  1. I $E(V(T),7,8)="00" S V(T)="" ; invalid year for DICOM
  1. S:'$$COMPARE(T,V(T)) OK=0
  1. Q
  1. ;
  1. Q0100032(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;O Patient's Birth Time
  1. ; sensitive/employee?
  1. I SENSEMP D Q ; yes, scrub
  1. . N I,REQTM S I=$O(REQ(T,"")) S:I REQTM=$TR($P($G(REQ(T,I)),"-",1),"*")
  1. . S V(T)=$S($G(REQTM)?6N:REQTM,1:$E($P($$NOW^XLFDT,".",2)_"000000",1,6))
  1. . Q
  1. ; no
  1. S V(T)=$TR($J("."_$P($P($G(^DPT(MAGDFN,0)),"^",3),".",2)*1E6,6)," ",0)
  1. S:V(T)="000000" V(T)="" ; no time on file
  1. S:'$$COMPARE(T,V(T)) OK=0
  1. Q
  1. ;
  1. Q0100040(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;O Patient's Sex
  1. ; sensitive/employee?
  1. I SENSEMP D Q ; yes, scrub
  1. . N I S I=$O(REQ(T,"")) S V(T)=$S(I:$S($G(REQ(T,I))]"":REQ(T,I),1:"O"),1:"O")
  1. . Q
  1. ; no
  1. S V(T)=$P($G(^DPT(MAGDFN,0)),"^",2)
  1. S:'$$COMPARE(T,V(T)) OK=0
  1. Q
  1. ;
  1. Q0101000(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;O Other Patient IDs
  1. ; sensitive/employee?
  1. I SENSEMP S V(T)="000001234" Q ; yes, scrub
  1. ; no
  1. N DFN,I,VA,VADPT
  1. S DFN=MAGDFN D DEM^VADPT ; Supported IA (#10061)
  1. S X=$P(^DPT(DFN,0),"^",9) S:X'="" DFN(X)=""
  1. S:$G(VA("PID"))'="" DFN(VA("PID"))=""
  1. S:$G(VA("BID"))'="" DFN(VA("BID"))=""
  1. I $T(GETICN^MPIF001)'="" S X=$$GETICN^MPIF001(DFN) S:+X DFN(X)="" ; Supported IA (#2701)
  1. S I=0,X="" F S X=$O(DFN(X)) Q:X="" S I=I+1,V(T,I)=X
  1. ;;;S:'$$COMPARE(T,V(T)) OK=0
  1. Q
  1. ;
  1. Q0101001(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;O Other Patient Names
  1. ; sensitive/employee?
  1. I SENSEMP S V(T)="IMAGPATIENT,SENSITIVE" Q ; yes, scrub
  1. ; no
  1. N D1,I
  1. S (I,D1)=0 F S D1=$O(^DPT(MAGDFN,0.01,D1)) Q:'D1 D
  1. . S X=$P($G(^DPT(MAGDFN,0.01,D1,0)),"^",1)
  1. . S:X'="" I=I+1,V(T,I)=X
  1. . Q
  1. ;;;S:'$$COMPARE(T,V(T)) OK=0
  1. Q
  1. ;
  1. Q0101010(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;O Patient's Age
  1. ; sensitive/employee?
  1. I SENSEMP D Q ; yes, scrub
  1. . N I S I=$O(REQ(T,"")) S:I V(T)=$S($G(REQ(T,I))]"":REQ(T,I),1:"")
  1. . Q
  1. ; no
  1. N DOB,FROM,YEARS
  1. S DOB=$P($G(^DPT(MAGDFN,0)),"^",3)
  1. S FROM=$P($G(^DPT(MAGDFN,.35)),"^",1) S:'FROM FROM=DT
  1. S YEARS=$E(FROM,1,3)-$E(DOB,1,3)
  1. S:$E(FROM,4,7)<$E(DOB,4,7) YEARS=YEARS-1
  1. S V(T)=($P($J(YEARS/1000,0,3),".",2))_"Y"
  1. ;;;S:'$$COMPARE(T,V(T)) OK=0
  1. Q
  1. ;
  1. Q0101020(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;O Patient's Size
  1. ; sensitive/employee?
  1. I SENSEMP D Q ; yes, scrub
  1. . N I S I=$O(REQ(T,"")) S:I V(T)=$S($G(REQ(T,I))]"":REQ(T,I),1:"")
  1. . Q
  1. ; no
  1. S V(T)=$P($G(^DPT(MAGDFN,57)),"^",1) ; height in cm - field not populated
  1. S:'$$COMPARE(T,V(T)) OK=0
  1. Q
  1. ;
  1. Q0101030(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;O Patient's Weight
  1. ; sensitive/employee?
  1. I SENSEMP D Q ; yes, scrub
  1. . N I S I=$O(REQ(T,"")) S:I V(T)=$S($G(REQ(T,I))]"":REQ(T,I),1:"")
  1. . Q
  1. ; no
  1. S V(T)=$P($G(^DPT(MAGDFN,57)),"^",2) ; weight in kg - field not populated
  1. S:'$$COMPARE(T,V(T)) OK=0
  1. Q
  1. ;
  1. Q0102160(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;O Ethnic Group
  1. ; sensitive/employee?
  1. I SENSEMP D Q ; yes, scrub
  1. . N I S I=$O(REQ(T,"")) S:I V(T)=$S($G(REQ(T,I))]"":REQ(T,I),1:"")
  1. . Q
  1. ; no
  1. S V(T)=$P($G(^DPT(MAGDFN,0)),"^",6)
  1. S:'$$COMPARE(T,V(T)) OK=0
  1. Q
  1. ;
  1. Q0102180(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;O Occupation
  1. ; sensitive/employee?
  1. I SENSEMP D Q ; yes, scrub
  1. . N I S I=$O(REQ(T,"")) S:I V(T)=$S($G(REQ(T,I))]"":REQ(T,I),1:"")
  1. . Q
  1. ; no
  1. S V(T)=$P($G(^DPT(MAGDFN,0)),"^",7)
  1. S:'$$COMPARE(T,V(T)) OK=0
  1. Q
  1. ;
  1. Q01021B0(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;O Additional Patient History
  1. D Q01021B0^MAGDQR06(TYPE,.REQ,.V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,.OK)
  1. Q
  1. ;
  1. Q0104000(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;O Patient Comments
  1. D Q0104000^MAGDQR06(TYPE,.REQ,.V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,.OK)
  1. Q
  1. ;
  1. Q0201206(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;O Number of Study Related Series
  1. D Q0201206^MAGDQR09(TYPE,.REQ,.V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,.OK) ; overflow
  1. Q
  1. ;
  1. Q0201208(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;O Number of Study Related Instances
  1. D Q0201208^MAGDQR09(TYPE,.REQ,.V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,.OK) ; overflow
  1. Q
  1. ;
  1. U008010C(TYPE,REQ,V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,OK) ;O Interpretation Author
  1. D U008010C^MAGDQR06(TYPE,.REQ,.V,T,MAGDFN,MAGIEN,MAGRORD,MAGINTERP,SENSEMP,.OK)
  1. Q