source: smart/trunk/p/C0STBL.m@ 1580

Last change on this file since 1580 was 1571, checked in by George Lilly, 12 years ago

fix for lab units not found and C0STBL analysis routines

File size: 4.5 KB
Line 
1C0STBL ; GPL - Smart Container CREATE A TABLE OF NHINV VALUES;2/22/12 17:05
2 ;;1.0;VISTA SMART CONTAINER;;Sep 26, 2012;Build 4
3 ;Copyright 2012 George Lilly. Licensed under the terms of the GNU
4 ;General Public License See attached copy of the License.
5 ;
6 ;This program is free software; you can redistribute it and/or modify
7 ;it under the terms of the GNU General Public License as published by
8 ;the Free Software Foundation; either version 2 of the License, or
9 ;(at your option) any later version.
10 ;
11 ;This program is distributed in the hope that it will be useful,
12 ;but WITHOUT ANY WARRANTY; without even the implied warranty of
13 ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 ;GNU General Public License for more details.
15 ;
16 ;You should have received a copy of the GNU General Public License along
17 ;with this program; if not, write to the Free Software Foundation, Inc.,
18 ;51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 ;
20 Q
21EN(BEGDFN,DFNCNT,ZPART) ; START IS A DFN
22 I '$D(BEGDFN) S BDGDFN=""
23 I '$D(DFNCNT) S DFNCNT=150
24 I '$D(ZPART) S ZPART=""
25 N ZTBL S ZTBL=$NA(^TMP("C0STBL"))
26 N ZI,ZCNT,ZG
27 S ZI=$O(^DPT(BEGDFN),-1)
28 S ZCNT=1
29 F S ZI=$O(^DPT(ZI)) Q:((+ZI=0)!(ZCNT>DFNCNT)) D ;
30 . S ZCNT=ZCNT+1
31 . W ZI," "
32 . K ZG
33 . D EN^C0SNHIN(.ZG,ZI,ZPART)
34 . M @ZTBL@(ZI)=ZG
35 . K G
36 . N GDIR S GDIR="/home/vista/p/"
37 . D EN^C0SMART(.G,ZI,"med")
38 . I $D(G) W !,$$output^C0XGET1("G",ZI_"-med.rdf",GDIR)
39 . k G
40 . D EN^C0SMART(.G,ZI,"patient")
41 . I $D(G) W !,$$output^C0XGET1("G",ZI_"-patient.rdf",GDIR)
42 . K G
43 . D EN^C0SMART(.G,ZI,"lab")
44 . I $D(G) W !,$$output^C0XGET1("G",ZI_"-lab.rdf",GDIR)
45 . K G
46 . D EN^C0SMART(.G,ZI,"problem")
47 . I $D(G) W !,$$output^C0XGET1("G",ZI_"-problem.rdf",GDIR)
48 Q
49 ;
50LOADHACK ;
51 N ZI
52 F ZI=2:1:374 D ;
53 . D IMPORT^C0XF2N("hack"_ZI_".xml","/home/vista/hack/")
54 Q
55 ;
56LABCNT ; COUNT LAB TESTS AND LOINC CODES
57 K LABCNT,GLOINC,PATCNT
58 S (LABCNT,GLOINC,PATCNT)=0
59 N ZI S ZI=""
60 N GN S GN=$NA(^TMP("C0STBL"))
61 F S ZI=$O(@GN@(ZI)) Q:ZI="" D ;
62 . S PATCNT=PATCNT+1
63 . I '$D(@GN@(ZI,"lab")) Q ;
64 . N ZJ S ZJ=""
65 . F S ZJ=$O(@GN@(ZI,"lab",ZJ)) Q:ZJ="" D ;
66 . . S LABCNT=LABCNT+1
67 . . S X=$G(@GN@(ZI,"lab",ZJ,"loinc@value"))
68 . . I X'="" S GLOINC=GLOINC+1
69 W !,"Total number of patients: ",PATCNT
70 W !,"Total number of lab results: ",LABCNT
71 W !,"Total number of lab results with loinc codes: ",GLOINC
72 W !,"Percentage of lab tests with loinc codes: ",$P((GLOINC/LABCNT)*100,".")_"%"
73 Q
74 ;
75PROBCNT ; COUNT PROBLEMS AND SNOMED CODES
76 K PROBCNT,GSNO,PATCNT
77 S (PROBCNT,GSNO,PATCNT)=0
78 N ZI S ZI=""
79 N GN S GN=$NA(^TMP("C0STBL"))
80 F S ZI=$O(@GN@(ZI)) Q:ZI="" D ;
81 . S PATCNT=PATCNT+1
82 . I '$D(@GN@(ZI,"problem")) Q ;
83 . N ZJ S ZJ=""
84 . F S ZJ=$O(@GN@(ZI,"problem",ZJ)) Q:ZJ="" D ;
85 . . S PROBCNT=PROBCNT+1
86 . . S X=$G(@GN@(ZI,"problem",ZJ,"icd@value"))
87 . . S Y=$$SNOMED^C0SPROB2(X)
88 . . I Y'="" S GSNO=GSNO+1
89 W !,"Total number of patients: ",PATCNT
90 W !,"Total number of problems: ",PROBCNT
91 W !,"Total number of problems with snomed codes: ",GSNO
92 W !,"Percentage of problems with SNOMED codes: ",$P((GSNO/PROBCNT)*100,".")_"%"
93 Q
94 ;
95MEDCNT ; COUNT INPATIENT VS OUTPATIENT MEDICATIONS
96 K MEDCNT,OMED,PATCNT,DOSE,UNITS,FORM,SCHED,ROUTE
97 S (MEDCNT,OMED,GSNO,PATCNT)=0
98 N ZI S ZI=""
99 N GN S GN=$NA(^TMP("C0STBL"))
100 F S ZI=$O(@GN@(ZI)) Q:ZI="" D ;
101 . S PATCNT=PATCNT+1
102 . I '$D(@GN@(ZI,"med")) Q ;
103 . N ZJ S ZJ=""
104 . F S ZJ=$O(@GN@(ZI,"med",ZJ)) Q:ZJ="" D ;
105 . . S MEDCNT=MEDCNT+1
106 . . I $G(@GN@(ZI,"med",ZJ,"vaStatus@value"))="EXPIRED" D Q ;
107 . . . I $D(DEBUG) W !,"Expired Mediation, Skipping"
108 . . I $G(@GN@(ZI,"med",ZJ,"vaType@value"))="I" D Q ;
109 . . . I $D(DEBUG) W !,"Inpatient Med, skipping"
110 . . I $G(@GN@(ZI,"med",ZI,"vaType@value"))="V" D Q ;
111 . . . I $D(DEBUG) W !,"IV Inpatient Med, skipping"
112 . . S OMED=OMED+1
113 . . S X=$G(@GN@(ZI,"med",ZJ,"form@value"))
114 . . S FORM(X)=$G(FORM(X))+1
115 . . S X=$G(@GN@(ZI,"med",ZJ,"doses.dose@dose"))
116 . . I X="" S X="UNKNOWN"
117 . . S DOSE(X)=$G(DOSE(X))+1
118 . . S X=$G(@GN@(ZI,"med",ZJ,"doses.dose@units"))
119 . . I X="" S X="UNKNOWN"
120 . . S UNITS(X)=$G(UNITS(X))+1
121 . . S X=$G(@GN@(ZI,"med",ZJ,"doses.dose@schedule"))
122 . . I X="" S X="UNKNOWN"
123 . . S SCHED(X)=$G(SCHED(X))+1
124 . . S X=$G(@GN@(ZI,"med",ZJ,"doses.dosc@route"))
125 . . I X="" S X="UNKNOWN"
126 . . S ROUTE(X)=$G(ROUTE(X))+1
127 W !,"Total number of patients: ",PATCNT
128 W !,"Total number of medications: ",MEDCNT
129 W !,"Total number of outpatient medications: ",OMED
130 W !,"Percentage of outpatient medications: ",$P((OMED/MEDCNT)*100,".")_"%",!
131 ZWR FORM
132 ZWR DOSE
133 ZWR UNITS
134 ZWR SCHED
135 ZWR ROUTE
136 Q
137 ;
Note: See TracBrowser for help on using the repository browser.