| 1 | MAGGTUX2 ;WIOFO/GEK Imaging utility to validate INDEX values.
 | 
|---|
| 2 |  ;;3.0;IMAGING;**59**;Nov 27, 2007;Build 20
 | 
|---|
| 3 |  ;;Per VHA Directive 2004-038, this routine should not be modified.
 | 
|---|
| 4 |  ;; +---------------------------------------------------------------+
 | 
|---|
| 5 |  ;; | Property of the US Government.                                |
 | 
|---|
| 6 |  ;; | No permission to copy or redistribute this software is given. |
 | 
|---|
| 7 |  ;; | Use of unreleased versions of this software requires the user |
 | 
|---|
| 8 |  ;; | to execute a written test agreement with the VistA Imaging    |
 | 
|---|
| 9 |  ;; | Development Office of the Department of Veterans Affairs,     |
 | 
|---|
| 10 |  ;; | telephone (301) 734-0100.                                     |
 | 
|---|
| 11 |  ;; |                                                               |
 | 
|---|
| 12 |  ;; | The Food and Drug Administration classifies this software as  |
 | 
|---|
| 13 |  ;; | a medical device.  As such, it may not be changed in any way. |
 | 
|---|
| 14 |  ;; | Modifications to this software may result in an adulterated   |
 | 
|---|
| 15 |  ;; | medical device under 21CFR820, the use of which is considered |
 | 
|---|
| 16 |  ;; | to be a violation of US Federal Statutes.                     |
 | 
|---|
| 17 |  ;; +---------------------------------------------------------------+
 | 
|---|
| 18 |  ;;
 | 
|---|
| 19 |  Q
 | 
|---|
| 20 | INIT ; If this is a continuation, initialize the variables.
 | 
|---|
| 21 |  ;W !,"MAGN ",MAGN
 | 
|---|
| 22 |  I $P(^MAG(2005,0),"^",3)>$P(^XTMP(MAGN,0),"^",4) D
 | 
|---|
| 23 |  . W !,"There are new images since this utility was last run."
 | 
|---|
| 24 |  S IEN=$P($G(^XTMP(MAGN,0)),"^",3)+1 I IEN=1 D  Q  ; Already run, so start over.
 | 
|---|
| 25 |  . S IEN="A"
 | 
|---|
| 26 |  . W !!,"All Images were checked as of "_$$FMTE^XLFDT($P(^XTMP(MAGN,0),"^",2))
 | 
|---|
| 27 |  . W !
 | 
|---|
| 28 |  . W !,"For a summary of the last Check or Fix process use the menu option: "
 | 
|---|
| 29 |  . W !,"     ""REV    Review a Summary of the last Fix or Check process."""
 | 
|---|
| 30 |  . W !,"  or continue to Re-Check the Image file."
 | 
|---|
| 31 |  W !,"Continue: where you left off, at IEN : ",IEN,"   Y/N   //N  :" R X:30
 | 
