opensafely-core / opensafely-core/opencodelists

Improve the handling of uploaded csv files

Open
#2,655 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

csv deck-scrubbing
Dominant language
Python
Stars
60
Forks
16
Avg merge
4d 12h
Merged PRs (30d)
17

Description

Why are we doing this?

We insist on uploaded codesets having no header row, and with the clinical codes in the first column. Both of these likely lead to users opening csv files with Excel prior to uploading, but this can lead to truncation of SNOMED ids. It will improve the user's experience if headers are optional, and the clinical codes can be in any column.

How will we know when it's done?

CSV files with or without headers, and with codes in any column, can be successfully imported into OCL.

What are we doing?

One way would be to:

  • upload the csv file
  • present the first n rows (10 maybe) to the user in a modal
  • allow the user to select the first row of data (either by clicking it, or typing the number in a box)
  • allow the user to select the column of clinical codes (again either by clicking it, or typing the number in a box)

Defining delivery tasks guidance

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the existing CSV upload and import entry points, then review how uploaded rows and clinical-code columns are currently selected. Define the user flow for previewing the first rows and selecting the data row and code column; done means CSVs with optional headers and codes in any column import successfully into OCL.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
full-stack
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.