| [613] | 1 | VAQLED05 ;ALB/JFP,JRP - PDX, LOAD/EDIT DIFFERENCES,SCREEN;01MAR93
 | 
|---|
 | 2 |  ;;1.5;PATIENT DATA EXCHANGE;**6**;NOV 17, 1993
 | 
|---|
 | 3 | EP ; -- Main entry point
 | 
|---|
 | 4 |  W !,"Please wait while differences are found..."
 | 
|---|
 | 5 | EP1 D FLECHK^VAQUTL98,FLDCHK^VAQUTL98 ; -- Build table of excluded fields
 | 
|---|
 | 6 |  S (VAQECNT,VALMCNT)=0
 | 
|---|
 | 7 |  K ^TMP("VAQL2",$J),^TMP("VAQIDX",$J)
 | 
|---|
 | 8 |  I $D(^TMP("VAQLD",$J)) D MSG
 | 
|---|
 | 9 |  D:$D(XRTL) T0^%ZOSV ; -- Capacity start
 | 
|---|
 | 10 |  D MAIN,MULT
 | 
|---|
 | 11 |  I VAQECNT=0 D
 | 
|---|
 | 12 |  .S X=$$SETSTR^VALM1(" ","",1,80) D TMP2
 | 
|---|
 | 13 |  .S X=$$SETSTR^VALM1(" ** No differences found...","",1,80) D TMP2
 | 
|---|
 | 14 |  D EXIT
 | 
|---|
 | 15 |  S:$D(XRT0) XRTN=$T(+0) D:$D(XRT0) T1^%ZOSV ; -- Capacity stop
 | 
|---|
 | 16 |  QUIT
 | 
|---|
 | 17 |  ;
 | 
|---|
 | 18 | MAIN ; -- Loops thru patient file looking for differences by field
 | 
|---|
 | 19 |  S FLE=2,SEQ=0,(TYPE,FLD)=""
 | 
|---|
 | 20 |  F  S FLD=$O(^TMP("VAQTR",$J,"VALUE",FLE,FLD))  Q:FLD=""  D
 | 
|---|
 | 21 |  .I (FLE=2)&($D(FLD(FLD))) D KILL1  QUIT
 | 
|---|
 | 22 |  .S PDXVALUE=$G(^TMP("VAQTR",$J,"VALUE",FLE,FLD,SEQ))
 | 
|---|
 | 23 |  .I PDXVALUE="" D KILL QUIT
 | 
|---|
 | 24 |  .S PTVALUE=$G(^TMP("VAQPT",$J,"VALUE",FLE,FLD,SEQ))
 | 
|---|
 | 25 |  .I PDXVALUE=PTVALUE D KILL QUIT
 | 
|---|
 | 26 |  .D DISP1,DISP2
 | 
|---|
 | 27 |  QUIT
 | 
|---|
 | 28 |  ;
 | 
|---|
 | 29 | MULT ; -- Loop thru multiple associated with patient file
 | 
|---|
 | 30 |  S FLE=2,FLD=.01,SEQ=0,TYPE="M"
 | 
|---|
 | 31 |  F  S FLE=$O(^TMP("VAQTR",$J,"VALUE",FLE))  Q:(FLE="")  D M1
 | 
|---|
 | 32 |  QUIT
 | 
|---|
 | 33 | M1 I $D(FLE(FLE)) D KILL2 QUIT
 | 
|---|
 | 34 |  D MLOAD,MULTDIF
 | 
|---|
 | 35 |  QUIT
 | 
|---|
 | 36 |  ;
 | 
|---|
 | 37 | MLOAD ; -- Loads .01 field of multiple into an array for compare (patient)
 | 
|---|
 | 38 |  K ^TMP("PTVALUE",$J)
 | 
|---|
 | 39 |  S SEQ=""
 | 
|---|
 | 40 |  F  S SEQ=$O(^TMP("VAQPT",$J,"VALUE",FLE,FLD,SEQ))  Q:SEQ=""  D
 | 
|---|
 | 41 |  .S PTVALUE=$G(^TMP("VAQPT",$J,"VALUE",FLE,FLD,SEQ))
 | 
|---|
 | 42 |  .S:PTVALUE'="" ^TMP("PTVALUE",$J,PTVALUE)=""
 | 
|---|
 | 43 |  QUIT
 | 
|---|
 | 44 |  ;
 | 
|---|
 | 45 | MULTDIF ; -- Displays entries which do not match .01
 | 