|---|
| 32 |  I "Nn"[$E(X) W !,"Starting over..." S IEN="A" Q
 | 
|---|
| 33 |  W !,"Continuing from IEN: ",IEN,!
 | 
|---|
| 34 |  S NT=$G(^XTMP(MAGN,"AANT"))
 | 
|---|
| 35 |  S NI=$G(^XTMP(MAGN,"AANI"))
 | 
|---|
| 36 |  S GRINT=$G(^XTMP(MAGN,"AAGRINT"))
 | 
|---|
| 37 |  S GRINI=$G(^XTMP(MAGN,"AAGRINI"))
 | 
|---|
| 38 |  S GO1=$G(^XTMP(MAGN,"AAGO1"))
 | 
|---|
| 39 |  S OFX=$G(^XTMP(MAGN,"AAOFX"))
 | 
|---|
| 40 |  S INVG=$G(^XTMP(MAGN,"AAINVG"))
 | 
|---|
| 41 |  S INVO=$G(^XTMP(MAGN,"AAINVO"))
 | 
|---|
| 42 |  S NOMERG=$G(^XTMP(MAGN,"AANOMERG"))
 | 
|---|
| 43 |  S OKMERG=$G(^XTMP(MAGN,"AAOKMERG"))
 | 
|---|
| 44 |  S FIX=$G(^XTMP(MAGN,"AAFIX"))
 | 
|---|
| 45 |  S CRCT=$G(^XTMP(MAGN,"AACRCT"))
 | 
|---|
| 46 |  Q
 | 
|---|
| 47 | TRK2 ; Keep a Count of Short Desc, transpose to compact the list.
 | 
|---|
| 48 |  S SD=$P(N2,"^",4)
 | 
|---|
| 49 |  S SD=$TR(SD,"0123456789+-/\.,~`!@#$%^&*()_-={}[]|:;""'<>?","")
 | 
|---|
| 50 |  S SD=$TR(SD,"abcdefghijklmnopqrstuvwxyz","ABCDEFGHIJKLMNOPQRSTUVWXYZ")
 | 
|---|
| 51 |  F  Q:SD'["  "  S SD=$P(SD,"  ",1)_" "_$P(SD,"  ",2,999)
 | 
|---|
| 52 |  S SD=$$TRIM^XLFSTR(SD,"LR")
 | 
|---|
| 53 |  S:SD="" SD="[NO SHORT DESC]"
 | 
|---|
| 54 |  S ^XTMP(MAGN,"MAIDSD",+IXT,+IXS,+IXP,"SD",SD)=$G(^XTMP(MAGN,"MAIDSD",+IXT,+IXS,+IXP,"SD",SD))+1
 | 
|---|
| 55 |  Q
 | 
|---|
| 56 | CHKCR(N40,IEN) ; Image has Procedure/Event CR, see if it should be CT.
 | 
|---|
| 57 |  N INDXD
 | 
|---|
| 58 |  D GENIEN^MAGXCVI(IEN,.INDXD)
 | 
|---|
| 59 |  I $P(INDXD,"^",4)'=RADCT Q
 | 
|---|
| 60 |  S CRCT=CRCT+1
 | 
|---|
| 61 |  I COMMIT D
 | 
|---|
| 62 |  . S FIX=FIX+1
 | 
|---|
| 63 |  . S $P(^MAG(2005,IEN,40),"^",4)=RADCT
 | 
|---|
| 64 |  . D ENTRY^MAGLOG("INDEX-CR",DUZ,IEN,"TUX59",MDFN,1)
 | 
|---|
| 65 |  . Q
 | 
|---|
| 66 |  Q
 | 
|---|
| 67 | CHK45(N40,IEN) ;  Check the Origin Set of Codes.
 | 
|---|
| 68 |  ; N40 passed by Ref, it may be changed in here.
 | 
|---|
| 69 |  N ORG,NORG
 | 
|---|
| 70 |  S ORG=$P(N40,"^",6)
 | 
|---|
| 71 |  I "VNFD"[ORG Q  ; Valid
 | 
|---|
| 72 |  ; get it's first Char.
 | 
|---|
| 73 |  S $P(N40,"^",6)=$S("VNFD"[$E(ORG):$E(ORG),1:"")
 | 
|---|
| 74 |  S OFX=OFX+1
 | 
|---|
| 75 |  I COMMIT D
 | 
|---|
| 76 |  . S FIX=FIX+1
 | 
|---|
| 77 |  . S ^MAG(2005,IEN,40)=N40
 | 
|---|
| 78 |  . D ENTRY^MAGLOG("INDEX-45",DUZ,IEN,"TUX59",MDFN,1)
 | 
|---|
| 79 |  . Q
 | 
|---|
| 80 |  Q
 | 
|---|
| 81 | VALIND ;Validate the interdependency between Type, Spec, Proc/Event for Entries that have a TYpe.
 | 
|---|
| 82 |  K MRY I $$VALTUX2^MAGGTUX3(.MRY,IXT,IXS,IXP) Q  ; Valid Type <-> Spec <-> Proc
 | 
|---|
| 83 |  ; Keep list of Generated or User entered invalid Type<->Spec<->Proc
 | 
|---|
| 84 |  I $D(^MAGIXCVT(2006.96,IEN)) S ^XTMP(MAGN,"MAIDXG",+IXT,+IXS,+IXP)=$G(^XTMP(MAGN,"MAIDXG",+IXT,+IXS,+IXP))+1,INVG=INVG+1
 | 
|---|
| 85 |  E  S ^XTMP(MAGN,"MAIDXO",+IXT,+IXS,+IXP)=$G(^XTMP(MAGN,"MAIDXO",+IXT,+IXS,+IXP))+1,INVO=INVO+1
 | 
|---|
| 86 |  D TRK2
 | 
|---|
| 87 |  Q
 | 
|---|
| 88 | VALMERG(O40,N40) ; N40 Passed by Ref.
 | 
|---|
| 89 |  ; if the merged Proc-Spec in New 40 Node (N40) are not valid,
 | 
|---|
| 90 |  ; Then just take the TYPE, and revert back to old O40 Spec and Proc
 | 
|---|
| 91 |  K MRY
 | 
|---|
| 92 |  I $$VALTUX2^MAGGTUX3(.MRY,$P(N40,"^",3),$P(N40,"^",5),$P(N40,"^",4)) S OKMERG=OKMERG+1 Q  ; Merged values are valid
 | 
|---|
| 93 |  S NOMERG=NOMERG+1
 | 
|---|
| 94 |  S $P(N40,"^",4,5)=$P(O40,"^",4,5) ; Put the Spec and Proc back to original way.
 | 
|---|
| 95 |  Q
 | 
|---|