Bulk Import, on the Data Management tab, brings in many test files at once. Systole handles each file in turn with the same rules it uses for a single test. If it cannot decide something safely, it sets that test aside for you rather than guessing. This page is the detailed companion to Import and Export → Bulk Import.
One rule always applies: a verified test's values change only through an amendment. Bulk Import may add breath-by-breath data to a verified test that has none, but it never changes the test's summary, AT or PFT values, and never amends it for you. To change a verified test, open it, click Amend, and give a reason.
Go to Data Management → Bulk Import, then click
Select Files or Select Folder. Systole
picks up .sum (Breeze) and .pedal files and
ignores everything else. It counts what it found before you start, for
example "42 files selected (40 .sum, 2 .pedal)".
Choose three settings, then click Start Import:
| Setting | Default | What it decides |
|---|---|---|
| Import Status | Preliminary | The status new tests get. Use Historical for old data you only want for trends, and Verified only for tests already signed off elsewhere. |
| Use status from file | On | If a .pedal file carries its own status, that status
wins over the setting above. |
| Duplicate Handling | Review | What happens when a test is already in Systole: send it to Review, skip it, or overwrite it. A verified test is never overwritten here; it goes to Review. |
Try it first with Dry Run. Click Dry Run instead of Start Import to see exactly what these settings would do — file by file: new test, merge, skip, overwrite, sent to Review, or error, and whether a summary would be recalculated. It runs the real import and then undoes all of it, so what it reports is what Start Import will do; nothing is saved. Your file selection is kept, so you can adjust a setting, dry-run again, and then import.
A progress bar shows each file as it goes. When it finishes, a results box lists how many tests were imported, skipped, overwritten or merged, and how many merges found nothing new to add. It also lists patients created or linked, breath data added to verified tests, verified tests sent to Review, items needing review, and any errors. If anything needs review, click Review Matches to go straight to it.
Turn on Merge Mode in Bulk Import when the files are extra data for tests already in Systole, such as a folder of breath-by-breath exports. Systole finds the matching test by its file ID, or by MRN plus date of service. It then compares the test and the file one value at a time, not class by class. The result depends on which side already has data:
| Data class | Existing empty, file has it | Both have it | Existing has it, file empty | Both empty |
|---|---|---|---|---|
| Breath-by-breath data | Added. A verified test gets the breaths and nothing else | Duplicate Handling decides first. If it goes ahead, the file's data replaces the old set whole. A verified test goes to Review instead | Kept | Stays empty |
| CPET summary values (Rest, AT, Peak) | Filled from the file, except on a verified test | Existing value kept; the file's value is ignored | Kept | Stays blank. Merge Mode never calculates a summary; use Fill Missing from BxB afterwards |
| PFT values | Filled from the file, except on a verified test | Existing value kept; the file's value is ignored | Kept | Stays blank |
| Demographics, prescriptions, report text, verification status | Not changed | Not changed | Not changed | Not changed |
If no matching test exists, the file imports as a normal new test, so nothing is lost.
Recalculate summaries from merged breath data (an option under Merge Mode, off by default). Normally a merge adds breath data without changing any summary value the test already has — so a summary typed in or imported earlier can end up describing different data than the test now holds. With this option on, whenever a merge adds or replaces breath data on a Preliminary or Historical test, its Rest / AT / Peak values are recalculated from the breaths, exactly as Recompute from BxB would. Values the breath data can't produce (blood pressure, anything typed in) are left alone. Verified and amended tests are never recalculated — a verified test still gains its breath data, with its values unchanged. Use Dry Run to see which tests would be recalculated.
Timing on a verified test. The file's exercise and recovery markers and its AT time are held, not applied. They take effect only when you amend the test and click Fill Missing from BxB or Recompute from BxB (see Entering CPET Data). Until then the AT stays as verified, including a blank AT the reader chose to leave empty.
Combinations to watch
Common questions
Data Management → Recalculate Summaries from Breath Data recalculates Rest / AT / Peak from breath-by-breath data for many tests at once — the same as Recompute from BxB on each one. Use it after merging breath data without the recalculation option, or after changing your averaging default.
Each test keeps its own averaging method (the one chosen on its 9-panel, else your site default); Breeze-averaged data is summarised as it is, never averaged twice. AT is taken at the test's stored AT time. Values the breath data can't produce are left alone. A test open with unsaved changes is skipped, and recalculated tests that were already sent to REDCap are marked for re-export.
This replaces summary values, including ones typed by hand. On the Exercise tab, Fill Missing from BxB is the gentler option for a single test.
Anything set aside lands in the Records Review sub-tab (see Patient Records → Review). That tab only appears when something is waiting. Click a row to see the imported data next to the existing record, with the differences highlighted.
| Flagged because… | Your choices |
|---|---|
| The patient partly matches someone already in Systole | Link to that patient, create a New Patient, or Skip |
| The test looks like one already in Systole | Overwrite or Skip. On a verified test, Overwrite explains what will change and asks for your reason. (Merge is offered when you Link a patient-match item that turns out to be a duplicate.) |
If the only difference is a name spelled two ways, Link asks which spelling is current. The other one is kept as a searchable alias. Discard All empties the whole queue after you confirm.
When Systole isn't sure, it asks rather than guesses. These tables cover the situations people ask about most.
Matching the patient
| Situation | What Systole does |
|---|---|
| MRN and name both match an existing patient | Links the test to that patient automatically |
| MRN matches, name matches a saved alternate spelling | Links automatically |
| MRN matches, but the name is different | Sends it to Review; never links on MRN alone |
| MRN has extra or missing leading zeros | Treats it as the same MRN |
| No MRN match, but name and date of birth match exactly one patient | Links automatically |
| Name and date of birth match more than one patient | Sends it to Review |
| Nothing matches | Creates a new patient |
Handling tests already in Systole
| Situation | What Systole does |
|---|---|
| Same file ID, or same patient and date of service | Follows your Duplicate Handling choice |
| Duplicate test that belongs to a different patient | Always sends it to Review, whatever you chose |
| You chose Overwrite and the existing test is verified | Sends it to Review instead. Nothing changes until you choose Overwrite there, which asks for your reason and marks the test Amended |
| Merge Mode, and the existing test already has breath-by-breath data | Follows your Duplicate Handling choice before replacing it. A verified test always goes to Review |
| Merge Mode, and no matching test is found | Imports the file as a new test |
Status and summary values
| Situation | What Systole does |
|---|---|
| You import as Verified | Saves each test exactly as the file has it, with no summary calculated from its breath data, and records "Imported as finalized" in its history |
| A test has breath-by-breath data but no summary values | Calculates Rest, AT and Peak using your site's averaging setting, unless the test is imported as Verified |
| Merge Mode adds breath data to a Preliminary or Historical test with Recalculate summaries on | Recalculates its summary from the breaths; values the breath data can't produce are kept |
| Dry Run | Runs the whole import with your settings, reports it file by file, then undoes it — nothing is saved |
| A Breeze file was already averaged in Breeze | Keeps Breeze's summary and does not average it again |
Stopping and errors
| Situation | What Systole does |
|---|---|
| You click Cancel partway through | Stops after the current file. Tests already imported stay imported |
| One file is damaged or unreadable | Skips that file, keeps going, and lists it under Error details |
| The folder has other file types in it | Ignores them silently |