| 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
|
---|