| 1 | QACALRT1 ;HISC/DAD-PROCESS AN ALERT ;3/23/95  10:22 | 
|---|
| 2 | ;;2.0;Patient Representative;**3,7,6,9,12**;07/25/1995 | 
|---|
| 3 | EN ; | 
|---|
| 4 | N QACDATE | 
|---|
| 5 | K QACDELET | 
|---|
| 6 | S QACX=$P(XQADATA,U),QACD0=$P(XQADATA,U,2),QACDUZ=$P(XQADATA,U,3) | 
|---|
| 7 | S QACXQAID=$P(XQAID,";") | 
|---|
| 8 | ; | 
|---|
| 9 | ; Display contact information when alert processed. | 
|---|
| 10 | S QAC=QACD0,QACRES=0 D START1^QACRPT | 
|---|
| 11 | ; | 
|---|
| 12 | S QAC=$S($D(^QA(745.1,QACD0,0))[0:1,$P($G(^(7)),U,2)="C":2,1:0) | 
|---|
| 13 | I QAC D  G EXIT | 
|---|
| 14 | . W !!?5,"*** The Patient Rep record associated with this alert" | 
|---|
| 15 | . W ?63,"***",!?5,"*** has been ",$P("deleted^closed",U,QAC) | 
|---|
| 16 | . W ".  No response needed, killing alert.",?63,"***",$C(7) | 
|---|
| 17 | . D KILLALRT | 
|---|
| 18 | . Q | 
|---|
| 19 | ; | 
|---|
| 20 | I $O(^XTMP(QACXQAID,"TXT",0)) D | 
|---|
| 21 | . W !!?5,"*** You have an unsent response to this alert. ***",$C(7) | 
|---|
| 22 | . Q | 
|---|
| 23 | ; | 
|---|
| 24 | ; Alert action (Respond / Ignore / Delete / Print) | 
|---|
| 25 | K DIR S QACACTN="" | 
|---|
| 26 | F  D  Q:QACACTN]"" | 
|---|
| 27 | . S DIR(0)="SOM^R:Respond;I:Ignore;D:Delete;P:Print" | 
|---|
| 28 | . S DIR("A")="Alert action" | 
|---|
| 29 | . S DIR("?",1)="  Enter (R)espond to enter your response to this alert." | 
|---|
| 30 | . S DIR("?",2)="  Enter (I)gnore to save this alert for a later response." | 
|---|
| 31 | . S DIR("?",3)="  Enter (D)elete to delete this alert without a response." | 
|---|
| 32 | . S DIR("?",4)="  Enter (P)rint to print the report of contact." | 
|---|
| 33 | . S DIR("?")="  Enter one of the codes listed above." | 
|---|
| 34 | . W ! D ^DIR S QACACTN=$S($D(DIRUT):U,1:Y) | 
|---|
| 35 | . I QACACTN="P" D | 
|---|
| 36 | .. S QAC=QACD0,QACRES=0 | 
|---|
| 37 | .. N QACD0,QACX,QACXQAID | 
|---|
| 38 | .. D EN^QACRPT | 
|---|
| 39 | .. S QACACTN="",DIR("B")="Ignore" | 
|---|
| 40 | .. Q | 
|---|
| 41 | . Q | 
|---|
| 42 | I (QACACTN="I")!(QACACTN=U) D SAVEALRT | 
|---|
| 43 | I QACACTN="D" S QACDELET=1 D RESPOND,KILLALRT | 
|---|
| 44 | I QACACTN="R" D RESPOND | 
|---|
| 45 | G EXIT | 
|---|
| 46 | ; | 
|---|
| 47 | RESPOND ; Get user's response | 
|---|
| 48 | I $O(^XTMP(QACXQAID,"TXT",0))'>0 K ^XTMP(QACXQAID) | 
|---|
| 49 | K DIC,DIWEPSE,DTOUT,DWLW,DWPK | 
|---|
| 50 | S ^XTMP(QACXQAID,0)=$$FMADD^XLFDT(DT,14)_U_DT | 
|---|
| 51 | I $G(QACDELET)<1 D | 
|---|
| 52 | . S DIC="^XTMP("""_QACXQAID_""",""TXT""," | 
|---|
| 53 | . D EN^DIWE | 
|---|
| 54 | I $G(QACDELET)=1 D DELMSG | 
|---|
| 55 | I $O(^XTMP(QACXQAID,"TXT",0))'>0 K ^XTMP(QACXQAID) D SAVEALRT Q | 
|---|
| 56 | I $D(DTOUT) D  Q | 
|---|
| 57 | . W $C(7),! | 
|---|
| 58 | . W !?5,"***     You have timed out while entering a response.     ***" | 
|---|
| 59 | . W !?5,"*** The text can be recovered if you re-enter the alert.  ***" | 
|---|
| 60 | . W !?5,"*** If not, it will be automatically purged in two weeks. ***" | 
|---|
| 61 | . D SAVEALRT | 
|---|
| 62 | . Q | 
|---|
| 63 | S QACX(0)=$P($G(^VA(200,QACX,0)),U) I QACX(0)="" S QACX(0)="UNKNOWN" | 
|---|
| 64 | S QACHDR="***  "_$$FMTE^XLFDT($$NOW^XLFDT,"2PS")_"  "_QACX(0)_"  ***" | 
|---|
| 65 | S ^XTMP(QACXQAID,"TXT",.1,0)="" | 
|---|
| 66 | S ^XTMP(QACXQAID,"TXT",.2,0)=QACHDR | 
|---|
| 67 | S ^XTMP(QACXQAID,"TXT",.3,0)="" | 
|---|
| 68 | ; Save user's response | 
|---|
| 69 | W !!,"Saving your response, please wait . . . " | 
|---|
| 70 | K ^TMP("QACALRT1",$J) | 
|---|
| 71 | S %X="^XTMP("""_QACXQAID_""",""TXT""," | 
|---|
| 72 | S %Y="^TMP(""QACALRT1"",$J," | 
|---|
| 73 | D %XY^%RCR | 
|---|
| 74 | S ZTRTN="TASK^QACALRT1",ZTDESC="Patient Rep resolution comments update" | 
|---|
| 75 | S (ZTSAVE("QACD0"),ZTSAVE("^TMP(""QACALRT1"",$J,"),ZTIO)="",ZTDTH=$H | 
|---|
| 76 | S (ZTSAVE("QACX"),ZTSAVE("QACDUZ"))="" | 
|---|
| 77 | S ZTSAVE("QACDELET")="" | 
|---|
| 78 | D ^%ZTLOAD | 
|---|
| 79 | W "Done" | 
|---|
| 80 | KILLALRT ; Kill this alert | 
|---|
| 81 | K ^XTMP(QACXQAID) | 
|---|
| 82 | S XQAKILL=1 | 
|---|
| 83 | Q | 
|---|
| 84 | SAVEALRT ; Do not kill this alert | 
|---|
| 85 | K XQAKILL | 
|---|
| 86 | Q | 
|---|
| 87 | ; | 
|---|
| 88 | TASK ; Tasked entry point | 
|---|
| 89 | F  L +^QA(745.1,QACD0):5 Q:$T  H 5 | 
|---|
| 90 | I $D(^QA(745.1,QACD0,0))[0 L -^QA(745.1,QACD0) G EXIT | 
|---|
| 91 | S (QACD1,QACD1(0))=0 | 
|---|
| 92 | F  S QACD1=$O(^QA(745.1,QACD0,6,QACD1)) Q:QACD1'>0  S QACD1(0)=QACD1 | 
|---|
| 93 | S (QACTMP,QACOUNT)=0 | 
|---|
| 94 | F  S QACTMP=$O(^TMP("QACALRT1",$J,QACTMP)) Q:QACTMP'>0  D | 
|---|
| 95 | . S QACOUNT=QACOUNT+1 | 
|---|
| 96 | . S ^QA(745.1,QACD0,6,QACD1(0)+QACOUNT,0)=^TMP("QACALRT1",$J,QACTMP,0) | 
|---|
| 97 | . Q | 
|---|
| 98 | S QACOUNT=QACOUNT+1 | 
|---|
| 99 | S ^QA(745.1,QACD0,6,QACD1(0)+QACOUNT,0)="" | 
|---|
| 100 | S QACOUNT=QACOUNT+1 | 
|---|
| 101 | S ^QA(745.1,QACD0,6,QACD1(0)+QACOUNT,0)="***  End of response  ***" | 
|---|
| 102 | S QACWPHDR=$G(^QA(745.1,QACD0,6,0)) | 
|---|
| 103 | S $P(QACWPHDR,U,3)=($P(QACWPHDR,U,3)+QACOUNT) | 
|---|
| 104 | S $P(QACWPHDR,U,4)=($P(QACWPHDR,U,4)+QACOUNT) | 
|---|
| 105 | S $P(QACWPHDR,U,5)=DT | 
|---|
| 106 | S ^QA(745.1,QACD0,6,0)=QACWPHDR | 
|---|
| 107 | L -^QA(745.1,QACD0) | 
|---|
| 108 | S QACX(0)=$P($G(^VA(200,+QACX,0)),U) S:QACX(0)="" QACX(0)="UNKNOWN" | 
|---|
| 109 | S QACCASE=$P($G(^QA(745.1,+QACD0,0)),U) S:QACCASE="" QACCASE="UNKNOWN" | 
|---|
| 110 | S XQA(+QACDUZ)="" | 
|---|
| 111 | S XQAMSG="Patient Rep response by "_QACX(0)_" to "_QACCASE_"." | 
|---|
| 112 | I $G(QACDELET)=1 S XQAMSG="Patient Rep Alert "_QACCASE_" deleted by "_QACX(0)_"." | 
|---|
| 113 | D SETUP^XQALERT | 
|---|
| 114 | ;D SET^QACALRT0(+QACDUZ,QACD0) | 
|---|
| 115 | EXIT ; | 
|---|
| 116 | S:$D(ZTQUEUED) ZTREQ="@" | 
|---|
| 117 | K DIC,DIR,DIROUT,DIRUT,DTOUT,DUOUT,QAC,QACACTN,QACCASE,QACD0,QACD1 | 
|---|
| 118 | K QACDUZ,QACEE,QACHDR,QACOUNT,QACRES,QACTMP,QACWPHDR,QACX,QACXQAID,X,Y | 
|---|
| 119 | K ZTDESC,ZTDTH,ZTIO,ZTRTN,ZTSAVE,^TMP("QACALRT1",$J),%X,%Y | 
|---|
| 120 | Q | 
|---|
| 121 | DELMSG ;If user deletes an alert on a report of contact a message is sent | 
|---|
| 122 | ;as if it were a response to the alert.  It will be stored in the | 
|---|
| 123 | ;Resolution Comments field. | 
|---|
| 124 | S $P(^XTMP(QACXQAID,"TXT",0),U,5)=DT | 
|---|
| 125 | F QACEE=3,4  S $P(^XTMP(QACXQAID,"TXT",0),U,QACEE)=$P(^XTMP(QACXQAID,"TXT",0),U,QACEE)+1 | 
|---|
| 126 | S Y=DT D DD^%DT S QACDATE=Y | 
|---|
| 127 | S QACNAME=$P($P(^VA(200,DUZ,0),U),",",2)_" "_$P($P(^VA(200,DUZ,0),U),",") | 
|---|
| 128 | S ^XTMP(QACXQAID,"TXT",1,0)="VA Alert on Report of Contact "_$P(QACXQAID,"-",2)_" deleted by "_QACNAME_" on "_QACDATE | 
|---|
| 129 | Q | 
|---|