| 1 | FSCRPCTF ;SLC/STAFF-NOIS RPC Text Finder ;5/18/98  14:58 | 
|---|
| 2 | ;;1.1;NOIS;;Sep 06, 1998 | 
|---|
| 3 | ; | 
|---|
| 4 | TEXT(IN,OUT) ; from FSCRPX (RPCTextFinder) | 
|---|
| 5 | N CNT,FIELDS,LINE,METHOD,NUM,TEXT K TEXT | 
|---|
| 6 | S METHOD=$G(^TMP("FSCRPC",$J,"INPUT",1)),FIELDS=$G(^(2)) | 
|---|
| 7 | Q:'$L(METHOD)  Q:'$L(FIELDS) | 
|---|
| 8 | S CNT=0,NUM=2 F  S NUM=$O(^TMP("FSCRPC",$J,"INPUT",NUM)) Q:NUM<1  S LINE=^(NUM) D | 
|---|
| 9 | .I '$L(LINE) Q | 
|---|
| 10 | .S CNT=CNT+1 | 
|---|
| 11 | .S TEXT(CNT)=$$UP^XLFSTR(LINE) | 
|---|
| 12 | I '$O(TEXT(0)) Q | 
|---|
| 13 | D | 
|---|
| 14 | .I METHOD=1 D CURRENT(FIELDS,.TEXT) Q | 
|---|
| 15 | .I +METHOD=2 D LAST(FIELDS,.TEXT,+$P(METHOD,";",2)) Q | 
|---|
| 16 | K TEXT | 
|---|
| 17 | Q | 
|---|
| 18 | ; | 
|---|
| 19 | CURRENT(FIELDS,TEXT) ; | 
|---|
| 20 | N CALL,CNT | 
|---|
| 21 | K ^TMP("FSC LIST",$J) | 
|---|
| 22 | S CNT=0,CALL=0 F  S CALL=$O(^TMP("FSC CURRENT LIST",$J,"C",CALL)) Q:CALL<1  D ROUTE(CALL,FIELDS,.TEXT,.CNT) | 
|---|
| 23 | K ^TMP("FSC CURRENT LIST",$J) | 
|---|
| 24 | M ^TMP("FSC CURRENT LIST",$J)=^TMP("FSC LIST",$J) | 
|---|
| 25 | K ^TMP("FSC LIST",$J) | 
|---|
| 26 | S CNT=0 F  S CNT=$O(^TMP("FSC CURRENT LIST",$J,CNT)) Q:CNT<1  S ^TMP("FSCRPC",$J,"OUTPUT",CNT)=^(CNT) | 
|---|
| 27 | Q | 
|---|
| 28 | ; | 
|---|
| 29 | LAST(FIELDS,TEXT,LAST) ; | 
|---|
| 30 | N CALL,CNT,NUM | 
|---|
| 31 | K ^TMP("FSC LIST",$J) | 
|---|
| 32 | S NUM=0,CNT=0,CALL="A" F  S CALL=$O(^FSCD("CALL",CALL),-1) Q:CALL=""  S NUM=NUM+1 Q:NUM>LAST  D ROUTE(CALL,FIELDS,.TEXT,.CNT) | 
|---|
| 33 | K ^TMP("FSC CURRENT LIST",$J) | 
|---|
| 34 | M ^TMP("FSC CURRENT LIST",$J)=^TMP("FSC LIST",$J) | 
|---|
| 35 | K ^TMP("FSC LIST",$J) | 
|---|
| 36 | S CNT=0 F  S CNT=$O(^TMP("FSC CURRENT LIST",$J,CNT)) Q:CNT<1  S ^TMP("FSCRPC",$J,"OUTPUT",CNT)=^(CNT) | 
|---|
| 37 | Q | 
|---|
| 38 | ; | 
|---|
| 39 | ROUTE(CALL,FIELDS,TEXT,CNT) ; | 
|---|
| 40 | N IEN,OK | 
|---|
| 41 | S OK=0 | 
|---|
| 42 | D | 
|---|
| 43 | .S IEN=+$G(^FSCD("CALL USER","AUC",DUZ,CALL)) | 
|---|
| 44 | .I IEN D  I OK Q | 
|---|
| 45 | ..I $P(FIELDS,U,8) D PSHORT(IEN,.TEXT,.OK) I OK Q | 
|---|
| 46 | ..I $P(FIELDS,U,9) D PLONG(IEN,.TEXT,.OK) I OK Q | 
|---|
| 47 | ..I $P(FIELDS,U,7) D PNOTE(IEN,.TEXT,.OK) I OK Q | 
|---|
| 48 | .I $P(FIELDS,U) D SUBJECT(CALL,.TEXT,.OK) I OK Q | 
|---|
| 49 | .I $P(FIELDS,U,2) D KEYWORDS(CALL,.TEXT,.OK) I OK Q | 
|---|
| 50 | .I $P(FIELDS,U,3) D PATCH(CALL,.TEXT,.OK) I OK Q | 
|---|
| 51 | .I $P(FIELDS,U,4) D DESC(CALL,.TEXT,.OK) I OK Q | 
|---|
| 52 | .I $P(FIELDS,U,5) D RES(CALL,.TEXT,.OK) I OK Q | 
|---|
| 53 | .I $P(FIELDS,U,6) D NOTES(CALL,.TEXT,.OK) I OK Q | 
|---|
| 54 | I 'OK Q | 
|---|
| 55 | S CNT=CNT+1 | 
|---|
| 56 | S ^TMP("FSC LIST",$J,CNT)=CALL_U_$$SHORT^FSCRPXUS(CALL,DUZ) | 
|---|
| 57 | S ^TMP("FSC LIST",$J,"C",CALL)=CNT | 
|---|
| 58 | Q | 
|---|
| 59 | ; | 
|---|
| 60 | SUBJECT(CALL,TEXT,OK) ; | 
|---|
| 61 | N NUM,SUBJECT | 
|---|
| 62 | S SUBJECT=$G(^FSCD("CALL",CALL,1)) | 
|---|
| 63 | I '$L(SUBJECT) Q | 
|---|
| 64 | S SUBJECT=$$UP^XLFSTR(SUBJECT) | 
|---|
| 65 | S NUM=0 F  S NUM=$O(TEXT(NUM)) Q:NUM<1  I SUBJECT[TEXT(NUM) S OK=1 Q | 
|---|
| 66 | Q | 
|---|
| 67 | ; | 
|---|
| 68 | KEYWORDS(CALL,TEXT,OK) ; | 
|---|
| 69 | N KEYWORDS,NUM | 
|---|
| 70 | S KEYWORDS=$G(^FSCD("CALL",CALL,1.5)) | 
|---|
| 71 | I '$L(KEYWORDS) Q | 
|---|
| 72 | S KEYWORDS=$$UP^XLFSTR(KEYWORDS) | 
|---|
| 73 | S NUM=0 F  S NUM=$O(TEXT(NUM)) Q:NUM<1  I KEYWORDS[TEXT(NUM) S OK=1 Q | 
|---|
| 74 | Q | 
|---|
| 75 | ; | 
|---|
| 76 | PATCH(CALL,TEXT,OK) ; | 
|---|
| 77 | N NUM,PATCH | 
|---|
| 78 | S PATCH=$P($G(^FSCD("CALL",CALL,120)),U,14) | 
|---|
| 79 | I '$L(PATCH) Q | 
|---|
| 80 | S PATCH=$$UP^XLFSTR(PATCH) | 
|---|
| 81 | S NUM=0 F  S NUM=$O(TEXT(NUM)) Q:NUM<1  I PATCH[TEXT(NUM) S OK=1 Q | 
|---|
| 82 | Q | 
|---|
| 83 | ; | 
|---|
| 84 | DESC(CALL,TEXT,OK) ; | 
|---|
| 85 | N LNUM,NUM,LINE | 
|---|
| 86 | S LNUM=0 F  S LNUM=$O(^FSCD("CALL",CALL,30,LNUM)) Q:LNUM<1  S LINE=$G(^(LNUM,0)) D  Q:OK | 
|---|
| 87 | .I '$L(LINE) Q | 
|---|
| 88 | .S LINE=$$UP^XLFSTR(LINE) | 
|---|
| 89 | .S NUM=0 F  S NUM=$O(TEXT(NUM)) Q:NUM<1  I LINE[TEXT(NUM) S OK=1 Q | 
|---|
| 90 | S LNUM=0 F  S LNUM=$O(^FSCD("CALL",CALL,30,LNUM)) Q:LNUM<1  S LINE=$G(^(LNUM,0)) D  Q:OK | 
|---|
| 91 | .I '$L(LINE) Q | 
|---|
| 92 | .S NUM=0 F  S NUM=$O(TEXT(NUM)) Q:NUM<1  I LINE[TEXT(NUM) S OK=1 Q | 
|---|
| 93 | Q | 
|---|
| 94 | ; | 
|---|
| 95 | RES(CALL,TEXT,OK) ; | 
|---|
| 96 | N LNUM,NUM,LINE | 
|---|
| 97 | S LNUM=0 F  S LNUM=$O(^FSCD("CALL",CALL,80,LNUM)) Q:LNUM<1  S LINE=$G(^(LNUM,0)) D  Q:OK | 
|---|
| 98 | .I '$L(LINE) Q | 
|---|
| 99 | .S LINE=$$UP^XLFSTR(LINE) | 
|---|
| 100 | .S NUM=0 F  S NUM=$O(TEXT(NUM)) Q:NUM<1  I LINE[TEXT(NUM) S OK=1 Q | 
|---|
| 101 | Q | 
|---|
| 102 | ; | 
|---|
| 103 | NOTES(CALL,TEXT,OK) ; | 
|---|
| 104 | N LNUM,NUM,LINE | 
|---|
| 105 | S LNUM=0 F  S LNUM=$O(^FSCD("CALL",CALL,50,LNUM)) Q:LNUM<1  S LINE=$G(^(LNUM,0)) D  Q:OK | 
|---|
| 106 | .I '$L(LINE) Q | 
|---|
| 107 | .S LINE=$$UP^XLFSTR(LINE) | 
|---|
| 108 | .S NUM=0 F  S NUM=$O(TEXT(NUM)) Q:NUM<1  I LINE[TEXT(NUM) S OK=1 Q | 
|---|
| 109 | Q | 
|---|
| 110 | ; | 
|---|
| 111 | PSHORT(IEN,TEXT,OK) ; | 
|---|
| 112 | N NUM,PSHORT | 
|---|
| 113 | S PSHORT=$P($G(^FSCD("CALL USER",IEN,0)),U,3) | 
|---|
| 114 | I '$L(PSHORT) Q | 
|---|
| 115 | S PSHORT=$$UP^XLFSTR(PSHORT) | 
|---|
| 116 | S NUM=0 F  S NUM=$O(TEXT(NUM)) Q:NUM<1  I PSHORT[TEXT(NUM) S OK=1 Q | 
|---|
| 117 | Q | 
|---|
| 118 | ; | 
|---|
| 119 | PLONG(IEN,TEXT,OK) ; | 
|---|
| 120 | N NUM,PLONG | 
|---|
| 121 | S PLONG=$G(^FSCD("CALL USR",IEN,1)) | 
|---|
| 122 | I '$L(PLONG) Q | 
|---|
| 123 | S PLONG=$$UP^XLFSTR(PLONG) | 
|---|
| 124 | S NUM=0 F  S NUM=$O(TEXT(NUM)) Q:NUM<1  I PLONG[TEXT(NUM) S OK=1 Q | 
|---|
| 125 | Q | 
|---|
| 126 | ; | 
|---|
| 127 | PNOTE(IEN,TEXT,OK) ; | 
|---|
| 128 | N LNUM,NUM,LINE | 
|---|
| 129 | S LNUM=0 F  S LNUM=$O(^FSCD("CALL USER",IEN,2,LNUM)) Q:LNUM<1  S LINE=$G(^(LNUM,0)) D  Q:OK | 
|---|
| 130 | .I '$L(LINE) Q | 
|---|
| 131 | .S LINE=$$UP^XLFSTR(LINE) | 
|---|
| 132 | .S NUM=0 F  S NUM=$O(TEXT(NUM)) Q:NUM<1  I LINE[TEXT(NUM) S OK=1 Q | 
|---|
| 133 | Q | 
|---|