| 1 | VAQLED02 ;ALB/JFP - PDX, LOAD/EDIT,SETUP OF DIFFERENCES;01MAR93
 | 
|---|
| 2 |  ;;1.5;PATIENT DATA EXCHANGE;;NOV 17, 1993
 | 
|---|
| 3 | EP ; -- Main entry point for the list processor
 | 
|---|
| 4 |  ; -- K XQORS,VALMEVL ;(only kill on the first screen in)
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  ;D CLEAR^VALM1
 | 
|---|
| 7 |  S VAQBCK=0
 | 
|---|
| 8 |  D MAIN^VAQLED04 ; -- collects PDX data and MAS data
 | 
|---|
| 9 |  I '$D(^TMP("VAQTR",$J))!('$D(^TMP("VAQPT",$J))) D  QUIT
 | 
|---|
| 10 |  .W !,"     Error...No data collected"
 | 
|---|
| 11 |  .S VAQFLAG=1 D TRANEX
 | 
|---|
| 12 |  D EN^VALM("VAQ LED DIFFERENCES PDX6")
 | 
|---|
| 13 |  QUIT
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 | INIT ; -- Builds array of differences between PDX minimal and the local
 | 
|---|
| 16 |  ;    data stored in file 2.
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 |  K ^TMP("VAQL2",$J)
 | 
|---|
| 19 |  K ^TMP("VAQPT",$J,"ID"),^TMP("VAQTR",$J,"ID"),^TMP("VAQLD",$J)
 | 
|---|
| 20 |  D EP^VAQLED05
 | 
|---|
| 21 |  QUIT
 | 
|---|
| 22 |  ;
 | 
|---|
| 23 | HD ; -- Make header line for list processor
 | 
|---|
| 24 |  D HD1^VAQEXT02 QUIT
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 | FIELD ; -- Updates local patient file by field or fields selected
 | 
|---|
| 27 |  S (VAQFLAG,VAQUPDFL)=0
 | 
|---|
| 28 |  D SEL^VALM2
 | 
|---|
| 29 |  Q:'$D(VALMY)
 | 
|---|
| 30 |  D CLEAR^VALM1
 | 
|---|
| 31 |  S ENTRY="" K ^TMP("VAQLD",$J)
 | 
|---|
| 32 |  F  S ENTRY=$O(VALMY(ENTRY))  Q:ENTRY=""  D
 | 
|---|
| 33 |  .S SDAT=$G(^TMP("VAQIDX",$J,ENTRY))
 | 
|---|
| 34 |  .D UPDATE
 | 
|---|
| 35 |  I VAQUPDFL=1 D WORKLD
 | 
|---|
| 36 |  D EP1^VAQLED05 ; -- Redisplay
 | 
|---|
| 37 |  S VALMBCK="R"
 | 
|---|
| 38 |  S VAQBCK=1
 | 
|---|
| 39 |  QUIT
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 | UPDATE ; -- Loads fields for update
 | 
|---|
| 42 |  S DFNTR=$P(SDAT,U,1)
 | 
|---|
| 43 |  S DFNPT=$P(SDAT,U,2)
 | 
|---|
| 44 |  I DFNPT="" W !,"Local patient pointer missing... unable to upload field" QUIT
 | 
|---|
| 45 |  S (FLE,LFLE)=$P(SDAT,U,3)
 | 
|---|
| 46 |  S FLD=$P(SDAT,U,4)
 | 
|---|
| 47 |  S SEQ=$P(SDAT,U,5)
 | 
|---|
| 48 |  S MFLAG=$P(SDAT,U,6)
 | 
|---|
| 49 |  I LFLE'=2 S LFLE=2 ; -- only lock top level file
 | 
|---|
| 50 |  S LOCKFLE=$G(^DIC(LFLE,0,"GL"))
 | 
|---|
| 51 |  L +(@(LOCKFLE_DFNPT_")")):60
 | 
