Лучший метод для преобразования нескольких наборов чисел с несколькими различными соотношениями - PullRequest
4 голосов
/ 29 марта 2010

Я работаю над открытым приложением по снижению вреда для опиоидных наркоманов.

Одной из функций в этом приложении является преобразование (в мг / мкг) между распространенными опиоидами, поэтому люди не передозируются случайно.

Если вы морально против опиоидной зависимости и не отвечаете из-за вашей морали, пожалуйста, учтите, что это приложение для СНИЖЕНИЯ ВРЕДА. Чтобы люди не умерли.

У меня есть эти данные ..

3mg morphine IV = 10mcg fentanyl IV
2mg morphine oral = 1mg oxycodone oral
3mg oral morphine = 1mg oxymorphone oral
7.0mg morphine oral = 1mg hydromorphone oral
1mg morphine iv = .10mg oxymorphone iv
1mg morphine oral = 1mg hydrocodone oral
1mg morphine oral = 6.67mg codeine oral
1mg morphine oral = .10mg methadone oral

И у меня есть текстовое поле, в котором указана исходная доза в мг (двойной), в которую пользователь может ввести. Под этим я имею радиокнопки для исходного вещества (т.е. морфина) и вещества назначения (то есть оксикодона) для конвертации ..

Я пытался придумать наиболее эффективный способ сделать это, но почти каждый кажется неряшливым. Если бы я сделал что-то вроде

public static double MorphinetoOxycodone(string morphineValue)
{
double morphine = Double.Parse(morphineValue);
return (morphine / 2 ); 
}

Мне также нужно было бы создать функцию для Оксикодонето-Морфина, Оксикодонето-Кодеина и т. Д., А затем получить десятки функций.

Должен быть более простой способ, чем этот, которого я пропускаю.

Если вы заметите, все мои преобразования используют морфин в качестве базового значения ... какой может быть самый простой способ использовать значение морфина для преобразования одного опиоида в другой? Например, если 1 мг морфина перорально равен 1 мг гидрокодона, а 1 мг морфина перорально равен 0,10 мг метадона, разве я не умножу 1 * .10, чтобы получить значение гидрокодона-> метадона? Реализация этой идеи - вот что у меня больше всего проблем.

Любая помощь будет принята с благодарностью ... и, если вы хотите, я бы добавил ваше имя / псевдоним к кредитам в этой программе. Возможно, что многие, многие люди по всему миру будут использовать это (я также перевожу это на несколько языков) и знать, что ваша работа могла бы помочь умирающему наркоману ... Я думаю, это здорово:)

-cory

1 Ответ

2 голосов
/ 29 марта 2010

Я бы пошел с массивом коэффициентов конверсии морфина и соответствующими enum наркотиками:

static enum Drug { Morphine, Fentanyl, Oxycodone, Oxymorphone, ... };
static double[] ratio = {1.0, 3.33, 0.5, 0.33, ... };

public static double ConvertToMorphine(Drug drug, double amount) 
{
    return amount / ratio[(int)drug];
} 

public static double ConvertFromMorphine(Drug drug, double amount)
{
    return amount * ratio[(int)drug];
}

public static double Convert(Drug from, Drug to, double amount)
{
    return ConvertFromMorphine(to, ConvertToMorphine(from, amount));
}

Таким образом, вы можете получить любую конверсию, какую захотите, например:

Convert(Drug.Fentanyl, Drug.Oxymorphone, 5)

Это даст вам эквивалент 5 мг фентанила в оксиморфоне.
Отказ от ответственности: я не много кодировал C #, поэтому мой синтаксис может быть отключен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...