Utilities to analyse population and deprivation data.
Project description
ESNEFT Analysis - Diabetes Inequalities
Table of contents
Installation
Installation is possible via pip
as shown below.
Unix/macOS
python3 -m pip install esneft_tools
Windows
py -m pip install esneft_tools
Install within a Virtual Environment (optional)
Unix/macOS
python -m venv esneft_tools
source esneft_tools/bin/activate
python3 -m pip install esneft_tools
Windows
py -m venv esneft_tools
esneft_tools/Scripts/Activate.ps1
py -m pip install esneft_tools
If running scripts is disabled on your system then run the following command before activating your environment.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Geospatial Dependencies (optional)
Additional geospatial utilities may be optionally installed as below. Note these packages have non-trivial dependencies and automatic installation may not work on all systems.
An additional optional dependency, OSMnx, must be installed by the user. Please refer to the OSMnx documentation for further installation instructions.
Clear here for code
Unix/macOS
python3 -m pip install esneft_tools[geo]
Windows
py -m pip install esneft_tools[geo]
Setup
The logging level of esneft_tools
can be set via the setVerbosity()
function.
import logging
from esneft_tools.utils import setVerbosity
from esneft_tools import download, process, visualise
setVerbosity(logging.INFO)
Retrieve Public Data
Download
From Host
Each of the esneft_tools.download.getData().fromHost()
functions retrieve a static copy of a particular data set from GitHub.
A local copy of these tables is saved to ./.data-cache/
by default.
Each can be obtained individually but it is recommended to retrieve all data, as below.
# Instantiate data download class.
getData = download.getData(cache='./.data-cache')
# Retrieve all data as dictionary (recommended)
data = getData.fromHost('all')
all
(default)- Retrieve all of the below data in dictionary format (recommended).
postcodeLSOA
- Postcode -> LSOA (2011) lookup Table from ArcGIS
imdLSOA
- Indices of Deprivation by LSOA in England from National Statistics (.gov.uk)
populationLSOA
- LSOA population estimates, by age and sex, from ONS
ethnicityLSOA
- Proportion of ethnicity minorities (non-white) by LSOA from NOMIS
areaLSOA
- Land hectare measures by LSOA from ArcGIS
gpRegistration
- GP registration by LSOA NHS Digital
gpPractice
- GP Practice information from NHS Digital
gpStaff
- GPs by GP Practices from NHS Digital
qof
- Quality and Outcomes Framework, 2021-22 from NHS Digital
geoLSOA
- LSOA GeoJSON from UK Data Service
esneftLSOA
- List of LSOAs within ESNEFT trust.
esneftOSM
- OpenStreetMap (OSM) data for ESNEFT area from Geofabrik
From Source
Alternatively, the .fromSource()
method can be used to retrieve each dataset directly from its public source.
By default, esneft_tools
will retrieve the source data that matches the fromHost()
methods.
Each source URL can be updated to newer versions by providing a YAML file to download.getData()
as shown below.
An example of the YAML file is shown here.
Clear here for code
# Instantiate data download class.
getData = download.getData(sourceURL='sourceURL.yaml', cache='./.data-cache')
# Retrieve a specific dataset from host.
# Note: "all" does not work with .fromSource().
imdLSOA = getData.fromSource('imdLSOA')
Processing
Aggregate by Practice Level
The getGPsummary
function aggregates the downloaded data to practice level statistics.
GPsummary = process.getGPsummary(**data, iod_cols='IMD')
Field | Description |
---|---|
OrganisationCode | Practice Service Code |
IMD | Mean Index of Multiple Deprivation of Registered Patients |
Patient | Total Registered Patients |
QOF-DM | QOF achievement for Diabetes mellitus (max 76) |
DM-prevalance | Prevalence of Diabetes mellitus |
PCDS | Postcode |
OpenDate | Opening Date |
CloseDate | Closing Date |
Status | Service Status (e.g. Active) |
PrescribingSetting | Service Type (e.g. GP Practice) |
currentStaff | Current Practitioners |
departedStaff | Total Departed Practitioners |
meanStaff | Average Working Practitioners |
annualStaffTurnover | Mean Annual % Practitioner Turnover |
Lat | Latitude of Site |
Long | Longitude of Site |
patientPerGP | Total Registered Patient per Average Practitioner Count |
ESNEFT | Boolean Flag of Practices within ESNEFT |
Node | Closest OSM Map Node to Site |
Aggregate by LSOA Level
The getLSOAsummary
function aggregates the downloaded data LSOA level statistics.
LSOAsummary = process.getLSOAsummary(**data, iod_cols='IMD')
Field | Description |
---|---|
LSOA11CD | LSOA (2011) Code |
LSOA11NM | LSOA (2011) Name |
Age (median) | Median Age of Population |
Population | Population Estimate (2011 Census) |
LandHectare | Land Area (Hectares) |
Patient | Total Registered GP Patients |
IMD | Index of Multiple Deprivation |
IMD (q5) | Index of Multiple Deprivation (quintiles) |
DM-prevalance | Prevalence of Diabetes mellitus |
Density | Population Density |
ESNEFT | Boolean Flag of LSOAs within ESNEFT |
Visualise
Practice Map
fig = visualise.scatterGP(GPsummary[GPsummary['Status'] == 'Active'], minCount=250)
Map of Practice Distributions within ESNEFT (Plotly Interactive)
LSOA Map
fig = visualise.choroplethLSOA(LSOAsummary, data['geoLSOA'], colour='IMD')
Choropleth Map of LSOA Domains within ESNEFT coloured by IMD (Plotly Interactive)
Further Documentation
Refer to the additional documentation for further examples of functionality.
Contributing
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
See CONTRIBUTING.md for detailed guidance.
License
Distributed under the MIT License. See LICENSE for more information.
Contact
If you have any other questions please contact the author, Stephen Richer.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file esneft_tools-0.1.4.tar.gz
.
File metadata
- Download URL: esneft_tools-0.1.4.tar.gz
- Upload date:
- Size: 23.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 14fcd8e30a25574f30074f565646e5e89425096f0f7cb950e9c1d09fdc45e05c |
|
MD5 | 2021acfa98d338423d78cc49a21526c7 |
|
BLAKE2b-256 | 77ec2c5e2fb48c35b872e82ca2aa762f7944294ca15002c3f24fa5047179b3ce |
File details
Details for the file esneft_tools-0.1.4-py3-none-any.whl
.
File metadata
- Download URL: esneft_tools-0.1.4-py3-none-any.whl
- Upload date:
- Size: 21.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1f97626aa677e2633fc5c8f378d70cbb46cc98d04af8024116899f73423f5492 |
|
MD5 | 982966b78e142d281773b1dd0b7fdde5 |
|
BLAKE2b-256 | 522261f52806208e94fff7cca0652bd82f5e1d09b6b843ad1d90322de42d2eca |