|---|
| 52 |  I ('$T) W !,"Could not edit entry... record locked" K LOCKFLE  QUIT
 | 
|---|
| 53 |  D:MFLAG="" UPDTER1
 | 
|---|
| 54 |  D:MFLAG="M" UPDTEM1
 | 
|---|
| 55 |  L -(@(LOCKFLE_DFNPT_")")) K LOCKFLE
 | 
|---|
| 56 |  ; -- data loaded
 | 
|---|
| 57 |  S VAQUPDFL=1
 | 
|---|
| 58 |  I '($D(Y)#2) D KILL QUIT
 | 
|---|
| 59 |  S ^TMP("VAQLD",$J,ENTRY)=FLE_"^"_FLD ; -- data not pass input transform
 | 
|---|
| 60 |  QUIT
 | 
|---|
| 61 |  ;
 | 
|---|
| 62 | UPDTER1 ;  -- Updates patient with PDX data (field by field) ** NON MUTIPLE **
 | 
|---|
| 63 |  S DIE=$G(^DIC(FLE,0,"GL"))
 | 
|---|
| 64 |  S DA=DFNPT
 | 
|---|
| 65 |  S DR=FLD_"///^S X=$G(^TMP(""VAQTR"",$J,""VALUE"",FLE,FLD,0))"
 | 
|---|
| 66 |  D ^DIE
 | 
|---|
| 67 |  K DIE,DA,DR
 | 
|---|
| 68 |  QUIT
 | 
|---|
| 69 |  ;
 | 
|---|
| 70 | UPDTEM1 ;  -- Updates patient with PDX data (field by field) ** MULTIPLE **
 | 
|---|
| 71 |  ;     Loads pointer to main file
 | 
|---|
| 72 |  S MFLE=$G(^DD(FLE,0,"UP")) ; -- main file
 | 
|---|
| 73 |  S MFLD="",MFLD=$O(^DD(MFLE,"SB",FLE,MFLD))
 | 
|---|
| 74 |  S FLD=.01
 | 
|---|
| 75 |  S DIE=$G(^DIC(MFLE,0,"GL"))
 | 
|---|
| 76 |  S DA=DFNPT
 | 
|---|
| 77 |  S DR=MFLD_"///"_$G(^TMP("VAQTR",$J,"VALUE",FLE,FLD,SEQ))
 | 
|---|
| 78 |  D UPDTEM2
 | 
|---|
| 79 |  D ^DIE
 | 
|---|
| 80 |  K DIE,DA,DR,MFLE,MFLD,VALUE
 | 
|---|
| 81 |  QUIT
 | 
|---|
| 82 |  ;
 | 
|---|
| 83 | UPDTEM2 ; -- Load fields into sub file for entry
 | 
|---|
| 84 |  F  S FLD=$O(^TMP("VAQTR",$J,"VALUE",FLE,FLD))  Q:FLD=""  D
 | 
|---|
| 85 |  .S VALUE=FLD_"///"_$G(^TMP("VAQTR",$J,"VALUE",FLE,FLD,SEQ))
 | 
|---|
| 86 |  .S DR(2,FLE)=VALUE
 | 
|---|
| 87 |  .S DR(2,FLE,FLD)=VALUE
 | 
|---|
| 88 |  QUIT
 | 
|---|
| 89 |  ;
 | 
|---|
| 90 | LOAD ;  -- Loads all different fields from PDX segment to local patient file
 | 
|---|
| 91 |  I '$D(^TMP("VAQIDX",$J)) S VALMBCK="Q"  QUIT
 | 
|---|
| 92 |  S (VAQFLAG,VAQUPDFL)=0
 | 
|---|
| 93 |  D CLEAR^VALM1
 | 
|---|
| 94 |  S ENTRY="" K ^TMP("VAQLD",$J)
 | 
|---|
| 95 |  F  S ENTRY=$O(^TMP("VAQIDX",$J,ENTRY))  Q:ENTRY=""  D
 | 
|---|
| 96 |  .S SDAT=$G(^TMP("VAQIDX",$J,ENTRY))
 | 
|---|
| 97 |  .D UPDATE
 | 
|---|
| 98 |  I VAQUPDFL=1 D WORKLD
 | 
|---|
| 99 |  D EP1^VAQLED05
 | 
|---|
| 100 |  S VALMBCK="R"
 | 
|---|
| 101 |  S VAQBCK=1
 | 
|---|
| 102 |  QUIT
 | 
|---|
| 103 |  ;
 | 
|---|
| 104 | TRANEX ; -- Pauses screen
 | 
|---|
| 105 |  D PAUSE^VALM1
 | 
|---|
| 106 |  S:'$D(VAQFLAG) VAQFLAG=""
 | 
|---|
| 107 |  S VALMBCK=$S(VAQFLAG=0:"R",1:"Q")
 | 
|---|
| 108 |  QUIT
 | 
|---|
| 109 |  ;
 | 
|---|
| 110 | WORKLD ; -- Updates workload file for update
 | 
|---|
| 111 |  S X=$$WORKDONE^VAQADS01("UPDTE",DFNTR,$G(DUZ))
 | 
|---|
| 112 |  I X<0 W !,"Error updating workload file (UPDTE)... "_$P(X,U,2)
 | 
|---|
| 113 |  I $P($G(^VAT(394.61,DFNTR,0)),U,4)=0 QUIT
 | 
|---|
| 114 |  S X=$$WORKDONE^VAQADS01("SNSTVE",DFNTR,$G(DUZ))
 | 
|---|
| 115 |  I X<0 W !,"Error updating workload file (SNSTVE)... "_$P(X,U,2)
 | 
|---|
| 116 |  QUIT
 | 
|---|
| 117 |  ;
 | 
|---|
| 118 | KILL ; --
 | 
|---|
| 119 |  K ^TMP("VAQTR",$J,"VALUE",FLE,$S(MFLAG="M":.01,1:FLD),SEQ)
 | 
|---|
| 120 |  K ^TMP("VAQPT",$J,"VALUE",FLE,$S(MFLAG="M":.01,1:FLD),SEQ)
 | 
|---|
| 121 |  QUIT
 | 
|---|
| 122 |  ;
 | 
|---|
| 123 | EXIT ; -- Note: The list processor cleans up its own variables.
 | 
|---|
| 124 |  ;          All other variables cleaned up here.
 | 
|---|
| 125 |  ;
 | 
|---|
| 126 |  K ^TMP("VAQL2",$J),^TMP("VAQIDX",$J)
 | 
|---|
| 127 |  K ^TMP("VAQPT",$J),^TMP("VAQTR",$J),^TMP("VAQLD",$J)
 | 
|---|
| 128 |  K VAQFLAG,VAQUPDFL
 | 
|---|
| 129 |  K DFNTR,DFNPT,FLE,FLD,SEQ,MFLAG,LFLE
 | 
|---|
| 130 |  Q
 | 
|---|
| 131 |  ;
 | 
|---|
| 132 | END ; -- End of code
 | 
|---|
| 133 |  QUIT
 | 
|---|