Вход | Регистрация
 

Возраст в днях месяцах и годах - как хранить и как определить в какой промежуток попадает?

Возраст в днях месяцах и годах - как хранить и как определить в какой промежуток попадает?
Я
   RomaH
 
09.07.19 - 06:57
Лаборатория - референсные значения показателей анализов от возраста пациента:

0-4 дня
4 дня - 2 месяца
2 месяца - 2 года

нижняя граница - включая, верхняя исключая

как это привести в "машиночитаемый" вид

0-3 дня
4-59 дня
2-24 месяца

если так - то на границе 2 и 3 строки есть пересечение и выпадение - в зависимости от даты рождения и даты проведения анализа - 31 день или 28 дней в месяце
 
 
   Irbis
 
1 - 09.07.19 - 07:05
Если в годах, месяцах, днях то через разность дат и три числа. А можно в граммах, то есть днях. тогда все границы тоже должны быть в днях.
   Лодырь
 
2 - 09.07.19 - 07:05
(0) Задай этот вопрос постановщику задачи.
   RomaH
 
3 - 09.07.19 - 07:13
(1) в днях
если пациенту нет 2 лет - то норма 9.3
если есть - норма 9.0

задал 730 день для верхней границы (исключая)
попался високосный год
пациенту еще нет двух лет по календарю, программа думает что есть - показатель 9.2
   PuhUfa
 
4 - 09.07.19 - 07:18
Храни не только границу, но и в каких "единицах" она измеряется.
   Йохохо
 
5 - 09.07.19 - 07:20
(3) это уже не вывод данных, а анализ. Думаю надо делать по ТЗ
   SleepyHead
 
6 - 09.07.19 - 07:24
(2) Вы когда-нибудь с врачами работали? Я работал 4 года, получить четкий ответ просто нереально.
   Bigbro
 
7 - 09.07.19 - 07:29
(6) я работал в медицине. там есть отдел организационно-методической работы, общаться надо с ними а не с врачами. если руководитель адекватный (а это чаще всего так, ибо вся экспертиза висит на этом отделе, а это весьма ответственное дело) - можно легко обсудить все нюансы и выяснить ожидаемое поведение программы. и при високосных годах и когда день рождения пациента на 29 февраля приходится и т.п.
   Irbis
 
8 - 09.07.19 - 07:35
(3) Тут или замуж, или мороженое. Предсьтавь себе что високосный год у 1,5 годовалого пациента взяли анализ 19 февраля. 01.03 он действителен?
ТЗ по задаче должно исключить все серые зоны в любом их сочетании. В (7) правильно написали, по ТЗ общаться нужно с методологами, если потребуется экспертное мнение специалиста, они сами ему вопрос поставят и ответ выцарапают.
   Лефмихалыч
 
9 - 09.07.19 - 07:39
(0) а зачем это приводить в машиночитаемый вид? Что ты будешь птом с этой машиночитаемостью делать?
   RomaH
 
10 - 09.07.19 - 07:42
(9) автоматически помечать положительный анализ или отрицательный
   RomaH
 
11 - 09.07.19 - 07:44
(9) + вывод референсных значений в печатной форме
Не просто 
Сахар 9 мг/л

а


Сахар 9 мг/л норма - от 8 до 10 мг/л
   Йохохо
 
12 - 09.07.19 - 07:47
(10) это не та область где можно думать и пытаться сделать лучше, чем тебе написали в задании
   RomaH
 
13 - 09.07.19 - 11:29
никаких идей?
   PuhUfa
 
14 - 09.07.19 - 11:37
(11) Вы сами анализы делаете?
   palsergeich
 
15 - 09.07.19 - 11:38
(0) Самый простой способ и, скорее всего верный:
1) Перечисление ТипыГраницДат. где будут 3 значения - 3дня, 2 мес и 2 года
2) РегистрыСведений - границыОсобыхДат.
2Измерения - физлицо(Пациент) + Перечисление ТипыГраницДат Ресурс - Дата
3) При добавлении нового пациента - эти даты заполняются сразу на основании Даты рождения.
Не надо это вычисять в полете, високосные года, 28,29,30,31 - наловишь исключений, просто к дате рождения прибавляешь это и хранишь
   Garykom
 
16 - 09.07.19 - 11:39
(13) Идея простая - не надо хранить возраст, храни дату и время рождения.
   palsergeich
 
17 - 09.07.19 - 11:43
(15) Добавление месяца - это очень скользкая тема, есть несколько методологий, что такое добавить месяц.
Но скорее всего платформенный ДобавитьМесяц() - это то что тебе надо, или уточни.
   Asmody
 
18 - 09.07.19 - 11:45
(13) Самая правильная идея подробно описана в (7). Надо ходить не на форумы, а к людям, которые это все уже делают десятилетиями "на бумаге".
   palsergeich
 
19 - 09.07.19 - 11:45
(17)
0-3 дня
4-59 дня 
60 дней-24 месяца 
Как правило это так, но лучше уточнить у постановщика
   palsergeich
 
20 - 09.07.19 - 11:45
(18) Угу
   RomaH
 
21 - 09.07.19 - 11:49
(18) мозг такая странная штука - он понимает что возраст попадает в период описанный фразой "от 40 дней до 2 месяцев"
а вот как машине это объяснить
   RomaH
 
22 - 09.07.19 - 11:50
(15) есть способ проще и 100% верный
   Garykom
 
23 - 09.07.19 - 11:50
(21) Сначала объясни машине из скольких дней состоит 1 месяц.
   RomaH
 
