c# – 转换具有多种不同比率的多组数字的最佳方法

我正在为阿片类药物成瘾者开发一个开源减低伤害的应用程序.

该应用的特征之一是普通阿片类药物之间的转换(mg / mcg),因此人们不会意外过量.

如果你在道德上对抗阿片类药物成瘾并且不会因为你的道德而做出反应,那么请考虑这个应用程序是为了减少伤害.所以人们最终不会死.

我有这个数据..

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

我有一个文本框,是用户可以输入的mg剂量(双倍)的源剂量.在此之下,我有源物质(即:吗啡)的无线电盒和转换的目的物质(即羟考酮). .

我一直在努力想出最有效的方法来做到这一点,但几乎每一个看起来都很草率.
如果我要做的事情

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

我还必须为OxycodonetoMorphine,OxycodonetoCodeine等制作一个函数..然后最终会有几十个函数..

我必须有一种比这更容易的方法.

如果您注意到,我的所有转换都使用吗啡作为基础值.使用吗啡值将一种阿片类药物转换为另一种阿片类药物可能是最简单的方法吗?例如,如果1mg吗啡口服等于1mg氢可酮和1mg吗啡口服等于.10mg美沙酮,我不会只乘1 * .10来得到氢可酮 – >美沙酮值吗?
实现这个想法是我最麻烦的.

任何帮助都将非常感激..如果你愿意,我会在你的程序中添加你的名字/昵称.世界上很多人都可能会使用它(我也将它翻译成几种语言)并且知道你的工作可以帮助一个瘾君子死去……我觉得这很棒:)

-cory

最佳答案 我会使用一系列吗啡转换率和相应的药物枚举:

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)

这将给你相当于Oxymorphone中的5mg芬太尼.
免责声明:我没有对C#进行过多编码,因此我的语法可能不合适.

点赞