| 1 | QANEDIT ;WCIOFO/ERC-Edit a Brief Incident ;4/22/99 | 
|---|
| 2 | ;;2.0;Incident Reporting;**27,26,32**;08/07/1992;Build 3 | 
|---|
| 3 | ; | 
|---|
| 4 | START ; | 
|---|
| 5 | W @IOF | 
|---|
| 6 | N QANBFLG,QANIEN,QANNOPAT | 
|---|
| 7 | F  W !!,"Do you want to edit one of your open Incident Reports" S %=1 D YN^DICN Q:"-112"[%  W !!,"Enter (Y)es, (N)o or ""^"" to exit" | 
|---|
| 8 | I %=1 D EDIT | 
|---|
| 9 | K QANXIT | 
|---|
| 10 | Q | 
|---|
| 11 | EDIT ; | 
|---|
| 12 | K ^TMP("QAN EDIT") | 
|---|
| 13 | S QANCNT=1 | 
|---|
| 14 | S QANDUZ=DUZ | 
|---|
| 15 | S QANEE=0 | 
|---|
| 16 | F  S QANEE=$O(^QA(742.4,"ACS",1,QANEE)) Q:QANEE'>0  D | 
|---|
| 17 | . I QANDUZ=$P(^QA(742.4,QANEE,0),U,5) S ^TMP("QAN EDIT",$J,QANCNT,QANEE)="",QANCNT=QANCNT+1 | 
|---|
| 18 | W @IOF | 
|---|
| 19 | I '$D(^TMP("QAN EDIT")) D  Q | 
|---|
| 20 | . W !!,"**** You have no open Incident Reports to edit.  Exiting.",!! | 
|---|
| 21 | W !!,"Here are your open Incident Reports." | 
|---|
| 22 | S QANEE=0 | 
|---|
| 23 | S QANTOT=0 | 
|---|
| 24 | F  S QANEE=$O(^TMP("QAN EDIT",$J,QANEE)) Q:QANEE'>0  D | 
|---|
| 25 | . S QANIEN=$O(^TMP("QAN EDIT",$J,QANEE,0)) Q:QANIEN'>0 | 
|---|
| 26 | . S QAN0=^QA(742.4,QANIEN,0) | 
|---|
| 27 | . S QANCC=0,QANCNT=1 | 
|---|
| 28 | . S QANTOT=QANTOT+1 ;gets number of IRs for selecting record to edit | 
|---|
| 29 | . F  S QANCC=$O(^QA(742,"BCS",QANIEN,QANCC)) Q:QANCC'>0  D | 
|---|
| 30 | . . S QANNAME=$P(^DPT($P(^QA(742,QANCC,0),U),0),U) | 
|---|
| 31 | . . S Y=$P(QAN0,U,3) D DD^%DT S QANDATE=Y | 
|---|
| 32 | . . S QANINC=$P(^QA(742.1,$P(QAN0,U,2),0),U) | 
|---|
| 33 | . . I $Y>(IOSL-6) K DIR S DIR(0)="E" D ^DIR K DIR W @IOF | 
|---|
| 34 | . . I QANCNT=1 W !,QANEE,?4,QANDATE,?25,$E(QANINC,1,25),?51,QANNAME | 
|---|
| 35 | . . I QANCNT>1 W !?51,QANNAME | 
|---|
| 36 | . . S QANCNT=QANCNT+1 | 
|---|
| 37 | DIR ; | 
|---|
| 38 | I $G(QANTOT)=1 S QANIEN=$O(^TMP("QAN EDIT",$J,1,0)) G DIE | 
|---|
| 39 | K DIR | 
|---|
| 40 | S DIR(0)="NOA" | 
|---|
| 41 | S DIR("A")="Select a number from 1 to "_QANTOT_": " | 
|---|
| 42 | D ^DIR K DIR Q:$D(DIRUT)!(+Y<1) | 
|---|
| 43 | I +Y>QANTOT W !,"Number selected must be from 1 to "_QANTOT_", try again." G DIR | 
|---|
| 44 | S QANIEN=$O(^TMP("QAN EDIT",$J,+Y,0)) | 
|---|
| 45 | I $G(QANIEN)]"",($D(^QA(742.4,QANIEN,0))) D | 
|---|
| 46 | . L +^QA(742.4,QANIEN):5 I '$T W !!,"Another user is editing this record." Q | 
|---|
| 47 | . S QANEDFLG=1 | 
|---|
| 48 | . D DIE | 
|---|
| 49 | . I $O(^QA(742,"BCS",QANIEN,0))']"" D | 
|---|
| 50 | . . ;if no patients entered, delete the incident | 
|---|
| 51 | . . W !!,"No patients on this Incident Report - deleting Report." | 
|---|
| 52 | . . S DIK="^QA(742.4,",DA=QANIEN D ^DIK K DIK | 
|---|
| 53 | . D EXIT | 
|---|
| 54 | Q | 
|---|
| 55 | DIE ; | 
|---|
| 56 | W !! | 
|---|
| 57 | N QANCNT,QANEE | 
|---|
| 58 | S QANEFLG=0 | 
|---|
| 59 | S QANEE=0 | 
|---|
| 60 | S QANCNT=1 | 
|---|
| 61 | F  S QANEE=$O(^QA(742,"BCS",QANIEN,QANEE)) Q:QANEE'>0  D | 
|---|
| 62 | . S QANPAT(QANCNT)=QANEE | 
|---|
| 63 | . S QANCNT=QANCNT+1 | 
|---|
| 64 | K DIE S DIE="^QA(742.4,",DA=QANIEN,DR=".02;.03;.04" | 
|---|
| 65 | D ^DIE K DIE | 
|---|
| 66 | L -^QA(742.4,QANIEN) | 
|---|
| 67 | PAT ;edit patient(s) on report | 
|---|
| 68 | ;if no patients entered go directly to PTADD | 
|---|
| 69 | I $O(^QA(742,"BCS",QANIEN,0))']"" G PTADD | 
|---|
| 70 | K QANPNAM,QANPNUM | 
|---|
| 71 | W !,"Patient(s) on this Incident Report." | 
|---|
| 72 | S QANEE=0 | 
|---|
| 73 | S QANCNT=1 | 
|---|
| 74 | F  S QANEE=$O(QANPAT(QANEE)) Q:QANEE'>0  D | 
|---|
| 75 | . S QANPNUM(QANEE)=$P(^QA(742,QANPAT(QANEE),0),U) | 
|---|
| 76 | . S QANPNAM(QANEE)=$P(^DPT(QANPNUM(QANEE),0),U) | 
|---|
| 77 | . W !?5,QANCNT,"  ",QANPNAM(QANEE) | 
|---|
| 78 | . S QANCNT=QANCNT+1 | 
|---|
| 79 | S DIR("A")="Is this correct" | 
|---|
| 80 | S DIR("B")="YES" | 
|---|
| 81 | S DIR(0)="Y" | 
|---|
| 82 | D ^DIR K DIR Q:$D(DIRUT) | 
|---|
| 83 | I Y<1 D | 
|---|
| 84 | . S DIR(0)="Y",DIR("A")="Would you like to add a patient" | 
|---|
| 85 | . S DIR("B")="YES" | 
|---|
| 86 | . K DIRUT | 
|---|
| 87 | . D ^DIR K DIR Q:$D(DIRUT) | 
|---|
| 88 | . I Y=1 D PTADD S (QANEFLG,QANEDFLG)=1 Q | 
|---|
| 89 | . ;deleting patients from record only allowed if editing a new record | 
|---|
| 90 | . I $G(QANBFLG)'=1 Q | 
|---|
| 91 | . K DIR S DIR(0)="Y",DIR("A")="Would you like to delete a patient" | 
|---|
| 92 | . S DIR("B")="NO" | 
|---|
| 93 | . K DIRUT | 
|---|
| 94 | . D ^DIR K DIR Q:$D(DIRUT) | 
|---|
| 95 | . I Y=1 D PTDEL S (QANEFLG,QANEDFLG)=1 | 
|---|
| 96 | ;if the user has deleted all patients and has not re-entered one, | 
|---|
| 97 | ;exit the subroutine (a message will be displayed & the record deleted) | 
|---|
| 98 | I $G(QANNOPAT)=1 K QANNOPAT Q | 
|---|
| 99 | I $G(QANEFLG)=1 S QANEFLG=0 G PAT | 
|---|
| 100 | ;if no patients on report skip description and witnessed and quit | 
|---|
| 101 | I $O(^QA(742,"BCS",QANIEN,0))']"" Q | 
|---|
| 102 | K DIE S DIE="^QA(742.4,",DR=".05;.08" | 
|---|
| 103 | D ^DIE K DIE | 
|---|
| 104 | Q | 
|---|
| 105 | PTADD ; | 
|---|
| 106 | K DIC S DIC="^DPT(",DIC(0)="QEAMNZ",DIC("A")="Select Patient: ",DIC("W")="W "" "",$P(^(0),U,9)",D="B^BS5" | 
|---|
| 107 | D MIX^DIC1 K DIC | 
|---|
| 108 | I +Y<1 S QANXIT=1 Q | 
|---|
| 109 | F  D  Q:"-12"[% | 
|---|
| 110 | . W !?5,$G(Y(0,0))_" OK" | 
|---|
| 111 | . S %=1 D YN^DICN Q:"-12"[% | 
|---|
| 112 | . W " Confirm that this is the correct patient." | 
|---|
| 113 | I %=-1 S QANXIT=1 Q | 
|---|
| 114 | I %=2 W " ??" G PTADD | 
|---|
| 115 | S QANEE=0 | 
|---|
| 116 | F  S QANEE=$O(QANPNUM(QANEE)) Q:QANEE'>0  D | 
|---|
| 117 | . I +Y=QANPNUM(QANEE) W !!,$C(7),$P(^DPT(+Y,0),U)_" has been previously entered for this incident." K Y S QANXFLG=1 Q | 
|---|
| 118 | I $G(QANXFLG)=1 S QANXFLG=0 G PTADD | 
|---|
| 119 | I $D(^DPT(+Y,.35)),$P(^DPT(+Y,.35),U)]"",($P(^DPT(+Y,.35),U)<$P(^QA(742.4,QANIEN,0),U,3)) W !!,$C(7),"The date of death for patient: "_$P(^DPT(+Y,0),U)_" precedes the incident date." K Y G PTADD | 
|---|
| 120 | S QANPIEN=+Y,QANZERO=Y(0),QANAME=Y(0,0),QANSSN=$P(QANZERO,U,9),^UTILITY($J,"QAN PAT",+Y)="" | 
|---|
| 121 | S QANDOB=$P(^DPT(QANPIEN,0),U,3) | 
|---|
| 122 | I QANDOB]"" S X=DT,X1=X,X2=QANDOB,X="" D:X2 ^%DTC S X=X\365.25,QANAGE=X | 
|---|
| 123 | S QANPSDO(0)=Y(0),QANPSDO(0,0)=Y(0,0) | 
|---|
| 124 | S QANPID=$$QANPID^QANCDNT(.Y) | 
|---|
| 125 | D ADMDT^QANUTL1 | 
|---|
| 126 | K DIC,DD,DO,DINUM,DLAYGO S DLAYGO=742,DIC="^QA(742,",DIC(0)="L",X=QANPIEN D FILE^DICN K DIC,DD,DO,DINUM,DLAYGO | 
|---|
| 127 | I +Y=-1,($G(QANFLAG)) S QANXIT=1 Q | 
|---|
| 128 | S QANDFN=+Y | 
|---|
| 129 | S $P(^QA(742,QANDFN,0),U,2,6)=QANPID_U_QANIEN_U_QANADMDT_U_QANINPAT_U_QANWARD | 
|---|
| 130 | S $P(^QA(742,QANDFN,0),U,7)=QANTRSP,$P(^QA(742,QANDFN,0),U,12)=1 | 
|---|
| 131 | S DIK="^QA(742,",DA=QANDFN D IX1^DIK K DA,DIK | 
|---|
| 132 | S QANNUM=$O(QANPAT(" "),-1)+1 | 
|---|
| 133 | S QANPAT(QANNUM)=QANDFN | 
|---|
| 134 | S QANPNUM(QANNUM)=QANPIEN | 
|---|
| 135 | S QANPNAM(QANNUM)=QANAME | 
|---|
| 136 | S QANFLAG=1 D:'$D(QANF) BULL^QANUTL3 | 
|---|
| 137 | K QAUDIT S QAUDIT("FILE")="742^50",QAUDIT("DA")=QANDFN,QAUDIT("ACTION")="e",QAUDIT("COMMENT")="Edit a brief patient record" D ^QAQAUDIT | 
|---|
| 138 | Q | 
|---|
| 139 | PTDEL ; | 
|---|
| 140 | S QANCC=0 | 
|---|
| 141 | F  S QANCC=$O(QANPNUM(QANCC)) Q:QANCC'>0  D | 
|---|
| 142 | . S QANNUM=QANCC | 
|---|
| 143 | . W !?5,QANCC_"   "_QANPNAM(QANCC) | 
|---|
| 144 | I '$G(QANNUM) S QANXIT=1 Q | 
|---|
| 145 | S DIR(0)="NOA" | 
|---|
| 146 | S DIR("A")="Delete which patient number: " | 
|---|
| 147 | D ^DIR K DIR Q:$D(DIRUT) | 
|---|
| 148 | I $G(QANPNAM(+Y))']"" W !!?5,"Choice must be one of the displayed numbers." G PTDEL | 
|---|
| 149 | I Y>QANNUM W !!?5,"Answer must be a number less than ",QANNUM+1 G PTDEL | 
|---|
| 150 | I Y<1 S QANXIT=1 Q | 
|---|
| 151 | S QANTEMP=+Y | 
|---|
| 152 | S QANDFN=QANPAT(+Y) | 
|---|
| 153 | S QANAME=QANPNAM(+Y) | 
|---|
| 154 | S DIK="^QA(742,",DA=QANPAT(+Y) D ^DIK | 
|---|
| 155 | ;D BULL^QANUTL3 | 
|---|
| 156 | ;K QAUDIT S QAUDIT("FILE")="742^50",QAUDIT("DA")=QANDFN,QAUDIT("ACTION")="d",QAUDIT("COMMENT")="Delete a brief patient record" D ^QAQAUDIT | 
|---|
| 157 | K QANPAT(QANTEMP),QANPNUM(QANTEMP),QANPNAM(QANTEMP) | 
|---|
| 158 | ;if there are no patients on the report set a flag and go back to PTADD | 
|---|
| 159 | I $O(^QA(742,"BCS",QANIEN,0))']"" W !!,"You must have at least one patient on an incident report." S QANNOPAT=1 G PTADD | 
|---|
| 160 | G PTDEL | 
|---|
| 161 | Q | 
|---|
| 162 | EXIT ; | 
|---|
| 163 | K QAN0,QANADMDT,QANCC,QANCNT,QANDATE,QANDFN,QANDOB,QANEE | 
|---|
| 164 | K QANEDFLG,QANELFG,QANFLAG,QANIEN,QANINC,QANAME,QANNAME,QANNOPAT | 
|---|
| 165 | K QANNUM,QANPAT,QANPID,QANPIEN,QANPNAM,QANPNUM,QANPSDO,QANTEMP | 
|---|
| 166 | K QANTOT,QANTRSP,QANXFLG,QANXIT,QANY,QANZERO | 
|---|
| 167 | Q | 
|---|
| 168 | DIKAUDIT(QANFIL) ; | 
|---|
| 169 | ;deletes the entries for this Incident Report from | 
|---|
| 170 | ;the QA Audit file.  Input is the QA file (742 for the patient, | 
|---|
| 171 | ;742.4 for the incident). | 
|---|
| 172 | ; | 
|---|
| 173 | S QANID=$S(QANFIL=742:QANDFN,1:QANIEN) | 
|---|
| 174 | S QANEE=$O(^QA(740.5,"B",QANFIL," "),-1)+1 | 
|---|
| 175 | F  S QANEE=$O(^QA(740.5,"B",QANFIL,QANEE),-1) Q:QANEE'>0  I $P(^QA(740.5,QANEE,0),U,2)=QANID S QANAUD=QANID Q | 
|---|
| 176 | I $G(QANAUD)]"" D | 
|---|
| 177 | . S DIK="^QA(740.5,",DA=QANEE | 
|---|
| 178 | . D ^DIK K DIK | 
|---|
| 179 | . K QANID,QANAUD,QANEE | 
|---|
| 180 | Q | 
|---|