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

MAGVRS51.m

Go to the documentation of this file.
  1. MAGVRS51 ;WOIFO/DAC/JSL/NST - Utilities for RPC calls for DICOM file processing ; 7 Jun 2012 2:43 PM
  1. ;;3.0;IMAGING;**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. OUTSEP() ; Name value separator for output data ie. NAME|TESTPATIENT
  1. Q "|"
  1. MULTISEP() ; Name value separator for multiple option values ie. READ|1`WRITE|1`DELETE|0
  1. Q "="
  1. STATSEP() ; Status and Result separator ie. -3``No record IEN
  1. Q "`"
  1. INPUTSEP() ; Name value separator for input data ie. NAME`TESTPATIENT
  1. Q "`"
  1. DCRCTSET(OUT,ATTS) ; Set DICOM Correct data into file 2006.575
  1. N FDA,ERR,IENS,STUDYUID,IEN,FIELDERR
  1. S IENS="+1,"
  1. S OSEP=$$OUTSEP,ISEP=$$INPUTSEP,SSEP=$$STATSEP
  1. D SETFDA^MAGVRS44(2006.575,.ATTS,IENS,.FDA,.FIELDERR)
  1. S FILEPATH=$G(FDA(2006.575,"+1,",.01))
  1. I FILEPATH="" S OUT="-1"_SSEP_"No FILEPATH identified" Q
  1. I $D(^MAGD(2006.575,"B",FILEPATH)) S OUT="-4"_SSEP_"Non-unique FILEPATH" Q
  1. S STUDYUID=$G(FDA(2006.575,"+1,",9)) S LOCATION=$G(FDA(2006.575,"+1,",36))
  1. K FDA(2006.575,"+1,",9),FDA(2006.575,"+1,",36)
  1. D UPDATE^DIE("","FDA","","ERR")
  1. S IEN=$O(^MAGD(2006.575,"B",FILEPATH,"")) ; New Record IEN
  1. S OUT="0"_SSEP_$G(FIELDERR)_SSEP_IEN ; Set return ouput to IEN of new record
  1. K FDA
  1. I $D(ERR("DIERR",1,"TEXT",1)) S OUT="-2"_SSEP_$G(ERR("DIERR",1,"TEXT",1))
  1. K ERR
  1. ;Must re-file with Study UID after location has been set to create "F" (location & Study UID) x-ref
  1. S FDA(2006.575,IEN_",",9)=1
  1. D FILE^DIE("","FDA","ERR")
  1. K FDA,ERR
  1. I $D(ERR("DIERR",1,"TEXT",1)) S OUT="-3"_SSEP_"Related record:"_$G(ERR("DIERR",1,"TEXT",1))
  1. ;
  1. ;Must re-file with Study UID after location has been set to create "F" (location & Study UID) x-ref
  1. S FDA(2006.575,IEN_",",36)=LOCATION
  1. D FILE^DIE("","FDA","ERR")
  1. I $D(ERR("DIERR",1,"TEXT",1)) S OUT="-3"_SSEP_"Related record:"_$G(ERR("DIERR",1,"TEXT",1))
  1. K FDA,ERR
  1. ;
  1. ;Must re-file with Study UID after location has been set to create "F" (location & Study UID) x-ref
  1. S FDA(2006.575,IEN_",",9)=STUDYUID
  1. D FILE^DIE("","FDA","ERR")
  1. K FDA,ERR
  1. I $D(ERR("DIERR",1,"TEXT",1)) S OUT="-3"_SSEP_"Related record:"_$G(ERR("DIERR",1,"TEXT",1))
  1. ;
  1. Q
  1. DCRCTGET(OUT,MACHID) ; Get DICOM Correct data from file 2006.575
  1. ; Return record data for all fixed and deleted images of machine ID provided
  1. N IEN,J,RIEN,DOB,DFN,ICN,SEX,VADM,PATLOOK,SERVTYPE,CASENUMB,NEWCASE
  1. S OSEP=$$OUTSEP,ISEP=$$INPUTSEP,SSEP=$$STATSEP,J=2,IEN=0,OUT(1)="0"_SSEP_SSEP
  1. F S IEN=$O(^MAGD(2006.575,IEN)) Q:+IEN=0 D
  1. . ; Return deleted records
  1. . I ($P($G(^MAGD(2006.575,IEN,0)),U,6)=1)&(MACHID=$P($G(^MAGD(2006.575,IEN,1)),U,4)) D Q
  1. . . S OUT(J)="FILEPATH"_OSEP_$P($G(^MAGD(2006.575,IEN,0)),U,1)_SSEP,J=J+1
  1. . . S OUT(J)="DELETE FLAG"_OSEP_1_SSEP,J=J+1
  1. . . Q
  1. . I (+$G(^MAGD(2006.575,IEN,"FIXD"))'=1)!(MACHID'=$P($G(^MAGD(2006.575,IEN,1)),U,4)) Q ; Loop through all DICOM failed images
  1. . D REFRESH(.OUT,IEN,.J)
  1. . D REFRESHF(.OUT,IEN,.J)
  1. . S RIEN=""
  1. . I $D(^MAGD(2006.575,IEN,"RLATE")) D ; RLATE - Related images loop
  1. . . F S RIEN=$O(^MAGD(2006.575,IEN,"RLATE","B",RIEN)) Q:RIEN="" D
  1. . . . D REFRESH(.OUT,RIEN,.J)
  1. . . . D REFRESHF(.OUT,IEN,.J)
  1. . . . Q
  1. . . Q
  1. . ; Look up patient DFN and retrieve DOB, Sex, ICN.
  1. . S SERVTYPE=$$GET1^DIQ(2006.575,IEN,"SERVICE TYPE","E"),CASENUMB=$$GET1^DIQ(2006.575,IEN,"CASE NUMB","E"),NEWCASE=$$GET1^DIQ(2006.575,IEN,"NEWCASE NO","E")
  1. . I NEWCASE'="" S CASENUMB=NEWCASE
  1. . I (SERVTYPE="")!(CASENUMB="") Q
  1. . S PATLOOK=$$LOOKUP^MAGVORDR(CASENUMB,SERVTYPE)
  1. . I +PATLOOK=-1 Q
  1. . S DFN=$P(PATLOOK,"~",2)
  1. . D DEM^VADPT ; Supported IA (#10061)
  1. . S OUT(J)="DFN"_OSEP_DFN_SSEP,J=J+1
  1. . S DOB=+$$FM2IDF^MAGVAF01(+($G(VADM(3))))
  1. . S SEX=$E($G(VADM(5)))
  1. . S ICN=$S($T(GETICN^MPIF001)'="":$$GETICN^MPIF001(DFN),1:"-1^NO MPI") ; Supported IA (#2701)
  1. . S OUT(J)="DATE OF BIRTH"_OSEP_DOB_SSEP,J=J+1
  1. . S OUT(J)="SEX"_OSEP_SEX_SSEP,J=J+1
  1. . S OUT(J)="INTEGRATION CONTROL NUMBER"_OSEP_ICN_SSEP,J=J+1
  1. . Q
  1. Q
  1. DCRCTCNT(OUT,MACHID,SERVTYPE) ; Get count of entries with provided machine id and service type from file 2006.575
  1. N IEN,J,ISEP,SSEP
  1. S OSEP=$$OUTSEP,ISEP=$$INPUTSEP,SSEP=$$STATSEP,J=0,IEN=0
  1. I MACHID="" S OUT="-1"_SSEP_"No machine ID provided" Q
  1. I SERVTYPE="" S OUT="-1"_SSEP_"No service type provided" Q
  1. F S IEN=$O(^MAGD(2006.575,IEN)) Q:+IEN=0 D
  1. . I (MACHID=$P($G(^MAGD(2006.575,IEN,1)),U,4))&(SERVTYPE=$$GET1^DIQ(2006.575,IEN,"SERVICE TYPE","E")) S J=J+1 ; Loop through all unfixed images
  1. S OUT="0"_SSEP_SSEP_J
  1. Q
  1. DCRCTDEL(OUT,FILEPATH) ; DICOM Correct delete entry
  1. N IEN,LOCATION,OSEP
  1. S OSEP=$$OUTSEP,ISEP=$$INPUTSEP,SSEP=$$STATSEP
  1. I $G(FILEPATH)="" S OUT="-1"_SSEP_"No Filepath provided" Q
  1. S IEN=$O(^MAGD(2006.575,"B",FILEPATH,""))
  1. I IEN="" Q
  1. S FDA(2006.575,IEN_",",.01)="@"
  1. D UPDATE^DIE("","FDA",IEN,"ERR")
  1. I $D(ERR("DIERR")) S OUT="-2"_SSEP_$G(ERR("DIERR",1,"TEXT",1))
  1. I $G(OUT)="" S OUT="0"_SSEP_SSEP
  1. Q
  1. REFRESH(OUT,IEN,OUTI) ; Retrieve specified file data attributes
  1. N FIELD,MULTOUT,FDA,ERR,OSEP,ISEP,SSEP,MULTIPLE,DATETIME,UIEN,UFILE,FORMAT,FILE
  1. N MULTOUT,FDA,VALUE
  1. S OSEP=$$OUTSEP,SSEP=$$STATSEP,FILE=2006.575,FIELD=""
  1. F FIELD="FILEPATH","GATEWAY LOCATION","IMAGE UID","STUDY UID","SERVICE TYPE" D
  1. . I FIELD["IEN" S FORMAT="I" ; If the field is an IEN pointer return the internal format rather than the UID string
  1. . S VALUE=$$GET1^DIQ(FILE,IEN,FIELD,"E")
  1. . S OUT(OUTI)=FIELD_OSEP_VALUE_SSEP
  1. . S OUTI=OUTI+1
  1. . Q
  1. Q
  1. REFRESHF(OUT,IEN,OUTI) ; Retrieve specified file data attributes - Fixed Information
  1. N FIELD,MULTOUT,FDA,ERR,OSEP,ISEP,SSEP,MULTIPLE,DATETIME,UIEN,UFILE,FORMAT,FILE
  1. N MULTOUT,FDA,VALUE
  1. S OUT(OUTI)=""
  1. S OSEP=$$OUTSEP,SSEP=$$STATSEP,FILE=2006.575,FIELD=""
  1. F FIELD="INSTRUMENT NAME","MACHINE ID","NEWNME","NEWSSN","NEWCASE NO","NEW PROC IEN","NEW PROCEDURE" D
  1. . I FIELD["IEN" S FORMAT="I" ; If the field is an IEN pointer return the internal format rather than the UID string
  1. . S VALUE=$$GET1^DIQ(FILE,IEN,FIELD,"E")
  1. . S OUT(OUTI)=FIELD_OSEP_VALUE_SSEP
  1. . S OUTI=OUTI+1
  1. . Q
  1. Q
  1. REFRESHP(OUT,DFN,OUTI) ; Retrieve specified file data attributes - Patient Information
  1. N FIELD,MULTOUT,FDA,ERR,OSEP,ISEP,SSEP,MULTIPLE,DATETIME,UIEN,UFILE,FORMAT,FILE
  1. N MULTOUT,FDA,VALUE
  1. S OSEP=$$OUTSEP,SSEP=$$STATSEP,FILE=2,FIELD=""
  1. F FIELD="DATE OF BIRTH","SEX","INTEGRATION CONTROL NUMBER" D
  1. . I FIELD["IEN" S FORMAT="I" ; If the field is an IEN pointer return the internal format rather than the UID string
  1. . S VALUE=$$GET1^DIQ(FILE,IEN,FIELD,"E")
  1. . S OUT(OUTI)=FIELD_OSEP_VALUE_SSEP
  1. . S OUTI=OUTI+1
  1. . Q
  1. Q
  1. MULTIPLE(FILE,FIELD) ; Process multiple DB entries
  1. N MULTIPLE,FNUM
  1. S FNUM=$$FLDNUM^DILFD(FILE,FIELD)
  1. Q:FNUM="" 0
  1. S MULTIPLE=$$GET1^DID(FILE,FNUM,,"MULTIPLE-VALUED")
  1. Q MULTIPLE
  1. INTRFACE ; Entry for AE INSTANCE and SECURITY MATRIX interface
  1. N Y
  1. S Y=""
  1. W !,"DICOM AE SECURITY MATRIX APPLICATION EDIT"
  1. F Q:$G(Y)=-1 D AEINTR2(.Y)
  1. Q
  1. AEINTR2(Y) ; Edit/Add AE Instance
  1. ; Select AE Instance
  1. N NEW,I,D,IEN,DLAYGO,DIE,D0,DA,DIC,DIR,IENS,S,X,DO
  1. S DLAYGO=2006.9192
  1. S DIC="^MAGV(2006.9192,"
  1. S DIC(0)="QEALN"
  1. S DIC("W")="D OUTLINE^MAGVRS51(Y)" ; write a line in the lookup
  1. D ^DIC
  1. I Y=-1 Q
  1. S IEN=$P(Y,U,1) S NEW=$P(Y,U,3)
  1. I NEW=1 D AEINTR3(IEN,NEW)
  1. ; If entry was deleted quit
  1. I NEW'=1 D
  1. . S DIC="^MAGV(2006.9192,"
  1. . S DA=IEN
  1. . D EN^DIQ
  1. . K DIC,IENS,S,X
  1. . D AEINTR3(IEN,NEW)
  1. . Q
  1. ; Quit if entry was just deleted by user
  1. I '$D(^MAGV(2006.9192,IEN)) K DA Q
  1. S DIE=2006.9192
  1. K DIC
  1. S DA=IEN
  1. S DIC="^MAGV(2006.9192,",DIC(0)="QEAL"
  1. I NEW=1 S DR="12" D ^DIE
  1. I NEW'=1 D
  1. . ;List Services and Roles
  1. . D AEINTR6(IEN,.I)
  1. . S DIR(0)="Y",DIR("B")="NO",DIR("A")="Add/Modify/Delete Services and Roles for this entry"
  1. . D ^DIR K DIR
  1. . W !
  1. . I Y=1 S DR="12" D ^DIE
  1. K DA
  1. Q
  1. AEINTR3(IEN,NEW) ; DICOM AE SECURITY MATRIX User Interface - Allows user to add and edit AE entries
  1. N DIE,DR,DA,FDA,ERR,DIC,FLAGNAME,FLAGVALU,DIR,DLAYGO,D0,SMIEN
  1. S DIE=2006.9192
  1. I Y=-1 Q
  1. I NEW'=1 S DR=".01;1;1.1;1.3;1.4;2;2.1;3;4;6;7;8;9;10;11;13;14"
  1. I NEW=1 S DR="1//VISTA_STORAGE;1.3//NO;1.4//V;2.1;3;4"
  1. S DA=IEN
  1. D ^DIE
  1. K DIC,IENS,S,X
  1. ; Quit if entry was just deleted by user
  1. I '$D(DA) Q
  1. I NEW=1 D
  1. . S FDA(2006.9192,DA_",",6)=1
  1. . S FDA(2006.9192,DA_",",7)=1
  1. . S FDA(2006.9192,DA_",",8)=1
  1. . S FDA(2006.9192,DA_",",9)=1
  1. . S FDA(2006.9192,DA_",",10)=1
  1. . S FDA(2006.9192,DA_",",11)="RAD"
  1. . D FILE^DIE("","FDA","SMIEN")
  1. . Q
  1. ; Display default flags and default flag values for C-STORE entries
  1. I NEW=1 D
  1. . W !!,"Flag Names",?20,"Flag Values",!
  1. . W "-------------------------------",!
  1. . F J=6:1:11 D
  1. . . S FLAGNAME=$$GET1^DID(2006.9192,J,"","LABEL")
  1. . . S FLAGVALU=$$GET1^DIQ(2006.9192,DA_",",J)
  1. . . W FLAGNAME,?20,FLAGVALU,!
  1. . . Q
  1. . ;Ask the user if they accept the field defaults for the flags names and flag values
  1. . S DIR(0)="Y",DIR("B")="YES",DIR("A")="Accept these defaults"
  1. . D ^DIR K DIR
  1. . I Y'=1 S DR="6;7;8;9;10;11" D ^DIE K DIC,IENS,S,X
  1. . S DR="13;14" D ^DIE K DIC,IENS,S,X
  1. K DA
  1. Q
  1. AEINTR6(SMIEN,I) ; Display DICOM AE SECURITY MATRIX entries for a given AE Instance
  1. N DSRIEN,DSERVICE,DROLE,I
  1. S I=0,DSRIEN=0
  1. W !!
  1. F S DSRIEN=$O(^MAGV(2006.9192,SMIEN,3,DSRIEN)) Q:(DSRIEN="")!(+DSRIEN=0) D
  1. . S I=I+1
  1. . S IENS=DSRIEN_","_SMIEN_","
  1. . S DSERVICE=$$GET1^DIQ(2006.919212,IENS,.01)
  1. . S DROLE=$$GET1^DIQ(2006.919212,IENS,1)
  1. . W $P(I,U,1)_") "_DSERVICE_" "_DROLE,!
  1. . Q
  1. I I=0 W "No DICOM AE SECURITY MATRIX entries for this AE INSTANCE",!
  1. Q
  1. ;
  1. OUTLINE(Y) ; Form the output line in the DICOM AE SECURITY MATRIX Lookup
  1. N OUT,I,SUBFILE
  1. I '$D(Y) Q
  1. D GETS^DIQ(2006.9192,Y_",","12*","","OUT")
  1. ; Output the data
  1. S I="" ; IENs
  1. S SUBFILE="2006.919212"
  1. F S I=$O(OUT(SUBFILE,I)) Q:I="" D
  1. . W !,?18,$G(OUT(SUBFILE,I,.01)),?28,$G(OUT(SUBFILE,I,1))
  1. . Q
  1. Q