Public
Edited
Oct 18, 2023
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
cdcData2 = await fetchp("https://wonder.cdc.gov/controller/datarequest/D76")
Insert cell
cdcData = (await fetchp("https://wonder.cdc.gov/controller/datarequest/D76", { // fetch with proxy
method: 'POST',
// body: {
// "request_xml":
// //xmlParameters by year and race
// // {
// // "b_parameters" : {
// // "B_1": "D76.V1-level1",
// // "B_2": "D76.V8",
// // "B_3": "*None*",
// // "B_4": "*None*",
// // "B_5": "*None*"
// // },
// // "m_parameters" : {
// // "M_1": "D76.M1", // Deaths, must be included
// // "M_2": "D76.M2", //Population, must be included
// // "M_3": "D76.M3", //Crude rate, must be included
// // "M_31": "D76.M31", //Standard error (crude rate)
// // "M_32": "D76.M32" , // 95% confidence interval (crude rate)
// // "M_41": "D76.M41", // Standard error (age-adjusted rate)
// // "M_42": "D76.M42" // 95% confidence interval (age-adjusted rate)
// // }
// // }
// xmlParameters
// ,
// "accept_datause_restrictions": "true",
// }
})
//.then(response => response.text()).then(response => console.log(response))

.then(response => response.text()))//.split("\n")//.then(xml => xmlToObject(xml)))//.replace(/\t/g,'')//.replace(/\r/g,'')

Insert cell
Insert cell
xml = (new DOMParser).parseFromString(cdcData,"application/xml")
Insert cell
xmlTitle = xml.querySelector('html').textContent
Insert cell
Insert cell
dt = {
let parseXml;
if (typeof window.DOMParser != "undefined") {
parseXml = function(xmlStr) {
console.log('xmlDoc',new window.DOMParser().parseFromString(xmlStr, "text/xml"))
return new window.DOMParser().parseFromString(xmlStr, "text/xml");
};
} else if (typeof window.ActiveXObject != "undefined" &&
new window.ActiveXObject("Microsoft.XMLDOM")) {
parseXml = function(xmlStr) {
var xmlDoc = new window.ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = "false";
xmlDoc.loadXML(xmlStr);
console.log('xmlDoc',xmlDoc)
return xmlDoc;
};
} else {
throw new Error("No XML parser found");
}
return parseXml(cdcData);
}
Insert cell
Insert cell
Insert cell
xml2js = require(await FileAttachment("xml2js.js").url())
Insert cell
parser = new xml2js.Parser();
Insert cell
function xmlToObject(xml) {

return new Promise( function (resolve, reject) {

// transform xml string to an object using xml2js for example
parser.parseString(xml, function(error, obj) {

if (error) reject(error)
console.log("error----------------",error)
resolve(obj)
})
})
}
Insert cell
import {scrape,requireFromGithub,requireScript,load } from "@bumbeishvili/fetcher"
Insert cell
d3 = require('d3')
Insert cell
import {fetchp} from "@tomlarkworthy/fetchp"
Insert cell
//createParameterList = function (parameterList){
// python hekper function
// def createParameterList(parameterList):
// """Helper function to create a parameter list from a dictionary object"""
// parameterString = ""
// for key in parameterList:
// parameterString += "<parameter>\n"
// parameterString += "<name>" + key + "</name>\n"
// if isinstance(parameterList[key], list):
// for value in parameterList[key]:
// parameterString += "<value>" + value + "</value>\n"
// else:
// parameterString += "<value>" + parameterList[key] + "</value>\n"
// parameterString += "</parameter>\n"
// return parameterString
// let parameterString = ""
// for (let key in parameterList){
// parameterString += "<parameter>\n"
// parameterString += "<name>" + key + "</name>\n"
// if (instanceOf(parameterList[key], list)){
// for (let value in parameterList[key]){
// parameterString += "<value>" + value + "</value>\n"
// }
// } else{
// parameterString += "<value>" + parameterList[key] + "</value>\n"
// }
// parameterString += "</parameter>\n"
// }
// return parameterString
// }
Insert cell
cdcData.split("\n").slice(150,170)
Insert cell
// {
// var jdata = new Object();
// var params = xmlParameters;
// var url = "https://corsproxy.io/?https://wonder.cdc.gov/controller/datarequest/D76"
// var xhttp = new XMLHttpRequest();
// xhttp.open("POST", url, true);
// xhttp.setRequestHeader('Content-Type', 'application/xml');

// console.log("xhttp",xhttp);

// xhttp.onreadystatechange = function() {
// console.log("this.status,this.readyState",this.status,this.readyState);
// console.log("this.readyState == 4 && this.status == 200",this.readyState == 4 && this.status == 200);
// if (this.readyState == 4 && this.status == 200) {
// console.log("this.responseText:",this);
// }
// console.log("this.responseText:",this);

// //console.log("this.status,this.readyState",this.status,this.readyState);
// }
// xhttp.send(params);
// }
Insert cell
xmlParameters =

`
<request-parameters>
<parameter>
<name>B_1</name>
<value>D76.V1-level1</value>
</parameter>
<parameter>
<name>B_2</name>
<value>D76.V8</value>
</parameter>
<parameter>
<name>B_3</name>
<value>*None*</value>
</parameter>
<parameter>
<name>B_4</name>
<value>*None*</value>
</parameter>
<parameter>
<name>B_5</name>
<value>*None*</value>
</parameter>
<parameter>
<name>F_D76.V1</name>
<value>2009</value>
<value>2010</value>
<value>2011</value>
<value>2012</value>
<value>2013</value>
</parameter>
<parameter>
<name>F_D76.V10</name>
<value>*All*</value>
</parameter>
<parameter>
<name>F_D76.V2</name>
<value>C00-D48</value>
</parameter>
<parameter>
<name>F_D76.V27</name>
<value>*All*</value>
</parameter>
<parameter>
<name>F_D76.V9</name>
<value>*All*</value>
</parameter>
<parameter>
<name>I_D76.V1</name>
<value>
2009 (2009) 2010 (2010) 2011 (2011) 2012 (2012) 2013 (2013)
</value>
</parameter>
<parameter>
<name>I_D76.V10</name>
<value>*All* (The United States)</value>
</parameter>
<parameter>
<name>I_D76.V2</name>
<value>C00-D48 (Neoplasms)</value>
</parameter>
<parameter>
<name>I_D76.V27</name>
<value>*All* (The United States)</value>
</parameter>
<parameter>
<name>I_D76.V9</name>
<value>*All* (The United States)</value>
</parameter>
<parameter>
<name>M_1</name>
<value>D76.M1</value>
</parameter>
<parameter>
<name>M_2</name>
<value>D76.M2</value>
</parameter>
<parameter>
<name>M_3</name>
<value>D76.M3</value>
</parameter>
<parameter>
<name>M_41</name>
<value>D76.M41</value>
</parameter>
<parameter>
<name>M_42</name>
<value>D76.M42</value>
</parameter>
<parameter>
<name>O_V10_fmode</name>
<value>freg</value>
</parameter>
<parameter>
<name>O_V1_fmode</name>
<value>freg</value>
</parameter>
<parameter>
<name>O_V27_fmode</name>
<value>freg</value>
</parameter>
<parameter>
<name>O_V2_fmode</name>
<value>freg</value>
</parameter>
<parameter>
<name>O_V9_fmode</name>
<value>freg</value>
</parameter>
<parameter>
<name>O_aar</name>
<value>aar_std</value>
</parameter>
<parameter>
<name>O_aar_pop</name>
<value>0000</value>
</parameter>
<parameter>
<name>O_age</name>
<value>D76.V5</value>
</parameter>
<parameter>
<name>O_javascript</name>
<value>on</value>
</parameter>
<parameter>
<name>O_location</name>
<value>D76.V9</value>
</parameter>
<parameter>
<name>O_precision</name>
<value>1</value>
</parameter>
<parameter>
<name>O_rate_per</name>
<value>100000</value>
</parameter>
<parameter>
<name>O_show_totals</name>
<value>true</value>
</parameter>
<parameter>
<name>O_timeout</name>
<value>300</value>
</parameter>
<parameter>
<name>O_title</name>
<value>Example1</value>
</parameter>
<parameter>
<name>O_ucd</name>
<value>D76.V2</value>
</parameter>
<parameter>
<name>O_urban</name>
<value>D76.V19</value>
</parameter>
<parameter>
<name>VM_D76.M6_D76.V10</name>
<value/>
</parameter>
<parameter>
<name>VM_D76.M6_D76.V17</name>
<value>*All*</value>
</parameter>
<parameter>
<name>VM_D76.M6_D76.V1_S</name>
<value>*All*</value>
</parameter>
<parameter>
<name>VM_D76.M6_D76.V7</name>
<value>*All*</value>
</parameter>
<parameter>
<name>VM_D76.M6_D76.V8</name>
<value>*All*</value>
</parameter>
<parameter>
<name>V_D76.V1</name>
<value/>
</parameter>
<parameter>
<name>V_D76.V10</name>
<value/>
</parameter>
<parameter>
<name>V_D76.V11</name>
<value>*All*</value>
</parameter>
<parameter>
<name>V_D76.V12</name>
<value>*All*</value>
</parameter>
<parameter>
<name>V_D76.V17</name>
<value>*All*</value>
</parameter>
<parameter>
<name>V_D76.V19</name>
<value>*All*</value>
</parameter>
<parameter>
<name>V_D76.V2</name>
<value/>
</parameter>
<parameter>
<name>V_D76.V20</name>
<value>*All*</value>
</parameter>
<parameter>
<name>V_D76.V21</name>
<value>*All*</value>
</parameter>
<parameter>
<name>V_D76.V22</name>
<value>*All*</value>
</parameter>
<parameter>
<name>V_D76.V23</name>
<value>*All*</value>
</parameter>
<parameter>
<name>V_D76.V24</name>
<value>*All*</value>
</parameter>
<parameter>
<name>V_D76.V25</name>
<value>*All*</value>
</parameter>
<parameter>
<name>V_D76.V27</name>
<value/>
</parameter>
<parameter>
<name>V_D76.V4</name>
<value>*All*</value>
</parameter>
<parameter>
<name>V_D76.V5</name>
<value>1</value>
<value>1-4</value>
<value>5-14</value>
<value>15-24</value>
<value>25-34</value>
<value>35-44</value>
<value>45-54</value>
<value>55-64</value>
<value>65-74</value>
<value>75-84</value>
<value>85+</value>
</parameter>
<parameter>
<name>V_D76.V51</name>
<value>*All*</value>
</parameter>
<parameter>
<name>V_D76.V52</name>
<value>*All*</value>
</parameter>
<parameter>
<name>V_D76.V6</name>
<value>00</value>
</parameter>
<parameter>
<name>V_D76.V7</name>
<value>*All*</value>
</parameter>
<parameter>
<name>V_D76.V8</name>
<value>*All*</value>
</parameter>
<parameter>
<name>V_D76.V9</name>
<value/>
</parameter>
<parameter>
<name>action-Send</name>
<value>Send</value>
</parameter>
<parameter>
<name>finder-stage-D76.V1</name>
<value>codeset</value>
</parameter>
<parameter>
<name>finder-stage-D76.V10</name>
<value>codeset</value>
</parameter>
<parameter>
<name>finder-stage-D76.V2</name>
<value>codeset</value>
</parameter>
<parameter>
<name>finder-stage-D76.V27</name>
<value>codeset</value>
</parameter>
<parameter>
<name>finder-stage-D76.V9</name>
<value>codeset</value>
</parameter>
<parameter>
<name>stage</name>
<value>request</value>
</parameter>
</request-parameters>`

//var data =
// "<parameter>\n<name>B_1</name>\n<value>D76.V1-level1</value>\n</parameter>\n"
// "<name>" + key + "</name>\n"
//{
// // group by year and race
// "b_parameters" : {
// "B_1": "D76.V1-level1",
// "B_2": "D76.V8",
// "B_3": "*None*",
// "B_4": "*None*",
// "B_5": "*None*"}
// ,
// // include deaths, population, and crude rate
// "m_parameters" : {
// "M_1": "D76.M1", // Deaths, must be included
// "M_2": "D76.M2", // Population, must be included
// "M_3": "D76.M3", // Crude rate, must be included
// "M_31": "D76.M31", // Standard error (crude rate)
// "M_32": "D76.M32", // 95% confidence interval (crude rate)
// "M_41": "D76.M41", // Standard error (age-adjusted rate)
// "M_42": "D76.M42" // 95% confidence interval (age-adjusted rate)
// },
// // include all years, months, census regions, hhs regions, states. Only include ICD-10 K00-K92 for disease of the digestive system
// "f_parameters" : {
// "F_D76.V1": ["*All*"], // year/month
// "F_D76.V10": ["*All*"], // Census Regions - dont change
// "F_D76.V2": ["K00-K92"], // ICD-10 Codes
// "F_D76.V27": ["*All*"], // HHS Regions - dont change
// "F_D76.V9": ["*All*"] // State County - dont change
// },
// // include all dates, census regions, hhs regions, and states.
// "i_parameters" : {
// "I_D76.V1": "*All* (All Dates)", // year/month
// "I_D76.V10": "*All* (The United States)", // Census Regions - dont change
// "I_D76.V2": "K00-K92 (Diseases of the digestive system)", // ICD-10 Codes
// "I_D76.V27": "*All* (The United States)", // HHS Regions - dont change
// "I_D76.V9": "*All* (The United States)" // State County - dont change
// },
// // For this example, we want to include ten-year age groups for ages 15-44.
// // For all other categories, include all values
// "v_parameters" : {
// "V_D76.V1": "", // Year/Month
// "V_D76.V10": "", // Census Regions
// "V_D76.V11": "*All*", // 2006 Urbanization
// "V_D76.V12": "*All*", // ICD-10 130 Cause List (Infants)
// "V_D76.V17": "*All*", // Hispanic Origin
// "V_D76.V19": "*All*", // 2013 Urbanization
// "V_D76.V2": "", // ICD-10 Codes
// "V_D76.V20": "*All*", // Autopsy
// "V_D76.V21": "*All*", // Place of Death
// "V_D76.V22": "*All*", // Injury Intent
// "V_D76.V23": "*All*", // Injury Mechanism and All Other Leading Causes
// "V_D76.V24": "*All*", // Weekday
// "V_D76.V25": "*All*", // Drug/Alcohol Induced Causes
// "V_D76.V27": "", // HHS Regions
// "V_D76.V4": "*All*", // ICD-10 113 Cause List
// "V_D76.V5": ["15-24", "25-34", "35-44"], // Ten-Year Age Groups
// "V_D76.V51": "*All*", // Five-Year Age Groups
// "V_D76.V52": "*All*", // Single-Year Ages
// "V_D76.V6": "00", // Infant Age Groups
// "V_D76.V7": "*All*", // Gender
// "V_D76.V8": "*All*", // Race
// "V_D76.V9": "" // State/County
// },
// //For this example, include age-adjusted rates, use ten-year age groups (D76.V5), use state location by default,
// //show rates per 100,000, use 2013 urbanization and use ICD-10 Codes (D76.V2) for cause of death category
// "o_parameters" : {
// "O_V10_fmode": "freg", // Use regular finder and ignore v parameter value
// "O_V1_fmode": "freg", // Use regular finder and ignore v parameter value
// "O_V27_fmode": "freg", // Use regular finder and ignore v parameter value
// "O_V2_fmode": "freg", // Use regular finder and ignore v parameter value
// "O_V9_fmode": "freg", // Use regular finder and ignore v parameter value
// "O_aar": "aar_std", // age-adjusted rates
// "O_aar_pop": "0000", // population selection for age-adjusted rates
// "O_age": "D76.V5", // select age-group (e.g. ten-year, five-year, single-year, infant groups)
// "O_javascript": "on", // Set to on by default
// "O_location": "D76.V9", // select location variable to use (e.g. state/county, census, hhs regions)
// "O_precision": "1", // decimal places
// "O_rate_per": "100000", // rates calculated per X persons
// "O_show_totals": "false", // Show totals for
// "O_timeout": "300",
// "O_title": "Digestive Disease Deaths, by Age Group", // title for data run
// "O_ucd": "D76.V2", // select underlying cause of death category
// "O_urban": "D76.V19" // select urbanization category
// },
// // values for non-standard age adjusted rates (see mortality online databases).
// // For this example, these parameters are ignored as standard age adjusted rates are used
// "vm_parameters" : {
// "VM_D76.M6_D76.V10": "", // Location
// "VM_D76.M6_D76.V17": "*All*", // Hispanic-Origin
// "VM_D76.M6_D76.V1_S": "*All*", // Year
// "VM_D76.M6_D76.V7": "*All*", // Gender
// "VM_D76.M6_D76.V8": "*All*" // Race
// },
// // Miscellaneous hidden inputs/parameters usually passed by web form. These do not change.
// "misc_parameters" : {
// "action-Send": "Send",
// "finder-stage-D76.V1": "codeset",
// "finder-stage-D76.V1": "codeset",
// "finder-stage-D76.V2": "codeset",
// "finder-stage-D76.V27": "codeset",
// "finder-stage-D76.V9": "codeset",
// "stage": "request"
// }
//}
// return data
//}
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more