Overview
We have extensive experience importing information into OpenFIT, ranging from heavy-duty ETL processes to the self-service approach outlined below.
OpenFIT administrators can import Case, Client, Appointment, and Survey data using a flat-file format. The example below shows a data dictionary for importing Case, Client, Appointment, and ORS/SRS survey data.
For agencies who simply wish to import Case and Client data then please set the ORS_Skip and SRS_Skip values to Y.
Import File Structure
| Column Name | Description |
|---|---|
| Service_Location | [Required] Name of the provider location |
| Provider_FirstName | [Required] First name of the clinician |
| Provider_LastName | [Required] Last name of the clinician |
| Provider_Email | [Required] Email address (unique). This will be the username for OpenFIT. If the user does not exist, OpenFIT will create one with a default Clinician role. |
| Case_ID | [Required] Identifier used to group sessions for a client |
| Case_Date | [Required, yyyy-MM-dd] Start date of the case |
| Session_ID | [Required] Sequential integer within the case (1, 2, 3…), where 1 represents the earliest session by date |
| Session_Date | [Required, yyyy-MM-dd] Session date |
| Client_Gender | [Required] One of: Male, Female, Transfeminine, Transmasculine, GenderExpansiveNonBinary, TwoSpirit, Questioning, DeclinedToState, AdditionalCategory |
| ORS_Skip | [Required] Y or N – Y indicates the ORS was not completed |
| Total_ORS | [Optional, decimal] Total ORS score |
| Notes | [Optional] Saved when the Case (Episode) is created |
Custom Fields
To import custom fields, add one column per custom field. The column header must match the custom field name exactly as shown in the OpenFIT UI.
Do not use GUIDs or internal IDs. Values must match the visible UI values.
Naming Convention
{EntityName}_{FieldName}Where {EntityName} is typically Episode or Client.
Example
An Episode-level custom field called “Has there occurred any changes to the treatment plan?” with the following values:
- Outpatient
- Inpatient
- Residential
- Other
Would appear in the import file as:
Episode_TreatmentSettings
A developer can identify the correct field name by inspecting the data-translate attribute in browser DevTools.

If you need assistance identifying custom field names, contact support@openfit.care.
A forthcoming enhancement to the import screen will list all custom fields enabled for the organisation to simplify this process.
Large Imports and ETL Migrations
For initial data loads or ETL-style migrations from another outcome measurement system, please contact us during the planning phase.
We can support validation and testing in a Sandbox environment prior to importing into Production.
The import template file is attached below.
Importing ORS and SRS Scores
ORS and SRS scores must follow strict validation rules. The ORS_Skip and SRS_Skip fields determine whether OpenFIT imports or ignores supplied scores.
1. Skip Flags (ORS_Skip / SRS_Skip)
Skip = 1 indicates that no survey was completed. All score fields must be blank.
ORS_Skip = 1 ORSQ1–ORSQ4 = blank Total_ORS = blank SRS_Skip = 1 SRSQ1–SRSQ4 = blank Total_SRS = blank
This explicitly records that no survey was completed for the session.
Skip = 0 indicates that a survey was completed. Scores must follow one of the valid formats below.
2. Valid Formats When Skip = 0
Format A — Subscores Only
All four subscores must be provided. The total score must be blank.
ORSQ1–ORSQ4 = numeric values Total_ORS = blank SRSQ1–SRSQ4 = numeric values Total_SRS = blank
A score of 0 is valid only when it reflects an actual client score.
Format B — Total Only
All subscores must be blank. Only the total score is supplied.
ORSQ1–ORSQ4 = blank Total_ORS = numeric SRSQ1–SRSQ4 = blank Total_SRS = numeric
OpenFIT will automatically populate:
Q1 = Q2 = Q3 = Q4 = Total / 4
3. Invalid Combinations
- Partial subscores
- Subscores supplied alongside a total
- Zero used as a placeholder for missing values
- Any structure outside Formats A or B
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article