Skip to content

Commit 83e3b70

Browse files
committed
Now handling dates
1 parent e12c64f commit 83e3b70

4 files changed

Lines changed: 44 additions & 3 deletions

File tree

common-data-defs.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,13 @@ const formProfileContent = [
5353
label: 'Sex',
5454
dataFieldKey: 'sex',
5555
},
56+
{
57+
streamId: 'profile-date-of-birth',
58+
eventType: 'date/iso-8601',
59+
type: 'date',
60+
label: 'Date of Birth',
61+
dataFieldKey: 'date-of-birth',
62+
},
5663
{
5764
streamId: 'family-children',
5865
eventType: 'count/generic',

dr-lib.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,16 @@ function dataFieldFromEvent (event) {
117117
value: event.content,
118118
event: event
119119
};
120+
if (dataField.type === 'date') {
121+
// convert the date to a Date object
122+
const date = new Date(event.content);
123+
if (!isNaN(date)) {
124+
field.value = date.toISOString().split('T')[0]; // format YYYY-MM-DD
125+
} else {
126+
console.error('## Error parsing date', event.content);
127+
field.value = '';
128+
}
129+
}
120130
return field;
121131
}
122132

patient-controler.js

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ async function updateFormContent(formKey) {
6666
fieldHTML += `<option value="${option.value}" ${selected}>${option.label}</option>`;
6767
}
6868
fieldHTML += `</select>`;
69+
} else if (fieldType === 'date') {
70+
fieldHTML += `<input type="date" id="${fieldId}" value="${fieldValue}" class="form-control"/>`;
6971
}
7072
// Append the HTML to the form
7173
document.getElementById('inputs-' + formKey).innerHTML += fieldHTML;
@@ -81,8 +83,13 @@ async function submitForm(formKey) {
8183
for (let i = 0; i < formData.length; i++) {
8284
const field = formData[i];
8385
const fieldId = field.id;
84-
const fieldValue = document.getElementById(fieldId).value.trim();
85-
values[field.id] = fieldValue; // Store the value in the values object
86+
const formField = document.getElementById(fieldId);
87+
// Store the value in the values object
88+
if (field.type === 'date') {
89+
values[field.id] = formField.valueAsDate;
90+
} else {
91+
values[field.id] = formField.value.trim();
92+
}
8693
}
8794
await patientLib.handleFormSubmit(formKey, values);
8895
};

patient-lib.js

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,18 @@ async function getFormProfileContent () {
169169
console.log('## getFormContent ' + i, e);
170170
if (e.events && e.events.length > 0) {
171171
const event = e.events[0];
172-
field.value = event.content;
172+
if (field.type === 'date' && event.content != null ) {
173+
// convert the date to a Date object
174+
const date = new Date(event.content);
175+
if (!isNaN(date)) {
176+
field.value = date.toISOString().split('T')[0]; // format YYYY-MM-DD
177+
} else {
178+
console.error('## Error parsing date', event.content);
179+
field.value = '';
180+
}
181+
} else {
182+
field.value = event.content;
183+
}
173184
field.eventId = event.id; // will allow t track if the event is to be updated
174185
}
175186
}
@@ -193,6 +204,12 @@ function parseValue (value, type) {
193204
if (type === 'boolean') {
194205
return value === 'true';
195206
}
207+
if (type === 'date') {
208+
if (value instanceof Date && !isNaN(value)) {
209+
return value.toISOString();
210+
}
211+
return value === '';
212+
}
196213
return value;
197214
}
198215

0 commit comments

Comments
 (0)