Skip to content

Commit 95f8966

Browse files
authored
Merge branch 'main' into 1265-fix-import-image-size-discrepancy
2 parents ed790ed + 04d72ca commit 95f8966

File tree

1 file changed

+37
-8
lines changed

1 file changed

+37
-8
lines changed

frontend/src/pages/BulkImport/BulkImportStore.js

Lines changed: 37 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -116,14 +116,43 @@ export class BulkImportStore {
116116
"Encounter.year": {
117117
required: true,
118118
validate: (val) => {
119-
const FORMATS = [
120-
"YYYY",
121-
"YYYY-MM",
122-
"YYYY-MM-DD",
123-
"YYYY-MM-DDTHH",
124-
"YYYY-MM-DDTHH:mm",
125-
];
126-
const parsed = dayjs(val, FORMATS, true);
119+
if (val == null) return false;
120+
const FLEXIBLE_DATE_RE =
121+
/^(\d{4})(?:-(\d{1,2})(?:-(\d{1,2})(?:T(\d{1,2})(?::(\d{1,2}))?)?)?)?$/;
122+
123+
const str = String(val).trim();
124+
if (!str) return false;
125+
126+
const m = str.match(FLEXIBLE_DATE_RE);
127+
if (!m) {
128+
return false;
129+
}
130+
131+
const [, year, month, day, hour, minute] = m;
132+
133+
let normalized = year;
134+
let format = "YYYY";
135+
136+
if (month !== undefined) {
137+
normalized += "-" + month.padStart(2, "0");
138+
format += "-MM";
139+
}
140+
141+
if (day !== undefined) {
142+
normalized += "-" + day.padStart(2, "0");
143+
format += "-DD";
144+
}
145+
146+
if (hour !== undefined) {
147+
normalized += "T" + hour.padStart(2, "0");
148+
format += "[T]HH";
149+
}
150+
151+
if (minute !== undefined) {
152+
normalized += ":" + minute.padStart(2, "0");
153+
format += ":mm";
154+
}
155+
const parsed = dayjs(normalized, format, true);
127156
return parsed.isValid() && !parsed.isAfter(dayjs());
128157
},
129158
message: "BULKIMPORT_ERROR_INVALID_DATEFORMAT",

0 commit comments

Comments
 (0)