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