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