| 1 | QANBENE0 ;HISC/GJC-SPECIAL INCIDENTS INVOL. A BENEFICIARY ;4/13/93  08:24 | 
|---|
| 2 | ;;2.0;Incident Reporting;**18,26,28,29**;08/07/1992 | 
|---|
| 3 | ; | 
|---|
| 4 | EN1 ;/*** Catagorize incidents ***/ | 
|---|
| 5 | K DIR S DIR(0)="FAO^1:1^K:""ACDINO""'[X X",DIR("A")="Select Ward type (A/C/D/I/N/O): " | 
|---|
| 6 | S DIR("?",1)="Enter ""A"" to generate separate reports for Domiciliaries, NHCU'S, " | 
|---|
| 7 | S DIR("?",2)="Inpatients and Outpatients." | 
|---|
| 8 | S DIR("?",3)="Enter ""C"" to generate a report of combined data for Domiciliaries, NHCU'S, " | 
|---|
| 9 | S DIR("?",4)="Inpatients and Outpatients." | 
|---|
| 10 | S DIR("?",5)="Enter ""D"" for Domiciliary, ""I"" for Inpatients other than Domiciliary or " | 
|---|
| 11 | S DIR("?")="NHCU, ""N"" for NHCU units, or ""O"" for Outpatients." | 
|---|
| 12 | D ^DIR K DIR | 
|---|
| 13 | I $D(DIRUT) D KILL Q | 
|---|
| 14 | S QANFLG("WARD")=Y | 
|---|
| 15 | TASK ;Call to %ZTLOAD | 
|---|
| 16 | S Y=DT X ^DD("DD") S TODAY=Y | 
|---|
| 17 | K IOP,%ZIS S %ZIS("A")="Print on device: ",%ZIS="MQ" W ! D ^%ZIS W !! | 
|---|
| 18 | G:POP KILL | 
|---|
| 19 | I $D(IO("Q")) S ZTRTN="START^QANBENE0",ZTDESC="Generate Special Incident Reports For A Beneficiary." D QLOOP,^%ZTLOAD W !,$S($D(ZTSK):"Request Queued!",1:"Request Cancelled!"),! G EXIT | 
|---|
| 20 | START ;IO requests | 
|---|
| 21 | U IO | 
|---|
| 22 | I QANFLG("WARD")="A" S QANFLG("WARD A")="D^I^N^O" | 
|---|
| 23 | I $D(QANFLG("WARD A")),(QANFLG("WARD A")="D^I^N^O") F QAN=1:1:$L(QANFLG("WARD A"),"^") Q:QANQUIT  S QANFLG("WARD")=$P(QANFLG("WARD A"),"^",QAN) Q:QANFLG("WARD")']""  D | 
|---|
| 24 | . W @IOF | 
|---|
| 25 | . S PAGE=0 | 
|---|
| 26 | . K ^TMP("QANBEN",$J),QANCOUNT | 
|---|
| 27 | . D GO D:'QANQUIT HDH^QANBENE3 Q:QANQUIT | 
|---|
| 28 | G:QANQUIT EXIT | 
|---|
| 29 | I '$D(QANFLG("WARD A")) D GO | 
|---|
| 30 | I $D(^TMP("QANBEN",$J,"NOBEN")) D PRNOBEN | 
|---|
| 31 | EXIT ; | 
|---|
| 32 | W ! D ^%ZISC,HOME^%ZIS | 
|---|
| 33 | KILL ;Kill and quit. | 
|---|
| 34 | K %ZIS,D,DIC,DIRUT,I,PAGE,POP | 
|---|
| 35 | K QAN,QAN742,QAN7424,QANAA,QANAB,QANBB,QANBENE,QANCC,QANCONT | 
|---|
| 36 | K QANCOUNT,QANDATE,QAN1DIV,QANDIV,QANDTH,QANDV,QANDVFLG | 
|---|
| 37 | K QANFLG,QANHEAD,QANHLOC,QANINPT,QANLBL,QANLP,QANLWLT | 
|---|
| 38 | K QANPTTY,QANQUIT,QANSLEV,QANSTAT,QANTAB,QANUPLT,QANWARD | 
|---|
| 39 | K QANINVST,QANSITE,QANSWCH,QANWHICH | 
|---|
| 40 | K QAQNBEG,QAQNEND | 
|---|
| 41 | K TODAY,X,Y,ZTDESC,ZTRTN,ZTSAVE,ZTSK | 
|---|
| 42 | D K^QAQDATE | 
|---|
| 43 | K ^TMP("QANBEN",$J) | 
|---|
| 44 | Q | 
|---|
| 45 | GO ;Set up variables. | 
|---|
| 46 | S QANOWARD=0 | 
|---|
| 47 | S QANLP=QANLWLT | 
|---|
| 48 | F  S QANLP=$O(^QA(742.4,"BDT",QANLP)) Q:QANLP'>0!(QANLP>QANUPLT)  D | 
|---|
| 49 | . S QANLP(1)=0 | 
|---|
| 50 | . F  S QANLP(1)=$O(^QA(742.4,"BDT",QANLP,QANLP(1))) Q:QANLP(1)'>0  D | 
|---|
| 51 | . . I $G(^QA(742.4,QANLP(1),0))]"" D LGIC I QANQUIT  S QANQUIT=0 Q | 
|---|
| 52 | . . S QANLP(2)=0 | 
|---|
| 53 | . . F  S QANLP(2)=$O(^QA(742,"BCS",QANLP(1),QANLP(2))) Q:QANLP(2)'>0  D | 
|---|
| 54 | . . . I $G(^QA(742,QANLP(2),0)) D LGIC1 | 
|---|
| 55 | . . . I QANQUIT S QANQUIT=0 Q | 
|---|
| 56 | . . . S ^TMP("QANBEN",$J,"BEN",QANDIV,QANWARD,QANLP(1),QANLP(2))="" | 
|---|
| 57 | S QANHEAD(3)=$S(QANFLG("WARD")="I":"INPATIENTS",QANFLG("WARD")="D":"DOMICILIARY",QANFLG("WARD")="N":"NHCU",QANFLG("WARD")="O":"OUTPATIENTS",1:"ALL INCIDENTS REGARDLESS OF LOCATION") | 
|---|
| 58 | I $G(QANDVFLG)'=1 D HDR | 
|---|
| 59 | D EN1^QANBENE1 | 
|---|
| 60 | Q | 
|---|
| 61 | LGIC ;Set up valid incidents | 
|---|
| 62 | S QAN7424=^QA(742.4,QANLP(1),0),QAN("INC")=$P(QAN7424,U,2) | 
|---|
| 63 | I QAN("INC")'<200 S QANQUIT=1 Q  ;Quit if NOT a National incident. | 
|---|
| 64 | D VALID^QANBENE I 'QANSWCH S QANQUIT=1 Q  ;Quit if NOT a valid incident | 
|---|
| 65 | S QANSTAT=+$P(QAN7424,U,8),QANBENE=+$P(QAN7424,U,17) | 
|---|
| 66 | I 'QANBENE!(QANFLG("IR STAT")'[QANSTAT) S QANQUIT=1 Q | 
|---|
| 67 | S QANDIV=$P(QAN7424,U,22) | 
|---|
| 68 | I $G(QANDIV)']"" S QANDIV=0 | 
|---|
| 69 | I $G(QAN1DIV)]"" I QAN1DIV'=QANDIV S QANQUIT=1 Q | 
|---|
| 70 | I '$D(^QA(740,1,"QAN2","B",QANDIV)) S QANDIV=0 | 
|---|
| 71 | I $G(QANDVFLG)'=1 S QANDIV=0 | 
|---|
| 72 | Q | 
|---|
| 73 | HDR ;Header generator. | 
|---|
| 74 | S PAGE=PAGE+1 W @IOF,!?69,TODAY,!?69,"Page: ",PAGE,!! | 
|---|
| 75 | W ?(IOM-$L(QANHEAD(0))\2),QANHEAD(0),!,?(IOM-$L(QANHEAD(1))\2),QANHEAD(1),! | 
|---|
| 76 | W !?(IOM-$L(QANHEAD(2))\2),QANHEAD(2),! | 
|---|
| 77 | W !?(IOM-$L(QANHEAD(3))\2),QANHEAD(3) | 
|---|
| 78 | I $G(QANDVFLG)=1,($G(QANHEAD(4))]"") W !?(IOM-$L(QANHEAD(4))\2),QANHEAD(4) | 
|---|
| 79 | W !!?QANTAB(5),"Total",?QANTAB(6),"Resulted in" | 
|---|
| 80 | W !?QANTAB(2),"Incident",?QANTAB(4),"Severity",?QANTAB(5),"Number",?QANTAB(6),"Investigation",!?QANTAB(2),"--------",?QANTAB(4),"--------",?QANTAB(5),"------",?QANTAB(6),"-------------" | 
|---|
| 81 | I QANCONT,$D(QANLBL) W !!?QANTAB(2),QANLBL_" (cont)" | 
|---|
| 82 | Q | 
|---|
| 83 | LGIC1 ;Sorting wards into categories. | 
|---|
| 84 | Q:$D(^QA(742,"BPRS",-1,QANLP(2)))  ;Quit if a deleted patient | 
|---|
| 85 | S QAN742=^QA(742,QANLP(2),0) | 
|---|
| 86 | S QANPTTY=+$P(QAN742,U,5),QANWARD=+$P(QAN742,U,6),QANSLEV=+$P(QAN742,U,10) | 
|---|
| 87 | I $G(QANWARD)'>0 D | 
|---|
| 88 | . S QANINUM=$P(QAN7424,U) ;Incident number | 
|---|
| 89 | . S QANWHY="No ward entered for Incident." ;why excluded from report | 
|---|
| 90 | . D NOBEN | 
|---|
| 91 | . S QANQUIT=1 Q | 
|---|
| 92 | I '$D(^SC(QANWARD)) D | 
|---|
| 93 | . S QANINUM=$P(QAN7424,U) ;Incident number | 
|---|
| 94 | . S QANWHY="Ward has no valid Hospital Location." ;why excluded | 
|---|
| 95 | . D NOBEN | 
|---|
| 96 | . S QANQUIT=1 Q | 
|---|
| 97 | D WARD | 
|---|
| 98 | Q | 
|---|
| 99 | QLOOP ;Save variables for %ZTLOAD. | 
|---|
| 100 | F I="^TMP(""QANBEN"",$J,","PAGE","TODAY","QAN*","QAQ*" S ZTSAVE(I)="" | 
|---|
| 101 | Q | 
|---|
| 102 | WARD ;determine if record should be included in report | 
|---|
| 103 | S QANWARD=$G(^SC(QANWARD,42)) D | 
|---|
| 104 | . I $G(QANWARD)']"" S QANWARD="O" Q | 
|---|
| 105 | . I $G(QANWARD) S QANWARD=$P(^DIC(42,QANWARD,0),U,3) | 
|---|
| 106 | . I $G(QANWARD)]"" S QANWARD=$S($G(QANWARD)="D":"D",$G(QANWARD)="NH":"N",1:"I") Q | 
|---|
| 107 | . I $G(QANWARD)']"" S QANWARD="O" | 
|---|
| 108 | S QANXXX=$S(QANFLG("WARD")="C":1,QANFLG("WARD")="A":1,QANFLG("WARD")=QANWARD:1,$G(QANFLG("WARD A")):1,1:0) | 
|---|
| 109 | I QANXXX<1 S QANQUIT=1 Q | 
|---|
| 110 | Q | 
|---|
| 111 | TALLY ;create and increment globals for report | 
|---|
| 112 | S QANCOUNT("SLEV",QANAA,QANLBL,QANSLEV)=$G(QANCOUNT("SLEV",QANAA,QANLBL,QANSLEV))+1 | 
|---|
| 113 | I $G(QANINVST)>1 S QANCOUNT("INV",QANAA,QANLBL,QANSLEV)=$G(QANCOUNT("INV",QANAA,QANLBL,QANSLEV))+1 | 
|---|
| 114 | Q | 
|---|
| 115 | NOBEN ;process those records without valid ward information for exception | 
|---|
| 116 | ;report | 
|---|
| 117 | S QANOWARD=QANOWARD+1 | 
|---|
| 118 | S ^TMP("QANBEN",$J,"NOBEN",QANOWARD)=QANINUM_"^"_QANWHY | 
|---|
| 119 | Q | 
|---|
| 120 | PRNOBEN ;print list of records excluded from report | 
|---|
| 121 | I '$D(^TMP("QANBEN",$J,"NOBEN")) Q | 
|---|
| 122 | D HDH2 | 
|---|
| 123 | W !!!?25,"EXCEPTION REPORT" | 
|---|
| 124 | W !?10,"The following records were excluded from this report." | 
|---|
| 125 | W !?10,"_____________________________________________________" | 
|---|
| 126 | W !!?5,"Incident Number",?35,"Reason for Exclusion" | 
|---|
| 127 | W !?5,"---------------",?35,"--------------------" | 
|---|
| 128 | S QANE=0 | 
|---|
| 129 | F  S QANE=$O(^TMP("QANBEN",$J,"NOBEN",QANE)) Q:QANE'>0  D | 
|---|
| 130 | . S QANLINE=^TMP("QANBEN",$J,"NOBEN",QANE) | 
|---|
| 131 | . D:$Y>(IOSL-4) HDH^QANBENE2 Q:QANQUIT | 
|---|
| 132 | . W !?6,$P(QANLINE,U),?32,$P(QANLINE,U,2) | 
|---|
| 133 | W !!!?25,"End of Report." | 
|---|
| 134 | Q | 
|---|
| 135 | HDH2 ;header for exception report | 
|---|
| 136 | W @IOF | 
|---|
| 137 | W !?(IOM-$L(QANHEAD(0))\2),QANHEAD(0) | 
|---|
| 138 | W !?(IOM-$L(QANHEAD(1))\2),QANHEAD(1) | 
|---|
| 139 | W !!?(IOM-$L(QANHEAD(2))\2),QANHEAD(2) | 
|---|
| 140 | Q | 
|---|