|---|
 | 46 |  S SEQ="",FLD=.01
 | 
|---|
 | 47 |  F  S SEQ=$O(^TMP("VAQTR",$J,"VALUE",FLE,FLD,SEQ))  Q:SEQ=""  D
 | 
|---|
 | 48 |  .S PDXVALUE=$G(^TMP("VAQTR",$J,"VALUE",FLE,FLD,SEQ))
 | 
|---|
 | 49 |  .Q:PDXVALUE=""
 | 
|---|
 | 50 |  .I $D(^TMP("PTVALUE",$J,PDXVALUE)) D KF QUIT
 | 
|---|
 | 51 |  .D DISP1,DISP3,DISP4
 | 
|---|
 | 52 |  S X=$$SETSTR^VALM1(" ","",1,80) D TMP
 | 
|---|
 | 53 |  QUIT
 | 
|---|
 | 54 |  ;
 | 
|---|
 | 55 | DISP1 ; -- Display line 1
 | 
|---|
 | 56 |  S VAQECNT=VAQECNT+1
 | 
|---|
 | 57 |  S X=$$SETSTR^VALM1(VAQECNT,"",1,3)
 | 
|---|
 | 58 |  S FLDNAME="("_$P($G(^DD(FLE,FLD,0)),U,1)_")"
 | 
|---|
 | 59 |  S X=$$SETSTR^VALM1(FLDNAME,X,6,73)
 | 
|---|
 | 60 |  D TMP
 | 
|---|
 | 61 |  QUIT
 | 
|---|
 | 62 |  ;
 | 
|---|
 | 63 | DISP2 ; -- Display line 2
 | 
