53 lines
2.2 KiB
Forth
53 lines
2.2 KiB
Forth
|
module RedCat.RecordFormatter
|
|||
|
|
|||
|
open RedCat.DrugsDataExtractor
|
|||
|
|
|||
|
|
|||
|
let formatDrugInput (drugRawName: string) =
|
|||
|
drugRawName.ToLower().Replace(" ", "").Replace("-", "").Replace(",", "")
|
|||
|
|
|||
|
let formatDrugInfoResponse (drugData: DrugRecord) =
|
|||
|
let toPrettyString (drugInfo: string option) =
|
|||
|
match drugInfo with
|
|||
|
| Some s when drugInfo = drugData.Summary -> $"📜 {s}" |> Some
|
|||
|
| Some s when drugInfo = drugData.Dose -> $"🍽️ {s}" |> Some
|
|||
|
| Some s when drugInfo = drugData.TotalDuration -> $"⏳ Durata: {s}" |> Some
|
|||
|
| Some s when drugInfo = drugData.OnSet -> $"🤯 Inizio effetti: {s}" |> Some
|
|||
|
| _ -> None
|
|||
|
|
|||
|
let formattedCategories =
|
|||
|
drugData.Categories
|
|||
|
|> Option.bind(fun catgs -> catgs |> String.concat " | " |> Some)
|
|||
|
|
|||
|
let mainResponseText =
|
|||
|
[drugData.Summary; drugData.Dose; drugData.TotalDuration; drugData.OnSet]
|
|||
|
|> List.choose toPrettyString
|
|||
|
|> String.concat "\n\n"
|
|||
|
|
|||
|
match formattedCategories with
|
|||
|
| None -> $"~{drugData.Name} \n\n{mainResponseText}"
|
|||
|
| Some categories -> $"~{drugData.Name} [ {categories} ]\n\n{mainResponseText}"
|
|||
|
|
|||
|
let formatComboRecord (comboData: ComboRecord) =
|
|||
|
let translate (s: string) =
|
|||
|
match s with
|
|||
|
| "Dangerous" -> "❌ Molto pericoloso alla vita e alla salute"
|
|||
|
| "Unsafe" -> "‼️ Pericoloso"
|
|||
|
| "Caution" -> "⚠️ Attenzione"
|
|||
|
| "Low Risk & Synergy" -> "➕➕ Rischio basso e amplificazione effetto ➕➕"
|
|||
|
| "Low Risk & Decrease" -> "➖➖ Rischio basso e diminuzione effetto ➖➖"
|
|||
|
| "Low Risk & No Synergy" -> "🟰🟰 Rischio basso e interazione assente 🟰🟰"
|
|||
|
| _ -> failwith "Shouldn't happen here"
|
|||
|
|
|||
|
let toPrettyString (comboInfo: string option) =
|
|||
|
match comboInfo with
|
|||
|
| Some s when comboInfo = comboData.Status -> $"{translate s}" |> Some
|
|||
|
| Some s when comboInfo = comboData.Note -> $"{s}" |> Some
|
|||
|
| _ -> None
|
|||
|
|
|||
|
let comboText =
|
|||
|
[comboData.Status; comboData.Note]
|
|||
|
|> List.choose toPrettyString
|
|||
|
|> String.concat "\n"
|
|||
|
|
|||
|
$"[{comboData.DrugA}] ~ [{comboData.DrugB}]\n\n{comboText}"
|