| [613] | 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 | 
|---|