|---|
 | 64 |  S X=$$SETFLD^VALM1($S(PTVALUE'="":PTVALUE,1:"* no data in patient file "),"","PTVALUE")
 | 
|---|
 | 65 |  S X=$$SETFLD^VALM1($S(PDXVALUE'="":PDXVALUE,1:"* no data in PDX data file "),X,"PDXVALUE")
 | 
|---|
 | 66 |  D TMP
 | 
|---|
 | 67 |  S X=$$SETSTR^VALM1(" ","",1,80) D TMP
 | 
|---|
 | 68 |  QUIT
 | 
|---|
 | 69 |  ;
 | 
|---|
 | 70 | DISP3 ; -- Display line 3
 | 
|---|
 | 71 |  S X=$$SETFLD^VALM1("* multiple does not contain entry ","","PTVALUE")
 | 
|---|
 | 72 |  S X=$$SETFLD^VALM1(PDXVALUE,X,"PDXVALUE")
 | 
|---|
 | 73 |  D TMP
 | 
|---|
 | 74 |  QUIT
 | 
|---|
 | 75 |  ;
 | 
|---|
 | 76 | DISP4 ; -- Displays all fields associated with multiple from transaction file
 | 
|---|
 | 77 |  N FLD
 | 
|---|
 | 78 |  S FLD=.01
 | 
|---|
 | 79 |  F  S FLD=$O(^TMP("VAQTR",$J,"VALUE",FLE,FLD))  Q:FLD=""  D D41
 | 
|---|
 | 80 |  QUIT
 | 
|---|
 | 81 | D41 S PDXVALUE=$G(^TMP("VAQTR",$J,"VALUE",FLE,FLD,SEQ))
 | 
|---|
 | 82 |  S FLDNAME="  - ("_$P($G(^DD(FLE,FLD,0)),U,1)_")"
 | 
|---|
 | 83 |  S X=$$SETFLD^VALM1(FLDNAME,"","PTVALUE")
 | 
|---|
 | 84 |  S X=$$SETFLD^VALM1($S(PDXVALUE'="":PDXVALUE,1:"* no data in PDX data file "),X,"PDXVALUE")
 | 
|---|
 | 85 |  D TMP
 | 
|---|
 | 86 |  QUIT
 | 
|---|
 | 87 |  ;
 | 
|---|
 | 88 | KILL ; -- Kills entries which are not different for work arrays
 | 
|---|
 | 89 |  K ^TMP("VAQTR",$J,"VALUE",FLE,FLD,SEQ)
 | 
|---|
 | 90 |  K ^TMP("VAQPT",$J,"VALUE",FLE,FLD,SEQ)
 | 
|---|
 | 91 |  QUIT
 | 
|---|
 | 92 | KILL1 K ^TMP("VAQTR",$J,"VALUE",FLE,FLD)
 | 
|---|
 | 93 |  K ^TMP("VAQPT",$J,"VALUE",FLE,FLD)
 | 
|---|
 | 94 |  QUIT
 | 
|---|
 | 95 | KILL2 K ^TMP("VAQTR",$J,"VALUE",FLE)
 | 
|---|
 | 96 |  K ^TMP("VAQPT",$J,"VALUE",FLE)
 | 
|---|
 | 97 |  QUIT
 | 
|---|
 | 98 | KF ; -- kills fields in subfile
 | 
|---|
 | 99 |  N FLD S FLD=""
 | 
|---|
 | 100 |  F  S FLD=$O(^TMP("VAQTR",$J,"VALUE",FLE,FLD))  Q:FLD=""  D KILL
 | 
|---|
 | 101 |  QUIT
 | 
|---|
 | 102 |  ;
 | 
|---|
 | 103 | TMP ; -- Set the array used by list processor
 | 
|---|
 | 104 |  S VALMCNT=VALMCNT+1
 | 
|---|
 | 105 |  S ^TMP("VAQL2",$J,VALMCNT,0)=$E(X,1,79)
 | 
|---|
 | 106 |  S ^TMP("VAQL2",$J,"IDX",VALMCNT,VAQECNT)=""
 | 
|---|
 | 107 |  S:SEQ'="" ^TMP("VAQIDX",$J,VAQECNT)=DFNTR_"^"_DFNPT_"^"_FLE_"^"_FLD_"^"_SEQ_"^"_TYPE
 | 
|---|
 | 108 |  Q
 | 
|---|
 | 109 | MSG ; -- Displays entries not passing the input transform
 | 
|---|
 | 110 |  N ENTRY,NODE,FLDNAME,MSG,LN,X
 | 
|---|
 | 111 |  S X=$$SETSTR^VALM1(" ","",1,79) D TMP2
 | 
|---|
 | 112 |  S ENTRY=""
 | 
|---|
 | 113 |  F  S ENTRY=$O(^TMP("VAQLD",$J,ENTRY))  Q:ENTRY=""  D
 | 
|---|
 | 114 |  .S NODE=$G(^TMP("VAQLD",$J,ENTRY))
 | 
|---|
 | 115 |  .S FLDNAME=$P($G(^DD($P(NODE,U,1),$P(NODE,U,2),0)),U,1)
 | 
|---|
 | 116 |  .S MSG="* Upload of "_FLDNAME_" did not pass input transform"
 | 
|---|
 | 117 |  .S X=$$SETSTR^VALM1(MSG,"",1,79)
 | 
|---|
 | 118 |  .D TMP2
 | 
|---|
 | 119 |  S X=$$SETSTR^VALM1(" ","",1,79) D TMP2
 | 
|---|
 | 120 |  S LN=$$REPEAT^VAQUTL1("-",79)
 | 
|---|
 | 121 |  S X=$$SETSTR^VALM1(LN,"",1,79) D TMP2
 | 
|---|
 | 122 |  S X=$$SETSTR^VALM1(" ","",1,79) D TMP2
 | 
|---|
 | 123 |  K ENTRY,NODE,FLDNAME,MSG,LN,X
 | 
|---|
 | 124 |  QUIT
 | 
|---|
 | 125 |  ;
 | 
|---|
 | 126 | TMP2 ; -- Sets array for list processor for message
 | 
|---|
 | 127 |  S VALMCNT=VALMCNT+1
 | 
|---|
 | 128 |  S ^TMP("VAQL2",$J,VALMCNT,0)=$E(X,1,79)
 | 
|---|
 | 129 |  S ^TMP("VAQL2",$J,"IDX",VALMCNT,1)=""
 | 
|---|
 | 130 |  QUIT
 | 
|---|
 | 131 |  ;
 | 
|---|
 | 132 | EXIT ; -- Note: The list processor cleans up its own variables.
 | 
|---|
 | 133 |  ;          All other variables cleaned up here.
 | 
|---|
 | 134 |  K ^TMP("PTVALUE",$J)
 | 
|---|
 | 135 |  K VAQECNT,FLE,FLD,SEQ,TYPE,PDXVALUE,PTVALUE,X,FLDNAME
 | 
|---|
 | 136 |  Q
 | 
|---|
 | 137 |  ;
 | 
|---|
 | 138 | END ; -- End of code
 | 
|---|
 | 139 |  QUIT
 | 
|---|