| 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
 | 
|---|