![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Компоненты ввода даты в базу данных [D7, IB6.x]
stud1 © (2005-01-22 21:48:00)Уважаемые мастера, пожалуйста посоветуйте. В б.д. требуется хранить даты неких событий, которые могут быть в форматах 1990 ("y"), март 1990 ("m.y"), 1.01.2005 ("d.m.y"). Решили "разложить" дату на составляющие и хранить их в отдельных полях. В режитме просмотра дата "собирается". Если в случае "d.m.y" при вводе даты естественно использование обычного календаря, то как быть при вводе по форматам "m.y" и "y"? Посоветуйте, как быть? Спасибо за внимание.
msguns (2005-01-24 15:22:00) [1]Похожая петрушка с годами-датами в архивном деле. Но тут решение более-менее найдено. Даты, как таковой, нетути (Вернее, есть даты, но это дата регистрации, передачи или утери документа), а есть год. Точнее, два поля: год начала и конца периода, когда документ был создан (найден, начат и т.д.). Если год известен точно, то второе поле=первому. Если год не известен, то в поле примечаний пишется век или диапазон веков.
Причем в БД есть строгое разделение годов: это дата самого документа и период, охватываемый этим документом. Например, том ревизской сказки был начат в таком-то году и охватывает такой-то период.
Т.е. надо разделять все же эти самые "даты" по смысловой и хронологической "нагрузке". Впихать все в одну систему (период, например) категорически нельзя !
Применительно к медкартотеке я бы померкувал над такой системой хронологии:
1.Дата для конкретной записи в конкретном документе (т.е.имеется сам документ)
2.Период для отслеживания истории болезни, который может состоять из двух граничных "дат", каждая из которых представлена годом и месяцем (не обязательно). Ну и для унификации поиска ввел бы специальное поле-признак, где бы указывал тип второй "даты": период в годах, период в месяцах и т.д.
stud (2005-01-24 12:35:00) [2]
> Тогда проще к дате доп. поле - "точность". например, 0
> - день, 1 - месяц, 2 - год
проще уточнить ТЗ и предоставить вод даты на усмотрение врача.
интересно как вводить "а в последнее время ( 3-4 мес.)"
анамнез например тут http://5ka.ru/50/10359/1.html
формировать автоматически можно на основании работы своей системы, а то, что было до этого - хранить например в блоб поле. (хотя формировать такую такую вещь автоматически - интересно что получится)
Sergey13 (2005-01-24 11:24:00) [3]2stud1 (22.01.05 21:48)
>В б.д. требуется хранить даты неких событий, которые могут быть в форматах 1990 ("y"), март 1990 ("m.y"), 1.01.2005 ("d.m.y").
А это правда требуется? ИМХО, тут просто года хатит. Все равно остальная часть даты придумывается.
Danilka (2005-01-24 11:24:00) [4]Тогда проще к дате доп. поле - "точность". например, 0 - день, 1 - месяц, 2 - год.
Соловьев (2005-01-24 11:21:00) [5]можно в проге предусмотреть периоды - после войны, до войны, при Хрущове, Сталине, когда колбаса была по 2.30 8)
Sergey13 (2005-01-24 11:09:00) [6]2[10] Соловьев © (24.01.05 11:04)
>Если пациент знает точно дату
А если он помниттолько, что "после войны уже". Или "при Хрущеве". 8-)
Соловьев (2005-01-24 11:04:00) [7]Мне кажется логично будет хранить 2 даты: начало периода и конец. Если пациент знает точно дату, то эти границы совпадают, если нет. то это начало и конец нужного месяца.
stud (2005-01-24 10:30:00) [8]анамнез заболевания обычно храниться в блобе где и пишут "где-то 5 лет назад" или "не помню точно но кажется тогда"
а если точная дата не известна, кто мешает вытащить интересующий месяц? к тому же отчет составляется обычно за период т.ч.
> Anatoly Podgoretsky © (23.01.05 2:58) [7][Ответить]
вполне логично
aus (2005-01-23 08:31:00) [9]Sergey_Masloff (22.01.05 23:32) [6]
вместо кода врача написано доктор петров и так далее
Как это все мне близко...)))
Anatoly Podgoretsky (2005-01-23 02:58:00) [10]stud1 (22.01.05 22:10) [2]
Почему не корректно, вполне нормально что 1.03.1990 так же и 31.03.1990
И для запросов удобно и проблем не будет, как в случае разделнеия одной сущности на три.
Sergey_Masloff (2005-01-22 23:32:00) [11]Все это классно но у меня складывается твердое впечетление о неправильном проектировании. Если поле даты и оно будет анализироваться - там должны быть дата а не март 2000. Если нужно записать март 2000 нужно просто добавить еще одно текстовое поле.
А то получите не данные а свалку мусора (что и происходит в медицинских учреждениях постоянно - я работая в крупной страховой компании много с ними дела имею и картину знаю. И потом у них в базах вместо кода врача написано доктор петров и так далее. Это конечно лирическое отступление не обращайте внимания.)
Некто (2005-01-22 23:09:00) [12]Используй 3 поля в базе данных и 3 эдита для ввода/редактирования значений, про каледарь забудь, либо эдиты, либо маскэдиты. При "сборе" даты анализируй что было введено, а что нет. Иного решения наверно нету.
stud1 (2005-01-22 22:43:00) [13]To aus
Спасибо. Выборки по датам, безусловно будут, но только по тем, где формат "d.m.y", например, анализы за период... Что касается предложенных Вами вариантов, то оба они, в нашем случае, должны быть интерпретированы в формате "y" как "1990".
aus (2005-01-22 22:31:00) [14]не проще ли в таком случае хранить дату просто в текстовом поле, а то могут последовать такие даты как "конец 1990", "летом 1990".
Или будут какие-то выборки по датам?
stud1 (2005-01-22 22:10:00) [15]To Sergey_Masloff
Спасибо, но это не совсем то. Речь в конечном итоге идет о составлении мед. документа, например анамнеза заболевания. Зачастую о том, что было 10 лет назад пациент говорит именно так:
"март 1990" и интерпретировать это в документе как 1.03.1990 не совсем корректно.
Sergey_Masloff (2005-01-22 22:02:00) [16]Странное решение. Обычно (в 99.9% случаев) применяется система в которой
1990 = 01.01.1990
март 1990 = 01.03.1990
1.01.2005 = 01.01.2005
ну, вобщем, понятна идея? Можно еще ПОСЛЕДНИЙ день брать но это реже встречается.