| 1 | GMRASIGN ;HIRMFO/WAA-ALLERGY/ADVERSE REACTION PATIENT SIGN OFF ;9/22/06  11:01
 | 
|---|
| 2 |  ;;4.0;Adverse Reaction Tracking;**17,19,36**;Mar 29, 1996;Build 9
 | 
|---|
| 3 | SIGNOFF ; The signoff code
 | 
|---|
| 4 |  N GMRAOUT,GMRACNTT S GMRAOUT=0 ;19
 | 
|---|
| 5 |  S GMRASIGN=0
 | 
|---|
| 6 |  D ENCNT^GMRASIG1 ; Count entries
 | 
|---|
| 7 |  D SOQ ; Display entries and ask if user wants all the entries signed.
 | 
|---|
| 8 |  I 'Y D  ; User said no the sign off question
 | 
|---|
| 9 |  .I GMRACNTT>1 S GMRASIGN=1 D YNSO^GMRASIG1 I Y'=0 D RANGE(Y) ; User had more than one entry
 | 
|---|
| 10 |  .D ALERT ; Ask Delete and trigger alerts for those non delete entries 
 | 
|---|
| 11 |  .Q
 | 
|---|
| 12 |  K GMRASITE ; force the update of the site parameters
 | 
|---|
| 13 |  D PNOTE^GMRASIG1 ; File progress note
 | 
|---|
| 14 |  K ^TMP($J,"GMRASF") ; clean up the temp globals
 | 
|---|
| 15 |  Q
 | 
|---|
| 16 | SOQ ;Sign off on all allergies for a patient
 | 
|---|
| 17 |  W @IOF,!,"Causative Agent Data edited this Session:"
 | 
|---|
| 18 |  K X D PRINT^GMRASIG1 ; Display entries edit this session
 | 
|---|
| 19 |  N DIR
 | 
|---|
| 20 |  S DIR(0)="YA",DIR("B")="NO"
 | 
|---|
| 21 |  S DIR("?")="PLEASE ENTER 'Y' IF THE DATA IS CORRECT OR 'N' IF IT IS NOT CORRECT"
 | 
|---|
| 22 |  S DIR("??")="^D PRINT^GMRASIG1"
 | 
|---|
| 23 |  S DIR("A")=$S(GMRACNTT>1:"Are ALL these",1:"Is this")_" correct? "
 | 
|---|
| 24 |  D ^DIR
 | 
|---|
| 25 |  I $D(DIRUT) S Y=0,GMRAOUT=1 ; user ^ or timed out
 | 
|---|
| 26 |  I Y=0 Q  ; user answered no the sign off
 | 
|---|
| 27 |  D ALLSNG,RANGE(Y) ; sign all the entries
 | 
|---|
| 28 |  S Y=1
 | 
|---|
| 29 |  Q
 | 
|---|
| 30 | ALLSNG ;Sign off on all
 | 
|---|
| 31 |  N X
 | 
|---|
| 32 |  S Y="",X=0
 | 
|---|
| 33 |  F  S X=$O(^TMP($J,"GMRASF",X)) Q:X<1  S Y=Y_X_","
 | 
|---|
| 34 |  Q
 | 
|---|
| 35 | RANGE(GMRARNG) ;Sign off select allergies
 | 
|---|
| 36 |  ;Input:
 | 
|---|
| 37 |  ;   GMRARNG = The entries that need to be signed
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 |  N GMRATYPE ;19
 | 
|---|
| 40 |  F I=1:1 S GMRACNT=$P(GMRARNG,",",I) Q:GMRACNT<1  S GMRAPA=$O(^TMP($J,"GMRASF",GMRACNT,0)) Q:GMRAPA'>0  D
 | 
|---|
| 41 |  .N I,GMRARNG
 | 
|---|
| 42 |  .S DA=GMRAPA,DIE="^GMR(120.8,",DR="15////1" D ^DIE
 | 
|---|
| 43 |  .S GMRAPA(0)=$G(^GMR(120.8,GMRAPA,0))
 | 
|---|
| 44 |  .S GMRATYPE=$P(GMRAPA(0),U,20)
 | 
|---|
| 45 |  .S GMRASLL(GMRAPA)=0
 | 
|---|
| 46 |  .I '$P(GMRAPA(0),U,16) D
 | 
|---|
| 47 |  ..N GMRACNT K DR S DA=GMRAPA,DIE="^GMR(120.8,"
 | 
|---|
| 48 |  ..I $$VFY(.GMRAPA) D
 | 
|---|
| 49 |  ...S DR="19////1;20///N" D ^DIE
 | 
|---|
| 50 |  ...Q
 | 
|---|
| 51 |  ..E  S DR="19////0" D ^DIE,EN1^GMRAVAB
 | 
|---|
| 52 |  ..S GMRAPA(0)=$G(^GMR(120.8,GMRAPA,0))
 | 