24 - 09.07.19 - 11:51
(23) зачем? машине надо объяснить только каков возраст человека на определенную дату
это мы умеем
   Garykom
 
25 - 09.07.19 - 11:52
(24) ОК перефразирую.

Кто попадет в интервал "от 60 дней до 2 месяцев" ?
   RomaH
 
26 - 09.07.19 - 11:52
периоды возрастов - непрерывны
верхняя граница не нужна
   RomaH
 
27 - 09.07.19 - 11:53
(25) у того у кого возраст будет >= 60 дней, но меньше 2 месяцев
   RomaH
 
28 - 09.07.19 - 11:53
(25) прикинь
   Sayan_mi
 
29 - 09.07.19 - 11:53
По моему проще по верхней границе и разнице дат
< 4 дн иначе (разница в днях)
< 2 мес иначе (разница в месяцах)
< 2 лет …. (разница в годах)
   RomaH
 
30 - 09.07.19 - 11:54
(25) например родившиеся 1 июля и сдавшие анализ 31 августа
 
 Рекламное место пустует
   Garykom
 
31 - 09.07.19 - 11:55
(30) У тебя странное представление о единицах измерения времени.

Длина месяца в днях =  кол-во дней в году / 12
   RomaH
 
32 - 09.07.19 - 11:56
(31) а по-моему - у тебя
каков возраст ребенка 31 августа, если он родился 1 июля этого года?
   ice777
 
33 - 09.07.19 - 11:56
есть же произвольные периоды.
ну и функция, дата в периоде или нет, наваять можно.
   ice777
 
34 - 09.07.19 - 11:56
(31) это среднемесячное )
   Garykom
 
35 - 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 лунных месяцев; високосный год в некоторых лунно-солнечных календарях.
   Garykom
 
36 - 09.07.19 - 11:59
(35)+ И да учти что со временем (веками но мы же надеемся что 1С не сгинет) длина года "в днях" будет меняться.
   Garykom
 
37 - 09.07.19 - 12:01
Так что заводишь периодический РС и пишешь туда свои используемые в настоящее время соответствия между единицами измерения времени.

А в базе хранишь только дату+время и промежутки в секундах например.
   RomaH
 
38 - 09.07.19 - 12:01
(35) так мы сейчас перейдем к пересмотру "догм" - и по имеющимся точкам построим функцию для расчета "правильной" нормы на любой момент времени

что было-бы правильнее, на мой взгляд, ... но от меня требуют соблюдать "догмы" - заказчик не готов к революции
   Garykom
 
39 - 09.07.19 - 12:02
И да в сутках количество секунд оно тоже меняется ))
   RomaH
 
40 - 09.07.19 - 12:04
ладно - решение простое
хранить нижнюю границу
0 дней
4 дня
15 дней
2 месяца
6 месяцев 
2 года
18 лет

считаем возраст в трех измерениях
и находим максимальную границу которая меньше полученного возраста
   Garykom
 
41 - 09.07.19 - 12:04
(38) Ну так выясни требуемые догмы и запиши их в свой РС (37)
   Garykom
 
42 - 09.07.19 - 12:05
Прочитать
https://ru.wikipedia.org/wiki/Единицы_измерения_времени

Хранить время в https://ru.wikipedia.org/wiki/Секунда
"Секунда — время, равное 9 192 631 770 периодам излучения, соответствующего переходу между двумя сверхтонкими уровнями основного состояния атома цезия-133."
   Fish
 
43 - 09.07.19 - 12:06
А что за лаборатория можно узнать? Чтобы случайно туда не обратиться :))
   Garykom
 
44 - 09.07.19 - 12:07
(42)+ И надеяться что с СТО (от Эйнштейна) столкнуться не придется )) А то задолбаешься поправки вводить в свой РС дополнительно )))
   PuhUfa
 
45 - 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>

все блин давно посчитано за нас -(((
   RomaH
 
46 - 09.07.19 - 12:11
(45) ну так - что бы пришло правильное <NormalValue>2.00 - 4.00</NormalValue>

должна быть правильная таблица соответствий входящих параметров этим нормам
я ж не говорю, что я решаю совсем новую задачу - это давно изобретенный велосипед
   RomaH
 
47 - 09.07.19 - 12:12
(45) ну так сколько ребенку полных месяцев 31 августа?
   kzot
 
48 - 09.07.19 - 12:12
Вроде как ЗУП стаж сотрудников давно считать изволит в количестве месяцев и дней, смотрите на рс "НакопленныеСтажиФизическихЛиц" и не изобретайте.
   RomaH
 
49 - 09.07.19 - 12:13
(48) очередной писатель
   PuhUfa
 
50 - 09.07.19 - 12:15
(47) один
   Лодырь
 
51 - 09.07.19 - 12:18
(47) Задумайтесь над вопросом, с чего бы нормативы показателей детей проживших одинаковое количество дней должны отличаться? Потом все же идите к постановщику задачи.
   Лефмихалыч
 
52 - 09.07.19 - 12:24
(13) надо опираться на количество ПОЛНЫХ лет, а всю эту полюбень с августами и сентябрями из головы выкинуть.
С днями и месяцами такая же петрушка. Високосные нахрен тоже выкинуть из рассмотрения. от одного дня ничего не меняется.
   RomaH
 
53 - 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) в целых числах в данном случае
   Garykom
 
56 - 09.07.19 - 18:54
(53) В секундах храни и не выделывайся уже.


Список тем форума
Рекламное место пустует  Рекламное место пустует
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.