Repository files navigation

hGraph: Your health in one picture.

hGraph is an open source javascript library for visualizing health data.
hGraph is a React component using D3.

hGraph

Demos

React Demo
Patient Demo
Hospital Demo

Installation

This package can be found on npm and installed like so:

$ yarn add hgraph-react
# or
$ npm install hgraph-react

The hGraph component is packaged using webpack.

Usage

hGraph Component Props

Most props are not required and have sensible defaults built in, as listed below.

Prop NameTypeIs RequiredDescriptionDefault
dataarraytrueAn array of objects representing the metrics to display in hGraph (see below)N/A
scorenumberfalseThe overall score (hScore) to display in the center of hGraphN/A
widthnumberfalseThe width in pixels hGraph should render at.600
heightnumberfalseThe height in pixels hGraph should render at.600
marginobjectfalseAn object representing the values for margins around hGraph.{ top: 70, right: 100, bottom: 70, left: 100 }
thresholdMinnumberfalseA number value between 0 and 1 (percentage), determining the position the lower threshold of the healthy range renders at..25
thresholdMaxnumberfalseA number value between 0 and 1 (percentage), determining the position the upper threshold of the healthy range renders at..75
donutHoleFactornumberfalseA number value between 0 and 1 (percentage), determining the amount of hGraph's radius that should be cut out forming the hole in the center of the graph..4
colorstring (hex color code)falseThe color of the points and polygon shape.'#616363'
healthyRangeFillColorstring (hex color code)falseThe color of the healthy range band.'#98bd8e'
fontSizenumberfalseThe size (in pixels) of the font for the labels.16
fontColorstring (hex color code)falseThe color of the labels.'#000'
showAxisLabelbooleanfalseWhether or not axis labels should display around hGraph.true
axisLabelWrapWidthnumberfalseThe width (in pixels) that the labels should wrap text at.80 (Note: use null for no wrapping)
axisLabelOffsetnumberfalseThe distance (in pixels) that axis labels should be offset from the outer bounds of hGraph's 'absolute max' radius.12
areaOpacitynumberfalseThe opacity of the polygon shape.0.25
pointRadiusnumberfalseThe radius (in pixels) of the points for metric values.10
pointLabelWrapWidthnumberfalseThe width (in pixels) that the point labels should wrap text at.null (no wrapping)
pointLabelOffsetnumberfalseThe distance (in pixels) that point labels should be offset from the point.8
hitboxRadiusnumberfalseThe radius (in pixels) of the point hitboxes. (hGraph overlays a transparent hitbox over each point which can help users accurately click/touch points, particularly on mobile devices.)Defaults to props.pointRadius size.
showScorebooleanfalseWhether or not to display the overall score (hScore) in the middle of hGraph.true
scoreFontSizenumberfalseThe size (in pixels) of the font for the overall hGraph score120
scoreFontColorstring (hex color code)falseThe color of the hGraph score.'#000'
zoomFactornumberfalseThe multiplier factor hGraph should zoom in.2.25
zoomTransitionTimenumberfalseThe amount of time (in milliseconds) the zooming animation should take.750
zoomOnPointClickbooleanfalseConfigure if hGraph should zoom in/focus on a clicked point and display child points in the graph.true
onPointClickfunctionfalseCallback function called when a point is clicked. Function is passed 2 arguments: the data object corresponding to the point clicked, and the event.N/A

hGraph Metric Object Properties

Property NameTypeIs RequiredDescription
idstringtrueA unique (compared to all other metrics) identifier string for the metric.
labelstringtrueThe axis display label for the metric.
valuenumbertrueThe patient's recorded value for the metric.
healthyMinnumbertrueThe minimum value possible to still be considered a healthy value.
healthyMaxnumbertrueThe maximum value possible to still be considered a healthy value.
absoluteMinnumbertrueA reasonable minimum possible value for this metric. Note: values below this absolute minimum will be clamped to the min.)
absoluteMaxnumbertrueA reasonable maximum possible value for this metric. Note: values above this absolute maximum will be clamped to the max.
unitLabelstringtrueThe units the metric is measured in, displayed with the metric value.
childrenarrayfalseOptional array of child metrics that comprise this metric. Children metrics should conform to hGraph Metric Objects properties. Children are shown when a point is clicked and hGraph is in the "zoomed in" state.

hMetrics

Set of health metrics to be displayed on the hGraph. A default set is provided but can be tailored to your installation.
hMetrics Component

(steps to edit coming)

hRanges

Defines the healthy range for hMetrics. A default set is provided but should be tailored to your installation.
hRanges Component

(steps to edit coming)

hScore (notional)

hScore is an algorithm for scoring a person's health and can be displayed at the center of the hGraph. hScore is currently a concept and has not been developed.
hScore Component

Synthetic Patient Data

For development and demo’s, we’ve used Synthea for generating synthetic patient data to display in hGraph.

(steps to include coming)

Notable Repos

Project

hGraph has adopted a Code of Conduct that we expect project participants to adhere to.
Please read the full text so that you can understand what actions will and will not be tolerated.

We encourage you to contribute to hGraph!
See the contributing guidelines for how to proceed.

Core Contributors

Founders/Designers: GoInvo is a digital design studio in Boston, crafting the future of healthcare through strategy, creativity, and vision.

Contact Us

hgraph@goinvo.com
Open Office Hours

License

hGraph is Apache 2.0 licensed.

For guidance integrating hGraph into your product or service, contact us at hgraph@goinvo.com.

About

hGraph is an open source javascript library for visualizing health data.

Topics

Resources

Code of conduct

Stars

292 stars

Watchers

33 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

hGraph: Your health in one picture.

hGraph is an open source javascript library for visualizing health data.
hGraph is a React component using D3.

hGraph

Demos

React Demo
Patient Demo
Hospital Demo

Installation

This package can be found on npm and installed like so:

$ yarn add hgraph-react
# or
$ npm install hgraph-react

The hGraph component is packaged using webpack.

Usage

hGraph Component Props

Most props are not required and have sensible defaults built in, as listed below.

Prop NameTypeIs RequiredDescriptionDefault
dataarraytrueAn array of objects representing the metrics to display in hGraph (see below)N/A
scorenumberfalseThe overall score (hScore) to display in the center of hGraphN/A
widthnumberfalseThe width in pixels hGraph should render at.600
heightnumberfalseThe height in pixels hGraph should render at.600
marginobjectfalseAn object representing the values for margins around hGraph.{ top: 70, right: 100, bottom: 70, left: 100 }
thresholdMinnumberfalseA number value between 0 and 1 (percentage), determining the position the lower threshold of the healthy range renders at..25
thresholdMaxnumberfalseA number value between 0 and 1 (percentage), determining the position the upper threshold of the healthy range renders at..75
donutHoleFactornumberfalseA number value between 0 and 1 (percentage), determining the amount of hGraph's radius that should be cut out forming the hole in the center of the graph..4
colorstring (hex color code)falseThe color of the points and polygon shape.'#616363'
healthyRangeFillColorstring (hex color code)falseThe color of the healthy range band.'#98bd8e'
fontSizenumberfalseThe size (in pixels) of the font for the labels.16
fontColorstring (hex color code)falseThe color of the labels.'#000'
showAxisLabelbooleanfalseWhether or not axis labels should display around hGraph.true
axisLabelWrapWidthnumberfalseThe width (in pixels) that the labels should wrap text at.80 (Note: use null for no wrapping)
axisLabelOffsetnumberfalseThe distance (in pixels) that axis labels should be offset from the outer bounds of hGraph's 'absolute max' radius.12
areaOpacitynumberfalseThe opacity of the polygon shape.0.25
pointRadiusnumberfalseThe radius (in pixels) of the points for metric values.10
pointLabelWrapWidthnumberfalseThe width (in pixels) that the point labels should wrap text at.null (no wrapping)
pointLabelOffsetnumberfalseThe distance (in pixels) that point labels should be offset from the point.8
hitboxRadiusnumberfalseThe radius (in pixels) of the point hitboxes. (hGraph overlays a transparent hitbox over each point which can help users accurately click/touch points, particularly on mobile devices.)Defaults to props.pointRadius size.
showScorebooleanfalseWhether or not to display the overall score (hScore) in the middle of hGraph.true
scoreFontSizenumberfalseThe size (in pixels) of the font for the overall hGraph score120
scoreFontColorstring (hex color code)falseThe color of the hGraph score.'#000'
zoomFactornumberfalseThe multiplier factor hGraph should zoom in.2.25
zoomTransitionTimenumberfalseThe amount of time (in milliseconds) the zooming animation should take.750
zoomOnPointClickbooleanfalseConfigure if hGraph should zoom in/focus on a clicked point and display child points in the graph.true
onPointClickfunctionfalseCallback function called when a point is clicked. Function is passed 2 arguments: the data object corresponding to the point clicked, and the event.N/A

hGraph Metric Object Properties

Property NameTypeIs RequiredDescription
idstringtrueA unique (compared to all other metrics) identifier string for the metric.
labelstringtrueThe axis display label for the metric.
valuenumbertrueThe patient's recorded value for the metric.
healthyMinnumbertrueThe minimum value possible to still be considered a healthy value.
healthyMaxnumbertrueThe maximum value possible to still be considered a healthy value.
absoluteMinnumbertrueA reasonable minimum possible value for this metric. Note: values below this absolute minimum will be clamped to the min.)
absoluteMaxnumbertrueA reasonable maximum possible value for this metric. Note: values above this absolute maximum will be clamped to the max.
unitLabelstringtrueThe units the metric is measured in, displayed with the metric value.
childrenarrayfalseOptional array of child metrics that comprise this metric. Children metrics should conform to hGraph Metric Objects properties. Children are shown when a point is clicked and hGraph is in the "zoomed in" state.

hMetrics

Set of health metrics to be displayed on the hGraph. A default set is provided but can be tailored to your installation.
hMetrics Component

(steps to edit coming)

hRanges

Defines the healthy range for hMetrics. A default set is provided but should be tailored to your installation.
hRanges Component

(steps to edit coming)

hScore (notional)

hScore is an algorithm for scoring a person's health and can be displayed at the center of the hGraph. hScore is currently a concept and has not been developed.
hScore Component

Synthetic Patient Data

For development and demo’s, we’ve used Synthea for generating synthetic patient data to display in hGraph.

(steps to include coming)

Notable Repos

Project

hGraph has adopted a Code of Conduct that we expect project participants to adhere to.
Please read the full text so that you can understand what actions will and will not be tolerated.

We encourage you to contribute to hGraph!
See the contributing guidelines for how to proceed.

Core Contributors

Founders/Designers: GoInvo is a digital design studio in Boston, crafting the future of healthcare through strategy, creativity, and vision.

Contact Us

hgraph@goinvo.com
Open Office Hours

License

hGraph is Apache 2.0 licensed.

For guidance integrating hGraph into your product or service, contact us at hgraph@goinvo.com.

About

hGraph is an open source javascript library for visualizing health data.

Topics

Resources

Code of conduct

Stars

292 stars

Watchers

33 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

hGraph: Your health in one picture.

hGraph is an open source javascript library for visualizing health data.
hGraph is a React component using D3.

hGraph

Demos

React Demo
Patient Demo
Hospital Demo

Installation

This package can be found on npm and installed like so:

$ yarn add hgraph-react
# or
$ npm install hgraph-react

The hGraph component is packaged using webpack.

Usage

hGraph Component Props

Most props are not required and have sensible defaults built in, as listed below.

Prop NameTypeIs RequiredDescriptionDefault
dataarraytrueAn array of objects representing the metrics to display in hGraph (see below)N/A
scorenumberfalseThe overall score (hScore) to display in the center of hGraphN/A
widthnumberfalseThe width in pixels hGraph should render at.600
heightnumberfalseThe height in pixels hGraph should render at.600
marginobjectfalseAn object representing the values for margins around hGraph.{ top: 70, right: 100, bottom: 70, left: 100 }
thresholdMinnumberfalseA number value between 0 and 1 (percentage), determining the position the lower threshold of the healthy range renders at..25
thresholdMaxnumberfalseA number value between 0 and 1 (percentage), determining the position the upper threshold of the healthy range renders at..75
donutHoleFactornumberfalseA number value between 0 and 1 (percentage), determining the amount of hGraph's radius that should be cut out forming the hole in the center of the graph..4
colorstring (hex color code)falseThe color of the points and polygon shape.'#616363'
healthyRangeFillColorstring (hex color code)falseThe color of the healthy range band.'#98bd8e'
fontSizenumberfalseThe size (in pixels) of the font for the labels.16
fontColorstring (hex color code)falseThe color of the labels.'#000'
showAxisLabelbooleanfalseWhether or not axis labels should display around hGraph.true
axisLabelWrapWidthnumberfalseThe width (in pixels) that the labels should wrap text at.80 (Note: use null for no wrapping)
axisLabelOffsetnumberfalseThe distance (in pixels) that axis labels should be offset from the outer bounds of hGraph's 'absolute max' radius.12
areaOpacitynumberfalseThe opacity of the polygon shape.0.25
pointRadiusnumberfalseThe radius (in pixels) of the points for metric values.10
pointLabelWrapWidthnumberfalseThe width (in pixels) that the point labels should wrap text at.null (no wrapping)
pointLabelOffsetnumberfalseThe distance (in pixels) that point labels should be offset from the point.8
hitboxRadiusnumberfalseThe radius (in pixels) of the point hitboxes. (hGraph overlays a transparent hitbox over each point which can help users accurately click/touch points, particularly on mobile devices.)Defaults to props.pointRadius size.
showScorebooleanfalseWhether or not to display the overall score (hScore) in the middle of hGraph.true
scoreFontSizenumberfalseThe size (in pixels) of the font for the overall hGraph score120
scoreFontColorstring (hex color code)falseThe color of the hGraph score.'#000'
zoomFactornumberfalseThe multiplier factor hGraph should zoom in.2.25
zoomTransitionTimenumberfalseThe amount of time (in milliseconds) the zooming animation should take.750
zoomOnPointClickbooleanfalseConfigure if hGraph should zoom in/focus on a clicked point and display child points in the graph.true
onPointClickfunctionfalseCallback function called when a point is clicked. Function is passed 2 arguments: the data object corresponding to the point clicked, and the event.N/A

hGraph Metric Object Properties

Property NameTypeIs RequiredDescription
idstringtrueA unique (compared to all other metrics) identifier string for the metric.
labelstringtrueThe axis display label for the metric.
valuenumbertrueThe patient's recorded value for the metric.
healthyMinnumbertrueThe minimum value possible to still be considered a healthy value.
healthyMaxnumbertrueThe maximum value possible to still be considered a healthy value.
absoluteMinnumbertrueA reasonable minimum possible value for this metric. Note: values below this absolute minimum will be clamped to the min.)
absoluteMaxnumbertrueA reasonable maximum possible value for this metric. Note: values above this absolute maximum will be clamped to the max.
unitLabelstringtrueThe units the metric is measured in, displayed with the metric value.
childrenarrayfalseOptional array of child metrics that comprise this metric. Children metrics should conform to hGraph Metric Objects properties. Children are shown when a point is clicked and hGraph is in the "zoomed in" state.

hMetrics

Set of health metrics to be displayed on the hGraph. A default set is provided but can be tailored to your installation.
hMetrics Component

(steps to edit coming)

hRanges

Defines the healthy range for hMetrics. A default set is provided but should be tailored to your installation.
hRanges Component

(steps to edit coming)

hScore (notional)

hScore is an algorithm for scoring a person's health and can be displayed at the center of the hGraph. hScore is currently a concept and has not been developed.
hScore Component

Synthetic Patient Data

For development and demo’s, we’ve used Synthea for generating synthetic patient data to display in hGraph.

(steps to include coming)

Notable Repos

Project

hGraph has adopted a Code of Conduct that we expect project participants to adhere to.
Please read the full text so that you can understand what actions will and will not be tolerated.

We encourage you to contribute to hGraph!
See the contributing guidelines for how to proceed.

Core Contributors

Founders/Designers: GoInvo is a digital design studio in Boston, crafting the future of healthcare through strategy, creativity, and vision.

Contact Us

hgraph@goinvo.com
Open Office Hours

License

hGraph is Apache 2.0 licensed.

For guidance integrating hGraph into your product or service, contact us at hgraph@goinvo.com.

About

hGraph is an open source javascript library for visualizing health data.

Topics

Resources

Code of conduct

Stars

292 stars

Watchers

33 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

hGraph: Your health in one picture.

hGraph is an open source javascript library for visualizing health data.
hGraph is a React component using D3.

hGraph

Demos

React Demo
Patient Demo
Hospital Demo

Installation

This package can be found on npm and installed like so:

$ yarn add hgraph-react
# or
$ npm install hgraph-react

The hGraph component is packaged using webpack.

Usage

hGraph Component Props

Most props are not required and have sensible defaults built in, as listed below.

Prop NameTypeIs RequiredDescriptionDefault
dataarraytrueAn array of objects representing the metrics to display in hGraph (see below)N/A
scorenumberfalseThe overall score (hScore) to display in the center of hGraphN/A
widthnumberfalseThe width in pixels hGraph should render at.600
heightnumberfalseThe height in pixels hGraph should render at.600
marginobjectfalseAn object representing the values for margins around hGraph.{ top: 70, right: 100, bottom: 70, left: 100 }
thresholdMinnumberfalseA number value between 0 and 1 (percentage), determining the position the lower threshold of the healthy range renders at..25
thresholdMaxnumberfalseA number value between 0 and 1 (percentage), determining the position the upper threshold of the healthy range renders at..75
donutHoleFactornumberfalseA number value between 0 and 1 (percentage), determining the amount of hGraph's radius that should be cut out forming the hole in the center of the graph..4
colorstring (hex color code)falseThe color of the points and polygon shape.'#616363'
healthyRangeFillColorstring (hex color code)falseThe color of the healthy range band.'#98bd8e'
fontSizenumberfalseThe size (in pixels) of the font for the labels.16
fontColorstring (hex color code)falseThe color of the labels.'#000'
showAxisLabelbooleanfalseWhether or not axis labels should display around hGraph.true
axisLabelWrapWidthnumberfalseThe width (in pixels) that the labels should wrap text at.80 (Note: use null for no wrapping)
axisLabelOffsetnumberfalseThe distance (in pixels) that axis labels should be offset from the outer bounds of hGraph's 'absolute max' radius.12
areaOpacitynumberfalseThe opacity of the polygon shape.0.25
pointRadiusnumberfalseThe radius (in pixels) of the points for metric values.10
pointLabelWrapWidthnumberfalseThe width (in pixels) that the point labels should wrap text at.null (no wrapping)
pointLabelOffsetnumberfalseThe distance (in pixels) that point labels should be offset from the point.8
hitboxRadiusnumberfalseThe radius (in pixels) of the point hitboxes. (hGraph overlays a transparent hitbox over each point which can help users accurately click/touch points, particularly on mobile devices.)Defaults to props.pointRadius size.
showScorebooleanfalseWhether or not to display the overall score (hScore) in the middle of hGraph.true
scoreFontSizenumberfalseThe size (in pixels) of the font for the overall hGraph score120
scoreFontColorstring (hex color code)falseThe color of the hGraph score.'#000'
zoomFactornumberfalseThe multiplier factor hGraph should zoom in.2.25
zoomTransitionTimenumberfalseThe amount of time (in milliseconds) the zooming animation should take.750
zoomOnPointClickbooleanfalseConfigure if hGraph should zoom in/focus on a clicked point and display child points in the graph.true
onPointClickfunctionfalseCallback function called when a point is clicked. Function is passed 2 arguments: the data object corresponding to the point clicked, and the event.N/A

hGraph Metric Object Properties

Property NameTypeIs RequiredDescription
idstringtrueA unique (compared to all other metrics) identifier string for the metric.
labelstringtrueThe axis display label for the metric.
valuenumbertrueThe patient's recorded value for the metric.
healthyMinnumbertrueThe minimum value possible to still be considered a healthy value.
healthyMaxnumbertrueThe maximum value possible to still be considered a healthy value.
absoluteMinnumbertrueA reasonable minimum possible value for this metric. Note: values below this absolute minimum will be clamped to the min.)
absoluteMaxnumbertrueA reasonable maximum possible value for this metric. Note: values above this absolute maximum will be clamped to the max.
unitLabelstringtrueThe units the metric is measured in, displayed with the metric value.
childrenarrayfalseOptional array of child metrics that comprise this metric. Children metrics should conform to hGraph Metric Objects properties. Children are shown when a point is clicked and hGraph is in the "zoomed in" state.

hMetrics

Set of health metrics to be displayed on the hGraph. A default set is provided but can be tailored to your installation.
hMetrics Component

(steps to edit coming)

hRanges

Defines the healthy range for hMetrics. A default set is provided but should be tailored to your installation.
hRanges Component

(steps to edit coming)

hScore (notional)

hScore is an algorithm for scoring a person's health and can be displayed at the center of the hGraph. hScore is currently a concept and has not been developed.
hScore Component

Synthetic Patient Data

For development and demo’s, we’ve used Synthea for generating synthetic patient data to display in hGraph.

(steps to include coming)

Notable Repos

Project

hGraph has adopted a Code of Conduct that we expect project participants to adhere to.
Please read the full text so that you can understand what actions will and will not be tolerated.

We encourage you to contribute to hGraph!
See the contributing guidelines for how to proceed.

Core Contributors

Founders/Designers: GoInvo is a digital design studio in Boston, crafting the future of healthcare through strategy, creativity, and vision.

Contact Us

hgraph@goinvo.com
Open Office Hours

License

hGraph is Apache 2.0 licensed.

For guidance integrating hGraph into your product or service, contact us at hgraph@goinvo.com.

About

hGraph is an open source javascript library for visualizing health data.

Topics

Resources

Code of conduct

Stars

292 stars

Watchers

33 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

hGraph: Your health in one picture.

hGraph is an open source javascript library for visualizing health data.
hGraph is a React component using D3.

hGraph

Demos

React Demo
Patient Demo
Hospital Demo

Installation

This package can be found on npm and installed like so:

$ yarn add hgraph-react
# or
$ npm install hgraph-react

The hGraph component is packaged using webpack.

Usage

hGraph Component Props

Most props are not required and have sensible defaults built in, as listed below.

Prop NameTypeIs RequiredDescriptionDefault
dataarraytrueAn array of objects representing the metrics to display in hGraph (see below)N/A
scorenumberfalseThe overall score (hScore) to display in the center of hGraphN/A
widthnumberfalseThe width in pixels hGraph should render at.600
heightnumberfalseThe height in pixels hGraph should render at.600
marginobjectfalseAn object representing the values for margins around hGraph.{ top: 70, right: 100, bottom: 70, left: 100 }
thresholdMinnumberfalseA number value between 0 and 1 (percentage), determining the position the lower threshold of the healthy range renders at..25
thresholdMaxnumberfalseA number value between 0 and 1 (percentage), determining the position the upper threshold of the healthy range renders at..75
donutHoleFactornumberfalseA number value between 0 and 1 (percentage), determining the amount of hGraph's radius that should be cut out forming the hole in the center of the graph..4
colorstring (hex color code)falseThe color of the points and polygon shape.'#616363'
healthyRangeFillColorstring (hex color code)falseThe color of the healthy range band.'#98bd8e'
fontSizenumberfalseThe size (in pixels) of the font for the labels.16
fontColorstring (hex color code)falseThe color of the labels.'#000'
showAxisLabelbooleanfalseWhether or not axis labels should display around hGraph.true
axisLabelWrapWidthnumberfalseThe width (in pixels) that the labels should wrap text at.80 (Note: use null for no wrapping)
axisLabelOffsetnumberfalseThe distance (in pixels) that axis labels should be offset from the outer bounds of hGraph's 'absolute max' radius.12
areaOpacitynumberfalseThe opacity of the polygon shape.0.25
pointRadiusnumberfalseThe radius (in pixels) of the points for metric values.10
pointLabelWrapWidthnumberfalseThe width (in pixels) that the point labels should wrap text at.null (no wrapping)
pointLabelOffsetnumberfalseThe distance (in pixels) that point labels should be offset from the point.8
hitboxRadiusnumberfalseThe radius (in pixels) of the point hitboxes. (hGraph overlays a transparent hitbox over each point which can help users accurately click/touch points, particularly on mobile devices.)Defaults to props.pointRadius size.
showScorebooleanfalseWhether or not to display the overall score (hScore) in the middle of hGraph.true
scoreFontSizenumberfalseThe size (in pixels) of the font for the overall hGraph score120
scoreFontColorstring (hex color code)falseThe color of the hGraph score.'#000'
zoomFactornumberfalseThe multiplier factor hGraph should zoom in.2.25
zoomTransitionTimenumberfalseThe amount of time (in milliseconds) the zooming animation should take.750
zoomOnPointClickbooleanfalseConfigure if hGraph should zoom in/focus on a clicked point and display child points in the graph.true
onPointClickfunctionfalseCallback function called when a point is clicked. Function is passed 2 arguments: the data object corresponding to the point clicked, and the event.N/A

hGraph Metric Object Properties

Property NameTypeIs RequiredDescription
idstringtrueA unique (compared to all other metrics) identifier string for the metric.
labelstringtrueThe axis display label for the metric.
valuenumbertrueThe patient's recorded value for the metric.
healthyMinnumbertrueThe minimum value possible to still be considered a healthy value.
healthyMaxnumbertrueThe maximum value possible to still be considered a healthy value.
absoluteMinnumbertrueA reasonable minimum possible value for this metric. Note: values below this absolute minimum will be clamped to the min.)
absoluteMaxnumbertrueA reasonable maximum possible value for this metric. Note: values above this absolute maximum will be clamped to the max.
unitLabelstringtrueThe units the metric is measured in, displayed with the metric value.
childrenarrayfalseOptional array of child metrics that comprise this metric. Children metrics should conform to hGraph Metric Objects properties. Children are shown when a point is clicked and hGraph is in the "zoomed in" state.

hMetrics

Set of health metrics to be displayed on the hGraph. A default set is provided but can be tailored to your installation.
hMetrics Component

(steps to edit coming)

hRanges

Defines the healthy range for hMetrics. A default set is provided but should be tailored to your installation.
hRanges Component

(steps to edit coming)

hScore (notional)

hScore is an algorithm for scoring a person's health and can be displayed at the center of the hGraph. hScore is currently a concept and has not been developed.
hScore Component

Synthetic Patient Data

For development and demo’s, we’ve used Synthea for generating synthetic patient data to display in hGraph.

(steps to include coming)

Notable Repos

Project

hGraph has adopted a Code of Conduct that we expect project participants to adhere to.
Please read the full text so that you can understand what actions will and will not be tolerated.

We encourage you to contribute to hGraph!
See the contributing guidelines for how to proceed.

Core Contributors

Founders/Designers: GoInvo is a digital design studio in Boston, crafting the future of healthcare through strategy, creativity, and vision.

Contact Us

hgraph@goinvo.com
Open Office Hours

License

hGraph is Apache 2.0 licensed.

For guidance integrating hGraph into your product or service, contact us at hgraph@goinvo.com.

About

hGraph is an open source javascript library for visualizing health data.

Topics

Resources

Code of conduct

Stars

292 stars

Watchers

33 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

hGraph: Your health in one picture.

hGraph is an open source javascript library for visualizing health data.
hGraph is a React component using D3.

hGraph

Demos

React Demo
Patient Demo
Hospital Demo

Installation

This package can be found on npm and installed like so:

$ yarn add hgraph-react
# or
$ npm install hgraph-react

The hGraph component is packaged using webpack.

Usage

hGraph Component Props

Most props are not required and have sensible defaults built in, as listed below.

Prop NameTypeIs RequiredDescriptionDefault
dataarraytrueAn array of objects representing the metrics to display in hGraph (see below)N/A
scorenumberfalseThe overall score (hScore) to display in the center of hGraphN/A
widthnumberfalseThe width in pixels hGraph should render at.600
heightnumberfalseThe height in pixels hGraph should render at.600
marginobjectfalseAn object representing the values for margins around hGraph.{ top: 70, right: 100, bottom: 70, left: 100 }
thresholdMinnumberfalseA number value between 0 and 1 (percentage), determining the position the lower threshold of the healthy range renders at..25
thresholdMaxnumberfalseA number value between 0 and 1 (percentage), determining the position the upper threshold of the healthy range renders at..75
donutHoleFactornumberfalseA number value between 0 and 1 (percentage), determining the amount of hGraph's radius that should be cut out forming the hole in the center of the graph..4
colorstring (hex color code)falseThe color of the points and polygon shape.'#616363'
healthyRangeFillColorstring (hex color code)falseThe color of the healthy range band.'#98bd8e'
fontSizenumberfalseThe size (in pixels) of the font for the labels.16
fontColorstring (hex color code)falseThe color of the labels.'#000'
showAxisLabelbooleanfalseWhether or not axis labels should display around hGraph.true
axisLabelWrapWidthnumberfalseThe width (in pixels) that the labels should wrap text at.80 (Note: use null for no wrapping)
axisLabelOffsetnumberfalseThe distance (in pixels) that axis labels should be offset from the outer bounds of hGraph's 'absolute max' radius.12
areaOpacitynumberfalseThe opacity of the polygon shape.0.25
pointRadiusnumberfalseThe radius (in pixels) of the points for metric values.10
pointLabelWrapWidthnumberfalseThe width (in pixels) that the point labels should wrap text at.null (no wrapping)
pointLabelOffsetnumberfalseThe distance (in pixels) that point labels should be offset from the point.8
hitboxRadiusnumberfalseThe radius (in pixels) of the point hitboxes. (hGraph overlays a transparent hitbox over each point which can help users accurately click/touch points, particularly on mobile devices.)Defaults to props.pointRadius size.
showScorebooleanfalseWhether or not to display the overall score (hScore) in the middle of hGraph.true
scoreFontSizenumberfalseThe size (in pixels) of the font for the overall hGraph score120
scoreFontColorstring (hex color code)falseThe color of the hGraph score.'#000'
zoomFactornumberfalseThe multiplier factor hGraph should zoom in.2.25
zoomTransitionTimenumberfalseThe amount of time (in milliseconds) the zooming animation should take.750
zoomOnPointClickbooleanfalseConfigure if hGraph should zoom in/focus on a clicked point and display child points in the graph.true
onPointClickfunctionfalseCallback function called when a point is clicked. Function is passed 2 arguments: the data object corresponding to the point clicked, and the event.N/A

hGraph Metric Object Properties

Property NameTypeIs RequiredDescription
idstringtrueA unique (compared to all other metrics) identifier string for the metric.
labelstringtrueThe axis display label for the metric.
valuenumbertrueThe patient's recorded value for the metric.
healthyMinnumbertrueThe minimum value possible to still be considered a healthy value.
healthyMaxnumbertrueThe maximum value possible to still be considered a healthy value.
absoluteMinnumbertrueA reasonable minimum possible value for this metric. Note: values below this absolute minimum will be clamped to the min.)
absoluteMaxnumbertrueA reasonable maximum possible value for this metric. Note: values above this absolute maximum will be clamped to the max.
unitLabelstringtrueThe units the metric is measured in, displayed with the metric value.
childrenarrayfalseOptional array of child metrics that comprise this metric. Children metrics should conform to hGraph Metric Objects properties. Children are shown when a point is clicked and hGraph is in the "zoomed in" state.

hMetrics

Set of health metrics to be displayed on the hGraph. A default set is provided but can be tailored to your installation.
hMetrics Component

(steps to edit coming)

hRanges

Defines the healthy range for hMetrics. A default set is provided but should be tailored to your installation.
hRanges Component

(steps to edit coming)

hScore (notional)

hScore is an algorithm for scoring a person's health and can be displayed at the center of the hGraph. hScore is currently a concept and has not been developed.
hScore Component

Synthetic Patient Data

For development and demo’s, we’ve used Synthea for generating synthetic patient data to display in hGraph.

(steps to include coming)

Notable Repos

Project

hGraph has adopted a Code of Conduct that we expect project participants to adhere to.
Please read the full text so that you can understand what actions will and will not be tolerated.

We encourage you to contribute to hGraph!
See the contributing guidelines for how to proceed.

Core Contributors

Founders/Designers: GoInvo is a digital design studio in Boston, crafting the future of healthcare through strategy, creativity, and vision.

Contact Us

hgraph@goinvo.com
Open Office Hours

License

hGraph is Apache 2.0 licensed.

For guidance integrating hGraph into your product or service, contact us at hgraph@goinvo.com.

About

hGraph is an open source javascript library for visualizing health data.

Topics

Resources

Code of conduct

Stars

292 stars

Watchers

33 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

hGraph: Your health in one picture.

hGraph is an open source javascript library for visualizing health data.
hGraph is a React component using D3.

hGraph

Demos

React Demo
Patient Demo
Hospital Demo

Installation

This package can be found on npm and installed like so:

$ yarn add hgraph-react
# or
$ npm install hgraph-react

The hGraph component is packaged using webpack.

Usage

hGraph Component Props

Most props are not required and have sensible defaults built in, as listed below.

Prop NameTypeIs RequiredDescriptionDefault
dataarraytrueAn array of objects representing the metrics to display in hGraph (see below)N/A
scorenumberfalseThe overall score (hScore) to display in the center of hGraphN/A
widthnumberfalseThe width in pixels hGraph should render at.600
heightnumberfalseThe height in pixels hGraph should render at.600
marginobjectfalseAn object representing the values for margins around hGraph.{ top: 70, right: 100, bottom: 70, left: 100 }
thresholdMinnumberfalseA number value between 0 and 1 (percentage), determining the position the lower threshold of the healthy range renders at..25
thresholdMaxnumberfalseA number value between 0 and 1 (percentage), determining the position the upper threshold of the healthy range renders at..75
donutHoleFactornumberfalseA number value between 0 and 1 (percentage), determining the amount of hGraph's radius that should be cut out forming the hole in the center of the graph..4
colorstring (hex color code)falseThe color of the points and polygon shape.'#616363'
healthyRangeFillColorstring (hex color code)falseThe color of the healthy range band.'#98bd8e'
fontSizenumberfalseThe size (in pixels) of the font for the labels.16
fontColorstring (hex color code)falseThe color of the labels.'#000'
showAxisLabelbooleanfalseWhether or not axis labels should display around hGraph.true
axisLabelWrapWidthnumberfalseThe width (in pixels) that the labels should wrap text at.80 (Note: use null for no wrapping)
axisLabelOffsetnumberfalseThe distance (in pixels) that axis labels should be offset from the outer bounds of hGraph's 'absolute max' radius.12
areaOpacitynumberfalseThe opacity of the polygon shape.0.25
pointRadiusnumberfalseThe radius (in pixels) of the points for metric values.10
pointLabelWrapWidthnumberfalseThe width (in pixels) that the point labels should wrap text at.null (no wrapping)
pointLabelOffsetnumberfalseThe distance (in pixels) that point labels should be offset from the point.8
hitboxRadiusnumberfalseThe radius (in pixels) of the point hitboxes. (hGraph overlays a transparent hitbox over each point which can help users accurately click/touch points, particularly on mobile devices.)Defaults to props.pointRadius size.
showScorebooleanfalseWhether or not to display the overall score (hScore) in the middle of hGraph.true
scoreFontSizenumberfalseThe size (in pixels) of the font for the overall hGraph score120
scoreFontColorstring (hex color code)falseThe color of the hGraph score.'#000'
zoomFactornumberfalseThe multiplier factor hGraph should zoom in.2.25
zoomTransitionTimenumberfalseThe amount of time (in milliseconds) the zooming animation should take.750
zoomOnPointClickbooleanfalseConfigure if hGraph should zoom in/focus on a clicked point and display child points in the graph.true
onPointClickfunctionfalseCallback function called when a point is clicked. Function is passed 2 arguments: the data object corresponding to the point clicked, and the event.N/A

hGraph Metric Object Properties

Property NameTypeIs RequiredDescription
idstringtrueA unique (compared to all other metrics) identifier string for the metric.
labelstringtrueThe axis display label for the metric.
valuenumbertrueThe patient's recorded value for the metric.
healthyMinnumbertrueThe minimum value possible to still be considered a healthy value.
healthyMaxnumbertrueThe maximum value possible to still be considered a healthy value.
absoluteMinnumbertrueA reasonable minimum possible value for this metric. Note: values below this absolute minimum will be clamped to the min.)
absoluteMaxnumbertrueA reasonable maximum possible value for this metric. Note: values above this absolute maximum will be clamped to the max.
unitLabelstringtrueThe units the metric is measured in, displayed with the metric value.
childrenarrayfalseOptional array of child metrics that comprise this metric. Children metrics should conform to hGraph Metric Objects properties. Children are shown when a point is clicked and hGraph is in the "zoomed in" state.

hMetrics

Set of health metrics to be displayed on the hGraph. A default set is provided but can be tailored to your installation.
hMetrics Component

(steps to edit coming)

hRanges

Defines the healthy range for hMetrics. A default set is provided but should be tailored to your installation.
hRanges Component

(steps to edit coming)

hScore (notional)

hScore is an algorithm for scoring a person's health and can be displayed at the center of the hGraph. hScore is currently a concept and has not been developed.
hScore Component

Synthetic Patient Data

For development and demo’s, we’ve used Synthea for generating synthetic patient data to display in hGraph.

(steps to include coming)

Notable Repos

Project

hGraph has adopted a Code of Conduct that we expect project participants to adhere to.
Please read the full text so that you can understand what actions will and will not be tolerated.

We encourage you to contribute to hGraph!
See the contributing guidelines for how to proceed.

Core Contributors

Founders/Designers: GoInvo is a digital design studio in Boston, crafting the future of healthcare through strategy, creativity, and vision.

Contact Us

hgraph@goinvo.com
Open Office Hours

License

hGraph is Apache 2.0 licensed.

For guidance integrating hGraph into your product or service, contact us at hgraph@goinvo.com.

About

hGraph is an open source javascript library for visualizing health data.

Topics

Resources

Code of conduct

Stars

292 stars

Watchers

33 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

hGraph: Your health in one picture.

