diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000000..e69de29bb2 diff --git a/404.html b/404.html new file mode 100644 index 0000000000..9980424e0b --- /dev/null +++ b/404.html @@ -0,0 +1,413 @@ + + + +
+ + + + + + + + + + + + + +Dev setup can be found in the README.
+There are two types of development for the code:
+To develop the underlying engine see java.md.
+To develop the underlying information that the simulation works on read below about the resources and data sources
+├── src/main/resources
+| ├── export
+| ├── geogrpahy
+| ├── keep_modules
+| ├── modules
+| ├── physiology
+| ├── providers
+| ├── templates
+| biometrics.yml
+| birthweights.csv
+| bmi_correlations.json
+| cdc_growth_charts.json
+| cdc_wtleninf.csv
+| gdb_disability_weights.csv
+| growth_data_error_rates.json
+| htn_drugs.csv
+| immunization_schedule.json
+| language_lookup.json
+| names.yml
+| nhanes_two_year_olds_bmi.csv
+| race_ethinicity_codes.json
+| shr_mapping.csv
+| telemedicine_config.json
+| us_core_mapping.csv
+
+We'll now highlight a few key files for the simulation inputs
+This file sets the general demographics for the population created during this simulation, such as age distributions and town populations. The meanings of the different columns in this file can be found here.
+The demographics breakdowns are done by the full region rather than per town as information per town was not available.
+Column Name | +Contains | +Data Sources for UK Version | +
---|---|---|
ID | +Town ID number | +monotonically increasing from 1 | +
COUNTY | +County Code where town is located | +TOWN_211CODE column from ONS data table | +
NAME | +Town Name | +TOWN_211NAME column from above ONS table | +
STNAME | +Region Name | +REGION/COUNTRY from above ONS table | +
POPESTIMATE2015 | +Population of that town | +TOTAL population rows for 2019 from above ONS data | +
CTYNAME | +County Name where town is located | +range of wikipedia sites for the towns | +
TOT_POP | +total county population | +ONS Region data | +
Ethnicity (includes ASIAN, BLACK, MIXED, WHITE, OTHER columns) | +Percentage of the population that is of a certain ethnicity1 | +NHS Health Survey England | +
Ages (includes all age breakdown columns) | +percentage of population in different age groups | +Another NHS Health Survey England2 | +
Income (includes all income breakdown columns) | +percentage of population in different income brackets | +ONS Employment data3 | +
LESS_THAN_HS | +fraction of people with no qualifications, or level 1 or 2 of education (as classified by ONS) | +ONS Education data | +
HS_DEGREE | +fraction of people with level 3 education | +Same as above | +
SOME_COLLEGE | +fraction of people with apprenticeships | +Same as above | +
BS_DEGREE | +fraction of people with level 4 education | +Same as above | +
Many of the above sources are complimented by data from the 2021 census
+This file contains information on social determinants of health for the different regions.
+Column Name | +Contains | +Data Sources for UK Version | +
---|---|---|
FOOD_INSECURITY | +percentage of people with food insecurity | +Sheffield University study | +
SEVERE_HOUSING_COST_BURDEN | +percentage of people with severe housing cost burden 4 | +Government English housing survey | +
UNEMPLOYMENT | +percentage of unemployment | +ONS local labour market data | +
NO_VEHICLE_ACCESS | +percentage of the population with no access to a vehicle | +ONS census data | +
Originally called zipcodes.csv but changed to use the English word. Postcode information found here.
+Store for the clinical modules saved as jsons. Most of these are currently based on the original US SyntheaTM version. See index.md for a list of changed modules.
+These file sets different medical facilities for patients to attend in the simulation.
+GP practices in the South West were found in the NHS digital GP Practice Data, and the conversion from postcode to latitude and longitude was done using the grid reference finder.
+Ethnicity categories were changed from the American version to align better with UK ethnicity breakdowns ↩
+Under 18 ages set to 0 as we are only interested in an adult population currently. ↩
+Income brackets don't match exactly, and so estimations of the breakdowns within the brackets used in Synthea had to be done. ↩
+We used data on mortgagors who found affording their mortgage very or fairly difficult (table AT2_8) plus renters who found affording their rent very or fairly difficult over the total number of people surveyed in the study used. This data was only available for the whole country. ↩
+Primary care records are crucial for understanding healthcare interactions at both the population and individual levels. However, these records are difficult to obtain and integrate with other services, hindering innovation due to data unavailability and privacy concerns.
+Our project aims to address this by developing a code base to generate primary care electronic health records. We start by creating a synthetic population that mirrors a region in England, and then adapt the US-based tool Synthea for the English NHS context (particularly focusing on the South West of England). We chose Synthea as it is already a highly developed, accuracy tested synthetic generator, and adapting it is relatively simple with clinical input. It is also highly efficient and quick to generate large amounts of data.
+See the data science website for more details on the aims of the project.
+The aim of Synthea is to produce data that is "Realistic but not real." +This means that data produced by Synthea can be used to trial systems, and to test software and procedures, but it should not be used to draw statistical insight or do analysis.
+The UK adaptation of Synthea has removed several features which were US specific, and integrates UK statistics +Details of the available features can be found here
+The functionality and stability of the release has been "smoke-tested" by assuring valid outputs can be optained when using various option flags described in the documentation.
+In the current release of the UK Adaptation of Synthea there have not been any statistical validations of outputs.
+ + + + + + +The engine behind the simualtion is built in Java and can be seen in src/main/java
├── src/main/java
+| ├── App.java
+
+The App class provides a command-line interface to run the Synthea generation engine. It handles various command-line arguments to configure the simulation, including options for seeding, population size, date ranges, and other settings. The class includes methods to display usage information and to parse and validate the command-line arguments. It then uses these arguments to configure and run the Synthea generator, which simulates patient health records.
+The rest of the Java code has the following structure and documentation is provided mostly through in-line comments.
+├── src/main/java
+| ├── App.java
+| | ├── org/mitre/synthea
+| | | ├── editors
+| | | ├── engine
+| | | ├── export
+| | | ├── helpers
+| | | | ├── physiology
+| | | ├── identity
+| | | ├── modules
+| | | ├── world
+| | | | ├── agents
+| | | | | ├── behaviors
+| | | | ├── concepts
+| | | | ├── geography
+| | | | | ├── quadtree
+
+A couple of key files to note include
+The Generator class is responsible for simulating the creation of a population of people and their health records over time. The population is generated according to configurable options such as population size, seed for random number generation, location, and demographic criteria. The Generator supports multithreaded execution to speed up the simulation process.
+The HealthRecordEditor offers an interface that can be implemented to modify a Synthea Person's HealthRecord. At the end of every time step in the simulation, the Synthea framework will invoke the shouldRun method. If the shouldRun function returns true, the framework will then invoke the process method. The process method will be passed any encounters that were created in the past time step.
+HealthRecordEditors are intended to simulate actions that happen to an individual's health record. This includes loss or corruption of information through user entry error or information system defects.
+HealthRecordEditors SHOULD NOT be used to simulate clinical interactions on the underlying physical state / circumstances of the Synthea Person. Those should be implemented in Synthea modules.
+Module represents the entry point of a generic module.
+The modules
map is the static list of generic modules. It is loaded once per process, and the list of modules is shared between the generated population. Because we share modules across the population, it is important that States are cloned before they are executed. This keeps the "master" copy of the module clean.
The State
class represents an abstract base class for different types of states in a simulation module within the Synthea framework. Each state represents a distinct event or action that occurs to a person (e.g., an encounter, condition onset, procedure, etc.) as part of the simulation of their healthcare journey.
States define the logic for what happens to the person when they are processed by the simulation engine, including transitions to subsequent states based on conditions, time delays, and other factors. Subclasses of State
implement specific behaviors and actions, such as recording a medical condition or administering a medication.
Transition represents all the transition types within the generic module framework.
+This class represents a set of desired demographic information about a Person to be simulated. Typically in Synthea, a person's demographic information is made via random weighted selections and an individual stays in the same place for their entire life. An Entity can be used to specify demographic information. Additionally, information can be supplied that allows the simulation to mimic someone moving their primary place of residence.
+This class contains basic-level demographic information, such as date of birth and gender. More detailed information is contained in Seeds. Each Entity is made up of a list of Seeds, which represent the demographic information for a Person over a specified time range.
+As an example, a Person can have a seed to represent their birthplace. 10 years later, their family moves, so another seed would be added to their record reflecting their new address
+Seeds have one or more Variants. This is a representation of have the demographic information will be when placed in the exported health record. It can be used to represent data errors or variations typically seen in demographic information, such as nicknames, typos, old addresses, etc.
+Various java files for some of the default modules including BloodPressureValueGenerator
, DeathModule
, and the EncounterModule
which defines the threshold for which a patient seeks symptom-driven care.
Files for creating new clincians, persons and providers.
+Ingests the geography information for locations and places.
+ + + + + + +For a current csv run the outputs are stored in the outputs/csv
folder. These output files include:
+- allergies.csv
+- careplans.csv
+- claims_transactions.csv
+- claims.csv
+- conditions.csv
+- devices.csv
+- encounters.csv
+- imaging_studies.csv
+- immunizations.csv
+- medications.csv
+- observations.csv
+- organizations.csv
+- patients.csv
+- procedures.csv
+- providers.csv
+- supplies.csv
PLACEHOLDER
+PLACEHOLDER
+PLACEHOLDER
+ + + + + + +Primary care records are crucial for understanding healthcare interactions at both the population and individual levels. However, these records are difficult to obtain and integrate with other services, hindering innovation due to data unavailability and privacy concerns.
Our project aims to address this by developing a code base to generate primary care electronic health records. We start by creating a synthetic population that mirrors a region in England, and then adapt the US-based tool Synthea for the English NHS context (particularly focusing on the South West of England). We chose Synthea as it is already a highly developed, accuracy tested synthetic generator, and adapting it is relatively simple with clinical input. It is also highly efficient and quick to generate large amounts of data.
See the data science website for more details on the aims of the project.
"},{"location":"#usage-and-limitations","title":"Usage and Limitations","text":"The aim of Synthea is to produce data that is \"Realistic but not real.\" This means that data produced by Synthea can be used to trial systems, and to test software and procedures, but it should not be used to draw statistical insight or do analysis.
The UK adaptation of Synthea has removed several features which were US specific, and integrates UK statistics Details of the available features can be found here
"},{"location":"#evaluation","title":"Evaluation","text":"The functionality and stability of the release has been \"smoke-tested\" by assuring valid outputs can be optained when using various option flags described in the documentation.
In the current release of the UK Adaptation of Synthea there have not been any statistical validations of outputs.
"},{"location":"dev/","title":"Dev setup","text":"Dev setup can be found in the README.
"},{"location":"dev/#development","title":"Development","text":"There are two types of development for the code:
To develop the underlying engine see java.md.
To develop the underlying information that the simulation works on read below about the resources and data sources
\u251c\u2500\u2500 src/main/resources\n| \u251c\u2500\u2500 export\n| \u251c\u2500\u2500 geogrpahy\n| \u251c\u2500\u2500 keep_modules\n| \u251c\u2500\u2500 modules\n| \u251c\u2500\u2500 physiology\n| \u251c\u2500\u2500 providers\n| \u251c\u2500\u2500 templates\n| biometrics.yml\n| birthweights.csv\n| bmi_correlations.json\n| cdc_growth_charts.json\n| cdc_wtleninf.csv\n| gdb_disability_weights.csv\n| growth_data_error_rates.json\n| htn_drugs.csv\n| immunization_schedule.json\n| language_lookup.json\n| names.yml\n| nhanes_two_year_olds_bmi.csv\n| race_ethinicity_codes.json\n| shr_mapping.csv\n| telemedicine_config.json\n| us_core_mapping.csv\n
We'll now highlight a few key files for the simulation inputs
"},{"location":"dev/#geographydemographicscsv","title":"geography/demographics.csv","text":"This file sets the general demographics for the population created during this simulation, such as age distributions and town populations. The meanings of the different columns in this file can be found here.
The demographics breakdowns are done by the full region rather than per town as information per town was not available.
Column Name Contains Data Sources for UK Version ID Town ID number monotonically increasing from 1 COUNTY County Code where town is located TOWN_211CODE column from ONS data table NAME Town Name TOWN_211NAME column from above ONS table STNAME Region Name REGION/COUNTRY from above ONS table POPESTIMATE2015 Population of that town TOTAL population rows for 2019 from above ONS data CTYNAME County Name where town is located range of wikipedia sites for the towns TOT_POP total county population ONS Region data Ethnicity (includes ASIAN, BLACK, MIXED, WHITE, OTHER columns) Percentage of the population that is of a certain ethnicity1 NHS Health Survey England Ages (includes all age breakdown columns) percentage of population in different age groups Another NHS Health Survey England2 Income (includes all income breakdown columns) percentage of population in different income brackets ONS Employment data3 LESS_THAN_HS fraction of people with no qualifications, or level 1 or 2 of education (as classified by ONS) ONS Education data HS_DEGREE fraction of people with level 3 education Same as above SOME_COLLEGE fraction of people with apprenticeships Same as above BS_DEGREE fraction of people with level 4 education Same as aboveMany of the above sources are complimented by data from the 2021 census
"},{"location":"dev/#geographysdohcsv","title":"geography/sdoh.csv","text":"This file contains information on social determinants of health for the different regions.
Column Name Contains Data Sources for UK Version FOOD_INSECURITY percentage of people with food insecurity Sheffield University study SEVERE_HOUSING_COST_BURDEN percentage of people with severe housing cost burden 4 Government English housing survey UNEMPLOYMENT percentage of unemployment ONS local labour market data NO_VEHICLE_ACCESS percentage of the population with no access to a vehicle ONS census data"},{"location":"dev/#geogrpahypostcodescsv","title":"geogrpahy/postcodes.csv","text":"Originally called zipcodes.csv but changed to use the English word. Postcode information found here.
"},{"location":"dev/#modules","title":"modules/","text":"Store for the clinical modules saved as jsons. Most of these are currently based on the original US SyntheaTM version. See index.md for a list of changed modules.
"},{"location":"dev/#providers","title":"providers/","text":"These file sets different medical facilities for patients to attend in the simulation.
GP practices in the South West were found in the NHS digital GP Practice Data, and the conversion from postcode to latitude and longitude was done using the grid reference finder.
Ethnicity categories were changed from the American version to align better with UK ethnicity breakdowns\u00a0\u21a9
Under 18 ages set to 0 as we are only interested in an adult population currently.\u00a0\u21a9
Income brackets don't match exactly, and so estimations of the breakdowns within the brackets used in Synthea had to be done.\u00a0\u21a9
We used data on mortgagors who found affording their mortgage very or fairly difficult (table AT2_8) plus renters who found affording their rent very or fairly difficult over the total number of people surveyed in the study used. This data was only available for the whole country.\u00a0\u21a9
The engine behind the simualtion is built in Java and can be seen in src/main/java
\u251c\u2500\u2500 src/main/java \n| \u251c\u2500\u2500 App.java \n
The App class provides a command-line interface to run the Synthea generation engine. It handles various command-line arguments to configure the simulation, including options for seeding, population size, date ranges, and other settings. The class includes methods to display usage information and to parse and validate the command-line arguments. It then uses these arguments to configure and run the Synthea generator, which simulates patient health records.
"},{"location":"java/#main-code-structure","title":"Main code structure","text":"The rest of the Java code has the following structure and documentation is provided mostly through in-line comments.
\u251c\u2500\u2500 src/main/java \n| \u251c\u2500\u2500 App.java \n| | \u251c\u2500\u2500 org/mitre/synthea\n| | | \u251c\u2500\u2500 editors\n| | | \u251c\u2500\u2500 engine\n| | | \u251c\u2500\u2500 export\n| | | \u251c\u2500\u2500 helpers\n| | | | \u251c\u2500\u2500 physiology\n| | | \u251c\u2500\u2500 identity\n| | | \u251c\u2500\u2500 modules\n| | | \u251c\u2500\u2500 world\n| | | | \u251c\u2500\u2500 agents\n| | | | | \u251c\u2500\u2500 behaviors\n| | | | \u251c\u2500\u2500 concepts\n| | | | \u251c\u2500\u2500 geography\n| | | | | \u251c\u2500\u2500 quadtree\n
A couple of key files to note include
"},{"location":"java/#enginegeneratorjava","title":"engine/Generator.java","text":"The Generator class is responsible for simulating the creation of a population of people and their health records over time. The population is generated according to configurable options such as population size, seed for random number generation, location, and demographic criteria. The Generator supports multithreaded execution to speed up the simulation process.
"},{"location":"java/#enginehealthrecordeditorjava","title":"engine/HealthRecordEditor.java","text":"The HealthRecordEditor offers an interface that can be implemented to modify a Synthea Person's HealthRecord. At the end of every time step in the simulation, the Synthea framework will invoke the shouldRun method. If the shouldRun function returns true, the framework will then invoke the process method. The process method will be passed any encounters that were created in the past time step.
HealthRecordEditors are intended to simulate actions that happen to an individual's health record. This includes loss or corruption of information through user entry error or information system defects.
HealthRecordEditors SHOULD NOT be used to simulate clinical interactions on the underlying physical state / circumstances of the Synthea Person. Those should be implemented in Synthea modules.
"},{"location":"java/#enginemodulejava","title":"engine/Module.java","text":"Module represents the entry point of a generic module.
The modules
map is the static list of generic modules. It is loaded once per process, and the list of modules is shared between the generated population. Because we share modules across the population, it is important that States are cloned before they are executed. This keeps the \"master\" copy of the module clean.
The State
class represents an abstract base class for different types of states in a simulation module within the Synthea framework. Each state represents a distinct event or action that occurs to a person (e.g., an encounter, condition onset, procedure, etc.) as part of the simulation of their healthcare journey.
States define the logic for what happens to the person when they are processed by the simulation engine, including transitions to subsequent states based on conditions, time delays, and other factors. Subclasses of State
implement specific behaviors and actions, such as recording a medical condition or administering a medication.
Transition represents all the transition types within the generic module framework.
"},{"location":"java/#identitiyentityjava","title":"identitiy/Entity.java","text":"This class represents a set of desired demographic information about a Person to be simulated. Typically in Synthea, a person's demographic information is made via random weighted selections and an individual stays in the same place for their entire life. An Entity can be used to specify demographic information. Additionally, information can be supplied that allows the simulation to mimic someone moving their primary place of residence.
This class contains basic-level demographic information, such as date of birth and gender. More detailed information is contained in Seeds. Each Entity is made up of a list of Seeds, which represent the demographic information for a Person over a specified time range.
As an example, a Person can have a seed to represent their birthplace. 10 years later, their family moves, so another seed would be added to their record reflecting their new address
Seeds have one or more Variants. This is a representation of have the demographic information will be when placed in the exported health record. It can be used to represent data errors or variations typically seen in demographic information, such as nicknames, typos, old addresses, etc.
"},{"location":"java/#modules","title":"modules/","text":"Various java files for some of the default modules including BloodPressureValueGenerator
, DeathModule
, and the EncounterModule
which defines the threshold for which a patient seeks symptom-driven care.
Files for creating new clincians, persons and providers.
"},{"location":"java/#worldgeography","title":"world/geography","text":"Ingests the geography information for locations and places.
"},{"location":"outputs/","title":"Example of Outputs from swpc_sythea","text":"For a current csv run the outputs are stored in the outputs/csv
folder. These output files include: - allergies.csv - careplans.csv - claims_transactions.csv - claims.csv - conditions.csv - devices.csv - encounters.csv - imaging_studies.csv - immunizations.csv - medications.csv - observations.csv - organizations.csv - patients.csv - procedures.csv - providers.csv - supplies.csv
PLACEHOLDER
"},{"location":"outputs/#showing-total-activity-by-provider-and-location","title":"Showing total activity by provider and location","text":"PLACEHOLDER
"},{"location":"outputs/#showing-total-number-of-patients-with-hypertension-by-time-within-the-entire-simulation","title":"Showing total number of patients with hypertension by time within the entire simulation","text":"PLACEHOLDER
"},{"location":"ukadaptions/","title":"UK Adaptions to SyntheTM","text":"Stage 1: Removing non-English NHS functions and simplifying the Java to an MVP
Functions relating to:
These functions have all been commented using a UKAdp
tag to keep an audit trail. These adaptions result in 113 sections of code commented out across 16 files (all within the src/main/java/org/mitre/synthea/
).
Stage 2: Adapting Resource files for UK South West Region context
There are still many US-based nuances that need to be dealt with such as payer columns still appearing in the outputs.
Stage 3: Module Update
The Hypertension module and the Hypertension medication module have been made based on the NICE guidelines for hypertension diagnosis, management and medication, together with some clinical input. However, they are still waiting on further clinical input, in particular for the choice of specific medications prescribed.
Find documentation on the differences between NICE and the original version of these modules at: /docs/compare_hypertension_to_nice.pdf
See Readme
"},{"location":"users/#creating-a-patient-dataset","title":"Creating a patient dataset","text":"See the original Synthea documentationt that can be found here.
"},{"location":"users/#interegating-a-patient-dataset","title":"Interegating a patient dataset","text":"PLACEHOLDER
"},{"location":"users/#configuration","title":"Configuration","text":""},{"location":"users/#synthea-properties","title":"Synthea Properties","text":"The src/main/resources/synthea.properties
file controls the main configuration of the simulation
Here is a reduced view of the file for the main configuration options used in swpc_synthea and their default values
exporter.baseDirectory = ./output/\nexporter.use_uuid_filenames = false\nexporter.subfolders_by_id_substring = false\nexporter.years_of_history = 10\nexporter.metadata.export = true\nexporter.encoding = UTF-8\nexporter.csv.export = true\n\n# the number of patients to generate, by default\n# this can be overridden by passing a different value to the Generator constructor\ngenerate.default_population = 5\n\n# the number of threads to use for the generator, set the value to -1 to match the number of\n# available processors (as per Runtime.getRuntime().availableProcessors())\n# defaults to -1 if not specified\ngenerate.thread_pool_size = -1\n\ngenerate.log_patients.detail = simple\n# options are \"none\", \"simple\", or \"detailed\" (without quotes). defaults to simple if another value is used\n# none = print nothing to the console during generation\n# simple = print patient names once they are generated.\n# detailed = print patient names, atributes, vital signs, etc.. May slow down processing\n\ngenerate.timestep = 604800000\n# time is in ms\n# 1000 * 60 * 60 * 24 * 7 = 604800000\n\ngenerate.demographics.default_file = geography/demographics.csv\ngenerate.geography.postcodes.default_file = geography/postcodes.csv\ngenerate.geography.country_code = England\ngenerate.geography.timezones.default_file = geography/timezones.csv\ngenerate.geography.foreign.birthplace.default_file = geography/foreign_birthplace.json\ngenerate.geography.sdoh.default_file = geography/sdoh.csv\n\n# Lookup Table Folder location\ngenerate.lookup_tables = modules/lookup_tables/\n\n# if criteria are provided, (for example, only_dead_patients, only_alive_patients, or a \"patient keep module\" with -k flag)\n# this is the maximum number of times synthea will loop over a single slot attempting to produce a matching patient.\n# after this many failed attempts, it will throw an exception.\n# set this to 0 to allow for unlimited attempts (but be aware of the possibility that it will never complete!)\ngenerate.max_attempts_to_keep_patient = 1000\n\n# Probability of each person having a middle name. 0 is zero, 1.0 is 100% chance.\ngenerate.middle_names = 0.80\n\n# if true, the entire population will use veteran prevalence data\ngenerate.veteran_population_override = false\n\n# these should add up to 1.0\n# weighting and categories are inspired by the following but there are no specific hard numbers to point to\n# http://www.ncbi.nlm.nih.gov/pmc/articles/PMC1694190/pdf/amjph00543-0042.pdf\n# http://www.ncbi.nlm.nih.gov/pubmed/8122813\ngenerate.demographics.socioeconomic.weights.income = 0.2\ngenerate.demographics.socioeconomic.weights.education = 0.7\ngenerate.demographics.socioeconomic.weights.occupation = 0.1\n\ngenerate.demographics.socioeconomic.score.low = 0.0\ngenerate.demographics.socioeconomic.score.middle = 0.25\ngenerate.demographics.socioeconomic.score.high = 0.66\n\ngenerate.demographics.socioeconomic.education.less_than_hs.min = 0.0\ngenerate.demographics.socioeconomic.education.less_than_hs.max = 0.5\ngenerate.demographics.socioeconomic.education.hs_degree.min = 0.1\ngenerate.demographics.socioeconomic.education.hs_degree.max = 0.75\ngenerate.demographics.socioeconomic.education.some_college.min = 0.3\ngenerate.demographics.socioeconomic.education.some_college.max = 0.85\ngenerate.demographics.socioeconomic.education.bs_degree.min = 0.5\ngenerate.demographics.socioeconomic.education.bs_degree.max = 1.0\n\n# The average family size in the US is 3.13. The 2010 FPL for a 3-person household is $18310. Tuned it to $17550 for realistic medicaid/ACA enrollments.\ngenerate.demographics.socioeconomic.income.poverty = 17550\ngenerate.demographics.socioeconomic.income.high = 75000\n\ngenerate.birthweights.default_file = birthweights.csv\ngenerate.birthweights.logging = false\n\n# Providers\ngenerate.providers.hospitals.default_file = providers/hospitals.csv\n# --generate.providers.longterm.default_file = providers/longterm.csv\n# --generate.providers.nursing.default_file = providers/nursing.csv\n# --generate.providers.rehab.default_file = providers/rehab.csv\n# --generate.providers.hospice.default_file = providers/hospice.csv\n# --generate.providers.dialysis.default_file = providers/dialysis.csv\n# --generate.providers.homehealth.default_file = providers/home_health_agencies.csv\n# --generate.providers.veterans.default_file = providers/va_facilities.csv\ngenerate.providers.urgentcare.default_file = providers/urgent_care_facilities.csv\ngenerate.providers.primarycare.default_file = providers/primary_care_facilities.csv\n# --generate.providers.ihs.hospitals.default_file = providers/ihs_facilities.csv\n# --generate.providers.ihs.primarycare.default_file = providers/ihs_centers.csv\n\n# Provider selection behavior\n# How patients select a provider organization:\n# nearest - select the closest provider. See generate.providers.maximum_search_distance\n# random - select randomly.\n# network - select a random provider in your insurance network. same as random except it changes every time the patient switches insurance provider.\n# medicare - select the nearest provider that can bill Medicare. If no Medicare provider is found, it defaults back to \"nearest\".\ngenerate.providers.selection_behavior = nearest\n\n# if a provider cannot be found for a certain type of service,\n# this will default to the nearest hospital.\ngenerate.providers.default_to_hospital_on_failure = true\n\n# Quit Smoking\nlifecycle.quit_smoking.baseline = 0.01\nlifecycle.quit_smoking.timestep_delta = -0.01\nlifecycle.quit_smoking.smoking_duration_factor_per_year = 1.0\n\n# Quit Alcoholism\nlifecycle.quit_alcoholism.baseline = 0.001\nlifecycle.quit_alcoholism.timestep_delta = -0.001\nlifecycle.quit_alcoholism.alcoholism_duration_factor_per_year = 1.0\n\n# Adherence\nlifecycle.adherence.baseline = 0.05\n\n# set this to true to enable randomized \"death by natural causes\"\n# highly recommended if \"only_dead_patients\" is true\nlifecycle.death_by_natural_causes = false\n\n# set this to enable \"death by loss of care\" or missed care,\n# e.g. not covered by insurance or otherwise unaffordable.\n# only functional if \"generate.payers.loss_of_care\" is also true.\nlifecycle.death_by_loss_of_care = false\n\n# Use physiology simulations to generate some VitalSigns\nphysiology.generators.enabled = false\n\n# Allow physiology module states to be executed\n# If false, all Physiology state objects will immediately redirect to the state defined in\n# the alt_direct_transition field\nphysiology.state.enabled = false\n\n# set to true to introduce errors in height, weight and BMI observations for people\n# under 20 years old\ngrowtherrors = false\n
"}]}
\ No newline at end of file
diff --git a/sitemap.xml b/sitemap.xml
new file mode 100644
index 0000000000..385d9675c7
--- /dev/null
+++ b/sitemap.xml
@@ -0,0 +1,33 @@
+
+Stage 1: Removing non-English NHS functions and simplifying the Java to an MVP
+Functions relating to:
+These functions have all been commented using a UKAdp
tag to keep an audit trail. These adaptions result in 113 sections of code commented out across 16 files (all within the src/main/java/org/mitre/synthea/
).
Stage 2: Adapting Resource files for UK South West Region context
+There are still many US-based nuances that need to be dealt with such as payer columns still appearing in the outputs.
+Stage 3: Module Update
+The Hypertension module and the Hypertension medication module have been made based on the NICE guidelines for hypertension diagnosis, management and medication, together with some clinical input. However, they are still waiting on further clinical input, in particular for the choice of specific medications prescribed.
+Find documentation on the differences between NICE and the original version of these modules at: /docs/compare_hypertension_to_nice.pdf
See Readme
+See the original Synthea documentationt that can be found here.
+PLACEHOLDER
+The src/main/resources/synthea.properties
file controls the main configuration of the simulation
Here is a reduced view of the file for the main configuration options used in swpc_synthea and their default values
+exporter.baseDirectory = ./output/
+exporter.use_uuid_filenames = false
+exporter.subfolders_by_id_substring = false
+exporter.years_of_history = 10
+exporter.metadata.export = true
+exporter.encoding = UTF-8
+exporter.csv.export = true
+
+# the number of patients to generate, by default
+# this can be overridden by passing a different value to the Generator constructor
+generate.default_population = 5
+
+# the number of threads to use for the generator, set the value to -1 to match the number of
+# available processors (as per Runtime.getRuntime().availableProcessors())
+# defaults to -1 if not specified
+generate.thread_pool_size = -1
+
+generate.log_patients.detail = simple
+# options are "none", "simple", or "detailed" (without quotes). defaults to simple if another value is used
+# none = print nothing to the console during generation
+# simple = print patient names once they are generated.
+# detailed = print patient names, atributes, vital signs, etc.. May slow down processing
+
+generate.timestep = 604800000
+# time is in ms
+# 1000 * 60 * 60 * 24 * 7 = 604800000
+
+generate.demographics.default_file = geography/demographics.csv
+generate.geography.postcodes.default_file = geography/postcodes.csv
+generate.geography.country_code = England
+generate.geography.timezones.default_file = geography/timezones.csv
+generate.geography.foreign.birthplace.default_file = geography/foreign_birthplace.json
+generate.geography.sdoh.default_file = geography/sdoh.csv
+
+# Lookup Table Folder location
+generate.lookup_tables = modules/lookup_tables/
+
+# if criteria are provided, (for example, only_dead_patients, only_alive_patients, or a "patient keep module" with -k flag)
+# this is the maximum number of times synthea will loop over a single slot attempting to produce a matching patient.
+# after this many failed attempts, it will throw an exception.
+# set this to 0 to allow for unlimited attempts (but be aware of the possibility that it will never complete!)
+generate.max_attempts_to_keep_patient = 1000
+
+# Probability of each person having a middle name. 0 is zero, 1.0 is 100% chance.
+generate.middle_names = 0.80
+
+# if true, the entire population will use veteran prevalence data
+generate.veteran_population_override = false
+
+# these should add up to 1.0
+# weighting and categories are inspired by the following but there are no specific hard numbers to point to
+# http://www.ncbi.nlm.nih.gov/pmc/articles/PMC1694190/pdf/amjph00543-0042.pdf
+# http://www.ncbi.nlm.nih.gov/pubmed/8122813
+generate.demographics.socioeconomic.weights.income = 0.2
+generate.demographics.socioeconomic.weights.education = 0.7
+generate.demographics.socioeconomic.weights.occupation = 0.1
+
+generate.demographics.socioeconomic.score.low = 0.0
+generate.demographics.socioeconomic.score.middle = 0.25
+generate.demographics.socioeconomic.score.high = 0.66
+
+generate.demographics.socioeconomic.education.less_than_hs.min = 0.0
+generate.demographics.socioeconomic.education.less_than_hs.max = 0.5
+generate.demographics.socioeconomic.education.hs_degree.min = 0.1
+generate.demographics.socioeconomic.education.hs_degree.max = 0.75
+generate.demographics.socioeconomic.education.some_college.min = 0.3
+generate.demographics.socioeconomic.education.some_college.max = 0.85
+generate.demographics.socioeconomic.education.bs_degree.min = 0.5
+generate.demographics.socioeconomic.education.bs_degree.max = 1.0
+
+# The average family size in the US is 3.13. The 2010 FPL for a 3-person household is $18310. Tuned it to $17550 for realistic medicaid/ACA enrollments.
+generate.demographics.socioeconomic.income.poverty = 17550
+generate.demographics.socioeconomic.income.high = 75000
+
+generate.birthweights.default_file = birthweights.csv
+generate.birthweights.logging = false
+
+# Providers
+generate.providers.hospitals.default_file = providers/hospitals.csv
+# --generate.providers.longterm.default_file = providers/longterm.csv
+# --generate.providers.nursing.default_file = providers/nursing.csv
+# --generate.providers.rehab.default_file = providers/rehab.csv
+# --generate.providers.hospice.default_file = providers/hospice.csv
+# --generate.providers.dialysis.default_file = providers/dialysis.csv
+# --generate.providers.homehealth.default_file = providers/home_health_agencies.csv
+# --generate.providers.veterans.default_file = providers/va_facilities.csv
+generate.providers.urgentcare.default_file = providers/urgent_care_facilities.csv
+generate.providers.primarycare.default_file = providers/primary_care_facilities.csv
+# --generate.providers.ihs.hospitals.default_file = providers/ihs_facilities.csv
+# --generate.providers.ihs.primarycare.default_file = providers/ihs_centers.csv
+
+# Provider selection behavior
+# How patients select a provider organization:
+# nearest - select the closest provider. See generate.providers.maximum_search_distance
+# random - select randomly.
+# network - select a random provider in your insurance network. same as random except it changes every time the patient switches insurance provider.
+# medicare - select the nearest provider that can bill Medicare. If no Medicare provider is found, it defaults back to "nearest".
+generate.providers.selection_behavior = nearest
+
+# if a provider cannot be found for a certain type of service,
+# this will default to the nearest hospital.
+generate.providers.default_to_hospital_on_failure = true
+
+# Quit Smoking
+lifecycle.quit_smoking.baseline = 0.01
+lifecycle.quit_smoking.timestep_delta = -0.01
+lifecycle.quit_smoking.smoking_duration_factor_per_year = 1.0
+
+# Quit Alcoholism
+lifecycle.quit_alcoholism.baseline = 0.001
+lifecycle.quit_alcoholism.timestep_delta = -0.001
+lifecycle.quit_alcoholism.alcoholism_duration_factor_per_year = 1.0
+
+# Adherence
+lifecycle.adherence.baseline = 0.05
+
+# set this to true to enable randomized "death by natural causes"
+# highly recommended if "only_dead_patients" is true
+lifecycle.death_by_natural_causes = false
+
+# set this to enable "death by loss of care" or missed care,
+# e.g. not covered by insurance or otherwise unaffordable.
+# only functional if "generate.payers.loss_of_care" is also true.
+lifecycle.death_by_loss_of_care = false
+
+# Use physiology simulations to generate some VitalSigns
+physiology.generators.enabled = false
+
+# Allow physiology module states to be executed
+# If false, all Physiology state objects will immediately redirect to the state defined in
+# the alt_direct_transition field
+physiology.state.enabled = false
+
+# set to true to introduce errors in height, weight and BMI observations for people
+# under 20 years old
+growtherrors = false
+
+
+
+
+
+
+
+