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}"