|---|
| 53 |  .I $P(GMRAPA(0),U,6)="o",GMRATYPE["D" D PTBUL^GMRAROBS
 | 
|---|
| 54 |  .D  ; Execute the event point for this reaction
 | 
|---|
| 55 |  ..Q:'$D(GMRAPA)  S GMRAPA(0)=$G(^GMR(120.8,GMRAPA,0)) Q:GMRAPA(0)=""
 | 
|---|
| 56 |  ..N OROLD,DFN,GMRACNT S DFN=$P(GMRAPA(0),U)
 | 
|---|
| 57 |  ..D INP^VADPT S X=$$FIND1^DIC(101,,"BX","GMRA SIGN-OFF ON DATA")_";ORD(101," D EN^XQOR:X K VAIN,X ;19
 | 
|---|
| 58 |  ..Q
 | 
|---|
| 59 |  .K ^TMP($J,"GMRASF",GMRACNT,GMRAPA),^TMP($J,"GMRASF","B",GMRAPA,GMRACNT)
 | 
|---|
| 60 |  .Q
 | 
|---|
| 61 |  Q
 | 
|---|
| 62 | ALERT ; SENDS ALERT FOR ALL DATA THAT IS UNSIGNED
 | 
|---|
| 63 |  I '$O(^TMP($J,"GMRASF",0)) Q
 | 
|---|
| 64 |  D REMAIN ;D DEL^GMRADEL ; Ask user if they want to delete given entries
 | 
|---|
| 65 |  Q:$D(XQADATA)  ; user is processing alert
 | 
|---|
| 66 |  S (GMRACNT,GMRACNTF)=0 F  S GMRACNT=$O(^TMP($J,"GMRASF",GMRACNT)) Q:GMRACNT<1  S GMRAPA=$O(^TMP($J,"GMRASF",GMRACNT,0)) Q:GMRAPA<1  D
 | 
|---|
| 67 |  .S GMRAPA(0)=(^GMR(120.8,GMRAPA,0)) Q:GMRAPA(0)=""
 | 
|---|
| 68 |  .S XQA(DUZ)=""
 | 
|---|
| 69 |  .S XQAMSG=GMRANAM_" with reaction of "_$P(GMRAPA(0),U,2)_" has not been Signed off."
 | 
|---|
| 70 |  .S XQAID="GMASignoff Alert"
 | 
|---|
| 71 |  .S XQADATA=DFN_U_GMRAPA_U_$G(GMRAUSER,0)
 | 
|---|
| 72 |  .S XQAROU="ALERT^GMRAPEM0"
 | 
|---|
| 73 |  .D SETUP^XQALERT
 | 
|---|
| 74 |  .D UNLOCK^GMRAUTL(120.8,GMRAPA)
 | 
|---|
| 75 |  .I 'GMRACNTF W !,?5,"Please Note that these UNSIGNED Causative Agents ",!,?5,"will not show in the patient's records.",$C(7) D HANGT^GMRAPEH0 S GMRACNTF=1
 | 
|---|
| 76 |  .S X=$O(^TMP($J,"GMRASF","B",GMRAPA,0))
 | 
|---|
| 77 |  .K ^TMP($J,"GMRASF",X,GMRAPA),^TMP($J,"GMRASF","B",GMRAPA,X)
 | 
|---|
| 78 |  .Q
 | 
|---|
| 79 |  K XQA,XQAMSG,GMRACNTF
 | 
|---|
| 80 |  Q
 | 
|---|
| 81 | IDBAND ; Mark ID Bands and Charts for a given patient
 | 
|---|
| 82 |  I $D(GMRASLL) D
 | 
|---|
| 83 |  .D EN4^GMRAMCB(.GMRASLL,DFN) S GMRAPA=0 F  S GMRAPA=$O(GMRASLL(GMRAPA)) Q:GMRAPA<1  D UNLOCK^GMRAUTL(120.8,GMRAPA)
 | 
|---|
| 84 |  .K GMRASLL
 | 
|---|
| 85 |  .Q
 | 
|---|
| 86 |  Q
 | 
|---|
| 87 | VFY(Y) ;THIS FUNCTION WILL RETURN TRUE IF THIS ALLERGY IS AUTO VERIFIED
 | 
|---|
| 88 |  N GMRAPASS,X
 | 
|---|
| 89 |  S GMRAPASS=0
 | 
|---|
| 90 |  I '$D(GMRASITE) D SITE^GMRAUTL
 | 
|---|
| 91 |  S X=$G(^GMRD(120.84,+GMRASITE,0))
 | 
|---|
| 92 |  S GMRATYPE=$P(Y(0),U,20)
 | 
|---|
| 93 |  I @(($P(Y(0),U,6)="o"&($P(X,U,3)\2)!($P(Y(0),U,6)="h"&($P(X,U,3)#2)))_$S($P(X,U,6)="&":"&",1:"!")_(GMRATYPE["F"&($P(X,U,2)\2#2)!(GMRATYPE["D"&($P(X,U,2)#2))!(GMRATYPE["O"&($P(X,U,2)\4)))) S GMRAPASS=1
 | 
|---|
| 94 |  Q GMRAPASS
 | 
|---|
| 95 |  Q
 | 
|---|
| 96 |  ;
 | 
|---|
| 97 | REMAIN ;Review remaining entries that were not signed off.  Entire section added with patch 17
 | 
|---|
| 98 |  N GMRAPA,LCVJ,Y,DIR,DIRUT,DUOUT,SIGNED,GMRAOUT,GMRANEW,DIC,DONE
 | 
|---|
| 99 |  S SIGNED=""
 | 
|---|
| 100 |  S LCVJ=0 F  S LCVJ=$O(^TMP($J,"GMRASF",LCVJ)) Q:'+LCVJ  D
 | 
|---|
| 101 |  .S GMRAPA=$O(^TMP($J,"GMRASF",LCVJ,0)) Q:'+GMRAPA  S GMRAPA(0)=^GMR(120.8,GMRAPA,0)
 | 
|---|
| 102 |  .S DIR(0)="SB^Edit:Edit;Delete:Delete",DIR("B")="Edit" ;36
 | 
|---|
| 103 |  .S DIR("?")="Select edit or delete" ;36
 | 
|---|
| 104 |  .S DIR("?",1)="You must complete entry of this record.  Select edit to change" ;36
 | 
|---|
| 105 |  .S DIR("?",2)="the record or delete to remove the record.  Previously existing" ;36
 | 
|---|
| 106 |  .S DIR("?",3)="records will be marked as entered in error while records added" ;36
 | 
|---|
| 107 |  .S DIR("?",4)="during this session will be deleted." ;36
 | 
|---|
| 108 |  .S DIR("A")="For reactant "_$P(GMRAPA(0),U,2) D ^DIR K DIR S:$G(DIRUT) Y="E" ;36
 | 
|---|
| 109 |  .I $E(Y)="D" Q  ;Do nothing if allergy is to be deleted
 | 
|---|
| 110 |  .S GMRANEW=0
 | 
|---|
| 111 |  .F  D  Q:DONE
 | 
|---|
| 112 |  ..S DONE=0,GMRAOUT=0
 | 
|---|
| 113 |  ..D EDIT^GMRAPEM4 W !
 | 
|---|
| 114 |  ..I $P(^GMR(120.8,GMRAPA,0),U,6)="o" I '$D(^GMR(120.85,"C",GMRAPA))!('$O(^GMR(120.85,+$O(^GMR(120.85,"C",GMRAPA,0)),2,0)))!('$$REQCOM^GMRAPEM0) D  Q
 | 
|---|
| 115 |  ...W !,"Observed reactions require the date of the reaction and",!,"sign/symptoms",$S('$$REQCOM^GMRAPEM0:" and comments.",1:"."),!
 | 
|---|
| 116 |  ...S DIR(0)="SA^R:Re-edit;D:Delete",DIR("A")="Do you want to (R)e-edit or (D)elete this entry? ",DIR("B")="R" D ^DIR S:Y'="R" DONE=1 Q
 | 
|---|
| 117 |  ..I $P(^GMR(120.8,GMRAPA,0),U,6)="h",$D(^GMR(120.85,"C",GMRAPA)) D DELOBS ;Delete observed data if changing to historical
 | 
|---|
| 118 |  ..S DIR(0)="Y",DIR("A")="Is this entry now correct",DIR("B")="Y",DIR("?")="Answer yes to accept the allergy.  Enter NO to re-edit.  Enter ^ to delete this entry." D ^DIR
 | 
|---|
| 119 |  ..I Y=0 Q
 | 
|---|
| 120 |  ..I $G(DIRUT) S DONE=1 Q
 | 
|---|
| 121 |  ..S SIGNED=SIGNED_LCVJ_",",DONE=1
 | 
|---|
| 122 |  I $L(SIGNED)>1 D RANGE(SIGNED) ;Sign off on accepted allergies
 | 
|---|
| 123 |  I $O(^TMP($J,"GMRASF",0)) D DELETE^GMRADEL ;Delete unaccepted entries
 | 
|---|
| 124 |  Q
 | 
|---|
| 125 |  ;
 | 
|---|
| 126 | DELOBS ;Delete observed data from 120.85
 | 
|---|
| 127 |  N OIEN,DIK,DA
 | 
|---|
| 128 |  S OIEN=0 F  S OIEN=$O(^GMR(120.85,"C",GMRAPA,OIEN)) Q:'+OIEN  S DIK="^GMR(120.85,",DA=OIEN D ^DIK
 | 
|---|
| 129 |  Q
 | 
|---|