--- title: "Getting Started with clinChat" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Getting Started with clinChat} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) ``` ```{r setup} library(clinChat) ``` ## Overview `clinChat` lets you explore clinical datasets through natural language while keeping the data local. It registers tools that the language model can call to summarize, count, and group your data. ## Example 1: Basic Clinical Trial Data ```{r, eval = FALSE} # Simulated clinical trial data set.seed(42) trial_data <- data.frame( subject_id = paste0("S", sprintf("%03d", 1:80)), age = sample(18:85, 80, replace = TRUE), sex = sample(c("Male", "Female"), 80, replace = TRUE), arm = sample(c("Drug A", "Drug B", "Placebo"), 80, replace = TRUE), response = sample(c("Responder", "Non-responder"), 80, replace = TRUE, prob = c(0.55, 0.45)), baseline_score = round(rnorm(80, 50, 12), 1) ) # Create a chat object chat <- create_clinical_chat( data = trial_data, system_prompt = "You are a clinical data analyst. Use the available tools to answer accurately." ) # Example questions you can ask (requires API key) # chat$chat("How many subjects are in each treatment arm?") # chat$chat("What is the mean age by sex?") # chat$chat("Summarize the dataset") ``` ## Example 2: Lab Results Dataset ```{r, eval = FALSE} lab_data <- data.frame( patient_id = 1:60, age = sample(25:75, 60, replace = TRUE), diagnosis = sample(c("Type 2 Diabetes", "Hypertension", "Healthy"), 60, replace = TRUE), hba1c = round(rnorm(60, 6.8, 1.4), 1), systolic_bp = round(rnorm(60, 132, 16)) ) chat2 <- create_clinical_chat(lab_data) # chat2$chat("How many patients have Type 2 Diabetes and what is their average HbA1c?") # chat2$chat("Describe the columns in this dataset") ``` ## Launching the Interactive App ```{r, eval = FALSE} # Launch a Shiny chat interface run_clinchat_app( data = trial_data, title = "Clinical Trial Explorer", provider = "openai/gpt-4o-mini" # or your preferred provider ) ``` ## Using the Tools Directly ```{r, eval = FALSE} # Inspect the tools that will be registered tools <- clinical_tools(trial_data) length(tools) # should be 4 ``` ## Privacy All data queries happen locally via tools. Only the results of those tools (summaries, counts, aggregates) are passed to the language model. Raw patient-level rows are never sent by default.