hGraph is an open source javascript library for visualizing health data.
hGraph is a React component using D3.

hGraph

Demos

React Demo
Patient Demo
Hospital Demo

Installation

This package can be found on npm and installed like so:

$ yarn add hgraph-react
# or
$ npm install hgraph-react

The hGraph component is packaged using webpack.

Usage

hGraph Component Props

Most props are not required and have sensible defaults built in, as listed below.

Prop NameTypeIs RequiredDescriptionDefault
dataarraytrueAn array of objects representing the metrics to display in hGraph (see below)N/A
scorenumberfalseThe overall score (hScore) to display in the center of hGraphN/A
widthnumberfalseThe width in pixels hGraph should render at.600
heightnumberfalseThe height in pixels hGraph should render at.600
marginobjectfalseAn object representing the values for margins around hGraph.{ top: 70, right: 100, bottom: 70, left: 100 }
thresholdMinnumberfalseA number value between 0 and 1 (percentage), determining the position the lower threshold of the healthy range renders at..25
thresholdMaxnumberfalseA number value between 0 and 1 (percentage), determining the position the upper threshold of the healthy range renders at..75
donutHoleFactornumberfalseA number value between 0 and 1 (percentage), determining the amount of hGraph's radius that should be cut out forming the hole in the center of the graph..4
colorstring (hex color code)falseThe color of the points and polygon shape.'#616363'
healthyRangeFillColorstring (hex color code)falseThe color of the healthy range band.'#98bd8e'
fontSizenumberfalseThe size (in pixels) of the font for the labels.16
fontColorstring (hex color code)falseThe color of the labels.'#000'
showAxisLabelbooleanfalseWhether or not axis labels should display around hGraph.true
axisLabelWrapWidthnumberfalseThe width (in pixels) that the labels should wrap text at.80 (Note: use null for no wrapping)
axisLabelOffsetnumberfalseThe distance (in pixels) that axis labels should be offset from the outer bounds of hGraph's 'absolute max' radius.12
areaOpacitynumberfalseThe opacity of the polygon shape.0.25
pointRadiusnumberfalseThe radius (in pixels) of the points for metric values.10
pointLabelWrapWidthnumberfalseThe width (in pixels) that the point labels should wrap text at.null (no wrapping)
pointLabelOffsetnumberfalseThe distance (in pixels) that point labels should be offset from the point.8
hitboxRadiusnumberfalseThe radius (in pixels) of the point hitboxes. (hGraph overlays a transparent hitbox over each point which can help users accurately click/touch points, particularly on mobile devices.)Defaults to props.pointRadius size.
showScorebooleanfalseWhether or not to display the overall score (hScore) in the middle of hGraph.true
scoreFontSizenumberfalseThe size (in pixels) of the font for the overall hGraph score120
scoreFontColorstring (hex color code)falseThe color of the hGraph score.'#000'
zoomFactornumberfalseThe multiplier factor hGraph should zoom in.2.25
zoomTransitionTimenumberfalseThe amount of time (in milliseconds) the zooming animation should take.750
zoomOnPointClickbooleanfalseConfigure if hGraph should zoom in/focus on a clicked point and display child points in the graph.true
onPointClickfunctionfalseCallback function called when a point is clicked. Function is passed 2 arguments: the data object corresponding to the point clicked, and the event.N/A

hGraph Metric Object Properties

Property NameTypeIs RequiredDescription
idstringtrueA unique (compared to all other metrics) identifier string for the metric.
labelstringtrueThe axis display label for the metric.
valuenumbertrueThe patient's recorded value for the metric.
healthyMinnumbertrueThe minimum value possible to still be considered a healthy value.
healthyMaxnumbertrueThe maximum value possible to still be considered a healthy value.
absoluteMinnumbertrueA reasonable minimum possible value for this metric. Note: values below this absolute minimum will be clamped to the min.)
absoluteMaxnumbertrueA reasonable maximum possible value for this metric. Note: values above this absolute maximum will be clamped to the max.
unitLabelstringtrueThe units the metric is measured in, displayed with the metric value.
childrenarrayfalseOptional array of child metrics that comprise this metric. Children metrics should conform to hGraph Metric Objects properties. Children are shown when a point is clicked and hGraph is in the "zoomed in" state.

hMetrics

Set of health metrics to be displayed on the hGraph. A default set is provided but can be tailored to your installation.
hMetrics Component

(steps to edit coming)

hRanges

Defines the healthy range for hMetrics. A default set is provided but should be tailored to your installation.
hRanges Component

(steps to edit coming)

hScore (notional)

hScore is an algorithm for scoring a person's health and can be displayed at the center of the hGraph. hScore is currently a concept and has not been developed.
hScore Component

Synthetic Patient Data

For development and demo’s, we’ve used Synthea for generating synthetic patient data to display in hGraph.

(steps to include coming)

Notable Repos

Project

hGraph has adopted a Code of Conduct that we expect project participants to adhere to.
Please read the full text so that you can understand what actions will and will not be tolerated.

We encourage you to contribute to hGraph!
See the contributing guidelines for how to proceed.

Core Contributors

Founders/Designers: GoInvo is a digital design studio in Boston, crafting the future of healthcare through strategy, creativity, and vision.

Contact Us

hgraph@goinvo.com
Open Office Hours

License

hGraph is Apache 2.0 licensed.

For guidance integrating hGraph into your product or service, contact us at hgraph@goinvo.com.

About

hGraph is an open source javascript library for visualizing health data.

Topics

Resources

Code of conduct

Stars

292 stars

Watchers

33 watching

Forks

Releases

Packages

Used by

Contributors

Languages