|
Возраст в днях месяцах и годах - как хранить и как определить в какой промежуток попадает? | ☑ | ||
---|---|---|---|---|
0
RomaH
naïve
09.07.19
✎
06:57
|
Лаборатория - референсные значения показателей анализов от возраста пациента:
0-4 дня 4 дня - 2 месяца 2 месяца - 2 года нижняя граница - включая, верхняя исключая как это привести в "машиночитаемый" вид 0-3 дня 4-59 дня 2-24 месяца если так - то на границе 2 и 3 строки есть пересечение и выпадение - в зависимости от даты рождения и даты проведения анализа - 31 день или 28 дней в месяце |
|||
1
Irbis
09.07.19
✎
07:05
|
Если в годах, месяцах, днях то через разность дат и три числа. А можно в граммах, то есть днях. тогда все границы тоже должны быть в днях.
|
|||
2
Лодырь
09.07.19
✎
07:05
|
(0) Задай этот вопрос постановщику задачи.
|
|||
3
RomaH
naïve
09.07.19
✎
07:13
|
(1) в днях
если пациенту нет 2 лет - то норма 9.3 если есть - норма 9.0 задал 730 день для верхней границы (исключая) попался високосный год пациенту еще нет двух лет по календарю, программа думает что есть - показатель 9.2 |
|||
4
PuhUfa
09.07.19
✎
07:18
|
Храни не только границу, но и в каких "единицах" она измеряется.
|
|||
5
Йохохо
09.07.19
✎
07:20
|
(3) это уже не вывод данных, а анализ. Думаю надо делать по ТЗ
|
|||
6
SleepyHead
гуру
09.07.19
✎
07:24
|
(2) Вы когда-нибудь с врачами работали? Я работал 4 года, получить четкий ответ просто нереально.
|
|||
7
Bigbro
09.07.19
✎
07:29
|
(6) я работал в медицине. там есть отдел организационно-методической работы, общаться надо с ними а не с врачами. если руководитель адекватный (а это чаще всего так, ибо вся экспертиза висит на этом отделе, а это весьма ответственное дело) - можно легко обсудить все нюансы и выяснить ожидаемое поведение программы. и при високосных годах и когда день рождения пациента на 29 февраля приходится и т.п.
|
|||
8
Irbis
09.07.19
✎
07:35
|
(3) Тут или замуж, или мороженое. Предсьтавь себе что високосный год у 1,5 годовалого пациента взяли анализ 19 февраля. 01.03 он действителен?
ТЗ по задаче должно исключить все серые зоны в любом их сочетании. В (7) правильно написали, по ТЗ общаться нужно с методологами, если потребуется экспертное мнение специалиста, они сами ему вопрос поставят и ответ выцарапают. |
|||
9
Лефмихалыч
09.07.19
✎
07:39
|
(0) а зачем это приводить в машиночитаемый вид? Что ты будешь птом с этой машиночитаемостью делать?
|
|||
10
RomaH
naïve
09.07.19
✎
07:42
|
(9) автоматически помечать положительный анализ или отрицательный
|
|||
11
RomaH
naïve
09.07.19
✎
07:44
|
(9) + вывод референсных значений в печатной форме
Не просто Сахар 9 мг/л а Сахар 9 мг/л норма - от 8 до 10 мг/л |
|||
12
Йохохо
09.07.19
✎
07:47
|
(10) это не та область где можно думать и пытаться сделать лучше, чем тебе написали в задании
|
|||
13
RomaH
naïve
09.07.19
✎
11:29
|
никаких идей?
|
|||
14
PuhUfa
09.07.19
✎
11:37
|
(11) Вы сами анализы делаете?
|
|||
15
palsergeich
09.07.19
✎
11:38
|
(0) Самый простой способ и, скорее всего верный:
1) Перечисление ТипыГраницДат. где будут 3 значения - 3дня, 2 мес и 2 года 2) РегистрыСведений - границыОсобыхДат. 2Измерения - физлицо(Пациент) + Перечисление ТипыГраницДат Ресурс - Дата 3) При добавлении нового пациента - эти даты заполняются сразу на основании Даты рождения. Не надо это вычисять в полете, високосные года, 28,29,30,31 - наловишь исключений, просто к дате рождения прибавляешь это и хранишь |
|||
16
Garykom
гуру
09.07.19
✎
11:39
|
(13) Идея простая - не надо хранить возраст, храни дату и время рождения.
|
|||
17
palsergeich
09.07.19
✎
11:43
|
(15) Добавление месяца - это очень скользкая тема, есть несколько методологий, что такое добавить месяц.
Но скорее всего платформенный ДобавитьМесяц() - это то что тебе надо, или уточни. |
|||
18
Asmody
09.07.19
✎
11:45
|
(13) Самая правильная идея подробно описана в (7). Надо ходить не на форумы, а к людям, которые это все уже делают десятилетиями "на бумаге".
|
|||
19
palsergeich
09.07.19
✎
11:45
|
(17)
0-3 дня 4-59 дня 60 дней-24 месяца Как правило это так, но лучше уточнить у постановщика |
|||
20
palsergeich
09.07.19
✎
11:45
|
(18) Угу
|
|||
21
RomaH
naïve
09.07.19
✎
11:49
|
(18) мозг такая странная штука - он понимает что возраст попадает в период описанный фразой "от 40 дней до 2 месяцев"
а вот как машине это объяснить |
|||
22
RomaH
naïve
09.07.19
✎
11:50
|
(15) есть способ проще и 100% верный
|
|||
23
Garykom
гуру
09.07.19
✎
11:50
|
(21) Сначала объясни машине из скольких дней состоит 1 месяц.
|
|||
24
RomaH
naïve
09.07.19
✎
11:51
|
(23) зачем? машине надо объяснить только каков возраст человека на определенную дату
это мы умеем |
|||
25
Garykom
гуру
09.07.19
✎
11:52
|
(24) ОК перефразирую.
Кто попадет в интервал "от 60 дней до 2 месяцев" ? |
|||
26
RomaH
naïve
09.07.19
✎
11:52
|
периоды возрастов - непрерывны
верхняя граница не нужна |
|||
27
RomaH
naïve
09.07.19
✎
11:53
|
(25) у того у кого возраст будет >= 60 дней, но меньше 2 месяцев
|
|||
28
RomaH
naïve
09.07.19
✎
11:53
|
(25) прикинь
|
|||
29
Sayan_mi
09.07.19
✎
11:53
|
По моему проще по верхней границе и разнице дат
< 4 дн иначе (разница в днях) < 2 мес иначе (разница в месяцах) < 2 лет …. (разница в годах) |
|||
30
RomaH
naïve
09.07.19
✎
11:54
|
(25) например родившиеся 1 июля и сдавшие анализ 31 августа
|
|||
31
Garykom
гуру
09.07.19
✎
11:55
|
(30) У тебя странное представление о единицах измерения времени.
Длина месяца в днях = кол-во дней в году / 12 |
|||
32
RomaH
naïve
09.07.19
✎
11:56
|
(31) а по-моему - у тебя
каков возраст ребенка 31 августа, если он родился 1 июля этого года? |
|||
33
ice777
09.07.19
✎
11:56
|
есть же произвольные периоды.
ну и функция, дата в периоде или нет, наваять можно. |
|||
34
ice777
09.07.19
✎
11:56
|
(31) это среднемесячное )
|
|||
35
Garykom
гуру
09.07.19
✎
11:57
|
(31)+ Для длины года "в днях" выбираю любое подходящее, причем большинство не целые:
Продолжительность: 346,620047 дня — драконический год, промежуток времени, по истечении которого Солнце возвращается к тому же узлу лунной орбиты. 353, 354 или 355 дней — продолжительность невисокосных лет в некоторых лунно-солнечных календарях. 354,37 дней — лунный год, 12 лунных месяцев; средняя длина года в лунных календарях. 365 дней — невисокосный год во многих солнечных календарях; 31 536 000 с. 365,242199 дня — средний тропический год (усреднённый по всем точкам эклиптики промежуток времени, в течение которого Солнце возвращается в прежнюю позицию относительно эклиптики и земного экватора) на эпоху 2000 года. 365,24220 дня — средний тропический год на эпоху 1900,0. 365,24222 дня — средняя продолжительность года в новоюлианском календаре. 365,24(24) дня — средняя продолжительность года в иранском календаре, разработанном Омаром Хайамом. 365,2424 дня — средний интервал между двумя весенними равноденствиями на эпоху 2000 года. 365,2425 дня (точно) — средняя продолжительность года в григорианском календаре. 365,25 дня (точно) — юлианский год, средняя продолжительность года в юлианском календаре; равен точно 31 557 600 с. 365,2564 дня — сидерический (звёздный) год; период обращения Земли вокруг Солнца относительно неподвижных звёзд. 365,259641 дня — аномалистический год, промежуток времени между двумя последовательными прохождениями Земли через перигелий. 366 дней — високосный год во многих солнечных календарях; 31 622 400 с. 383, 384 или 385 дней — продолжительность високосного года в некоторых лунно-солнечных календарях. 383,9 дня — 13 лунных месяцев; високосный год в некоторых лунно-солнечных календарях. |
|||
36
Garykom
гуру
09.07.19
✎
11:59
|
(35)+ И да учти что со временем (веками но мы же надеемся что 1С не сгинет) длина года "в днях" будет меняться.
|
|||
37
Garykom
гуру
09.07.19
✎
12:01
|
Так что заводишь периодический РС и пишешь туда свои используемые в настоящее время соответствия между единицами измерения времени.
А в базе хранишь только дату+время и промежутки в секундах например. |
|||
38
RomaH
naïve
09.07.19
✎
12:01
|
(35) так мы сейчас перейдем к пересмотру "догм" - и по имеющимся точкам построим функцию для расчета "правильной" нормы на любой момент времени
что было-бы правильнее, на мой взгляд, ... но от меня требуют соблюдать "догмы" - заказчик не готов к революции |
|||
39
Garykom
гуру
09.07.19
✎
12:02
|
И да в сутках количество секунд оно тоже меняется ))
|
|||
40
RomaH
naïve
09.07.19
✎
12:04
|
ладно - решение простое
хранить нижнюю границу 0 дней 4 дня 15 дней 2 месяца 6 месяцев 2 года 18 лет считаем возраст в трех измерениях и находим максимальную границу которая меньше полученного возраста |
|||
41
Garykom
гуру
09.07.19
✎
12:04
|
(38) Ну так выясни требуемые догмы и запиши их в свой РС (37)
|
|||
42
Garykom
гуру
09.07.19
✎
12:05
|
Прочитать
https://ru.wikipedia.org/wiki/Единицы_измерения_времени Хранить время в https://ru.wikipedia.org/wiki/Секунда "Секунда — время, равное 9 192 631 770 периодам излучения, соответствующего переходу между двумя сверхтонкими уровнями основного состояния атома цезия-133." |
|||
43
Fish
09.07.19
✎
12:06
|
А что за лаборатория можно узнать? Чтобы случайно туда не обратиться :))
|
|||
44
Garykom
гуру
09.07.19
✎
12:07
|
(42)+ И надеяться что с СТО (от Эйнштейна) столкнуться не придется )) А то задолбаешься поправки вводить в свой РС дополнительно )))
|
|||
45
PuhUfa
09.07.19
✎
12:08
|
(32) >> каков возраст ребенка 31 августа, если он родился 1 июля этого года?
В днях или месяцах? Не зря в поликлиниках спрашивают возраст "в полных лет", "полных месяцах". Заведи тип границы, день/месяц/год. И если у тебя тип границы день, но считай для проверки вхождения возраст в днях, если тип "месяц", то в месяцах. А вообще это похоже на изобретение велосипеда. Вот я сижу смотрю сейчас у себя приходящие xml с анализами и в них: <Test TestID="TSH"> <Value>2.1791</Value> <NormalValue>0.3500 - 4.9400</NormalValue> <NormalValueMin>0.3500</NormalValueMin> <NormalValueMax>4.9400</NormalValueMax> <ValueDate>2019-07-09</ValueDate> или <Tests><Test TestID="FIBRYNOGEN"> <Value>2.14</Value> <NormalValue>2.00 - 4.00</NormalValue> <NormalValueMin>2.00</NormalValueMin> <NormalValueMax>4.00</NormalValueMax> <ValueDate>2019-07-07</ValueDate> все блин давно посчитано за нас -((( |
|||
46
RomaH
naïve
09.07.19
✎
12:11
|
(45) ну так - что бы пришло правильное <NormalValue>2.00 - 4.00</NormalValue>
должна быть правильная таблица соответствий входящих параметров этим нормам я ж не говорю, что я решаю совсем новую задачу - это давно изобретенный велосипед |
|||
47
RomaH
naïve
09.07.19
✎
12:12
|
(45) ну так сколько ребенку полных месяцев 31 августа?
|
|||
48
kzot
09.07.19
✎
12:12
|
Вроде как ЗУП стаж сотрудников давно считать изволит в количестве месяцев и дней, смотрите на рс "НакопленныеСтажиФизическихЛиц" и не изобретайте.
|
|||
49
RomaH
naïve
09.07.19
✎
12:13
|
(48) очередной писатель
|
|||
50
PuhUfa
09.07.19
✎
12:15
|
(47) один
|
|||
51
Лодырь
09.07.19
✎
12:18
|
(47) Задумайтесь над вопросом, с чего бы нормативы показателей детей проживших одинаковое количество дней должны отличаться? Потом все же идите к постановщику задачи.
|
|||
52
Лефмихалыч
09.07.19
✎
12:24
|
(13) надо опираться на количество ПОЛНЫХ лет, а всю эту полюбень с августами и сентябрями из головы выкинуть.
С днями и месяцами такая же петрушка. Високосные нахрен тоже выкинуть из рассмотрения. от одного дня ничего не меняется. |
|||
53
RomaH
naïve
09.07.19
✎
12:27
|
(52) да что ж такое-то
ты рассказываешь как "правильно" посчитать возраст имея дату рождения и дату расчета? - их есть у меня вопрос был - как хранить интервалы в которые этот возраст может входить |
|||
54
Йохохо
09.07.19
✎
12:30
|
0001.01.01 00:00:00
|
|||
55
Лефмихалыч
09.07.19
✎
18:39
|
(53) в целых числах в данном случае
|
|||
56
Garykom
гуру
09.07.19
✎
18:54
|
(53) В секундах храни и не выделывайся уже.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |