| 1 | FSCES ;SLC/STAFF-NOIS Edit Status ;9/6/98  20:38 | 
|---|
| 2 | ;;1.1;NOIS;;Sep 06, 1998 | 
|---|
| 3 | ; | 
|---|
| 4 | STATUS(CALL,OLD,NEW,REOPEN) ; from FSCEB, FSCED, FSCEL, FSCELID, FSCELSNS, FSCLMPE1, FSCLMPES, FSCRPCEC, FSCRPCEF, FSCRPCF, FSCRPCNC | 
|---|
| 5 | Q:'$G(CALL)  Q:'$L($G(NEW)) | 
|---|
| 6 | S OLD=$G(OLD),REOPEN=+$G(REOPEN) | 
|---|
| 7 | N DEV,SUP | 
|---|
| 8 | D STATNEW(NEW,.SUP,.DEV) | 
|---|
| 9 | D CALL(CALL,OLD,NEW,REOPEN) | 
|---|
| 10 | Q | 
|---|
| 11 | ; | 
|---|
| 12 | CALL(CALL,OLD,NEW,REOPEN) ; | 
|---|
| 13 | N DA,DEV,DIE,DR,HISTORY,SUP,TIME | 
|---|
| 14 | S TIME=$$NOW^XLFDT | 
|---|
| 15 | D STATNEW(NEW,.SUP,.DEV) | 
|---|
| 16 | S DA=CALL,DIE="^FSCD(""CALL""," | 
|---|
| 17 | S DR="4///`"_SUP | 
|---|
| 18 | D RTDCHECK(CALL,.DR,SUP) | 
|---|
| 19 | S:DEV DEV="`"_DEV S:DEV="" DEV="@" | 
|---|
| 20 | S DR=DR_";4.1///"_DEV_";4.5///"_NEW_";121///"_TIME_";123///"_TIME_";124///`"_DUZ | 
|---|
| 21 | I OLD S DR=DR_";4.6///`"_OLD | 
|---|
| 22 | S HISTORY=$$HISTORY(OLD,NEW,TIME,DUZ) | 
|---|
| 23 | L +^FSCD("CALL",CALL):30 I '$T Q  ; *** needs ok | 
|---|
| 24 | I REOPEN D | 
|---|
| 25 | .S DR=DR_";2.6///"_TIME_";81///@;82///@;8///@;9///@;122///@" | 
|---|
| 26 | .D TRANSFER(CALL) ; | 
|---|
| 27 | D ^DIE | 
|---|
| 28 | D STUFF(CALL,HISTORY) | 
|---|
| 29 | L -^FSCD("CALL",CALL) | 
|---|
| 30 | D PICKUP(CALL) | 
|---|
| 31 | D STATHIST(CALL,DUZ,TIME,NEW,OLD) | 
|---|
| 32 | D MRE^FSCMR(DUZ,CALL) | 
|---|
| 33 | Q | 
|---|
| 34 | ; | 
|---|
| 35 | PICKUP(CALL) ; from FSCED, FSCELS, FSCLMPE1, FSCRPCEC, FSCRPCEF, FSCRPCNC | 
|---|
| 36 | I $P(^FSCD("CALL",CALL,120),U,22) Q | 
|---|
| 37 | I $P(^FSCD("CALL",CALL,120),U)<2970901 Q  ;** pickup times only collected after 9/1/97 | 
|---|
| 38 | I $P(^FSCD("CALL",CALL,0),U,9) D PICKSET(CALL) Q | 
|---|
| 39 | I $P(^FSCD("CALL",CALL,0),U,2)=2 D PICKSET(CALL) Q | 
|---|
| 40 | Q | 
|---|
| 41 | ; | 
|---|
| 42 | PICKSET(CALL) ; | 
|---|
| 43 | N DA,DIE,DR,NOW,PTIME,RTIME | 
|---|
| 44 | S DA=CALL,DIE="^FSCD(""CALL""," | 
|---|
| 45 | S RTIME=$P(^FSCD("CALL",CALL,120),U) | 
|---|
| 46 | S NOW=$$NOW^XLFDT | 
|---|
| 47 | S PTIME=$$FMDIFF^XLFDT(NOW,RTIME,2)/60\1 | 
|---|
| 48 | S DR="125///NOW;126///"_PTIME | 
|---|
| 49 | L +^FSCD("CALL",CALL):30 I '$T Q  ; *** needs ok | 
|---|
| 50 | D ^DIE | 
|---|
| 51 | L -^FSCD("CALL",CALL) | 
|---|
| 52 | Q | 
|---|
| 53 | ; | 
|---|
| 54 | RTDCHECK(CALL,DR,SUP) ; | 
|---|
| 55 | I $P(^FSCD("CALL",CALL,0),U,17) D | 
|---|
| 56 | .I SUP'=3 S DR=DR_";4.8///"_DT | 
|---|
| 57 | E  D | 
|---|
| 58 | .I SUP=3 D | 
|---|
| 59 | ..I $$DEVEXIST(CALL) S DR=DR_";4.9///"_DT | 
|---|
| 60 | ..S DR=DR_";4.7///"_DT_";4.8///@" | 
|---|
| 61 | Q | 
|---|
| 62 | ; | 
|---|
| 63 | DEVEXIST(CALL) ; $$(call) -> 1 if ever referred else 0 | 
|---|
| 64 | N RESULT,SUB | 
|---|
| 65 | S RESULT=0 | 
|---|
| 66 | S SUB=0 F  S SUB=$O(^FSCD("STATUS HIST","B",CALL,SUB)) Q:SUB<1  D  Q:RESULT | 
|---|
| 67 | .I $P(^FSCD("STATUS HIST",SUB,0),U,4)=3 S RESULT=1 | 
|---|
| 68 | Q RESULT | 
|---|
| 69 | ; | 
|---|
| 70 | HISTORY(OLD,NEW,TIME,USER) ; $$(old status,new status,time,person) -> formatted text | 
|---|
| 71 | I OLD Q "  Changed from "_$$VALUE^FSCGET(OLD,7100,4.5)_" to "_$$VALUE^FSCGET(NEW,7100,4.5)_" on "_$$FMTE^XLFDT(TIME)_" by "_$$VALUE^FSCGET(USER,7100,124)_"." | 
|---|
| 72 | Q "  "_$$VALUE^FSCGET(NEW,7100,4.5)_" on "_$$FMTE^XLFDT(TIME)_" by "_$$VALUE^FSCGET(USER,7100,124)_"." | 
|---|
| 73 | ; | 
|---|
| 74 | STUFF(CALL,HISTORY) ; | 
|---|
| 75 | N LINE | 
|---|
| 76 | S LINE=1+$O(^FSCD("CALL",CALL,110,"A"),-1) | 
|---|
| 77 | S ^FSCD("CALL",CALL,110,LINE,0)=HISTORY | 
|---|
| 78 | S ^FSCD("CALL",CALL,110,0)="^^"_LINE_U_LINE_U_DT_"^^" | 
|---|
| 79 | Q | 
|---|
| 80 | ; | 
|---|
| 81 | STATHIST(CALL,USER,DATE,STATUS,PREV) ; | 
|---|
| 82 | S PREV=$G(PREV) | 
|---|
| 83 | N DA,DATA,DIK,NUM | 
|---|
| 84 | S DATA=CALL_U_USER_U_DATE_U_STATUS_U_PREV | 
|---|
| 85 | S NUM=1+$P(^FSCD("STATUS HIST",0),U,3) | 
|---|
| 86 | L +^FSCD("STATUS HIST",0):30 I '$T Q  ; *** needs ok | 
|---|
| 87 | F  Q:'$D(^FSCD("STATUS HIST",NUM,0))  S NUM=NUM+1 | 
|---|
| 88 | S ^FSCD("STATUS HIST",NUM,0)=DATA | 
|---|
| 89 | S $P(^FSCD("STATUS HIST",0),U,3)=NUM,$P(^(0),U,4)=$P(^(0),U,4)+1 | 
|---|
| 90 | L -^FSCD("STATUS HIST",0) | 
|---|
| 91 | S DIK="^FSCD(""STATUS HIST"",",DA=NUM D IX1^DIK | 
|---|
| 92 | Q | 
|---|
| 93 | ; | 
|---|
| 94 | TRANSFER(CALL) ; | 
|---|
| 95 | N CNT,DATE,LINE,NUM,PERSON | 
|---|
| 96 | S DATE=$P(^FSCD("CALL",CALL,0),U,4),PERSON=$P(^(0),U,11) | 
|---|
| 97 | I 'DATE,'PERSON Q | 
|---|
| 98 | S NUM=$P(^FSCD("CALL",CALL,120),U,7)+1,$P(^(120),U,7)=NUM | 
|---|
| 99 | S LINE="("_NUM_") Call closed by "_$$VALUE^FSCGET(PERSON,7100,81)_" on "_$$VALUE^FSCGET(DATE,7100,82)_"." | 
|---|
| 100 | I '$D(^FSCD("CALL",CALL,50,0)) S ^FSCD("CALL",CALL,50,0)="^^0^0^"_DT_U | 
|---|
| 101 | S CNT=1+$O(^FSCD("CALL",CALL,50,"A"),-1) | 
|---|
| 102 | S $P(^FSCD("CALL",CALL,120),U,6)=CNT | 
|---|
| 103 | S ^FSCD("CALL",CALL,50,CNT,0)=LINE | 
|---|
| 104 | S LINE=0 F  S LINE=$O(^FSCD("CALL",CALL,80,LINE)) Q:LINE<1  S CNT=CNT+1,^FSCD("CALL",CALL,50,CNT,0)=^(LINE,0) | 
|---|
| 105 | S CNT=CNT+1,^FSCD("CALL",CALL,50,CNT,0)=" " | 
|---|
| 106 | S $P(^FSCD("CALL",CALL,50,0),U,3,4)=CNT_U_CNT | 
|---|
| 107 | K ^FSCD("CALL",CALL,80) | 
|---|
| 108 | Q | 
|---|
| 109 | ; | 
|---|
| 110 | STATNEW(NEW,SUP,DEV) ; returns sup and dev status from new status | 
|---|
| 111 | S SUP=$G(SUP),DEV=$G(DEV) | 
|---|
| 112 | I 'NEW Q | 
|---|
| 113 | I NEW=1 S SUP=1,DEV="" Q | 
|---|
| 114 | I NEW=2 S SUP=2 I DEV S DEV=2 Q | 
|---|
| 115 | I NEW=3 S SUP=3,DEV=1 Q | 
|---|
| 116 | I NEW=4 S SUP=4,DEV="" Q | 
|---|
| 117 | I NEW=5 S SUP=3,DEV=5 Q | 
|---|
| 118 | I NEW=6 S SUP=3,DEV=6 Q | 
|---|
| 119 | I NEW=7 S SUP=3,DEV=7 Q | 
|---|
| 120 | I NEW=8 S SUP=3,DEV=8 Q | 
|---|
| 121 | I NEW=9 S SUP=3,DEV=9 Q | 
|---|
| 122 | I NEW=10 S SUP=10,DEV="" Q | 
|---|
| 123 | I NEW=99 S SUP=99 I DEV S DEV=99 Q | 
|---|
| 124 | Q | 
|---|