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

MAGNVQ05.m

Go to the documentation of this file.
  1. MAGNVQ05 ;WOIFO/NST - List images for a patient ; OCT 18, Sep 2017 3:59 PM
  1. ;;3.0;IMAGING;**185,221**;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. ;
  1. QUERY34(IARRAY,DFN,IMGLESS,FROMDATE,TODATE,MAGDATA) ; Query P34 database
  1. I DFN D PATIMG34(.IARRAY,DFN,IMGLESS,FROMDATE,TODATE,.MAGDATA) Q
  1. ;
  1. D STUDYQRY(.IARRAY,IMGLESS,FROMDATE,TODATE,.MAGDATA) ; Get images from P34 database by Study query
  1. Q
  1. ;
  1. PATIMG34(IARRAY,DFN,IMGLESS,FROMDATE,TODATE,MAGDATA) ; Get images from P34 database by Patient
  1. ; IARRAY = Output array with patient images
  1. ; DFN = Patient DFN
  1. ; IMGLESS = 0|1 Include images
  1. ; FROMDATE,TODATE = Capture date range of images
  1. ; .MAGDATA = Filters
  1. ;
  1. N PATIX,PROCIX,STYIX,SERIX,SOPIX,IMAGE,MAGCAPDT
  1. N ACTVIMG,CLASS,CPTCODE,EVT,FOUND,PROC,SPEC,PKG,ORIG,TYPE,TMP
  1. ;
  1. S PATIX=""
  1. F S PATIX=$O(^MAGV(2005.6,"C",DFN,PATIX)) Q:'PATIX D
  1. . S PROCIX=""
  1. . F S PROCIX=$O(^MAGV(2005.61,"C",PATIX,PROCIX)) Q:'PROCIX D
  1. . . S TMP=$G(^MAGV(2005.61,PROCIX,0))
  1. . . Q:$P(TMP,"^",5)'="A" ; not active
  1. . . I $D(MAGDATA("CPTCODE")) D Q:'FOUND ; CPT Code doesn't match
  1. . . . S CPTCODE=""
  1. . . . S ACCNUM=$P(TMP,"^",1) ; Accession number
  1. . . . S PROCTYPE=$P(TMP,"^",3) ; Procedure Type
  1. . . . S CPTCODE=$$CPTCODE(ACCNUM,PROCTYPE)
  1. . . . S FOUND=$S(CPTCODE="":0,1:$D(MAGDATA("CPTCODE",CPTCODE)))
  1. . . . Q
  1. . . S STYIX=""
  1. . . F S STYIX=$O(^MAGV(2005.62,"C",PROCIX,STYIX)) Q:'STYIX D
  1. . . . Q:$P($G(^MAGV(2005.62,STYIX,5)),"^",2)="I" ; study marked inaccessible
  1. . . . S MAGCAPDT=$P($G(^MAGV(2005.62,STYIX,2)),"^",1) ; study date time
  1. . . . Q:(MAGCAPDT<FROMDATE)!(MAGCAPDT>TODATE) ; study out of date range
  1. . . . Q:'$$FLTRSTUD(STYIX,.MAGDATA) ; Filter on study level
  1. . . . S SERIX=""
  1. . . . F S SERIX=$O(^MAGV(2005.63,"C",STYIX,SERIX)) Q:'SERIX D
  1. . . . . Q:'$$FLTRSER(SERIX,.MAGDATA) ; Filter on series level
  1. . . . . ;
  1. . . . . S ACTVIMG=0
  1. . . . . S SOPIX=""
  1. . . . . F S SOPIX=$O(^MAGV(2005.64,"C",SERIX,SOPIX)) Q:'SOPIX D Q:IMGLESS&ACTVIMG
  1. . . . . . I $D(MAGDATA("TYPE")) S TYPE=$P($G(^MAGV(2005.64,SOPIX,5)),"^",1) Q:TYPE="" Q:'$D(MAGDATA("TYPE",TYPE)) ; Type Index
  1. . . . . . S IMAGE=""
  1. . . . . . F S IMAGE=$O(^MAGV(2005.65,"C",SOPIX,IMAGE)) Q:'IMAGE D
  1. . . . . . . I $P($G(^MAGV(2005.65,IMAGE,1)),"^",5)'="I" D
  1. . . . . . . . S IARRAY(STYIX,SERIX,SOPIX,IMAGE)="",ACTVIMG=1
  1. . . . . . . . Q
  1. . . . . . . Q
  1. . . . . . Q
  1. . . . . Q
  1. . . . Q
  1. . . Q
  1. . Q
  1. Q
  1. ;
  1. CPTCODE(ACCNUM,PROCTYPE) ; Get CPT by Accession number
  1. N OSEP,ISEP,SSEP,OUT,CPTCODE,I,FOUNDC,FOUNDT
  1. I PROCTYPE'="RAD" Q ""
  1. S OSEP=$$OUTSEP^MAGVRS41,ISEP=$$INPUTSEP^MAGVRS41,SSEP=$$STATSEP^MAGVRS41
  1. D GETRPROC^MAGVRS81(.OUT,ACCNUM) ; Get radiology exam details
  1. S (FOUNDC,FOUNDT)=0
  1. S CPTCODE=""
  1. S I=""
  1. F S I=$O(OUT(I)) Q:(FOUNDC&FOUNDT)!'I D
  1. . I $P(OUT(I),OSEP,1)="PROCEDURE CODE" S CPTCODE=$P($P(OUT(I),OSEP,2),SSEP),FOUNDC=1 Q
  1. . I ($P(OUT(I),OSEP,1)="TERMINOLOGY"),($P($P(OUT(I),OSEP,2),SSEP)="CPT") S FOUNDT=1 Q
  1. . Q
  1. Q CPTCODE
  1. ;
  1. FLTRSER(SERIX,MAGDATA) ; Filter on Series level
  1. N CLASS,MODALITY,PROC,SPEC,TMP
  1. ;
  1. I $D(MAGDATA("MODALITY")) S MODALITY=$P($G(^MAGV(2005.63,SERIX,1)),"^") Q:MODALITY="" 0 Q:'$D(MAGDATA("MODALITY",MODALITY)) 0
  1. ;
  1. S TMP=$G(^MAGV(2005.63,SERIX,10))
  1. I $D(MAGDATA("CLS")) S CLASS=$P(TMP,"^",1) Q:CLASS="" 0 Q:'$D(MAGDATA("CLS",CLASS)) 0 ; CLASS INDEX
  1. I $D(MAGDATA("PROC")) S PROC=$P(TMP,"^",2) Q:PROC="" 0 Q:'$D(MAGDATA("PROC",PROC)) 0 ; PROC/EVENT INDEX
  1. I $D(MAGDATA("SPEC")) S SPEC=$P(TMP,"^",2) Q:SPEC="" 0 Q:'$D(MAGDATA("SPEC",SPEC)) 0 ; SPEC/SUBSPEC INDEX
  1. Q 1
  1. ;
  1. FLTRSTUD(STYIX,MAGDATA) ; Filter on Study level
  1. N TMP,ORIG,PKG
  1. S TMP=$G(^MAGV(2005.62,STYIX,3))
  1. I $D(MAGDATA("GDESC")) Q:$$UP^XLFSTR($P(TMP,U,1))'[MAGDATA("GDESC") 0 ; Short description
  1. I $D(MAGDATA("ORIG")) S ORIG=$P(TMP,"^",2) Q:ORIG="" 0 Q:'$D(MAGDATA("ORIG",ORIG)) 0 ; Origin Index
  1. I $D(MAGDATA("PKG")) S PKG=$$GET1^DIQ(2005.62,STYIX,"11:40","I") Q:PKG="" 0 Q:'$D(MAGDATA("PKG",PKG)) 0
  1. Q 1
  1. ;
  1. STUDYQRY(IARRAY,IMGLESS,FROMDATE,TODATE,MAGDATA) ; Get images from P34 database by Study query
  1. ; IARRAY = Output array with patient images
  1. ; IMGLESS = 0|1 Include images
  1. ; FROMDATE,TODATE = Capture date range of images
  1. ; .MAGDATA = Filters
  1. N ACTVIMG,DATEIX,IMAGE,STYIX,SERIX,SOPIX,TYPE
  1. ;
  1. S DATEIX=FROMDATE-1
  1. F S DATEIX=$O(^MAGV(2005.62,"J",DATEIX)) Q:'DATEIX!(DATEIX>TODATE) D
  1. . S STYIX=""
  1. . F S STYIX=$O(^MAGV(2005.62,"J",DATEIX,STYIX)) Q:'STYIX D
  1. . . Q:$P($G(^MAGV(2005.62,STYIX,5)),"^",2)="I" ; study marked inaccessible
  1. . . Q:'$$FLTRSTUD(STYIX,.MAGDATA) ; Filter on study level
  1. . . S SERIX=""
  1. . . F S SERIX=$O(^MAGV(2005.63,"C",STYIX,SERIX)) Q:'SERIX D
  1. . . . Q:'$$FLTRSER(SERIX,.MAGDATA) ; Filter on series level
  1. . . . ;
  1. . . . S ACTVIMG=0
  1. . . . S SOPIX=""
  1. . . . F S SOPIX=$O(^MAGV(2005.64,"C",SERIX,SOPIX)) Q:'SOPIX D Q:IMGLESS&ACTVIMG
  1. . . . . I $D(MAGDATA("TYPE")) S TYPE=$P($G(^MAGV(2005.64,SOPIX,5)),"^",1) Q:TYPE="" Q:'$D(MAGDATA("TYPE",TYPE)) ; Type Index
  1. . . . . S IMAGE=""
  1. . . . . F S IMAGE=$O(^MAGV(2005.65,"C",SOPIX,IMAGE)) Q:'IMAGE D
  1. . . . . . I $P($G(^MAGV(2005.65,IMAGE,1)),"^",5)'="I" D
  1. . . . . . . S IARRAY(STYIX,SERIX,SOPIX,IMAGE)="",ACTVIMG=1
  1. . . . . . . Q
  1. . . . . . Q
  1. . . . . Q
  1. . . . Q
  1. . . Q
  1. . Q
  1. Q