Service directories done right
There are two files included in this repository, services--with-sample-data.csv and services.csv. These files will allow you to run an initial import of your data to Outpost.
- Each row in the document must have a unique numeric ID
import_id. If this ID is missing the import script will not run. name- If there are duplicate service names - the script will output an errororganisation- If no organisation exists by this name we will create itorganisation- If this field is blank then we will create an Unnamed organisation for this servicevisible- Ifvisible_fromandvisible_toare set then this field will be set toFALSE
Multiple Rows
Some services can have multiple pieces of data assigned to them. locations, cost, schedule, links and contacts
In order to add multiple locations to a service you would create one entry for your service with the first location in that row. In order to add the second location you would create a new row, with the import_id_reference equal to the service row you created. You then fill in the columns with the additional data.
| Field title | Data format | Description | multiple rows |
|---|---|---|---|
import_id |
Int unique | A unique number to reference this service for additional data | |
import_id_reference |
Int | This field must correspond to the import_id of the service you are targetting |
|
name |
String unique | The name of the service, activity or event | |
description |
Text | A description of your service. Note that in some places this will be truncated. | |
organisation |
String | Name of the organisation, if no organisation exists by this name we will create it. This field can be left blank. | |
url |
String beginning with http or https | The url of this service | |
approved |
Boolean | TRUE or FALSE value to say whether this service has been approved. If this is set to false the service is shown as pending and requires an admin to verify the data. | |
visible_from |
Datetime YYYY-MM-DD (2022-05-17) | Indicates the date from which this service becomes visible. Used on certain frontend applications to hide services that are not relevant at the time | |
visible_to |
Datetime YYYY-MM-DD (2022-05-17) | ||
visible |
Boolean | If true this service can be hidden on the frontend. visible_from and visible_to override this |
|
needs_referral |
Boolean | Does this service require a referral in order to access it | |
min_age |
Int | Can be left blank. Minimum age this service is suitable for. | |
max_age |
Int | Can be left blank. Maximum age this service is suitable for. | |
notes |
Text | Any internal notes about this service | |
service_taxonomies |
semi colon (;) delimited list | A list of values you wish to use as taxonomies, hierarchy is not applied here. | |
contact_name |
String | Name of the contact for this service | TRUE |
contact_title |
String | The role of the contact you are creating | TRUE |
contact_visible |
Boolean | Is this contact visible through the API | TRUE |
contact_email |
String (email) | Contact email address | TRUE |
contact_phone |
String (phone) | Contact phone number | TRUE |
location_name |
String | Name of location | TRUE |
location_latitude |
Float (15.1022 or -1.20202) | Latitude for location | TRUE |
location_longitude |
Float (15.1022 or -1.20202) | Longitude for location | TRUE |
location_address_1 |
String | Address line 1 | TRUE |
location_city |
String | City | TRUE |
location_postcode |
String | Postcode | TRUE |
location_visible |
Boolean | Is this location sent through to the api | TRUE |
mask_exact_address |
Boolean | If this is someones home address or a sensitive location mask the address so only the general area is found | TRUE |
preferred_for_post |
Boolean | Use this address as the preferred postal location for this service | TRUE |
location_accessibilities |
semi colon (;) delimited list | Accessibilities provided by this location | TRUE |
free |
Boolean | Is this service free to use | |
cost_option |
String | Who or what this price is for | TRUE |
cost_amount |
Number 1.0 = £1.0 | TRUE | |
cost_type |
Pre defined list | per day, per half day, per hour, per hour - after school, per hour - before school, per hour - before or after school, per hour - full time, per hour - part time, per hour - weekend, per meal, per month, per session, per term, per week, lower rate for second sibling |
TRUE |
temporarily_closed |
Boolean | Is this service temporarily closed? | |
schedules_opens_at |
time hh:mm:ss (24hr) | On the day selected in scheduled_weekday what time does this service open? |
TRUE |
schedules_closes_at |
time hh:mm:ss (24hr) | On the day selected in scheduled_weekday what time does this service close? |
TRUE |
scheduled_weekday |
predefined string | monday, tuesday, wednesday, thursday, friday, saturday, sunday |
TRUE |
links_label |
String | Title for the link you are adding | TRUE |
links_url |
String (url) | TRUE | |
labels |
semi colon (;) delimited list | List of labels, you can create new ones or use existing ones in your installation | |
suitabilities |
semi colon (;) delimited list | List of suitabilities for this location | |
is_local_offer |
Boolean | Is this service part of the SEND local offer | |
send_needs_support |
semi colon (;) delimited list | Which SEND needs can you support? | |
support_description |
Text | Description of support provided | |
recent_send_report |
Text (url) | Link to most recent SEND report | |
outcomes |
Text | What outcomes does your setting, service or activity aim to achieve for children and young people with SEND and their families? | |
recent_send_training |
Text | What recent SEND-specific training has been completed by your staff and/or volunteers? | |
parental_involvement |
Text | How do you involve parents and how can I get involved? | |
information_sharing |
Text | How will you share information with me about my child’s progress? What is additional for children with SEND? | |
environment_accessibility |
Text | How accessible is the environment (indoors and outdoors)? | |
how_to_start |
Text | How can children and young people with SEND and their families start to use your service or activity? | |
future_plans |
Text | What future plans do you have for developing your SEND provision? | |
custom_<custom_field_type>_<field_name> |
depends | Format for custom fields. The custom fields need to be imported beforehand using the custom fields import task. If there is a free-text type custom field called 'Community review', the column name would be custom_text_community_review for example. |
In the list above we have described semi colon (;) delimited list as an input type. Here are some examples to get you started with some of those data points.
Autism
Learning difficulties
Mental health/acquired brain injury
Visual and / or hearing impediment
Physical disabilities
Older people
Dementia
Accessible toilet facilities
Hoist
Accessible toilet facilities
Hearing loop
Car parking
Changing facilities
British sign language (bsl)
Disabled car parking space
Hoist
Baby changing facilities
Parking nearby
Bus stop nearby
Building has lift
Wheelchair accessible entrance
Partial wheelchair access
Autism
Hearing impairment
Visual impairment
Mobility
Cognitive
If you are using google sheets you can dynamically create lists to track data you have inputted into certain fields. This will help you track down any typos and refine your data further.
This is useful for Organisations, Taxonomies, Suitabilities, Accessibilities, Labels and SEND needs.
This formula will take all data from the 2nd row to infinity and create a unique list based off all the semi colon (;) delimited lists you have entered.
=ArrayFormula(unique(transpose(trim(split(TEXTJOIN(";",true,'Service Data'!O2:O),";")))))
You can preview the delimited field data that will be imported before running the import as a sanity check. That includes data for service taxonomies, accessibilities, labels, suitabilities, SEND needs, and 'select' type custom fields.
To preview this data, run:
rake import:preview_service_data
To run the actual import, run:
rake import:services
By default, both rake tasks will look for a file called services.csv in the
lib/seeds folder.
You can also use data from a different file location on your file system, by passing a file path in to the rake task. This is an optional argument.
To do this, replace <file_path> with the location of the file you
wish to read data from (make sure to keep the quote marks around the task name):
rake 'import:services[<file_path>]'