MAGGTUX2 ;WIOFO/GEK Imaging utility to validate INDEX values. ;;3.0;IMAGING;**59**;Nov 27, 2007;Build 20 ;;Per VHA Directive 2004-038, this routine should not be modified. ;; +---------------------------------------------------------------+ ;; | Property of the US Government. | ;; | No permission to copy or redistribute this software is given. | ;; | Use of unreleased versions of this software requires the user | ;; | to execute a written test agreement with the VistA Imaging | ;; | Development Office of the Department of Veterans Affairs, | ;; | telephone (301) 734-0100. | ;; | | ;; | The Food and Drug Administration classifies this software as | ;; | a medical device. As such, it may not be changed in any way. | ;; | Modifications to this software may result in an adulterated | ;; | medical device under 21CFR820, the use of which is considered | ;; | to be a violation of US Federal Statutes. | ;; +---------------------------------------------------------------+ ;; Q INIT ; If this is a continuation, initialize the variables. ;W !,"MAGN ",MAGN I $P(^MAG(2005,0),"^",3)>$P(^XTMP(MAGN,0),"^",4) D . W !,"There are new images since this utility was last run." S IEN=$P($G(^XTMP(MAGN,0)),"^",3)+1 I IEN=1 D Q ; Already run, so start over. . S IEN="A" . W !!,"All Images were checked as of "_$$FMTE^XLFDT($P(^XTMP(MAGN,0),"^",2)) . W ! . W !,"For a summary of the last Check or Fix process use the menu option: " . W !," ""REV Review a Summary of the last Fix or Check process.""" . W !," or continue to Re-Check the Image file." W !,"Continue: where you left off, at IEN : ",IEN," Y/N //N :" R X:30 I "Nn"[$E(X) W !,"Starting over..." S IEN="A" Q W !,"Continuing from IEN: ",IEN,! S NT=$G(^XTMP(MAGN,"AANT")) S NI=$G(^XTMP(MAGN,"AANI")) S GRINT=$G(^XTMP(MAGN,"AAGRINT")) S GRINI=$G(^XTMP(MAGN,"AAGRINI")) S GO1=$G(^XTMP(MAGN,"AAGO1")) S OFX=$G(^XTMP(MAGN,"AAOFX")) S INVG=$G(^XTMP(MAGN,"AAINVG")) S INVO=$G(^XTMP(MAGN,"AAINVO")) S NOMERG=$G(^XTMP(MAGN,"AANOMERG")) S OKMERG=$G(^XTMP(MAGN,"AAOKMERG")) S FIX=$G(^XTMP(MAGN,"AAFIX")) S CRCT=$G(^XTMP(MAGN,"AACRCT")) Q TRK2 ; Keep a Count of Short Desc, transpose to compact the list. S SD=$P(N2,"^",4) S SD=$TR(SD,"0123456789+-/\.,~`!@#$%^&*()_-={}[]|:;""'<>?","") S SD=$TR(SD,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ") F Q:SD'[" " S SD=$P(SD," ",1)_" "_$P(SD," ",2,999) S SD=$$TRIM^XLFSTR(SD,"LR") S:SD="" SD="[NO SHORT DESC]" S ^XTMP(MAGN,"MAIDSD",+IXT,+IXS,+IXP,"SD",SD)=$G(^XTMP(MAGN,"MAIDSD",+IXT,+IXS,+IXP,"SD",SD))+1 Q CHKCR(N40,IEN) ; Image has Procedure/Event CR, see if it should be CT. N INDXD D GENIEN^MAGXCVI(IEN,.INDXD) I $P(INDXD,"^",4)'=RADCT Q S CRCT=CRCT+1 I COMMIT D . S FIX=FIX+1 . S $P(^MAG(2005,IEN,40),"^",4)=RADCT . D ENTRY^MAGLOG("INDEX-CR",DUZ,IEN,"TUX59",MDFN,1) . Q Q CHK45(N40,IEN) ; Check the Origin Set of Codes. ; N40 passed by Ref, it may be changed in here. N ORG,NORG S ORG=$P(N40,"^",6) I "VNFD"[ORG Q ; Valid ; get it's first Char. S $P(N40,"^",6)=$S("VNFD"[$E(ORG):$E(ORG),1:"") S OFX=OFX+1 I COMMIT D . S FIX=FIX+1 . S ^MAG(2005,IEN,40)=N40 . D ENTRY^MAGLOG("INDEX-45",DUZ,IEN,"TUX59",MDFN,1) . Q Q VALIND ;Validate the interdependency between Type, Spec, Proc/Event for Entries that have a TYpe. K MRY I $$VALTUX2^MAGGTUX3(.MRY,IXT,IXS,IXP) Q ; Valid Type <-> Spec <-> Proc ; Keep list of Generated or User entered invalid Type<->Spec<->Proc I $D(^MAGIXCVT(2006.96,IEN)) S ^XTMP(MAGN,"MAIDXG",+IXT,+IXS,+IXP)=$G(^XTMP(MAGN,"MAIDXG",+IXT,+IXS,+IXP))+1,INVG=INVG+1 E S ^XTMP(MAGN,"MAIDXO",+IXT,+IXS,+IXP)=$G(^XTMP(MAGN,"MAIDXO",+IXT,+IXS,+IXP))+1,INVO=INVO+1 D TRK2 Q VALMERG(O40,N40) ; N40 Passed by Ref. ; if the merged Proc-Spec in New 40 Node (N40) are not valid, ; Then just take the TYPE, and revert back to old O40 Spec and Proc K MRY I $$VALTUX2^MAGGTUX3(.MRY,$P(N40,"^",3),$P(N40,"^",5),$P(N40,"^",4)) S OKMERG=OKMERG+1 Q ; Merged values are valid S NOMERG=NOMERG+1 S $P(N40,"^",4,5)=$P(O40,"^",4,5) ; Put the Spec and Proc back to original way. Q