-
Notifications
You must be signed in to change notification settings - Fork 10
/
openHealth.js
61 lines (55 loc) · 2.13 KB
/
openHealth.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
console.log("openHealth loaded")
openHealth=function(){}
openHealth.ini=function(){
this.buildUI=function(){};
this.getScript=function(src,fun){
if(Array.isArray(src)){ // multiple scripts are being loaded
if(src.length==1){
openHealth.getScript(src[0],fun);
}else{
openHealth.getScript(src[0],function(){
src.shift(); // remove [0]
openHealth.getScript(src,fun);
});
}
} else {
var s = document.createElement('script');
s.src = src;
if(!!fun){s.onload=fun} // if there is a callback run it
document.head.appendChild(s);
return src; // I never know what to do about returns in asynchronous calls ...
}
};
this.xhr=function(url,meth,fun){ // XMLHttpRequest
if(typeof(meth)=="function"){fun=meth;meth="GET"} // in case this is a regular GET call
var r = new XMLHttpRequest();
if(!!fun){r.onload=fun}; // calback
r.open(meth,url,true);
r.send();
return r
}
this.getJSON=function(url,fun){
this.xhr(url,function(x){fun(JSON.parse(x.target.responseText))});
}
this.sodaData={ // some reference SODA data links
/*
Jonas,
https://www.health.ny.gov/health_care/medicaid/redesign/dsrip_performance_data/
The CSV format can be downloaded:
https://health.data.ny.gov/Health/Medicaid-Chronic-Conditions-Inpatient-Admissions-a/2yck-xisk
For each zip and year there should be two rows. You can add these rows together as they are two distinct sets of people. The Medicaid dual eligible with Medicare (usually over 65) and the straight Medicaid Members.
Janos
*/
"NY Medicare Inpatient":"http://health.data.ny.gov/resource/2yck-xisk.json",
}
this.soda=function(url,q,fun){ // operate Socrata Open Data API (SODA), http://dev.socrata.com/docs/endpoints.html
if(!url.match("http[s]{0,1}://")){ // if url is not a URL then assume it is an entry of openHealth.sodaData
url=this.sodaData[url];
}
if(typeof(q)=="function"){fun=q;q=""}
if(!fun){fun=function(x){console.log(x)}}
this.getJSON(url,fun);
return url
}
}
openHealth.ini();