1 | QACI2C ; OAKOIFO/TKW - DATA MIGRATION - BUILD LEGACY DATA TO BE MIGRATED (CONT.) ;5/1/06 12:09
|
---|
2 | ;;2.0;Patient Representative;**19**;07/25/1995;Build 55
|
---|
3 | TXTERR(FLD,LEN,REMOVEUP,NOTNULL) ; Check field for length, check for control characters
|
---|
4 | ; FLD=Field to be checked, LEN=optional max length
|
---|
5 | ; REMOVEUP=optional flag set to 1 to remove up-arrows from the text.
|
---|
6 | ; NOTNULL=optional flag set to 1 if field cannot be null.
|
---|
7 | ; Return 1 if any errors are encountered.
|
---|
8 | N L,I,X,Y,ERR S REMOVEUP=$G(REMOVEUP)
|
---|
9 | S L=$L(FLD),ERR=0
|
---|
10 | I $G(LEN),L>LEN Q 1
|
---|
11 | F I=1:1:L S X=$E(FLD,I,I) Q:ERR!(X="") D
|
---|
12 | . I REMOVEUP,X="^" S FLD=$E(FLD,1,I-1)_$E(FLD,I+1,L),I=I-1 Q
|
---|
13 | . S Y=$A(X)
|
---|
14 | . I Y>31,Y<127 Q
|
---|
15 | . S ERR=1 Q
|
---|
16 | I $G(NOTNULL),FLD="" Q 1
|
---|
17 | Q ERR
|
---|
18 | ;
|
---|
19 | CONVROC(OLDROC) ; Convert roc number to new format
|
---|
20 | I OLDROC'?3N.AN1"."6N Q ""
|
---|
21 | N NEWROC,X
|
---|
22 | ; Make sure the first part of the ROC number is a valid station number
|
---|
23 | S X=$P(OLDROC,".") Q:X="" ""
|
---|
24 | I '$$LKUP^XUAF4(X) Q ""
|
---|
25 | ; Convert the fiscal year part of the ROC number to 4 digits
|
---|
26 | S X=$E($P(OLDROC,".",2),1,2)
|
---|
27 | S X=$S(+X>9:"19"_X,1:"20"_X)
|
---|
28 | ; Build the new ROC number, adding one more digit to the sequential counter part of the ROC number.
|
---|
29 | S NEWROC=$P(OLDROC,".")_"."_X_"0"_$E($P(OLDROC,".",2),3,6)
|
---|
30 | Q NEWROC
|
---|
31 | ;
|
---|
32 | ENDELALL(PATSBY) ; Wipe out list of previously migrated reference table data
|
---|
33 | F TYPE="ROC","HL","USER","PT","CC","EMPINV","FSOS" K ^XTMP("QACMIGR",TYPE,"D")
|
---|
34 | S PATSBY=1
|
---|
35 | Q
|
---|
36 | ;
|
---|
37 | BLDTXT(ROCNO,ROCIEN,QACI0,ROCCNT,RESERR,EDITITXT,EDITRTXT) ; Build issue and resolution text into output global
|
---|
38 | ; Issue Text
|
---|
39 | N I,X,ITXTCNT,ITXTLN,ITXTLONG,OLDROC,RESERR1,RESERR2
|
---|
40 | I QACI0 N ROCCNT
|
---|
41 | S ROCCNT=1,(ITXTCNT,ITXTLN,ITXTLONG)=0
|
---|
42 | S OLDROC=$P(^QA(745.1,ROCIEN,0),"^")
|
---|
43 | F I=0:0 S I=$O(^QA(745.1,ROCIEN,4,I)) Q:'I!(ITXTLONG) S X=$G(^(I,0)) D
|
---|
44 | . I $E(X,$L(X))'=" " S X=X_" "
|
---|
45 | . I $$TXTERR(.X,256,1) D ERROC^QACI2A(OLDROC,"Issue Text node "_I_" too long or contains invalid characters") Q
|
---|
46 | . I (ITXTCNT+$L(X))>3950 D Q
|
---|
47 | .. S ITXTCNT=ITXTCNT+43,ITXTLONG=1
|
---|
48 | .. Q:QACI0
|
---|
49 | .. S ^XTMP("QACMIGR","ROC","U",ROCNO_" ",ROCCNT+1)=ROCNO_"^ITXT^ ",^(ROCCNT+2)=ROCNO_"^ITXT^ "
|
---|
50 | .. S ^XTMP("QACMIGR","ROC","U",ROCNO_" ",ROCCNT+3)=ROCNO_"^ITXT^ **** Continued in Resolution Text ****"
|
---|
51 | .. S ROCCNT=ROCCNT+3
|
---|
52 | .. Q
|
---|
53 | . S ITXTCNT=ITXTCNT+$L(X)
|
---|
54 | . S ITXTLN=I
|
---|
55 | . ; If called from ^QACI0, we just need to check the text, not save it.
|
---|
56 | . Q:QACI0
|
---|
57 | . S ROCCNT=ROCCNT+1
|
---|
58 | . S ^XTMP("QACMIGR","ROC","U",ROCNO_" ",ROCCNT)=ROCNO_"^ITXT^"_X
|
---|
59 | . Q
|
---|
60 | ;If there was no issue text, set one line of text for migration.
|
---|
61 | I ROCCNT=1,'QACI0 D
|
---|
62 | . S ROCCNT=2,EDITITXT=1
|
---|
63 | . S ^XTMP("QACMIGR","ROC","U",ROCNO_" ",2)=ROCNO_"^ITXT^No data present in this field during migration from Patient Rep. Text required for closed ROCs in PATS."
|
---|
64 | . Q
|
---|
65 | ;
|
---|
66 | ; Resolution Text
|
---|
67 | S RESERR1="Resolution Text",RESERR2=" char.(8000 maximum)"
|
---|
68 | S RESERR="0^"_RESERR1
|
---|
69 | N RTXTCNT S RTXTCNT=0
|
---|
70 | F I=0:0 S I=$O(^QA(745.1,ROCIEN,6,I)) Q:'I S X=$G(^(I,0)) D
|
---|
71 | . I $E(X,$L(X))'=" " S X=X_" "
|
---|
72 | . S RTXTCNT=RTXTCNT+$L(X)
|
---|
73 | . I $$TXTERR(.X,256,1) D ERROC^QACI2A(OLDROC,"Resolution Text Node "_I_" too long or contains invalid characters") Q
|
---|
74 | . ; If resolution text is too long, quit, but keep track of total length.
|
---|
75 | . Q:RTXTCNT>8000
|
---|
76 | . ; If called from ^QACI0, just check for errors, don't save text.
|
---|
77 | . Q:QACI0
|
---|
78 | . S ROCCNT=ROCCNT+1
|
---|
79 | . S ^XTMP("QACMIGR","ROC","U",ROCNO_" ",ROCCNT)=ROCNO_"^RTXT^"_X
|
---|
80 | . Q
|
---|
81 | S RESERR=RTXTCNT_"^"_RESERR1
|
---|
82 | I RTXTCNT>8000 D ERROC^QACI2A(OLDROC,RESERR1_"="_RTXTCNT_RESERR2)
|
---|
83 | ;
|
---|
84 | ; If issue text was too long, store it in the resolution text for migration
|
---|
85 | I ITXTLONG D
|
---|
86 | . S RESERR1="Resolution + overflow issue text"
|
---|
87 | . S RTXTCNT=RTXTCNT+76
|
---|
88 | . I 'QACI0,RTXTCNT'>8000 D
|
---|
89 | .. S ^XTMP("QACMIGR","ROC","U",ROCNO_" ",ROCCNT+1)=ROCNO_"^RTXT^ ",^(ROCCNT+2)=ROCNO_"^RTXT^ "
|
---|
90 | .. S ^XTMP("QACMIGR","ROC","U",ROCNO_" ",ROCCNT+3)=ROCNO_"^RTXT^ **** (continued) Issue Text transferred during Data Migration ****"
|
---|
91 | .. S ^XTMP("QACMIGR","ROC","U",ROCNO_" ",ROCCNT+4)=ROCNO_"^RTXT^ "
|
---|
92 | .. S ROCCNT=ROCCNT+4,EDITRTXT=1
|
---|
93 | .. Q
|
---|
94 | . ; Read through remaining issue text and append it to resolution text.
|
---|
95 | . F I=ITXTLN:0 S I=$O(^QA(745.1,ROCIEN,4,I)) Q:'I S X=$G(^(I,0)) D
|
---|
96 | .. I $E(X,$L(X))'=" " S X=X_" "
|
---|
97 | .. S RTXTCNT=RTXTCNT+$L(X)
|
---|
98 | .. I $$TXTERR(.X,256,1) D ERROC^QACI2A(OLDROC,"Issue Text Node "_I_" too long or contains invalid characters") Q
|
---|
99 | .. I QACI0!(RTXTCNT>8000) Q
|
---|
100 | .. S ROCCNT=ROCCNT+1
|
---|
101 | .. S ^XTMP("QACMIGR","ROC","U",ROCNO_" ",ROCCNT)=ROCNO_"^RTXT^"_X
|
---|
102 | .. Q
|
---|
103 | . S RTXTCNT=RTXTCNT+42
|
---|
104 | . S RESERR=RTXTCNT_"^"_RESERR1
|
---|
105 | . I RTXTCNT>8000 D ERROC^QACI2A(OLDROC,RESERR1_"="_RTXTCNT_RESERR2) Q
|
---|
106 | . Q:QACI0
|
---|
107 | . S ^XTMP("QACMIGR","ROC","U",ROCNO_" ",ROCCNT+1)=ROCNO_"^RTXT^ ",^(ROCCNT+2)=ROCNO_"^RTXT^ "
|
---|
108 | . S ^XTMP("QACMIGR","ROC","U",ROCNO_" ",ROCCNT+3)=ROCNO_"^RTXT^ **** End of overflow Issue Text ****"
|
---|
109 | . S ROCCNT=ROCCNT+3
|
---|
110 | . Q
|
---|
111 | ; Store REFER CONTACT TO list in resolution text.
|
---|
112 | Q:'$O(^QA(745.1,ROCIEN,11,0))
|
---|
113 | S RESERR1=RESERR1_" + Refer To"
|
---|
114 | S RTXTCNT=RTXTCNT+24
|
---|
115 | I 'QACI0 D
|
---|
116 | . S ^XTMP("QACMIGR","ROC","U",ROCNO_" ",ROCCNT+1)=ROCNO_"^RTXT^ ",^(ROCCNT+2)=ROCNO_"^RTXT^ "
|
---|
117 | . S ^XTMP("QACMIGR","ROC","U",ROCNO_" ",ROCCNT+3)=ROCNO_"^RTXT^** REFER CONTACT TO **"
|
---|
118 | . S ROCCNT=ROCCNT+3
|
---|
119 | . Q
|
---|
120 | F I=0:0 S I=$O(^QA(745.1,ROCIEN,11,I)) Q:'I S X=+$G(^(I,0)) D
|
---|
121 | . S X=$P($G(^VA(200,X,0)),"^")
|
---|
122 | . S RTXTCNT=RTXTCNT+$L(X)+2
|
---|
123 | . Q:QACI0!(RTXTCNT>8000)
|
---|
124 | . S ^XTMP("QACMIGR","ROC","U",ROCNO_" ",ROCCNT+1)=ROCNO_"^RTXT^ "
|
---|
125 | . S ^XTMP("QACMIGR","ROC","U",ROCNO_" ",ROCCNT+2)=ROCNO_"^RTXT^ "_X
|
---|
126 | . S ROCCNT=ROCCNT+2
|
---|
127 | . Q
|
---|
128 | S RESERR=RTXTCNT_"^"_RESERR1
|
---|
129 | I RTXTCNT>8000 D ERROC^QACI2A(OLDROC,RESERR1_"="_RTXTCNT_RESERR2)
|
---|
130 | Q
|
---|
131 | ;
|
---|
132 | ERREF(TYPE,IEN,MSG) ; Record an error on Reference Table Data
|
---|
133 | N ERRCNT S ERRCNT=$O(^XTMP("QACMIGR",TYPE,"E",IEN,"A"),-1)+1
|
---|
134 | S ^XTMP("QACMIGR",TYPE,"E",IEN,ERRCNT)=MSG Q
|
---|
135 | ;
|
---|
136 | ;
|
---|
137 | ;
|
---|